<?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>217216</bug_id>
          
          <creation_ts>2020-10-02 04:30:36 -0700</creation_ts>
          <short_desc>Implement RemoteGraphicsContextGL</short_desc>
          <delta_ts>2020-12-09 10:32:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</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>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>217213</dependson>
    
    <dependson>219431</dependson>
    
    <dependson>219486</dependson>
    
    <dependson>219487</dependson>
          <blocked>217211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1694033</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-02 04:30:36 -0700</bug_when>
    <thetext>Implement RemoteWebGLBackend that creates RemoteGraphicsContextsGL instances</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694034</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-02 04:30:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/69876258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703952</commentid>
    <comment_count>2</comment_count>
      <attachid>413049</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-03 05:26:38 -0800</bug_when>
    <thetext>Created attachment 413049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709831</commentid>
    <comment_count>3</comment_count>
      <attachid>414787</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-22 05:10:26 -0800</bug_when>
    <thetext>Created attachment 414787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709874</commentid>
    <comment_count>4</comment_count>
      <attachid>414797</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-23 02:23:31 -0800</bug_when>
    <thetext>Created attachment 414797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710044</commentid>
    <comment_count>5</comment_count>
      <attachid>414797</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-11-25 01:24:56 -0800</bug_when>
    <thetext>Comment on attachment 414797
Patch

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

This looks great to me!

&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:675
&gt; +        REQUESTABLE_EXTENSIONS_ANGLE = 0x93A8, // NOLINT

What does the NOLINT mean?

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.h:30
&gt; +    void activeTexture(GCGLenum texture) final

People might complain about the indentation here.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.h:147
&gt; +        sendSync(Messages::RemoteGraphicsContextGL::CreateFramebuffer(), Messages::RemoteGraphicsContextGL::CreateFramebuffer::Reply(returnValue), m_graphicsContextGLIdentifier, 1_s);

I wonder if we should have a local sendSync form that calls sendSync adding the m_graphicsContextGLIdentifier and timeout?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710616</commentid>
    <comment_count>6</comment_count>
      <attachid>415024</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-30 08:06:23 -0800</bug_when>
    <thetext>Created attachment 415024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710989</commentid>
    <comment_count>7</comment_count>
      <attachid>415117</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 02:25:11 -0800</bug_when>
    <thetext>Created attachment 415117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710996</commentid>
    <comment_count>8</comment_count>
      <attachid>415121</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 03:20:23 -0800</bug_when>
    <thetext>Created attachment 415121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711000</commentid>
    <comment_count>9</comment_count>
      <attachid>415122</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 03:33:51 -0800</bug_when>
    <thetext>Created attachment 415122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711002</commentid>
    <comment_count>10</comment_count>
      <attachid>415123</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 03:48:10 -0800</bug_when>
    <thetext>Created attachment 415123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711004</commentid>
    <comment_count>11</comment_count>
      <attachid>415124</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 03:52:59 -0800</bug_when>
    <thetext>Created attachment 415124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711005</commentid>
    <comment_count>12</comment_count>
      <attachid>415125</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 04:05:15 -0800</bug_when>
    <thetext>Created attachment 415125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711007</commentid>
    <comment_count>13</comment_count>
      <attachid>415126</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 04:20:09 -0800</bug_when>
    <thetext>Created attachment 415126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711008</commentid>
    <comment_count>14</comment_count>
      <attachid>415127</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 04:22:17 -0800</bug_when>
    <thetext>Created attachment 415127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711009</commentid>
    <comment_count>15</comment_count>
      <attachid>415128</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 04:33:16 -0800</bug_when>
    <thetext>Created attachment 415128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711012</commentid>
    <comment_count>16</comment_count>
      <attachid>415129</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 04:44:26 -0800</bug_when>
    <thetext>Created attachment 415129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711016</commentid>
    <comment_count>17</comment_count>
      <attachid>415131</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 05:57:04 -0800</bug_when>
    <thetext>Created attachment 415131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711040</commentid>
    <comment_count>18</comment_count>
      <attachid>415135</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-01 08:17:46 -0800</bug_when>
    <thetext>Created attachment 415135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711290</commentid>
    <comment_count>19</comment_count>
      <attachid>415202</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-02 03:10:52 -0800</bug_when>
    <thetext>Created attachment 415202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711312</commentid>
    <comment_count>20</comment_count>
      <attachid>415216</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-02 06:06:26 -0800</bug_when>
    <thetext>Created attachment 415216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711314</commentid>
    <comment_count>21</comment_count>
      <attachid>415218</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-02 06:11:35 -0800</bug_when>
    <thetext>Created attachment 415218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711318</commentid>
    <comment_count>22</comment_count>
      <attachid>415219</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-02 06:46:43 -0800</bug_when>
    <thetext>Created attachment 415219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711320</commentid>
    <comment_count>23</comment_count>
      <attachid>415220</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-02 07:03:28 -0800</bug_when>
    <thetext>Created attachment 415220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711325</commentid>
    <comment_count>24</comment_count>
      <attachid>415221</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-02 07:13:39 -0800</bug_when>
    <thetext>Created attachment 415221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711331</commentid>
    <comment_count>25</comment_count>
      <attachid>415223</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-02 07:20:38 -0800</bug_when>
    <thetext>Created attachment 415223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711631</commentid>
    <comment_count>26</comment_count>
      <attachid>415285</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-03 01:44:08 -0800</bug_when>
    <thetext>Created attachment 415285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711660</commentid>
    <comment_count>27</comment_count>
      <attachid>415297</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-03 05:44:45 -0800</bug_when>
    <thetext>Created attachment 415297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711968</commentid>
    <comment_count>28</comment_count>
      <attachid>415394</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-04 01:42:04 -0800</bug_when>
    <thetext>Created attachment 415394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712925</commentid>
    <comment_count>29</comment_count>
      <attachid>415394</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-08 14:22:02 -0800</bug_when>
    <thetext>Comment on attachment 415394
Patch

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

&gt; Source/WebCore/page/Chrome.cpp:553
&gt; +    // TODO: GPU process. Change to GCGLManager, make it work, return null for others.

Maybe file a bug and reference it here to track the work.

&gt; Source/WebCore/platform/graphics/RemoteGraphicsContextGLProxyBase.cpp:48
&gt; +void RemoteGraphicsContextGLProxyBase::setContextVisibility(bool)
&gt; +{
&gt; +}

Should these implementations ASSERT_NOT_REACHED?

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextGLIOSurfaceSwapChain.h:49
&gt; +        void* handle { nullptr }; // Producer specific metadata handle (such as EGLSurface).

It&apos;s unclear what the ownership model is for this handle.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:379
&gt; +    GraphicsContextGLIdentifier m_graphicsContextGLIdentifier { GraphicsContextGLIdentifier::generate() };

This object identifier does not guarantee uniqueness between WebContent processes, but it must.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713049</commentid>
    <comment_count>30</comment_count>
      <attachid>415724</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-09 00:05:07 -0800</bug_when>
    <thetext>Created attachment 415724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713056</commentid>
    <comment_count>31</comment_count>
      <attachid>415727</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-09 00:34:04 -0800</bug_when>
    <thetext>Created attachment 415727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713074</commentid>
    <comment_count>32</comment_count>
      <attachid>415729</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-09 01:30:45 -0800</bug_when>
    <thetext>Created attachment 415729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713097</commentid>
    <comment_count>33</comment_count>
      <attachid>415739</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-09 04:07:02 -0800</bug_when>
    <thetext>Created attachment 415739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713219</commentid>
    <comment_count>34</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-09 10:32:57 -0800</bug_when>
    <thetext>Committed r270587: &lt;https://trac.webkit.org/changeset/270587&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415739.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413049</attachid>
            <date>2020-11-03 05:26:38 -0800</date>
            <delta_ts>2020-11-22 05:10:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201103152636.patch</filename>
            <type>text/plain</type>
            <size>323415</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVmYWIzY2QzOGRhMTdj
ZDVmMzMxYTI1OWM2OTk1ZWYyNjBkMDQyMC4uMmY3MDIzOWRkNDUyYTU1MGExODA2OThjNGQ0ODE0
M2I0MjMxODc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAyMC0xMS0wMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVSBwcm9jZXNz
LgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMgYW5k
IGlzIGluY29tcGxldGUuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBz
Y3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcworICAgICAgICB0aGUgR3JhcGhpY3ND
b250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8KKyAgICAg
ICAgdGhlIEdQVSBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQg
dGltZSBhbmQgdGhlCisgICAgICAgIHJlc3VsdHMgYXJlIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBm
b3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBh
bmQgRXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQg
aGF2ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIFdJUDoKKyAg
ICAgICAgLSBOb3QgdGVzdGVkLgorICAgICAgICAtIEltcGxlbWVudGVkOiAxNjQsIHVuaW1wbGVt
ZW50ZWQ6IDE1MSwgdG90YWw6IDMxNQorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgor
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5o
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0
ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xCYXNlLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnRleEltYWdlM0RSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2Uz
RFJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYkNvcmU6OndpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLmg6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlQ29jb2E6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybUxh
eWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlQ29jb2E6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpyZXNoYXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnNl
dENvbnRleHRWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlQ29jb2E6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hOjppc0dMRVMyQ29tcGxpYW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6Om1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6
OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlQ29jb2E6Om1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpsYXllckNvbXBvc2l0
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYTo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OmdldEJ1ZmZlcnNUb0F1dG9DbGVh
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6
bWFya0xheWVyQ29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hOjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1h
Z2UubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKwogMjAy
MC0xMC0yOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEZpbmFsIHJlZmFjdG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFw
aGljc0NvbnRleHRHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMzRjNDNhMDBiZWViNTRiOTYyZDJjMTkxNDUwNjY2
OThjMDE0YTExLi5hY2M2OGRiMzhkOWQxM2VlMTQzNDk4OWYyNDU3M2E5NGUxNzRjNTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxMSBAQAorMjAyMC0xMS0wMyAgS2ltbW8gS2lubnVuZW4gIDxra2lu
bnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1vdGVXZWJHTEJhY2tlbmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIHJlbW90ZSB2ZXJzaW9uIG9m
IEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUgcHJvY2Vzcy4KKyAgICAgICAgQ3VycmVudCBpbXBs
ZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDIGFuZCBpcyBpbmNvbXBsZXRlLgorCisgICAg
ICAgIEltcGxlbWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0IGltcGxlbWVudGluZyB0aGUg
SVBDIHRvIHBhc3MKKyAgICAgICAgdGhlIEdyYXBoaWNzQ29udGV4dEdMIG1lbWJlciBmdW5jdGlv
biBjYWxscyBmcm9tIHdlYiBwcm9jZXNzIHRvCisgICAgICAgIHRoZSBHUFUgcHJvY2Vzcy4KKwor
ICAgICAgICBDaGFuZ2VzIEdyYXBoaWNzQ29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wgdG8gbm90
IGhhdmUgZHVwbGljYXRlIG5hbWVzCisgICAgICAgIGFuZCBoYXZlIHRoZSBjb3JyZWN0IGZ1bmN0
aW9uIHNpZ25hdHVyZXMuCisKKyAgICAgICAgV0lQOgorICAgICAgICAtIE5vdCB0ZXN0ZWQuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAg
ICAgICAoYXR0YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChiaW5kQnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChi
aW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5k
Q29sb3IpOgorICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9u
U2VwYXJhdGUpOgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFy
YXRlKToKKyAgICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIp
OgorICAgICAgICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAg
KGNsZWFyU3RlbmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNo
YWRlcik6CisgICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1h
Z2UyRCk6CisgICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZm
ZXIpOgorICAgICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgor
ICAgICAgICAoY3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRl
bGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVs
ZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxl
dGVUZXh0dXJlKToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgor
ICAgICAgICAoZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAo
ZGlzYWJsZSk6CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAo
ZHJhd0FycmF5cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToK
KyAgICAgICAgKGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6Cisg
ICAgICAgIChmbHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAg
ICAoZ2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAg
ICAoZ2V0U3RyaW5nKToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldFByb2dyYW1J
bmZvTG9nKToKKyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVy
U291cmNlKToKKyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0
ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6Cisg
ICAgICAgIChpc0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChp
c1Byb2dyYW0pOgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIp
OgorICAgICAgICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChs
aW5rUHJvZ3JhbSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zm
c2V0KToKKyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292
ZXJhZ2UpOgorICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAg
ICAgICAoc3RlbmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAg
ICAgIChzdGVuY2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAg
ICAgKHN0ZW5jaWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0
ZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9y
bTFmKToKKyAgICAgICAgKHVuaWZvcm0xaSk6CisgICAgICAgICh1bmlmb3JtMmYpOgorICAgICAg
ICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0zZik6CisgICAgICAgICh1bmlmb3JtM2kp
OgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00aSk6CisgICAgICAgICh1
c2VQcm9ncmFtKToKKyAgICAgICAgKHZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIxZik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIyZik6CisgICAgICAgICh2ZXJ0ZXhBdHRy
aWIzZik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJQ
b2ludGVyKToKKyAgICAgICAgKHZpZXdwb3J0KToKKyAgICAgICAgKGJ1ZmZlckRhdGEpOgorICAg
ICAgICAoZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChkcmF3RWxlbWVudHNJbnN0YW5j
ZWQpOgorICAgICAgICAodmVydGV4QXR0cmliRGl2aXNvcik6CisgICAgICAgIChjcmVhdGVWZXJ0
ZXhBcnJheSk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChpc1ZlcnRl
eEFycmF5KToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAgIChjb3B5QnVmZmVy
U3ViRGF0YSk6CisgICAgICAgICh1bm1hcEJ1ZmZlcik6CisgICAgICAgIChibGl0RnJhbWVidWZm
ZXIpOgorICAgICAgICAoZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAocmVhZEJ1
ZmZlcik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAg
ICAodGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgIChjb3B5
VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAgICAgICAg
KHVuaWZvcm0xdWkpOgorICAgICAgICAodW5pZm9ybTJ1aSk6CisgICAgICAgICh1bmlmb3JtM3Vp
KToKKyAgICAgICAgKHVuaWZvcm00dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTRpKToKKyAg
ICAgICAgKHZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSVBvaW50ZXIp
OgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoY2xlYXJCdWZmZXJmaSk6
CisgICAgICAgIChjcmVhdGVRdWVyeSk6CisgICAgICAgIChkZWxldGVRdWVyeSk6CisgICAgICAg
IChpc1F1ZXJ5KToKKyAgICAgICAgKGJlZ2luUXVlcnkpOgorICAgICAgICAoZW5kUXVlcnkpOgor
ICAgICAgICAoZ2V0UXVlcnkpOgorICAgICAgICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChk
ZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlzU2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxl
cik6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyZik6CisgICAgICAgIChjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChpc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKGJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiZWdpblRyYW5zZm9ybUZl
ZWRiYWNrKToKKyAgICAgICAgKGVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHBhdXNl
VHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAocmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoYmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoYmluZEJ1ZmZlclJhbmdlKToKKyAg
ICAgICAgKGdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAgICAgKGdldEFjdGl2ZVVuaWZvcm1C
bG9ja05hbWUpOgorICAgICAgICAodW5pZm9ybUJsb2NrQmluZGluZyk6CisgICAgICAgIChnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZlckFOR0xFKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAg
KGNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKGlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChp
bnNlcnRFdmVudE1hcmtlckVYVCk6CisgICAgICAgIChwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAg
ICAgICAocG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoZHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKHZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9h
cmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0
TWlsZXN0b25lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlv
bkxpbmVHcmlkRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRSZWFjaExheW91dE1pbGVzdG9uZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6bm9uRXBoZW1lcmFsV2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0U2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNZWRpYVZvbHVt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3VycmVudGx5UHJvY2Vzc2VkTW91
c2VEb3duRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51
SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDYW5jZWxG
b3JPcGVuUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRC
ZWNvbWVSZXNwb25zaXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlU3lzdGVtQXBwZWFy
YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJXaGVlbEV2ZW50VGVz
dE1vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFNwZWVjaFN5bnRo
ZXNpemVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcm92aWRlci5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OndhaXRGb3JXYXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJh
dGVkLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp0b29sYmFy
c1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6Om1lbnViYXJWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5n
QVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6ZW5jb2RlQXJndW1lbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6fldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVj
dXRlRWRpdGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0VkaXRpbmdD
b21tYW5kRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVI
VE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Nyb2xsTWFpbkZyYW1lSWZOb3RBdE1h
eFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6ZHVtcEhpc3RvcnlJdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHVtcEhpc3RvcnlGb3JUZXN0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlSXNJbldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRh
dGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptYWlu
RnJhbWVWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0VGV4dEFz
eW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXZWJzaXRlUG9saWNpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0
b25lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFBlcmZvcm1S
ZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNob3VsZFVzZVJlbW90ZVdl
YkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAy
MC0xMC0yOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEZpbmFsIHJlZmFjdG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFw
aGljc0NvbnRleHRHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oCmluZGV4IDY1NGFlMjViMDIyZTcx
ZGNmMzlhMzVmMDkwZWU3MjkyZDdkZGYyZGUuLmQ3ZDkzNDA4ZmUzZDQ5YTE2NzQxNTllMjAxOTdj
ZDdjZjliNWMxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgKQEAgLTI1LDYgKzI1LDggQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IGIxZTA0MDE4NWE3MmQ3MDMyN2QzZTdhOTRmZDg4ZDE5ZDExMmI5
NjIuLmZhY2QxNjI2YzIyMWIzNzYwMWVjMjFkNDU3NWM3NTM5ZDk0NTlhM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtMzYwLDYgKzM2MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29j
b2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZjJh
M2U4MjJiM2M4NTIyMGZmYzE0MjFkZjZkZTkzNzJiOTc1NmIyLi5mNDYxYmVhMjVhMjE1MmJhOWU3
ZTZhYmRiODhlZjIyM2YzNDI4YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDI5LDcgKzIwMjksNyBAQAogCQk2RTQ3RTY2
MTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFu
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZF
NEFCQ0Q1MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAw
NzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZC
MzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyog
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25z
R0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdE
MkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVu
c2lvbnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5
Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIy
OURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2
MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENE
MTMwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8q
IFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjE5LDYgKzIyMTksOCBAQAog
CQk3QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBD
NjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAz
MzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjY0QzBBRTI1NEMx
NkY5MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2NEMwQUMyNTRD
MTZFRTAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjkwNDE3
MDI1NTAxMTQyMDA2RUVCOEMgLyogUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5
MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRp
ZXMuaCAqLzsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4
dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0JFNzQyNzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMw
MkJFRDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKQEAgLTky
MjMsNiArOTIyNSw3IEBACiAJCTU4MkRFMzIyMUMzMEM4NTQwMEJFMDJBOCAvKiBUZXh0RGVjb3Jh
dGlvblBhaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4
dERlY29yYXRpb25QYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTgy
REUzMjMxQzMwQzg1NDAwQkUwMkE4IC8qIFRleHREZWNvcmF0aW9uUGFpbnRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0RGVjb3JhdGlvblBhaW50ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTg2OEM3QzQyNTM5REEzMzAwQkY5REYzIC8qIEpTUmVz
aXplT2JzZXJ2ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNSZXNpemVPYnNlcnZlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU4NjhDN0Q1MjU0NkUwQjMwMEJGOURGMyAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODg0
RkU1NjIyODEzRTJEMDA0MEFGRjYgLyogSlNSZXNpemVPYnNlcnZlckVudHJ5Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVzaXplT2JzZXJ2ZXJFbnRy
eUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4OTU1NkVDMThENEE0
NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJvcmRlckVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNThBRUUyRjMx
OEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQm9yZGVyRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDAxMyw3ICsxMDAxNiw2IEBACiAJCTc3QTE3QUEzMTJGMjhCMkEwMDRFMDJGNiAvKiBK
U09FU1ZlcnRleEFycmF5T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTT0VTVmVydGV4QXJyYXlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzdBQUQ2ODMxRUNGQjY2MjAwQkZBMkQxIC8qIENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0FBRDY4NTFFQ0ZCRDM5MDBCRkEyRDEgLyog
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU4NjhDN0Q1MjU0
NkUwQjMwMEJGOURGMyAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0MxM0YwNDIxNjU2NThBMDAy
RDlDNUYgLyogSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3Q0FBQUVGMUYyRkMzNTAwMENCNUM4RCAvKiBWaXN1YWxW
aWV3cG9ydC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlzdWFsVmlld3BvcnQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0Q1MEZGQTFFRDRFQzc4MDBEQTRDODcgLyog
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAwOTIsNiArMTAwOTQsOSBAQAogCQk3QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhp
Y3NDb250ZXh0R0xDVkFOR0xFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I2NEMwQUMyNTRDMTZFRTAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBC
NDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBQbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4
IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0
QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYzNjUsNiArMjYzNzAsNyBAQAogCQkJ
CTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5o
ICovLAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi8s
CiAJCQkJQ0VFRkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oICovLAorCQkJCTdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBQbGF0Zm9ybVJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAw
NDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCiAJCQkJMDc0RTgyQjgxOEE2OUYwRTAw
N0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5jcHAgKi8sCiAJCQkJMDc0RTgyQjkxOEE2OUYw
RTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovLApAQCAtMjY1NDAsNiArMjY1NDYs
OCBAQAogCQkJCUIyNzUzNTUwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Q29jb2EubW0gKi8s
CiAJCQkJMkQwQjRBQTkxOERBMUNDRDAwNDM0REUxIC8qIElPU3VyZmFjZS5oICovLAogCQkJCTJE
MEI0QUFBMThEQTFDQ0QwMDQzNERFMSAvKiBJT1N1cmZhY2UubW0gKi8sCisJCQkJN0I2NEMwQUMy
NTRDMTZFRTAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eu
aCAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAg
LyogSU9TdXJmYWNlUG9vbENvY29hLm1tICovLAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1
OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNE
QzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuaCAqLywKQEAgLTMyMDU0LDYgKzMyMDYyLDcgQEAKIAkJCQk5Qjg2NEYwMjIzNEMwMjhB
MDA2RDEwRUIgLyogSWRsZVJlcXVlc3RPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEMw
NTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0M1MjIyOTYxRTFEQUUwMzAwMkNCOEY3IC8qIElETFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QjY0QzBBRTI1NEMxNkY5MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzNDRjE3QTUxNUIwMDYzRjAwMjc2RDM5
IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMzQ0YxN0E3MTVCMDA2
M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCThBQjRCQzc3MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291
bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzQwNyw2ICszMzQxNiw3IEBACiAJ
CQkJQkNFRjQzREQwRTY3NDAxMjAwMUMxMjg3IC8qIE5pbmVQaWVjZUltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDExNUI1MjA5Rjg0QjcxMDBDQTRGQzEgLyogTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1IC8qIE5vZGVDb25zdGFudHMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBQbGF0Zm9ybVJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTRGRTcz
MTBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0
RkU3MzMwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg1NEZFNzM1MEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA2MmY0Zjc5OTkzYmJiODRlZWI3YzI5Njlh
Yjc4MjE1YTEyMWNiMTMxLi43ZjA1NWQ5MTZlYWNhOGM1MGYxYjU0YTI3NDRlMmViMmJiMTdkYTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzEwLDggKzcxMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVh
dGUoQ2FuCiAgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAg
ICAgICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKICAgICB9Ci0KLSAgICBhdXRvIGNvbnRleHQg
PSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cp
OworICAgIGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRl
cywgaG9zdFdpbmRvdyk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNF
bGVtZW50KSB7CiAgICAgICAgICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdM
Q29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJy
b3JFdmVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBmNzliMzM5MGRkMmY3OGU0NjM1YjRl
YjgwNjY5YjVlYWM5NDdjNGExLi4yZjM2YzU0M2FkZmU2YTVmNDI2NjRiZjIyMjM2YmM3MmYzMDY1
Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MjgsNiArNTI4LDEzIEBAIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlCiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNp
emUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7
CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IENocm9t
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5jcmVhdGVHcmFw
aGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBkaXNwbGF5SUQoKSk7Cit9CisjZW5kaWYKKwogUGxh
dGZvcm1EaXNwbGF5SUQgQ2hyb21lOjpkaXNwbGF5SUQoKSBjb25zdAogewogICAgIHJldHVybiBt
X3BhZ2UuZGlzcGxheUlEKCk7CkBAIC01NDEsNiArNTQ4LDcgQEAgdm9pZCBDaHJvbWU6OndpbmRv
d1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9wdGlvbmFsPHVu
c2lnbmUKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgbm9taW5h
bEZyYW1lSW50ZXJ2YWwpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoR1JBUEhJQ1Nf
Q09OVEVYVF9HTCkKKyAgICAvLyBUT0RPOiBHUFUgcHJvY2Vzcy4gQ2hhbmdlIHRvIEdDR0xNYW5h
Z2VyLCBtYWtlIGl0IHdvcmssIHJldHVybiBudWxsIGZvciBvdGhlcnMuCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NyZWVuRGlkQ2hhbmdlKGRp
c3BsYXlJRCwgdGhpcyk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGRiNGYzMjE4
NmNjN2VlMWViY2M5ZDI0Y2JjMWFkMzIzMjBlZWIwNjYuLjM1MzQ2ZTU1YmY4MjAwNTViMWZmY2Rh
NjliOGQyM2NjMzhmY2Y1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtODYsNiArODYsMTAgQEAg
cHVibGljOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3Zl
cnJpZGU7CisjZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlELCBPcHRpb25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCAxMDQxMjQwNzllYzE5MjdmMDJiYjgwNWQyYzRjMmVkNjIzZTdjOTQyLi4x
NmUxNGU4ZDk4YzUxNmNiNThkNjBkMDBlMDU1YmYwMzE2ODM0ZGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTMyNCw3ICszMjQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBS
ZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3Io
UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JT
cGFjZSkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotCisjaWYgRU5BQkxFKFdFQkdMKQorICAg
IHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRH
TChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAgICAgLy8gUGFzcyBu
dWxscHRyIGFzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRldGF0Y2ggdGhlIHJvb3QgbGF5ZXIuCiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwgR3JhcGhpY3NM
YXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xh
eWVyKEdyYXBoaWNzTGF5ZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgK
aW5kZXggNGE5ZjVkNDdlYTg0MTg3MTM5MzA0YWU3M2FlMmZlNWFiNjVlMmM2OC4uNjU0ZmRjYTM5
NDBlZjhlMjk1NDdhODU4NjIwMmYxYTlmYjM1ZTYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hv
c3RXaW5kb3cuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJX
aWRnZXQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTYxLDcgKzYyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCBy
b290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSkgY29uc3QgPSAwOwotCisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25zdCA9
IDA7CisjZW5kaWYKICAgICAvLyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGll
bnQgb2YgdGhlIHBhZ2UuCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1Q
YWdlQ2xpZW50KCkgY29uc3QgPSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCA4YTJmZTZlZmRmNzk2YzFlOWEyZDRjZmYw
NWY4N2MyZTdhNWY2MjAwLi45YWM0YWFiMGM3ZDY2YTc3ODRhMmY4MmM2ZmEzNGZmMWZiMDZjMTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wu
aApAQCAtMjY2LDcgKzI2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgQ09MT1JfQVRUQUNITUVOVDE1
X0VYVCA9IDB4OENFRgogICAgIH07CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0
IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gV2ViR0wgZnVuY3Rpb25z
LiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KIAogICAg
IC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlv
ciBkaWZmZXJzIGZyb20gdGhlIEdMX0FSQl9yb2J1c3RuZXNzCkBAIC0yNzUsMTMgKzI3NSwxMyBA
QCBwdWJsaWM6CiAgICAgLy8gSWYgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiByZXR1cm5zIGFu
IGVycm9yLCBpdCBzaG91bGQgY29udGludWUKICAgICAvLyByZXR1cm5pbmcgdGhlIHNhbWUgZXJy
b3IuIFJlc3RvcmluZyB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaXMgaGFuZGxlZAogICAg
IC8vIGV4dGVybmFsbHkuCi0gICAgdmlydHVhbCBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
ID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQKLSAgICB2aXJ0dWFsIHZv
aWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxv
bmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEs
IHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZ
MCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBk
c3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdD
R0xlbnVtIGZpbHRlcikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcg
aW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIAogICAgIC8v
IEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwpAQCAtMjk1LDE1ICsyOTUsMTUgQEAgcHVibGlj
OgogICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXZl
bnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoR3Jv
dXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91
cE1hcmtlckVYVCh2b2lkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhU
KCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZl
cnMKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4sIGNvbnN0IEdD
R0xlbnVtKiBidWZzKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCi0g
ICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmlt
Y291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVh
biogZGF0YSkgPSAwOwpAQCAtMzE2LDIzICszMTYsMjMgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIHZvaWQqKiBwb2ludGVy
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xz
aXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCB2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRQ
aXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6
ZWkqIHJvd3MsIHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkKiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IHZvaWQqIHBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRh
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwg
aW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1h
Z2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkKiBwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNl
dCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21w
cmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXBy
ZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
em9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogcGl4
ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9i
amVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCB2
b2lkKiogcGFyYW1zKSA9IDA7CkBAIC0zNDAsNyArMzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRJ
bnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRh
KSA9IDA7IC8vIE5PTElOVApAQCAtMzU0LDE0ICszNTQsMTQgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xl
YW4qIGRhdGEpID0gMDsgLy8gTk9MSU5UCiAgICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxl
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgdm9pZCoq
IHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKGlu
dCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIHZvaWQqIGRhdGEsIGJvb2wg
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1u
cywgR0NHTHNpemVpKiByb3dzLCB2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVy
T2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwpAQCAtMzc4LDkgKzM3OCw5IEBAIHB1YmxpYzoK
ICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCiAjaWYgIVVTRShBTkdMRSkKICAgICAvLyBFWFQgUm9i
dXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgotICAgIHZpcnR1YWwgdm9p
ZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgdm9pZCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0KiBw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQqIHBhcmFtcykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgaW50KiBwYXJhbXMpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVh
bCBib29sIGlzTlZJRElBKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGRmNGExMTlhMzIwZGFjNmFl
YjYzMDZkNGM1MDk1NTE1ODhhMTk3M2UuLjM0ZDU1NmIwY2M0YTliYjFhZWE3YTVhOTY4YmM2OTVi
M2EyZTI3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTI3LDExICsyNywxMyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIgogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wp
CiAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIu
aCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRl
ICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCkBAIC00MDMsNiArNDA1
LDE1IEBAIHN0YXRpYyBib29sIHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwg
R3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdykKK3sKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IHJlc3VsdDsKKyAgICBpZiAo
aG9zdFdpbmRvdykKKyAgICAgICAgcmVzdWx0ID0gaG9zdFdpbmRvdy0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woYXR0cmlidXRlcyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdyk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogR3JhcGhpY3NDb250ZXh0R0w6OkdyYXBoaWNzQ29u
dGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgRGVzdGluYXRpb24gZGVz
dGluYXRpb24sIEdyYXBoaWNzQ29udGV4dEdMKikKICAgICA6IG1fYXR0cnMoYXR0cnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aAppbmRleCBhMmNjZjk2MmNkMTI2YzMzNTk4NjczMWRhYTNmZWYzNmQyMGMyMzMyLi4xNDkxNzA0
ZDQ5MzI2Yjg2NjQ1ZTlmZGI4MTc4N2Y3NGY2MTBjMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTU5LDYgKzU5
LDggQEAgY2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVjsKICNlbmRp
ZgogCisKKy8vIEJhc2UgY2xhc3MgZm9yIGdyYXBoaWNzIGNvbnRleHQgZm9yIGltcGxlbWVudGlu
ZyBXZWJHTCByZW5kZXJpbmcgbW9kZWwuCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTCA6IHB1Ymxp
YyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dEdMPiB7CiBwdWJsaWM6CiAgICAgZW51bSB7CkBA
IC05MTMsMTMgKzkxNSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIEdDR0xpbnQgc2l6ZTsKICAgICB9
OwogCisgICAgLy8gQ3JlYXRlcyBhIEdyYXBoaWNzQ29udGV4dEdMIGluc3RhbmNlIHRvIHJlbmRl
ciBpbnRvIG9mZnNjcmVlbiBkZXN0aW5hdGlvbiBpbiBjb250ZXh0IG9mIEhvc3RXaW5kb3cuCisg
ICAgLy8gSG9zdFdpbmRvdyBtaWdodCBhZmZlY3QgdGhlIGRlY2lzaW9uIHdoaWNoIGJhY2tlbmQg
aXMgdG8gYmUgdXNlZC4KKyAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgSG9zdFdpbmRvdyopOworCiAg
ICAgR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBEZXN0aW5h
dGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMKiBzaGFyZWRD
b250ZXh0ID0gbnVsbHB0cik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0woKSA9IGRl
ZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMu
YWRkKCZjbGllbnQpOyB9CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ2xpZW50JiBjbGllbnQpIHsg
bV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsgfQogCi0gICAgLy8gV2ViR0wgZnVuY3Rpb25zIGlu
IGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgorICAgIC8vIFdlYkdMIGZ1
bmN0aW9ucy4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQu
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IDQ5Yjc5ZDg0OWU5MmYzOTI3
ZjhkZTNjY2IxYTAzYjgzMThhMWRjZDYuLmE3MGNjMGMxMDZmZGM2NjdkZjA5MzRjYjIzMjM5OGY3
YmQyZGEwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCiAvLyBHQ0dMIHR5cGVzIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIEdMIHR5cGVz
IGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMApAQCAtNDQsNiArNDYsNyBAQCB0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IEdDR0xoYWxmZmxvYXQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xjbGFtcGY7CiB0
eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBlZGVmIGludHB0cl90IEdDR0xzaXplaXB0
cjsKK3R5cGVkZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CiB0eXBlZGVmIGNoYXIgR0NHTGNoYXI7
CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyBHQ0dMdWludDY0OwpAQCAtNTQsMyArNTcsMjYgQEAgdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9y
bUdMT2JqZWN0OwogI2lmICFQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgdW5zaWduZWQgR0x1aW50
OwogI2VuZGlmCisKKy8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQ
QyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4K
K3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0
aWNfYXNzZXJ0KHNpemVvZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZV92PEdDR0x1Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWVfdjxHQ0dMc2hvcnQsIGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTHVzaG9ydCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
R0NHTGludCwgaW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6
ZWksIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVp
bnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+
KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+
KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnRwdHIpID09IHNpemVvZih1aW50NjRfdCkpOworc3Rh
dGljX2Fzc2VydChzaXplb2YoR0NHTHNpemVpcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x2b2lkcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xjaGFyKT09IHNpemVvZih1aW50OF90KSk7CitzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xpbnQ2NCwgaW50NjRfdD4pOworc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWludDY0LCB1aW50NjRfdD4pOworc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWVfdjxQbGF0Zm9ybUdMT2JqZWN0LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2Vy
dChzaXplb2YoR0NHTHN5bmMpID09IHNpemVvZih1aW50NjRfdCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggYzZmNTQyYWRjODkzMDc5
MGJhMGRjYjczYWFmYjE2MzBiNWJiZjhmZS4uMmE2N2YzODM2YTMyY2NhMWYzYWQ5MzJlMTk3YWU1
ZDRjMjY5ZjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCkBAIC01OCwxMiArNTgsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBGbG9hdFJl
Y3QgY2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBzdGF0aWMgSW50U2l6ZSBj
b21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmKTsKLSAgICAKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkg
PSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4geyB9OyB9Ci0gICAgCisKICAgICB2aXJ0dWFs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Zmx1c2hDb250ZXh0KCkgPSAwOwogCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIC8v
IHdpdGggdGV4dHVyZXMgdGhhdCBhcmUgUkdCIG9yIFJHQkEgZm9ybWF0LCBhbmQgVU5TSUdORURf
QllURSB0eXBlLgogICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0R0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2ws
IGJvb2wpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCA9IDA7Ci0gICAgCisKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlcigpID0g
ZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZkZmQxZjY1NjFjODdkMjY4Y2M4ODEzMzZmOTQ1MzAzOWRhOTA5
NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2VDb2NvYS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlCit7CisgICAgLy8gTmFtZSBm
b3IgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJhc2UgY2xhc3Mgb2YgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgcHJveHkuCisgICAgLy8gRHVlIHRvIHRoZSBsYWNrIG9mIGFic3RyYWN0aW9ucywgd2Ug
Y3VycmVudGx5IG5lZWQgdG8gaW5oZXJpdCB0aGUKKyAgICAvLyBwbGF0Zm9ybSBkZXBlbmRlbnQg
aW1wbGVtZW50YXRpb24gaW4gdGhlIG1pZGRsZSBvZiB0aGUgaW5oZXJpdGFuY2UgY2hhaW4KKyAg
ICAvLyBvZiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LgorICAgIC8vIFRoaXMgbWVhbnMg
d2UgY2Fubm90IGhhdmUgYSByZWFsIHBsYXRmb3JtIGluZGVwZW5kZW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgYmFzZSBjbGFzcy4KKyAgICAvLyBGb3IgdGhpcyByZWFzb24gd2UgbXVz
dCByZWZlciB0byB0aGUgY29uY3JldGUgY2xhc3MgZm9yIHRoZSB0aW1lIGJlaW5nLgorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHVzaW5nIFBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UgPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOworI2VuZGlm
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEJhc2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2Q1
NzQ0NjVhOWMxMDExYzFkZjFlZmY1NzdkZGU2Zjk1M2M0MzBiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xC
YXNlLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLy8gQSBiYXNlIGNsYXNzIGZvciByZW1vdGUgR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVt
ZW50YXRpb25zLgorLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBwYXJ0cyB0aGF0IGFyZSB1c2luZyBX
ZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6CisvLyAtIERyYXdpbmcgYnVmZmVyIHRyYWNr
aW5nIG1hbmFnZW1lbnQuCisvLyAtIENvbXBvc2l0aW5nIHN1cHBvcnQuCisvLyBUaGUgcGFydHMg
d2VyZSBuZWVkZWQgdG8gYmUgaW1wbGVtZW50ZWQgZHVlIHRvIGxhY2sgb2YgYWJzdHJhY3Rpb25z
IGFuZAorLy8gc21hbGwgcGVuZGluZyBmaXhlcyBhdCB0aGUgdGltZSBvZiB3cml0aW5nLgorV0VC
Q09SRV9FWFBPUlQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYSA6
IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNHTCB7CitwdWJsaWM6
CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTEJhc2UoKSBvdmVycmlk
ZTsKKworICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4K
KyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wo
KSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNv
bnN0IGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOworICAgIEV4
dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsIHsgcmV0dXJuICp0aGlzOyB9CisgICAg
dm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBzZXRD
b250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKKyAgICBHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN5bnRo
ZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0
dXNDaGVjaygpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAg
ICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIGJvb2wgbGF5ZXJDb21wb3Np
dGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJp
dGZpZWxkKSBmaW5hbDsKKyAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkg
Y29uc3QgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisgICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0
ZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKwor
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRl
eHRHTENWKiBhc0NWKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0ciB9OworI2VuZGlmCisgICAgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKKworfTsKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5jcHAKaW5kZXggMWM4YmM0MjU1MGYxYzFkOTVjMzA4MmY2NzM3NmE1Njk1MDZi
ZmFiMy4uOTY2MzAzNmQxN2M2OGM0ZTFhMmQyMWYzYzIyNDU4ZjE0ZGM1ODJkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5H
TEU6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOwogfQogCi1pbnQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKQorR0xpbnQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKQogewogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7CiB9CkBAIC0x
MTMsMTIgKzExMywxMiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0g
ICAgaW50IHNvdXJjZUxlbmd0aCA9IDA7CisgICAgR0NHTGludCBzb3VyY2VMZW5ndGggPSAwOwog
ICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9T
T1VSQ0VfTEVOR1RIX0FOR0xFLCAmc291cmNlTGVuZ3RoKTsKICAgICBpZiAoIXNvdXJjZUxlbmd0
aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgVmVjdG9yPEdMY2hhcj4gbmFt
ZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FO
R0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCi0gICAgaW50IHJldHVybmVkTGVuZ3RoID0g
MDsKKyAgICBHQ0dMaW50IHJldHVybmVkTGVuZ3RoID0gMDsKICAgICBnbDo6R2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlciwgc291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgs
IG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIXJldHVybmVkTGVuZ3RoKQogICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
Ojppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiAgICAgbV9pbml0aWFsaXplZEF2YWls
YWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdD
R0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAs
IEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51
bSBmaWx0ZXIpCiB7CiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBzdXBwb3J0IGZvciBB
UFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxv
bmcKICAgICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3Jj
WTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRl
cm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM2LDcg
KzIzNiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXpl
aSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykKICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQobiwgYnVm
cyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI0NCwxNSArMjQ0LDE1IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpCiAgICAgZ2w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291
bnQsIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRw
dHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7CisgICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KG9mZnNl
dCksIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJp
YkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHAKICAgICBnbDo6R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykK
K3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9n
cmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0zOTksNyArMzk5
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGUKICAgICBnbDo6R2V0VmVydGV4QXR0cmliUG9p
bnRlcnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcG9pbnRlcik7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQg
eCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC00MDcsNyArNDA3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVz
dEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0cKICAgICBnbDo6UmVhZFBp
eGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWws
IGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBp
bnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1faXNGb3JXZWJH
TDIpCiAgICAgICAgIGludGVybmFsZm9ybWF0ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFs
Rm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwpAQCAtNDMzLDcgKzQzMyw3IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtCiAgICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgaW50CiAgICAgZ2w6OlRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUs
IHBpeGVscyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRh
KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQ1MSw3ICs0NTEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2Vk
VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldgogCiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJl
c3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludAogICAgIG1f
Y29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3RhdGUu
Y3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29t
cHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ2
OCw3ICs0NjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2Uz
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldgogICAgIGdsOjpDb21wcmVzc2Vk
VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQs
IGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50CiB9CiAKIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2
b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCBpbgogICAgIGdsOjpUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBp
bnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
em9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRleCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY1NCw3ICs2NTQsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUocG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjYyLDcgKzY2Miw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC02ODAsMTcg
KzY4MCwxNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2ludGVydlJvYnVzdEFOR0xF
Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaQogfQogCiAjaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZy
b21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCitz
dGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhHQ0dMaW50IHdpZHRoLCBHQ0dM
aW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQogewogICAgIC8vIFdlIGNhbiBhc3N1
bWUgdGhpcyBkb2Vzbid0IG92ZXJmbG93IGJlY2F1c2UgdGhlIGNhbGxpbmcgZnVuY3Rpb25zCiAg
ICAgLy8gdXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBpbnQgdG90YWxCeXRlcyA9IHdpZHRo
ICogaGVpZ2h0ICogNDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0g
NCkKKyAgICBHQ0dMaW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CisgICAgZm9y
IChHQ0dMaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQogICAgICAgICBwaXhlbHNb
aSArIDNdID0gMjU1OwogfQogI2VuZGlmCiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93
cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKK3ZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xz
aXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdU
b1BpeGVsQnVmZmVyT2JqZWN0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sCiAgICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc0Myw3ICs3NDMs
NyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0
QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlm
b3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggNzU2MmU5ODZjMzgzMDdkMTg1NGQ0ODIzODk4Mjc2
YWJhNzY1YWU4Mi4uMjI5NGYyOGIwODJlNmRhM2M2MWFiMzkxODU1MzY1OTY1NjgwMDY1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9F
eHRlbnNpb25zR0xBTkdMRS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1
cHBvcnRzKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5zdXJlRW5hYmxlZChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIG92ZXJyaWRl
OworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIG92ZXJyaWRlOwogCiAg
ICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CkBA
IC01NiwxMiArNTYsMTIgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgYmxp
dEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3Jj
WTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2ln
bmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVk
IGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJs
aXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQg
c3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xp
bnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0
ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lk
IGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRw
dHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3Zl
cnJpZGU7CiAKICAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJ
QTsgfQogICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9CkBAIC04
MywzMSArODMsMzEgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFVuaWZvcm1pdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcG9pbnRl
cikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
aW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFkUGl4ZWxzUm9i
dXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dz
LCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMp
IG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBp
bnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykg
b3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
aW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKKworICAgIHZvaWQgdGV4SW1hZ2Uz
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQg
dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBpbnQgKmRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJ
bnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0
dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBn
ZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1z
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpk
YXRhKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsKQEAgLTEyMSwxNCArMTIxLDE0IEBA
IHB1YmxpYzoKICAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMYm9vbGVhbiAqZGF0YSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
KyAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywg
R0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2Jq
ZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9v
bCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRuVW5p
Zm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxODky
ZmMxYTFmNjZhMjllMmUwYjdjNDA1NTY4YTk1Nzk2N2RiODUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0wuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKK09CSkNfQ0xBU1MgV2ViR0xMYXllcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBBIGJhc2UgY2xhc3MgZm9yIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHByb3h5IHNpZGUgaW1w
bGVtZW50YXRpb24gb24gQ29jb2EuCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQg
YXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJhd2luZyBi
dWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KKy8v
IFRoZSBwYXJ0cyB3ZXJlIG5lZWRlZCB0byBiZSBpbXBsZW1lbnRlZCBkdWUgdG8gbGFjayBvZiBh
YnN0cmFjdGlvbnMgYW5kCisvLyBzbWFsbCBwZW5kaW5nIGZpeGVzIGF0IHRoZSB0aW1lIG9mIHdy
aXRpbmcuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dM
IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hKGNv
bnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIH5SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0
R0w6OmlzRW5hYmxlZDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRm
b3JtVGV4dHVyZSgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigp
IGZpbmFsOworICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsIHsgcmV0dXJu
ICp0aGlzOyB9CisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7
CisgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKKyAgICBHcmFwaGlj
c0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24o
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBi
b29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgc2V0
RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3Bs
YXkoKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIGJv
b2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRCdWZmZXJzVG9B
dXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSBmaW5hbDsKKyAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVy
c1RvQXV0b0NsZWFyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisgICAgYm9vbCBwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIG1h
cmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5n
ZWQoKSBmaW5hbDsKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAg
R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNl
bmRpZgorICAgIC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBFeHRl
bnNpb25zR0w6OmlzRW5hYmxlZDsKKyAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsIHsgfQorICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc05WSURJQSgpIGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc0FNRCgpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0ludGVsKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW1hZ2luYXRpb24o
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIFN0cmluZyB2ZW5kb3IoKSBmaW5hbCB7IHJl
dHVybiAiIjsgfQorICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIFJldGFpblB0cjxX
ZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CisKK307CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDIwNTM4YWQ5ZGMyZGQzZmU5YTJjYzU2ZWNkOTgzODljNDA4NzY4OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2ltcG9ydCAiSW1hZ2VE
YXRhLmgiCisjaW1wb3J0ICJXZWJHTExheWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2VDb2NvYShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7Cit9CisKK1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hKCkKK3sKK30KKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAorewor
ICAgIHJldHVybiAwOworfQorCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93
ZWJHTExheWVyLmdldCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2E6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCit7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cmVzaGFwZShpbnQsIGludCkKK3sK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpzZXRDb250
ZXh0VmlzaWJpbGl0eShib29sKQoreworfQorCitHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwb3dlclByZWZlcmVu
Y2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiB7fTsKK30KKworYm9vbCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjppc0dMRVMyQ29tcGxpYW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2VDb2NvYTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0pCit7Cit9CisK
K2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6bW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6c2V0RmFpbE5leHRHUFVTdGF0dXND
aGVjaygpCit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2Nv
YTo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlQ29jb2E6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7Cit9CisKK2Jvb2wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6bGF5ZXJDb21wb3NpdGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYTo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkKK3sK
K30KKworR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6
OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0ltYWdlRGF0YSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6bWFya0xheWVyQ29tcG9zaXRlZCgp
Cit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6c2lt
dWxhdGVDb250ZXh0Q2hhbmdlZCgpCit7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDUxM2Y0NTVjYWQ4ZTVl
NjA1MjcyOGQzNDdjMzkzZDlmNDQ3ZmUzODguLjgxNzU4N2U4YTdjZTczZDE3MDEzZDNhOTA2MDUx
MjJlM2E5YmM0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgi
CisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCiAj
aW1wb3J0ICJTb3VyY2VHcmFwaGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDE3Nzg2YTY0YmE0ZTFkYTAwOTY0ZWFl
OTk3ZDI5Mjc2NGRhZDE4OTYuLjYxNzk2NDRiOTNjMWYyOGI4ZTEyZGY0MWYwMWJiMDJiMDcwY2E0
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25zdCBH
Q0dMZW51bSogYnVmcykKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IGFiOGNiNTRmNWU4NzllZjRiOGE5MGQxOWE3ZWM5MmM4OWNlMjA1
N2IuLmQ2NDQ1ODM3Y2I1M2M0Zjk5MWVhNTFiNWQzYjhmYzQ3ZjQ0ZGM4MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fZ2xEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0cKICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwg
cHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
bG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkKIHsKICAgICBpZiAoIW1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSkgewog
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LAogICAgIG1fZ2xE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRf
Y2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpCiB7CiAgICAgaWYgKCFtX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKSB7CiAgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBmMWY0MjM1MWZhMTA1ZTEyNmUyZGFj
Y2Q2Y2MzOWQ5MWY5ZWY5M2QzLi5lZWQyMTcwOGM5ZjRhOWI0M2U3NjI3Yzc4OWU5YzMyZmQ5OGRj
YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtODYsNyArODYsNyBA
QCB0eXBlZGVmIFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFtZUhhc2g7
CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMUHJpdmF0ZTsKIAotY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdy
YXBoaWNzQ29udGV4dEdMCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdp
bmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMjgxMjhiYjA1NDcz
ZjI3NTExZGFiYmUzOWU4Y2U0MjEyNTMyMjU3Li5mYjliYmQyMmRlNDQ2NGZlYzY3YmI4MGRjNjk4
MzJjODBlZjQzMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
bW1vbi5jcHAKQEAgLTIyODYsMTkgKzIyODYsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEcK
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogICAgIGNoZWNr
R1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4
dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIG9mZnNl
dCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQ
VVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewotICAgIGdldEV4
dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICBnZXRF
eHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKIH0K
IAogI2lmIEhBVkUoT1BFTkdMXzQpICYmIEVOQUJMRShXRUJHTDIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApp
bmRleCA3MWU0YjMxZTBhMmU5OTg3OTAyNDM5MWUyZjgxMTkyMTAzN2ViN2YzLi43YjZkOWM5ZTNk
ZGMyYTkzODM4OTA4NmE5YjEyMTFmNDJmYjA4YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTEy
NCw2ICsxMjQsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzCiAKICAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQKKyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMCiAK
ICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyCiAgICAg
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eQpAQCAtMjE2LDYgKzIxNyw3
IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBXZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbgogCiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5CisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKaW5kZXggYzBlZmNhZDU3NDUwM2E4YTlhYjdjN2VjMDVlZjQ1OWQzMDU0ZjM5Zi4uMzYz
MTg5MTUyYmMxMTFhM2M5MDE1MGM5ODllMDAzZGJmMDk4ZGU3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiArMjAsNyBAQCAkKEpB
VkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBU
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BV
UHJvY2Vzcy5zYi5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTI3LDYgKzEyOCw3IEBAICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMjYyZmJkMTMzZTg1OGJjMzkxMTllMjRjZTYxNjU5
ZjA1ZWUxZWI2ZS4uYTBiNmZmZmQ2OGQzMTBmMmRmYWY4ODk0MTE5ZDM5OWNmMGY0ZjcwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0x
NzUsNiArMTc1LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
M2ViMjQ2MTM2MTVhNGU3MWYwZThlYTJjMTMzYWZmYzBmOGM2MTQxZC4uMjlmY2M2NjhhMmNmZmFl
Y2MyNmMwYWI4NWM4N2IzNjgzNjUzODU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMTcwLDYgKzE3MCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAogCVdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCkBA
IC0yMjMsNiArMjI0LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzIFwKIAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAog
CUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCisJR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMGUyZTg4
MzJiMWUyMGYxZTBmMzE5ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2UxNGM1MGI3NDE5OTNk
NmYzNWE1YTk1ZjVhZmQ4MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiArNjQsMTAgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNlbmRpZgogCisjaWYg
RU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisjZW5k
aWYKKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIK
QEAgLTI5MCw2ICsyOTQsMjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxl
YXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRf
VU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0pOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNYXAucmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgQVNTRVJU
X1VOVVNFRChmb3VuZCwgZm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQ
bGF5aW5nTWFuYWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggMjY3OGRiYzRlNWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4ZC4uMWQ0YzhkZmZh
ZjQzOWU4MmRjZjkxOTRkOTcwZjIxZTJlNTBiY2FmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw4
IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVk
aW9TZXNzaW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVu
dGlmaWVyLmg+CkBAIC0zOSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBHUFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBjbGFzcyBSZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwog
Y2xhc3MgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eTsKIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwpAQCAt
MTE5LDYgKzEyNiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2Vu
ZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5n
QmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoV0VCR0wp
CisgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCBy
ZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNl
bmRpZgorCiAgICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAgdm9pZCBzZXROb3dQ
bGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBXZWJDb3JlOjpOb3dQ
bGF5aW5nSW5mbyYmKTsKIApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRlOgogCiAgICAgdXNp
bmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7Ci0K
KyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAg
PSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAg
bV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9j
ZG1GYWN0b3J5UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
NTE5NGZiNGY2MDg1ZDYyNGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1NGUxNjQ1OTViMGEz
NjFkZmU0Yzc1YmZmNDAxOGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTI1LDYgKzI1LDEwIEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQo
V2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllcikKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9p
ZCBSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBDbGVh
ck5vd1BsYXlpbmdJbmZvKCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNO
b3dQbGF5aW5nQXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQ
bGF5aW5nSW5mbykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc1MDhkZWJlY2MxYWRmNzRlODg5ZTUwZDNmMDQyNWIyNTFjOTNhZjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorewor
ICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250ZXh0ID0gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBudWxscHRyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAg
ICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQo
KSk7Cit9CisKK0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBudWxscHRyOworfQorCit1aW50NjRf
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2
NCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk5N2QwNjQ0YmViOWIx
N2Q1NTMzNzdiZTZmNTIxOTRmMjc3ZDE4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAg
KzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCitj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZpcnR1YWwg
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCk7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgorICAg
IElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKwor
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiCisKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWIy
MGZmNjZjMTQ0MDhkODhkZjE5MWRjOWU0MmExNmFiMjY1NDg5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMTk3IEBACisKKy8qIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUg
aXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgQWN0aXZlVGV4dHVy
ZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHZvaWQgQXR0YWNoU2hhZGVyKHVpbnQzMl90IHByb2dy
YW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB2b2lkIEJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJf
dCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nIG5hbWUpCisgICAgdm9pZCBCaW5kQnVmZmVy
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRGcmFtZWJ1ZmZl
cih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kUmVuZGVyYnVm
ZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRUZXh0dXJl
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJsZW5kQ29sb3IoZmxv
YXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBC
bGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBCbGVuZEVxdWF0aW9uU2VwYXJh
dGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHZvaWQgQmxlbmRG
dW5jKHVpbnQzMl90IHNmYWN0b3IsIHVpbnQzMl90IGRmYWN0b3IpCisgICAgdm9pZCBCbGVuZEZ1
bmNTZXBhcmF0ZSh1aW50MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwgdWludDMyX3Qgc3Jj
QWxwaGEsIHVpbnQzMl90IGRzdEFscGhhKQorICAgIHZvaWQgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyh1aW50MzJfdCB0YXJnZXQpIC0+ICh1aW50MzJfdCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBDbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xlYXJDb2xvcihmbG9hdCByZWQs
IGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIENsZWFyRGVw
dGgoZmxvYXQgZGVwdGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHZv
aWQgQ29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEp
CisgICAgdm9pZCBDb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5VGV4
SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgYm9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlMkQodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHZvaWQgQ3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90IHJlc3VsdCkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIENyZWF0ZUZyYW1lYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJlc3VsdCkgU3luY2hyb25v
dXMKKyAgICB2b2lkIENyZWF0ZVByb2dyYW0oKSAtPiAodWludDMyX3QgcmVzdWx0KSBTeW5jaHJv
bm91cworICAgIHZvaWQgQ3JlYXRlUmVuZGVyYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJlc3VsdCkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAodWlu
dDMyX3QgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVGV4dHVyZSgpIC0+ICh1
aW50MzJfdCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDdWxsRmFjZSh1aW50MzJfdCBt
b2RlKQorICAgIHZvaWQgRGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxl
dGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50
MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisg
ICAgdm9pZCBEZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVRleHR1
cmUodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAg
IHZvaWQgRGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB2b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5l
YXIsIGZsb2F0IHpGYXIpCisgICAgdm9pZCBEZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWlu
dDMyX3QgYXJnMSkKKyAgICB2b2lkIERpc2FibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRHJhd0FycmF5
cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHZvaWQg
RHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9p
ZCBFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIEZpbmlz
aCgpCisgICAgdm9pZCBGbHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZl
cnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1
aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90
IG1vZGUpCisgICAgdm9pZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9p
ZCBHZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMy
X3QgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U3RyaW5nKHVpbnQzMl90IG5hbWUp
IC0+IChTdHJpbmcgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAo
dWludDMyX3QgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbUluZm9Mb2co
dWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRTaGFkZXJJbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmVzdWx0KSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcg
cmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90
IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1l
KSAtPiAodWludDY0X3QgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgSGludCh1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBJc0J1ZmZlcih1aW50MzJfdCBhcmcw
KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0VuYWJsZWQodWludDMy
X3QgY2FwKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0ZyYW1lYnVm
ZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICB2b2lk
IElzUHJvZ3JhbSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXN1bHQpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBJc1NoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXN1
bHQpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1RleHR1cmUodWludDMyX3QgYXJnMCkgLT4gKGJv
b2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgTGluZVdpZHRoKGZsb2F0IGFyZzApCisg
ICAgdm9pZCBMaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgUGl4ZWxTdG9yZWko
dWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZs
b2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wg
aW52ZXJ0KQorICAgIHZvaWQgU2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBTaGFkZXJTb3VyY2UodWludDMyX3QgYXJn
MCwgU3RyaW5nIHN0cmluZykKKyAgICB2b2lkIFN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGlu
dDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbEZ1bmNTZXBhcmF0ZSh1
aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykK
KyAgICB2b2lkIFN0ZW5jaWxNYXNrKHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFz
a1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2ls
T3AodWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHZv
aWQgU3RlbmNpbE9wU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMy
X3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyZih1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIFRleFBhcmFt
ZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAg
ICB2b2lkIFVuaWZvcm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHZvaWQgVW5p
Zm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB2b2lkIFVuaWZvcm0yZihp
bnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVW5pZm9ybTJpKGlu
dDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHZvaWQgVW5pZm9ybTNm
KGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBV
bmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
eikKKyAgICB2b2lkIFVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQgVW5pZm9ybTRpKGludDMyX3QgbG9jYXRpb24s
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFVz
ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgVmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgp
CisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQg
eSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJQ
b2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wg
bm9ybWFsaXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFZp
ZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyAgICB2b2lkIEJ1ZmZlckRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBzaXplLCB1
aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9k
ZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAg
dm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwg
dWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2
b2lkIFZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3Ip
CisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJfdCByZXN1bHQpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgSXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBCaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIENv
cHlCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0
LCB1aW50NjRfdCByZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3Qgc2l6
ZSkKKyAgICB2b2lkIFVubWFwQnVmZmVyKHVpbnQzMl90IHRhcmdldCkgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAsIGlu
dDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAs
IGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1h
c2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwgaW50
MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB2b2lkIFJlYWRCdWZmZXIodWludDMyX3Qg
c3JjKQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdlMkQodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTNEKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFn
ZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgR2V0RnJhZ0RhdGFMb2NhdGlvbih1
aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmVzdWx0KSBTeW5jaHJv
bm91cworICAgIHZvaWQgVW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkK
KyAgICB2b2lkIFVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQz
Ml90IHYxKQorICAgIHZvaWQgVW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2
MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAgIHZvaWQgVW5pZm9ybTR1aShpbnQzMl90
IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJf
dCB2MykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmli
STR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3Qgeiwg
dWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBEcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJf
dCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50
MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHZvaWQg
Q3JlYXRlUXVlcnkoKSAtPiAodWludDMyX3QgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQg
RGVsZXRlUXVlcnkodWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBJc1F1ZXJ5KHVpbnQzMl90IHF1
ZXJ5KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCZWdpblF1ZXJ5KHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBFbmRRdWVyeSh1aW50MzJf
dCB0YXJnZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lKSAtPiAodWludDMyX3QgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2Ft
cGxlcigpIC0+ICh1aW50MzJfdCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVT
YW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJc1NhbXBsZXIodWludDMyX3Qgc2Ft
cGxlcikgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFNhbXBsZXIo
dWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0
ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAg
IHZvaWQgU2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUs
IGZsb2F0IHBhcmFtKQorICAgIHZvaWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAtPiAodWlu
dDMyX3QgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2sodWludDMyX3QgaWQpCisgICAgdm9pZCBJc1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlk
KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJhbnNmb3JtRmVl
ZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJlZ2luVHJhbnNm
b3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVuZFRyYW5zZm9y
bUZlZWRiYWNrKCkKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQg
UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgQmluZEJ1ZmZlckJhc2UodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHZvaWQgQmlu
ZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1
ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQorICAgIHZvaWQgR2V0VW5pZm9y
bUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+
ICh1aW50MzJfdCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3Jt
QmxvY2tOYW1lKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4KSAt
PiAoU3RyaW5nIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRp
bmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90
IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkgLT4gKGludDMyX3QgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxpdEZyYW1lYnVm
ZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50
MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwg
aW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZvaWQg
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZVZlcnRleEFycmF5T0VTKCkgLT4gKHVpbnQzMl90
IHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQz
Ml90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChi
b29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQz
Ml90IGFyZzApIC0+IChTdHJpbmcgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIHZvaWQgSW5zZXJ0
RXZlbnRNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisgICAgdm9pZCBQdXNoR3JvdXBNYXJrZXJFWFQo
U3RyaW5nIGFyZzApCisgICAgdm9pZCBQb3BHcm91cE1hcmtlckVYVCgpCisgICAgdm9pZCBEcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJf
dCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50
NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorfQorCisjZW5kaWYK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lOGE5OWViMWZkZDA0MWJlNWYxYmFiMTZlNmJjMWMwNTQ1NmIwYjk0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTAsMCArMSw2ODYgQEAK
KworLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13
ZWJnbC4gRG8gbm90IGVkaXQuCisKKy8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4g
dGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGlt
cGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQorICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50
MzJfdCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRl
eHR1cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1
aW50MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihw
cm9ncmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbih1aW50
MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nIG5hbWUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRleCwgbmFtZSk7CisgICAgfQor
ICAgIHZvaWQgYmluZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9Cisg
ICAgdm9pZCBiaW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKTsK
KyAgICB9CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJn
ZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodGFy
Z2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBibGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQg
Z3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICB9CisgICAgdm9pZCBi
bGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJs
ZW5kRXF1YXRpb24obW9kZSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRl
KHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CisgICAg
fQorICAgIHZvaWQgYmxlbmRGdW5jKHVpbnQzMl90IHNmYWN0b3IsIHVpbnQzMl90IGRmYWN0b3Ip
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKTsK
KyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBzcmNSR0IsIHVpbnQz
Ml90IGRzdFJHQiwgdWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90IGRzdEFscGhhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3Jj
QWxwaGEsIGRzdEFscGhhKTsKKyAgICB9CisgICAgdm9pZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KHVpbnQzMl90IHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRl
eHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSk7CisgICAgfQorICAgIHZvaWQgY2xl
YXIodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFzayk7
CisgICAgfQorICAgIHZvaWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9h
dCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xv
cihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0aChm
bG9hdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7
CisgICAgfQorICAgIHZvaWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhi
b29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jb2xvck1hc2socmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIH0K
KyAgICB2b2lkIGNvbXBpbGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Y29tcGlsZVNoYWRlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4SW1h
Z2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9y
bWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgYm9yZGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90
IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZUJ1
ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY29udGV4dC0+Y3JlYXRlQnVm
ZmVyKCkpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZUZyYW1lYnVmZmVyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVQcm9ncmFtKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bV9jb250ZXh0LT5jcmVhdGVQcm9ncmFtKCkpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVJlbmRl
cmJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY29udGV4dC0+Y3JlYXRl
UmVuZGVyYnVmZmVyKCkpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNoYWRlcih1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY29udGV4dC0+Y3JlYXRlU2hh
ZGVyKGFyZzApKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVUZXh0dXJlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCkpOworICAgIH0KKyAg
ICB2b2lkIGN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmN1bGxGYWNlKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcih1aW50MzJfdCBh
cmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIoYXJnMCk7CisgICAg
fQorICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQg
ZGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcih1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVSZW5kZXJidWZm
ZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVpbnQzMl90IGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBkZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRlbGV0ZVRleHR1cmUoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVwdGhGdW5jKHVpbnQz
Ml90IGZ1bmMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoRnVuYyhmdW5jKTsKKyAg
ICB9CisgICAgdm9pZCBkZXB0aE1hc2soYm9vbCBmbGFnKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kZXB0aE1hc2soZmxhZyk7CisgICAgfQorICAgIHZvaWQgZGVwdGhSYW5nZShmbG9hdCB6
TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6
TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAs
IHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihh
cmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOworICAgIH0KKyAgICB2b2lkIGRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBk
cmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsK
KyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCk7CisgICAgfQorICAg
IHZvaWQgZW5hYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5h
YmxlKGNhcCk7CisgICAgfQorICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMy
X3QgaW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBmaW5pc2goKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5maW5pc2goKTsKKyAgICB9CisgICAgdm9pZCBmbHVzaCgpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmZsdXNoKCk7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCByZW5k
ZXJidWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVy
dGFyZ2V0LCBhcmczKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWlu
dDMyX3QgYXJnMywgaW50MzJfdCBsZXZlbCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxl
dmVsKTsKKyAgICB9CisgICAgdm9pZCBmcm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZnJvbnRGYWNlKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGdlbmVy
YXRlTWlwbWFwKHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2Vu
ZXJhdGVNaXBtYXAodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRBdHRyaWJMb2NhdGlvbih1
aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSkpOworICAgIH0KKyAgICB2
b2lkIGdldFN0cmluZyh1aW50MzJfdCBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtX2NvbnRleHQtPmdldFN0cmluZyhuYW1lKSk7CisgICAgfQorICAgIHZvaWQgZ2V0RXJyb3Io
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQtPmdldEVycm9yKCkpOwor
ICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1JbmZvTG9nKHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2coYXJnMCkp
OworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFyZzAp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2UoYXJnMCkp
OworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJp
bmcgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBw
bmFtZSkpOworICAgIH0KKyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBt
b2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAg
fQorICAgIHZvaWQgaXNCdWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1fY29udGV4dC0+aXNCdWZmZXIoYXJnMCkpOworICAgIH0KKyAgICB2b2lkIGlzRW5h
YmxlZCh1aW50MzJfdCBjYXAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQt
PmlzRW5hYmxlZChjYXApKTsKKyAgICB9CisgICAgdm9pZCBpc0ZyYW1lYnVmZmVyKHVpbnQzMl90
IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQtPmlzRnJhbWVidWZm
ZXIoYXJnMCkpOworICAgIH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9jb250ZXh0LT5pc1Byb2dyYW0oYXJnMCkpOworICAg
IH0KKyAgICB2b2lkIGlzUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtX2NvbnRleHQtPmlzUmVuZGVyYnVmZmVyKGFyZzApKTsKKyAgICB9Cisg
ICAgdm9pZCBpc1NoYWRlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobV9jb250ZXh0LT5pc1NoYWRlcihhcmcwKSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJl
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQtPmlz
VGV4dHVyZShhcmcwKSk7CisgICAgfQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9p
ZCBsaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5s
aW5rUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBw
bmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9y
ZWkocG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZh
Y3RvciwgZmxvYXQgdW5pdHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZz
ZXQoZmFjdG9yLCB1bml0cyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3Rv
cmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAg
dm9pZCBzYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOworICAgIH0KKyAg
ICB2b2lkIHNjaXNzb3IoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zY2lzc29yKHgsIHksIHdpZHRo
LCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBT
dHJpbmcgc3RyaW5nKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoYXJn
MCwgc3RyaW5nKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBp
bnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3Rl
bmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuY1Nl
cGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJf
dCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZh
Y2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2sodWludDMy
X3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2sobWFzayk7Cisg
ICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJf
dCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFza1NlcGFyYXRlKGZh
Y2UsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50
MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0
ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcFNl
cGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50
MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wU2VwYXJhdGUo
ZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJm
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAg
ICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5h
bWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRl
cmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZihpbnQz
Ml90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
MWYobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xaShpbnQzMl90IGxvY2F0
aW9uLCBpbnQzMl90IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShsb2Nh
dGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZs
b2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2Nh
dGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24s
IGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
MmkobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zZihpbnQzMl90IGxv
Y2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT51bmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopOwor
ICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
NGYobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aShpbnQz
Ml90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwg
dyk7CisgICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZhbGlk
YXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52YWxp
ZGF0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYodWludDMy
X3QgaW5kZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YjFmKGluZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBp
bmRleCwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliMmYoaW5kZXgsIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVp
bnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHosIGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGlu
ZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVp
bnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXpl
ZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwg
c3RyaWRlLCBvZmZzZXQpOworICAgIH0KKyAgICB2b2lkIHZpZXdwb3J0KGludDMyX3QgeCwgaW50
MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQg
YnVmZmVyRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IHNpemUsIHVpbnQzMl90IHVzYWdl
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgdXNh
Z2UpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwg
aW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50
LCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZCh1aW50
MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQs
IGludDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVu
dHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBk
aXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGlu
ZGV4LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY29udGV4dC0+Y3JlYXRlVmVydGV4QXJyYXkoKSk7
CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAg
IHZvaWQgaXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFyZzApKTsKKyAgICB9CisgICAgdm9pZCBi
aW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
YmluZFZlcnRleEFycmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRh
KHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1aW50NjRfdCByZWFk
T2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3Qgc2l6ZSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQs
IHJlYWRPZmZzZXQsIHdyaXRlT2Zmc2V0LCBzaXplKTsKKyAgICB9CisgICAgdm9pZCB1bm1hcEJ1
ZmZlcih1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRl
eHQtPnVubWFwQnVmZmVyKHRhcmdldCkpOworICAgIH0KKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZl
cihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNy
Y1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90
IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0
WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQg
ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2ht
ZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxheWVyKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CisgICAgfQorICAgIHZvaWQgcmVhZEJ1
ZmZlcih1aW50MzJfdCBzcmMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlYWRCdWZmZXIo
c3JjKTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHRleFN0b3JhZ2UyRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRl
eFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OworICAgIH0KKyAgICB2b2lkIHRleFN0b3JhZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN0b3Jh
Z2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
KTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpv
ZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJp
bmcgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY29udGV4dC0+Z2V0RnJh
Z0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWko
aW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
LCB1aW50MzJfdCB2MikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2Nh
dGlvbiwgdjAsIHYxLCB2Mik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aShpbnQzMl90IGxv
Y2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2
MykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRl
eCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgs
IHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2
b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVp
bnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBz
dHJpZGUsIG9mZnNldCk7CisgICAgfQorICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHModWludDMy
X3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWlu
dDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
cmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBk
cmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5j
aWwpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobV9jb250ZXh0LT5jcmVhdGVRdWVyeSgpKTsKKyAgICB9CisgICAgdm9pZCBkZWxl
dGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
UXVlcnkocXVlcnkpOworICAgIH0KKyAgICB2b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQtPmlzUXVlcnkocXVlcnkpKTsKKyAg
ICB9CisgICAgdm9pZCBiZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSk7Cisg
ICAgfQorICAgIHZvaWQgZW5kUXVlcnkodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5lbmRRdWVyeSh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5KHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobV9jb250ZXh0LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKSk7CisgICAgfQorICAgIHZv
aWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY29udGV4
dC0+Y3JlYXRlU2FtcGxlcigpKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQz
Ml90IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2Ft
cGxlcik7CisgICAgfQorICAgIHZvaWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQtPmlzU2FtcGxlcihzYW1wbGVyKSk7Cisg
ICAgfQorICAgIHZvaWQgYmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxl
cikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7
CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWlu
dDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNh
bXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0
IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9jb250ZXh0LT5jcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjaygpKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFj
ayh1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3Jt
RmVlZGJhY2soaWQpOworICAgIH0KKyAgICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMy
X3QgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQtPmlzVHJhbnNmb3Jt
RmVlZGJhY2soaWQpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2sodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymlu
ZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpOworICAgIH0KKyAgICB2b2lkIGJlZ2luVHJh
bnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsKKyAgICB9Cisg
ICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1G
ZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBhdXNlVHJhbnNmb3JtRmVlZGJh
Y2soKTsKKyAgICB9CisgICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAg
IHZvaWQgYmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgYnVmZmVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0
YXJnZXQsIGluZGV4LCBidWZmZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90
IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1
ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5p
Zm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQt
PmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
X2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2Nr
SW5kZXgpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tC
aW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtQmxvY2tCaW5kaW5nKHBy
b2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkpOworICAgIH0KKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3Jj
WDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3Qg
ZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQz
Ml90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNy
Y1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAgICB9Cisg
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRl
VmVydGV4QXJyYXlPRVMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpKTsKKyAgICB9CisgICAgdm9p
ZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAg
fQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNWZXJ0ZXhBcnJheU9F
UyhhcmcwKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFy
ZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4
QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcw
KSk7CisgICAgfQorICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1hcmtl
ckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nIGFy
ZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBN
YXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQo
KTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9k
ZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIGRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOworICAgIH0KKyAgICB2
b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2
aXNvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0
dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvcik7CisgICAgfQorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA5OTExMWE3ODkwYjU3ODVmNGUxMDYyZDY4
ODIwNjU0N2Q1MjUwM2JkLi43ODNmNDI3MTM3ZDIxNWI2ZmIxNGE2MjUzMThjNTEyYTM2ZmM2OTA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxMyw2ICsy
MTMsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
ICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMnLAogICAg
ICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDEsNiArMjQyLDcgQEAgZGVmIHR5
cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpEb3dubG9hZElE
JywKICAgICAgICAgJ1dlYktpdDo6R2VvbG9jYXRpb25JZGVudGlmaWVyJywKKyAgICAgICAgJ1dl
YktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29u
dGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAzMzc5
NTk2YmU2OWQ5MjRhZTBjYTZkOGY5ZjFmZmIwMWIyMGMzZDZjLi5kZmY1ZWVhYjM2YTA3MmI0Mzdi
NjM1NDk2ZWIwYzg5ZWRkZTFhN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMyNDIsNCArMzI0Miw2MiBAQCBPcHRpb25hbDxSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VEYXRhPj46OgogICAgIHJldHVybiB7IFdURk1vdmUoKnJlc3VsdCkgfTsKIH0KIAorI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQordm9pZCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMpCit7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFscGhhOworICAgIGVuY29kZXIgPDwg
YXR0cmlidXRlcy5kZXB0aDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc3RlbmNpbDsKKyAg
ICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYW50aWFsaWFzOworICAgIGVuY29kZXIgPDwgYXR0cmli
dXRlcy5wcmVtdWx0aXBsaWVkQWxwaGE7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZXNl
cnZlRHJhd2luZ0J1ZmZlcjsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQ
ZXJmb3JtYW5jZUNhdmVhdDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJl
bmNlOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5zaGFyZVJlc291cmNlczsKKyAgICBlbmNv
ZGVyIDw8IGF0dHJpYnV0ZXMuaXNXZWJHTDI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLm5v
RXh0ZW5zaW9uczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsK
KyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5jZTsKKyNpZiBF
TkFCTEUoV0VCWFIpCisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZTsKKyNl
bmRpZgorfQorCitPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFscGhhKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMuZGVwdGgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zdGVuY2lsKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVm
ZmVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBv
d2VyUHJlZmVyZW5jZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaXNXZWJH
TDIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXR0cmlidXRlcy5ub0V4dGVuc2lvbnMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5jZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy54ckNvbXBhdGlibGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlm
CisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBD
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGFi
Y2EwMjQwYjZkYTk0ZjgzNTg1YmFmMTljYjQ5NmIwOWI5MmI4ZTMuLjU3NTc2ZjQxYjY0MDI5MjUz
ZmUwOTA0NGVhNTRlMTNhMGFlMzVkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC03MSw2ICs3MSwxMCBAQAogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzR3RrLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBN
YWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIwNywxMCBAQCBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3Ry
aW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczsKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNvcmQ7CkBA
IC04NzMsNiArODgxLDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogfTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCit0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTA0MSw0ICsxMDU2LDE1IEBA
IHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQ
U3RhdHVzPiB7CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTFBvd2VyUHJlZmVyZW5jZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMg
PAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNl
CisgICAgPjsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmZTg0
OTJiOGQyZWY1NzRlNzlkMzMwZGFjZmMwMTRjZDBjMWNhYTkuLjRmOGE3NmVmZTY2ZDI3ZWRhYTk4
NTJlOGY3OTE5ZmFhZDcwYTBkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTUsNiArMTU1LDkgQEAgdm9pZCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgc2hvdWxkQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzOwogICAgIGVu
Y29kZXIgPDwgc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzczsKICAgICBlbmNvZGVyIDw8
IHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzczsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAg
ZW5jb2RlciA8PCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzczsKKyNlbmRpZgogICAgIGVu
Y29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5RGVjb2RlcjsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVu
YWJsZVZQOVNXRGVjb2RlcjsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBAIC00OTQs
NiArNDk3LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcykpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggYjU2NTI5M2RiODJjZDIyZmY4OTVmMzdlNTA0MzY3YTBiZjUz
MWNlYy4uYTIyYzA4N2QxZTc1NzI1ZjZhYjJjNWQ2OWJlNTljODM5OWRiMjE2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI3
LDYgKzIyNyw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29s
IHNob3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91
bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFJl
bmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAg
IGJvb2wgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAg
ICAgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNob3Vs
ZEVuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggZmZlOTc4N2RlYWU1NDc1MjY3MzZlMjExMDA0MmIwYjlmOGRj
MDgwMS4uMmNiMDE3MTdmMDg4MGMwODQ3MjRjNDdkMGJhODBhNzRiZGIwMWU5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0yNSw2ICsyNSw3IEBAIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCkBAIC02ODIsMyArNjgzLDUgQEAgV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwCisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDk5YmVhMWZiNTllOTZkNmEwMGVmMWJiYTA4YTcy
NGIxZjI4ODcwMDQuLmY2NWYyZjVlYWMwMGYxYzc2M2RhNjA1MTExYTQzNmI3OGE4YTJhYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTYzLDYgKzYzLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9j
b2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KIEdQVVByb2Nlc3MvbWVkaWEvaW9z
L1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkubW0KIAorCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKIAogUGxh
dGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNv
Y29hLmNwcApAQCAtNTcxLDYgKzU3Miw3IEBAIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCiBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50
U2VydmljZUVudHJ5UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCkBAIC02ODIsNiArNjg0LDcg
QEAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyNjE3ZmRmYTYyZmI1OGZmZTNl
ZWQwNjQxZWZiYzg1YmM3ZTZiMWRmLi4wYjdlZTM0MGVkODk1YmJhYjQxYWExYjEwYWY2ZjRhOGZj
ZDUwMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUy
OSw3ICs1MjksNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdl
Q2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgIHVwZGF0ZUFjdGl2aXR5
U3RhdGUoKTsKICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAgICAgdXBkYXRlSGlkZGVuUGFn
ZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCk7Ci0gICAgCisKICNpZiBIQVZFKE9VVF9PRl9QUk9D
RVNTX0xBWUVSX0hPU1RJTkcpCiAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbV9hY3Rpdml0eVN0
YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyA/IFdlYlBhZ2VQcm94eTo6cGFnZUNsaWVu
dCgpLnZpZXdMYXllckhvc3RpbmdNb2RlKCkgOiBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nl
c3M7CiAjZW5kaWYKQEAgLTU1NCw3ICs1NTQsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6
OnNldERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUobV9wcmVmZXJlbmNlcy0+ZGlzYWJsZVNjcmVl
blNpemVPdmVycmlkZSgpKTsKLSAgICAKKwogICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VzKCktPnNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZygpKQog
ICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vzcygp
OwogI2VuZGlmCkBAIC02NjksNyArNjY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByZWZl
cmVuY2VzKFdlYlByZWZlcmVuY2VzJiBwcmVmZXJlbmNlcykKIAogICAgIHByZWZlcmVuY2VzRGlk
Q2hhbmdlKCk7CiB9Ci0gICAgCisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRIaXN0b3J5Q2xpZW50
KFVuaXF1ZVJlZjxBUEk6Okhpc3RvcnlDbGllbnQ+JiYgaGlzdG9yeUNsaWVudCkKIHsKICAgICBt
X2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGllbnQpOwpAQCAtNzQ1LDcgKzc0NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKICAgICAgICAgbV9maW5kQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisK
ICAgICBtX2ZpbmRDbGllbnQgPSBXVEZNb3ZlKGZpbmRDbGllbnQpOwogfQogCkBAIC0xMDMyLDcg
KzEwMzIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFBy
b2Nlc3NGb3JSZWxvYWQoKQogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBBU1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpOwogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3Vy
cmVudEl0ZW0oKSA/IFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCBtX2JhY2tGb3J3YXJk
TGlzdC0+Y3VycmVudEl0ZW0oKS0+dXJsKCkpIH0gOiBSZWdpc3RyYWJsZURvbWFpbiB7IH07CiAg
ICAgbGF1bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6
Q3Jhc2gpOwpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3AKIAog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIGxhdW5jaFByb2Nl
c3NGb3JSZWxvYWQoKTsKLSAgICAKKwogICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlv
blN0YXRlLT5jcmVhdGVSZWxvYWROYXZpZ2F0aW9uKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50
SXRlbSgpKTsKIAogICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewpAQCAtMjMyMiw3ICsyMzIyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNv
bW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGEKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwog
ICAgIH0pOwogfQotICAgIAorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5k
KGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCiB7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWdub3JlU3BlbGxpbmdDb21tYW5kTmFt
ZShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiaWdub3JlU3BlbGxpbmciKSk7CkBAIC0yMzcwLDcg
KzIzNzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkK
IAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVkaXRhYmxlKGVkaXRhYmxlKSk7CiB9
Ci0gICAgCisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZWRpYVN0cmVhbUNhcHR1cmVNdXRlZChi
b29sIG11dGVkKQogewogICAgIGlmIChtdXRlZCkKQEAgLTI0OTMsNyArMjQ5Myw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRTdGFydERyYWcoKQogICAgIGRpc2NhcmRRdWV1ZWRNb3VzZUV2ZW50
cygpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJhZygpKTsKIH0KLSAg
ICAKKwogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdDYW5jZWxsZWQoKQogewogICAgIGlmIChoYXNS
dW5uaW5nUHJvY2VzcygpKQpAQCAtMjU3Nyw3ICsyNTc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZU1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAg
aWYgKG1fbW91c2VFdmVudFF1ZXVlLnNpemUoKSA9PSAxKSAvLyBPdGhlcndpc2UsIGNhbGxlZCBm
cm9tIERpZFJlY2VpdmVFdmVudCBtZXNzYWdlIGhhbmRsZXIuCiAgICAgICAgIHByb2Nlc3NOZXh0
UXVldWVkTW91c2VFdmVudCgpOwogfQotICAgIAorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vz
c05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CkBAIC0yNjg2LDcgKzI2ODYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9hcmRF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIExP
RyhLZXlIYW5kbGluZywgIldlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9hcmRFdmVudDogJXMiLCB3
ZWJLZXlib2FyZEV2ZW50VHlwZVN0cmluZyhldmVudC50eXBlKCkpKTsKIAogICAgIG1fa2V5RXZl
bnRRdWV1ZS5hcHBlbmQoZXZlbnQpOwpAQCAtMzA0Nyw3ICszMDQ3LDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgUG9saWN5RGVjaXNpb25TZW5kZXIo
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlbmRGdW5jdGlvbiBzZW5kRnVuY3Rp
b24pCiAgICAgICAgIDogbV9zZW5kRnVuY3Rpb24oV1RGTW92ZShzZW5kRnVuY3Rpb24pKQpAQCAt
MzI1MCw3ICszMjUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNp
b24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogICAgICAgICBoYW5kbGVE
b3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOwogICAgICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3Bv
bnNlUmVxdWVzdCA9IHsgfTsKICAgICB9Ci0gICAgCisKICAgICBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXNEYXRhOwogICAgIGlmICh3ZWJzaXRlUG9saWNpZXMp
CiAgICAgICAgIHdlYnNpdGVQb2xpY2llc0RhdGEgPSB3ZWJzaXRlUG9saWNpZXMtPmRhdGEoKTsK
QEAgLTM1MjEsNyArMzUyMSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1RleHRab29t
KCkgY29uc3QKIAogICAgIHJldHVybiB0cnVlOwogfQotIAorCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0VGV4dFpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiB7CiAgICAgaWYgKG1fdGV4dFpv
b21GYWN0b3IgPT0gem9vbUZhY3RvcikKQEAgLTM3NDIsNyArMzc0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c1Zl
cnRpY2FsU2Nyb2xsCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsaXN0ZW5Gb3JMYXlvdXRNaWxl
c3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXMpCi17
ICAgIAorewogICAgIGlmIChtaWxlc3RvbmVzID09IG1fb2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVz
KQogICAgICAgICByZXR1cm47CiAKQEAgLTM4MDYsNyArMzgwNiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRSdWJiZXJCYW5kc0F0Qm90dG9tKGJvb2wgcnViYmVyQmFuZHNBdEJvdHRvbSkKIHsK
ICAgICBtX3J1YmJlckJhbmRzQXRCb3R0b20gPSBydWJiZXJCYW5kc0F0Qm90dG9tOwogfQotICAg
IAorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGJv
b2wgZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKQogewogICAgIGlmIChlbmFibGVWZXJ0aWNh
bFJ1YmJlckJhbmRpbmcgPT0gbV9lbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpCkBAIC0zODE4
LDEyICszODE4LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFbmFibGVWZXJ0aWNhbFJ1YmJl
ckJhbmRpbmcoYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpCiAgICAgICAgIHJldHVybjsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRp
bmcoZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKSk7CiB9Ci0gICAgCisKIGJvb2wgV2ViUGFn
ZVByb3h5Ojp2ZXJ0aWNhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2VuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZzsKIH0KLSAgICAKKwogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKGJvb2wgZW5hYmxlSG9y
aXpvbnRhbFJ1YmJlckJhbmRpbmcpCiB7CiAgICAgaWYgKGVuYWJsZUhvcml6b250YWxSdWJiZXJC
YW5kaW5nID09IG1fZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpCkBAIC0zODM1LDcgKzM4
MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRp
bmcoYm9vbCBlbmFibGVIb3Jpem9udGFsUnViYmVyQgogICAgICAgICByZXR1cm47CiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5h
YmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpKTsKIH0KLSAgICAKKwogYm9vbCBXZWJQYWdlUHJv
eHk6Omhvcml6b250YWxSdWJiZXJCYW5kaW5nSXNFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9lbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZzsKQEAgLTM5MTAsOSArMzkxMCw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGJvb2wgbGlu
ZUdyaWRFbmFibGVkKQogewogICAgIGlmIChsaW5lR3JpZEVuYWJsZWQgPT0gbV9wYWdpbmF0aW9u
TGluZUdyaWRFbmFibGVkKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBtX3BhZ2luYXRp
b25MaW5lR3JpZEVuYWJsZWQgPSBsaW5lR3JpZEVuYWJsZWQ7Ci0gICAgCisKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCkpOwpA
QCAtNDAzMCw3ICs0MDMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QKICAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVy
bmFsUmVwcmVzZW50YXRpb24iX3MpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSk7CiB9CkBAIC00MDQx
LDcgKzQwNDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJh
bWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICBjYWxsYmFja0Z1
bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZSJfcykpOwog
ICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJ
RCgpLCBjYWxsYmFja0lEKSk7CkBAIC00MDgyLDcgKzQwODIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhYwogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6
OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5
OjpnZXRCeXRlY29kZVByb2ZpbGUiX3MpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxs
YmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpKTsKQEAgLTQwOTQsNyArNDA5NCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCJfcykpOwogICAgIG1fbG9hZERl
cGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpKTsKQEAg
LTQxMTksNyArNDExOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRl
bnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAgICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyJfcykpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CiB9CkBAIC00MTMwLDcgKzQxMzAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYgogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxw
dHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAorCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEiX3MpKTsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNh
bGxiYWNrSUQpKTsKIH0KQEAgLTQxNDEsNyArNDE0MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248
dm9pCiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6VW5rbm93bik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUiX3MpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lE
KSk7CiB9CkBAIC00MTUyLDcgKzQxNTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUEk6OlVSTCogcmVzbwogICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25v
d24pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZSJfcykpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291
cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5nKCks
IGNhbGxiYWNrSUQpKTsKIH0KQEAgLTQxNjMsNyArNDE2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9p
ZCAoQVBJCiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6
Z2V0V2ViQXJjaGl2ZU9mRnJhbWUiX3MpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSk7CiB9CkBA
IC00MTg2LDcgKzQxODYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0
cjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFjay0+aW52YWxp
ZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotICAgIAorCiAgICAgICAgIGNhbGxBZnRlck5leHRQcmVz
ZW50YXRpb25VcGRhdGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoZXJy
b3IpOwpAQCAtNDI2MCw3ICs0MjYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVN1
YmZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgICAgICByZXR1cm47CiAKICAgICBN
RVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT5jYW5DcmVhdGVGcmFtZShmcmFtZUlE
KSk7Ci0gICAgCisKICAgICBhdXRvIHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKCp0
aGlzLCBmcmFtZUlEKTsKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8gdGhlIHByb2Nlc3Mgd2lk
ZSBtYXAuCkBAIC00OTE1LDcgKzQ5MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZwogICAg
ICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0VGl0bGUodHJhbnNhY3Rpb24sIHRpdGxlKTsKIAogICAg
IGZyYW1lLT5kaWRDaGFuZ2VUaXRsZSh0aXRsZSk7Ci0gICAgCisKICAgICBtX3BhZ2VMb2FkU3Rh
dGUuY29tbWl0Q2hhbmdlcygpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC00
OTUzLDcgKzQ5NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVhY2hMYXlvdXRNaWxlc3Rv
bmUoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbAogCiAgICAgaWYgKGxheW91
dE1pbGVzdG9uZXMuY29udGFpbnMoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KSkKICAg
ICAgICAgcGFnZUNsaWVudCgpLmNsZWFyU2FmZUJyb3dzaW5nV2FybmluZ0lmRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbigpOwotICAgIAorCiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBt
X2xvYWRlckNsaWVudC0+ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoKnRoaXMsIGxheW91dE1pbGVz
dG9uZXMpOwogICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFu
Z2UoKnRoaXMsIGxheW91dE1pbGVzdG9uZXMpOwpAQCAtNTEwNiw3ICs1MTA2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXMKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2hv
dWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQgPSBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFp
blJlc3VsdDo6WWVzOwogI2VuZGlmCi0gICAgCisKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJl
ZihmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92ZShz
ZW5kZXIpLCBuYXZpZ2F0aW9uLCBmcmFtZUluZm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCldIChQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
UmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmREb21haW4pIG11dGFibGUg
ewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uOiBsaXN0ZW5lciBjYWxsZWQ6IGZyYW1lSUQ6ICVsbHUsIG5hdmln
YXRpb25JRDogJWxsdSwgcG9saWN5QWN0aW9uOiAldSwgc2FmZUJyb3dzaW5nV2FybmluZzogJWQs
IGlzQXBwQm91bmREb21haW46ICVkIiwgZnJhbWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZp
Z2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5
QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3VuZERvbWFpbik7CiAKQEAg
LTUyMzUsMTEgKzUyMzUsMTEgQEAgV2ViUGFnZVByb3h5KiBXZWJQYWdlUHJveHk6Om5vbkVwaGVt
ZXJhbFdlYlBhZ2VQcm94eSgpCiAgICAgYXV0byBwcm9jZXNzUG9vbHMgPSBXZWJQcm9jZXNzUG9v
bDo6YWxsUHJvY2Vzc1Bvb2xzKCk7CiAgICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IHBy
b2Nlc3NQb29sc1swXTsKICAgICBpZiAoIXByb2Nlc3NQb29sKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKKwogICAgIGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IHByb2Nlc3NQb29sLT5w
cm9jZXNzZXMoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiB3ZWJQcm9jZXNzLT5wYWdl
cygpKSB7CiAgICAgICAgICAgICBpZiAocGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkK
QEAgLTUyNTQsNyArNTI1NCw3IEBAIFdlYlBhZ2VQcm94eSogV2ViUGFnZVByb3h5Ojpub25FcGhl
bWVyYWxXZWJQYWdlUHJveHkoKQogdm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlv
bihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkws
IGJvb2wgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICAKKwogICAgIGF1dG8gc291cmNlVVJMID0gcmVkaXJlY3RVUkw7
CiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gIXJlZGlyZWN0VVJMLmlzTnVsbCgpOwogICAgIGlmICgh
aXNSZWRpcmVjdCkgewpAQCAtNTI2MiwxNSArNTI2MiwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwm
IHBhZwogICAgICAgICBpZiAoc291cmNlVVJMLmlzTnVsbCgpKQogICAgICAgICAgICAgc291cmNl
VVJMID0gcGFnZVVSTDsKICAgICB9Ci0gICAgCisKICAgICBhdXRvJiB0YXJnZXRVUkwgPSByZXF1
ZXN0LnVybCgpOwotICAgIAorCiAgICAgaWYgKCF0YXJnZXRVUkwuaXNWYWxpZCgpIHx8ICFwYWdl
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgYXV0byB0YXJnZXRI
b3N0ID0gdGFyZ2V0VVJMLmhvc3QoKTsKICAgICBhdXRvIG1haW5GcmFtZUhvc3QgPSBwYWdlVVJM
Lmhvc3QoKTsKLSAgICAKKwogICAgIGlmICh0YXJnZXRIb3N0LmlzRW1wdHkoKSB8fCBtYWluRnJh
bWVIb3N0LmlzRW1wdHkoKSB8fCB0YXJnZXRIb3N0ID09IHNvdXJjZVVSTC5ob3N0KCkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNTM0Miw3ICs1MzQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWUKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CiAKICAgICB9Ci0gICAgICAgIAorCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCkBAIC01Mzcy
LDcgKzUzNzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICBhdXRvIHNlbmRl
ciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3dlYlBhZ2VJRCwg
ZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2VzcyldIChjb25zdCBh
dXRvJiBwb2xpY3lEZWNpc2lvbikgewogICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQs
IHBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAg
ICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdl
dCgpLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVC
cm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykp
OwogICAgIGlmIChtX3BvbGljeUNsaWVudCkKQEAgLTU0MTQsNyArNTQxNCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYgdXJsLCBDb250ZW50
UnVsZUxpc3RSZXN1bHRzCiB7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92ZShyZXN1bHRzKSk7CiB9
Ci0gICAgCisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQpCiB7CiAgICAgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgc3RvcmUsIGZyYW1lSUQpOwpAQCAtNTQ0OCw3ICs1NDQ4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MKIAogICAgIGlmIChzb3VyY2VVUkxTdHJpbmcuaXNFbXB0eSgp
IHx8IGRlc3RpbmF0aW9uVVJMU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNL
KHByb2Nlc3MsIGZyYW1lLT5wYWdlKCkgPT0gdGhpcyk7CkBAIC01NDc1LDcgKzU0NzUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcwogCiAgICAgaWYgKHNvdXJjZVVSTFN0cmluZy5pc0VtcHR5
KCkgfHwgZGVzdGluYXRpb25VUkxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hF
Q0socHJvY2VzcywgZnJhbWUtPnBhZ2UoKSA9PSB0aGlzKTsKQEAgLTU1NTAsNyArNTU1MCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIFdlYlBhCiAgICAgICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1Bh
Z2UoKnRoaXMsIFdURk1vdmUod2luZG93RmVhdHVyZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b24pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9Ci0gICAgCisKIHZv
aWQgV2ViUGFnZVByb3h5OjpzaG93UGFnZSgpCiB7CiAgICAgbV91aUNsaWVudC0+c2hvd1BhZ2Uo
dGhpcyk7CkBAIC01NzYzLDcgKzU3NjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NyZWVuVG9S
b290Vmlldyhjb25zdCBJbnRQb2ludCYgc2NyZWVuUG9pbnQsIE1lc3NhZ2VzOjpXZWJQYQogewog
ICAgIHJlcGx5KHBhZ2VDbGllbnQoKS5zY3JlZW5Ub1Jvb3RWaWV3KHNjcmVlblBvaW50KSk7CiB9
Ci0gICAgCisKIHZvaWQgV2ViUGFnZVByb3h5Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJl
Y3QmIHZpZXdSZWN0LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICByZXBseShwYWdlQ2xpZW50KCkucm9vdFZpZXdU
b1NjcmVlbih2aWV3UmVjdCkpOwpAQCAtNTg3NSw3ICs1ODc1LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEm
IHJlcXVlc3QKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcmVmZXJlbmNlcy0+Y29u
dGFjdFBpY2tlckFQSUVuYWJsZWQoKSk7CiAgICAgcGFnZUNsaWVudCgpLnNob3dDb250YWN0UGlj
a2VyKHJlcXVlc3REYXRhLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9Ci0gICAgCisK
IHZvaWQgV2ViUGFnZVByb3h5OjpwcmludEZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKCFtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKTsKQEAgLTU4OTUsMTIgKzU4OTUs
MTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkKIHsK
ICAgICBpZiAodm9sdW1lID09IG1fbWVkaWFWb2x1bWUpCiAgICAgICAgIHJldHVybjsKLSAgICAK
KwogICAgIG1fbWVkaWFWb2x1bWUgPSB2b2x1bWU7Ci0gICAgCisKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVtZSkpOwogfQogCkBAIC02MjA0LDcgKzYyMDQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiYmCiAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gV1RG
TW92ZShjbGllbnQpOwogfQogI2VuZGlmCi0gICAgCisKICNpZiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6
cGxheWJhY2tTZXNzaW9uTWFuYWdlcigpCiB7CkBAIC02MzIyLDcgKzYzMjIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oV2ViVW5kb1N0ZXBJRCBjb21t
YW5kSUQsIGNvbnN0IFN0cgogewogICAgIHJlZ2lzdGVyRWRpdENvbW1hbmQoV2ViRWRpdENvbW1h
bmRQcm94eTo6Y3JlYXRlKGNvbW1hbmRJRCwgbGFiZWwsICp0aGlzKSwgVW5kb09yUmVkbzo6VW5k
byk7CiB9Ci0gICAgCisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3Rlckluc2VydGlvblVuZG9H
cm91cGluZygpCiB7CiAjaWYgVVNFKElOU0VSVElPTl9VTkRPX0dST1VQSU5HKQpAQCAtNjQ1Myw3
ICs2NDUzLDcgQEAgTmF0aXZlV2ViTW91c2VFdmVudCogV2ViUGFnZVByb3h5OjpjdXJyZW50bHlQ
cm9jZXNzZWRNb3VzZURvd25FdmVudCgpCiAKICAgICBpZiAobV9tb3VzZUV2ZW50UXVldWUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIGF1dG8mIGV2ZW50
ID0gbV9tb3VzZUV2ZW50UXVldWUuZmlyc3QoKTsKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IFdl
YkV2ZW50OjpUeXBlOjpNb3VzZURvd24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjU4
MSw3ICs2NTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiAgICAgaWYgKGl0ZW0uYWN0aW9u
KCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSkgewog
ICAgICAgICBUZXh0Q2hlY2tlcjo6c2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxl
ZCghVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkKTsKICAgICAgICAgbV9wcm9jZXNzLT51cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7Ci0gICAg
ICAgIHJldHVybjsgICAgICAgIAorICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpdGVt
LmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKSB7CiAgICAg
ICAgIFRleHRDaGVja2VyOjp0b2dnbGVTdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKTsKQEAg
LTY1OTAsNyArNjU5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogI2VuZGlmCiAgICAgaWYg
KGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaykg
ewogICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQobV93ZWJzaXRlRGF0
YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53
ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwpKTsKLSAgICAgICAgcmV0dXJu
OyAgICAKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBD
b250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0
VGVzdFJlc3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVz
dWx0RGF0YSgpOwpAQCAtNjcxOCw3ICs2NzE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENh
bmNlbEZvck9wZW5QYW5lbCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5lbCgpKTsKLSAgICAKKwogICAgIG1fb3BlblBh
bmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExp
c3RlbmVyID0gbnVsbHB0cjsKIH0KQEAgLTczMTMsNyArNzMxMyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHVwZGF0ZUJhY2tpbmdTdG9y
ZURpc2NhcmRhYmxlU3RhdGUoKTsKIAogICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0Rp
ZEJlY29tZVJlc3BvbnNpdmUoKnRoaXMpOwpAQCAtNzU5Nyw3ICs3NTk3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKICNl
bmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAgICAgcmVzZXRTcGVl
Y2hTeW50aGVzaXplcigpOwogI2VuZGlmCkBAIC03Nzg2LDcgKzc3ODYsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nl
c3NQcm94eSYgcHJvYwogI2Vsc2UKICAgICBwYXJhbWV0ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25R
dWlya0VuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN1cHBvcnQgaU9TIHRvbywgYnV0IHRoZXJlIGlzIG5vIGlz
QXBwbGVNYWlsIGZvciBpT1MuCiAgICAgcGFyYW1ldGVycy5hcHBsZU1haWxMaW5lc0NsYW1wRW5h
YmxlZCA9IGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkKCk7CkBAIC03ODUxLDYgKzc4NTEsMTAg
QEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1l
dGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVW
aWRlb0luVUlQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS5jYXB0dXJlVmlkZW9JblVJUHJvY2Vzc0Vu
YWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2VzcyA9
IHByZWZlcmVuY2VzKCkuY2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51
c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCgpOworI2lmIEVOQUJMRShXRUJH
TCkKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzID0gcHJlZmVy
ZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCk7CisjZW5kaWYKKwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2Rl
ckVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkKICAgICBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2Rl
ckVuYWJsZWQoKSAmJiAoIVdlYkNvcmU6OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVmZXJlbmNl
cygpLnZwOVNXRGVjb2RlckVuYWJsZWRPbkJhdHRlcnkoKSk7CkBAIC04MTM5LDcgKzgxNDMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24odWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbgogCiAgICAgYXV0byBvcmlnaW4gPSBBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0cmluZyk7CiAgICAgYXV0byByZXF1
ZXN0ID0gbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVz
dChyZXF1ZXN0SUQpOwotICAgIAorCiAgICAgbV91aUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKnRoaXMsIG9yaWdpbi5nZXQoKSwgW3JlcXVlc3Qg
PSBXVEZNb3ZlKHJlcXVlc3QpXShib29sIGFsbG93ZWQpIHsKICAgICAgICAgaWYgKGFsbG93ZWQp
CiAgICAgICAgICAgICByZXF1ZXN0LT5hbGxvdygpOwpAQCAtODM1Nyw3ICs4MzYxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxi
YWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2sp
KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZy
YW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBwcmludGlu
Z1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKQEAgLTgzNjks
NyArODM3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluCiAgICAgICAgIGNhbGxiYWNrLT5p
bnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
VG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNhbGxiYWNr
SUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24p
KTsKQEAgLTg2MzksNyArODY0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQaW5u
aW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiB7CiAgICAgaWYgKG1f
c2Nyb2xsUGlubmluZ0JlaGF2aW9yID09IHBpbm5pbmcpCiAgICAgICAgIHJldHVybjsKLSAgICAK
KwogICAgIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yID0gcGlubmluZzsKIAogICAgIGlmIChoYXNS
dW5uaW5nUHJvY2VzcygpKQpAQCAtODcwMCw3ICs4NzA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgs
IGNvbnMKIAogICAgIGlmIChhdXRvIGFwaVN0cmluZyA9IG1fbmF2aWdhdGlvbkNsaWVudC0+c2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKCp0aGlzLCBrZXlTaXplSW5kZXgsIEFQSTo6
U3RyaW5nOjpjcmVhdGUoY2hhbGxlbmdlU3RyaW5nKSwgdXJsKSkKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKGFwaVN0cmluZy0+c3RyaW5nKCkpOwotICAgIAorCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKIH0KIApAQCAtOTA5OSwxMiArOTEwMywxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQogewogICAgIHBhZ2VDbGllbnQo
KS5kaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpOwogfQotICAgIAorCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VXNlU3lzdGVtQXBwZWFyYW5jZShib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UpCi17
ICAgIAorewogICAgIGlmICh1c2VTeXN0ZW1BcHBlYXJhbmNlID09IG1fdXNlU3lzdGVtQXBwZWFy
YW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgbV91c2VTeXN0ZW1BcHBlYXJhbmNl
ID0gdXNlU3lzdGVtQXBwZWFyYW5jZTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
QEAgLTkxMTIsNyArOTExNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VTeXN0ZW1BcHBl
YXJhbmNlKGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSkKIAogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFVzZVN5c3RlbUFwcGVhcmFuY2UodXNlU3lzdGVtQXBwZWFyYW5jZSkpOwogfQot
ICAgIAorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGlu
ZyhpbnQgaGVpZ2h0KQogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEhlYWRlckJh
bm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSk7CkBAIC05MjU0LDcgKzkyNTgsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Y2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoKSk7CiB9CiAKQEAg
LTkzNTgsNyArOTM2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlckxvY2so
KQogICAgIH0KICAgICBtX3VpQ2xpZW50LT5yZXF1ZXN0UG9pbnRlckxvY2sodGhpcyk7CiB9Ci0g
ICAgCisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBbGxvd1BvaW50ZXJMb2NrKCkKIHsKICAgICBB
U1NFUlQobV9pc1BvaW50ZXJMb2NrUGVuZGluZyAmJiAhbV9pc1BvaW50ZXJMb2NrZWQpOwpAQCAt
OTM3MCw3ICs5Mzc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEFsbG93UG9pbnRlckxvY2so
KQogI2VuZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQWNxdWlyZVBvaW50ZXJM
b2NrKCkpOwogfQotICAgIAorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVueVBvaW50ZXJMb2Nr
KCkKIHsKICAgICBBU1NFUlQobV9pc1BvaW50ZXJMb2NrUGVuZGluZyAmJiAhbV9pc1BvaW50ZXJM
b2NrZWQpOwpAQCAtOTU0Nyw3ICs5NTUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgUmVmUHRyPFMKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwog
ICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoYml0bWFwKQogICAg
ICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwpAQCAtOTkxNiw3ICs5OTIwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKQogewogICAgIGlmICgh
bV9zcGVlY2hTeW50aGVzaXNEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBhdXRv
JiBzeW50aGVzaXNEYXRhID0gc3BlZWNoU3ludGhlc2lzRGF0YSgpOwogICAgIHN5bnRoZXNpc0Rh
dGEuc3BlYWtpbmdGaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKICAgICBzeW50
aGVzaXNEYXRhLnNwZWFraW5nU3RhcnRlZENvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ0
MDZlOWI2ZTdlNmY0YTAzNjJlNmM1NmJiODQ5YmZlYmVjOGMwYzcuLjZhZDc3MTIzZTgzZDIwZDE0
OTU2MjRiMzFmNjA5MmUwNTI5NjE5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDI3NSw2ICs0Mjc1LDE1IEBACiAJCTdBRkJEMzY1
MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmg7IHBhdGggPSBDbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2RDIxRTU0NkUz
MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW5j
eVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZFMjFFNTQ2RTMw
MDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcnNp
c3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBCMTI1
NEMzNjkwMDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dl
bmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVu
Y3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI2
MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NjI1NEFG
REVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY4MjU0QUZF
QTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZEMjU1MDEw
OEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5
NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMy
RDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAv
KiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODE0OCw5ICs4MTU3LDE0IEBACiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8q
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYw
OTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLAogCQkJCTU1MDY0
MEEwMjQwNzE5RTEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJNzJCNTMxNTcyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
cHAgKi8sCiAJCQkJNzJCNTMxNTgyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5oICovLAogCQkJCTU1MDY0MDlGMjQwNzE5NkEwMEFBRTA0NSAvKiBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllci5oICovLAorCQkJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLywKKwkJCQk3QjY0QzBCMTI1NEMzNjkwMDAw
NkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC04MTY1LDYgKzgxNzksMTAgQEAKIAkJCQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUg
LyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiAqLywKIAkJCQk3MjZENTZERDI1
M0E2NDgxMDAwMkVGOTAgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8sCiAJCQkJNzI2RDU2
REUyNTNBNjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLywKKwkJCQk3Qjkw
NDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAor
CQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
ICovLAorCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gZ3JhcGhpY3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU5MDQ4YTZiMTc1YWI2MTI2Yjlk
MjlhZTRlMDE5ZGJhYjJjYzUzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgKQEAgLTAs
MCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZmMxMDNmN2ZkYmI1ZTg5NmIwNzdjMGYzZTA3ODEwZTNmOTZiZGI0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4gUmVmUHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0
ZXMpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMpCisgICAgOiBQbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJp
YnV0ZXMpCit7CisgICAgLy8gUmVnaXN0ZXIgaXRzZWxmIGFzIGEgTWVzc2FnZVJlY2VpdmVyIGlu
IHRoZSBHUFVQcm9jZXNzQ29ubmVjdGlvbi4KKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYg
bWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2
ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLnRvVUludDY0KCksICp0aGlzKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAgICAvLyBVbi1y
ZWdpc3RlciBpdHNlbGYgYXMgYSBNZXNzYWdlUmVjZWl2ZXIuCisgICAgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVz
c2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7CisKKyAgICAvLyBS
ZWxlYXNlIHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC4KKyAgICBzZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCiti
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRGb3JXYXNDcmVhdGVkKCkKK3sK
KyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CisgICAgcmV0
dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkPihtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJ
ZlN5bmNNZXNzYWdlQXJyaXZlcyk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzQ3JlYXRlZCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Qz
YjcxMzNlOWIzOGFjNTY1NzJmYzY2ZDA1ZjViYzk4MmFjNTI2NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CisgICAgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KKyAg
ICAsIHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
KTsKKworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCk7CisKKyAgICAvLyBJUEM6
Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICBib29sIHdhaXRGb3JXYXND
cmVhdGVkKCk7CisKKyAgICB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7CisKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmgiCisKK3ByaXZhdGU6CisgICAgdm9pZCB3
YXNDcmVhdGVkKCk7CisKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworCisgICAgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDE4
NGEyOGExNDI5ZTFhY2QxZjY0YjFlYjNkM2NiNmQwNWU4OGMyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJl
ZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZCgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYmNkMThkZGQ3OGRhYzVhZDZhMzBlNjg4OTJiYzZjMjMxNmRl
YzRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAg
LTAsMCArMSw5MTUgQEAKKworLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisKKy8vIFRoaXMgZmlsZSBzaG91bGQg
YmUgaW5jbHVkZWQgaW4gdGhlIHB1YmxpYyBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eSBpbXBsZW1lbnRhdGlvbnMuCisjcHJhZ21hIG9uY2UKKworICAgIHZv
aWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5hbAorICAgIHsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4
dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBh
dHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNo
YWRlcikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgYmluZEZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJp
bmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4
dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4
dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwg
R0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbAorICAgIHsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kQ29sb3IocmVkLCBn
cmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRp
b24obW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9p
ZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFs
cGhhKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jKEdD
R0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpIGZpbmFsCisgICAgeworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNmYWN0b3Is
IGRmYWN0b3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZv
aWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdD
R0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkgZmluYWwKKyAgICB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmNTZXBhcmF0
ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIH0KKyAgICBHQ0dMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdDR0xlbnVtIHRhcmdldCkgZmluYWwKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHJlc3VsdCA9
IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1czo6UmVwbHkocmVzdWx0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsCisgICAgeworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckNv
bG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdD
R0xjbGFtcGYgYWxwaGEpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckRl
cHRoKEdDR0xjbGFtcGYgZGVwdGgpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGlu
dCBzKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFu
IGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb2xvck1h
c2soc3RhdGljX2Nhc3Q8Ym9vbD4ocmVkKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oZ3JlZW4pLCBzdGF0
aWNfY2FzdDxib29sPihibHVlKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYWxwaGEpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBpbGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlcikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwg
eSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9
CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVCdWZmZXIoKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgdWludDMyX3QgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgdWludDMyX3QgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJlc3VsdCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgdWludDMyX3QgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXN1bHQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVSZW5kZXJidWZmZXIoKSBm
aW5hbAorICAgIHsKKyAgICAgICAgdWludDMyX3QgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZl
cigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZl
cjo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
U2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJfdCByZXN1
bHQgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJfdCBy
ZXN1bHQgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB2b2lkIGN1
bGxGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVGcmFtZWJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBm
dW5jKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKSBmaW5hbAorICAg
IHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRo
TWFzayhzdGF0aWNfY2FzdDxib29sPihmbGFnKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xj
bGFtcGYgekZhcikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZXB0aFJhbmdlKHpOZWFyLCB6RmFyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWwKKyAgICB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJn
MCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9p
ZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJh
eXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50KSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRy
YXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbAorICAgIHsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVt
ZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgZW5hYmxlKEdD
R0xlbnVtIGNhcCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGlu
ZGV4KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsCisgICAgewor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmluaXNoKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBmbHVzaCgp
IGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Rmx1c2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAg
ICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0
IGFyZzMpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMywgR0NHTGludCBsZXZlbCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgfQorICAgIHZvaWQgZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFs
CisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RnJvbnRGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQor
ICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbAorICAgIHsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlw
bWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAg
Ym9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgYm9vbCBn
ZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgs
IEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIHZvaWQgZ2V0QXR0
YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50
LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSBmaW5hbCB7ICB9
CisgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNv
bnN0IFN0cmluZyYgbmFtZSkgZmluYWwKKyAgICB7CisgICAgICAgIGludDMyX3QgcmVzdWx0ID0g
eyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uOjpSZXBseShyZXN1bHQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWwgeyAgfQorICAgIFN0cmluZyBnZXRTdHJpbmcoR0NH
TGVudW0gbmFtZSkgZmluYWwKKyAgICB7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSB7IH07Cisg
ICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3Ry
aW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6
UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRJbnRlZ2VydihH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldElu
dGVnZXJpX3YoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMaW50KiB2YWx1ZSkg
ZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0dihHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dDY0KiB2YWx1ZSkgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTGludDY0KiB2YWx1ZSkgZmluYWwgeyAgfQorICAg
IHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dM
ZW51bSBwbmFtZSwgR0NHTGJvb2xlYW4qIHZhbHVlKSBmaW5hbCB7ICB9CisgICAgR0NHTGVudW0g
Z2V0RXJyb3IoKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWludDMyX3QgcmVzdWx0ID0geyB9Owor
ICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVy
cm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3I6OlJlcGx5
KHJlc3VsdCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbCB7ICB9CisgICAgU3RyaW5nIGdldFByb2dyYW1J
bmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIFN0cmlu
ZyByZXN1bHQgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRT
aGFkZXJpdihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2
YWx1ZSkgZmluYWwgeyAgfQorICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSB7IH07Cisg
ICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hh
ZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJJbmZvTG9nOjpSZXBseShyZXN1bHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9u
VHlwZSwgR0NHTGludCogcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWwgeyAgfQorICAg
IFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAg
IHsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3VyY2UoYXJnMCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlOjpSZXBseShyZXN1
bHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbCB7ICB9CisgICAgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWwg
eyAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCogdmFsdWUpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldFVu
aWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
dWludCogdmFsdWUpIGZpbmFsIHsgIH0KKyAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWwKKyAgICB7Cisg
ICAgICAgIGludDMyX3QgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb246OlJl
cGx5KHJlc3VsdCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWwgeyAgfQor
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50KiB2YWx1ZSkgZmluYWwgeyAgfQorICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhB
dHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbAorICAgIHsK
KyAgICAgICAgdWludDY0X3QgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwg
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJp
Yk9mZnNldDo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFf
cyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHJlc3VsdCk7Cisg
ICAgfQorICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFs
CisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SGludCh0YXJnZXQsIG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwK
KyAgICB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXN1bHQpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihyZXN1bHQpOworICAgIH0KKyAgICBHQ0dMYm9vbGVhbiBpc0VuYWJsZWQo
R0NHTGVudW0gY2FwKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSB7IH07Cisg
ICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFi
bGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkOjpS
ZXBseShyZXN1bHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXN1bHQpOworICAgIH0KKyAgICBH
Q0dMYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAg
ICB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmVzdWx0KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVzdWx0KTsKKyAgICB9CisgICAgR0NHTGJvb2xlYW4gaXNQ
cm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wg
cmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1Byb2dyYW06OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxX3MpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlc3Vs
dCk7CisgICAgfQorICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0geyB9OworICAgICAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVm
ZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVm
ZmVyOjpSZXBseShyZXN1bHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXN1bHQpOworICAgIH0K
KyAgICBHQ0dMYm9vbGVhbiBpc1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisg
ICAgeworICAgICAgICBib29sIHJlc3VsdCA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4ocmVzdWx0KTsKKyAgICB9CisgICAgR0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0g
eyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Rl
eHR1cmU6OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3Mp
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlc3VsdCk7CisgICAg
fQorICAgIHZvaWQgbGluZVdpZHRoKEdDR0xmbG9hdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGxpbmtQ
cm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmVp
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBpeGVsU3RvcmVpKHBuYW1lLCBw
YXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBw
b2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykgZmluYWwKKyAg
ICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5
Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
IGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lk
IHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBzY2lzc29yKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFs
CisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKyAgICB2b2lkIHNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAs
IGNvbnN0IFN0cmluZyYgc3RyaW5nKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJjZShhcmcwLCBzdHJpbmcpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1
bmMoR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsCisgICAg
eworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNp
bEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVu
dW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsCisgICAgeworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmNTZXBh
cmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWwKKyAg
ICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVu
Y2lsTWFzayhtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAg
ICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykg
ZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdD
R0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3AoZmFpbCwgemZhaWws
IHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lk
IHN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVt
IHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWls
LCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQor
ICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMZmxvYXQgcGFyYW0pIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0IHgpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGFyZzEsIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWwgeyAgfQor
ICAgIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkgZmluYWwKKyAg
ICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMWkobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYXJnMSwg
Y29uc3QgR0NHTGludCogdikgZmluYWwgeyAgfQorICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWwKKyAgICB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRp
b24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYXJnMSwgY29uc3QgR0NH
TGZsb2F0KiB2KSBmaW5hbCB7ICB9CisgICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4LCBHQ0dMaW50IHkpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0y
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGFyZzEsIGNvbnN0IEdDR0xpbnQqIHYpIGZp
bmFsIHsgIH0KKyAgICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQg
eCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZihsb2NhdGlvbiwgeCwg
eSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcxLCBjb25zdCBHQ0dMZmxv
YXQqIHYpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlvbiwg
eCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcxLCBjb25zdCBHQ0dM
aW50KiB2KSBmaW5hbCB7ICB9CisgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFs
CisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGFyZzEsIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWwgeyAgfQorICAgIHZvaWQgdW5p
Zm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHos
IEdDR0xpbnQgdykgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYXJnMSwgY29uc3QgR0NHTGludCogdikgZmluYWwgeyAg
fQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YXJnMSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5h
bCB7ICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBhcmcxLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUp
IGZpbmFsIHsgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGFyZzEsIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiB2
YWx1ZSkgZmluYWwgeyAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIH0KKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmKGluZGV4LCB4KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBp
bmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHZlcnRl
eEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFs
CisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25z
dCBHQ0dMZmxvYXQqIHZhbHVlcykgZmluYWwgeyAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2Yo
R0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4
LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgZmluYWwgeyAgfQorICAgIHZvaWQgdmVydGV4QXR0
cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0
IHosIEdDR0xmbG9hdCB3KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYjRmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsIHsg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQg
c2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0
cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwg
c2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfQorICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGJ1
ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgR0NHTGVudW0gdXNh
Z2UpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QnVmZmVyRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKSwg
dXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQg
YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lk
KiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgZmluYWwgeyAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwg
Y29uc3Qgdm9pZCogZGF0YSkgZmluYWwgeyAgfQorICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpIGZpbmFsIHsgIH0KKyAgICBib29s
IHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMp
IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSBmaW5hbCB7ICB9CisgICAgdm9pZCBkcmF3QXJy
YXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZp
cnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3Io
aW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQor
ICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXkoKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgdWludDMyX3QgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJlc3VsdCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIH0KKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0geyB9Owor
ICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVy
dGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0
ZXhBcnJheTo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFf
cyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVzdWx0KTsKKyAg
ICB9CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJpbmRWZXJ0ZXhBcnJheShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIH0KKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdD
R0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3Jp
dGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRU
YXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihz
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCog
bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNp
emVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgZmluYWwgeyByZXR1cm4geyB9OyB9
CisgICAgR0NHTGJvb2xlYW4gdW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbAorICAg
IHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5tYXBCdWZmZXIodGFyZ2V0KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbm1hcEJ1ZmZlcjo6UmVwbHkocmVzdWx0KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmVzdWx0KTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZm
ZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBz
cmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGlu
dCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJh
bWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEs
IGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBh
dHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNo
bWVudHMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0qIGF0
dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbCB7ICB9CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykg
ZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZWFkQnVmZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGludCogcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWwKKyAg
ICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9
CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAg
IHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xp
bnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICBHQ0dMaW50IGdldEZyYWdEYXRhTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsCisgICAg
eworICAgICAgICBpbnQzMl90IHJlc3VsdCA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0s
IG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9j
YXRpb246OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3Mp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpIGZpbmFsCisg
ICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQg
djAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYx
LCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7ICB9CisgICAg
dm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgIH0KKyAgICB2
b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWwgeyAgfQorICAgIHZv
aWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7ICB9CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSBmaW5hbCB7ICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7ICB9CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSBmaW5hbCB7ICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7ICB9Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7ICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7ICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgs
IHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGludCogdmFs
dWVzKSBmaW5hbCB7ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbAorICAgIHsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQ
b2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lk
IGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWlu
dCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
IGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dM
ZW51bSogYnVmcykgZmluYWwgeyAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0NHTGludCogdmFsdWVzLCBHQ0dMdWlu
dCBzcmNPZmZzZXQpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFsdWVzLCBHQ0dM
dWludCBzcmNPZmZzZXQpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzLCBH
Q0dMdWludCBzcmNPZmZzZXQpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGlu
dCBzdGVuY2lsKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwg
c3RlbmNpbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgpIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJf
dCByZXN1bHQgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWwKKyAgICB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgR0NHTGJvb2xlYW4g
aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9v
bCByZXN1bHQgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNRdWVyeTo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVzdWx0
KTsKKyAgICB9CisgICAgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0g
dGFyZ2V0KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB9CisgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWludDMyX3QgcmVzdWx0
ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXN1bHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgdm9pZCBnZXRR
dWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQqIHZhbHVlKSBmaW5hbCB7ICB9CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1w
bGVyKCkgZmluYWwKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHJlc3VsdCA9IHsgfTsKKyAgICAg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1w
bGVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcjo6
UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCByZXN1
bHQgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzU2FtcGxlcjo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVzdWx0
KTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxlciksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
aShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFt
KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFy
YW0pIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxv
YXQqIHZhbHVlKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxh
dGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZp
bmFsIHsgIH0KKyAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIEdDR0xib29sZWFuIGlz
U3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbCB7IHJldHVybiB7IH07IH0KKyAgICB2b2lkIGRlbGV0
ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWwgeyAgfQorICAgIEdDR0xlbnVtIGNsaWVudFdhaXRT
eW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0
KSBmaW5hbCB7IHJldHVybiB7IH07IH0KKyAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jIGFyZzAs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsIHsgIH0KKyAgICB2
b2lkIGdldFN5bmNpdihHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbCB7ICB9CisgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJfdCBy
ZXN1bHQgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmVzdWx0KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVj
dCBpZCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgR0NHTGJvb2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFj
ayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCByZXN1bHQg
PSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNUcmFuc2Zvcm1GZWVkYmFjayhpZCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmVzdWx0KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmVzdWx0KTsKKyAgICB9CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbAorICAgIHsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVk
YmFjayh0YXJnZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0K
KyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkg
ZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2so
KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB9CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51
bSBidWZmZXJNb2RlKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5m
byYgYXJnMikgZmluYWwgeyAgfQorICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgfQorICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbAorICAg
IHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICB9CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGlu
ZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQs
IGluZGV4LCBidWZmZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQor
ICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRy
IHNpemUpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgVmVjdG9yPEdDR0x1aW50
PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8
R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50
PiYgcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUp
IGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJfdCByZXN1bHQgPSB7IH07CisgICAgICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2Nr
SW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbAorICAgIHsKKyAgICAg
ICAgU3RyaW5nIHJlc3VsdCA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lOjpSZXBseShyZXN1bHQpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsCisg
ICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2Nr
QmluZGluZyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgIH0KKyAgICB2b2lk
IHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWwgeyAgfQorICAgIHZvaWQg
dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7ICB9CisgICAgdm9pZCB1
bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHVu
aWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHVuaWZv
cm0yaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHVuaWZvcm0z
aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7
ICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWwgeyAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9h
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsg
IH0KKyAgICBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgaW50MzJfdCByZXN1bHQgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkI6OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFO
R0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQg
c3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xp
bnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsCisgICAg
eworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZy
YW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwg
ZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWwKKyAgICB7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgZmluYWwKKyAgICB7Cisg
ICAgICAgIHVpbnQzMl90IHJlc3VsdCA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShy
ZXN1bHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhB
cnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBib29s
IHJlc3VsdCA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHJlc3VsdCk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgU3RyaW5nIGdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgewor
ICAgICAgICBTdHJpbmcgcmVzdWx0ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShh
cmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEU6OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB2b2lkIGluc2Vy
dEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtl
ckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2
b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsCisgICAgewor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3Vw
TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQor
ICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVy
c0VYVChHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpIGZpbmFsIHsgIH0KKyAgICB2
b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsCisgICAgeworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NH
THZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbAorICAgIHsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3Ip
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorICAgIHZvaWQgZ2V0Qm9v
bGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0
QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBkYXRh
KSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IGRhdGEpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
aGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbCB7ICB9
CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9p
ZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldFZlcnRl
eEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWwg
eyAgfQorICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgdm9pZCoqIHBvaW50ZXIpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1
c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3Ms
IHZvaWQqIHBpeGVscykgZmluYWwgeyAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCog
cGl4ZWxzKSBmaW5hbCB7ICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQqIHBhcmFtcykgZmluYWwgeyAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9pZCB0ZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCB2b2lkKiBwaXhlbHMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQq
IGRhdGEpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2
b2lkKiBkYXRhKSBmaW5hbCB7ICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkg
ZmluYWwgeyAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lk
KiBwaXhlbHMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBwaXhlbHMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdl
dFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWwg
eyAgfQorICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIHZvaWQqKiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lk
IGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIGludCogZGF0YSkgZmluYWwg
eyAgfQorICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWwgeyAgfQor
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9p
ZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIGRhdGEpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBh
cmFtcykgZmluYWwgeyAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50KiBwYXJhbSkgZmluYWwgeyAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9pZCBn
ZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldE11
bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpIGZpbmFs
IHsgIH0KKyAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWwgeyAgfQorICAgIHZv
aWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCB2b2lkKiogcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9p
ZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMs
IEdDR0xzaXplaSogcm93cywgdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCkgZmluYWwgeyAgfQorICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldG5V
bmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmlu
YWwgeyAgfQorICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcklp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIHRleFBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWwgeyAgfQorICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbCB7
ICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQq
IHBhcmFtKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpIGZpbmFsIHsgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbCB7ICB9CisgICAgdm9pZCBnZXRR
dWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZp
bmFsIHsgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbCB7ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRl
eCA0MmE1ODViMjNmZmI1YWRiMThlNTA2MDU1NmY2YTgwOTk5ZGE0ZDI5Li4yOWZlZGM3ZDA3ZmQ0
NTNlMGY5M2FlZWIzZWJmYWVjZTA0ODJkYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTY4
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9y
eSopOwogCiAgICAgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFJl
ZjxNZWRpYVN0cmVhbVByaXZhdGU+IG1fc3RyZWFtOworICAgIFJlZjxXZWJDb3JlOjpNZWRpYVN0
cmVhbVByaXZhdGU+IG1fc3RyZWFtOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmlu
Z0J1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMWNkN2FkNzk2MGYzZTVmMmU1M2Nj
YmJjZjlmN2ZmNDM0MDcxNDJmYS4uNDJhOWM5OTk4ZDkwODZmOTM3MDRmODA0YjY2ODQ0NGJkNGQ5
M2UwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEwNSw2ICsxMDUsMTAgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjE0LDcgKzIxOCw3IEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojphc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9u
ZGVyKCkKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBc3Npc3RpdmVU
ZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkpOwogfQogCi0jZW5kaWYgICAgCisjZW5kaWYK
IAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmNhblRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikKIHsK
QEAgLTMyNSw3ICszMjksNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6dG9vbGJhcnNWaXNpYmxl
KCkKICAgICBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2li
aWxpdHkgdG9vbGJhcnNWaXNpYmlsaXR5ID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQo
KS50b29sYmFyc0FyZVZpc2libGUoJm1fcGFnZSk7CiAgICAgaWYgKHRvb2xiYXJzVmlzaWJpbGl0
eSAhPSBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxp
dHk6OlVua25vd24pCiAgICAgICAgIHJldHVybiB0b29sYmFyc1Zpc2liaWxpdHkgPT0gQVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpVSUVsZW1lbnRWaXNpYmlsaXR5OjpWaXNpYmxl
OwotICAgIAorCiAgICAgYm9vbCB0b29sYmFyc0FyZVZpc2libGUgPSB0cnVlOwogICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlKCksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6UmVwbHkodG9vbGJhcnNB
cmVWaXNpYmxlKSwgbV9wYWdlLmlkZW50aWZpZXIoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMzcyLDcgKzM3Niw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSgp
CiAgICAgQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpVSUVsZW1lbnRWaXNpYmls
aXR5IG1lbnViYXJWaXNpYmlsaXR5ID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5t
ZW51QmFySXNWaXNpYmxlKCZtX3BhZ2UpOwogICAgIGlmIChtZW51YmFyVmlzaWJpbGl0eSAhPSBB
UEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHk6OlVu
a25vd24pCiAgICAgICAgIHJldHVybiBtZW51YmFyVmlzaWJpbGl0eSA9PSBBUEk6OkluamVjdGVk
QnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHk6OlZpc2libGU7Ci0gICAg
CisKICAgICBib29sIG1lbnVCYXJJc1Zpc2libGUgPSB0cnVlOwogICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlOjpSZXBseShtZW51QmFySXNWaXNpYmxlKSwgbV9w
YWdlLmlkZW50aWZpZXIoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTkwLDcgKzU5NCw3
IEBAIEludFJlY3QgV2ViQ2hyb21lQ2xpZW50Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJl
Y3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5yb290Vmlld1RvU2NyZWVuKHJl
Y3QpOwogfQotICAgIAorCiBJbnRQb2ludCBXZWJDaHJvbWVDbGllbnQ6OmFjY2Vzc2liaWxpdHlT
Y3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wYWdlLmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KHBvaW50KTsKQEAgLTY2Niw3
ICs2NzAsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6c2hvdWxkVW5hdmFpbGFibGVQbHVnaW5N
ZXNzYWdlQmVCdXR0b24oUmVuZGVyRW1iZWRkZWRPYmplYwogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KLSAgICAKKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJF
bWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24pIGNvbnN0CiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBA
IC03MzIsNyArNzM2LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VR
dW90YShGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKIHsKICAgICBXZWJGcmFt
ZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSk7CiAgICAgQVNTRVJU
KHdlYkZyYW1lKTsKLSAgICAKKwogICAgIGF1dG8mIG9yaWdpbiA9IGZyYW1lLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byYgb3JpZ2luRGF0YSA9IG9yaWdpbi5kYXRhKCk7
CiAgICAgYXV0byYgdHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCk7CkBAIC05
MTUsNiArOTE5LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmCiAgICAgcmV0dXJuIGVuc3Vy
ZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJl
bmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7CiB9CiAKKyNpZiBFTkFC
TEUoV0VCR0wpCisKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIFBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3BhZ2Uuc2hvdWxkVXNlUmVtb3RlV2ViR0woKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2Vu
ZGlmCit9CisKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGlj
c0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBmNTQ3OTRhNjIzNmI1ZTBkNTdi
Zjc3Mzk2YzM2N2RhNjcwZWQ3Y2VkLi5jYWVmOTFlZDQ4ZTNlMzYwMTk1MmE0YTk3Mjc1YzM1OWY1
ODRmMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGVudW0gY2xhc3Mg
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiAKQEAgLTU3LDE1
ICs1OCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVtb3ZlTWVudUl0ZW1FbGVtZW50KFdl
YkNvcmU6OkhUTUxNZW51SXRlbUVsZW1lbnQmKSBmaW5hbDsKIAogICAgIHZvaWQgY2hyb21lRGVz
dHJveWVkKCkgZmluYWw7Ci0gICAgCisKICAgICB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd1Jl
Y3QoKSBmaW5hbDsKLSAgICAKKwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBwYWdlUmVjdCgpIGZp
bmFsOwotICAgIAorCiAgICAgdm9pZCBmb2N1cygpIGZpbmFsOwogICAgIHZvaWQgdW5mb2N1cygp
IGZpbmFsOwotICAgIAorCiAgICAgYm9vbCBjYW5UYWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJl
Y3Rpb24pIGZpbmFsOwogICAgIHZvaWQgdGFrZUZvY3VzKFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9u
KSBmaW5hbDsKIApAQCAtODMsMjggKzg0LDI4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBydW5Nb2Rh
bCgpIGZpbmFsOwogCiAgICAgdm9pZCByZXBvcnRQcm9jZXNzQ1BVVGltZShTZWNvbmRzLCBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIGZpbmFsOwotICAgIAorCiAgICAgdm9p
ZCBzZXRUb29sYmFyc1Zpc2libGUoYm9vbCkgZmluYWw7CiAgICAgYm9vbCB0b29sYmFyc1Zpc2li
bGUoKSBmaW5hbDsKLSAgICAKKwogICAgIHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJsZShib29sKSBm
aW5hbDsKICAgICBib29sIHN0YXR1c2JhclZpc2libGUoKSBmaW5hbDsKLSAgICAKKwogICAgIHZv
aWQgc2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkgZmluYWw7CiAgICAgYm9vbCBzY3JvbGxiYXJz
VmlzaWJsZSgpIGZpbmFsOwotICAgIAorCiAgICAgdm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29s
KSBmaW5hbDsKICAgICBib29sIG1lbnViYXJWaXNpYmxlKCkgZmluYWw7Ci0gICAgCisKICAgICB2
b2lkIHNldFJlc2l6YWJsZShib29sKSBmaW5hbDsKLSAgICAKKwogICAgIHZvaWQgYWRkTWVzc2Fn
ZVRvQ29uc29sZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkgZmluYWw7Ci0gICAgCisKICAgICBib29sIGNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGZpbmFsOwogICAgIGJvb2wgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViQ29yZTo6RnJhbWUmKSBm
aW5hbDsKLSAgICAKKwogICAgIHZvaWQgY2xvc2VXaW5kb3dTb29uKCkgZmluYWw7Ci0gICAgCisK
ICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWUm
LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBib29sIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2Vi
Q29yZTo6RnJhbWUmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVs
dFZhbHVlLCBTdHJpbmcmIHJlc3VsdCkgZmluYWw7CkBAIC0xNDcsNyArMTQ4LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVk
KSBmaW5hbDsKICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCBpbnQ2NF90IHNwYWNlTmVlZGVkKSBmaW5hbDsKLSAgICAK
KwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihXZWJDb3JlOjpDb2xvckNob29z
ZXJDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpIGZpbmFsOwogI2VuZGlmCkBAIC0yNDUs
OCArMjQ2LDEyIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KCkgY29uc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UpIGNvbnN0IGZpbmFsOworI2lmIEVOQUJMRShXRUJHTCkKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOworI2Vu
ZGlmCiAjZW5kaWYKIAorCiAgICAgQ29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBv
c2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzPigKQEAgLTMyNyw3ICszMzIsNyBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkNvbG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCBmaW5hbDsKIAog
ICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKFdlYkNvcmU6OkNv
bG9yKSBjb25zdCBmaW5hbDsKLSAgICAKKwogICAgIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJzQ2hh
bmdlZChib29sKSBmaW5hbDsKIAogICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWw7CkBAIC00MDcsNiArNDEyLDkgQEAgcHJp
dmF0ZToKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9s
bGJhciB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IG1fUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTsKKyNlbmRpZgogI2VuZGlmCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAK
aW5kZXggOTVmY2JlN2M3MzQ2MTNhNzQ5YjZlN2M3Y2M2MjcxODRlNmIxOWFkYy4uMDNjYjcxMGYw
NTk2YmQ2NjMxY2UyY2QxYWQ3NjM1Yjg3ZjRlY2NiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdENvbnRyb2xsZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MjQsMTMgKzUyNSwx
MyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVBcmd1bWVudChJUEM6OkVuY29kZXImIGVuY29kZXIsIEpT
SVBDJiBqc0lQQywgSlNDb250ZXh0UmVmIGNvbgogCiAgICAgaWYgKHR5cGUgPT0gIlJlZ2lzdHJh
YmxlRG9tYWluIikgewogICAgICAgICBpZiAoanNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IFJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9OwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBzdHJpbmcgPSBqc1ZhbHVl
LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24o
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZW5jb2RlciA8PCBSZWdpc3Ry
YWJsZURvbWFpbiB7IFVSTCB7IFVSTCB7IH0sIHN0cmluZyB9IH07CisgICAgICAgIGVuY29kZXIg
PDwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyBVUkwgeyBVUkwgeyB9LCBzdHJpbmcgfSB9
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTVjNmZmN2Y5NzRmZDcwMGVmOGMzN2FiNTMz
MGYxOTM3NmZjNDVkNS4uMmYzZTZjYzE5ZjkwNjdlNWRiZjU4MjI3NTIzNmU1NWYwZDM4NDRjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQy
MCw2ICs0MjAsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX2Fsd2F5c1Nob3dz
SG9yaXpvbnRhbFNjcm9sbGVyIHsgcGFyYW1ldGVycy5hbHdheXNTaG93c0hvcml6b250YWxTY3Jv
bGxlciB9CiAgICAgLCBtX2Fsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciB7IHBhcmFtZXRlcnMu
YWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyIH0KICAgICAsIG1fc2hvdWxkUmVuZGVyQ2FudmFz
SW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3Mg
fQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICAsIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nl
c3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzfQorI2VuZGlmCiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgICwgbV9uZWVkc0luQXBwQnJvd3NlclBy
aXZhY3lRdWlya3MgeyBwYXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB9
CiAjZW5kaWYKQEAgLTU1Myw3ICs1NTYsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxp
Y2F0aW9uTWFuaWZlc3QgPSBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYK
LSAgICAKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlciA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI6OmNyZWF0ZSgqdGhpcyk7
CiAjZW5kaWYKQEAgLTY3Miw3ICs2NzUsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAg
c2V0U2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemUocGFyYW1ldGVycy5zaXplVG9Db250
ZW50QXV0b1NpemVNYXhpbXVtU2l6ZSk7CiAgICAgc2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRv
Vmlld0hlaWdodChwYXJhbWV0ZXJzLmF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQp
OwogICAgIHNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMocGFyYW1ldGVycy52aWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKTsKLSAgICAKKwogICAgIHNldFNjcm9sbFBpbm5p
bmdCZWhhdmlvcihwYXJhbWV0ZXJzLnNjcm9sbFBpbm5pbmdCZWhhdmlvcik7CiAgICAgaWYgKHBh
cmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKQogICAgICAgICBtX3Njcm9sbGJhck92ZXJs
YXlTdHlsZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhck92ZXJsYXlTdHlsZT4ocGFyYW1ldGVycy5z
Y3JvbGxiYXJPdmVybGF5U3R5bGUudmFsdWUoKSk7CkBAIC02ODIsMTIgKzY4NSwxMiBAQCBXZWJQ
YWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiAgICAgc2V0VG9wQ29udGVudEluc2V0KHBhcmFtZXRlcnMudG9w
Q29udGVudEluc2V0KTsKIAogICAgIG1fdXNlckFnZW50ID0gcGFyYW1ldGVycy51c2VyQWdlbnQ7
Ci0gICAgCisKICAgICBpZiAoIXBhcmFtZXRlcnMuaXRlbVN0YXRlcy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJlc3RvcmVTZXNzaW9uSW50ZXJuYWwocGFyYW1ldGVycy5pdGVtU3RhdGVzLCBwYXJhbWV0
ZXJzLml0ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQSVJlcXVlc3QgPyBXYXNSZXN0b3JlZEJ5QVBJ
UmVxdWVzdDo6WWVzIDogV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3Q6Ok5vLCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6T3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMpOwogCiAgICAgbV9kcmF3aW5n
QXJlYS0+ZW5hYmxlUGFpbnRpbmcoKTsKLSAgICAKKwogICAgIHNldE1lZGlhVm9sdW1lKHBhcmFt
ZXRlcnMubWVkaWFWb2x1bWUpOwogCiAgICAgc2V0TXV0ZWQocGFyYW1ldGVycy5tdXRlZCk7CkBA
IC03MjQsNyArNzI3LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBtX3BhZ2Ut
PnNldHRpbmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtl
eVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0
QXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZChwYXJhbWV0ZXJzLmFwcGxlTWFpbFBhZ2lu
YXRpb25RdWlya0VuYWJsZWQpOwotICAgIAorCiAgICAgaWYgKHBhcmFtZXRlcnMudmlld1NjYWxl
RmFjdG9yICE9IDEpCiAgICAgICAgIHNjYWxlVmlldyhwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3Rv
cik7CiAKQEAgLTkxNyw3ICs5MjAsNyBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAgICAgfQogCiAg
ICAgcGxhdGZvcm1EZXRhY2goKTsKLSAgICAKKwogICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNr
ZXIuaW52YWxpZGF0ZSgpOwogCiAgICAgZm9yIChhdXRvKiBwbHVnaW5WaWV3IDogbV9wbHVnaW5W
aWV3cykKQEAgLTkzMyw3ICs5MzYsNyBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAjaWZuZGVmIE5E
RUJVRwogICAgIHdlYlBhZ2VDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCi0gICAgCisKICNp
ZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgaWYgKG1fcGxheWJhY2tTZXNz
aW9uTWFuYWdlcikKICAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5pbnZhbGlkYXRl
KCk7CkBAIC0xMzM4LDcgKzEzNDEsNyBAQCB2b2lkIFdlYlBhZ2U6OmV4ZWN1dGVFZGl0aW5nQ29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZwogICAgICAg
ICBwbHVnaW5WaWV3LT5oYW5kbGVFZGl0aW5nQ29tbWFuZChjb21tYW5kTmFtZSwgYXJndW1lbnQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgZnJhbWUuZWRpdG9yKCkuY29t
bWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZShhcmd1bWVudCk7CiB9CiAKQEAgLTEzODEsMTEgKzEz
ODQsMTEgQEAgYm9vbCBXZWJQYWdlOjppc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lKQogCiAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBmb2N1
c2VkUGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXct
PmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbW1hbmROYW1lKTsKLSAgICAKKwogICAgIEVkaXRv
cjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUuZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSk7
CiAgICAgcmV0dXJuIGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSAmJiBjb21tYW5kLmlzRW5hYmxlZCgp
OwogfQotICAgIAorCiB2b2lkIFdlYlBhZ2U6OmNsZWFyTWFpbkZyYW1lTmFtZSgpCiB7CiAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpKQpAQCAtMTY3NCw3ICsxNjc3LDcgQEAgdm9p
ZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0
ZXJzKQogICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxl
VVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy51
bnJlYWNoYWJsZVVSTFN0cmluZyk7CiAgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0g
bG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8g
VVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJM
U3RyaW5nKTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwg
bG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwotICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlz
aW9uYWxMb2FkRXJyb3JVUkwpOyAgICAKKyAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHByb3Zpc2lvbmFs
TG9hZEVycm9yVVJMKTsKICAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlv
bklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUo
bG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBs
b2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNl
VVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQYXJhbWV0
ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgIG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwo
eyB9KTsKIH0KQEAgLTE4NTcsNyArMTg2MCw3IEBAIHZvaWQgV2ViUGFnZTo6c2Nyb2xsTWFpbkZy
YW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNlCiAg
ICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXctPnNjcm9sbFBvc2l0
aW9uKCk7CiAgICAgU2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uID0gZnJhbWVW
aWV3LT5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKTsKIAotICAgIC8vIElmIHRoZSBjdXJyZW50IHNj
cm9sbCBwb3NpdGlvbiBpbiBhIGRpcmVjdGlvbiBpcyB0aGUgbWF4IHNjcm9sbCBwb3NpdGlvbiAK
KyAgICAvLyBJZiB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gaW4gYSBkaXJlY3Rpb24gaXMg
dGhlIG1heCBzY3JvbGwgcG9zaXRpb24KICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIHNjcm9sbCBh
dCBhbGwuCiAgICAgSW50U2l6ZSBuZXdTY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHNjcm9sbFBvc2l0
aW9uLngoKSA8IG1heGltdW1TY3JvbGxQb3NpdGlvbi54KCkpCkBAIC0xOTc2LDE5ICsxOTc5LDE5
IEBAIHN0YXRpYyB2b2lkIGR1bXBIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgc2l6ZV90
IGluZGVudCwgYm9vbCBpc0N1cnJlbnRJdGVtCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoc3RhcnQpKTsKICAgICB9IGVsc2UKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQodXJsLnN0cmluZygpKTsKLSAgICAKKwogICAgIGF1dG8mIHRhcmdl
dCA9IGl0ZW0udGFyZ2V0KCk7CiAgICAgaWYgKHRhcmdldC5sZW5ndGgoKSkgewogICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoaW4gZnJhbWUgXCIiKTsKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQodGFyZ2V0KTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJcIikiKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoaXRlbS5pc1RhcmdldEl0ZW0o
KSkKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICoqbmF2IHRhcmdldCoq
Iik7Ci0gICAgCisKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAKKwogICAg
IFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiBjaGlsZHJlbjsKICAgICBjaGlsZHJlbi5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGl0ZW0uY2hpbGRyZW4oKS5zaXplKCkpOwogICAgIGZvciAoYXV0byYg
Y2hpbGQgOiBpdGVtLmNoaWxkcmVuKCkpCkBAIC0yMDA2LDcgKzIwMDksNyBAQCBTdHJpbmcgV2Vi
UGFnZTo6ZHVtcEhpc3RvcnlGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byYgbGlzdCA9IG1fcGFnZS0+YmFja0ZvcndhcmQo
KTsKLSAgICAKKwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBpbnQgYmVnaW4gPSAt
bGlzdC5iYWNrQ291bnQoKTsKICAgICBpZiAobGlzdC5pdGVtQXRJbmRleChiZWdpbiktPnVybCgp
ID09IGFib3V0QmxhbmtVUkwoKSkKQEAgLTIyNzUsMTIgKzIyNzgsMTIgQEAgdm9pZCBXZWJQYWdl
OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMp
CiB7CiAgICAgbV9wYWdlLT5zZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3Vw
cHJlc3NBbmltYXRpb25zKTsKIH0KLSAgICAKKwogdm9pZCBXZWJQYWdlOjpzZXRFbmFibGVWZXJ0
aWNhbFJ1YmJlckJhbmRpbmcoYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpCiB7CiAg
ICAgbV9wYWdlLT5zZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoZW5hYmxlVmVydGljYWxSdWJi
ZXJCYW5kaW5nID8gU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQgOiBTY3JvbGxFbGFzdGljaXR5Tm9u
ZSk7CiB9Ci0gICAgCisKIHZvaWQgV2ViUGFnZTo6c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJh
bmRpbmcoYm9vbCBlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZykKIHsKICAgICBtX3BhZ2Ut
PnNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KGVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5k
aW5nID8gU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWQgOiBTY3JvbGxFbGFzdGljaXR5Tm9uZSk7CkBA
IC0yNjAzLDcgKzI2MDYsNyBAQCBXZWJDb250ZXh0TWVudSogV2ViUGFnZTo6Y29udGV4dE1lbnVB
dFBvaW50SW5XaW5kb3coY29uc3QgSW50UG9pbnQmIHBvaW50KQogfQogI2VuZGlmCiAKLS8vIEV2
ZW50cyAKKy8vIEV2ZW50cwogCiBzdGF0aWMgY29uc3QgV2ViRXZlbnQqIGdfY3VycmVudEV2ZW50
ID0gMDsKIApAQCAtMzI2OSw3ICszMjcyLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVJc0luV2lu
ZG93KGJvb2wgaXNJbml0aWFsU3RhdGUpCiAgICAgaWYgKCFpc0luV2luZG93KSB7CiAgICAgICAg
IG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyLnN0b3AoKTsKICAgICAgICAgbV9wYWdlLT5zZXRDYW5T
dGFydE1lZGlhKGZhbHNlKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gVGhlIFdlYlByb2Nlc3Mg
ZG9lcyBub3QgeWV0IGtub3cgYWJvdXQgdGhpcyBwYWdlOyBubyBuZWVkIHRvIHRlbGwgaXQgd2Un
cmUgbGVhdmluZyB0aGUgd2luZG93LgogICAgICAgICBpZiAoIWlzSW5pdGlhbFN0YXRlKQogICAg
ICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFnZVdpbGxMZWF2ZVdpbmRvdyhtX2lk
ZW50aWZpZXIpOwpAQCAtMzMxMyw3ICszMzE2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0
eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3QK
ICAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+PiBjdXJy
ZW50bHlDaGFuZ2luZ0FjdGl2aXR5U3RhdGUgeyBtX2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdlcywg
Y2hhbmdlZCB9OwogICAgICAgICBtX3BhZ2UtPnNldEFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0
ZSk7CiAgICAgfQotICAgIAorCiAgICAgZm9yIChhdXRvKiBwbHVnaW5WaWV3IDogbV9wbHVnaW5W
aWV3cykKICAgICAgICAgcGx1Z2luVmlldy0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2Vk
KTsKIApAQCAtMzQ1NCwxNCArMzQ1NywxNCBAQCBJbnRQb2ludCBXZWJQYWdlOjpzY3JlZW5Ub1Jv
b3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICBzZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTY3JlZW5Ub1Jvb3RWaWV3KHBvaW50KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2NyZWVuVG9Sb290Vmlldzo6UmVwbHkod2luZG93UG9pbnQpKTsKICAgICByZXR1cm4gd2lu
ZG93UG9pbnQ7CiB9Ci0gICAgCisKIEludFJlY3QgV2ViUGFnZTo6cm9vdFZpZXdUb1NjcmVlbihj
b25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFJlY3Qgc2NyZWVuUmVjdDsKICAgICBzZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuKHJlY3QpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvU2NyZWVuOjpSZXBseShzY3JlZW5SZWN0KSk7
CiAgICAgcmV0dXJuIHNjcmVlblJlY3Q7CiB9Ci0gICAgCisKIEludFBvaW50IFdlYlBhZ2U6OmFj
Y2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAg
ICBJbnRQb2ludCB3aW5kb3dQb2ludDsKQEAgLTM5MTAsNyArMzkxMyw3IEBAIHZvaWQgV2ViUGFn
ZTo6bGF5b3V0SWZOZWVkZWQoKQogewogICAgIG1fcGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKIH0K
LSAgICAKKwogdm9pZCBXZWJQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogewogICAgIG1fcGFnZS0+
dXBkYXRlUmVuZGVyaW5nKCk7CkBAIC00MDg2LDcgKzQwODksNyBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNv
bnN0IFdlYgogICAgICAgICBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFn
RGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKFdURjo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25l
LCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAg
IGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlBlcmZvcm1EcmFnT3BlcmF0aW9uOiB7CiAgICAg
ICAgIEFTU0VSVCghbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24pOwogCkBAIC00MTUyLDcg
KzQxNTUsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdDYW5jZWxsZWQoKQogICAgIG1faXNTdGFydGlu
Z0RyYWcgPSBmYWxzZTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRy
YWdDYW5jZWxsZWQoKTsKIH0KLSAgICAKKwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAKIFdlYlVuZG9TdGVwKiBXZWJQYWdlOjp3ZWJVbmRvU3RlcChXZWJVbmRvU3RlcElEIHN0ZXBJ
RCkKQEAgLTQ1MDUsNyArNDUwOCw3IEBAIHZvaWQgV2ViUGFnZTo6Y2FwaXRhbGl6ZVdvcmQoKQog
ICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9y
KCkuY2FwaXRhbGl6ZVdvcmQoKTsKIH0KICNlbmRpZgotICAgIAorCiB2b2lkIFdlYlBhZ2U6OnNl
dFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBpbmRleCkKIHsKICAgICBpZiAoIW1fYWN0
aXZlUG9wdXBNZW51KQpAQCAtNDU4Niw3ICs0NTg5LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVN
YWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCkKIAogICAgIGlmIChpc1Bpbm5lZFRvTGVmdFNp
ZGUgIT0gbV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvTGVmdFNpZGUgfHwgaXNQaW5uZWRUb1Jp
Z2h0U2lkZSAhPSBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGUgfHwgaXNQaW5u
ZWRUb1RvcFNpZGUgIT0gbV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvVG9wU2lkZSB8fCBpc1Bp
bm5lZFRvQm90dG9tU2lkZSAhPSBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9Cb3R0b21TaWRl
KSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ2hhbmdlU2Nyb2xs
T2Zmc2V0UGlubmluZ0Zvck1haW5GcmFtZShpc1Bpbm5lZFRvTGVmdFNpZGUsIGlzUGlubmVkVG9S
aWdodFNpZGUsIGlzUGlubmVkVG9Ub3BTaWRlLCBpc1Bpbm5lZFRvQm90dG9tU2lkZSkpOwotICAg
ICAgICAKKwogICAgICAgICBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9MZWZ0U2lkZSA9IGlz
UGlubmVkVG9MZWZ0U2lkZTsKICAgICAgICAgbV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvUmln
aHRTaWRlID0gaXNQaW5uZWRUb1JpZ2h0U2lkZTsKICAgICAgICAgbV9jYWNoZWRNYWluRnJhbWVJ
c1Bpbm5lZFRvVG9wU2lkZSA9IGlzUGlubmVkVG9Ub3BTaWRlOwpAQCAtNDY1NCw3ICs0NjU3LDcg
QEAgdm9pZCBXZWJQYWdlOjp3aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBGbG9hdFJl
Y3QmIHdpbmRvd0ZyYW1lSW5TY3JlZW5Db28KICAgICBtX3dpbmRvd0ZyYW1lSW5VbmZsaXBwZWRT
Y3JlZW5Db29yZGluYXRlcyA9IHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRl
czsKICAgICBtX3ZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMgPSB2aWV3RnJhbWVJbldpbmRv
d0Nvb3JkaW5hdGVzOwogICAgIG1fYWNjZXNzaWJpbGl0eVBvc2l0aW9uID0gYWNjZXNzaWJpbGl0
eVZpZXdDb29yZGluYXRlczsKLSAgICAKKwogICAgIC8vIFRlbGwgYWxsIG91ciBwbHVnLWluIHZp
ZXdzIHRoYXQgdGhlIHdpbmRvdyBhbmQgdmlldyBmcmFtZXMgaGF2ZSBjaGFuZ2VkLgogICAgIGZv
ciAoYXV0byogcGx1Z2luVmlldyA6IG1fcGx1Z2luVmlld3MpCiAgICAgICAgIHBsdWdpblZpZXct
PndpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGVuY2xvc2luZ0ludFJlY3Qod2luZG93RnJhbWVJ
blNjcmVlbkNvb3JkaW5hdGVzKSwgZW5jbG9zaW5nSW50UmVjdCh2aWV3RnJhbWVJbldpbmRvd0Nv
b3JkaW5hdGVzKSk7CkBAIC00NzE4LDcgKzQ3MjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZAogfQogCiB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKLXsgICAKK3sKICAgICBkaWRSZWNlaXZlU3luY1dl
YlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKQEAg
LTUzODAsNyArNTM4Myw3IEBAIEZyYW1lVmlldyogV2ViUGFnZTo6bWFpbkZyYW1lVmlldygpIGNv
bnN0CiB7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpKQogICAgICAgICByZXR1
cm4gZnJhbWUtPnZpZXcoKTsKLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC01
NDY5LDcgKzU0NzIsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbgogICAgICAgICAgICAgcmVw
bGFjZXNUZXh0ID0gcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubGVuZ3RoOwogICAgICAgICB9CiAg
ICAgfQotICAgIAorCiAgICAgaWYgKG9wdGlvbnMucmVnaXN0ZXJVbmRvR3JvdXApCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBp
bmcoKSk7CiAKQEAgLTYwMTIsNyArNjAxNSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9h
ZChXZWJGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpOwogI2VuZGlmCi0gICAgCisKICAg
ICAvLyBJZiBwcmV2aW91cyBVUkwgaXMgaW52YWxpZCwgdGhlbiBpdCdzIG5vdCBhIHJlYWwgcGFn
ZSB0aGF0J3MgYmVpbmcgbmF2aWdhdGVkIGF3YXkgZnJvbS4KICAgICAvLyBNb3N0IGxpa2VseSwg
dGhpcyBpcyBhY3R1YWxseSB0aGUgZmlyc3QgbG9hZCB0byBiZSBjb21taXR0ZWQgaW4gdGhpcyBw
YWdlLgogICAgIGlmIChmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByZXZpb3VzVVJMKCku
aXNWYWxpZCgpKQpAQCAtNjA1Nyw3ICs2MDYwLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRM
b2FkKFdlYkZyYW1lKiBmcmFtZSkKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKICAgICByZXNl
dFZpZXdwb3J0RGVmYXVsdENvbmZpZ3VyYXRpb24oZnJhbWUpOwogICAgIGNvbnN0IEZyYW1lKiBj
b3JlRnJhbWUgPSBmcmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgCisKICAgICBib29sIHZpZXdwb3J0
Q2hhbmdlZCA9IGZhbHNlOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3Ry
ZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkgPDwgIiBkaWRDb21t
aXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNv
bnRlbnRzU2l6ZSgpKTsKQEAgLTYxNzgsNyArNjE4MSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGV0ZXJt
aW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGltZXJGaXJlZCgpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IG1f
cGFnZS0+c2V0dGluZ3MoKTsKICAgICBpZiAoIXNldHRpbmdzLnNuYXBzaG90QWxsUGx1Z0lucygp
ICYmIHNldHRpbmdzLnByaW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVuYWJsZWQoKSkKICAg
ICAgICAgZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKCk7CkBAIC02NDQzLDcgKzY0
NDYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNp
ZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogCiAgICAgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlw
dEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbiA9IHdlYnNpdGVQb2xpY2llcy5hbGxvd3NDb250ZW50
SmF2YVNjcmlwdDsKICAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2Fk
ZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCAqZG9jdW1lbnRMb2FkZXIpOwotICAgIAorCiAj
aWYgRU5BQkxFKFZJREVPKQogICAgIG1fcGFnZS0+dXBkYXRlTWVkaWFFbGVtZW50UmF0ZUNoYW5n
ZVJlc3RyaWN0aW9ucygpOwogI2VuZGlmCkBAIC02NDc4LDcgKzY0ODEsNyBAQCB2b2lkIFdlYlBh
Z2U6OnN0b3BFeHRlbmRpbmdJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKHVuc2lnbmVk
IHRva2VuKQogCiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnNldFZpc3VhbFVwZGF0
ZXNBbGxvd2VkQnlDbGllbnQoIXNob3VsZEV4dGVuZEluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb24oKSk7CiB9Ci0gICAgCisKIHZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2
aW9yKHVpbnQzMl90IHBpbm5pbmcpCiB7CiAgICAgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IgPSBz
dGF0aWNfY2FzdDxTY3JvbGxQaW5uaW5nQmVoYXZpb3I+KHBpbm5pbmcpOwpAQCAtNjY2Niw3ICs2
NjY5LDcgQEAgdm9pZCBXZWJQYWdlOjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9w
dGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmUKIAogICAgIC8vIFRoZSBkcmF3aW5nIGFy
ZWEgbWlnaHQgd2FudCB0byBkZWZlciBkaXNwYXRjaCBvZiBkaWRMYXlvdXQgdG8gdGhlIFVJIHBy
b2Nlc3MuCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEpIHsKLSAgICAgICAgc3RhdGljIGF1dG8gcGFp
bnRNaWxlc3RvbmVzID0gT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4geyBEaWRI
aXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkLCBEaWRGaXJzdEZsdXNoRm9y
SGVhZGVyTGF5ZXIsIERpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRl
cmluZywgRGlkUmVuZGVyU2lnbmlmaWNhbnRBbW91bnRPZlRleHQsIERpZEZpcnN0TWVhbmluZ2Z1
bFBhaW50IH07ICAgCisgICAgICAgIHN0YXRpYyBhdXRvIHBhaW50TWlsZXN0b25lcyA9IE9wdGlv
blNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IHsgRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRP
YmplY3RzQXJlYVRocmVzaG9sZCwgRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyLCBEaWRGaXJz
dFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcsIERpZFJlbmRlclNpZ25p
ZmljYW50QW1vdW50T2ZUZXh0LCBEaWRGaXJzdE1lYW5pbmdmdWxQYWludCB9OwogICAgICAgICBh
dXRvIGRyYXdpbmdBcmVhUmVsYXRlZE1pbGVzdG9uZXMgPSBtaWxlc3RvbmVzICYgcGFpbnRNaWxl
c3RvbmVzOwogICAgICAgICBpZiAoZHJhd2luZ0FyZWFSZWxhdGVkTWlsZXN0b25lcyAmJiBtX2Ry
YXdpbmdBcmVhLT5hZGRNaWxlc3RvbmVzVG9EaXNwYXRjaChkcmF3aW5nQXJlYVJlbGF0ZWRNaWxl
c3RvbmVzKSkKICAgICAgICAgICAgIG1pbGVzdG9uZXMucmVtb3ZlKGRyYXdpbmdBcmVhUmVsYXRl
ZE1pbGVzdG9uZXMpOwpAQCAtNjc1MywxMCArNjc1NiwxMCBAQCB2b2lkIFdlYlBhZ2U6OnVybFNj
aGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIs
IHVpbgogewogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRs
ZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsK
LSAgICAKKwogICAgIGhhbmRsZXItPnRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odGFza0lkZW50
aWZpZXIsIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KLSAgICAKKwog
dm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhh
bmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRv
VVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CkBAIC02OTEx
LDcgKzY5MTQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MoRnJhbWVJZGVudGlmaWVyIGZyYW1lSQogICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzKGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgbWF5UHJvbXB0KSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2VuZGlmCi0gICAgCisKIHZvaWQgV2Vi
UGFnZTo6c2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dTaGFyZVNoZWV0KFdU
Rk1vdmUoc2hhcmVEYXRhKSksIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTcyMzUsNiArNzIzOCwx
MyBAQCBib29sIFdlYlBhZ2U6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQ
dXJwb3NlIHB1cnBvc2UpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxFKFdFQkdM
KQorYm9vbCBXZWJQYWdlOjpzaG91bGRVc2VSZW1vdGVXZWJHTCgpCit7CisgICAgcmV0dXJuIG1f
c2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShN
RURJQV9VU0FHRSkKIHZvaWQgV2ViUGFnZTo6YWRkTWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9uKE1l
ZGlhU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVu
dGlmaWVyLCBjb25zdCBVUkwmIHBhZ2VVUkwpCiB7CkBAIC03MjY0LDcgKzcyNzQsNyBAQCB2b2lk
IFdlYlBhZ2U6OmFuaW1hdGlvbkRpZEZpbmlzaEZvckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxl
bWVudCYpCiB2b2lkIFdlYlBhZ2U6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBmcmFtZS0+c2V0SXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKLSAgICAKKwogICAg
IG1fbmF2aWdhdGlvbkhhc09jY3VyZWQgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjQ1MDU0NDU2MGQ5NWFkYWY4MTA0OTZmMDhi
YmRhOTc0MjUxZDQwOS4uYWRkMWJlMWUzN2IxYTIyYmI0ZTcxYWFjZmE5MTU5YzZhZTNlYmM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTE4LDcg
KzUxOCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xp
Y3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKTsKICAgICBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CiAj
ZW5kaWYKLSAgICAKKwogICAgIGVudW0gY2xhc3MgU2hvdWxkUGVyZm9ybUxheW91dCB7IERlZmF1
bHQsIFllcyB9OwogICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1MYXlv
dXQgPSBTaG91bGRQZXJmb3JtTGF5b3V0OjpEZWZhdWx0KSBjb25zdDsKICAgICB2b2lkIHVwZGF0
ZUVkaXRvclN0YXRlQWZ0ZXJMYXlvdXRJZkVkaXRhYmlsaXR5Q2hhbmdlZCgpOwpAQCAtNTY5LDEw
ICs1NjksMTAgQEAgcHVibGljOgogICAgIHZvaWQgbGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhP
cHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CiAKICAgICB2b2lkIHNldFN1cHBy
ZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sKTsKLSAgICAKKwogICAgIHZvaWQgc2V0RW5hYmxl
VmVydGljYWxSdWJiZXJCYW5kaW5nKGJvb2wpOwogICAgIHZvaWQgc2V0RW5hYmxlSG9yaXpvbnRh
bFJ1YmJlckJhbmRpbmcoYm9vbCk7Ci0gICAgCisKICAgICB2b2lkIHNldEJhY2tncm91bmRFeHRl
bmRzQmV5b25kUGFnZShib29sKTsKIAogICAgIHZvaWQgc2V0UGFnaW5hdGlvbk1vZGUodWludDMy
X3QgLyogV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSAqLyk7CkBAIC01ODAsNyArNTgwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UGFnZUxlbmd0aChkb3VibGUpOwogICAgIHZvaWQgc2V0R2Fw
QmV0d2VlblBhZ2VzKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFi
bGVkKGJvb2wpOwotICAgIAorCiAgICAgdm9pZCBwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJik7CiAKICAgICB2b2lkIHNl
dFVuZGVybGF5Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fdW5kZXJsYXlD
b2xvciA9IGNvbG9yOyB9CkBAIC02MTcsNyArNjE3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KE1BQykKICAgICB2b2lkIHNldFRvcE92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqKTsKICAgICB2b2lk
IHNldEJvdHRvbU92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqKTsKLSAgICAKKwogICAgIHZvaWQgc2V0
VXNlU3lzdGVtQXBwZWFyYW5jZShib29sKTsKIAogICAgIHZvaWQgZGlkRW5kTWFnbmlmaWNhdGlv
bkdlc3R1cmUoKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhpZGVQ
YWdlQmFubmVycygpOwogICAgIHZvaWQgc2hvd1BhZ2VCYW5uZXJzKCk7Ci0gICAgCisKICAgICB2
b2lkIHNldEhlYWRlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaW50KTsKICAgICB2b2lkIHNldEZv
b3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaW50KTsKICNlbmRpZgpAQCAtNjQ1LDcgKzY0NSw3
IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpOwogICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlT
Y3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgV2ViQ29yZTo6
SW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jik7Ci0gICAgCisKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNjYWxlZFNuYXBzaG90V2l0aE9w
dGlvbnMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGRvdWJsZSBhZGRpdGlvbmFsU2NhbGVGYWN0
b3IsIFNuYXBzaG90T3B0aW9ucyk7CiAKICAgICBzdGF0aWMgY29uc3QgV2ViRXZlbnQqIGN1cnJl
bnRFdmVudCgpOwpAQCAtNjk1LDcgKzY5NSw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgb3ZlcnJpZGVTY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgaW50MzJfdCBkZXZpY2VPcmll
bnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb247IH0KICAgICB2b2lk
IGRpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKGJvb2wpOwotICAgIAorCiAgICAgYm9vbCBzY3JlZW5J
c0JlaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlbklzQmVpbmdDYXB0dXJlZDsg
fQogICAgIHZvaWQgc2V0U2NyZWVuSXNCZWluZ0NhcHR1cmVkKGJvb2wpOwogCkBAIC04NzMsNyAr
ODczLDcgQEAgcHVibGljOgogICAgIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIGFjY2Vz
c2liaWxpdHlSZW1vdGVPYmplY3QoKTsKICAgICBOU09iamVjdCAqYWNjZXNzaWJpbGl0eU9iamVj
dEZvck1haW5GcmFtZVBsdWdpbigpOwogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFj
Y2Vzc2liaWxpdHlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eVBvc2l0
aW9uOyB9Ci0gICAgCisKICAgICB2b2lkIHNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4odWlu
dDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4
dElucHV0KTsKIAogICAgIHZvaWQgc2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYpOwpAQCAtMTA0
NSw3ICsxMDQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFyZHdhcmVLZXlib2FyZElzQXR0YWNo
ZWQoKSBjb25zdCB7IHJldHVybiBtX2tleWJvYXJkSXNBdHRhY2hlZDsgfQogCiAgICAgdm9pZCB1
cGRhdGVTdHJpbmdGb3JGaW5kKGNvbnN0IFN0cmluZyYpOwotICAgIAorCiAgICAgYm9vbCBjYW5T
aG93V2hpbGVMb2NrZWQoKSBjb25zdCB7IHJldHVybiBtX2NhblNob3dXaGlsZUxvY2tlZDsgfQog
I2VuZGlmCiAKQEAgLTExNDksNyArMTE0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0Qnl0
ZWNvZGVQcm9maWxlKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChDYWxsYmFja0lEKTsKLSAgICAKKwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8
fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCiAgICAgdm9pZCBoYW5kbGVUZWxl
cGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShHQU1FUEFEKQogICAgIHZvaWQgZ2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3Rv
cjxHYW1lcGFkRGF0YT4mLCBXZWJDb3JlOjpFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKTsKICNl
bmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICB2b2lkIGRpZEFjcXVp
cmVQb2ludGVyTG9jaygpOwogICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CkBA
IC0xMjQzLDcgKzEyNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KFdl
YkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNv
cmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKTsKLSAgICAKKwogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBl
bmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQpOwpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3SW50ZXJhY3Rpb25Cb3Vu
ZHNGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmKTsKIAogICAgIEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uIHBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3QmKTsKLSAgICAKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTEzNjIsNyArMTM2Miw5IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29y
ZTo6UmVuZGVyaW5nUHVycG9zZSk7Ci0KKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBzaG91
bGRVc2VSZW1vdGVXZWJHTCgpOworI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1VTQUdFKQogICAg
IHZvaWQgYWRkTWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9uKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgdXBkYXRlTWVk
aWFVc2FnZU1hbmFnZXJTZXNzaW9uU3RhdGUoV2ViQ29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6TWVkaWFVc2FnZUluZm8mKTsKQEAgLTE2NzUsNyArMTY3Nyw3IEBA
IHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZERpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNX
aGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBwbGF0Zm9ybURpZFNlbGVj
dEFsbCgpOwotICAgIAorCiAgICAgdm9pZCBzZXRIYXNSZXNvdXJjZUxvYWRDbGllbnQoYm9vbCk7
CiAgICAgdm9pZCBzZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sKTsKIApAQCAtMTgyMiw3
ICsxODI0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblJlZG8geyBmYWxzZSB9OwogICAg
IGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3RhYlRvTGlua3MgeyBmYWxz
ZSB9OwotICAgIAorCiAgICAgYm9vbCBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hcnRpZmlj
aWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQgeyBmYWxzZSB9OwpAQCAtMTgzMyw2
ICsxODM1LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9s
bGVyIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nl
c3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fc2hvdWxkUmVuZGVy
V2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQogICAgIGJvb2wgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBm
YWxzZSB9OwogI2VuZGlmCkBAIC0xODY0LDcgKzE4NjksNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
VGhlIGFjY2Vzc2liaWxpdHkgcG9zaXRpb24gb2YgdGhlIHZpZXcuCiAgICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCBtX2FjY2Vzc2liaWxpdHlQb3NpdGlvbjsKLSAgICAKKwogICAgIFJldGFpblB0cjxX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0PiBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudDsK
ICNlbmRpZgogCkBAIC0yMDQxLDcgKzIwNDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lz
U2hvd2luZ0lucHV0Vmlld0ZvckZvY3VzZWRFbGVtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzSGFuZGxlZFN5bnRoZXRpY0NsaWNrIHsgZmFsc2UgfTsKLSAgICAKKwogICAgIGVudW0gU2Vs
ZWN0aW9uQW5jaG9yIHsgU3RhcnQsIEVuZCB9OwogICAgIFNlbGVjdGlvbkFuY2hvciBtX3NlbGVj
dGlvbkFuY2hvciB7IFN0YXJ0IH07CiAKQEAgLTIwOTQsNyArMjA5OSw3IEBAIHByaXZhdGU6CiAK
ICAgICBIYXNoU2V0PHVuc2lnbmVkPiBtX2FjdGl2ZVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW5z
OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW4geyAwIH07
Ci0gICAgCisKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5u
aW5nQmVoYXZpb3IgeyBXZWJDb3JlOjpEb05vdFBpbiB9OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CiAKQEAgLTIx
NzQsNyArMjE3OSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBt
X3RoZW1lTmFtZTsKICNlbmRpZgotICAgIAorCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fbmF2aWdhdGlvbkhhc09jY3VyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU3YmE0YjI4YjRmMzgx
YWFlNmI1Yjc5NTBiZjg0Mjk3MzdlNzg5NTYuLjFlYWZlNDI0MmIzMzQ5YjdiYWU0OGE4NDVkYTg3
ZjcwYzdmMzM3NmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMS0wMyAgS2ltbW8gS2lubnVuZW4gIDxra2lu
bnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgcmVtb3RlIHZlcnNp
b24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVSBwcm9jZXNzLgorICAgICAgICBDdXJyZW50
IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMgYW5kIGlzIGluY29tcGxldGUuCisK
KyAgICAgICAgQWRkIHRoZSBjb2RlIGdlbmVyYXRvciB0byBnZW5lcmF0ZSB0aGUgaW1wbGVtZW50
YXRpb24uCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6IEFkZGVkLgor
CiAyMDIwLTEwLTI4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbYnVpbGQud2Via2l0Lm9yZ10gbG9hZENvbmZpZyB1bml0dGVzdCBmYWlsIGRlcGVuZGlu
ZyBvbiBsb2NhbGx5IGluc3RhbGxlZCB2ZXJzaW9uIG9mIGJ1aWxkYm90CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJmZWVhN2YwMzM5Y2E4ZWFkZTNmNDYyNDRhZWRkOGYy
MzUyZTExNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbApAQCAtMCwwICsxLDM2MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyAtKi0gY29k
aW5nOiB1dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgVGhpcyBzY3JpcHQgZ2Vu
ZXJhdGVzIHRoZSBzb3VyY2UgZmlsZXMgZm9yIFdlYkdMIEdQVSBwcm9jZXNzIElQQy4KK2ltcG9y
dCBhcmdwYXJzZQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCitmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdCwgRGljdAorCityb290X2RpciA9IChwYXRobGliLlBhdGgoX19m
aWxlX18pLnBhcmVudCAvICIuLiIgLyAiLi4iKS5yZXNvbHZlKCkKK2Z1bmN0aW9uc19pbnB1dF9m
bnMgPSBbCisgICAgcm9vdF9kaXIgLyAnU291cmNlJyAvICdXZWJDb3JlJyAvICdwbGF0Zm9ybScg
LyAnZ3JhcGhpY3MnIC8gJ0dyYXBoaWNzQ29udGV4dEdMLmgnLAorICAgIHJvb3RfZGlyIC8gJ1Nv
dXJjZScgLyAnV2ViQ29yZScgLyAncGxhdGZvcm0nIC8gJ2dyYXBoaWNzJyAvICdFeHRlbnNpb25z
R0wuaCcsCitdCit0eXBlc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gJ1NvdXJjZScgLyAnV2ViQ29y
ZScgLyAncGxhdGZvcm0nIC8gJ2dyYXBoaWNzJyAvICdHcmFwaGljc1R5cGVzR0wuaCcKKwordGVt
cGxhdGVfcHJlYW1ibGUgPSAiIiIKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorIiIiCitjb250ZXh0X2Z1bmN0
aW9uc19mbiA9IHJvb3RfZGlyIC8gJ1NvdXJjZScgLyAnV2ViS2l0JyAvICdHUFVQcm9jZXNzJyAv
ICdncmFwaGljcycgLyAnUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQu
aCcKK2NvbnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlID0gdGVtcGxhdGVfcHJlYW1ibGUgKyAiIiIK
Ky8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBv
ZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFn
bWEgb25jZQore30KKworIiIiCitjb250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAnU291
cmNlJyAvICdXZWJLaXQnIC8gJ0dQVVByb2Nlc3MnIC8gJ2dyYXBoaWNzJyAvICdSZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbicKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSB0
ZW1wbGF0ZV9wcmVhbWJsZSArICIiIgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3Vu
dGVkIHt7e30KK319CisKKyNlbmRpZgorCisiIiIKKworY29udGV4dF9wcm94eV9mdW5jdGlvbnNf
Zm4gPSByb290X2RpciAvICdTb3VyY2UnIC8gJ1dlYktpdCcgLyAnV2ViUHJvY2VzcycgLyAnR1BV
JyAvICdncmFwaGljcycgLyAnUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dl
bmVyYXRlZC5oJworY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSB0ZW1wbGF0ZV9w
cmVhbWJsZSArICIiIgorLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHVi
bGljIHNlY3Rpb24gb2YgdGhlCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IGltcGxl
bWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQore30KKyIiIgorCitkZWYgd3JpdGVfZmlsZShmbiwg
bmV3X2NvbnRlbnRzKToKKyAgICBvbGRfY29udGVudHMgPSAiIgorICAgIHdpdGggb3Blbihmbikg
YXMgZjoKKyAgICAgICAgb2xkX2NvbnRlbnRzID0gZi5yZWFkKCkKKyAgICBpZiBvbGRfY29udGVu
dHMgPT0gbmV3X2NvbnRlbnRzOgorICAgICAgICByZXR1cm4KKyAgICB3aXRoIG9wZW4oZm4sICJ3
IikgYXMgZjoKKyAgICAgICAgZi53cml0ZShuZXdfY29udGVudHMpCisKK2NsYXNzIGNtZF90eXBl
KG9iamVjdCk6CisgICAgdHlwZV9uYW1lIDogc3RyCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5
cGVfbmFtZV9zcGVjIDogc3RyKToKKyAgICAgICAgc2VsZi50eXBlX25hbWUgPSB0eXBlX25hbWVf
c3BlYy5zdHJpcCgpCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAie30i
LmZvcm1hdChzZWxmLnR5cGVfbmFtZSkKKworY2xhc3MgY21kX2FyZyhvYmplY3QpOgorICAgIG5h
bWUgOiBzdHIKKyAgICB0eXBlIDogY21kX3R5cGUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYXJn
X3NwZWMgOiBzdHIsIGFyZ19pbmRleCA6IGludCk6CisgICAgICAgIHIgPSBhcmdfc3BlYy5yc3Bs
aXQoJyAnLCAxKQorICAgICAgICBpZiBsZW4ocikgPiAxIGFuZCByWzBdICE9ICdjb25zdCc6Cisg
ICAgICAgICAgICBzZWxmLm5hbWUgPSByWzFdLnN0cmlwKCkKKyAgICAgICAgICAgIHNlbGYudHlw
ZSA9IGNtZF90eXBlKHJbMF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLm5hbWUg
PSAnYXJne30nLmZvcm1hdChhcmdfaW5kZXgpCisgICAgICAgICAgICBzZWxmLnR5cGUgPSBjbWRf
dHlwZShhcmdfc3BlYykKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7
fS17fSIuZm9ybWF0KHNlbGYudHlwZSwgc2VsZi5uYW1lKQorCitjbGFzcyBjbWQob2JqZWN0KToK
KyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBMaXN0W2NtZF9hcmddCisgICAgcmV0dXJuX3R5cGU6
IGNtZF90eXBlCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6
IHN0ciwgYXJnc19zcGVjcyA6IHN0ciwgaXNfZXh0ZW5zaW9uIDogYm9vbCk6CisgICAgICAgIHNl
bGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNtZF90eXBlKHJldHVy
bl9zcGVjKQorICAgICAgICBzZWxmLmFyZ3MgPSBbY21kX2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5k
ZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nfc3BlY3MpXQorICAgICAgICBzZWxmLmlz
X2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gJ3t9IHt9IHt9Jy5mb3JtYXQoc2VsZi5yZXR1cm5fdHlwZSwgc2VsZi5uYW1lLCAn
ICcuam9pbihzdHIoYSkgZm9yIGEgaW4gc2VsZi5hcmdzKSkKKworY2xhc3Mgd2Via2l0X2lwY19j
b252ZXJzaW9uKG9iamVjdCk6CisgICAgdHlwZV9uYW1lIDogc3RyCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHR5cGVfbmFtZSk6CisgICAgICAgIHNlbGYudHlwZV9uYW1lID0gdHlwZV9uYW1lCisg
ICAgZGVmIGdldF90eXBlX2NvbnZlcnNpb24oc2VsZiwgYXJnIDogY21kX2FyZywgbmFtZSA6IHN0
cik6CisgICAgICAgIHJldHVybiBuYW1lCisgICAgZGVmIGdldF9tZXNzYWdlX3R5cGVfbmFtZShz
ZWxmLCB0eXBlIDogY21kX3R5cGUpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKyAg
ICBkZWYgZ2V0X21lc3NhZ2VfdHlwZV9jb252ZXJzaW9uKHNlbGYsIHR5cGUgOiBjbWRfdHlwZSwg
bmFtZSA6IHN0cik6CisgICAgICAgIHJldHVybiBuYW1lCisKK2NsYXNzIHdlYmtpdF9pcGNfaW1w
bGljaXRfY29udmVyc2lvbih3ZWJraXRfaXBjX2NvbnZlcnNpb24pOgorICAgICIiIkNvbnZlcnNp
b24gZm9yIGludGVyZmFjZSBoYXMgdHlwZSB3aGljaCBpbXBsaWNpdGx5IG1hcHMgdG8gY29ycmVj
dCBzaXplZAorICAgIElQQyB0eXBlLiBMaWtlOiBHQ0dMaW50IC0+IGludDMyX3QKKyAgICAiIiIK
KyAgICBwYXNzCitjbGFzcyB3ZWJraXRfaXBjX3N0YXRpY19jb252ZXJzaW9uKHdlYmtpdF9pcGNf
Y29udmVyc2lvbik6CisgICAgIiIiQ29udmVyc2lvbiBmb3IgaW50ZXJmYWNlIHR5cGUgd2hpY2gg
aGFzIHRoZSBzYW1lIHNpemUgYXMgdGhlIHByZWZlcnJlZAorICAgIHNpemVkIElQQyB0eXBlLCBi
dXQgY29udmVyc2lvbiBuZWVkcyBhIGNhc3QuIExpa2U6IGBHQ0dMaW50cHRyYCBpcyBhCisgICAg
YGludHB0cl90YCB3aGljaCBpcyBhIGBsb25nYC4gTm90aGluZyBpbiBjc3RkaW50IHNpemVkIHR5
cGVzIG1hdGNoIGBsb25nLgorICAgIFByZWZlcnJlZCB0eXBlIGlzIHVpbnQ2NF90IHdoaWNoIGlz
IGEgYHVuc2lnbmVkIGxvbmcgbG9uZ2AuIiIiCisgICAgZGVmIGdldF90eXBlX2NvbnZlcnNpb24o
c2VsZiwgdHlwZSA6IGNtZF90eXBlLCBuYW1lIDogc3RyKToKKyAgICAgICAgaWYgdHlwZS50eXBl
X25hbWUgPT0gIkdDR0xzeW5jIjoKKyAgICAgICAgICAgIHJldHVybiBmInN0YXRpY19jYXN0PHt0
eXBlLnR5cGVfbmFtZX0+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHtuYW1lfSkpIgorICAg
ICAgICByZXR1cm4gZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9Pih7bmFtZX0pIgorICAg
IGRlZiBnZXRfbWVzc2FnZV90eXBlX2NvbnZlcnNpb24oc2VsZiwgdHlwZSA6IGNtZF90eXBlLCBu
YW1lIDogc3RyKToKKyAgICAgICAgaWYgdHlwZS50eXBlX25hbWUgPT0gIkdDR0xzeW5jIjoKKyAg
ICAgICAgICAgIHJldHVybiBmInN0YXRpY19jYXN0PHtzZWxmLnR5cGVfbmFtZX0+KHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KHtuYW1lfSkpIgorICAgICAgICByZXR1cm4gZiJzdGF0aWNfY2Fz
dDx7c2VsZi50eXBlX25hbWV9Pih7bmFtZX0pIgorY2xhc3Mgd2Via2l0X2lwY192YWx1ZV9jb252
ZXJzaW9uKHdlYmtpdF9pcGNfY29udmVyc2lvbik6CisgICAgIiIiQ29udmVyc2lvbiBmb3IgaW50
ZXJmYWNlIHR5cGUgd2hpY2ggaGFzIGlzIGEgcmVmZXJlbmNlIHR5cGUKKyAgICB0aGF0IG1hcHMg
dG8gYSB2YWx1ZSB0eXBlIGluIElQQyBkZWZpbml0aW9uLiBMaWtlOgorICAgIGBjb25zdCBTdHJp
bmcmYCAtPiBgU3RyaW5nYC4iIiIKKyAgICBkZWYgZ2V0X21lc3NhZ2VfdHlwZV9uYW1lKHNlbGYs
IHR5cGUgOiBjbWRfdHlwZSk6CisgICAgICAgICMgQ29udmVydCAiY29uc3QgVHlwZSYiIHRvICJU
eXBlIi4KKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lLnNwbGl0KCIgIilbMV1bOi0xXQor
Cit3ZWJraXRfaXBjX3ByaW1pdGl2ZV90eXBlc19wcmVkZWZpbmVkID0geworICAgICdjb25zdCBT
dHJpbmcmJyA6IHdlYmtpdF9pcGNfdmFsdWVfY29udmVyc2lvbignY29uc3QgU3RyaW5nJicpLAor
fQorCitjbGFzcyB3ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgIGNtZHMgOiBMaXN0
W2NtZF0KKyAgICBpcGNfcHJpbWl0aXZlX3R5cGVzIDogRGljdFtzdHIsIHdlYmtpdF9pcGNfY29u
dmVyc2lvbl0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgY21kcyA6IExpc3RbY21kXSwgaXBjX3By
aW1pdGl2ZV90eXBlcyA6IERpY3Rbc3RyLCBzdHJdKToKKyAgICAgICAgc2VsZi5jbWRzID0gY21k
cworICAgICAgICBzZWxmLmlwY19wcmltaXRpdmVfdHlwZXMgPSB7KippcGNfcHJpbWl0aXZlX3R5
cGVzLCAqKndlYmtpdF9pcGNfcHJpbWl0aXZlX3R5cGVzX3ByZWRlZmluZWR9CisgICAgZGVmIGlz
X2ltcGxlbWVudGVkX3R5cGUoc2VsZiwgdHlwZSA6IGNtZF90eXBlKToKKyAgICAgICAgaWYgJyon
IGluIHR5cGUudHlwZV9uYW1lIG9yICcmJyBpbiB0eXBlLnR5cGVfbmFtZToKKyAgICAgICAgICAg
IGlmIHR5cGUudHlwZV9uYW1lID09ICdjb25zdCBTdHJpbmcmJzoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHR5cGUudHlw
ZV9uYW1lID09ICdHQ0dMc3luYyc6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg
cmV0dXJuIFRydWUKKyAgICBkZWYgaXNfaW1wbGVtZW50ZWQoc2VsZiwgY21kIDogY21kKToKKyAg
ICAgICAgaWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoYS50eXBlKSBmb3IgYSBp
biBjbWQuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbm90IHNl
bGYuaXNfaW1wbGVtZW50ZWRfdHlwZShjbWQucmV0dXJuX3R5cGUpOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisgICAgZGVmIGdldF9mdW5jdGlvbl9uYW1l
KHNlbGYsIGNtZCA6IGNtZCk6CisgICAgICAgIHJldHVybiBjbWQubmFtZQorICAgIGRlZiBnZXRf
YXJnX2RlY2xzKHNlbGYsIGNtZCA6IGNtZCk6CisgICAgICAgIHJldHVybiAnLCAnLmpvaW4oW2Yi
e2EudHlwZS50eXBlX25hbWV9IHthLm5hbWV9IiBmb3IgYSBpbiBjbWQuYXJnc10pCisgICAgZGVm
IGdldF9hcmdfdHlwZXMoc2VsZiwgY21kIDogY21kKToKKyAgICAgICAgcmV0dXJuICcsICcuam9p
bihbYS50eXBlLnR5cGVfbmFtZSBmb3IgYSBpbiBjbWQuYXJnc10pCisgICAgZGVmIGdldF9hcmdf
bmFtZXMoc2VsZiwgY21kIDogY21kKToKKyAgICAgICAgcmV0dXJuICcsICcuam9pbihbYS5uYW1l
IGZvciBhIGluIGNtZC5hcmdzXSkKKyAgICBkZWYgZ2V0X3R5cGVfY29udmVyc2lvbihzZWxmLCB0
eXBlIDogY21kX3R5cGUsIG5hbWUgOiBzdHIpOgorICAgICAgICB0eXBlX25hbWUgPSB0eXBlLnR5
cGVfbmFtZQorICAgICAgICBpZiB0eXBlX25hbWUgaW4gc2VsZi5pcGNfcHJpbWl0aXZlX3R5cGVz
OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuaXBjX3ByaW1pdGl2ZV90eXBlc1t0eXBlX25hbWVd
LmdldF90eXBlX2NvbnZlcnNpb24odHlwZSwgbmFtZSkKKyAgICAgICAgcmV0dXJuIG5hbWUKKyAg
ICBkZWYgZ2V0X21lc3NhZ2VfbmFtZShzZWxmLCBjbWQgOiBjbWQpOgorICAgICAgICByZXR1cm4g
Y21kLm5hbWVbMF0uY2FwaXRhbGl6ZSgpICsgY21kLm5hbWVbMTpdCisgICAgZGVmIGdldF9tZXNz
YWdlX3R5cGVfbmFtZShzZWxmLCB0eXBlIDogY21kX3R5cGUpOgorICAgICAgICB0eXBlX25hbWUg
PSB0eXBlLnR5cGVfbmFtZQorICAgICAgICBpZiB0eXBlX25hbWUgaW4gc2VsZi5pcGNfcHJpbWl0
aXZlX3R5cGVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuaXBjX3ByaW1pdGl2ZV90eXBlc1t0
eXBlX25hbWVdLmdldF9tZXNzYWdlX3R5cGVfbmFtZSh0eXBlKQorICAgICAgICByZXR1cm4gdHlw
ZV9uYW1lCisgICAgZGVmIGdldF9tZXNzYWdlX3R5cGVfY29udmVyc2lvbihzZWxmLCB0eXBlIDog
Y21kX3R5cGUsIG5hbWUgOiBzdHIpOgorICAgICAgICB0eXBlX25hbWUgPSB0eXBlLnR5cGVfbmFt
ZQorICAgICAgICBpZiB0eXBlX25hbWUgaW4gc2VsZi5pcGNfcHJpbWl0aXZlX3R5cGVzOgorICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuaXBjX3ByaW1pdGl2ZV90eXBlc1t0eXBlX25hbWVdLmdldF9t
ZXNzYWdlX3R5cGVfY29udmVyc2lvbih0eXBlLCBuYW1lKQorICAgICAgICByZXR1cm4gbmFtZQor
ICAgIGRlZiBnZXRfbWVzc2FnZV9hcmdfZGVjbHMoc2VsZiwgY21kIDogY21kKToKKyAgICAgICAg
cmV0dXJuIFtmIntzZWxmLmdldF9tZXNzYWdlX3R5cGVfbmFtZShhLnR5cGUpfSB7YS5uYW1lfSIg
Zm9yIGEgaW4gY21kLmFyZ3NdCisKK2NsYXNzIGNvbnRleHRfcHJveHlfd2Via2l0X2lwY19nZW5l
cmF0b3Iod2Via2l0X2lwY19nZW5lcmF0b3IpOgorICAgIGRlZiBnZXRfYXJnc19mb3Jfc2VuZChz
ZWxmLCBjbWQgOiBjbWQpOgorICAgICAgICByZXR1cm4gJywgJy5qb2luKFtzZWxmLmdldF9tZXNz
YWdlX3R5cGVfY29udmVyc2lvbihhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gY21kLmFyZ3NdKQor
ICAgIGRlZiBnZXRfZnVuY3Rpb24oc2VsZiwgY21kIDogY21kKToKKyAgICAgICAgc2VuZF9uYW1l
ID0gc2VsZi5nZXRfbWVzc2FnZV9uYW1lKGNtZCkKKyAgICAgICAgc2VuZF9hcmdzID0gc2VsZi5n
ZXRfYXJnc19mb3Jfc2VuZChjbWQpCisgICAgICAgIHNlbmRfYm9keSA9IFtdCisgICAgICAgIGlm
IGNtZC5yZXR1cm5fdHlwZS50eXBlX25hbWUgPT0gInZvaWQiOgorICAgICAgICAgICAgc2VuZF9i
b2R5ID0gWyBmInNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VuZF9u
YW1lfSh7c2VuZF9hcmdzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsiIF0KKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbmRfYm9keSA9IFsKKyAgICAgICAgICAgICAgICBm
IntzZWxmLmdldF9tZXNzYWdlX3R5cGVfbmFtZShjbWQucmV0dXJuX3R5cGUpfSByZXN1bHQgPSB7
eyB9fTsiLAorICAgICAgICAgICAgICAgIGYic2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjp7c2VuZF9uYW1lfSh7c2VuZF9hcmdzfSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6e3NlbmRfbmFtZX06OlJlcGx5KHJlc3VsdCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOyIsCisgICAgICAgICAgICAgICAgZiJyZXR1cm4ge3Nl
bGYuZ2V0X3R5cGVfY29udmVyc2lvbihjbWQucmV0dXJuX3R5cGUsICdyZXN1bHQnKX07IgorICAg
ICAgICAgICAgXQorICAgICAgICByZXR1cm5fdHlwZSA9IGNtZC5yZXR1cm5fdHlwZQorICAgICAg
ICBib2R5ID0gJycuam9pbihmIlxuICAgICAgICB7Yn0iIGZvciBiIGluIHNlbmRfYm9keSkKKyAg
ICAgICAgYXJncyA9IHNlbGYuZ2V0X2FyZ19kZWNscyhjbWQpCisgICAgICAgIHJldHVybiBmIiIi
XG4gICAge3JldHVybl90eXBlfSB7Y21kLm5hbWV9KHthcmdzfSkgZmluYWwKKyAgICB7e3tib2R5
fQorICAgIH19IiIiCisgICAgZGVmIGdldF9wbGFjZWhvbGRlcl9mdW5jdGlvbihzZWxmLCBjbWQg
OiBjbWQpOgorICAgICAgICBib2R5ID0gIiIKKyAgICAgICAgaWYgY21kLnJldHVybl90eXBlLnR5
cGVfbmFtZSAhPSAidm9pZCI6CisgICAgICAgICAgICBib2R5ID0gInJldHVybiB7IH07IgorICAg
ICAgICByZXR1cm5fdHlwZSA9IGNtZC5yZXR1cm5fdHlwZQorICAgICAgICBhcmdzID0gc2VsZi5n
ZXRfYXJnX2RlY2xzKGNtZCkKKyAgICAgICAgcmV0dXJuIGYiXG4gICAge3JldHVybl90eXBlfSB7
Y21kLm5hbWV9KHthcmdzfSkgZmluYWwge3sge2JvZHl9IH19IgorICAgIGRlZiBnZXRfZnVuY3Rp
b25zKHNlbGYpOgorICAgICAgICByID0gW10KKyAgICAgICAgZm9yIGNtZCBpbiBzZWxmLmNtZHM6
CisgICAgICAgICAgICBpZiBzZWxmLmlzX2ltcGxlbWVudGVkKGNtZCk6CisgICAgICAgICAgICAg
ICAgciArPSBbc2VsZi5nZXRfZnVuY3Rpb24oY21kKV0KKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgciArPSBbc2VsZi5nZXRfcGxhY2Vob2xkZXJfZnVuY3Rpb24oY21kKV0KKyAg
ICAgICAgcmV0dXJuICcnLmpvaW4ocikKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAg
IHdyaXRlX2ZpbGUoY29udGV4dF9wcm94eV9mdW5jdGlvbnNfZm4sIGNvbnRleHRfcHJveHlfZnVu
Y3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5jdGlvbnMoKSkpCisKKworY2xhc3Mg
Y29udGV4dF93ZWJraXRfaXBjX2dlbmVyYXRvcih3ZWJraXRfaXBjX2dlbmVyYXRvcik6CisgICAg
ZGVmIGdldF9mdW5jdGlvbihzZWxmLCBjbWQgOiBjbWQpOgorICAgICAgICBjYWxsX2JvZHkgPSBb
XQorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9ucygpLiIgaWYgY21kLmlzX2V4dGVuc2lvbiBl
bHNlICIiCisgICAgICAgIGlmIGNtZC5yZXR1cm5fdHlwZS50eXBlX25hbWUgPT0gInZvaWQiOgor
ICAgICAgICAgICAgY2FsbF9ib2R5ID0gWyBmIm1fY29udGV4dC0+e2V4dH17Y21kLm5hbWV9KHtz
ZWxmLmdldF9hcmdfbmFtZXMoY21kKX0pOyIgXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
Y2FsbF9ib2R5ID0gWyBmImNvbXBsZXRpb25IYW5kbGVyKG1fY29udGV4dC0+e2V4dH17Y21kLm5h
bWV9KHtzZWxmLmdldF9hcmdfbmFtZXMoY21kKX0pKTsiIF0KKyAgICAgICAgcmV0dXJuX3R5cGUg
PSBjbWQucmV0dXJuX3R5cGUKKyAgICAgICAgYXJnX2RlY2xzID0gc2VsZi5nZXRfbWVzc2FnZV9h
cmdfZGVjbHMoY21kKQorICAgICAgICBpZiBjbWQucmV0dXJuX3R5cGUudHlwZV9uYW1lICE9ICJ2
b2lkIjoKKyAgICAgICAgICAgIGFyZ19kZWNscyArPSBbZiJDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHtzZWxmLmdldF9tZXNzYWdlX3R5cGVfbmFtZShjbWQucmV0dXJuX3R5cGUpfSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIiXQorICAgICAgICBib2R5ID0gJycuam9pbihmIlxuICAgICAgICB7Yn0iIGZv
ciBiIGluIGNhbGxfYm9keSkKKyAgICAgICAgcmV0dXJuIGYiIiIgICAgdm9pZCB7c2VsZi5nZXRf
ZnVuY3Rpb25fbmFtZShjbWQpfSh7IiwgIi5qb2luKGFyZ19kZWNscyl9KQorICAgIHt7e2JvZHl9
CisgICAgfX0iIiIKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgciA9IFtd
CisgICAgICAgIGZvciBjbWQgaW4gc2VsZi5jbWRzOgorICAgICAgICAgICAgaWYgc2VsZi5pc19p
bXBsZW1lbnRlZChjbWQpOgorICAgICAgICAgICAgICAgIHIgKz0gW3NlbGYuZ2V0X2Z1bmN0aW9u
KGNtZCldCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4ocikKKyAgICBkZWYgZ2V0X21lc3NhZ2Uo
c2VsZiwgY21kIDogY21kKToKKyAgICAgICAgYXJnX2RlY2xzID0gJywgJy5qb2luKHNlbGYuZ2V0
X21lc3NhZ2VfYXJnX2RlY2xzKGNtZCkpCisgICAgICAgIG5hbWUgPSBzZWxmLmdldF9tZXNzYWdl
X25hbWUoY21kKQorICAgICAgICBpZiBjbWQucmV0dXJuX3R5cGUudHlwZV9uYW1lICE9ICJ2b2lk
IjoKKyAgICAgICAgICAgIHJldHVybiBmIlxuICAgIHZvaWQge25hbWV9KHthcmdfZGVjbHN9KSAt
PiAoe3NlbGYuZ2V0X21lc3NhZ2VfdHlwZV9uYW1lKGNtZC5yZXR1cm5fdHlwZSl9IHJlc3VsdCkg
U3luY2hyb25vdXMiCisgICAgICAgIHJldHVybiBmIlxuICAgIHZvaWQge25hbWV9KHthcmdfZGVj
bHN9KSIKKyAgICBkZWYgZ2V0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICByID0gW10KKyAgICAg
ICAgZm9yIGNtZCBpbiBzZWxmLmNtZHM6CisgICAgICAgICAgICBpZiBzZWxmLmlzX2ltcGxlbWVu
dGVkKGNtZCk6CisgICAgICAgICAgICAgICAgciArPSBbc2VsZi5nZXRfbWVzc2FnZShjbWQpXQor
ICAgICAgICByZXR1cm4gJycuam9pbihyKQorICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAg
ICAgd3JpdGVfZmlsZShjb250ZXh0X2Z1bmN0aW9uc19mbiwgY29udGV4dF9mdW5jdGlvbnNfdGVt
cGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSkKKyAgICAgICAgd3JpdGVfZmlsZShj
b250ZXh0X21lc3NhZ2VzX2ZuLCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlLmZvcm1hdChzZWxm
LmdldF9tZXNzYWdlcygpKSkKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5B
cmd1bWVudFBhcnNlcigndXNhZ2U6ICVwcm9nIFtvcHRpb25zXScpCisgICAgX29wdGlvbnMgPSBw
YXJzZXIucGFyc2VfYXJncygpCisgICAgY21kcyA9IFtdCisgICAgZm9yIGZuIGluIGZ1bmN0aW9u
c19pbnB1dF9mbnM6CisgICAgICAgIGlzX2V4dGVuc2lvbiA9ICdFeHRlbnNpb24nIGluIHN0cihm
bikKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBpdGVy
KGYucmVhZGxpbmVzKCkpCisgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAg
ICAgICAgICBpZiByZS5tYXRjaCgiLy8gV2ViR0wgZnVuY3Rpb25zLiBUaGlzIGxpc3QgaXMgdXNl
ZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iLCBsaW5lLnN0cmlwKCkpOgorICAgICAg
ICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAg
ICAgICAgICAgICAgICBpZiByZS5tYXRjaCgiLy8gT3RoZXIgZnVuY3Rpb25zLiIsIGxpbmUuc3Ry
aXAoKSk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbSA9IHJl
Lm1hdGNoKHIiLip2aXJ0dWFsIChcUyspXHMrKFx3KylcKCguKilcKSA9IDA7IiwgbGluZSkKKyAg
ICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzID0gZmls
dGVyKE5vbmUsIFthLnN0cmlwKCkgZm9yIGEgaW4gbVszXS5zdHJpcCgpLnNwbGl0KCcsJyldKQor
ICAgICAgICAgICAgICAgICAgICBjbWRzLmFwcGVuZChjbWQobmFtZT1tWzJdLCByZXR1cm5fc3Bl
Yz1tWzFdLCBhcmdzX3NwZWNzPWFyZ3Nfc3BlY3MsIGlzX2V4dGVuc2lvbj1pc19leHRlbnNpb24p
KQorICAgIGlwY19wcmltaXRpdmVfdHlwZXMgPSB7fQorICAgIHdpdGggb3Blbih0eXBlc19pbnB1
dF9mbikgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAg
ICAgIHByaW50KGxpbmUpCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3Nl
cnRcKHN0ZDo6aXNfc2FtZV92PChcdyspLCAoXHcrKT5cKTsiLCBsaW5lKQorICAgICAgICAgICAg
aWYgbToKKyAgICAgICAgICAgICAgICBpcGNfcHJpbWl0aXZlX3R5cGVzW21bMV1dID0gd2Via2l0
X2lwY19pbXBsaWNpdF9jb252ZXJzaW9uKG1bMl0pCisgICAgICAgICAgICAgICAgY29udGludWUK
KyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcr
KVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAg
ICAgICAgICAgICAgIGlwY19wcmltaXRpdmVfdHlwZXNbbVsxXV0gPSB3ZWJraXRfaXBjX3N0YXRp
Y19jb252ZXJzaW9uKG1bMl0pCisKKyAgICBnZW5lcmF0b3JzID0gWworICAgICAgICBjb250ZXh0
X3Byb3h5X3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGNtZHMsIGlwY19wcmltaXRpdmVfdHlwZXMpLAor
ICAgICAgICBjb250ZXh0X3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGNtZHMsIGlwY19wcmltaXRpdmVf
dHlwZXMpCisgICAgXQorICAgIGZvciBnIGluIGdlbmVyYXRvcnM6CisgICAgICAgIGcuZ2VuZXJh
dGUoKQorCisgICAgaW1wbGVtZW50ZWQgPSBbXQorICAgIHVuaW1wbGVtZW50ZWQgPSBbXQorICAg
IGZvciBjIGluIGNtZHM6CisgICAgICAgIGlmIGFsbChnLmlzX2ltcGxlbWVudGVkKGMpIGZvciBn
IGluIGdlbmVyYXRvcnMpOgorICAgICAgICAgICAgaW1wbGVtZW50ZWQuYXBwZW5kKGMpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICB1bmltcGxlbWVudGVkLmFwcGVuZChjKQorICAgIHByaW50
KCJJbXBsZW1lbnRlZDoiKQorICAgIHByaW50KCcnLmpvaW4oZiIgIHtzdHIoaSl9XG4iIGZvciBp
IGluIGltcGxlbWVudGVkKSkKKyAgICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgIHByaW50
KCcnLmpvaW4oZiIgIHtzdHIodSl9XG4iIGZvciB1IGluIHVuaW1wbGVtZW50ZWQpKQorICAgIHBy
aW50IChmIkltcGxlbWVudGVkOiB7bGVuKGltcGxlbWVudGVkKX0sIHVuaW1wbGVtZW50ZWQ6IHts
ZW4odW5pbXBsZW1lbnRlZCl9LCB0b3RhbDoge2xlbihjbWRzKX0iKQorCisgICAgcmV0dXJuIDAK
KworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414787</attachid>
            <date>2020-11-22 05:10:26 -0800</date>
            <delta_ts>2020-11-23 02:23:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201122151023.patch</filename>
            <type>text/plain</type>
            <size>361995</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEwNjZiNjNhM2RmMGM2
ZmEyZjIwMjNlNWM1MTBmMTBlNTBkMjU2MC4uODExOGE0MjgyZmQ5Y2Q4ZDI5NDVlZjZkOGIwODM1
MTI4MDJiYWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0xMS0wMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVSBwcm9jZXNzLgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcworICAgICAgICB0aGUgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8KKyAgICAgICAg
dGhlIEdQVSBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlCisgICAgICAgIHJlc3VsdHMgYXJlIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSBHQ0dMU3BhbiBmb3Jt
LgorCisgICAgICAgIEltcGxlbWVudHMgc2ltcGxlIGdldHRlcnMsIG11bHRpLXZhbHVlIGdldHRl
cnMsIHNpbXBsZSBjYWxscy4KKyAgICAgICAgTWlzc2luZyBtdWx0aS12YWx1ZSBzZXR0ZXJzLgor
ICAgICAgICBNaXNzaW5nIHJlYWRQaXhlbHMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQ6IDE5MCwg
dW5pbXBsZW1lbnRlZDogMTAzLCB0b3RhbDogMjkzCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0
ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25jZSB0aGUgaW1wbGVtZW50YXRpb24gd29y
a3MuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3Zp
ZGVyLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEJhc2UuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJl
c3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6d2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2E6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnJlc2hhcGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2Nv
YTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2E6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6c3ludGhlc2l6ZUdMRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6
bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hl
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OmxheWVyQ29t
cG9zaXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6Z2V0QnVmZmVyc1RvQXV0
b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlQ29jb2E6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgor
CiAyMDIwLTExLTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0xGQ11bSW50ZWdyYXRpb25dIEVuYWJsZSBpbmxpbmUtYmxvY2sKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYThlYTAz
NTFmZTQyNmEyNzk1MmY3YjU1ZjhkNGE4ZjExMDMwOTdkOS4uN2FhYjk3NTlmZmFlMDI2OWMyNjY5
OTdjNzUwZWZhZWRkOWJhMzgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMTkgQEAKKzIwMjAtMTEt
MDMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgUmVtb3RlV2ViR0xCYWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRH
TCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNp
bmcgV2ViS2l0IElQQy4KKworICAgICAgICBJbXBsZW1lbnRlZCB3aXRoIGEgZ2VuZXJhdG9yIHNj
cmlwdCBpbXBsZW1lbnRpbmcgdGhlIElQQyB0byBwYXNzCisgICAgICAgIHRoZSBHcmFwaGljc0Nv
bnRleHRHTCBtZW1iZXIgZnVuY3Rpb24gY2FsbHMgZnJvbSB3ZWIgcHJvY2VzcyB0bworICAgICAg
ICB0aGUgR1BVIHByb2Nlc3MuIFRoZSBzY3JpcHQgaXMgcnVuIGR1cmluZyBkZXZlbG9wbWVudCB0
aW1lIGFuZCB0aGUKKyAgICAgICAgcmVzdWx0cyBhcmUgY29tbWl0dGVkIHRvIHRoZSByZXBvIGZv
ciBlYXNlIG9mIHJldmlldy4KKworICAgICAgICBDaGFuZ2VzIEdyYXBoaWNzQ29udGV4dEdMIGFu
ZCBFeHRlbnNpb25zR0wgdG8gbm90IGhhdmUgZHVwbGljYXRlIG5hbWVzCisgICAgICAgIGFuZCBo
YXZlIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZXMuCisKKyAgICAgICAgQ2hhbmdlcyBm
ZXcgcmVtYWluaW5nIEdyYXBoaWNzQ29udGV4dEdMIGdldHRlcnMgdG8gdXNlIEdDR0xTcGFuIGZv
cm0uCisKKyAgICAgICAgSW1wbGVtZW50cyBzaW1wbGUgZ2V0dGVycywgbXVsdGktdmFsdWUgZ2V0
dGVycywgc2ltcGxlIGNhbGxzLgorICAgICAgICBNaXNzaW5nIG11bHRpLXZhbHVlIHNldHRlcnMu
CisgICAgICAgIE1pc3NpbmcgcmVhZFBpeGVscy4KKworICAgICAgICBJbXBsZW1lbnRlZDogMTkw
LCB1bmltcGxlbWVudGVkOiAxMDMsIHRvdGFsOiAyOTMKKworICAgICAgICBObyBuZXcgdGVzdHMs
IHRlc3RlZCBieSBleGlzdGluZyB3ZWJnbCB0ZXN0cyBvbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiB3
b3Jrcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0Nv
bnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOiBBZGRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6IEFkZGVkLgorICAgICAgICAoYWN0aXZlVGV4dHVy
ZSk6CisgICAgICAgIChhdHRhY2hTaGFkZXIpOgorICAgICAgICAoYmluZEF0dHJpYkxvY2F0aW9u
KToKKyAgICAgICAgKGJpbmRCdWZmZXIpOgorICAgICAgICAoYmluZEZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoYmluZFRleHR1cmUpOgorICAgICAg
ICAoYmxlbmRDb2xvcik6CisgICAgICAgIChibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKGJsZW5k
RXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChibGVuZEZ1bmMpOgorICAgICAgICAoYmxlbmRG
dW5jU2VwYXJhdGUpOgorICAgICAgICAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAg
IChjbGVhcik6CisgICAgICAgIChjbGVhckNvbG9yKToKKyAgICAgICAgKGNsZWFyRGVwdGgpOgor
ICAgICAgICAoY2xlYXJTdGVuY2lsKToKKyAgICAgICAgKGNvbG9yTWFzayk6CisgICAgICAgIChj
b21waWxlU2hhZGVyKToKKyAgICAgICAgKGNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGNvcHlU
ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKGNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGNyZWF0ZVJl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVTaGFkZXIpOgorICAgICAgICAoY3JlYXRlVGV4
dHVyZSk6CisgICAgICAgIChjdWxsRmFjZSk6CisgICAgICAgIChkZWxldGVCdWZmZXIpOgorICAg
ICAgICAoZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoZGVsZXRlUHJvZ3JhbSk6CisgICAg
ICAgIChkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoZGVsZXRlU2hhZGVyKToKKyAgICAg
ICAgKGRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoZGVwdGhGdW5jKToKKyAgICAgICAgKGRlcHRo
TWFzayk6CisgICAgICAgIChkZXB0aFJhbmdlKToKKyAgICAgICAgKGRldGFjaFNoYWRlcik6Cisg
ICAgICAgIChkaXNhYmxlKToKKyAgICAgICAgKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6Cisg
ICAgICAgIChkcmF3QXJyYXlzKToKKyAgICAgICAgKGRyYXdFbGVtZW50cyk6CisgICAgICAgIChl
bmFibGUpOgorICAgICAgICAoZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZmlu
aXNoKToKKyAgICAgICAgKGZsdXNoKToKKyAgICAgICAgKGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KToKKyAgICAgICAgKGZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGZyb250RmFjZSk6
CisgICAgICAgIChnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChnZXRBdHRyaWJMb2NhdGlvbik6
CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RXJyb3IpOgorICAgICAgICAoZ2V0
UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChn
ZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoZ2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAg
KGdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChoaW50KToKKyAgICAgICAgKGlzQnVm
ZmVyKToKKyAgICAgICAgKGlzRW5hYmxlZCk6CisgICAgICAgIChpc0ZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGlzUHJvZ3JhbSk6CisgICAgICAgIChpc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChp
c1NoYWRlcik6CisgICAgICAgIChpc1RleHR1cmUpOgorICAgICAgICAobGluZVdpZHRoKToKKyAg
ICAgICAgKGxpbmtQcm9ncmFtKToKKyAgICAgICAgKHBpeGVsU3RvcmVpKToKKyAgICAgICAgKHBv
bHlnb25PZmZzZXQpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChz
YW1wbGVDb3ZlcmFnZSk6CisgICAgICAgIChzY2lzc29yKToKKyAgICAgICAgKHNoYWRlclNvdXJj
ZSk6CisgICAgICAgIChzdGVuY2lsRnVuYyk6CisgICAgICAgIChzdGVuY2lsRnVuY1NlcGFyYXRl
KToKKyAgICAgICAgKHN0ZW5jaWxNYXNrKToKKyAgICAgICAgKHN0ZW5jaWxNYXNrU2VwYXJhdGUp
OgorICAgICAgICAoc3RlbmNpbE9wKToKKyAgICAgICAgKHN0ZW5jaWxPcFNlcGFyYXRlKToKKyAg
ICAgICAgKHRleFBhcmFtZXRlcmYpOgorICAgICAgICAodGV4UGFyYW1ldGVyaSk6CisgICAgICAg
ICh1bmlmb3JtMWYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZvcm0yZik6
CisgICAgICAgICh1bmlmb3JtMmkpOgorICAgICAgICAodW5pZm9ybTNmKToKKyAgICAgICAgKHVu
aWZvcm0zaSk6CisgICAgICAgICh1bmlmb3JtNGYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAg
ICAgICAgKHVzZVByb2dyYW0pOgorICAgICAgICAodmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAg
KHZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZl
cnRleEF0dHJpYjNmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3BvcnQpOgorICAgICAgICAoYnVmZmVyRGF0
YSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50
c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNy
ZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAg
KGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNv
cHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKHVubWFwQnVmZmVyKToKKyAgICAgICAgKGJsaXRG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAg
IChyZWFkQnVmZmVyKToKKyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6
CisgICAgICAgICh0ZXhTdG9yYWdlMkQpOgorICAgICAgICAodGV4U3RvcmFnZTNEKToKKyAgICAg
ICAgKGNvcHlUZXhTdWJJbWFnZTNEKToKKyAgICAgICAgKGdldEZyYWdEYXRhTG9jYXRpb24pOgor
ICAgICAgICAodW5pZm9ybTF1aSk6CisgICAgICAgICh1bmlmb3JtMnVpKToKKyAgICAgICAgKHVu
aWZvcm0zdWkpOgorICAgICAgICAodW5pZm9ybTR1aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJ
NGkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcik6CisgICAgICAgIChkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChjbGVhckJ1
ZmZlcmZpKToKKyAgICAgICAgKGNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKGRlbGV0ZVF1ZXJ5KToK
KyAgICAgICAgKGlzUXVlcnkpOgorICAgICAgICAoYmVnaW5RdWVyeSk6CisgICAgICAgIChlbmRR
dWVyeSk6CisgICAgICAgIChnZXRRdWVyeSk6CisgICAgICAgIChjcmVhdGVTYW1wbGVyKToKKyAg
ICAgICAgKGRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoaXNTYW1wbGVyKToKKyAgICAgICAgKGJp
bmRTYW1wbGVyKToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKHNhbXBs
ZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGlzVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAoYmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJlZ2luVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAg
ICAocGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChyZXN1bWVUcmFuc2Zvcm1GZWVk
YmFjayk6CisgICAgICAgIChiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChiaW5kQnVmZmVyUmFu
Z2UpOgorICAgICAgICAoZ2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZSk6CisgICAgICAgICh1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAg
ICAgKGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVy
QU5HTEUpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgor
ICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZGVsZXRlVmVydGV4QXJy
YXlPRVMpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChiaW5kVmVydGV4
QXJyYXlPRVMpOgorICAgICAgICAoZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAg
ICAgICAgKGluc2VydEV2ZW50TWFya2VyRVhUKToKKyAgICAgICAgKHB1c2hHcm91cE1hcmtlckVY
VCk6CisgICAgICAgIChwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChkcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUpOgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAodmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5k
bGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZl
ZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpsaXN0ZW5G
b3JMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
YWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpub25FcGhlbWVyYWxXZWJQYWdlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGly
ZWN0U2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2Vy
dmVyUmVkaXJlY3RTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE1l
ZGlhVm9sdW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjdXJyZW50bHlQcm9j
ZXNzZWRNb3VzZURvd25FdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENhbmNlbEZvck9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJv
Y2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdSZWN0
VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlv
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVc2VTeXN0
ZW1BcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhcldoZWVs
RXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRl
QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3Bl
ZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdEZvcldhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6
OnRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6bWVu
dWJhclZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVk
RGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjplbmNvZGVB
cmd1bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp+V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmV4ZWN1dGVFZGl0aW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlz
RWRpdGluZ0NvbW1hbmRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFs
dGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY3JvbGxNYWluRnJhbWVJ
Zk5vdEF0TWF4U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpkdW1wSGlzdG9yeUl0
ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkdW1wSGlzdG9yeUZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVJc0luV2luZG93KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp3aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6Om1haW5GcmFtZVZpZXcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNl
cnRUZXh0QXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb21taXRMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1
Z0luVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVdlYnNpdGVQ
b2xpY2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc3BhdGNoRGlkUmVhY2hMYXlv
dXRNaWxlc3RvbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlk
UGVyZm9ybVJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkVXNl
UmVtb3RlV2ViR0wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorCiAyMDIwLTExLTE5ICBIb2EgRGluaCAgPGR2aEBhcHBsZS5jb20+CiAKICAgICAgICAgQ29k
ZSBmb3JtYXR0aW5nOiBjaGFuZ2UgaW5zdGFuY2VzIG9mICJAc3ludGhlc2l6ZSBhPWIiIHRvICJA
c3ludGhlc2l6ZSBhID0gYiIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhYjY0YzMzNzYw
MTFmZWUzNTRkODNiZmI1MmI2YTliMzA2YzBhZjU0Li41NDg1MTk5ZmQwMzFhZDVkMTc4YjJhZGQy
ZmY5Mjk3YjQ5YWJjZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM2Miw2ICszNjIs
NyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGIyNTE0ZmQyYjJiNjUzNDAyMmJiNGRhYjJkMDY4YTBi
ZDA1MjBmZi4uN2ZhYmUyYmEzZGVkYTJmOGVhNjVlODdmOWQ3ZTBhNjYyYmUwODFkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjA1NSw3ICsyMDU1LDcgQEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1
RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNI
VE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVu
dC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0
cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEy
ODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5z
aW9uc0dMLmggKi87IH07CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25z
R0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdE
MkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEg
LyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFO
R0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkUyN0YyNDIyMjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwICovOyB9OwogCQk2RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVT
ZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICov
OyB9OwpAQCAtMjI0OSw2ICsyMjQ5LDggQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8q
IEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICov
OyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQy
NTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhp
Y3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0I2NEMwQUUyNTRDMTZGOTAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNjRDMEFDMjU0QzE2RUUwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZUNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFBsYXRmb3Jt
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBQbGF0
Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAwMDI5RDA4
IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4MjUzNzc2
Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3NkM2MDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRG
MEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3Jh
cGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDE5OSw2ICsxMDIwMSw5IEBACiAJCTdCMTAzMzlB
MjU0OTcyMDAwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xD
Vi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBBQzI1NEMxNkVFMDAwNkI0
QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFBsYXRmb3JtUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1
MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNjU5MCw2ICsyNjU5NSw3IEBACiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBs
YXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCisJCQkJN0I5MDQxNkUyNTUwMTEw
OTAwNkVFQjhDIC8qIFBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAq
LywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAq
LywKIAkJCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmNw
cCAqLywKIAkJCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2Vz
LmggKi8sCkBAIC0yNjc3Miw2ICsyNjc3OCw4IEBACiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRG
RDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAogCQkJCTMx
NjQ3RkE4MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLmggKi8sCiAJCQkJ
MzE2NDdGQTkyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EubW0gKi8sCisJ
CQkJN0I2NEMwQUMyNTRDMTZFRTAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlQ29jb2EuaCAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlDREVCM0Q3MjI0QzQx
QTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0
QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAy
NEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLApAQCAtMzM4
NjYsNiArMzM4NzQsNyBAQAogCQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAvKiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY5MDlBQzRE
NDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1
OTg5MDU4MTRFOUMyOTkwMEU4RDE4QiAvKiBQbGF0Zm9ybVBhc3RlYm9hcmQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBQbGF0Zm9ybVJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VDMDFENzBDMjc0
RUI0MDA5RjRFQzkgLyogUGxhdGZvcm1TY3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTI5N0JF
M0Q1MTZDMDNDMDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDYxNkMwM0MwQjAwMzMxNkJEIC8qIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzQwMDQsNiArMzQwMTMs
NyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQwMEE3RDJERCAvKiBS
ZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3
RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2NEMwQUUyNTRDMTZG
OTAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90
ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0Ex
NTU0MjE3N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IDU1YmMxZjhkYjI0OWQzMzgyMmU3ODg5Y2E3ODNmNWJlYzAyNWEyOTku
LjI5MGZhNzI0NDk5MzEwYzAzOGVkNTZkYTU1OGEzMWNkMTc2ZmRjZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC0xOTQ5LDkgKzE5NDksNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRR
dWVyeVBhcmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29u
dGV4dC0+Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9j
b250ZXh0LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBS
ZWZQdHI8V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVy
KCkKQEAgLTIwNDEsMTcgKzIwMzksMTEgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihXZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1Q6IHsKLSAgICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRT
YW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1Q6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0
ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpURVhUVVJFX01BWF9MT0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9N
SU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV9NSU5fTE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFy
YW1ldGVyZihzYW1wbGVyLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNh
bXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxpZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMTg1ZThjNjJlNmZiZTMxZjMxMzg4YzBjOWY4MGQ4MWNl
ZTI0YTNiMS4uYjg3NTQyYTcwN2ZhODY2YzhhMjgyMDFjNzA4ZGY3NmUyNGRhNmUwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKQEAgLTcxMCw4ICs3MTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENhbgog
ICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAgICAgcmV0
dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKKyAgICBh
dXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RX
aW5kb3cpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxlbWVudCkg
ewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAppbmRleCA0YTQyMGJmMGEx
MTZjY2NhYjVkYjg3YTI2ZDhiYTI0MjgyOGYyZDU1Li44OWE2M2UzNjIxNzEyMjRiNDEzYTQ5NTQy
MzEyZTM4MzZiNmViYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5j
cHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBXZWJHTFN5bmM6OnVwZGF0ZUNhY2hlKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYWxs
b3dDYWNoZVVwZGF0ZSA9IGZhbHNlOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0U3luY2l2KG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTLCBzaXplb2Yo
bV9zeW5jU3RhdHVzKSwgJm1fc3luY1N0YXR1cyk7CisgICAgbV9zeW5jU3RhdHVzID0gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaShtX3N5bmMsIEdyYXBoaWNzQ29udGV4dEdM
OjpTWU5DX1NUQVRVUyk7CiAgICAgaWYgKG1fc3luY1N0YXR1cyA9PSBHcmFwaGljc0NvbnRleHRH
TDo6VU5TSUdOQUxFRCkKICAgICAgICAgc2NoZWR1bGVBbGxvd0NhY2hlVXBkYXRlKGNvbnRleHQp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDBhMDk4ZDJkYjQ5MjBkNzNjMmYxMDgxNDVi
MjMwYmQ5MDg0YTY5NWIuLjc0MmRlNGM4Njg3NDhkMDU0OTJkMzFiYTRhOTc4N2VkM2YxYWMzZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUyOCw2ICs1MjgsMTMgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW8KICAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0w+IENocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5j
cmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBkaXNwbGF5SUQoKSk7Cit9CisjZW5k
aWYKKwogUGxhdGZvcm1EaXNwbGF5SUQgQ2hyb21lOjpkaXNwbGF5SUQoKSBjb25zdAogewogICAg
IHJldHVybiBtX3BhZ2UuZGlzcGxheUlEKCk7CkBAIC01NDEsNiArNTQ4LDcgQEAgdm9pZCBDaHJv
bWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9w
dGlvbmFsPHVuc2lnbmUKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCwgbm9taW5hbEZyYW1lSW50ZXJ2YWwpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
R1JBUEhJQ1NfQ09OVEVYVF9HTCkKKyAgICAvLyBUT0RPOiBHUFUgcHJvY2Vzcy4gQ2hhbmdlIHRv
IEdDR0xNYW5hZ2VyLCBtYWtlIGl0IHdvcmssIHJldHVybiBudWxsIGZvciBvdGhlcnMuCiAgICAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NyZWVuRGlk
Q2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4
IDIzMzI4ZjU2YTE5MTIwNDlkNDc5NzY0MWQwMTQwMDU1MTU5MDM1MDIuLmE4OWRkMWExZDg2NWU1
MzI4ZWIwNTA1NzY1NDBkM2YyMzJhM2NmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtODYsNiAr
ODYsMTAgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVy
cmlkZTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQ
bGF0Zm9ybURpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+KSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggM2E5ZTFkNjY5MDk3ZTU5NWQ5YjU3ZmM0Y2ZmN2U2
MWE1ZDE4ZDBhOS4uOGYxOGZkZmYwNDk5MDM3NTg5OGIxN2I5MjhjYzBlMDYwMGU5MWM3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMjUsNiArMzI1LDEwIEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAorI2lmIEVO
QUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2Vi
Q29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRp
ZgorCiAgICAgLy8gUGFzcyBudWxscHRyIGFzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRldGF0Y2gg
dGhlIHJvb3QgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KEZyYW1lJiwgR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVmll
d092ZXJsYXlHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ib3N0V2luZG93LmgKaW5kZXggNDNkYjFmZmFlMDEyYmIyMTg5NGYyY2E5NjMwNzIxNDc2
NmFhZGQ5ZS4uNzM4MTE4YjIxZTNjMzM3YjJlNTMxYzk5NmQwOTliZDNlOWE1NjliMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSAiV2lkZ2V0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYzLDYgKzY0LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdy
YXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0
ID0gMDsKKyNlbmRpZgorCiAgICAgLy8gTWV0aG9kIGZvciByZXRyaWV2aW5nIHRoZSBuYXRpdmUg
Y2xpZW50IG9mIHRoZSBwYWdlLgogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRm
b3JtUGFnZUNsaWVudCgpIGNvbnN0ID0gMDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKaW5kZXggYTIyNTNjODFiZmUwYTBi
YjA5MTBiZGU2YzBkYjI2YWE3ODQ1MmZiMy4uN2FmYmE2ZWM1MDg4MTljYzFlYWJhZGNjZGUwYmI3
OWE4Mzg0MmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgKQEAgLTM0LDEzICszNCwxNiBAQCBXRUJDT1JFX0VYUE9SVCBpbnQg
cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKICNpZiBQTEFURk9STShXSU4pCiBpbmxpbmUg
Ym9vbCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc0lu
R1BVUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZWxpZiAhUExBVEZPUk0oQ09DT0EpCiBp
bmxpbmUgYm9vbCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBib29s
IGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAKIGJvb2wgaXNJbldlYlByb2Nlc3MoKTsKK2Jvb2wgaXNJbkdQVVByb2Nlc3Mo
KTsKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNzKCk7CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3NDb2NvYS5tbQppbmRleCBmYmQxZDQzYzA4Zjg2ZGMzYzE4ZWQyMTU2MGYwOGNmODdmYTFh
ZjM5Li5iMDZmZjQ3ZGZjNTQxNzIxZjY0YWEwZGUzOGIzYjkyZjg4MzgyNDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3NDb2NvYS5tbQpAQCAtOTYsNiArOTYsMTIgQEAgYm9vbCBpc0luV2ViUHJvY2Vz
cygpCiAgICAgcmV0dXJuIG1haW5CdW5kbGVJc1dlYlByb2Nlc3M7CiB9CiAKK2Jvb2wgaXNJbkdQ
VVByb2Nlc3MoKQoreworICAgIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc0dQVVByb2Nlc3MgPSBb
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBoYXNQcmVmaXg6QCJjb20u
YXBwbGUuV2ViS2l0LkdQVSJdOworICAgIHJldHVybiBtYWluQnVuZGxlSXNHUFVQcm9jZXNzOwor
fQorCiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgc3RhdGljIGJvb2wgbWFpbkJ1
bmRsZUlzTmV0d29ya1Byb2Nlc3MgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVu
dGlmaWVyXSBoYXNQcmVmaXg6QCJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmciXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYmE4
NjViMzMwOGU2Yzk0NTgyMjEyMjM3Nzk2ZDZmZDU3NzQ4NDdmOC4uYzI1ZTljYTM3ZDA4NTc4NjM0
NmU5Y2EzYWYyYzhkMWExMTgxYmRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI2Niw3ICsyNjYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIENPTE9SX0FUVEFDSE1FTlQxNV9FWFQgPSAweDhDRUYKICAgICB9OwogCi0gICAgLy8gV2Vi
R0wgZnVuY3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgor
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1
cC13ZWJnbCBzY3JpcHQuCiAKICAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6
IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVz
cwpAQCAtMjc4LDEwICsyNzgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9u
ZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwg
bG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25n
IGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dM
aW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBH
Q0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkx
LCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
c2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0
aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2Ft
cGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2
aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0y
OTUsMTUgKzI5NSwxNSBAQCBwdWJsaWM6CiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZm
ZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VY
VChHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpID0gMDsKIAogICAgIC8vIEdMX0FO
R0xFX2luc3RhbmNlZF9hcnJheXMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXpl
aSBwcmltY291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25n
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdD
R0xzaXplaSBwcmltY291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAv
LyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4
ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVp
KiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CkBAIC0zNjIsNyArMzYyLDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMdm9pZCogZGF0YSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSNlbmRpZgog
CiAgICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FN
RCgpID0gMDsKQEAgLTM3NCw2ICszNzMsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhhdCBtdXN0IGJl
IGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxhZ3Mgb24gc3VjaCBjb25m
aWd1cmF0aW9ucy4KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVs
YXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZSgpID0gMDsKKyNlbmRpZgogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZGY0YTEx
OWEzMjBkYWM2YWViNjMwNmQ0YzUwOTU1MTU4OGExOTczZS4uMzRkNTU2YjBjYzRhOWJiMWFlYTdh
NWE5NjhiYzY5NWIzYTJlMjc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMjcsMTEgKzI3LDEzIEBACiAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKICNpZiBFTkFCTEUoR1JBUEhJQ1Nf
Q09OVEVYVF9HTCkKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkZvcm1h
dENvbnZlcnRlci5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAg
LTQwMyw2ICs0MDUsMTUgQEAgc3RhdGljIGJvb2wgcGFja1BpeGVscyhjb25zdCB1aW50OF90KiBz
b3VyY2VEYXRhLCBHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdAogICAgIHJldHVybiB0cnVl
OwogfQogCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KQoreworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gcmVzdWx0
OworICAgIGlmIChob3N0V2luZG93KQorICAgICAgICByZXN1bHQgPSBob3N0V2luZG93LT5jcmVh
dGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmVzdWx0ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBo
b3N0V2luZG93KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCiBHcmFwaGljc0NvbnRleHRHTDo6
R3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0R0wqKQogICAgIDogbV9hdHRycyhh
dHRycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IDBhNzE1NDBjZTgwMjBmZDlmNTgxNjg2MDNmNjc2OWI5NDQ1MjI0
MTUuLmQ0NGE4ZGZkMGI1MWMzZmQ5ZjI5NWI0MzI1YjhiOTVmNDg0YmMyODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApA
QCAtNTksNiArNTksOCBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRH
TENWOwogI2VuZGlmCiAKKworLy8gQmFzZSBjbGFzcyBmb3IgZ3JhcGhpY3MgY29udGV4dCBmb3Ig
aW1wbGVtZW50aW5nIFdlYkdMIHJlbmRlcmluZyBtb2RlbC4KIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0R0w+IHsKIHB1YmxpYzoKICAg
ICBlbnVtIHsKQEAgLTY2OSw2ICs2NzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE5lY2Vzc2Fy
eSBkZXNrdG9wIE9wZW5HTCBjb25zdGFudHMuCiAgICAgICAgIFRFWFRVUkVfUkVDVEFOR0xFX0FS
QiA9IDB4ODRGNSwKICAgICAgICAgVEVYVFVSRV9CSU5ESU5HX1JFQ1RBTkdMRV9BUkIgPSAweDg0
RjYsCisKKyAgICAgICAgUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSA9IDB4OTNBOCwKICAg
ICB9OwogCiAgICAgLy8gQXR0ZW1wdCB0byBlbnVtZXJhdGUgYWxsIHBvc3NpYmxlIG5hdGl2ZSBp
bWFnZSBmb3JtYXRzIHRvCkBAIC05MTMsMTMgKzkxNywxNyBAQCBwdWJsaWM6CiAgICAgICAgIEdD
R0xpbnQgc2l6ZTsKICAgICB9OwogCisgICAgLy8gQ3JlYXRlcyBhIEdyYXBoaWNzQ29udGV4dEdM
IGluc3RhbmNlIHRvIHJlbmRlciBpbnRvIG9mZnNjcmVlbiBkZXN0aW5hdGlvbiBpbiBjb250ZXh0
IG9mIEhvc3RXaW5kb3cuCisgICAgLy8gSG9zdFdpbmRvdyBtaWdodCBhZmZlY3QgdGhlIGRlY2lz
aW9uIHdoaWNoIGJhY2tlbmQgaXMgdG8gYmUgdXNlZC4KKyAgICBzdGF0aWMgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
SG9zdFdpbmRvdyopOworCiAgICAgR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNz
Q29udGV4dEdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CiAgICAgdmlydHVhbCB+R3JhcGhp
Y3NDb250ZXh0R0woKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVudChDbGllbnQmIGNs
aWVudCkgeyBtX2NsaWVudHMuYWRkKCZjbGllbnQpOyB9CiAgICAgdm9pZCByZW1vdmVDbGllbnQo
Q2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsgfQogCi0gICAgLy8g
V2ViR0wgZnVuY3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRz
LgorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUt
Z3B1cC13ZWJnbCBzY3JpcHQuCiAKICAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dM
ZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSA9IDA7CkBAIC05ODIs
NyArOTkwLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJpYihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBt
YXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgPSAw
OwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmpl
Y3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI3LDEwICsxMDM0LDYgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0dHJp
YgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlwdHIg
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2Rl
KSA9IDA7CkBAIC0xMTc5LDcgKzExODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVu
ZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVj
dCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAgICAgLy8g
Z2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxh
dGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgPSAw
OworICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0
IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVNhbXBsZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVNhbXBsZXIo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7CkBAIC0xMTg4LDggKzExOTEsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSA9IDA7CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRl
cgotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xm
bG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZp
cnR1YWwgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxk
IGZsYWdzKSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMpID0g
MDsKQEAgLTExOTcsNyArMTIwMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGNs
aWVudFdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGlt
ZW91dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZp
ZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgPSAwOwogICAgIC8vIGdldFN5bmNQYXJhbWV0
ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3luY2l2KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dM
aW50IGdldFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVh
bCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSA9
IDA7CkBAIC0xNDAwLDcgKzE0MDMsNiBAQCBpbmxpbmUgR0NHTGludCBHcmFwaGljc0NvbnRleHRH
TDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdQogICAgIHJl
dHVybiB2YWx1ZVswXTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBl
c0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aAppbmRleCBlN2M2OWIyOGRjZTQ2NTgyNTc1NzczMzMyNWI4ZjQ0ZGYyNzIwN2I5Li5iMDllYjdj
MTNmM2Q5Mjc4NzRiNDQ2ZmRjZDJiYTljNzkyZTAxODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtMjUsNyArMjUsOSBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8bGltaXRz
PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Niw2ICs0OCw3IEBAIHR5cGVkZWYgdW5zaWduZWQg
c2hvcnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKIHR5cGVkZWYg
aW50cHRyX3QgR0NHTGludHB0cjsKIHR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRyOwordHlw
ZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIHR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKIHR5cGVk
ZWYgbG9uZyBsb25nIEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1
aW50NjQ7CkBAIC01OCwxNiArNjEsMjMgQEAgdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2Jq
ZWN0OwogdHlwZWRlZiB1bnNpZ25lZCBHTHVpbnQ7CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IEV4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+
CitpbmxpbmUgY29uc3RleHByIHNpemVfdCBnY0dMU3BhbkR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgRXh0ZW50ID0gZ2NHTFNwYW5EeW5hbWljRXh0ZW50Pgogc3RydWN0IEdDR0xTcGFuOwogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbiB7Ci0gICAg
ZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXkpCisgICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJy
YXksIHNpemVfdCBzaXplID0gRXh0ZW50KQogICAgICAgICA6IGRhdGEoYXJyYXkpCi0gICAgeyB9
CisgICAgeworICAgICAgICBBU1NFUlQoc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dM
U3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0K
KyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIEV4dGVudD4gYXJyYXkpCisgICAgICAgIDogZGF0
YShhcnJheS5kYXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBS
RUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KICAg
ICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJldHVy
biAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC03NSw3ICs4NSw3IEBAIHN0cnVjdCBHQ0dMU3Bh
biB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxULCBnY0dM
U3BhbkR5bmFtaWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1ZlNp
emVfKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykK
QEAgLTg0LDcgKzk0LDggQEAgc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCk+IHsKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNp
emUoU3opCiAgICAgeyB9Ci0gICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mIGFycmF5KQorICAg
IHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dMU3BhbihXVEY6OlZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5KQogICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgp
KQogICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgpKQogICAgIHsgfQpAQCAtOTcsMTEgKzEw
OCwzOCBAQCBzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKT4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CiBHQ0dMU3BhbihUICgmKVtO
XSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1HQ0dMU3BhbihX
VEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+OwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+KSAtPiBHQ0dMU3BhbjxULCBOPjsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorR0NHTFNwYW4oV1RG
OjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JikgLT4gR0NHTFNwYW48VD47CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBHQ0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNv
dW50KQogewogICAgIHJldHVybiBHQ0dMU3BhbjxUPiB7IGRhdGEsIGNvdW50IH07CiB9CisKKy8v
IFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdD
R0x1Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hv
cnQsIGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwg
dWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJf
dD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsK
K3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKEdDR0xpbnRwdHIpID09IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXpl
b2YoR0NHTHNpemVpcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKEdDR0x2b2lkcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKEdDR0xjaGFyKT09IHNpemVvZih1aW50OF90KSk7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PEdDR0xpbnQ2NCwgaW50NjRfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVf
djxHQ0dMdWludDY0LCB1aW50NjRfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxQ
bGF0Zm9ybUdMT2JqZWN0LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5
bmMpID09IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxH
Q0dMdm9pZCwgdm9pZD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMGFhMjBjZTFhMjQzNThjYWFmMzEzMmYxNzhiOTdh
M2M0ODBkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTAsMCAr
MSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2VDb2NvYS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKy8vIE5hbWUg
Zm9yIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBiYXNlIGNsYXNzIG9mIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMIHByb3h5LgorLy8gRHVlIHRvIHRoZSBsYWNrIG9mIGFic3RyYWN0aW9ucywgd2UgY3Vy
cmVudGx5IG5lZWQgdG8gaW5oZXJpdCB0aGUKKy8vIHBsYXRmb3JtIGRlcGVuZGVudCBpbXBsZW1l
bnRhdGlvbiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBpbmhlcml0YW5jZSBjaGFpbgorLy8gb2YgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS4KKy8vIFRoaXMgbWVhbnMgd2UgY2Fubm90IGhhdmUg
YSByZWFsIHBsYXRmb3JtIGluZGVwZW5kZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkg
YmFzZSBjbGFzcy4KKy8vIEZvciB0aGlzIHJlYXNvbiB3ZSBtdXN0IHJlZmVyIHRvIHRoZSBjb25j
cmV0ZSBjbGFzcyBmb3IgdGhlIHRpbWUgYmVpbmcuCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2lu
ZyBQbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTsKKyNlbmRpZgorfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdkNTc0NDY1YTljMTAxMWMxZGYxZWZmNTc3
ZGRlNmY5NTNjNDMwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQmFzZS5oCkBAIC0wLDAgKzEsNzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZP
Uk0oQ09DT0EpCisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgYmFzZSBjbGFzcyBm
b3IgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKy8vIFRoaXMgaW1w
bGVtZW50cyB0aGUgcGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29yZSBpbnRlcm5hbCBmdW5jdGlv
bmFsaXR5OgorLy8gLSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBtYW5hZ2VtZW50LgorLy8gLSBD
b21wb3NpdGluZyBzdXBwb3J0LgorLy8gVGhlIHBhcnRzIHdlcmUgbmVlZGVkIHRvIGJlIGltcGxl
bWVudGVkIGR1ZSB0byBsYWNrIG9mIGFic3RyYWN0aW9ucyBhbmQKKy8vIHNtYWxsIHBlbmRpbmcg
Zml4ZXMgYXQgdGhlIHRpbWUgb2Ygd3JpdGluZy4KK1dFQkNPUkVfRVhQT1JUIGNsYXNzIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0
R0wsIHB1YmxpYyBFeHRlbnNpb25zR0wgeworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xCYXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWw7CisgICAgUGxh
dGZvcm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBlbmFibGVQcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lv
bnMoKSBmaW5hbCB7IHJldHVybiAqdGhpczsgfQorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkg
ZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJl
bmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxp
YW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBl
cnJvcikgZmluYWw7CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBm
aW5hbDsKKyAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2
b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5n
ZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NH
TGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICBS
ZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpIGZpbmFs
OworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikg
ZmluYWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBz
aW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVT
RShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsg
cmV0dXJuIG51bGxwdHIgfTsKKyNlbmRpZgorICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dl
YkdMTGF5ZXI7CisKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDRk
MDI1Yjk5MzQyMjc3NmI5YjVmNGFhYmMzOWEwYzc4OTE5NDBhOTkuLmM4OTNhYTdlZjMxNjNhYjM4
Y2Q5NjY3ZjU1ODM1NjJiZGZjNWQ5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQ2
LDI4ICs0Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEV4dGVuc2lvbnNHTEFOR0xFOjpFeHRl
bnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJ
bmRleGVkR2V0U3RyaW5nKQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMo
ZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1faXNOVklESUEoZmFsc2Up
Ci0gICAgLCBtX2lzQU1EKGZhbHNlKQotICAgICwgbV9pc0ludGVsKGZhbHNlKQotICAgICwgbV9p
c0ltYWdpbmF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXpl
KGZhbHNlKQogICAgICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRHZXRTdHJpbmcp
CiB7Ci0gICAgLy8gRklYTUU6IGlkZWFsbHksIHJlbW92ZSB0aGlzIGluaXRpYWxpemF0aW9uIGFs
dG9nZXRoZXIuIEFOR0xFCi0gICAgLy8gc3Vic3VtZXMgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBn
cmFwaGljcyBkcml2ZXIgd29ya2Fyb3VuZHMuCi0gICAgbV92ZW5kb3IgPSBTdHJpbmcocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAg
bV9yZW5kZXJlciA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0
U3RyaW5nKEdMX1JFTkRFUkVSKSkpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gdmVuZG9yQ29tcG9u
ZW50cyA9IG1fdmVuZG9yLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAg
ICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygibnZpZGlhIikpCi0gICAgICAgIG1faXNO
VklESUEgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8
fCB2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhbWQiKSkKLSAgICAgICAgbV9pc0FNRCA9IHRy
dWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImludGVsIikpCi0gICAgICAg
IG1faXNJbnRlbCA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImlt
YWdpbmF0aW9uIikpCi0gICAgICAgIG1faXNJbWFnaW5hdGlvbiA9IHRydWU7CiB9CiAKIEV4dGVu
c2lvbnNHTEFOR0xFOjp+RXh0ZW5zaW9uc0dMQU5HTEUoKSA9IGRlZmF1bHQ7CkBAIC0xMDMsNyAr
ODMsNyBAQCBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwg
bV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIAotaW50IEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK0dMaW50IEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKIHsKICAgICByZXR1cm4gR3JhcGhpY3ND
b250ZXh0R0w6Ok5PX0VSUk9SOwogfQpAQCAtMTE0LDEwICs5NCwxMSBAQCBTdHJpbmcgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2Jq
ZWN0IHNoYWRlcgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpbnQgc291cmNlTGVu
Z3RoID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJf
U09VUkNFX0xFTkdUSF9BTkdMRSk7CisKICAgICBpZiAoIXNvdXJjZUxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5n
dGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVz
IG51bGwgdGVybWluYXRpb24uCi0gICAgaW50IHJldHVybmVkTGVuZ3RoID0gMDsKKyAgICBHQ0dM
aW50IHJldHVybmVkTGVuZ3RoID0gMDsKICAgICBnbDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKHNoYWRlciwgc291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0YSgp
KTsKICAgICBpZiAoIXJldHVybmVkTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKQEAgLTE0Nyw3ICsxMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXpl
QXZhaWxhYmxlRXh0ZW5zaW9ucygpCiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMgPSB0cnVlOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIo
bG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RY
MCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNr
LCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7
CiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBzdXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1
ZmZlcl9tdWx0aXNhbXBsZS4KICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCkBAIC0xNTYsNyArMTM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1l
YnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcKICAgICBnbDo6
QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBk
c3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM1LDcgKzIxNiw3IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25zdCBH
Q0dMZW51bSogYnVmcykKICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQobiwgYnVmcyk7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI0MywxNSArMjI0LDE1IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpCiAgICAg
Z2w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3Vu
dCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlw
ZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0
KSksIHByaW1jb3VudCk7CisgICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KG9mZnNldCksIHByaW1jb3Vu
dCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yODYsNyArMjY3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBp
eGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0cKICAgICBn
bDo6UmVhZFBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
Ojp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1f
aXNGb3JXZWJHTDIpCiAgICAgICAgIGludGVybmFsZm9ybWF0ID0gYWRqdXN0V2ViR0wxVGV4dHVy
ZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwpAQCAtMzEyLDcg
KzI5Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtCiAgICAgZ2w6OlRleFBhcmFtZXRlcml2
Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzIwLDcgKzMwMSw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgaW50CiAgICAgZ2w6OlRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGJ1ZlNpemUsIHBpeGVscyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGlu
dCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2
b2lkKiBkYXRhKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTMzMCw3ICszMTEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpj
b21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldgog
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRh
KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC0zMzksNyArMzIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dAogICAgIG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQt
Pm1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTM0Nyw3ICszMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2Vk
VGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldgogICAgIGdsOjpD
b21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRh
dGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50
IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM1Niw3ICszMzcsNyBAQCB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50CiB9CiAKIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NCw3ICszNDUs
NyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbgogICAgIGdsOjpUZXhJbWFnZTNEUm9idXN0QU5H
TEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQyMCw3ICs0MDEsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdM
RShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUwMSw3
ICs0ODIsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBs
ZWZ2Um9idXN0QU5HTEUocG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTA5LDcgKzQ5MCw3
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC01MzcsNyArNTE4LDcgQEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXgKIH0KICNlbmRpZgogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNp
emVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1Jv
YnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93
cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTU3NCw3ICs1NTUsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVz
dEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQwogI2VuZGlmCiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9y
bWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTU4Miw3ICs1NjMsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRu
VW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CkBAIC01OTAsNyArNTcxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwK
ICAgICBnbDo6R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5V
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IDU3
YmI5M2JjODRjMzM1OTBmYmNmNGIzZjdhMWViNWE1NWM1OTI1NmMuLmQyOGZkZDM1OTg3ZGU1NzM0
MGZkMDk1NDIyZjJmNjRkNWY3YjM4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEg
KzU2LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1
ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25n
IGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25n
IG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVi
dWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBH
Q0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgx
LCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBk
cmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsg
fQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAg
IGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsg
fQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0g
ICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21l
bW9yeQogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAg
LTEzOSwxOCArMTMwLDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9j
b250ZXh0OwogCi0gICAgYm9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBi
b29sIG1faXNJbnRlbDsKLSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVx
dWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJp
Y3RlZE1heGltdW1UZXh0dXJlU2l6ZTsKLQogICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5n
IHsgZmFsc2UgfTsKIAotICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJl
cjsKLQogICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50
IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1f
d2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xv
ckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IGZlYjBiZWJlZjMxNWYwZTEzOGJhOTlkNjJlYjZjZmNlZDUxOTM2N2EuLjJlM2Zi
NWY3NWRlMTNjMWZiYjBjZmNlYTJjMzk4MmM0YzBmMTg2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC0yMDAzLDIyICsyMDAzLDYgQEAgR0NHTGludCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY28KICAgICByZXR1cm4gZ2w6OkdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0
ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0
ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xm
bG9hdD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBu
YW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0
cmliaXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZh
bHVlLmRhdGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIzMTUsMTIgKzIyOTksMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQogICAg
IGdsOjpFbmRRdWVyeSh0YXJnZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRRdWVyeU9iamVjdHVpdihHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50
KiBwYXJhbXMpCitHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmpl
Y3R1aShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTHVpbnQgdmFsdWUg
PSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIHJl
dHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5h
bWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiAvLyBUcmFu
c2Zvcm0gRmVlZGJhY2sgRnVuY3Rpb25zCkBAIC0yNzUzLDIwICsyNzM4LDI0IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVuCiAgICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1l
LCBwYXJhbSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1w
bGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQog
eworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpH
ZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0
U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIs
ICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwog
Ci0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOwor
ICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwg
MSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIEdDR0xzeW5jIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MpCkBAIC0yODA5LDEyICsyNzk4LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5jIHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywg
R0NHTGluCiAgICAgZ2w6OldhaXRTeW5jKHN5bmMsIGZsYWdzLCB0aW1lb3V0KTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBw
bmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGds
OjpHZXRTeW5jaXYoc3luYywgcG5hbWUsIGJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlKTsKKyAgICBn
bDo6R2V0U3luY2l2KHN5bmMsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zv
cm1GZWVkYmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpp
bmRleCAxNDEzYTY4ZGFhZDVhNTI2YmY1YzZhMGViZTkwNzhmZGQ5NGZlNmIyLi4wNWQzNmEwY2Qw
ZmVhNzRlN2NhZDc1NmQ4YmZhYjkyODY0ZTE0ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIEVHTERpc3BsYXkg
SW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwogICAg
IEVHTGludCBtaW5vclZlcnNpb24gPSAwOwogICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLSAgICBi
b29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICFpc0luV2Vi
UHJvY2VzcygpOworICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRT
dXBwb3J0ID0gIShpc0luV2ViUHJvY2VzcygpIHx8IGlzSW5HUFVQcm9jZXNzKCkpOwogICAgIGlm
IChzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKICAgICAgICAg
Ly8gRm9yIFdLMSB0eXBlIEFQSXMgd2UgbmVlZCB0byBzZXQgInZvbGF0aWxlIHBsYXRmb3JtIGNv
bnRleHQiIGZvciBzcGVjaWZpYwogICAgICAgICAvLyBBUElzLCBzaW5jZSBjbGllbnQgY29kZSB3
aWxsIGJlIGFibGUgdG8gb3ZlcnJpZGUgdGhlIHRocmVhZC1nbG9iYWwgY29udGV4dApAQCAtMTY3
LDYgKzE2NywxMSBAQCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZQogICAgIHJldHVybiBjb250ZXh0
OwogfQogCitSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cnMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woYXR0cnMsIG51bGxwdHIpKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6
IFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYy
Nzk0Pi4KIAogc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29u
dGV4dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJ
RCBwcmVmZXJyZWRHUFVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjIzNjI2OTAwMTE1ZmJkNDAxNWIzMDhj
MTNlOWY3ZGRjODU2NTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5o
CkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworT0JK
Q19DTEFTUyBXZWJHTExheWVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgYmFzZSBj
bGFzcyBmb3IgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgcHJveHkgc2lkZSBpbXBsZW1lbnRhdGlv
biBvbiBDb2NvYS4KKy8vIFRoaXMgaW1wbGVtZW50cyB0aGUgcGFydHMgdGhhdCBhcmUgdXNpbmcg
V2ViQ29yZSBpbnRlcm5hbCBmdW5jdGlvbmFsaXR5OgorLy8gLSBEcmF3aW5nIGJ1ZmZlciB0cmFj
a2luZyBtYW5hZ2VtZW50LgorLy8gLSBDb21wb3NpdGluZyBzdXBwb3J0LgorLy8gVGhlIHBhcnRz
IHdlcmUgbmVlZGVkIHRvIGJlIGltcGxlbWVudGVkIGR1ZSB0byBsYWNrIG9mIGFic3RyYWN0aW9u
cyBhbmQKKy8vIHNtYWxsIHBlbmRpbmcgZml4ZXMgYXQgdGhlIHRpbWUgb2Ygd3JpdGluZy4KK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eg
OiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wsIHB1YmxpYyBFeHRlbnNpb25zR0wgeworcHVibGlj
OgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlQ29jb2EoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFi
bGVkOworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRl
eHRHTCgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJl
KCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsOworICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZv
aWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0
R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CisgICAgYm9vbCBtb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtDb250ZXh0
Q2hhbmdlZCgpIGZpbmFsOworICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7
CisgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSBmaW5hbDsKKyAg
ICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOwor
ICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkg
ZmluYWw7CisgICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXIqKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKKyAgICB2
b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVByZXNl
cnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOworCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQorICAgIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKKyNlbmRp
ZgorICAgIC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBFeHRlbnNp
b25zR0w6OmlzRW5hYmxlZDsKKyAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29s
IGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgPSAwOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXZWJHTExheWVy
PiBtX3dlYkdMTGF5ZXI7CisgICAgTGlzdEhhc2hTZXQ8R0NHTGVudW0+IG1fc3ludGhldGljRXJy
b3JzOworCisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgorICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+
IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxl
ZEV4dGVuc2lvbnM7CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIgY2xlYXIgdHJhY2tp
bmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBtX2xheWVyQ29tcG9z
aXRlZCA9IGZhbHNlOworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IHsg
MCB9OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGIyMGRhYjEwZGMzNDhhMmM2
ZThmMjY1OWJkMDEzY2RjZmE5YWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbQpAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKQorCisjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAi
SW1hZ2VEYXRhLmgiCisjaW1wb3J0ICJXZWJHTExheWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmIGF0dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7Cit9CisKK1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6On5SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hKCkKK3sKK30KKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dEdMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25z
dAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV93ZWJHTExheWVyLmdldCgpOworfQorCisKK0V4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJu
ICp0aGlzOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6
OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93
ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBvd2Vy
UHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30K
KworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjppc0dMRVMyQ29t
cGxpYW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0ZXMoKS5pc1dlYkdM
MjsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpzeW50
aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikKK3sKKyAgICAvLyBOZWVkIHRvIG1vdmUgdGhl
IGN1cnJlbnQgZXJyb3JzIHRvIHRoZSBzeW50aGV0aWMgZXJyb3IgbGlzdCB0bworICAgIC8vIHBy
ZXNlcnZlIHRoZSBvcmRlciBvZiBlcnJvcnMsIHNvIGEgY2FsbGVyIHRvIGdldEVycm9yIHdpbGwg
Z2V0CisgICAgLy8gYW55IGVycm9ycyBmcm9tIGdsRXJyb3IgYmVmb3JlIHRoZSBlcnJvciB3ZSBh
cmUgc3ludGhlc2l6aW5nLgorICAgIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwor
ICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBt
X2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlQ29jb2E6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQoreworICAgIG1fbGF5ZXJD
b21wb3NpdGVkID0gdHJ1ZTsKKyAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
KyAgICBpZiAoIWF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgICAgICBtX2J1ZmZl
cnNUb0F1dG9DbGVhciA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOworICAg
ICAgICBpZiAoYXR0cnMuZGVwdGgpCisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8
PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJz
LnN0ZW5jaWwpCisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0Nv
bnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgIH0KKyAgICBmb3IgKGF1dG8qIGNsaWVu
dCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmRpZENvbXBvc2l0
ZSgpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6Omxh
eWVyQ29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwor
fQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6Om1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpCit7CisgICAgYm9vbCBtb3ZlZEFuRXJyb3IgPSBmYWxz
ZTsKKyAgICAvLyBTZXQgYW4gYXJiaXRyYXJ5IGxpbWl0IG9mIDEwMCBoZXJlIHRvIGF2b2lkIGNy
ZWF0aW5nIGEgaGFuZyBpZgorICAgIC8vIGEgcHJvYmxlbSBkcml2ZXIgaGFzIGEgYnVnIHRoYXQg
Y2F1c2VzIGl0IHRvIG5ldmVyIGNsZWFyIHRoZSBlcnJvci4KKyAgICAvLyBPdGhlcndpc2UsIHdl
IHdvdWxkIGp1c3QgbG9vcCB1bnRpbCB3ZSBnb3QgTk9fRVJST1IuCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIEdDR0xlbnVtIGVycm9yID0gZ2V0RXJy
b3IoKTsKKyAgICAgICAgaWYgKGVycm9yID09IE5PX0VSUk9SKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CisgICAgICAgIG1vdmVkQW5F
cnJvciA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBtb3ZlZEFuRXJyb3I7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6c2V0QnVmZmVyc1RvQXV0b0Ns
ZWFyKEdDR0xiaXRmaWVsZCBidWZmZXJzKQoreworICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMo
KS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0g
YnVmZmVyczsKK30KKworR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2E6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
YnVmZmVyc1RvQXV0b0NsZWFyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlQ29jb2E6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikK
K3sKK30KKworUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2VDb2NvYTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQoreworICAgIHJldHVy
biBudWxscHRyOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29j
b2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2E6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6ZW5hYmxl
UHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBvcnQg
cmVhc29ucy4KKyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1v
dmVkLgorICAgIEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIo
KTsKK30KKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNz
Q29udGV4dEdMQ1YqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OmFzQ1Yo
KQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK2Jvb2wgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
OjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0
aWFsaXplZCgpOworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1l
KSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFk
ZChuYW1lKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2VDb2NvYTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJ
bml0aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjppbml0aWFsaXplKGNvbnN0IFN0
cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVu
c2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25z
LnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9u
KTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxp
dCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsK
K30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW0KaW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmEx
Mi4uOTlhZDkxNjUyNTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYs
NyBAQAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRDRy5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNp
bXBvcnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIK
ICNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAKaW5kZXggMTc3ODZhNjRiYTRlMWRhMDA5NjRlYWU5OTdkMjkyNzY0ZGFkMTg5Ni4uNTljZmI3
NTkzYjFhNmIxZmI1MDliY2FjZGRjZDY5YjdiZDc2YzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQogI2VuZGlmCiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
CiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHCiAjZW5k
aWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZDI4ZjRhMDMxZWJk
YzQ4Mzg3NWQzOTg0ODdkNTc4NzQ4ZmRlNDdlNy4uNmFkOWY0MGMyMTEwOWZkYmU4MmQzNWYxNDA3
ZDFkNjg0OTI5OTc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0yNTEs
NyArMjUxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAg
IGlmICghbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsyNjQs
NyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25n
IGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsCiAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fZ2xWZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmlu
ZGV4IDA5OTI2NzhiOGRjMWUxODNkOTgyNTliNzczMTVjMzYxMjE3MDEzMGYuLjUzOTI0MDc5NWMz
YzM4YjZmZjRiMGIxZjBjMDk4ZGI3ZmU3OGI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oCkBAIC04Niw3ICs4Niw3IEBAIHR5cGVkZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcs
IHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1Ymxp
YyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUoR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlv
bjo6T2Zmc2NyZWVuKTsKQEAgLTk0LDYgKzk0LDggQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlU2hh
cmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KTsKKyAgICBzdGF0aWMg
UmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9j
b250ZXh0T2JqOyB9CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJH
TExheWVyLmdldCgpKTsgfQpAQCAtMTk1LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGdl
dEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAgYm9v
bCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQs
IFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAgIHZvaWQgZ2V0QXR0YWNoZWRT
aGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dM
c2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKTsKICAgICBHQ0dMaW50IGdl
dEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmlu
YWw7CiAgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJv
b2xlYW4+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBAIC0yMjMsOCArMjI1LDYgQEAg
cHVibGljOgogICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAgIHZv
aWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlm
b3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsK
LSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhB
dHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTM3Myw3ICszNzMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFBs
YXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CiAgICAgLy8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFs
dWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVTYW1wbGVyKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikgZmluYWw7CkBAIC0zODIsOCArMzgyLDggQEAgcHVibGljOgogICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
IGZpbmFsOwogICAgIC8vIGdldFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmlu
YWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAKICAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0Zmll
bGQgZmxhZ3MpIGZpbmFsOwogICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgZmluYWw7
CkBAIC0zOTIsNyArMzkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAgIC8vIGdl
dFN5bmNQYXJhbWV0ZXIKICAgICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGF0
IHRoZSBXZWJHTCBsZXZlbCBpZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3QuCi0gICAg
dm9pZCBnZXRTeW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTGludCAqdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOwpAQCAtNTM3LDcgKzUzNyw3IEBAIHByaXZhdGU6
CiAgICAgLy8gaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChj
b25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRh
dGVBdHRyaWJ1dGVzKCk7Ci0gICAgCisKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50IGRyYXdp
bmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8KICAgICB2
b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKQEAgLTU4OSw3ICs1ODksNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgLCBpc1ZhbGlkKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAg
CisKICAgICAgICAgU2hhZGVyU3ltYm9sTWFwJiBzeW1ib2xNYXAoZW51bSBBTkdMRVNoYWRlclN5
bWJvbFR5cGUgc3ltYm9sVHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN5bWJv
bFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSB8fCBzeW1ib2xUeXBlID09IFNI
QURFUl9TWU1CT0xfVFlQRV9VTklGT1JNIHx8IHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9U
WVBFX1ZBUllJTkcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggYWJiN2UyNWEwNmYwODVjY2VhY2ZmNWFiNmU4MjA0NTdjZTlhMmQ5My4uMTc5
NTRlZjk1Mzc0ZGNhMDVkZTQyNWI4YWVlNWU5NjUyYjQ2ZjA1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yMjc4LDE5ICsyMjc4LDE5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5k
cmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBn
ZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
IHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9u
cygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQs
IHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvcihp
bmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBIQVZFKE9QRU5HTF80KSAmJiBFTkFCTEUo
V0VCR0wyKQpAQCAtMjY4Niw3ICsyNjg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIKICAg
ICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwg
Y29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzLCBHQ0dMdWludCBz
cmNPZmZzZXQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFN
KGRyYXdidWZmZXIpOwpAQCAtMjczOCw3ICsyNzM4LDcgQEAgUGxhdGZvcm1HTE9iamVjdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmEKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdD
R0x1aW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2Jq
ZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHF1ZXJ5KTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwpAQCAtMjc4MiwxOCAr
Mjc4MiwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAgIFVOVVNFRF9QQVJBTShwYXJh
bSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQq
IHZhbHVlKQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogewogICAg
IFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVO
VVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDAuZjsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkKKwogewogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKICAg
ICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKIEdDR0xzeW5jIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMo
R0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCkBAIC0yODMyLDEyICsyODMz
LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5jIHN5
bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGluCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVvdXQp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMg
c3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkK
K0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMs
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzeW5jKTsKICAgICBVTlVTRURf
UEFSQU0ocG5hbWUpOwogICAgIFVOVVNFRF9QQVJBTShidWZTaXplKTsKLSAgICBVTlVTRURfUEFS
QU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAppbmRleCA2Mjg0NDUzMjUwMzM1MTA3ZmQ1NDk4MjIzMmI4YjllYWVjOGU2OGNiLi45ZjgzMTdi
MThkNTNiN2IzYzE2NjY5YTRjNTExOTkzZWFmMzdjNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAg
LTEyMyw2ICsxMjMsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
CiAKKyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMCiAgICAg
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAKICAgICBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyCkBAIC0yMTgsNiArMjE5LDcg
QEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24KIAorICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkKICAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkKIAogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CmluZGV4IGVkYjZjYTU5NzlkMmY0ZGVmOGIyYjJlNzczZjlkNjlhZTc4NmU3ZTku
LjRhNjdkZjhlZGMzYjRmNDg5MTg3NzAyZWZiZjA0MWIzZDM0YTkxMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIwLDYgKzIwLDcgQEAg
JChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9tb2RlbHMucHkKICQoSkFWQVND
UklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0
LkdQVVByb2Nlc3Muc2IuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTEzMSw2ICsxMzIsNyBAQCAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDc1Njc5ZjU1ZjVhZTM5OWI1ZWFmNDc3ZjE4
OTMyNTZiYzI0ODg0NGQuLjdjZDNkYmNjYTM1MGM2ZTM4MTRjMzQwYzM5M2M5NjNlZGJiOTgxMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtMTc1LDYgKzE3NSwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IDM3NzAxYjAxYzNjMWEyYzMwMGUxZGQyZDcyZTZiODUyMzdmNDI0YjUuLjk3NmIxYTVhM2U1
YzBkMzExNWQ0NDUwYzkwODYxNTcxOWU2ZGVjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTE3MSw2ICsxNzEsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwKKwlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzIFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUg
XApAQCAtMjI3LDYgKzIyOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVBsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IFwKIAlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAorCUdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgXAogCUdQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDBl
MmU4ODMyYjFlMjBmMWUwZjMxOWQ1ZDlmMjVkNzJjZTFiZjczYWQuLjQ0YjlmNjNlMTRjNTBiNzQx
OTkzZDZmMzVhNWE5NWY1YWZkODBhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY0LDYgKzY0LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg+CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgor
I2VuZGlmCisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2Vz
LmgiCkBAIC0yOTAsNiArMjk0LDIxIEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNT
RVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQordm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuZW5zdXJlKGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB9KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0
LmlzTmV3RW50cnkpOworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVh
c2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIEFT
U0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKK30KKyNlbmRpZgogdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKICAgICBncHVQcm9jZXNzKCku
bm93UGxheWluZ01hbmFnZXIoKS5jbGVhck5vd1BsYXlpbmdJbmZvQ2xpZW50KCp0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IDI2NzhkYmM0ZTVkMzY1ZmFkMjhlOGI0ODI3ODYzNzYyYTNjNDU3OGQuLjFkNGM4
ZGZmYWY0MzllODJkY2Y5MTk0ZDk3MGYyMWUyZTUwYmNhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzIsNiAr
MzIsOCBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlJlbW90
ZUF1ZGlvU2Vzc2lvbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
SWRlbnRpZmllci5oPgpAQCAtMzksNiArNDEsMTAgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgR1BVUHJvY2VzczsKQEAgLTU0LDYgKzYwLDcgQEAgY2xhc3MgUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
cjsKIGNsYXNzIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OwogY2xhc3MgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDsKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsK
QEAgLTExOSw2ICsxMjYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRl
cmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZv
aWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisjZW5kaWYKKwogICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOwogICAgIHZvaWQgc2V0
Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgV2ViQ29yZTo6
Tm93UGxheWluZ0luZm8mJik7CiAKQEAgLTE4MCw3ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4+Owog
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFw
OwotCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWFwIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7CisjZW5kaWYKICNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+
IG1fY2RtRmFjdG9yeVByb3h5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDUxOTRmYjRmNjA4NWQ2MjRkNTk4M2Y2MjUyYzM2NWViMzI3MWYzNDQuLjlkNTRlMTY0NTk1
YjBhMzYxZGZlNGM3NWJmZjQwMThhODU3NTljOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0yNSw2ICsyNSwxMCBAQAogbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNr
ZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQorI2lmIEVO
QUJMRShXRUJHTCkKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorICAg
IHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyNlbmRpZgogICAgIHZvaWQg
Q2xlYXJOb3dQbGF5aW5nSW5mbygpCiAgICAgdm9pZCBTZXROb3dQbGF5aW5nSW5mbyhib29sIHNl
dEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8g
bm93UGxheWluZ0luZm8pCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wOTc3YTFmZjA5NzUzZWY1YjE3NjhiYzYxNDI5N2UzMmRiMDRm
MjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlNZXNzYWdlcy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKK30K
KworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICA6IG1f
Y29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRy
aWJ1dGVzKSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQo
KSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFw
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50
NjQoKSwgKnRoaXMpOworICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBTdHJp
bmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpF
WFRFTlNJT05TKTsKKyAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0
LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5H
TEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldh
c0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30K
KworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Omdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBp
ZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5n
ZWROb3RpZmljYXRpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCit7CisgICAgbV9jb250ZXh0LT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKK3sK
KyAgICBtX2NvbnRleHQtPnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29udGV4dC0+cHJlcGFy
ZUZvckRpc3BsYXkoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmIGV4dGVu
c2lvbikKK3sKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKGV4
dGVuc2lvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVhMTI3Yjg1Mzg1ZmUzNGQzODk5YjA5Yzg4ZDM0NmZi
ZWM2ZThhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVt
ZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRH
TCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2Vk
IG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJn
ZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGZpbmFsCisgICAgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0woKSBmaW5hbDsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisg
ICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFs
OworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7
CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gR3Jh
cGhpY3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRDb21wb3NpdGUo
KSBmaW5hbDsKKyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y3ljbGVDb250ZXh0KCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90
aWZpY2F0aW9uKCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAg
ICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZvaWQg
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoU3RyaW5nJiYpOworI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rp
b25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NzI4ZmIwMjhmZDI4ZjI1ZWE0MjcxYTQ5ODk5YmFiYzE1
YTg5NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyMjYgQEAK
Ky8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2Vi
Z2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsK
KyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9p
ZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBQcmVw
YXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisgICAgdm9pZCBTZXRGYWlsTmV4dEdQ
VVN0YXR1c0NoZWNrKCkKKworICAgIHZvaWQgQWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJl
KQorICAgIHZvaWQgQXR0YWNoU2hhZGVyKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRl
cikKKyAgICB2b2lkIEJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBp
bmRleCwgU3RyaW5nIG5hbWUpCisgICAgdm9pZCBCaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVl
biwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBCbGVuZEVxdWF0aW9uKHVpbnQz
Ml90IG1vZGUpCisgICAgdm9pZCBCbGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJH
QiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHZvaWQgQmxlbmRGdW5jKHVpbnQzMl90IHNmYWN0
b3IsIHVpbnQzMl90IGRmYWN0b3IpCisgICAgdm9pZCBCbGVuZEZ1bmNTZXBhcmF0ZSh1aW50MzJf
dCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwgdWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90IGRz
dEFscGhhKQorICAgIHZvaWQgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQp
IC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENsZWFyKHVp
bnQzMl90IG1hc2spCisgICAgdm9pZCBDbGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4s
IGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHZvaWQgQ2xlYXJEZXB0aChmbG9hdCBkZXB0
aCkKKyAgICB2b2lkIENsZWFyU3RlbmNpbChpbnQzMl90IHMpCisgICAgdm9pZCBDb2xvck1hc2so
Ym9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkKKyAgICB2b2lkIENv
bXBpbGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIENvcHlUZXhJbWFnZTJEKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBi
b3JkZXIpCisgICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGlu
dDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVC
dWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBD
cmVhdGVGcmFtZWJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIENyZWF0ZVByb2dyYW0oKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDcmVhdGVSZW5kZXJidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCkg
LT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVGV4
dHVyZSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEN1
bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBEZWxldGVCdWZmZXIodWludDMyX3QgYXJn
MCkKKyAgICB2b2lkIERlbGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBE
ZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVSZW5kZXJidWZmZXIo
dWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgRGVsZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVwdGhGdW5jKHVp
bnQzMl90IGZ1bmMpCisgICAgdm9pZCBEZXB0aE1hc2soYm9vbCBmbGFnKQorICAgIHZvaWQgRGVw
dGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB2b2lkIERldGFjaFNoYWRlcih1
aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgRGlzYWJsZSh1aW50MzJfdCBj
YXApCisgICAgdm9pZCBEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisg
ICAgdm9pZCBEcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3Qg
Y291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRW5hYmxlKHVpbnQz
Ml90IGNhcCkKKyAgICB2b2lkIEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4
KQorICAgIHZvaWQgRmluaXNoKCkKKyAgICB2b2lkIEZsdXNoKCkKKyAgICB2b2lkIEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWlu
dDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1aW50MzJfdCBhcmczKQorICAgIHZvaWQgRnJhbWVi
dWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50
MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGludDMyX3QgbGV2ZWwpCisgICAgdm9pZCBG
cm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB2b2lkIEdlbmVyYXRlTWlwbWFwKHVpbnQzMl90
IHRhcmdldCkKKyAgICB2b2lkIEdldEFjdGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50
MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlm
b3JtKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1
ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1l
KSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJ1ZmZl
clBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTdHJpbmcodWludDMyX3QgbmFt
ZSkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZsb2F0
dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVy
ZW5jZTxHQ0dMZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcnYo
dWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVu
Y2U8R0NHTGludD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjQodWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgpIC0+IChpbnQ2
NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbWkodWludDMy
X3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZh
bHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8R0NHTGJvb2xlYW4+IHZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUpIC0+IChp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbUluZm9M
b2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlckluZm9Mb2codWludDMyX3Qg
YXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNo
YWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNp
b25UeXBlKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGlu
dCBwcmVjaXNpb24pIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJTb3VyY2UodWludDMy
X3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyaSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90
IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPEdD
R0xmbG9hdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtaXYodWludDMy
X3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBD
OjpBcnJheVJlZmVyZW5jZTxHQ0dMaW50PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3Qg
dmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxHQ0dMdWludD4gdmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5n
IG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVp
bnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSGludCh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBJc0J1ZmZlcih1aW50MzJfdCBhcmcwKSAt
PiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzRW5hYmxlZCh1aW50
MzJfdCBjYXApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNG
cmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIElzUHJvZ3JhbSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApIC0+
IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTaGFkZXIodWludDMy
X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1Rl
eHR1cmUodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBMaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB2b2lkIExpbmtQcm9ncmFtKHVpbnQz
Ml90IGFyZzApCisgICAgdm9pZCBQaXhlbFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBw
YXJhbSkKKyAgICB2b2lkIFBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykK
KyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBT
YW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgdm9pZCBTY2lzc29y
KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB2b2lkIFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBTdHJpbmcgc3RyaW5nKQorICAgIHZv
aWQgU3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2sp
CisgICAgdm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1
bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2sodWlu
dDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwg
dWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJf
dCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBTdGVuY2lsT3BTZXBhcmF0ZSh1aW50
MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3Mp
CisgICAgdm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUs
IGZsb2F0IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgVW5pZm9ybTFmKGludDMyX3Qg
bG9jYXRpb24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwg
aW50MzJfdCB4KQorICAgIHZvaWQgVW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgs
IGZsb2F0IHkpCisgICAgdm9pZCBVbmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4
LCBpbnQzMl90IHkpCisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9u
LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZvaWQgVW5pZm9ybTRmKGlu
dDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAg
dm9pZCBVbmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQor
ICAgIHZvaWQgVmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWIxZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJm
KHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVmVydGV4QXR0cmli
M2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwg
ZmxvYXQgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGlu
dDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlk
ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHZvaWQg
RHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90
IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNl
ZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBv
ZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0cmliRGl2aXNvcih1
aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB2b2lkIENyZWF0ZVZlcnRleEFy
cmF5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVs
ZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIElzVmVydGV4QXJyYXkodWlu
dDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBC
aW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIENvcHlCdWZmZXJTdWJEYXRh
KHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1aW50NjRfdCByZWFk
T2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3Qgc2l6ZSkKKyAgICB2b2lkIFVu
bWFwQnVmZmVyKHVpbnQzMl90IHRhcmdldCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZ
MCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBk
c3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMy
X3QgZmlsdGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVs
LCBpbnQzMl90IGxheWVyKQorICAgIHZvaWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAg
dm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlM0QodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNl
dCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBHZXRGcmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHBy
b2dyYW0sIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIFVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAg
dm9pZCBVbmlmb3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2
MSkKKyAgICB2b2lkIFVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVp
bnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB2b2lkIFVuaWZvcm00dWkoaW50MzJfdCBsb2Nh
dGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMp
CisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50
MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWko
dWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQz
Ml90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50
MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgRHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3Rh
cnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgQ2xlYXJCdWZmZXJmaSh1aW50MzJfdCBidWZmZXIsIGludDMyX3Qg
ZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qgc3RlbmNpbCkKKyAgICB2b2lkIENyZWF0
ZVF1ZXJ5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
RGVsZXRlUXVlcnkodWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBJc1F1ZXJ5KHVpbnQzMl90IHF1
ZXJ5KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJlZ2luUXVl
cnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB2b2lkIEVuZFF1ZXJ5KHVp
bnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdldFF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90IHBuYW1lKSAtPiAodWlu
dDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVTYW1wbGVyKCkg
LT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlU2Ft
cGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgSXNTYW1wbGVyKHVpbnQzMl90IHNhbXBs
ZXIpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFNhbXBs
ZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIFNhbXBsZXJQYXJh
bWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQor
ICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5h
bWUsIGZsb2F0IHBhcmFtKQorICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qg
c2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQz
Ml90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IENyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpCisg
ICAgdm9pZCBJc1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHZvaWQgQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1
aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHZvaWQgRW5kVHJhbnNmb3JtRmVlZGJhY2soKQor
ICAgIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0
b3I8U3RyaW5nPiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVyTW9kZSkKKyAgICB2b2lkIEdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkg
LT4gKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIFJlc3VtZVRy
YW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIEJpbmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAgICB2b2lkIEJpbmRCdWZmZXJS
YW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIsIHVp
bnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKKyAgICB2b2lkIEdldFVuaWZvcm1JbmRpY2Vz
KHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHVuaWZvcm1OYW1lcykgLT4gKFZlY3Rv
cjxHQ0dMdWludD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVV
bmlmb3Jtcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8R0NHTHVpbnQ+IHVuaWZvcm1JbmRpY2Vz
LCB1aW50MzJfdCBwbmFtZSkgLT4gKFZlY3RvcjxHQ0dMaW50PiBwYXJhbXMpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcg
dW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50
MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMy
X3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAg
dm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1
bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+
IChJUEM6OkFycmF5UmVmZXJlbmNlPEdDR0xpbnQ+IHBhcmFtcykgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAs
IGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0
WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90
IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBD
cmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisg
ICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4g
KFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEluc2VydEV2ZW50TWFy
a2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBh
cmcwKQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHZvaWQgRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQs
IGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
dWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zm
c2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKK30KKworI2VuZGlmCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmU3ZTc3NTRmNDczOWQzNzUxYzRiZTMyMDcwZDljYTk1ZDI1ZjA2ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0wLDAgKzEsOTE5IEBACisvKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBu
b3QgZWRpdC4KKy8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUg
c2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9u
cy4KKyNwcmFnbWEgb25jZQorICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJl
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAg
IH0KKyAgICB2b2lkIGF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFk
ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFk
ZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1
aW50MzJfdCBpbmRleCwgU3RyaW5nJiYgbmFtZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
YmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBi
aW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJp
bmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7
CisgICAgfQorICAgIHZvaWQgYmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBh
cmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEp
OworICAgIH0KKyAgICB2b2lkIGJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxv
YXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29s
b3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRp
b24odWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlv
bihtb2RlKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3Qg
bW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5i
bGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9p
ZCBibGVuZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAg
ICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdC
LCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0
QWxwaGEpOworICAgIH0KKyAgICB2b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3Qg
dGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgY2xlYXIodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIo
bWFzayk7CisgICAgfQorICAgIHZvaWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVu
LCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xl
YXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJE
ZXB0aChmbG9hdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChk
ZXB0aCk7CisgICAgfQorICAgIHZvaWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9y
TWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jb2xvck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
ZCksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihibHVlKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAg
IHZvaWQgY29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jb21waWxlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJE
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBib3JkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIp
OworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVy
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVi
dWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNy
ZWF0ZVByb2dyYW0oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Y3JlYXRlUmVuZGVyYnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgY3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmNyZWF0ZVNoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZv
aWQgZGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZUJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZl
cihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAg
IHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxl
dGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
U2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9
CisgICAgdm9pZCBkZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVwdGhGdW5jKGZ1bmMpOworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZs
YWcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4oZmxhZykpOworICAgIH0KKyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIs
IGZsb2F0IHpGYXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIs
IHpGYXIpOworICAgIH0KKyAgICB2b2lkIGRldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50
MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwg
YXJnMSk7CisgICAgfQorICAgIHZvaWQgZGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmRpc2FibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0Fy
cmF5cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAg
fQorICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihv
ZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5lbmFibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZs
dXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9p
ZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFj
aG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRh
Y2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1l
YnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWlu
dDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQs
IHRleHRhcmdldCwgYXJnMywgbGV2ZWwpOworICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50
MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lk
IGdldEFjdGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJ
bmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZl
QXR0cmliKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUsIFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJv
Z3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWlu
dDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2Nh
dGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdl
dCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgZ2V0U3RyaW5nKHVpbnQzMl90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5n
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
U3RyaW5nKG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRf
dCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxH
Q0dMZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOwor
ICAgICAgICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPEdDR0xmbG9hdD4odmFsdWUuZGF0YSgp
LCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBw
bmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJy
YXlSZWZlcmVuY2U8R0NHTGludD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXpl
KSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxHQ0dMaW50Pih2YWx1
ZS5kYXRhKCksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NCh1
aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFtZSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRJbnRlZ2VyNjRpKHVpbnQzMl90IHBuYW1lLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xpbnQ2NCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1pKHVpbnQzMl90
IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHBy
b2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1
ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxHQ0dMYm9v
bGVhbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xi
b29sZWFuLCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAg
ICAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8R0NHTGJvb2xlYW4+KHZhbHVlLmRhdGEo
KSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0RXJyb3IoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEVycm9yKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0
dGFjaG1lbnQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1JbmZvTG9nKHVpbnQzMl90IGFyZzAsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2coYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNo
YWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
U2hhZGVyaShhcmcwLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJJbmZvTG9nKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRl
clByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNpb25U
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8R0NHTGludCwg
Mj4sIGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgc3RkOjph
cnJheTxHQ0dMaW50LCAyPiByYW5nZSB7IH07CisgICAgICAgIEdDR0xpbnQgcHJlY2lzaW9uID0g
eyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJU
eXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZSwgJnByZWNpc2lvbik7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8R0NHTGludCwgMj4ocmFuZ2UuZGF0YSgpLCBy
YW5nZS5zaXplKCkpLCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlclNvdXJj
ZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShhcmcwKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0
VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtZnYodWlu
dDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8R0NHTGZsb2F0Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFs
dWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxHQ0dMZmxvYXQ+KHZhbHVlLmRhdGEoKSwg
dmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2KHVpbnQzMl90IHBy
b2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPEdDR0xpbnQ+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2Fz
dDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1p
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkFycmF5UmVmZXJlbmNlPEdDR0xpbnQ+KHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90
IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpBcnJheVJlZmVyZW5jZTxHQ0dMdWludD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgVmVjdG9yPEdDR0x1aW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZh
bHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJl
ZmVyZW5jZTxHQ0dMdWludD4odmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsK
KyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOworICAgIH0KKyAgICB2
b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzQnVmZmVyKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBjYXAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmlzRW5hYmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRnJhbWVidWZm
ZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1ZmZlcihhcmcwKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUmVuZGVyYnVmZmVy
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVmZmVyKGFyZzApOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
Ym9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmlzU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4dHVyZSh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAg
IHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxp
bmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcwKTsKKyAgICB9Cisg
ICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsKKyAgICB9Cisg
ICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CisgICAgfQor
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShmbG9hdCB2
YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZUNvdmVy
YWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7CisgICAgfQorICAg
IHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3IoeCwgeSwgd2lkdGgs
IGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0
cmluZyYmIHN0cmluZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFy
ZzAsIHN0cmluZyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywg
aW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0
ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1bmNT
ZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMy
X3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShm
YWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrKHVpbnQz
Ml90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrKG1hc2spOwor
ICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMy
X3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShm
YWNlLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3AodWludDMyX3QgZmFpbCwgdWlu
dDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
dGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3BT
ZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWlu
dDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcFNlcGFyYXRl
KGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVy
Zih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSk7Cisg
ICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWYoaW50
MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTFmKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWkoaW50MzJfdCBsb2Nh
dGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9j
YXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBm
bG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9j
YXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9u
LCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTJpKGxvY2F0aW9uLCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBs
b2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGkoaW50
MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHos
IHcpOworICAgIH0KKyAgICB2b2lkIHVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCB2YWxp
ZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmFs
aWRhdGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKHVpbnQz
Ml90IGluZGV4LCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRy
aWIxZihpbmRleCwgeCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3Qg
aW5kZXgsIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRl
eEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1
aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopOworICAgIH0KKyAgICB2
b2lkIHZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0Zihp
bmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1
aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6
ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB2aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3Qg
eSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZl
ckRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdD
R0xzaXplaXB0cj4oYXJnMSksIHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5z
dGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMy
X3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFu
Y2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3
RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lk
IHZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlz
b3IpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZl
cnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRW
ZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1aW50
MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNl
dCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IHNpemUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4o
d3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHNpemUpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bm1hcEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPnVu
bWFwQnVmZmVyKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGlu
dDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEs
IGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0
WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwg
ZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAgICB9CisgICAgdm9pZCBmcmFt
ZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQs
IHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNo
bWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICB9CisgICAgdm9pZCByZWFkQnVmZmVy
KHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMp
OworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3Rv
cmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTNE
KHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwor
ICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNl
dCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9
CisgICAgdm9pZCBnZXRGcmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYm
IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0xdWkobG9jYXRpb24sIHYwKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYw
LCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00
dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2
MiwgdWludDMyX3QgdjMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00dWkobG9j
YXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGko
dWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3Qg
dykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5
LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1aW50MzJfdCB3KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50
MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwg
c2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAg
ICB9CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBz
dGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1v
ZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZz
ZXQpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50
MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgs
IHN0ZW5jaWwpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUXVlcnkocXVlcnkpOworICAgIH0KKyAgICB2
b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUXVlcnkocXVl
cnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQs
IHF1ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBlbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldCk7CisgICAgfQorICAgIHZvaWQg
Z2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0UXVlcnkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpKHVp
bnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5
T2JqZWN0dWkocXVlcnksIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNhbXBsZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Y3JlYXRlU2FtcGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTYW1wbGVyKHNhbXBsZXIpOworICAg
IH0KKyAgICB2b2lkIGlzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJv
b2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19j
YXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFNhbXBsZXIodWlu
dDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFt
ZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1l
LCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2Ft
cGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAg
ICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0
ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBp
ZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQp
OworICAgIH0KKyAgICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGJpbmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCk7
CisgICAgfQorICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRp
dmVNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZlZWRiYWNr
KHByaW1pdGl2ZU1vZGUpOworICAgIH0KKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9
CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZl
Y3RvcjxTdHJpbmc+JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWlu
Z3MsIGJ1ZmZlck1vZGUpOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJh
Y2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7
CisgICAgfQorICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lk
IGJpbmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90
IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlckJhc2UodGFyZ2V0
LCBpbmRleCwgYnVmZmVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZz
ZXQsIHVpbnQ2NF90IHNpemUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJS
YW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNl
dCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oc2l6ZSkpOworICAgIH0KKyAgICB2b2lkIGdl
dFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdW5pZm9y
bU5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxHQ0dMdWludD4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQ+IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUlu
ZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1z
KHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxHQ0dMdWludD4mJiB1bmlmb3JtSW5kaWNlcywgdWlu
dDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEdDR0xpbnQ+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHBhcmFt
cyB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5p
Zm9ybUluZGljZXMsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHBhcmFtcykpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0luZGV4KHVp
bnQzMl90IHByb2dyYW0sIFN0cmluZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9y
bUJsb2NrSW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShw
cm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5n
KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1
bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtQmxv
Y2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5n
KTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9n
cmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90
IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxH
Q0dMaW50Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NH
TGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDApOworICAg
ICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1C
bG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBD
OjpBcnJheVJlZmVyZW5jZTxHQ0dMaW50PihwYXJhbXMuZGF0YSgpLCBwYXJhbXMuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJh
bWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gx
LCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRz
dFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5ibGl0RnJhbWVidWZmZXJBTkdM
RShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEs
IG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5T0VTKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRl
VmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2
b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFu
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
YmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAg
IHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1hcmtl
ckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nJiYg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hHcm91
cE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtlckVY
VCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBt
b2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQg
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwg
dWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zmc2V0
KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUo
dWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlz
b3IpOworICAgIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9H
UFVQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNz
TWFjLm1tCmluZGV4IGI3YmI2M2IyOWFkODAyMTcyZGYyN2ExMjg5NWJiMTk5OGZhNGI2YjAuLmE2
M2E1NGJlMmEzZWNkOGY1ZDIyMmJjZTBlNWM0Y2I5MzRlYzI3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KQEAgLTQ1LDggKzQ1LDggQEAgdm9p
ZCBHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXIKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShN
QUNDQVRBTFlTVCkKICAgICAvLyBIYXZpbmcgYSB3aW5kb3cgc2VydmVyIGNvbm5lY3Rpb24gaW4g
dGhpcyBwcm9jZXNzIHdvdWxkIHJlc3VsdCBpbiBzcGluIGxvZ3MgKDxyZGFyOi8vcHJvYmxlbS8x
MzIzOTExOT4pLgotICAgIE9TU3RhdHVzIGVycm9yID0gU2V0QXBwbGljYXRpb25Jc0RhZW1vbih0
cnVlKTsKLSAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBlcnJvciA9PSBub0Vycik7CisgICAgLy9P
U1N0YXR1cyBlcnJvciA9IFNldEFwcGxpY2F0aW9uSXNEYWVtb24odHJ1ZSk7CisgICAgLy9BU1NF
UlRfVU5VU0VEKGVycm9yLCBlcnJvciA9PSBub0Vycik7CiAjZW5kaWYKIAogICAgIGxhdW5jaFNl
cnZpY2VzQ2hlY2tJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTliZGI4NjdhYjg2Yjhj
NTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVkNjZkZGY5NWYyOTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMZWdhY3lDRE1Qcm94
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcwZmE1ZGU0ZmFkZTE1
MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4YjgyNWM2ZTQ1
YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLmgKaW5kZXggZDg5YjgwM2Y2YWJmNDFjOGU5ZWRkZTQxNDI3NjkzMjgyNmQxYjMz
OC4uOTg0OTQ3MDI0ODYwNTE4YzNhNjdhM2YyNjdiMmY1MGUyNGQwNjdlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLmgKQEAgLTI5LDEzICsyOSwxNCBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL1BvbGljeUNoZWNrZXIu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKaW5kZXggNmJmYmZhZmIyMDQ0NzgzMGQ3MzBj
MzhjNTVkOTE2MDIyYzIzZDMxNi4uMDZlMzA5ZTRkNTdlYTA0N2Y1ZWQ4MjkwMjU4YjE5Y2JjZGE2
MTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5oCkBAIC0zOCw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaAppbmRleCAzOTBjMGNlMWMy
N2I2MDhkYzk3YWFmYTUxODYzNjE4ODBjM2FmNGQzLi5lMWMwZmQ3YTAwZGE1MmIxNjU1OGM1MWRh
ZDRiYzg1YmExMTRlMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaApAQCAtMzAsNiArMzAsOCBAQAogI2lu
Y2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtMzgsNyArNDAsNiBAQAogbmFtZXNwYWNlIElQQyB7
CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAppbmRleCAzNjAzMTBiN2QxMjFk
Mjg2ZDhkMTYxZjE4M2FiZDBlNzQ1YjgzNTMzLi41NGYyZmQ3OGJiM2E4NTYxNGUwYzJjMTY0YjY2
NTVmYzA5MGY0N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBAIC0zMCwxMiArMzAsMTMgQEAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
KwogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCA3ODhjNWYw
MGMwMmY0ZjE0OGZlZWNjZDM4ZDEwNjgxOGIwZDdlOTYxLi4zYWI0ZTRiMWNmMWMxNDEyMzBjMTNl
NDU3NmM1ZWQ2ZTZlZmMyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAgLTM2LDcg
KzM3LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0
YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZjZlZDgxMWY1MzQyZmU0ODU1NTE3NmY4
OWQ1MTQ1NzU2MmM2NjU4NS4uMGJjZDU2NzNjOTM0NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJjMjcz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgpA
QCAtMzksMTAgKzQwLDYgQEAgT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uOwog
T0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0gLy8gbmFtZXNwYWNlIElQQwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAt
MTEyLDQgKzEwOSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgK
aW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlmZGVjMzY5MDE3NzI3NC4uOTNmMDNhODI1
NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRv
d25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3du
bG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBAIE9CSkNfQ0xBU1MgTlNQcm9ncmVzczsK
IE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCiAKLW5hbWVzcGFj
ZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAxNjVmMWM3
MjY3OGZhNTAuLjk4MGEwNmY3ODM5ZGJkNWU5ZjlkNTA0NTQwOWEzM2Q3N2IxYzAzODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJE
b3dubG9hZE1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgpAQCAtNDksNyArNTAs
NiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5u
ZWwuaAppbmRleCAzMTk2NDE5MGQxNDFkNTQ5ZGEwYmFmMmRjOGJmMjk3YjRlNTgxZTg5Li4wNDM0
YmY4ODA5YTdlYjNlY2MxOGU4ZjY1MGNjMDI3OGFlNmViNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CkBAIC00MCw3ICs0MSw2IEBAIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29k
ZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5k
ZXggNTJlYzM5MjY5MDIxOGVkZTY2OGQ1NWU2MzhkOGUxNzUwMmZkNmVlNS4uNzM0MjlhMDI3OTA2
YjQxNmEzOGMwYzZiMzk0NmEwZGI5ZmIyMDZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvU29ja2V0U3RyZWFtRXJyb3IuaD4KQEAgLTM3LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5oCmluZGV4IGQzM2NiZmYxMDg5Y2MxMDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQu
LmQzN2Q3ODA2OTgzYmJhNTQ3Y2EwZjkyMzVlYjRiZjZiNzMxNTY1YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
cXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
Lmg+CkBAIC00Myw3ICs0NCw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBE
ZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IGRiNTc5NWRkMjE3ZjQ1YWQ1ZjY3ZTMw
Yjc5MWY5MmUyNzZjMDI5ODYuLmRhNjE4YWUzYTNkNjUxOTIwZjY3YzY4NDhiODhhNzQ2NDNkNjA4
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFz
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBA
IC0yNiwxNCArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYm
IEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0VGFza0NvY29hLmgiCiAjZWxpZiBVU0UoU09VUCkKICNpbmNs
dWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogI2Vsc2UKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgK
aW5kZXggZGFjNjkzNTA3ZWIzZWZjZWE2ZDEwOTQ4MDFiYzAxYjM2ZmUyNjM5ZC4uZTY4MjZlNDdl
ODM5NTk0MDI4YWY4ZjRhZWQyMzkyYjRiMDVkMmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCkBAIC0yNywx
NSArMjcsMTIgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKIAorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNr
OwogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Nlc3Npb247CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNv
Y29hOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNv
Y2tldFRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29j
a2V0VGFza1NvdXAuaAppbmRleCBlNDIxYjllMWM3MTMxODQzNGY2NDg3ZjVmY2I1YTZhODdiZDcz
OTE5Li4wODg5MjM5NTlmZTQ2MGZmMmJiYTRjOGMwODM5OTgwNjU3YmYzNDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAu
aApAQCAtMjUsMTQgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0
d29ya1NvY2tldENoYW5uZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCmluZGV4IGUwMGEwY2NkZmE1ODc1YzAyOGM1MDUyMzExNDE3MjhlZTk1YjQzOTIu
LjZjMzIzNWEwMThiNDVhNmVhNDk4ZGMwNjQ4Y2U5MjY5OTRhMzQ3OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVj
b2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtNTMs
NiArNTQsNDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29k
ZXIgewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKKyAgICB1c2lu
ZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5
cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgaWYgKEV4dGVudCA9PSAwKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBh
cnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KKyAg
ICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIGlmIChFeHRlbnQgPT0gMCkKKyAgICAgICAgICAgIHJldHVy
biBBcnJheVJlZmVyZW5jZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRl
Y29kZXIuZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGln
bm9mKFQpKTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0
PGNvbnN0IFQqPihkYXRhKSwgRXh0ZW50KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5j
ZUR5bmFtaWNFeHRlbnQ+PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlS
ZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJh
eVJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihhcnJheVJlZmVyZW5jZS5zaXplKCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVy
ZW5jZS5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVm
ZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25v
ZihUKSk7CisgICAgfQorICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIGlmICghc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJl
ZmVyZW5jZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7Cisg
ICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4o
ZGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9w
dGlvblNldCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cnJheVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVu
Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZjNkY2RhZTk1YWY3NDFkZGQ3MTY0YTliOTE4ZGM3NzA2M2UzMTIx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZl
cmVuY2UuaApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQ
QyB7CisKK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVu
dCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgRXh0ZW50ID0gYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xh
c3MgQXJyYXlSZWZlcmVuY2U7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlS
ZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAg
QXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBU
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBt
X3NpemUoc2l6ZSkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHk+JiB2ZWN0b3IpCisgICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwg
bV9zaXplKHZlY3Rvci5zaXplKCkpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBtX2RhdGE7CisgICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAg
eworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0
YSwgbV9zaXplKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToK
KyAgICBjb25zdCBUKiBtX2RhdGEgeyB9OworICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5j
ZSB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJh
eVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEo
ZGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVChzaXplID09IEV4dGVudCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBBcnJheVJlZmVyZW5jZShj
b25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCisgICAgICAgIDogbV9kYXRh
KHZlY3Rvci5kYXRhKCkpCisgICAgeworICAgICAgICBBU1NFUlQodmVjdG9yLnNpemUoKSA9PSBF
eHRlbnQpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBFeHRlbnQgPT0gMDsgfQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gRXh0ZW50OyB9CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QK
KyAgICB7CisgICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7IH07
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitBcnJh
eVJlZmVyZW5jZShjb25zdCBXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBBcnJh
eVJlZmVyZW5jZTxUPjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwCmluZGV4IDIyNWZkYTdiZWQyZmU4YzQwNDliNTU4
NzA3OWZkMWUxNjM1NGY0ZmEuLjg0YmYwZTIxNzU2NjdiOGJjYzg1NTg0MjA1ZjcyNzJhOTNkOWY2
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwCkBA
IC0zMSwxNCArMzEsNSBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotdm9pZCBEYXRhUmVmZXJlbmNl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyLmVuY29kZVZh
cmlhYmxlTGVuZ3RoQnl0ZUFycmF5KCp0aGlzKTsKLX0KLQotYm9vbCBEYXRhUmVmZXJlbmNlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKLXsK
LSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVm
ZXJlbmNlKTsKLX0KIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EYXRhUmVmZXJlbmNlLmgKaW5kZXggMzQ1MGMzMWI3M2RkYjZhYTVlZGNlMmFmODAwMjk4
ODdjNzk4ZTIwNS4uZGJiM2Q2OTI3ZjM0MWM1YWE5M2ZjMTA3M2NiMDc1NmUzY2JhMzdkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaApAQCAtMjUsNTQgKzI1
LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEZWNvZGVy
OwotY2xhc3MgRW5jb2RlcjsKLSAgICAKLWNsYXNzIERhdGFSZWZlcmVuY2UgewotcHVibGljOgot
ICAgIERhdGFSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0KLSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAg
ICAgICAsIG1fc2l6ZShzaXplKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+Ci0gICAgRGF0YVJlZmVyZW5jZShjb25zdCBWZWN0b3I8dWludDhfdCwg
aW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCi0gICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkp
Ci0gICAgICAgICwgbV9zaXplKHZlY3Rvci5zaXplKCkpCi0gICAgewotICAgIH0KLQotICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KLQotICAgIHNpemVfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0IAotICAgIHsgCi0gICAgICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsgCi0gICAgfQotCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcigpIGNvbnN0Ci0gICAgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVz
dWx0OwotICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9zaXplKTsKLQotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBEYXRh
UmVmZXJlbmNlJik7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgdWludDhfdCogbV9kYXRhIHsgbnVs
bHB0ciB9OwotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci19OwordXNpbmcgRGF0YVJlZmVyZW5j
ZSA9IEFycmF5UmVmZXJlbmNlPHVpbnQ4X3QsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47
CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cAppbmRleCA3OGE0NjM4ZWI3MzA1YmZkMTkxMDg3MDY4ZDMwYmNkYjhkZmU4MmFlLi4yY2I3OWI3
MzFjOGQzNTFhMmQwNTk0NjM2MmM1YWI4YmJhZGJkYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcApAQCAtMTg2LDIwICsxODYsMTUgQEAgYm9vbCBEZWNvZGVyOjpkZWNv
ZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGln
bm1lbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEZWNvZGVyOjpkZWNvZGVWYXJpYWJs
ZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQorY29uc3QgdWlu
dDhfdCogRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZV90IHNpemUsIHNp
emVfdCBhbGlnbm1lbnQpCiB7Ci0gICAgdWludDY0X3Qgc2l6ZTsKLSAgICBpZiAoIWRlY29kZShz
aXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmICghYWxpZ25CdWZmZXJQ
b3NpdGlvbigxLCBzaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghYWxpZ25C
dWZmZXJQb3NpdGlvbihhbGlnbm1lbnQsIHNpemUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBtX2J1ZmZlclBvczsKICAgICBtX2J1ZmZlclBv
cyArPSBzaXplOwogCi0gICAgZGF0YVJlZmVyZW5jZSA9IERhdGFSZWZlcmVuY2UoZGF0YSwgc2l6
ZSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIGJvb2wgRGVjb2Rl
cjo6cmVtb3ZlQXR0YWNobWVudChBdHRhY2htZW50JiBhdHRhY2htZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IGI3MmRkOGFjZTI3NzNkYjM1NTllMzY2ZGQ5NTI0ZjIz
NDFlNTVlMDYuLmFmMGRhOTI1ZmY2MDg2MDAxYzkzMjk5NTAyZWI5YmI1MDRiMDBhNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAKIAogbmFtZXNw
YWNlIElQQyB7CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBJbXBvcnRhbmNlQXNzZXJ0
aW9uOwogZW51bSBjbGFzcyBNZXNzYWdlRmxhZ3MgOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91
bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdDsKQEAgLTc4LDggKzc3
LDkgQEAgcHVibGljOgogCiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRM
ZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKLSAg
ICAvLyBUaGUgZGF0YSBpbiB0aGUgZGF0YSByZWZlcmVuY2UgaGVyZSB3aWxsIG9ubHkgYmUgdmFs
aWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNvZGVyIG9iamVjdC4KLSAgICBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRh
UmVmZXJlbmNlJik7CisgICAgLy8gVGhlIGRhdGEgaW4gdGhlIHJldHVybmVkIHBvaW50ZXIgaGVy
ZSB3aWxsIG9ubHkgYmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNv
ZGVyIG9iamVjdC4KKyAgICAvLyBSZXR1cm5zIG51bGxwdHIgb24gZmFpbHVyZS4KKyAgICBXQVJO
X1VOVVNFRF9SRVRVUk4gY29uc3QgdWludDhfdCogZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uo
c2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxs
cHRyPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShUJiB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggZmQ0MDkwNzc0YjJiYzJhNzYyOWI5
YzAyZGM1NTRjNGNkYzk4ZjVjYi4uZTgzYTNlNGFmZjQyYTU3NTUwNWRjOGYwNzMxN2ExYzFhYzE5
ZGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKKyNpbmNs
dWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0xNDEsNyArMTQy
LDcgQEAgdm9pZCBFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rl
cj4gb3JpZ2luYWwpCiAKICAgICBvcmlnaW5hbC0+c2V0U2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eTo6WWVzKTsKIAotICAgIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVu
Y2Uob3JpZ2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKSk7CisgICAgKnRo
aXMgPDwgRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJT
aXplKCkpOwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gb3JpZ2luYWwt
PnJlbGVhc2VBdHRhY2htZW50cygpOwogICAgIHJlc2VydmUoYXR0YWNobWVudHMuc2l6ZSgpKTsK
QEAgLTIxNiwxMiArMjE3LDYgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGkKICAgICBtZW1jcHko
YnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVWYXJpYWJsZUxl
bmd0aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewotICAg
IGVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGF0YVJlZmVyZW5jZS5zaXplKCkpKTsKLSAg
ICBlbmNvZGVGaXhlZExlbmd0aERhdGEoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVu
Y2Uuc2l6ZSgpLCAxKTsKLX0KLQogdm9pZCBFbmNvZGVyOjphZGRBdHRhY2htZW50KEF0dGFjaG1l
bnQmJiBhdHRhY2htZW50KQogewogICAgIG1fYXR0YWNobWVudHMuYXBwZW5kKFdURk1vdmUoYXR0
YWNobWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rl
ci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IDBlY2Y1NDFm
Nzc4NTg1MzZmMWZjZmE4MzZiNzZmMjQ4MmU0YzlhMTEuLmVhNjE5NjdiZTFlYmNiZDhiNmZiYmFh
OGI4NWFmNDE4ZThkNTBjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAg
LTM2LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7
CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIE1lc3NhZ2VO
YW1lIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNjIsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB3
cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCiAgICAgdm9pZCBlbmNv
ZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxp
Z25tZW50KTsKLSAgICB2b2lkIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERh
dGFSZWZlcmVuY2UmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lm
X3Q8IXN0ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUg
c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4q
ID0gbnVsbHB0cj4KICAgICB2b2lkIGVuY29kZShUJiYgdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA3ZmQxODNhNTZhZTk4YjA2NjQ1ZmY3NTE0OGFj
Mjk4M2M1MmU0YWViLi40MTI5ZDRlMmI0OWQ1YzhmYzQxYTJkNjU0YWRjZDg5ZTg2YzYzN2Y2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtOTYsNyArOTcsNiBAQCBzdHJ1
Y3QgQ29kaW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVt
b3ZlX3JlZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNs
YXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RpbmdU
eXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7CiAgICAgdXNpbmcgVHlwZSA9
IERhdGFSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFiODYzOWI3YmE3NjM2
YzYuLjUwMGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5o
IgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKQEAgLTQ4LDcg
KzQ5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhKSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwCmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUzMjhmMDFjOTk5OTUw
YTAuLmU5NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXggODUyZWY0M2UwMDg2
MzFjOWZhZmE4MjMwYzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBlYWZiM2RjNDdjODVk
YTQxOTBhMmJhMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
aW5nUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdS
ZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IGFkNGZjZDlkOGNjZjQyZjEyZWU0ODhlMDEzNDZjNjE5
YTcwMWI4ZDIuLmM3YTcwNTNjYmQyNmQyMDQ1NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzcsMTAgKzM4LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi1uYW1lc3BhY2UgSVBDIHsK
LSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDU3M2VkM2Q4ZWU5YmJmNDEwMzE2OGU3OWEwNTdmOWRiZGI5Yjg2OTUuLjY3
MzI0NGE2N2UwOTlmZmI3MTgwN2Q1NTUwYzQ1NGYzNjMxZGIxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjAzLDYgKzIwMyw3IEBAIGRlZiBmb3J3YXJk
X2RlY2xhcmF0aW9uc19mb3JfbmFtZXNwYWNlKG5hbWVzcGFjZSwga2luZF9hbmRfdHlwZXMpOgog
CiBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVy
biBmcm96ZW5zZXQoWworICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ01h
Y2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBA
IC0yMTQsNiArMjE1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJywKICAgICAgICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLApAQCAtMjQzLDYgKzI0NSw3
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6RG93bmxvYWRJRCcsCiAgICAgICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcics
CisgICAgICAgICdXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6Okxh
eWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3Rv
Y29sSUQnLApAQCAtNTMwLDYgKzUzMyw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRl
bXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYv
T3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2Rl
cnMuaCInXX0sCiAgICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+
J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAg
ICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRf
Y29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpB
cnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1
bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgfQogCiAg
ICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9QPHRlbXBsYXRlX25hbWU+Lis/KTwoP1A8cGFyYW1ldGVy
X3N0cmluZz4uKyk+JywgdGVtcGxhdGVfc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURh
dGEuY3BwCmluZGV4IDYxMzQzYmQ5NDEwNmI2ZTc4OWY4M2JjMjVkZTc5ZjdhNjA0MDkzY2MuLmM3
ODIzMTZmMzA1N2EzY2FmOWQzZTIwNzdjODEzMjU1M2U2OTc1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJRGF0YS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJBUElEYXRhLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDljMjZkYjRlOWE5ZjZi
YTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIuLmRhMzczNGM4NGQ2NTRkOGQwM2NhNzkyNWY3YmQ3
NTk5MTNiYzM0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcApAQCAtMzIyMSw0ICszMjIxLDgyIEBAIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6
CiAgICAgcmV0dXJuIHsgV1RGTW92ZSgqcmVzdWx0KSB9OwogfQogCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKK3sKKyAg
ICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYWxwaGE7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LmRlcHRoOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5zdGVuY2lsOworICAgIGVuY29kZXIg
PDwgYXR0cmlidXRlcy5hbnRpYWxpYXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZW11
bHRpcGxpZWRBbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5n
QnVmZmVyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5mYWlsSWZNYWpvclBlcmZvcm1hbmNl
Q2F2ZWF0OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2U7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzOworICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5pc1dlYkdMMjsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMubm9FeHRlbnNpb25z
OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvOworICAgIGVuY29k
ZXIgPDwgYXR0cmlidXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNlOworI2lmIEVOQUJMRShXRUJY
UikKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlOworI2VuZGlmCit9CisK
K09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
czsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYWxwaGEpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5k
ZXB0aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLnN0ZW5jaWwpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbnRpYWxpYXMpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5w
cmVtdWx0aXBsaWVkQWxwaGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJl
bmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5pc1dlYkdMMikpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLm5vRXh0ZW5zaW9ucykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5p
bml0aWFsUG93ZXJQcmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNp
ZiBFTkFCTEUoV0VCWFIpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnhyQ29t
cGF0aWJsZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKyAgICByZXR1
cm4gYXR0cmlidXRlczsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiBhY3RpdmVJbmZvKQoreworICAg
IGVuY29kZXIgPDwgYWN0aXZlSW5mby5uYW1lOworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby50
eXBlOworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5zaXplOworfQorCitPcHRpb25hbDxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFjdGl2ZUlu
Zm87CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLm5hbWUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby50
eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGFjdGl2ZUluZm8uc2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIGFjdGl2ZUluZm87Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNGE5MzIx
NTkxMzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVkNi4uNWZkMWQ1ZWE2ZTI1NTk3MDIzYTI2
NjI0NmFkMjI2ZGRhZDdkY2E4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9y
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBlc0dMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4
ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CkBAIC03MSw2ICs3MywxMSBA
QAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5k
UmlnaHQ7CkBAIC0yMDMsNiArMjEwLDEwIEBAIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERh
dGE7CiB1c2luZyBJREJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCitzdHJ1
Y3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzOworI2VuZGlmCisKIG5hbWVzcGFjZSBET01D
YWNoZUVuZ2luZSB7CiBzdHJ1Y3QgQ2FjaGVJbmZvOwogc3RydWN0IFJlY29yZDsKQEAgLTg3Myw2
ICs4ODQsMTkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiB7CiB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTA0MSw0ICsx
MDY1LDE2IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3Rh
bmNlOjpIRENQU3RhdHVzPiB7CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpCisKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVu
Y2UsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1
bHQsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bv
d2VyLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdo
UGVyZm9ybWFuY2UKKyAgICA+OworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
aW5kZXggY2YxMzFhOTIxZTA4NjM2NWRiZjc3ZmE5OGU0MWMxYzc0YTNlN2UyNS4uYWRkOTQ5YmE1
MDhkOGU4MTQwODdmZWRlN2IwNDhhM2RlYzZjZjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE1OCw2ICsxNTgsOSBA
QCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nl
c3M7CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3M7CiAgICAgZW5j
b2RlciA8PCBzaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3M7CisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7CisjZW5kaWYKICAg
ICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91
bGRFbmFibGVWUDlTV0RlY29kZXI7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAt
NTEwLDYgKzUxMywxMCBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcykpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaAppbmRleCBkOTFlNDYwMzhmMzA5YjUxMzBiZmRlNThkZmY0YTlmMTgxOTUx
ZGZkLi5jMjA2MTIzMTE0MzViZjRmOTJjZjA2ZmU1ZTExMjA1YTRiNTExMmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMjks
NiArMjI5LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wg
c2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3Vs
ZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRQbGF5TWVk
aWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIHNo
b3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wg
c2hvdWxkRW5hYmxlVlA5RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVW
UDlTV0RlY29kZXIgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggOWJkOGE4
MTc1NDlmNThmZTM4M2Q3MjVkYTY2M2YzYmM1NGNhMGQ3NC4uNzdlOWI0ZDVjYzc1MmZiY2RiNmI2
NWY5YWRjMjYwMTk1NmNhMTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKaW5kZXggMWQ4NGUyZmUyNjhmMzQ2MGViMjk3
NWM0MmJhOTVkMTRmMWQyMzVjZi4uZmEyNjhkNTg0YTBmYzhkZjg3YTIxZmE0NTYwNzdiOGM1ZDQy
Yjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1l
bnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVB
cmd1bWVudENvZGVyc1NvdXAuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2VydGlm
aWNhdGVJCiAgICAgLy8gRW5jb2RlIHN0YXJ0aW5nIGZyb20gdGhlIHJvb3QgY2VydGlmaWNhdGUu
CiAgICAgZm9yIChzaXplX3QgaSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0LnNpemUoKTsgaSA+IDA7
IC0taSkgewogICAgICAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlc0Rh
dGFMaXN0W2kgLSAxXS5nZXQoKTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0
aEJ5dGVBcnJheShJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmlj
YXRlLT5sZW4pKTsKKyAgICAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlm
aWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pOwogICAgIH0KIAogICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7CkBAIC0x
MDAsNyArMTAwLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBDZXJ0aWZpY2F0ZUluZm8mIGMKICAgICBHUmVmUHRyPEdUbHND
ZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGU7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNo
YWluTGVuZ3RoOyBpKyspIHsKICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNlcnRpZmljYXRl
RGF0YVJlZmVyZW5jZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3Ro
Qnl0ZUFycmF5KGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZSkpCisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJy
YXlfc2l6ZWRfbmV3KGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjc3LDQg
KzI3NywzIEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3Vt
ZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1CiAjZW5kaWYKIAogfQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAppbmRleCAwOTE3ZjAxYmUxYzlmOGNhYTJhYmY3ZjBmODkwZjg5NWEzZjJlZjg2Li4xMjBiOTVj
MTAyYWE1NTVhNjI3MTA2NzdkYjExNjMzZjA2NjJlOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI2LDYg
KzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCkBAIC02OTMsMyArNjk0
LDUgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKIFdlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuY3BwCisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJl
Y2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDk5NTE4MDczMjgwZTljOTVhMmIy
NWYwMGJjOGJmYjM4ODc2MjEyNDEuLjNmYTJjODA0YjIzNWJjMzIxNTgyOGMyOTFlOTBhNGRkOTQy
ODllMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTYzLDYgKzYzLDcgQEAgR1BVUHJvY2Vz
cy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KIEdQVVByb2Nlc3Mv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KIAorCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5j
cHAKIAogUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllckNvY29hLmNwcApAQCAtNTczLDYgKzU3NCw3IEBAIFdlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCiBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9X
ZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCkBAIC02ODUs
NiArNjg3LDcgQEAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVu
dC5oCmluZGV4IDJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QuLjczN2I2
MjU4MTk4NjZhMGVjYjU5OWEyMTMwYjMyOTEzZWFmMzk2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zMCwxMCArMzAs
NiBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0K
IG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVT
T0F1dGhvcml6YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5kZXggODIz
YzIwMmE4NTZhMDEzNmRkOWVhNzU5ZjBlY2RlYmE0N2Y0ZjM2Mi4uYjU3N2NiZGY4ZTA3OGY0ZmI0
Zjg3MzRkN2JmZDYwOGQyMDM4ODA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24gZmluYWwgOiBwdWJs
aWMgTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24sIHB1YmxpYyBGcmFtZUxvYWRTdGF0
ZTo6T2JzZXJ2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5LmgKaW5kZXggZmY5OGI4NGZhODlkYmVmZGQ2NDY2NmJiYmE0
MmZjOTBjZWMzNTc3Zi4uMTI4YTM5NzdlNjNlZTRmNGVmMWYyMGVhYWVjODZkMDhlY2JmNThkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpA
QCAtMzUsMTAgKzM2LDYgQEAKIE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbExvYWRlcjsKICNl
bmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzRjNzE4NzRhMTBkYTli
NTQxZmVlMjgyMDgwOGMxZTUwZDNmYTkyYi4uOWRiM2E1MDliOTE0YzA5M2NhZjE2OWEwNWQ2NWI1
N2VkMGM4MDEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCkBAIC04MCwxMCAr
ODEsNiBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCAxMjlhMzQwZjA4OTY0ZDBmZmEyM2EzNzEwMWEw
OWE4NTZkM2NjY2IyLi5hNGQ4ZDdjZDgwNGU2NTYwZGFiZmRlNjExNGZmMDYyMTFiYWQ0N2MwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbnRlbnRXb3JsZFNoYXJlZC5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtNDgsMTAgKzQ5LDYgQEAgY2xhc3MgVXNl
clNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTZWN1
cml0eU9yaWdpbkRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCAwZjg3NDI4OTkwZGUwMDEzNDM2NzJlMjQ5NDg5NWFkMTNkNDMzMDI4Li4yMjljMjkz
NDljZGM1YTk3NDYyZjg3ZTU4NTlhOGIwZTBhZWIzMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc5MTksNiArNzkxOSwxMCBAQCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQ
cm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNz
ID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCgp
OwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5j
ZXMoKS51c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRl
cnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9j
ZXNzRm9yTWVkaWFFbmFibGVkKCk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHBhcmFtZXRlcnMu
c2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nl
c3NGb3JXZWJHTEVuYWJsZWQoKTsKKyNlbmRpZgorCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFi
bGVWUDlEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVO
QUJMRShWUDkpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxl
VlA5U1dEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpICYmICghV2Vi
Q29yZTo6c3lzdGVtSGFzQmF0dGVyeSgpIHx8IHByZWZlcmVuY2VzKCkudnA5U1dEZWNvZGVyRW5h
YmxlZE9uQmF0dGVyeSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggODc5ZjczMmIxMWNiMTIzOTczODY1OGU4ZTU4ZmI4N2M1MDM0ZjJiOC4uNWY2NDIzNjU1N2Ri
YjgwNDMzNGQxNTAxMmU4Y2Y5YmVmNGEzNGU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgogI2luY2x1ZGUg
IkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyQWN0aW9uLmgi
CiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBAIC0yMDMsNyArMjA0LDYgQEAgZW51bSBjbGFz
cyBJbnNwZWN0b3JUYXJnZXRUeXBlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJl
bmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCBmNDI0NWNlNjVlOWQyZDU2NWIzZjEyNWYzNDU3
YTI1NmZiMzljOWQ0Li5kMjM4YzJhMWE2MDhkYzVhNDYzMmU2YTE5OTc3ZGI2MWJhYjYxMzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCkBAIC0z
MSwxMCArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBkNDQyYjYyYjUyMjU4N2Y5
MGZhNjg5ZDU2YjIwNjI3NmRlYjQ0ODJiLi44MjVjZDAyNjg4YTI2ODIxOTQxZmY3YTQxOGY0ZGY1
YTk3NWJhMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
CkBAIC0zOCwxMCArMzgsNiBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKIH0K
IAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDIxNWI2MDBkZWRmNjZjODQ2OTQ2ZWJkMDBkNTk2MjZhMTFkN2JlMTkuLjZlNjM5MmE1YmU3NGMy
OGZjODFiYmYzOTU0ZmYyOWM5MDM4YzMxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3MSw2ICsxMjcxLDcgQEAKIAkJN0FGQkQz
NjMyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjIyMUU1
MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyB9Owog
CQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZC
RDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OworCQk3QjFE
QjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAv
KiBBcnJheVJlZmVyZW5jZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQ
bHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFB
NEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNDMwMyw2ICs0MzA0
LDE2IEBACiAJCTdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHBhdGggPSBDbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjEyNTRDMzY5MDAwMDZCNEFGIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NTI1NEFG
REVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NzI1NEFGRTE3
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY5MjU0QUZFQTcw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY2MTMsNiArNjYyNCw3IEBACiAJ
CQkJMkRDMTg4MUFDQkNBQjVENTdDNUM2RUYwIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aCAqLywKIAkJCQkxQUUwMEQ2OTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmNw
cCAqLywKIAkJCQkxQUUwMEQ2QTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmgg
Ki8sCisJCQkJN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IElQQzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04
MjI2LDExICs4MjM4LDE2IEBACiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29h
ICovLAogCQkJCUY0MDk0Q0JBMjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmggKi8sCisJCQkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkz
MSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4OEYw
MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywKIAkJ
CQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAwN0Qz
NzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAorCQkJCTdCOTA0MTY1
MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLywK
KwkJCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oICovLAorCQkJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTdCNjRDMEIxMjU0QzM2OTAwMDA2
QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmgg
Ki8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyogUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCkBAIC04MjQ4LDYgKzgyNjUsMTAgQEAKIAkJ
CQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3Bw
ICovLAogCQkJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZS5oICovLAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyLmggKi8sCisJCQkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLywKKwkJCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLywKKwkJCQk3QjkwNDE2ODI1NEFGRUE3MDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8sCisJCQkJN0I5
MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUlt
YWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwICovLAogCQkJCTU1MDY0MEEzMjQwNzFBNjEwMEFBRTA0NSAvKiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggKi8sCkBAIC0xMDk4NSw2ICsxMTAwNiw3IEBACiAJCQkJ
MzdFMjVENkUxOEZERTVENjAwNUQzQTAwIC8qIEFQSUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQzEzMzcyMTg1NjZDN0MwMEYzRUMwNSAvKiBBUElGcmFtZUhhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkRGOUVFRTYxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVm
ZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDc4RTExNzFEQjdEQzBBMDAxNEEyREUgLyog
QVBJRnVsbHNjcmVlbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FCNkVBNDcxRUVBQjZC
ODAwMDM3QjJCIC8qIEFQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMTc0QUEzMTQyQTRDQjcwMDM5MjUwRiAvKiBBUElHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2OThhMjEyOTBk
MzYxZDRhNi4uYzlkYzY4MmI4NzU0OWI4MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2VjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXlt
ZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyYzBkZjVi
OWY1NDk2ODQ3ZWQ2NjkxMGJmMmYzOWIyY2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQw
N2FlNzIwNGM4NGE5OTg4NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zNSwxMCArMzUsNiBAQAogI2luY2x1ZGUg
PHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2Nm
NWIyZTc5YjA3N2QwMzUyMTJjNjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBP
YmplY3RJZGVudGlmaWVyPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yjk3NWViZTUzODdiMDhiNTBlZTI0MWEyZWI2MzA4
N2IyZWU5ZTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDEy
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsK
K30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCisg
ICAgOiBQbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJpYnV0ZXMp
Cit7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2Fn
ZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7
CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
LCAwKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoKQoreworICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdl
UmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciksIDApOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUo
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNr
KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXko
KQoreworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJl
cGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVw
YXJlRm9yRGlzcGxheTo6UmVwbHkoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFf
cyk7CisgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRl
bnNpb24pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0
ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5z
aW9ucykKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxp
emF0aW9uIHRpbWVkIG91dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAg
ICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFp
bGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxp
emUgPSB0cnVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xv
c3QoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykp
CisgICAgICAgIGNsaWVudC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAo
bV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5k
RGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcywgSVBDOjpX
YWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQorICAg
ICAgICByZXR1cm47CisgICAgLy8gVGltZWQgb3V0LCBzbyByZXBvcnQgaW5pdGlhbGl6ZWQgd2l0
aCBkdW1teSBkYXRhLiBXZSBzaG91bGQgbG9zZSB0aGUgY29udGV4dC4KKyAgICB3YXNDcmVhdGVk
KCIiLCAiIik7CisgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFyayB0aGUgY29udGV4dCBhcyBsb3N0
LCBidXQgaXQncyBub3Qgc2FmZSB0byBmb3JjZSBsb3N0IGluIHRoaXMgY2FsbCBzdGFjay4KK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQ5MWViZjhiNjRmOTU2NDljNzkzOTUxZTg4
N2UxNTU2OGMxM2EwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTAsMCArMSw4
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCisjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8v
IFdlYiBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgaW50
ZXJmYWNlLiBUaGUgaW1wbGVtZW50YXRpb24KKy8vIGNvbnZlcnRzIHRoZSBpbnRlcmZhY2UgdG8g
YSBzZXF1ZW5jZSBvZiBJUEMgbWVzc2FnZXMgYW5kIHNlbmRzIHRoZSBtZXNzYWdlcyB0bworLy8g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gR1BVIHByb2Nlc3MuCisvLyBUaGUgaW1wbGVtZW50
YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IGZpbmFs
CisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eT4KKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgp
IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8g
UGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCisgICAg
dm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBzZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7CisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxh
eSgpIGZpbmFsOworICAgIHVzaW5nIFdlYkNvcmU6OlBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCitwcm90ZWN0ZWQ6Cisg
ICAgLy8gUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMu
CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
KSBmaW5hbDsKKyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVhdGVk
KFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lv
bnMpOworICAgIHZvaWQgd2FzTG9zdCgpOworCisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBi
b29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIzZGNiYmUxMzdjZTkyMmFjODUzMjFiYjMwNTdlNDYzNzhi
YjY1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFdhc0NyZWF0ZWQo
U3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMp
CisgICAgdm9pZCBXYXNMb3N0KCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZkNjA1ZmI3Y2IzNzZiZWEzOWUwZWFlNzFhYTg4NTFiODlkOGM5NjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMCwwICsxLDEzMTAg
QEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wuIERvIG5vdCBlZGl0LgorCisvLyBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGlu
IHRoZSBwdWJsaWMgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisKKyAgICB2b2lkIGFjdGl2ZVRleHR1
cmUoR0NHTGVudW0gdGV4dHVyZSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVUZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBhdHRhY2hTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgZmluYWwK
KyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpB
dHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0
cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgfQorCisgICAgdm9pZCBiaW5kQnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgYmluZEZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbAorICAgIHsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRGcmFt
ZWJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgfQorCisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCBhcmcxKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgYmluZFRleHR1
cmUoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsCisgICAgewor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRleHR1
cmUodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0K
KworICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwg
R0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbAorICAgIHsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kQ29sb3IocmVkLCBn
cmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorCisgICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpIGZpbmFsCisgICAgewor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVh
dGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAg
IHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVSR0IsIEdDR0xlbnVtIG1v
ZGVBbHBoYSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgYmxlbmRG
dW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpIGZpbmFsCisgICAgeworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNm
YWN0b3IsIGRmYWN0b3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQor
CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRz
dFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBmaW5hbAorICAgIHsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVu
Y1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1czo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZp
ZWxkIG1hc2spIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFt
cGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckNv
bG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKSBmaW5h
bAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNsZWFyRGVwdGgoZGVwdGgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorCisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBzKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChz
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgY29s
b3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29sZWFuIGJs
dWUsIEdDR0xib29sZWFuIGFscGhhKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbG9yTWFzayhzdGF0aWNfY2FzdDxib29sPihy
ZWQpLCBzdGF0aWNfY2FzdDxib29sPihncmVlbiksIHN0YXRpY19jYXN0PGJvb2w+KGJsdWUpLCBz
dGF0aWNfY2FzdDxib29sPihhbHBoYSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfQorCisgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfQorCisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWwK
KyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0K
KworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWwKKyAgICB7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWwKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0K
KworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXIoKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlUHJvZ3JhbSgpIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVQcm9ncmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIFBs
YXRmb3JtR0xPYmplY3QgY3JlYXRlUmVuZGVyYnVmZmVyKCkgZmluYWwKKyAgICB7CisgICAgICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0
dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2hh
ZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVTaGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQor
CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUZXh0dXJlKCkgZmluYWwKKyAgICB7CisgICAg
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmUoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CisgICAgfQorCisgICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51bSBtb2RlKSBmaW5h
bAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkN1bGxGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQor
CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAg
IHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKwor
ICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRl
bGV0ZUZyYW1lYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgfQorCisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZWxldGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgfQorCisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRl
cHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKwor
ICAgIHZvaWQgZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsCisgICAgeworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRp
Y19jYXN0PGJvb2w+KGZsYWcpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IH0KKworICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpG
YXIpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRp
c2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KEdDR0x1aW50IGluZGV4KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRyYXdBcnJh
eXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50KSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRy
YXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsCisgICAg
eworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0Vs
ZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGVuYWJs
ZShHQ0dMZW51bSBjYXApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RW5hYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1
aW50IGluZGV4KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZmluaXNoKCkgZmluYWwK
KyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpG
aW5pc2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZv
aWQgZmx1c2goKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICB9CisKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBhcmczLCBHQ0dMaW50IGxldmVsKSBmaW5hbAorICAgIHsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVy
ZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGZyb250RmFjZShHQ0dM
ZW51bSBtb2RlKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkZyb250RmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0
KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbAorICAgIHsK
KyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5k
ZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6
UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIGJvb2wgZ2V0
QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJiBhcmcyKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CisgICAgfQorCisgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWwKKyAgICB7CisgICAgICAg
IGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAg
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBh
cmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWwKKyAgICB7Cisg
ICAgICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJh
bWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgU3RyaW5n
IGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSBmaW5hbAorICAgIHsKKyAgICAgICAgU3RyaW5nIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFN0cmluZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTdHJpbmc6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisK
KyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2
YWx1ZSkgZmluYWwKKyAgICB7CisgICAgICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8R0NHTGZsb2F0
PiB2YWx1ZVJlcGx5OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHN0ZDo6Y29weSh2YWx1ZVJl
cGx5LmRhdGEoKSwgdmFsdWVSZXBseS5kYXRhKCkgKyB2YWx1ZS5idWZTaXplLCB2YWx1ZS5kYXRh
KTsKKyAgICB9CisKKyAgICB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiB2YWx1ZSkgZmluYWwKKyAgICB7CisgICAgICAgIElQQzo6QXJyYXlSZWZlcmVu
Y2U8R0NHTGludD4gdmFsdWVSZXBseTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVl
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgc3Rk
Ojpjb3B5KHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZVJlcGx5LmRhdGEoKSArIHZhbHVlLmJ1ZlNp
emUsIHZhbHVlLmRhdGEpOworICAgIH0KKworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NH
TGVudW0gcG5hbWUpIGZpbmFsCisgICAgeworICAgICAgICBpbnQ2NF90IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAg
R0NHTGludDY0IGdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSBm
aW5hbAorICAgIHsKKyAgICAgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRp
KHBuYW1lLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50
ZWdlcjY0aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIEdDR0xp
bnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWwKKyAgICB7CisgICAgICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWko
cHJvZ3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFBy
b2dyYW1pOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgdm9pZCBn
ZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBm
aW5hbAorICAgIHsKKyAgICAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxHQ0dMYm9vbGVhbj4gdmFs
dWVSZXBseTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgc3RkOjpjb3B5KHZhbHVlUmVw
bHkuZGF0YSgpLCB2YWx1ZVJlcGx5LmRhdGEoKSArIHZhbHVlLmJ1ZlNpemUsIHZhbHVlLmRhdGEp
OworICAgIH0KKworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWwKKyAgICB7CisgICAgICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RXJyb3I6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAg
ICB9CisKKyAgICBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgZmluYWwK
KyAgICB7CisgICAgICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3Mp
OworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgU3RyaW5nIGdldFBy
b2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAg
IFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0
dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisK
KyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBw
bmFtZSkgZmluYWwKKyAgICB7CisgICAgICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hh
ZGVyaShhcmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
U2hhZGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIFN0cmlu
ZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7Cisg
ICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nKGFyZzApLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2c6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dM
U3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbAorICAgIHsK
KyAgICAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxHQ0dMaW50LCAyPiByYW5nZVJlcGx5OworICAg
ICAgICBpbnQzMl90IHByZWNpc2lvblJlcGx5ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChz
aGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJhbmdlUmVwbHksIHByZWNpc2lv
blJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHN0
ZDo6Y29weShyYW5nZVJlcGx5LmRhdGEoKSwgcmFuZ2VSZXBseS5kYXRhKCkgKyByYW5nZS5idWZT
aXplLCByYW5nZS5kYXRhKTsKKyAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5Owor
ICAgIH0KKworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbAorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNv
dXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJT
b3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBHQ0dMZmxv
YXQgZ2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5h
bAorICAgIHsKKyAgICAgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0
YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQ
YXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgR0NH
TGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZp
bmFsCisgICAgeworICAgICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRl
cmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VGV4UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAg
IHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWwKKyAgICB7CisgICAgICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8R0NHTGZsb2F0PiB2YWx1ZVJlcGx5OworICAgICAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFt
LCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybWZ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHN0ZDo6Y29weSh2YWx1ZVJlcGx5LmRhdGEoKSwg
dmFsdWVSZXBseS5kYXRhKCkgKyB2YWx1ZS5idWZTaXplLCB2YWx1ZS5kYXRhKTsKKyAgICB9CisK
KyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbAorICAgIHsKKyAgICAgICAg
SVBDOjpBcnJheVJlZmVyZW5jZTxHQ0dMaW50PiB2YWx1ZVJlcGx5OworICAgICAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9ncmFt
LCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHN0ZDo6Y29weSh2YWx1ZVJlcGx5LmRhdGEoKSwg
dmFsdWVSZXBseS5kYXRhKCkgKyB2YWx1ZS5idWZTaXplLCB2YWx1ZS5kYXRhKTsKKyAgICB9CisK
KyAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsCisgICAgeworICAgICAg
ICBJUEM6OkFycmF5UmVmZXJlbmNlPEdDR0x1aW50PiB2YWx1ZVJlcGx5OworICAgICAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgc3RkOjpjb3B5KHZhbHVlUmVwbHkuZGF0
YSgpLCB2YWx1ZVJlcGx5LmRhdGEoKSArIHZhbHVlLmJ1ZlNpemUsIHZhbHVlLmRhdGEpOworICAg
IH0KKworICAgIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbAorICAgIHsKKyAgICAgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9m
ZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsCisgICAgeworICAgICAg
ICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoaW5kZXgsIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHJldHVyblZh
bHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBt
b2RlKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXIo
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXI6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworICAgIH0K
KworICAgIEdDR0xib29sZWFuIGlzRW5hYmxlZChHQ0dMZW51bSBjYXApIGZpbmFsCisgICAgewor
ICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5hYmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CisgICAgfQorCisgICAgR0NHTGJvb2xlYW4g
aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CisgICAgfQorCisgICAgR0NHTGJvb2xl
YW4gaXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CisgICAgfQorCisgICAgR0NHTGJvb2xlYW4gaXNSZW5k
ZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CisgICAgfQorCisgICAgR0NHTGJvb2xlYW4g
aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihyZXR1cm5WYWx1ZSk7CisgICAgfQorCisgICAgR0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNUZXh0dXJlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1
cm5WYWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6TGluZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorCisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisg
ICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlu
a1Byb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5h
bAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NH
TGZsb2F0IHVuaXRzKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFs
dWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGlj
X2Nhc3Q8Ym9vbD4oaW52ZXJ0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICB9CisKKyAgICB2b2lkIHNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBzaGFk
ZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIHN0cmluZykgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTaGFkZXJTb3VyY2UoYXJnMCwgc3RyaW5nKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgc3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGlu
dCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgc3RlbmNp
bEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwg
R0NHTHVpbnQgbWFzaykgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwg
bWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lk
IHN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2sobWFzayksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHN0ZW5jaWxNYXNr
U2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykgZmluYWwKKyAgICB7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFza1Nl
cGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorCisgICAgdm9pZCBzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdD
R0xlbnVtIHpwYXNzKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBzdGVuY2lsT3BTZXBh
cmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVu
dW0genBhc3MpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNz
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdGV4
UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFy
YW0pIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJh
bWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgdW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xm
bG9hdCB4KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xZihsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHgpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWwKKyAgICB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24s
IHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9p
ZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpIGZpbmFs
CisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIH0KKworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9h
dCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsCisgICAgeworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB4
LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZv
aWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHopIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdW5pZm9ybTRmKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3
KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsCisg
ICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIH0KKworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWYWxpZGF0ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZmxvYXQgeCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsCisgICAgeworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5k
ZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9h
dCB5LCBHQ0dMZmxvYXQgeikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeiksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcnRleEF0
dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6LCBHQ0dMZmxvYXQgdykgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlw
ZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGlj
X2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9p
ZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbAorICAg
IHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZl
ckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xzaXplaSBwcmltY291bnQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwg
Y291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9
CisKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsCisgICAgeworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihp
bmRleCwgZGl2aXNvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgZmluYWwKKyAgICB7Cisg
ICAgICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIEdDR0xib29sZWFuIGlz
VmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYmluZFZl
cnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXkoYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGNv
cHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0
LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXpl
aXB0ciBzaXplKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQpIGZpbmFsCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVubWFwQnVmZmVyKHRhcmdldCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5tYXBCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQg
c3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xp
bnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdD
R0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsCisgICAgeworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNy
Y1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFz
aywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAg
IHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50
LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfQorCisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVm
ZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJn
ZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdGV4U3RvcmFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWwKKyAgICB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlMkQodGFyZ2V0
LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKSBmaW5hbAorICAg
IHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0
b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQg
Y29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbAorICAgIHsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhT
dWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQor
CisgICAgR0NHTGludCBnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbAorICAgIHsKKyAgICAgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb246OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIHVuaWZvcm0xdWkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHVpbnQgdjApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCB1bmlmb3JtMnVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
MnVpKGxvY2F0aW9uLCB2MCwgdjEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgfQorCisgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
LCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAs
IHYxLCB2MiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2
b2lkIHVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYx
LCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgs
IHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWlu
dCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgs
IHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXpl
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICB9CisKKyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1
aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVu
ZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJCdWZmZXJmaShH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dM
aW50IHN0ZW5jaWwpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRo
LCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
ICAgIH0KKworICAgIHZvaWQgZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZWxldGVRdWVyeShxdWVyeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICB9CisKKyAgICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZp
bmFsCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIHZv
aWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVu
ZFF1ZXJ5KHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRR
dWVyeSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIEdDR0x1
aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVy
eU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0K
KworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpIGZpbmFsCisgICAgeworICAg
ICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsCisgICAgeworICAgICAgICBib29sIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzU2FtcGxlcihzYW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1NhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQgdW5p
dCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBs
ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50IHBhcmFtKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBw
YXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFt
ZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAg
R0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsCisgICAgeworICAgICAgICBmbG9hdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsCisgICAgeworICAg
ICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFy
YW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsK
KyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWwKKyAgICB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAg
ICBHQ0dMYm9vbGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZp
bmFsCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJh
Y2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVl
ZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworICAgIH0KKworICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFy
Z2V0LCBpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkgZmluYWwK
KyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIH0KKworICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0g
YnVmZmVyTW9kZSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlp
bmdzLCBidWZmZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0K
KworICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsCisgICAgewor
ICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcy
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgfQorCisgICAgdm9p
ZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBiaW5kQnVmZmVy
QmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1
ZmZlcikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBiaW5kQnVmZmVyUmFu
Z2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZm
ZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWwKKyAgICB7Cisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVy
UmFuZ2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5h
bWVzKSBmaW5hbAorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50PiByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2Vz
LCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpIGZpbmFsCisgICAgewor
ICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHBhcmFtcyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgIH0KKworICAgIEdDR0x1
aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2Nr
TmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2Nr
SW5kZXg6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBTdHJpbmcg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbAorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2Nr
SW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICB2
b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWwK
KyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxv
Y2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAg
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJh
bXMpIGZpbmFsCisgICAgeworICAgICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPEdDR0xpbnQ+IHBh
cmFtc1JlcGx5OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICBzdGQ6OmNvcHkocGFyYW1zUmVw
bHkuZGF0YSgpLCBwYXJhbXNSZXBseS5kYXRhKCkgKyBwYXJhbXMuYnVmU2l6ZSwgcGFyYW1zLmRh
dGEpOworICAgIH0KKworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZp
bmFsCisgICAgeworICAgICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQor
CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNy
Y1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50
IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywg
R0NHTGVudW0gZmlsdGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJn
ZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWludDMyX3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVMoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVl
OworICAgIH0KKworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9F
UyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBib29sIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBiaW5kVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIFN0cmlu
ZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbAorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNv
bnN0IFN0cmluZyYgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgfQorCisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHBy
aW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRp
dmlzb3JBTkdMRShpbmRleCwgZGl2aXNvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGFyZzEsIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9
CisKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGFyZzEs
IGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9p
ZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcxLCBjb25zdCBHQ0dM
ZmxvYXQqIHYpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3Jt
Mml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcxLCBjb25zdCBHQ0dMaW50KiB2KSBm
aW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYXJnMSwgY29uc3QgR0NHTGZsb2F0KiB2KSBmaW5hbCB7IG5v
dEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYXJnMSwgY29uc3QgR0NHTGludCogdikgZmluYWwgeyBub3RJbXBsZW1lbnRl
ZCgpOyB9CisKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGFyZzEsIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisK
KyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGFyZzEsIGNv
bnN0IEdDR0xpbnQqIHYpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1
bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcxLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBhcmcxLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
dmFsdWUpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcxLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0xm
bG9hdCogdmFsdWVzKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdmVy
dGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcykgZmlu
YWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dM
dWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsIHsgbm90SW1wbGVtZW50
ZWQoKTsgfQorCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZv
aWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBjb25zdCBH
Q0dMdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorCisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBhcmcyLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgZmluYWwgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgp
OyB9CisKKyAgICBib29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25z
dCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiB7IH07
IH0KKworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NH
THZvaWQqIHBpeGVscykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICBHQ0dMdm9p
ZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
THNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgZmluYWwgeyBub3RJbXBsZW1l
bnRlZCgpOyByZXR1cm4geyB9OyB9CisKKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0NHTGVudW0q
IGF0dGFjaG1lbnRzKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgaW52
YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFj
aG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsIHsgbm90SW1wbGVtZW50
ZWQoKTsgfQorCisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTGludCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZv
aWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7IG5vdEltcGxlbWVu
dGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBm
aW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQg
dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTHVpbnQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7IG5vdEltcGxlbWVudGVk
KCk7IH0KKworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisK
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
eDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7IG5vdElt
cGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRl
eCwgY29uc3QgR0NHTGludCogdmFsdWVzKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKwor
ICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIGNvbnN0IEdDR0x1aW50
KiB2YWx1ZXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBkcmF3QnVm
ZmVycyhHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1ZnMpIGZpbmFsIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQorCisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMaW50KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNl
dCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2
KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHQ0dMdWludCogdmFs
dWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisg
ICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5hbCB7IG5v
dEltcGxlbWVudGVkKCk7IH0KKworICAgIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25k
aXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1
cm4geyB9OyB9CisKKyAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWwg
eyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4geyB9OyB9CisKKyAgICB2b2lkIGRlbGV0ZVN5bmMo
R0NHTHN5bmMgYXJnMCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICBHQ0dMZW51
bSBjbGllbnRXYWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1
aW50NjQgdGltZW91dCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4geyB9OyB9CisK
KyAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NH
TGludDY0IHRpbWVvdXQpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgR0NHTGlu
dCBnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWwgeyBub3RJbXBs
ZW1lbnRlZCgpOyByZXR1cm4geyB9OyB9CisKKyAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVu
aWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgp
OyB9CisKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWwg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2Nh
dGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZv
cm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQor
CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7IG5vdElt
cGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBj
b25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBm
aW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90
SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwg
Y29uc3QgR0NHTGVudW0qIGJ1ZnMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAg
dm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1u
cywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbCB7IG5vdEltcGxlbWVu
dGVkKCk7IH0KKworICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgZmlu
YWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKwor
ICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5h
bCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQq
IHBpeGVscykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBmaW5hbCB7
IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQor
CisgICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhl
bHMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB0ZXhTdWJJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgZmluYWwg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9
CisKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRC
dWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMp
IGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1h
dGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWwgeyBub3RJ
bXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorCisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZp
bmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorCisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdl
dEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisK
KyAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1
aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29s
ZWFuKiBkYXRhKSBmaW5hbCAvKiBOT0xJTlQgKi8geyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAg
ICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiB2YWwpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmlu
YWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5H
TEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dM
dm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgZmluYWwgeyBub3RJ
bXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7
IH0KKworICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQg
Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7
IH0KKworICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFy
YW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0VGV4UGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsIHsg
bm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVu
dGVkKCk7IH0KKworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCogcGFyYW0pIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSBmaW5hbCB7IG5v
dEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1l
bnRlZCgpOyB9CisKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgp
OyB9CisKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0
UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBm
aW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1w
bGVtZW50ZWQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGI4YTQ3MjIz
NDE2ZGEyNWQ4YjJjMWIyNTNmMGFiMGYzMzc5YTkxMDEuLjc4OWVlNzc2ZWQ1ZjljZjI2NzU2ZGNi
YmIxYjM4NTcyZWRmNDY4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTgx
Nyw3ICs4MTcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9v
bCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0
LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwg
Ym9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9T
ZXNzaW9uLmNwcAppbmRleCA5YTkxODJlMDYzNTllYjY5NTRkY2Q5MWJkMTUwMDQyMjJlMzY0ODYx
Li43MDA5MjMyMjgzMzgwNGE1NGU2YTZiMGE1OWNjM2E4MjQxY2QzOWMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b24uY3BwCkBAIC0yOSw5ICsyOSwxMSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgVVNF
KEFVRElPX1NFU1NJT04pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdQ
VVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgK
aW5kZXggYjlhMDFiMDYyNWUzYjdjN2YwMTE4NGE4M2MzNmU1NDkxMjJmMDlhOC4uMTUxNzJjOWY2
MjEwYmY0Zjk1ZTBjNmFhNzkzNmM2MjJlYThkOTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmgKQEAgLTQ0LDcgKzQ0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlv
bjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggYjdjZWRiN2U4Mzk0Zjk5YmE5Y2Zi
MGEyYWMyYTk3ODExYjNjNDE4Zi4uNzcwMmQxYjcwMmQxMjE2MmUxOWFiOWE2ZGFhNGM1OTc1MTg2
MmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTMzLDEwICszMyw2IEBACiAjaW5jbHVk
ZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZEdlbmVyaWNDdWU7
CiBjbGFzcyBJU09XZWJWVFRDdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDczOWE0OTZlZjQ5NGNiNGE2MTg1
NjZmZmM2NGQ0YTI2NGE3NGU5ZDAuLjRiZWFlMDYyMzE3YmEyNmE2MDY4M2YxZjQ1MTIzM2ViMTA3
M2FhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykg
JiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJSVENFbmNvZGVySWRlbnRpZmllci5oIgpAQCAtNDMsNyArNDQsNiBAQCB1c2luZyBDVlBpeGVs
QnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKIAogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERl
Y29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggMmRhZDIwMzg0MmYwZTU1M2ZlM2I0NjI0
NDFlZTk0ZmEyNjQ5M2ExMS4uYzI4Y2U3ZjJlMTdlODlhOGU1MTg2YTc3MDZhMmU4YTQ0ZjZiN2Uz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSUlu
amVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyQ29udGVudFR5cGVzLmg+CkBAIC01NCw3ICs1NSw2IEBAIGNsYXNzIERhdGE7CiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjEsNCArMTYxLDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDMwNjRlOWM0YWZjYzJjZmY1NGEzMjVlMjUzMWVkMDUyMmEwMDEzOTMuLmI5Nzk0NjU5
ZWFiZDE4NGIzODljMDZkMTMyZjhjNDJmODA1MjNjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
CkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIw
YWJmYTFjNjlmZWE5ZDUzOTY2ZmIuLjdlMWQ0OTk0NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3Mzc3
ODAwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZjUzNDc4MzQ3ZTc3NWRm
MzdlYTk3NjM0YzIzMzA5MzJiNGExNGQyOC4uYWQ3ZmYxODdkYmI0MzUzYjllZDNiYzU3YzViYTJj
NGFhNGU4Y2ZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2Vu
ZFF1ZXVlLmg+CkBAIC0zOCw3ICszOSw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFN0cmVhbS5oCmluZGV4IGRkMDgyMDEwNzEyYjlmNWRiOWZlYmQ4OGRhNjY5YjZkZjYx
ZDBmMjkuLmI0M2NiMmVmYWQxZTEwMWVlMjY1YjkzZGRlOWIwNjEyNzM2YTA5NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRsZS5oPgpAQCAtMzMsNyAr
MzQsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2Rl
cjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXQuaAppbmRleCBjYjQ4ZTA1NzM0OGEyZTg2NmIwOTFmZjVhYzg3MjYwNWNhMTkyZGQ1
Li4zMjNmMjVlZThmZDgxYjAyNjMwZDJmMjU5YTFhZmI4ODRiNGNmNWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldC5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggZWE1
MzU5NjAxMDlmZWU2ZGM0ODA1Y2Y2ODkxMjc5OGVlOWFiNmYwMy4uMDYyY2M4ODEyMzhmNWVkNzcz
MDBlY2Q1ZTA2NGFkNjZlNzU1N2U1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KFBERktJVF9QTFVHSU4pCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
UERGS2l0SW1wb3J0cy5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJQbHVnaW4uaCIKQEAgLTYwLDEwICs2MSw2IEBAIE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9u
OwogT0JKQ19DTEFTUyBXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNT
IFdLUERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGU7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RD
YWNoZTsKIGNsYXNzIEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFj
ZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4
N2E4YzI2MzRlOWQ1NDkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4
LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkx
Miw2ICs5MTYsMjIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdl
LmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNp
emUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2lu
ZG93RGlzcGxheUlEKSBjb25zdAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgVU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGUoYXR0cmlidXRlcyk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisK
KyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBs
YXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5
ZjJjZDMzNzYwZGM4Li4wZTU1YTcwMWZmNzU3MTk5YWMyZDg3NzkzYzQ5NjgwNWI4ODZkMTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGVudW0gY2xhc3MgU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFn
ZTsKIApAQCAtMjQzLDcgKzI0NCwxMSBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
V2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmlu
YWw7CiAjZW5kaWYKKyNlbmRpZgorCiAKICAgICBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxv
d2VkQ29tcG9zaXRpbmdUcmlnZ2VycygpIGNvbnN0IGZpbmFsCiAgICAgewpAQCAtNDAzLDYgKzQw
OCw3IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNI
b3Jpem9udGFsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRN
YWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhciB7IGZhbHNlIH07CisKICAgICBXZWJQYWdlJiBt
X3BhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDk1NzBlYzNiYTA0YWUzYTcwMzgzNDk1ODgwZDAzYjIyNWJkNjFkMmIuLjdiMDdk
ZjY5MjU5OTk3NTYzMjgzODVjMmMzYzNlNDEyYzRmNzA4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MjIsNiArNDIyLDkgQEAgV2ViUGFn
ZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3Mg
eyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB9CiAgICAgLCBtX3No
b3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5H
UFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgcGFyYW1l
dGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgfQorI2lmIEVOQUJMRShXRUJHTCkKKyAg
ICAsIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJl
bmRlcldlYkdMSW5HUFVQcm9jZXNzfQorI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgICwgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBwYXJhbWV0ZXJz
Lm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB9CiAjZW5kaWYKQEAgLTcyNSw3ICs3Mjgs
NiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKFdlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIqIG1hbmFnZXIgPSB3ZWJQcm9jZXNzLnN1cHBsZW1lbnQ8V2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlcj4oKSkKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkobWFuYWdlci0+bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KCkpOwogI2VuZGlm
Ci0gICAgCiAgICAgaWYgKHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yICE9IDEpCiAgICAgICAg
IHNjYWxlVmlldyhwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3Rvcik7CiAKQEAgLTM3ODcsNiArMzc4
OSw5IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJv
Y2Vzc0ZvckNhbnZhc1JlbmRlcmluZyhtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2Vzcyk7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRl
cmluZyhtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQ
cm9jZXNzKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3Mp
OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCkBAIC02OTg0
LDYgKzY5ODksNyBAQCB2b2lkIFdlYlBhZ2U6OnN5bmNocm9uaXplQ09SU0Rpc2FibGluZ1BhdHRl
cm5zV2l0aE5ldHdvcmtQcm9jZXNzKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyht
X2lkZW50aWZpZXIsIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zKSwgMCk7CiB9CiAKKwogI2lmIEVO
QUJMRShNRURJQV9VU0FHRSkKIHZvaWQgV2ViUGFnZTo6YWRkTWVkaWFVc2FnZU1hbmFnZXJTZXNz
aW9uKE1lZGlhU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBidW5k
bGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHBhZ2VVUkwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTc0OGJlMjEzNWUzZDIyYjQwZGIwNWExNjNh
ZWUwMGFkNTM0MjRkMS4uMmQ1ZjQ0MWNlNDNkODNjMTU5NTA5YmVhZjA0YTVkMjc4ZmUwZTEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIK
ICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJE
cmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTE2MCw3ICsx
NjEsNiBAQCBjbGFzcyBBcnJheTsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9u
OwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJl
ZmVyZW5jZTsKIH0KQEAgLTE4MjMsNiArMTgyMyw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3Vs
ZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlN
ZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wg
bV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJp
dmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYKQEAgLTIxODAsNCArMjE4MywzIEBAIGlubGlu
ZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBX
ZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBmMmYyMjgyMmM3YjIyM2Zj
YTU5Zjk1NTczZDExZGM5OWIxMDM0ODExLi41ODJlZTc1ZDk5YTc0MjQyNTRhMzlkYWIyMDZmODQ2
MTczNGFkOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0x
OTQyLDYgKzE5NDIsMjAgQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJp
bmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7
CiB9CisKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nl
c3NGb3JXZWJHTChib29sIHVzZUdQVVByb2Nlc3NGb3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQVVBy
b2Nlc3NGb3JXZWJHTCA9IHVzZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworYm9vbCBXZWJQcm9j
ZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQorCisjZW5kaWYKKwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTlj
NDdkYjRjNDQ3YzBmNGFiNjI3YzA5NGI1ZjY4ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMyNzY0
YzRkODUzNzkwOTBiMmNiY2E3M2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC0zNDcsNiArMzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUdQVVByb2Nl
c3NGb3JET01SZW5kZXJpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yTWVk
aWEoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6
UmVuZGVyaW5nUHVycG9zZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgc2V0VXNlR1BV
UHJvY2Vzc0ZvcldlYkdMKGJvb2wpOworICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5n
Rm9yV2ViR0woKSBjb25zdDsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpAQCAt
Njg3LDYgKzY5MSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JDYW52
YXNSZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVu
ZGVyaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFs
c2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JXZWJH
TCB7IGZhbHNlIH07CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0YTQ4NDFjNDc5Yzk5
NWE4ZDJjMzVlN2VkOGRlNGQ5MWU5N2M4M2YxLi4yZjg2YzMyNWE5ZDBhMDhmYjM4NTU2NWRjOGVj
NjE1Y2MzM2UyM2Q0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMTEtMDMgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIHJlbW90ZSB2ZXJz
aW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUgcHJvY2Vzcy4KKyAgICAgICAgQ3VycmVu
dCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDIGFuZCBpcyBpbmNvbXBsZXRlLgor
CisgICAgICAgIEFkZCB0aGUgY29kZSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgdGhlIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOiBBZGRlZC4K
KwogMjAyMC0xMS0xOSAgSG9hIERpbmggIDxkdmhAYXBwbGUuY29tPgogCiAgICAgICAgIENvZGUg
Zm9ybWF0dGluZzogY2hhbmdlIGluc3RhbmNlcyBvZiAiQHN5bnRoZXNpemUgYT1iIiB0byAiQHN5
bnRoZXNpemUgYSA9IGIiLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgx
NWRiYTI1MTdhODVlNjNlYzE2MDI3YTc5NTMzYTFlMmM5ZWJhMzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAsMCArMSw3OTEgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworCisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgc291cmNlIGZpbGVzIGZv
ciBXZWJHTCBHUFUgcHJvY2VzcyBJUEMuCisjCisjIHB5dGhvbjMgLW0gYmxhY2sgLWwgMTUwIFRv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIyBweXRob24zIC1tIG15cHkgVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisjCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBw
YXRobGliCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworZnJvbSB0eXBpbmcgaW1wb3J0IExpc3Qs
IERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwKKworcm9vdF9k
aXIgPSAocGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2
ZSgpCitmdW5jdGlvbnNfaW5wdXRfZm5zID0gWworICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAi
V2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJHcmFwaGljc0NvbnRleHRHTC5o
IiwKKyAgICByb290X2RpciAvICJTb3VyY2UiIC8gIldlYkNvcmUiIC8gInBsYXRmb3JtIiAvICJn
cmFwaGljcyIgLyAiRXh0ZW5zaW9uc0dMLmgiLAorXQordHlwZXNfaW5wdXRfZm4gPSByb290X2Rp
ciAvICJTb3VyY2UiIC8gIldlYkNvcmUiIC8gInBsYXRmb3JtIiAvICJncmFwaGljcyIgLyAiR3Jh
cGhpY3NUeXBlc0dMLmgiCisKK3RlbXBsYXRlX3ByZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRo
aXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQu
CisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJL
aXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisg
ICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIi8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5j
bHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQore30KKworIiIiCispCitjb250
ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVBy
b2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
biIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUK
KyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVz
c2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworICAgIHZv
aWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIEVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIFByZXBhcmVGb3JE
aXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMKKyAgICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVz
Q2hlY2soKQore30KK319CisKKyNlbmRpZgorCisiIiIKKykKKworY29udGV4dF9wcm94eV9mdW5j
dGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIg
LyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0
aW9uc0dlbmVyYXRlZC5oIgorY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisg
ICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIgorLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBp
bmNsdWRlZCBpbiB0aGUgcHVibGljIHNlY3Rpb24gb2YgdGhlCisvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5IGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQore30KKyIiIgorKQor
CisKK2RlZiB3cml0ZV9maWxlKGZuLCBuZXdfY29udGVudHMpOgorICAgIHRyeToKKyAgICAgICAg
d2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgaWYgZi5yZWFkKCkgPT0gbmV3X2NvbnRl
bnRzOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgIGV4Y2VwdDoKKyAgICAgICAgcGFzcwor
ICAgIHdpdGggb3BlbihmbiwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKG5ld19jb250ZW50
cykKKworCitjbGFzcyBjcHBfdHlwZShvYmplY3QpOgorICAgIHR5cGVfbmFtZTogc3RyCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lX3NwZWM6IHN0cik6CisgICAgICAgIHNlbGYu
dHlwZV9uYW1lID0gdHlwZV9uYW1lX3NwZWMuc3RyaXAoKQorCisgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9faGFzaF9fKHNl
bGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnR5cGVfbmFtZSkKKworICAgIGRlZiBfX3Jl
cHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBkZWYgX19l
cV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lID09IG90aGVy
LnR5cGVfbmFtZQorCisgICAgZGVmIGlzX3ZvaWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LnR5cGVfbmFtZSA9PSAidm9pZCIgb3Igc2VsZi50eXBlX25hbWUgPT0gIkdDR0x2b2lkIgorCisg
ICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi50eXBl
X25hbWUuc3RhcnRzd2l0aCgiR0NHTFNwYW4iKSBhbmQgbm90IHNlbGYudHlwZV9uYW1lLnN0YXJ0
c3dpdGgoIkdDR0xTcGFuPGNvbnN0ICIpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAg
ICAgaWYgc2VsZi5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJl
dHVybiAiKiIgaW4gc2VsZi50eXBlX25hbWUgYW5kICJjb25zdCAiIG5vdCBpbiBzZWxmLnR5cGVf
bmFtZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZik6CisgICAgICAgIG0gPSByZS5t
YXRjaChyImNvbnN0ICguKylcKiIsIHNlbGYudHlwZV9uYW1lKQorICAgICAgICByZXR1cm4gbSBp
cyBub3QgTm9uZQorCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJu
ICImIiBpbiBzZWxmLnR5cGVfbmFtZSBhbmQgImNvbnN0ICIgbm90IGluIHNlbGYudHlwZV9uYW1l
CisKKyAgICBkZWYgaXNfY29uc3RfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICBtID0gcmUubWF0
Y2gociJjb25zdCAoLispJiIsIHNlbGYudHlwZV9uYW1lKQorICAgICAgICByZXR1cm4gbSBpcyBu
b3QgTm9uZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5
cGVfbmFtZS5zdGFydHN3aXRoKCJHQ0dMU3BhbiIpCisKKyAgICBkZWYgaXNfZHluYW1pY19zcGFu
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pc19zcGFuKCkgYW5kICIsIiBub3QgaW4gc2Vs
Zi50eXBlX25hbWUKKworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxmKToKKyAgICAgICAgbSA9
IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYiLCBzZWxmLnR5cGVfbmFtZSkKKyAgICAgICAgaWYgbToK
KyAgICAgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgbSA9IHJlLm1h
dGNoKHIiY29uc3QgKC4rKVwqIiwgc2VsZi50eXBlX25hbWUpCisgICAgICAgIGlmIG06CisgICAg
ICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgIG0gPSByZS5tYXRjaChy
IiguKylcKiIsIHNlbGYudHlwZV9uYW1lKQorICAgICAgICBpZiBtOgorICAgICAgICAgICAgcmV0
dXJuIGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiIsIHNl
bGYudHlwZV9uYW1lKQorICAgICAgICBpZiBtOgorICAgICAgICAgICAgcmV0dXJuIGdldF9jcHBf
dHlwZShtWzFdKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9ydmFsdWVfdHlw
ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFtZSArICIm
JiIpCisKKworY2xhc3MgY3BwX2V4cHIob2JqZWN0KToKKyAgICB0eXBlOiBjcHBfdHlwZQorICAg
IGV4cHI6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBleHBy
OiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYuZXhwciA9IGV4
cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5leHByCisK
KworQ3BwRXhwckNvbnZlcnRlciA9IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBf
ZXhwcl0KKworCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6
IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0
aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pih7c3Ry
KGV4cHIpfSkpIikKKworCitkZWYgY3BwX3N0YXRpY19jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBl
OiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYic3Rh
dGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oe3N0cihleHByKX0pIikKKworCitkZWYgY3BwX2lt
cGxpY2l0X2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoK
KyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgc3RyKGV4cHIpKQorCisKK2RlZiBjcHBfc3RkX2Fy
cmF5X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhw
cjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfSh7c3RyKGV4cHIpfS5k
YXRhKCksIHtzdHIoZXhwcil9LnNpemUoKSkiKQorCisKK2RlZiBjcHBfbW92ZV9leHByKGV4cHI6
IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIoZXhwci50eXBlLmdl
dF9ydmFsdWVfdHlwZSgpLCBmIldURk1vdmUoe3N0cihleHByKX0pIikKKworCitjcHBfdHlwZXM6
IERpY3Rbc3RyLCBjcHBfdHlwZV0gPSB7fQorCisKK2RlZiBnZXRfY3BwX3R5cGUodHlwZV9uYW1l
OiBzdHIpOgorICAgIHIgPSBjcHBfdHlwZXMuZ2V0KHR5cGVfbmFtZSwgTm9uZSkKKyAgICBpZiBu
b3QgcjoKKyAgICAgICAgciA9IGNwcF90eXBlc1t0eXBlX25hbWVdID0gY3BwX3R5cGUodHlwZV9u
YW1lKQorICAgIHJldHVybiByCisKKworY2xhc3MgY3BwX2FyZyhvYmplY3QpOgorICAgIG5hbWU6
IHN0cgorICAgIHR5cGU6IGNwcF90eXBlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTog
Y3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAg
c2VsZi50eXBlID0gdHlwZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVy
biAie30ge30iLmZvcm1hdChzZWxmLnR5cGUsIHNlbGYubmFtZSkKKworCitjbGFzcyBjcHBfZGVj
bChvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgbmFtZTogc3RyCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYu
dHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9fc3RyX18o
c2VsZik6CisgICAgICAgIHJldHVybiBmIntzdHIoc2VsZi50eXBlKX0ge3NlbGYubmFtZX0iCisK
KworY2xhc3MgY3BwX2FyZ19saXN0KG9iamVjdCk6CisgICAgYXJnczogTGlzdFtjcHBfYXJnXQor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBz
ZWxmLmFyZ3MgPSBhcmdzCisKKyAgICBkZWYgbmFtZXMoc2VsZik6CisgICAgICAgIHJldHVybiAi
LCAiLmpvaW4oYS5uYW1lIGZvciBhIGluIHNlbGYuYXJncykKKworICAgIGRlZiBleHBycyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIFtjcHBfZXhwcihhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2Vs
Zi5hcmdzXQorCisgICAgZGVmIGRlY2xzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2NwcF9kZWNs
KGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgdHlwZXMoc2Vs
Zik6CisgICAgICAgIHJldHVybiBbYS50eXBlIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRl
ZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKHN0cihhKSBmb3IgYSBp
biBzZWxmLmFyZ3MpCisKKworY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKKyAgICBuYW1lOiBzdHIK
KyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBp
c19leHRlbnNpb246IGJvb2wKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJl
dHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246IGJv
b2wpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUg
PSByZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYuaXNf
ZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIGYie3NlbGYucmV0dXJuX3R5cGV9IHtzZWxmLm5hbWV9IHtzdHIoc2VsZi5hcmdz
KX0iCisKKyAgICBkZWYgZ2V0X2FyZ3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBUdXBsZVtMaXN0W2Nw
cF9hcmddLCBMaXN0W2NwcF9hcmddXToKKyAgICAgICAgaW5fYXJncyA9IFtdCisgICAgICAgIG91
dF9hcmdzID0gW10KKyAgICAgICAgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6CisgICAgICAgICAg
ICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgICAgIG91dF9hcmdzICs9IFth
XQorICAgICAgICAgICAgZWxpZiBhLnR5cGUuaXNfb3V0cHV0X2J1ZmZlcl90eXBlKCk6CisgICAg
ICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbGlmIGEubmFtZSA9PSAi
YnVmU2l6ZSI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxpZiBhLnR5cGUu
aXNfcmVmZXJlbmNlKCk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluX2FyZ3MgKz0gW2FdCisgICAgICAgIHJldHVy
biBpbl9hcmdzLCBvdXRfYXJncworCisgICAgZGVmIGlzX2ltcGxlbWVudGVkX3R5cGUoc2VsZiwg
dHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiB0eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGlz
X2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICBpZiBhbnkoIkdDR0xzeW5jIiBpbiBhLnR5cGUu
dHlwZV9uYW1lIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICBpZiAiR0NHTHN5bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1l
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLm5hbWUgPT0gImJ1
ZlNpemUiIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorICAgICAgICBpZiBhbnkoYS50eXBlLmlzX3BvaW50ZXIoKSBhbmQgYS50eXBlLmdldF92YWx1
ZV90eXBlKCkuaXNfdm9pZCgpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkobm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlw
ZShhLnR5cGUpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICBpZiBzZWxmLnJldHVybl90eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBl
KHNlbGYucmV0dXJuX3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJl
dHVybiBUcnVlCisKKword2Via2l0X2lwY190eXBlczogRGljdFtjcHBfdHlwZSwgY3BwX3R5cGVd
ID0ge30KKword2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzOiBEaWN0W1R1cGxlW2NwcF90eXBl
LCBjcHBfdHlwZV0sIENwcEV4cHJDb252ZXJ0ZXJdID0ge30KKworCitkZWYgd2Via2l0X2lwY19j
b252ZXJ0X2V4cHIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKToKKyAgICAiIiIgQ29u
dmVydHMgYGV4cHJgIG9mIHR5cGUgb2YgYHNlbGZgIHRvIGB0eXBlYCAiIiIKKyAgICBjb252ZXJ0
ID0gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLmdldCgoZXhwci50eXBlLCB0eXBlKSwgTm9u
ZSkKKyAgICBpZiBub3QgY29udmVydDoKKyAgICAgICAgaWYgZXhwci50eXBlID09IHR5cGU6Cisg
ICAgICAgICAgICByZXR1cm4gZXhwcgorICAgICAgICBjb252ZXJ0ID0gY3BwX2ltcGxpY2l0X2Nh
c3QKKyAgICByZXR1cm4gY29udmVydChleHByLCB0eXBlKQorCisKK2RlZiB3ZWJraXRfaXBjX2dl
dF9keW5hbWljX3NwYW5fc3RvcmVfdHlwZSh0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX3R5cGU6Cisg
ICAgaW5saW5lX2NhcGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiB0eXBlLnR5cGVfbmFtZSBlbHNl
IDQKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHR5cGUudHlwZV9uYW1lLnJlcGxhY2UoIkdDR0xT
cGFuIiwgIlZlY3RvciIpWzotMV0gKyAiLCAiICsgc3RyKGlubGluZV9jYXBhY2l0eSkgKyAiPiIp
CisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZSh0eXBlOiBjcHBfdHlwZSkg
LT4gY3BwX3R5cGU6CisgICAgcmV0dXJuIGdldF9jcHBfdHlwZSh0eXBlLnR5cGVfbmFtZS5yZXBs
YWNlKCJHQ0dMU3BhbiIsICJzdGQ6OmFycmF5IikpCisKKworIyBTZWUgbWVzc2FnZXMucHkgZnVu
Y3Rpb25fcGFyYW1ldGVyX3R5cGUKK3dlYmtpdF9pcGNfYnVpbHRpbl90eXBlcyA9IHNldCgKKyAg
ICBbInVpbnQ4X3QiLCAidWludDE2X3QiLCAidWludDMyX3QiLCAidWludDY0X3QiLCAiaW50OF90
IiwgImludDE2X3QiLCAiaW50MzJfdCIsICJpbnQ2NF90IiwgImJvb2wiLCAiZmxvYXQiLCAiZG91
YmxlIiAiYm9vbCJdCispCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVy
X3R5cGUodHlwZTogY3BwX3R5cGUpIC0+IGNwcF90eXBlOgorICAgIGlmIHR5cGUudHlwZV9uYW1l
IGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoKKyAgICAgICAgcmV0dXJuIHR5cGUKKyAgICBy
ZXR1cm4gdHlwZS5nZXRfcnZhbHVlX3R5cGUoKQorCisKK2RlZiB3ZWJraXRfaXBjX21vdmVfZXhw
cihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAgaWYgZXhwci50eXBlLnR5cGVfbmFt
ZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVybiBleHByCisgICAg
cmV0dXJuIGNwcF9tb3ZlX2V4cHIoZXhwcikKKworCitkZWYgd2Via2l0X2lwY19tc2dfbmFtZShm
dW5jOiBjcHBfZnVuYyk6CisgICAgcmV0dXJuIGZ1bmMubmFtZVswXS5jYXBpdGFsaXplKCkgKyBm
dW5jLm5hbWVbMTpdCisKKworY2xhc3Mgd2Via2l0X2lwY19tc2cob2JqZWN0KToKKyAgICBuYW1l
OiBzdHIKKyAgICBpbl9hcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBvdXRfYXJnczogY3BwX2FyZ19s
aXN0CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBz
ZWxmLm5hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmMpCisgICAgICAgIGluX2FyZ3MsIG91
dF9hcmdzID0gZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgaXBjX2luX2FyZ3Mg
PSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSkgZm9yIGEgaW4gaW5f
YXJnc10KKyAgICAgICAgaXBjX291dF9hcmdzID0gW10KKyAgICAgICAgaWYgbm90IGZ1bmMucmV0
dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJn
KHdlYmtpdF9pcGNfdHlwZXNbZnVuYy5yZXR1cm5fdHlwZV0sICJyZXR1cm5WYWx1ZSIpXQorICAg
ICAgICBmb3IgYSBpbiBvdXRfYXJnczoKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3Bw
X2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSldCisgICAgICAgICAgICBpZiBh
LnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgaXBjX2luX2FyZ3MgKz0g
W2NwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpXQorICAg
ICAgICBzZWxmLmluX2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX2luX2FyZ3MpCisgICAgICAgIHNl
bGYub3V0X2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX291dF9hcmdzKQorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmLm91dF9hcmdzLmFyZ3MpOgorICAgICAgICAg
ICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSAt
PiAoe3N0cihzZWxmLm91dF9hcmdzKX0pIFN5bmNocm9ub3VzIgorICAgICAgICByZXR1cm4gZiJc
biAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIgorCisKK2NsYXNzIHdl
YmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBtc2df
bmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19s
aXN0CisKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlz
dFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHByczogTGlz
dFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3Bw
X2Z1bmMubmFtZQorICAgICAgICBzZWxmLm1zZ19uYW1lID0gd2Via2l0X2lwY19tc2dfbmFtZShj
cHBfZnVuYykKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90eXBl
CisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5wcmVfY2Fs
bF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYu
cG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAgICAg
IHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBfZnVu
Yy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1
ZShjcHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZ3MoaW5f
YXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmdzKG91dF9hcmdzKQorICAgICAgICBz
ZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAg
ICBpbl9leHBycyA9ICIsICIuam9pbihbc3RyKGkpIGZvciBpIGluIHNlbGYuaW5fZXhwcnNdKQor
ICAgICAgICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIHNlbGYub3V0X2V4
cHJzKQorICAgICAgICBpc19hc3luYyA9IHNlbGYucmV0dXJuX3R5cGUuaXNfdm9pZCgpIGFuZCBs
ZW4ob3V0X2V4cHJzKSA9PSAwCisgICAgICAgIGlmIGlzX2FzeW5jOgorICAgICAgICAgICAgc2Vs
Zi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsiLAorICAgICAgICAgICAgXQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmInNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtp
bl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19u
YW1lfTo6UmVwbHkoe291dF9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MV9zKTsiLAorICAgICAgICAgICAgXQorCisgICAgZGVmIHByb2Nlc3NfaW5fYXJncyhzZWxmLCBp
bl9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGkgaW4gaW5fYXJnczoKKyAgICAg
ICAgICAgIGlmIGkudHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICAgICAgYXNz
ZXJ0IEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhw
cnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKGkudHlwZSwgaS5uYW1lKSwg
d2Via2l0X2lwY190eXBlc1tpLnR5cGVdKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmdzKHNl
bGYsIG91dF9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIG8gaW4gb3V0X2FyZ3M6
CisgICAgICAgICAgICBpZiBvLnR5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgICAgIHZh
bHVlX3R5cGUgPSBvLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbdmFsdWVfdHlwZV0KKyAgICAgICAg
ICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3ZhbHVlX3R5cGUsIG8ubmFtZSArICJSZXBs
eSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlw
ZSl9IHtzdHIodi5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgICAgIGUgPSBjcHBfZXhw
cih2LnR5cGUsIHYubmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbZV0K
KyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbZiIqe28ubmFtZX0gPSB7
d2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgdmFsdWVfdHlwZSl9OyJdCisgICAgICAgICAgICBl
bGlmIG8udHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0g
d2Via2l0X2lwY190eXBlc1tvLnR5cGVdCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Vi
a2l0X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJl
X2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAg
ICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KKyAg
ICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90Iiks
IGYie28ubmFtZX0uYnVmU2l6ZSIpXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0
bXRzICs9IFtmInN0ZDo6Y29weSh7di5uYW1lfS5kYXRhKCksIHt2Lm5hbWV9LmRhdGEoKSArIHtv
Lm5hbWV9LmJ1ZlNpemUsIHtvLm5hbWV9LmRhdGEpOyJdCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcihvLnR5cGUsIG8ubmFtZSld
CisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90
eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0dXJuX3R5
cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIoaXBjX3JldHVybl90eXBl
LCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntyZXR1
cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9fTsiXQor
ICAgICAgICBzZWxmLm91dF9leHBycyA9IFtyZXR1cm5fdmFsdWVfZXhwcl0gKyBzZWxmLm91dF9l
eHBycworICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbZiJyZXR1cm4ge3N0cih3ZWJr
aXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgcmV0dXJuX3R5cGUpKX07Il0K
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIg
aWYgIl8iIGluIHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4g
ICAgICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10
cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIlxuICAgIHtzdHIo
c2VsZi5yZXR1cm5fdHlwZSl9IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pIGZpbmFse25v
bGludH0KKyAgICB7e3tib2R5fQorICAgIH19IiIiCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBf
cHJveHlfcGxhY2Vob2xkZXIob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICByZXR1cm5fdHlw
ZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBib2R5OiBMaXN0W3N0cl0K
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBz
ZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNw
cF9mdW5jLnJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAg
ICAgICAgc2VsZi5ib2R5ID0gWyJub3RJbXBsZW1lbnRlZCgpOyJdCisgICAgICAgIGlmIGNwcF9m
dW5jLnJldHVybl90eXBlLnR5cGVfbmFtZSAhPSAidm9pZCI6CisgICAgICAgICAgICBzZWxmLmJv
ZHkgKz0gWyJyZXR1cm4geyB9OyJdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAg
bm9saW50ID0gIiAvKiBOT0xJTlQgKi8iIGlmICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAg
ICAgICByZXR1cm4gZiJcbiAgICB7c3RyKHNlbGYucmV0dXJuX3R5cGUpfSB7c2VsZi5uYW1lfSh7
c3RyKHNlbGYuYXJncyl9KSBmaW5hbHtub2xpbnR9IHt7IHsgJyAnLmpvaW4oc2VsZi5ib2R5KSB9
IH19IgorCisKK2NsYXNzIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9i
amVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgQysrIGltcGxlbWVudGF0
aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfcHJveHlfaW1w
bF0KKyAgICB1bmltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyXQor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10sIHVuaW1w
bGVtZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Vi
a2l0X2lwY19jcHBfcHJveHlfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKyAgICAgICAgc2VsZi51
bmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKGYpIGZvciBmIGluIHVu
aW1wbGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0
dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBscyArIHNlbGYudW5pbXBscykK
KworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAg
ICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9wcm94
eV9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAg
ICAgKQorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBz
dHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBpc19leHRlbnNpb246IGJvb2wKKyAgICBw
cmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAg
cG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0K
KyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgcmV0dXJuX3ZhbHVlX2V4cHI6IE9w
dGlvbmFsW2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBf
ZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5h
cmdzID0gY3BwX2FyZ19saXN0KFtdKQorICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGNwcF9m
dW5jLmlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAg
ICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBb
XQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBb
XQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gTm9uZQorCisgICAgICAgIHNlbGYu
cHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIGluX2Fy
Z3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNl
bGYucHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3MuYXJncywgc2V0KGluX2FyZ3MpLCBzZXQob3V0
X2FyZ3MpKQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19j
YWxsKHNlbGYpOgorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9ucygpLiIgaWYgc2VsZi5pc19l
eHRlbnNpb24gZWxzZSAiIgorCisgICAgICAgIGluX2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBm
b3IgZSBpbiBzZWxmLmluX2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IGxlbihzZWxmLm91dF9l
eHBycykgPT0gMAorCisgICAgICAgIGNhbGxfZXhwciA9IGYibV9jb250ZXh0LT57ZXh0fXtzZWxm
Lm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhw
cjoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFtmIntzdHIoc2VsZi5y
ZXR1cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxfZXhwcn07Il0KKyAgICAgICAgaWYgbm90IGlzX2Fz
eW5jOgorICAgICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBz
ZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFtmImNv
bXBsZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9KTsiXQorCisgICAgZGVmIHByb2Nlc3NfYXJncyhz
ZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddLCBpbl9hcmdzOiBTZXRbY3BwX2FyZ10sIG91dF9hcmdz
OiBTZXRbY3BwX2FyZ10pOgorICAgICAgICBmb3IgYSBpbiBhcmdzOgorICAgICAgICAgICAgaWYg
YS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UK
KyAgICAgICAgICAgIGlmIGEgaW4gaW5fYXJnczoKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nl
c3NfaW5fYXJnKGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHJv
Y2Vzc19vdXRfYXJnKGEpCisgICAgICAgIGlmIHNlbGYub3V0X2V4cHJzOgorICAgICAgICAgICAg
b3V0X2FyZ19kZWNscyA9ICIsICIuam9pbihmIntzdHIoZS50eXBlKX0iIGZvciBlIGluIHNlbGYu
b3V0X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2NwcF9hcmcoZ2V0X2Nw
cF90eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh7b3V0X2FyZ19kZWNsc30pPiYmIiksICJj
b21wbGV0aW9uSGFuZGxlciIpXQorCisgICAgZGVmIHByb2Nlc3NfaW5fYXJnKHNlbGYsIGE6IGNw
cF9hcmcpOgorICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX2dl
dF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSksIGEubmFt
ZSldCisgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNw
cF9leHByKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSwgYS50eXBlKV0KKworICAg
IGRlZiBwcm9jZXNzX291dF9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIGlmIGEudHlw
ZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5n
ZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRz
ICs9IFtmIntzdHIodmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0gPSB7eyB9
fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoYS50eXBlLCBmIiZ7
dmFsdWVfYXJnLm5hbWV9IildCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5
cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0g
d2Via2l0X2lwY190eXBlc1tlLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBb
d2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY192YWx1ZV90eXBlKV0KKyAgICAg
ICAgZWxpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICBzaXplX2FyZyA9
IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpCisgICAg
ICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbc2l6ZV9hcmddCisgICAgICAgICAgICBzdG9yZV9h
cmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X2R5bmFtaWNfc3Bhbl9zdG9yZV90eXBlKGEudHlw
ZSksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihz
dG9yZV9hcmcudHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUpfShzdGF0aWNfY2FzdDxzaXplX3Q+
KHthLm5hbWV9U2l6ZSksIDApOyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBf
ZXhwcihzdG9yZV9hcmcudHlwZSwgZiJ7c3RvcmVfYXJnLm5hbWV9IildCisgICAgICAgICAgICB3
ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNl
bGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9h
cmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbGlm
IGEudHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtp
dF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3Jl
X2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9l
eHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSldCisgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0
X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlw
ZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgYXNzZXJ0IGEudHlwZS5pc19yZWZlcmVuY2UoKQorICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICB2YWx1ZV9h
cmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAg
ICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzZWxmLm5zKHZhbHVlX2FyZy50eXBlKX0ge3N0
cih2YWx1ZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFs
dWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyAr
PSBbZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhw
cih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB3ZWJraXRfaXBjX3R5cGUpKV0KKworICAgIGRl
ZiBwcm9jZXNzX3JldHVybl92YWx1ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAg
ICAgICBpZiByZXR1cm5fdHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAg
ICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAg
ICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhwcihyZXR1cm5fdHlwZSwgInJldHVyblZhbHVl
IikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIu
dHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5v
dXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHBy
KHJldHVybl92YWx1ZV9leHByLCBpcGNfcmV0dXJuX3R5cGUpKV0KKyAgICAgICAgc2VsZi5yZXR1
cm5fdmFsdWVfZXhwciA9IHJldHVybl92YWx1ZV9leHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgYm9keSA9ICIiLmpvaW4oZiJcbiAgICAgICAge2J9IiBmb3IgYiBpbiBzZWxm
LnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMp
CisgICAgICAgIHJldHVybiBmIiIiICAgIHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3Mp
fSkKKyAgICB7e3tib2R5fQorICAgIH19IiIiCisKKyAgICBkZWYgbnMoc2VsZiwgdHlwZTogY3Bw
X3R5cGUpOgorICAgICAgICAjIFRPRE86IG5hbWVzcGFjZSBpbmZvIGlzIG5vdCBzdG9yZWQgaW4g
bmFtZXMuCisgICAgICAgIGlmIHR5cGUudHlwZV9uYW1lID09ICJBY3RpdmVJbmZvIjoKKyAgICAg
ICAgICAgIHJldHVybiAiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OiIgKyBzdHIodHlwZSkK
KyAgICAgICAgcmV0dXJuIHN0cih0eXBlKQorCisKK2NsYXNzIGNvbnRleHRfY3BwX3dlYmtpdF9p
cGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIEMrKyBp
bXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3Bw
X2ltcGxdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5j
XSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfaW1wbChmKSBmb3IgZiBp
biBmdW5jc10KKworICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4g
IlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBzZWxmLmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRl
KHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlv
bnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2Vs
Zi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3MgY29udGV4dF9tc2dfd2Vi
a2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wg
V2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZ2VuZXJhdG9yLiIKKyAgICBtc2dzOiBMaXN0
W3dlYmtpdF9pcGNfbXNnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJs
ZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLm1zZ3MgPSBbd2Via2l0X2lwY19tc2coZikgZm9y
IGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICByZXR1
cm4gIiIuam9pbihzdHIobSkgZm9yIG0gaW4gc2VsZi5tc2dzKQorCisgICAgZGVmIGdlbmVyYXRl
KHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKGNvbnRleHRfbWVzc2FnZXNfZm4sIGNvbnRleHRf
bWVzc2FnZXNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X21lc3NhZ2VzKCkpKQorCisKK2RlZiBj
cmVhdGVfY3BwX2FyZyhhcmdfc3BlYzogc3RyLCBhcmdfaW5kZXg6IGludCk6CisgICAgciA9IGFy
Z19zcGVjLnJzcGxpdCgiICIsIDEpCisgICAgbmFtZSA9ICIiCisgICAgdHlwZSA9IE5vbmUKKyAg
ICBpZiBsZW4ocikgPiAxIGFuZCByWzBdICE9ICJjb25zdCI6CisgICAgICAgIG5hbWUgPSByWzFd
LnN0cmlwKCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShyWzBdKQorICAgIGVsc2U6Cisg
ICAgICAgIG5hbWUgPSAiYXJne30iLmZvcm1hdChhcmdfaW5kZXgpCisgICAgICAgIHR5cGUgPSBn
ZXRfY3BwX3R5cGUoYXJnX3NwZWMpCisgICAgcmV0dXJuIGNwcF9hcmcodHlwZSwgbmFtZSkKKwor
CitkZWYgY3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzOiBJdGVyYWJsZVtzdHJdKToKKyAg
ICByZXR1cm4gY3BwX2FyZ19saXN0KFtjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5k
ZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nfc3BlY3MpXSkKKworCitkZWYgY3JlYXRl
X2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVjczogSXRlcmFi
bGVbc3RyXSwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAgICByZXR1cm4gY3BwX2Z1bmMobmFtZT1u
YW1lLCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9j
cHBfYXJnX2xpc3QoYXJnc19zcGVjcyksIGlzX2V4dGVuc2lvbj1pc19leHRlbnNpb24pCisKKwor
ZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigidXNhZ2U6
ICVwcm9nIFtvcHRpb25zXSIpCisgICAgX29wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisK
KyAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3RlIGZyb20gd2Vi
IHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCisgICAgZnVuY3MgPSBbXQorICAgIHVuaW1wbGVtZW50
ZWQgPSBbXQorICAgIGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgorICAgICAgICBpc19l
eHRlbnNpb24gPSAiRXh0ZW5zaW9uIiBpbiBzdHIoZm4pCisgICAgICAgIHdpdGggb3Blbihmbikg
YXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAgICAgICAg
ICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goCisgICAg
ICAgICAgICAgICAgICAgICIvLyBXZWJHTCBmdW5jdGlvbnMuIFRoaXMgbGlzdCBpcyB1c2VkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIsCisgICAgICAgICAgICAgICAgICAgIGxpbmUu
c3RyaXAoKSwKKyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBicmVhawor
CisgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICBpZiByZS5t
YXRjaCgiLy8gT3RoZXIgZnVuY3Rpb25zLiIsIGxpbmUuc3RyaXAoKSk6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLip2aXJ0dWFsIChc
UyspXHMrKFx3KylcKCguKilcKSA9IDA7IiwgbGluZSkKKyAgICAgICAgICAgICAgICBpZiBtOgor
ICAgICAgICAgICAgICAgICAgICAjIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25z
LzMzNTI3MjQ1L3B5dGhvbi1zcGxpdC1ieS1jb21tYS1za2lwcGluZy10aGUtY29udGVudC1pbnNp
ZGUtcGFyZW50aGVzZXMKKyAgICAgICAgICAgICAgICAgICAgY29tbWEgPSByIiwoPyEoPzpbXjxd
Klw8W14+XSpcPikqW148Pl0qXD4pIgorICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzID0g
ZmlsdGVyKE5vbmUsIFthLnN0cmlwKCkgZm9yIGEgaW4gcmUuc3BsaXQoY29tbWEsIG1bM10uc3Ry
aXAoKSldKQorICAgICAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZT1tWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9YXJn
c19zcGVjcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1pc19leHRlbnNp
b24sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgaWYgZnVuYy5p
c19pbXBsZW1lbnRlZCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKGZ1
bmMpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB1
bmltcGxlbWVudGVkLmFwcGVuZChmdW5jKQorCisgICAgIyBJbml0aWFsaXplIFdlYktpdCBJUEMg
Z2VuZXJhdGlvbi4gQ29uc3RydWN0IHR5cGUgbWFwcGluZ3MgZm9yIHRoZSB1c2VkIEMrKyB0eXBl
cyAtPiBJUEMgdHlwZXMuCisgICAgIyBUT0RPOiBuYW1lc3BhY2luZyBpc3N1ZXMuCisgICAgYWlf
dHlwZSA9IGdldF9jcHBfdHlwZSgiQWN0aXZlSW5mbyYiKQorICAgIGFpX3RyYW5zZmVyX3R5cGUg
PSBnZXRfY3BwX3R5cGUoIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIikK
KyAgICB3ZWJraXRfaXBjX3R5cGVzW2FpX3R5cGVdID0gYWlfdHJhbnNmZXJfdHlwZQorCisgICAg
d2l0aCBvcGVuKHR5cGVzX2lucHV0X2ZuKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBmLnJl
YWRsaW5lcygpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChz
dGQ6OmlzX3NhbWVfdjwoXHcrKSwgKFx3Kyk+XCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06
CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tnZXRfY3BwX3R5cGUobVsxXSldID0g
Z2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpID09IHNpemVv
ZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAg
IGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUg
PSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2Nw
cF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252
ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0g
PSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgIGZvciBmdW5j
IGluIGZ1bmNzOgorICAgICAgICBmb3IgY3BwX3R5cGUgaW4gZnVuYy5hcmdzLnR5cGVzKCkgKyBb
ZnVuYy5yZXR1cm5fdHlwZV06CisgICAgICAgICAgICBwcmludChmIntzdHIoY3BwX3R5cGUpfSAt
PiB7d2Via2l0X2lwY190eXBlcy5nZXQoY3BwX3R5cGUsIE5vbmUpfSIpCisgICAgICAgICAgICBp
ZiBub3Qgd2Via2l0X2lwY190eXBlcy5nZXQoY3BwX3R5cGUsIE5vbmUpOgorICAgICAgICAgICAg
ICAgICMgVE9ETzogdGhpcyBpcyBub3QgZHJpdmVuIGJ5IHRoZSB0eXBpbmcuCisgICAgICAgICAg
ICAgICAgaWYgY3BwX3R5cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3BwX3R5cGUuaXNfc3Bhbigp
OgorICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKGNwcF90
eXBlLnR5cGVfbmFtZS5yZXBsYWNlKCJHQ0dMU3BhbiIsICJJUEM6OkFycmF5UmVmZXJlbmNlIikp
CisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNm
ZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGNwcF90eXBl
LmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVfdHlwZSA9
IHdlYmtpdF9pcGNfZ2V0X2R5bmFtaWNfc3Bhbl9zdG9yZV90eXBlKGNwcF90eXBlKQorICAgICAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVfdHlwZSA9
IHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgICAg
ICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zlcl90
eXBlKV0gPSBjcHBfc3RkX2FycmF5X2NvbnZlcnNpb24KKyAgICAgICAgICAgICAgICBlbGlmIGNw
cF90eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlcl90eXBl
ID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGVzW2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5cGUKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGNwcF90
eXBlLmdldF92YWx1ZV90eXBlKCkKKworICAgICMgVGhlIGlucHV0IHRvIHRoZSBnZW5lcmF0b3Jz
IGlzIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZS4KKyAgICAjIFJ1biB0aGUgdmFyaW91cyBn
ZW5lcmF0b3JzLgorICAgIGdlbmVyYXRvcnMgPSBbCisgICAgICAgIGNvbnRleHRfcHJveHlfY3Bw
X3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzLCB1bmltcGxlbWVudGVkKSwKKyAgICAgICAgY29u
dGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgICAgICBjb250ZXh0X2Nw
cF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcyksCisgICAgXQorICAgIGZvciBnIGluIGdlbmVy
YXRvcnM6CisgICAgICAgIGcuZ2VuZXJhdGUoKQorCisgICAgcHJpbnQoIkltcGxlbWVudGVkOiIp
CisgICAgcHJpbnQoIiIuam9pbihmIiAge3N0cihpKX1cbiIgZm9yIGkgaW4gZnVuY3MpKQorICAg
IHByaW50KCJVbmltcGxlbWVudGVkOiIpCisgICAgcHJpbnQoIiIuam9pbihmIiAge3N0cih1KX1c
biIgZm9yIHUgaW4gdW5pbXBsZW1lbnRlZCkpCisgICAgcHJpbnQoZiJJbXBsZW1lbnRlZDoge2xl
bihmdW5jcyl9LCB1bmltcGxlbWVudGVkOiB7bGVuKHVuaW1wbGVtZW50ZWQpfSwgdG90YWw6IHts
ZW4oZnVuY3MpK2xlbih1bmltcGxlbWVudGVkKX0iKQorCisgICAgcmV0dXJuIDAKKworCitpZiBf
X25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KG1haW4oKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414797</attachid>
            <date>2020-11-23 02:23:31 -0800</date>
            <delta_ts>2020-11-30 08:06:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201123122329.patch</filename>
            <type>text/plain</type>
            <size>383329</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzYWI2YjRlNmM0NDFj
MDYzZWM1Mzg0YzZmOTA5NDdiZDFhNDY5ZC4uZDNmNDRmMTU3NDZmODE1NGVmMjgyMGFhYzhjMDVh
YmMxNmJhOGE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0xMS0wMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVSBwcm9jZXNzLgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcworICAgICAgICB0aGUgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8KKyAgICAgICAg
dGhlIEdQVSBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlCisgICAgICAgIHJlc3VsdHMgYXJlIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSBHQ0dMU3BhbiBmb3Jt
LgorCisgICAgICAgIEltcGxlbWVudHMgc2ltcGxlIGdldHRlcnMsIG11bHRpLXZhbHVlIGdldHRl
cnMsIHNpbXBsZSBjYWxscy4KKyAgICAgICAgTWlzc2luZyBtdWx0aS12YWx1ZSBzZXR0ZXJzLgor
ICAgICAgICBNaXNzaW5nIHJlYWRQaXhlbHMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQ6IDE5MCwg
dW5pbXBsZW1lbnRlZDogMTAzLCB0b3RhbDogMjkzCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0
ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25jZSB0aGUgaW1wbGVtZW50YXRpb24gd29y
a3MuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3Zp
ZGVyLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEJhc2UuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJl
c3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6d2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2E6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnJlc2hhcGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2Nv
YTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2E6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6c3ludGhlc2l6ZUdMRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6
bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hl
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OmxheWVyQ29t
cG9zaXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6Z2V0QnVmZmVyc1RvQXV0
b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlQ29jb2E6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgor
CiAyMDIwLTExLTIyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtJbnRlZ3JhdGlvbl0gQ29udmVydCBzb21lIHJlbWFpbmluZyBJbmxpbmVCb3ggYWNj
ZXNzIHRvIHVzZSBpbmxpbmUgaXRlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTk3NzY5YmViNDBhZmM1Zjhk
Y2M0N2NiMTQxZjhjNTgwNTAzMzE0Yy4uZDM4NWUyYjBiNzVjOTg3MzEyN2EwYjM0OTE1MTc3ZDNm
YjViNmE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMTkgQEAKKzIwMjAtMTEtMDMgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3Rl
V2ViR0xCYWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBiZWdp
bm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BVIHBy
b2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQ
Qy4KKworICAgICAgICBJbXBsZW1lbnRlZCB3aXRoIGEgZ2VuZXJhdG9yIHNjcmlwdCBpbXBsZW1l
bnRpbmcgdGhlIElQQyB0byBwYXNzCisgICAgICAgIHRoZSBHcmFwaGljc0NvbnRleHRHTCBtZW1i
ZXIgZnVuY3Rpb24gY2FsbHMgZnJvbSB3ZWIgcHJvY2VzcyB0bworICAgICAgICB0aGUgR1BVIHBy
b2Nlc3MuIFRoZSBzY3JpcHQgaXMgcnVuIGR1cmluZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUK
KyAgICAgICAgcmVzdWx0cyBhcmUgY29tbWl0dGVkIHRvIHRoZSByZXBvIGZvciBlYXNlIG9mIHJl
dmlldy4KKworICAgICAgICBDaGFuZ2VzIEdyYXBoaWNzQ29udGV4dEdMIGFuZCBFeHRlbnNpb25z
R0wgdG8gbm90IGhhdmUgZHVwbGljYXRlIG5hbWVzCisgICAgICAgIGFuZCBoYXZlIHRoZSBjb3Jy
ZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZXMuCisKKyAgICAgICAgQ2hhbmdlcyBmZXcgcmVtYWluaW5n
IEdyYXBoaWNzQ29udGV4dEdMIGdldHRlcnMgdG8gdXNlIEdDR0xTcGFuIGZvcm0uCisKKyAgICAg
ICAgSW1wbGVtZW50cyBzaW1wbGUgZ2V0dGVycywgbXVsdGktdmFsdWUgZ2V0dGVycywgc2ltcGxl
IGNhbGxzLgorICAgICAgICBNaXNzaW5nIG11bHRpLXZhbHVlIHNldHRlcnMuCisgICAgICAgIE1p
c3NpbmcgcmVhZFBpeGVscy4KKworICAgICAgICBJbXBsZW1lbnRlZDogMTkwLCB1bmltcGxlbWVu
dGVkOiAxMDMsIHRvdGFsOiAyOTMKKworICAgICAgICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBl
eGlzdGluZyB3ZWJnbCB0ZXN0cyBvbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiB3b3Jrcy4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rp
b25zR2VuZXJhdGVkLmg6IEFkZGVkLgorICAgICAgICAoYWN0aXZlVGV4dHVyZSk6CisgICAgICAg
IChhdHRhY2hTaGFkZXIpOgorICAgICAgICAoYmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KGJpbmRCdWZmZXIpOgorICAgICAgICAoYmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGJpbmRS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoYmluZFRleHR1cmUpOgorICAgICAgICAoYmxlbmRDb2xv
cik6CisgICAgICAgIChibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb25TZXBh
cmF0ZSk6CisgICAgICAgIChibGVuZEZ1bmMpOgorICAgICAgICAoYmxlbmRGdW5jU2VwYXJhdGUp
OgorICAgICAgICAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChjbGVhcik6Cisg
ICAgICAgIChjbGVhckNvbG9yKToKKyAgICAgICAgKGNsZWFyRGVwdGgpOgorICAgICAgICAoY2xl
YXJTdGVuY2lsKToKKyAgICAgICAgKGNvbG9yTWFzayk6CisgICAgICAgIChjb21waWxlU2hhZGVy
KToKKyAgICAgICAgKGNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTJE
KToKKyAgICAgICAgKGNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGNyZWF0ZVJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChjcmVhdGVTaGFkZXIpOgorICAgICAgICAoY3JlYXRlVGV4dHVyZSk6CisgICAg
ICAgIChjdWxsRmFjZSk6CisgICAgICAgIChkZWxldGVCdWZmZXIpOgorICAgICAgICAoZGVsZXRl
RnJhbWVidWZmZXIpOgorICAgICAgICAoZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChkZWxldGVS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGRlbGV0ZVRl
eHR1cmUpOgorICAgICAgICAoZGVwdGhGdW5jKToKKyAgICAgICAgKGRlcHRoTWFzayk6CisgICAg
ICAgIChkZXB0aFJhbmdlKToKKyAgICAgICAgKGRldGFjaFNoYWRlcik6CisgICAgICAgIChkaXNh
YmxlKToKKyAgICAgICAgKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChkcmF3
QXJyYXlzKToKKyAgICAgICAgKGRyYXdFbGVtZW50cyk6CisgICAgICAgIChlbmFibGUpOgorICAg
ICAgICAoZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZmluaXNoKToKKyAgICAg
ICAgKGZsdXNoKToKKyAgICAgICAgKGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAg
KGZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGZyb250RmFjZSk6CisgICAgICAgIChn
ZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChn
ZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RXJyb3IpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9M
b2cpOgorICAgICAgICAoZ2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChnZXRTaGFkZXJTb3Vy
Y2UpOgorICAgICAgICAoZ2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdldFZlcnRleEF0
dHJpYk9mZnNldCk6CisgICAgICAgIChoaW50KToKKyAgICAgICAgKGlzQnVmZmVyKToKKyAgICAg
ICAgKGlzRW5hYmxlZCk6CisgICAgICAgIChpc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGlzUHJv
Z3JhbSk6CisgICAgICAgIChpc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChpc1NoYWRlcik6Cisg
ICAgICAgIChpc1RleHR1cmUpOgorICAgICAgICAobGluZVdpZHRoKToKKyAgICAgICAgKGxpbmtQ
cm9ncmFtKToKKyAgICAgICAgKHBpeGVsU3RvcmVpKToKKyAgICAgICAgKHBvbHlnb25PZmZzZXQp
OgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChzYW1wbGVDb3ZlcmFn
ZSk6CisgICAgICAgIChzY2lzc29yKToKKyAgICAgICAgKHNoYWRlclNvdXJjZSk6CisgICAgICAg
IChzdGVuY2lsRnVuYyk6CisgICAgICAgIChzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAg
KHN0ZW5jaWxNYXNrKToKKyAgICAgICAgKHN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAo
c3RlbmNpbE9wKToKKyAgICAgICAgKHN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKHRleFBh
cmFtZXRlcmYpOgorICAgICAgICAodGV4UGFyYW1ldGVyaSk6CisgICAgICAgICh1bmlmb3JtMWYp
OgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZvcm0yZik6CisgICAgICAgICh1
bmlmb3JtMmkpOgorICAgICAgICAodW5pZm9ybTNmKToKKyAgICAgICAgKHVuaWZvcm0zaSk6Cisg
ICAgICAgICh1bmlmb3JtNGYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVzZVBy
b2dyYW0pOgorICAgICAgICAodmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjFmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjNm
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50
ZXIpOgorICAgICAgICAodmlld3BvcnQpOgorICAgICAgICAoYnVmZmVyRGF0YSk6CisgICAgICAg
IChkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6
CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFy
cmF5KToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJy
YXkpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJE
YXRhKToKKyAgICAgICAgKHVubWFwQnVmZmVyKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChyZWFkQnVmZmVy
KToKKyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgICh0
ZXhTdG9yYWdlMkQpOgorICAgICAgICAodGV4U3RvcmFnZTNEKToKKyAgICAgICAgKGNvcHlUZXhT
dWJJbWFnZTNEKToKKyAgICAgICAgKGdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAodW5p
Zm9ybTF1aSk6CisgICAgICAgICh1bmlmb3JtMnVpKToKKyAgICAgICAgKHVuaWZvcm0zdWkpOgor
ICAgICAgICAodW5pZm9ybTR1aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGkpOgorICAgICAg
ICAodmVydGV4QXR0cmliSTR1aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJUG9pbnRlcik6Cisg
ICAgICAgIChkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChjbGVhckJ1ZmZlcmZpKToKKyAg
ICAgICAgKGNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKGRlbGV0ZVF1ZXJ5KToKKyAgICAgICAgKGlz
UXVlcnkpOgorICAgICAgICAoYmVnaW5RdWVyeSk6CisgICAgICAgIChlbmRRdWVyeSk6CisgICAg
ICAgIChnZXRRdWVyeSk6CisgICAgICAgIChjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKGRlbGV0
ZVNhbXBsZXIpOgorICAgICAgICAoaXNTYW1wbGVyKToKKyAgICAgICAgKGJpbmRTYW1wbGVyKToK
KyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAg
ICAoYmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAoZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAocGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoZ2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZSk6CisgICAgICAgICh1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKGdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAg
ICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoY3Jl
YXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAg
ICAgICAoaXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChiaW5kVmVydGV4QXJyYXlPRVMpOgor
ICAgICAgICAoZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKGluc2Vy
dEV2ZW50TWFya2VyRVhUKToKKyAgICAgICAgKHB1c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAg
IChwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUp
OgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAodmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpsaXN0ZW5Gb3JMYXlvdXRNaWxl
c3RvbmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTGlu
ZUdyaWRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdl
dEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2Ft
cGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0
U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRDcmVhdGVTdWJmcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpub25FcGhlbWVyYWxXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RT
aGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjdXJyZW50bHlQcm9jZXNzZWRNb3VzZURv
d25FdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9w
ZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29t
ZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVc2VTeXN0ZW1BcHBlYXJhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhcldoZWVsRXZlbnRUZXN0TW9u
aXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudElj
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNoU3ludGhlc2l6
ZXIpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByb3ZpZGVyLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6d2FpdEZvcldhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
bWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnRvb2xiYXJzVmlz
aWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6bWVudWJhclZpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0R0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjplbmNvZGVBcmd1bWVudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp+V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmV4ZWN1dGVF
ZGl0aW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzRWRpdGluZ0NvbW1h
bmRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY3JvbGxNYWluRnJhbWVJZk5vdEF0TWF4U2Ny
b2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpkdW1wSGlzdG9yeUl0ZW0pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkdW1wSGlzdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVJc0luV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZU1h
aW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3
aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1haW5GcmFt
ZVZpZXcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkVXNlUmVtb3RlV2ViR0wp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDIwLTEx
LTIxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBhdWRpbyBjYXB0dXJlIGZvciBTcGVlY2hSZWNvZ25pdGlvbiBvbiBtYWNPUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggNjY4NzUyYzc5NTI2YmM2Y2QxNDNjMmVmNjU5NmYxNGM3YjA3MzNl
ZC4uNmIzOGI0ZWEyYTI2OTdlZWFmN2E3Y2U0Y2MzYzA3OGRlYWQ5NWIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0zNjMsNiArMzYzLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2Nv
YS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkxZDc0
Yzc0NTIyNTk3OTA2NzkxYWQxZThhMjEyODNkNTRjNjExNjguLjE4NDQzODg4NmY2ODgzMjFhYmMw
MGZmMTNlYmFjMjY3MjllM2UzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNTIsNyArMjA1Miw3IEBACiAJCTZFNDdFNjYx
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU0
QUJDRDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMzEzOEVBMEI3MDA3
MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAqLzsgfTsKIAkJNkU0RTkxQUYxMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNH
TC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0Qy
QTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oICovOyB9OworCQk2RTY3RDJBOTEy
ODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5z
aW9uc0dMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNkU3MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjdGMjQzMjI5QzlG
ODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRFMjI5
RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjdGMjQyMjI5OENFNEIwMEYxRjYz
MiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEYyMjlEQ0Qx
MzAwQjNFMTUxIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyog
VGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCAqLzsgfTsKQEAgLTIyNDYsNiArMjI0Niw4IEBACiAJ
CTdBRjlCMjBGMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1RjMwMEM2
NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLzsgfTsKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhD
MUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0Nv
bnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMz
OUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNjRDMEFFMjU0QzE2
RjkwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjY0QzBBQzI1NEMx
NkVFMDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcw
MjU1MDExNDIwMDZFRUI4QyAvKiBQbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjkw
NDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCQjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGll
cy5oICovOyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0
R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAy
QkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAy
MTcsNiArMTAyMTksOSBAQAogCQk3QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcy
MDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I2NEMwQUMyNTRDMTZFRTAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDExMDkw
MDZFRUI4QyAvKiBQbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8q
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ3
MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY1OTAsNiArMjY1OTUsNyBAQAogCQkJCTU1
MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oICov
LAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi8sCiAJ
CQkJQ0VFRkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oICovLAorCQkJCTdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBQbGF0Zm9ybVJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAwNDND
RkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCiAJCQkJMDc0RTgyQjgxOEE2OUYwRTAwN0VG
NTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5jcHAgKi8sCiAJCQkJMDc0RTgyQjkxOEE2OUYwRTAw
N0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovLApAQCAtMjY3NzIsNiArMjY3NzgsOCBA
QAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3Bl
bkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEFDMjU0QzE2RUUwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLmggKi8sCisJCQkJN0I2NEMw
QjQyNTRDM0IxNjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29j
b2EubW0gKi8sCiAJCQkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlci5jcHAgKi8sCiAJCQkJQ0RFQjNENzMyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZl
clBhcnNlci5oICovLAogCQkJCUNEOEY2NjcwMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcCAqLywKQEAgLTMzODY2LDYgKzMzODc0LDcgQEAKIAkJCQkwN0Y5NDQx
NjE4NjREMDQ2MDA1RDMxQ0IgLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzVDNDc2OTA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1Nb3VzZUV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1ODE0RTlDMjk5MDBFOEQxOEIgLyogUGxh
dGZvcm1QYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjkwNDE3MDI1NTAxMTQyMDA2
RUVCOEMgLyogUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFQzAxRDcwQzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVu
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTdCRTNENTE2QzAzQzA4MDAzMzE2QkQgLyogUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5N0JFM0Q2
MTZDMDNDMEIwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0MDA0LDYgKzM0MDEzLDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBF
Q0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCNjRDMEFFMjU0QzE2RjkwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNE
N0MwMDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMx
MkVCMjJGQ0Q3QzkwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3Rl
VmlkZW9TYW1wbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1NWJjMWY4ZGIyNDlk
MzM4MjJlNzg4OWNhNzgzZjViZWMwMjVhMjk5Li4yOTBmYTcyNDQ5OTMxMGMwMzhlZDU2ZGE1NThh
MzFjZDE3NmZkY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTk0OSw5ICsxOTQ5LDcgQEAgV2ViR0xBbnkg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIoV2ViR0xRdWVyeSYgcXVl
cnksIEdDR0xlbnVtIHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgdW5z
aWduZWQgcmVzdWx0ID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2KHF1ZXJ5
Lm9iamVjdCgpLCBwbmFtZSwgJnJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aShxdWVy
eS5vYmplY3QoKSwgcG5hbWUpKTsKIH0KIAogUmVmUHRyPFdlYkdMU2FtcGxlcj4gV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlU2FtcGxlcigpCkBAIC0yMDQxLDE3ICsyMDM5LDExIEBAIFdl
YkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFNhbXBsZXJQYXJhbWV0ZXIoV2ViR0xT
YW1wbGVyJiBzYW1wbGVyLCBHQ0dMCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV9NSU5fRklMVEVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9S
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9TOgotICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOiB7Ci0gICAgICAgIGludCB2YWx1ZSA9
IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXIub2Jq
ZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgorICAgICAgICByZXR1cm4g
bV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLm9iamVjdCgpLCBwbmFtZSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfTE9EOgotICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0xPRDogewotICAgICAgICBmbG9hdCB2YWx1
ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXIu
b2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0xPRDoKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlci5vYmplY3QoKSwgcG5h
bWUpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTYW1wbGVyUGFyYW1ldGVyIiwgIkludmFsaWQgcG5h
bWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDE4NWU4
YzYyZTZmYmUzMWYzMTM4OGMwYzlmODBkODFjZWUyNGEzYjEuLmI4NzU0MmE3MDdmYTg2NmM4YTI4
MjAxYzcwOGRmNzZlMjRkYTZlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MTAsOCArNzEwLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3Vz
cGVuZElmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0K
LQotICAgIGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0
cmlidXRlcywgaG9zdFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0
R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsK
ICAgICAgICAgaWYgKGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQt
PmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
Z2xjb250ZXh0Y3JlYXRpb25lcnJvckV2ZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU3luYy5jcHAKaW5kZXggNGE0MjBiZjBhMTE2Y2NjYWI1ZGI4N2EyNmQ4YmEyNDI4MjhmMmQ1
NS4uODlhNjNlMzYyMTcxMjI0YjQxM2E0OTU0MjMxMmUzODM2YjZlYmMwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2Vi
R0xTeW5jOjp1cGRhdGVDYWNoZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2FsbG93Q2FjaGVVcGRhdGUgPSBmYWxzZTsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5bmNpdihtX3N5bmMsIEdyYXBoaWNzQ29u
dGV4dEdMOjpTWU5DX1NUQVRVUywgc2l6ZW9mKG1fc3luY1N0YXR1cyksICZtX3N5bmNTdGF0dXMp
OworICAgIG1fc3luY1N0YXR1cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0U3lu
Y2kobV9zeW5jLCBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19TVEFUVVMpOwogICAgIGlmIChtX3N5
bmNTdGF0dXMgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkFMRUQpCiAgICAgICAgIHNjaGVk
dWxlQWxsb3dDYWNoZVVwZGF0ZShjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRl
eCAwYTA5OGQyZGI0OTIwZDczYzJmMTA4MTQ1YjIzMGJkOTA4NGE2OTViLi43NDJkZTRjODY4NzQ4
ZDA1NDkyZDMxYmE0YTk3ODdlZDNmMWFjM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01
MjgsNiArNTI4LDEzIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vCiAgICAgcmV0dXJuIG1fY2xp
ZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdF
QkdMKQorUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmli
dXRlcywgZGlzcGxheUlEKCkpOworfQorI2VuZGlmCisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9t
ZTo6ZGlzcGxheUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpA
QCAtNTQxLDYgKzU0OCw3IEBAIHZvaWQgQ2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lCiAgICAgbV9wYWdlLndp
bmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIG5vbWluYWxGcmFtZUludGVydmFsKTsKIAog
I2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpCisgICAgLy8g
VE9ETzogR1BVIHByb2Nlc3MuIENoYW5nZSB0byBHQ0dMTWFuYWdlciwgbWFrZSBpdCB3b3JrLCBy
ZXR1cm4gbnVsbCBmb3Igb3RoZXJzLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLnNjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIHRoaXMpOwogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCAyMzMyOGY1NmExOTEyMDQ5ZDQ3OTc2NDFkMDE0
MDA1NTE1OTAzNTAyLi5hODlkZDFhMWQ4NjVlNTMyOGViMDUwNTc2NTQwZDNmMjMyYTNjZmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTg2LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVy
aW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisg
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgor
CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIE9wdGlvbmFsPHVu
c2lnbmVkPikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDNh
OWUxZDY2OTA5N2U1OTVkOWI1N2ZjNGNmZjdlNjFhNWQxOGQwYTkuLjhmMThmZGZmMDQ5OTAzNzU4
OThiMTdiOTI4Y2MwZTA2MDBlOTFjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApA
QCAtMzI1LDYgKzMyNSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdmlydHVhbCBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwogICAgIC8vIFBhc3MgbnVsbHB0ciBhcyB0
aGUgR3JhcGhpY3NMYXllciB0byBkZXRhdGNoIHRoZSByb290IGxheWVyLgogICAgIHZpcnR1YWwg
dm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGlj
c0xheWVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdp
bmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCmluZGV4IDQzZGIx
ZmZhZTAxMmJiMjE4OTRmMmNhOTYzMDcyMTQ3NjZhYWRkOWUuLjczODExOGIyMWUzYzMzN2IyZTUz
MWM5OTZkMDk5YmQzZTlhNTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0hvc3RXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02Myw2ICs2NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVu
ZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25zdCA9IDA7CisjZW5kaWYKKwogICAgIC8vIE1ldGhv
ZCBmb3IgcmV0cmlldmluZyB0aGUgbmF0aXZlIGNsaWVudCBvZiB0aGUgcGFnZS4KICAgICB2aXJ0
dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCA9IDA7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oCmluZGV4IGEyMjUzYzgxYmZlMGEwYmIwOTEwYmRlNmMwZGIyNmFhNzg0NTJmYjMuLjdh
ZmJhNmVjNTA4ODE5Y2MxZWFiYWRjY2RlMGJiNzlhODM4NDJkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCkBAIC0zNCwxMyAr
MzQsMTYgQEAgV0VCQ09SRV9FWFBPUlQgaW50IHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwog
CiAjaWYgUExBVEZPUk0oV0lOKQogaW5saW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVy
biBmYWxzZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsg
fQogI2VsaWYgIVBMQVRGT1JNKENPQ09BKQogaW5saW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7
IHJldHVybiB0cnVlOyB9CitpbmxpbmUgYm9vbCBpc0luR1BVUHJvY2VzcygpIHsgcmV0dXJuIGZh
bHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCiBib29sIGlzSW5XZWJQcm9j
ZXNzKCk7Citib29sIGlzSW5HUFVQcm9jZXNzKCk7CiBib29sIGlzSW5OZXR3b3JrUHJvY2Vzcygp
OwogCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihj
b25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KaW5kZXggZmJkMWQ0M2Mw
OGY4NmRjM2MxOGVkMjE1NjBmMDhjZjg3ZmExYWYzOS4uYjA2ZmY0N2RmYzU0MTcyMWY2NGFhMGRl
MzhiM2I5MmY4ODM4MjQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KQEAgLTk2LDYg
Kzk2LDEyIEBAIGJvb2wgaXNJbldlYlByb2Nlc3MoKQogICAgIHJldHVybiBtYWluQnVuZGxlSXNX
ZWJQcm9jZXNzOwogfQogCitib29sIGlzSW5HUFVQcm9jZXNzKCkKK3sKKyAgICBzdGF0aWMgYm9v
bCBtYWluQnVuZGxlSXNHUFVQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl0gaGFzUHJlZml4OkAiY29tLmFwcGxlLldlYktpdC5HUFUiXTsKKyAgICByZXR1
cm4gbWFpbkJ1bmRsZUlzR1BVUHJvY2VzczsKK30KKwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3Mo
KQogewogICAgIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc05ldHdvcmtQcm9jZXNzID0gW1tbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaGFzUHJlZml4OkAiY29tLmFwcGxl
LldlYktpdC5OZXR3b3JraW5nIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGJhODY1YjMzMDhlNmM5NDU4MjIxMjIzNzc5NmQ2ZmQ1
Nzc0ODQ3ZjguLmMyNWU5Y2EzN2QwODU3ODYzNDZlOWNhM2FmMmM4ZDFhMTE4MWJkYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0y
NjYsNyArMjY2LDcgQEAgcHVibGljOgogICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UMTVfRVhUID0g
MHg4Q0VGCiAgICAgfTsKIAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJh
dGUtZ3B1cC13ZWJnbCB1bmRlcnN0YW5kcy4KKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuIFRoaXMg
bGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgogCiAgICAgLy8gR0xf
QVJCX3JvYnVzdG5lc3MKICAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZl
cnMgZnJvbSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKQEAgLTI3OCwxMCArMjc4LDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsK
IAogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxp
dEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3Jj
WTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2ln
bmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NH
TGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwg
R0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVt
IGZpbHRlcikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUK
LSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIAogICAgIC8vIEdMX09F
U192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0
ZVZlcnRleEFycmF5T0VTKCkgPSAwOwpAQCAtMjk1LDE1ICsyOTUsMTUgQEAgcHVibGljOgogICAg
IC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtl
ckVYVCh2b2lkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgPSAw
OwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVt
KiBidWZzKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCi0gICAgdmly
dHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1v
cnkKICAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAw
OwpAQCAtMzYyLDcgKzM2Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhl
bHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0jZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBpc05WSURJQSgp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7CkBAIC0zNzQsNiArMzczLDcgQEAg
cHVibGljOgogICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQgaW1wbGVt
ZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCiAgICAgdmlydHVhbCBib29s
IHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CisjZW5kaWYKIAog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCmluZGV4IGRmNGExMTlhMzIwZGFjNmFlYjYzMDZkNGM1MDk1NTE1ODhh
MTk3M2UuLjM0ZDU1NmIwY2M0YTliYjFhZWE3YTVhOTY4YmM2OTViM2EyZTI3OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5jcHAKQEAgLTI3LDExICsyNywxMyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oIgogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpCiAKICNpbmNsdWRlICJFeHRl
bnNpb25zR0wuaCIKICNpbmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKKyNpbmNsdWRlICJIb3N0
V2luZG93LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNp
bmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCkBAIC00MDMsNiArNDA1LDE1IEBAIHN0YXRpYyBib29s
IHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwgR3JhcGhpY3NDb250ZXh0R0w6
OkRhdGFGb3JtYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3sKKyAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IHJlc3VsdDsKKyAgICBpZiAoaG9zdFdpbmRvdykKKyAgICAg
ICAgcmVzdWx0ID0gaG9zdFdpbmRvdy0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRl
cyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KIAogR3JhcGhpY3NDb250ZXh0R0w6OkdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRycywgRGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBoaWNz
Q29udGV4dEdMKikKICAgICA6IG1fYXR0cnMoYXR0cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAwYTcxNTQwY2U4
MDIwZmQ5ZjU4MTY4NjAzZjY3NjliOTQ0NTIyNDE1Li5iODhkZDkwYWNjNWQzOTY2Njk3OWRjNGRm
MWQwYTFiMTEyMjY5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTU5LDYgKzU5LDggQEAgY2xhc3MgSW1hZ2VE
YXRhOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVjsKICNlbmRpZgogCisKKy8vIEJhc2UgY2xh
c3MgZm9yIGdyYXBoaWNzIGNvbnRleHQgZm9yIGltcGxlbWVudGluZyBXZWJHTCByZW5kZXJpbmcg
bW9kZWwuCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBo
aWNzQ29udGV4dEdMPiB7CiBwdWJsaWM6CiAgICAgZW51bSB7CkBAIC02NjksNiArNjcxLDggQEAg
cHVibGljOgogICAgICAgICAvLyBOZWNlc3NhcnkgZGVza3RvcCBPcGVuR0wgY29uc3RhbnRzLgog
ICAgICAgICBURVhUVVJFX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjUsCiAgICAgICAgIFRFWFRVUkVf
QklORElOR19SRUNUQU5HTEVfQVJCID0gMHg4NEY2LAorCisgICAgICAgIFJFUVVFU1RBQkxFX0VY
VEVOU0lPTlNfQU5HTEUgPSAweDkzQTgsIC8vIE5PTElOVAogICAgIH07CiAKICAgICAvLyBBdHRl
bXB0IHRvIGVudW1lcmF0ZSBhbGwgcG9zc2libGUgbmF0aXZlIGltYWdlIGZvcm1hdHMgdG8KQEAg
LTkxMywxMyArOTE3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgR0NHTGludCBzaXplOwogICAgIH07
CiAKKyAgICAvLyBDcmVhdGVzIGEgR3JhcGhpY3NDb250ZXh0R0wgaW5zdGFuY2UgdG8gcmVuZGVy
IGludG8gb2Zmc2NyZWVuIGRlc3RpbmF0aW9uIGluIGNvbnRleHQgb2YgSG9zdFdpbmRvdy4KKyAg
ICAvLyBIb3N0V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFja2VuZCBp
cyB0byBiZSB1c2VkLgorICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBIb3N0V2luZG93Kik7CisKICAg
ICBHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIERlc3RpbmF0
aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0wqIHNoYXJlZENv
bnRleHQgPSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTCgpID0gZGVm
YXVsdDsKIAogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5h
ZGQoJmNsaWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBt
X2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOyB9CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4g
Zm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gV2ViR0wgZnVu
Y3Rpb25zLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4K
IAogICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
UGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpID0gMDsKQEAgLTk4Miw3ICs5OTAsNiBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJz
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkq
IGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lKSA9IDA7CiAKQEAgLTEwMjcsMTAgKzEwMzQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOwogCi0gICAgLy8gZ2V0VmVydGV4QXR0cmliCi0gICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSA9IDA7Ci0KICAgICB2aXJ0dWFsIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpID0gMDsKQEAgLTExNzksNyAr
MTE4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFy
Z2V0KSA9IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dM
dWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBu
YW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIpID0gMDsKQEAgLTExODgsOCArMTE5MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQg
cGFyYW0pID0gMDsKICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lk
IGdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJh
bWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAg
ICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5j
ZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2
aXJ0dWFsIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTE5Nyw3ICsxMjAw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5
bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2
NCB0aW1lb3V0KSA9IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9p
ZCBnZXRTeW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5
bmMsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTE0MDAsNyArMTQw
Myw2IEBAIGlubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1CiAgICAgcmV0dXJuIHZhbHVlWzBdOwogfQog
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IGU3YzY5YjI4ZGNl
NDY1ODI1NzU3NzMzMzI1YjhmNDRkZjI3MjA3YjkuLjI0MDM2YTc3YzA4ODc5MWEyNDc2ODlkZGQz
NzBjMzFjMTE0YjY0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTQ0LDEzICs0NiwxNyBAQCB0eXBlZGVmIHVuc2lnbmVkIEdDR0x1aW50OwogdHlwZWRl
ZiBmbG9hdCBHQ0dMZmxvYXQ7CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IEdDR0xoYWxmZmxvYXQ7
CiB0eXBlZGVmIGZsb2F0IEdDR0xjbGFtcGY7Cit0eXBlZGVmIGNoYXIgR0NHTGNoYXI7Cit0eXBl
ZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Cit0eXBlZGVmIHZvaWQgR0NHTHZvaWQ7CisK
Ky8vIFRoZXNlIEdDR0wgdHlwZXMgZG8gbm90IHN0cmljdGx5IG1hdGNoIHRoZSBHTCB0eXBlcyBh
cyBkZWZpbmVkIGluIE9wZW5HTCBFUyAyLjAKKy8vIGhlYWRlciBmaWxlIGZvciBhbGwgcGxhdGZv
cm1zLgogdHlwZWRlZiBpbnRwdHJfdCBHQ0dMaW50cHRyOwogdHlwZWRlZiBpbnRwdHJfdCBHQ0dM
c2l6ZWlwdHI7Ci10eXBlZGVmIGNoYXIgR0NHTGNoYXI7Cit0eXBlZGVmIGludHB0cl90IEdDR0x2
b2lkcHRyOwogdHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0OwogdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGxvbmcgR0NHTHVpbnQ2NDsKLXR5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsK
LXR5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKIAogdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2Jq
ZWN0OwogCkBAIC01OCwxNiArNjQsMjMgQEAgdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2Jq
ZWN0OwogdHlwZWRlZiB1bnNpZ25lZCBHTHVpbnQ7CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IEV4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+
CitpbmxpbmUgY29uc3RleHByIHNpemVfdCBnY0dMU3BhbkR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgRXh0ZW50ID0gZ2NHTFNwYW5EeW5hbWljRXh0ZW50Pgogc3RydWN0IEdDR0xTcGFuOwogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbiB7Ci0gICAg
ZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXkpCisgICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJy
YXksIHNpemVfdCBzaXplID0gRXh0ZW50KQogICAgICAgICA6IGRhdGEoYXJyYXkpCi0gICAgeyB9
CisgICAgeworICAgICAgICBBU1NFUlQoc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dM
U3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0K
KyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIEV4dGVudD4gYXJyYXkpCisgICAgICAgIDogZGF0
YShhcnJheS5kYXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBS
RUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KICAg
ICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJldHVy
biAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC03NSw3ICs4OCw3IEBAIHN0cnVjdCBHQ0dMU3Bh
biB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxULCBnY0dM
U3BhbkR5bmFtaWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1ZlNp
emVfKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykK
QEAgLTg0LDcgKzk3LDggQEAgc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCk+IHsKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNp
emUoU3opCiAgICAgeyB9Ci0gICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mIGFycmF5KQorICAg
IHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dMU3BhbihXVEY6OlZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5KQogICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgp
KQogICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgpKQogICAgIHsgfQpAQCAtOTcsMTEgKzEx
MSwzOCBAQCBzdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKT4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CiBHQ0dMU3BhbihUICgmKVtO
XSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1HQ0dMU3BhbihX
VEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+OwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+KSAtPiBHQ0dMU3BhbjxULCBOPjsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorR0NHTFNwYW4oV1RG
OjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JikgLT4gR0NHTFNwYW48VD47CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBHQ0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNv
dW50KQogewogICAgIHJldHVybiBHQ0dMU3BhbjxUPiB7IGRhdGEsIGNvdW50IH07CiB9CisKKy8v
IFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdD
R0x1Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hv
cnQsIGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwg
dWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJf
dD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsK
K3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lX3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8UGxhdGZvcm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0xpbnRwdHIpID09IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
THNpemVpcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0x2b2lkcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0xjaGFyKSA9PSBzaXplb2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGlu
dDY0KSA9PSBzaXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2
NCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMc3luYykg
PT0gc2l6ZW9mKHVpbnQ2NF90KSAmJiBzaXplb2YoR0NHTHN5bmMpID09IHNpemVvZihpbnRwdHJf
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZhMGFhMjBjZTFhMjQzNThjYWFmMzEzMmYxNzhiOTdhM2M0ODBkNDIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2Nv
YS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKy8vIE5hbWUgZm9yIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYyBiYXNlIGNsYXNzIG9mIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHByb3h5
LgorLy8gRHVlIHRvIHRoZSBsYWNrIG9mIGFic3RyYWN0aW9ucywgd2UgY3VycmVudGx5IG5lZWQg
dG8gaW5oZXJpdCB0aGUKKy8vIHBsYXRmb3JtIGRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbiBpbiB0
aGUgbWlkZGxlIG9mIHRoZSBpbmhlcml0YW5jZSBjaGFpbgorLy8gb2YgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS4KKy8vIFRoaXMgbWVhbnMgd2UgY2Fubm90IGhhdmUgYSByZWFsIHBsYXRm
b3JtIGluZGVwZW5kZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgYmFzZSBjbGFzcy4K
Ky8vIEZvciB0aGlzIHJlYXNvbiB3ZSBtdXN0IHJlZmVyIHRvIHRoZSBjb25jcmV0ZSBjbGFzcyBm
b3IgdGhlIHRpbWUgYmVpbmcuCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2luZyBQbGF0Zm9ybVJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2VDb2NvYTsKKyNlbmRpZgorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xC
YXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjdkNTc0NDY1YTljMTAxMWMxZGYxZWZmNTc3ZGRlNmY5NTNjNDMw
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQmFzZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisK
KyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgcmVtb3RlIEdy
YXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKy8vIFRoaXMgaW1wbGVtZW50cyB0aGUg
cGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29yZSBpbnRlcm5hbCBmdW5jdGlvbmFsaXR5OgorLy8g
LSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBtYW5hZ2VtZW50LgorLy8gLSBDb21wb3NpdGluZyBz
dXBwb3J0LgorLy8gVGhlIHBhcnRzIHdlcmUgbmVlZGVkIHRvIGJlIGltcGxlbWVudGVkIGR1ZSB0
byBsYWNrIG9mIGFic3RyYWN0aW9ucyBhbmQKKy8vIHNtYWxsIHBlbmRpbmcgZml4ZXMgYXQgdGhl
IHRpbWUgb2Ygd3JpdGluZy4KK1dFQkNPUkVfRVhQT1JUIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlQ29jb2EgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wsIHB1YmxpYyBF
eHRlbnNpb25zR0wgeworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQmFzZShj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xCYXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVj
dCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdC
dWZmZXIoKSBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbCB7
IHJldHVybiAqdGhpczsgfQorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
IGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAg
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNy
ZWF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7
CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKKyAgICB2
b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHByZXBhcmVG
b3JEaXNwbGF5KCkgZmluYWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsK
KyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0QnVm
ZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxkIGdl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICBSZWZQdHI8SW1hZ2VE
YXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpIGZpbmFsOworICAgIGJvb2wg
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmluYWw7CisgICAg
dm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRl
eHRDaGFuZ2VkKCkgZmluYWw7CisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51bGxw
dHIgfTsKKyNlbmRpZgorICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CisK
K307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDRkMDI1Yjk5MzQyMjc3
NmI5YjVmNGFhYmMzOWEwYzc4OTE5NDBhOTkuLmM4OTNhYTdlZjMxNjNhYjM4Y2Q5NjY3ZjU1ODM1
NjJiZGZjNWQ5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQ2LDI4ICs0Niw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIEV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3Ry
aW5nKQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1faXNOVklESUEoZmFsc2UpCi0gICAgLCBtX2lz
QU1EKGZhbHNlKQotICAgICwgbV9pc0ludGVsKGZhbHNlKQotICAgICwgbV9pc0ltYWdpbmF0aW9u
KGZhbHNlKQotICAgICwgbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbihmYWxzZSkK
LSAgICAsIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKGZhbHNlKQogICAg
ICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRHZXRTdHJpbmcpCiB7Ci0gICAgLy8g
RklYTUU6IGlkZWFsbHksIHJlbW92ZSB0aGlzIGluaXRpYWxpemF0aW9uIGFsdG9nZXRoZXIuIEFO
R0xFCi0gICAgLy8gc3Vic3VtZXMgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBncmFwaGljcyBkcml2
ZXIgd29ya2Fyb3VuZHMuCi0gICAgbV92ZW5kb3IgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAgbV9yZW5kZXJlciA9
IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JF
TkRFUkVSKSkpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gdmVuZG9yQ29tcG9uZW50cyA9IG1fdmVu
ZG9yLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAgICBpZiAodmVuZG9y
Q29tcG9uZW50cy5jb250YWlucygibnZpZGlhIikpCi0gICAgICAgIG1faXNOVklESUEgPSB0cnVl
OwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5kb3JDb21w
b25lbnRzLmNvbnRhaW5zKCJhbWQiKSkKLSAgICAgICAgbV9pc0FNRCA9IHRydWU7Ci0gICAgaWYg
KHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImludGVsIikpCi0gICAgICAgIG1faXNJbnRlbCA9
IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImltYWdpbmF0aW9uIikp
Ci0gICAgICAgIG1faXNJbWFnaW5hdGlvbiA9IHRydWU7CiB9CiAKIEV4dGVuc2lvbnNHTEFOR0xF
Ojp+RXh0ZW5zaW9uc0dMQU5HTEUoKSA9IGRlZmF1bHQ7CkBAIC0xMDMsNyArODMsNyBAQCBib29s
IEV4dGVuc2lvbnNHTEFOR0xFOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIAotaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK0dMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkKIHsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5P
X0VSUk9SOwogfQpAQCAtMTE0LDEwICs5NCwxMSBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpbnQgc291cmNlTGVuZ3RoID0gbV9jb250
ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdU
SF9BTkdMRSk7CisKICAgICBpZiAoIXNvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9U
UkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWlu
YXRpb24uCi0gICAgaW50IHJldHVybmVkTGVuZ3RoID0gMDsKKyAgICBHQ0dMaW50IHJldHVybmVk
TGVuZ3RoID0gMDsKICAgICBnbDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRl
ciwgc291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAo
IXJldHVybmVkTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTE0Nyw3
ICsxMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0
ZW5zaW9ucygpCiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwg
bG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZ
MCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs
b25nIGZpbHRlcikKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CiAgICAgLy8gRklY
TUU6IGNvbnNpZGVyIGFkZGluZyBzdXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZS4KICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xNTYs
NyArMTM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcg
c3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcKICAgICBnbDo6QmxpdEZyYW1lYnVm
ZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEs
IGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM1LDcgKzIxNiw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVm
cykKICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQobiwgYnVmcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0
MywxNSArMjI0LDE1IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpCiAgICAgZ2w6OkRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGds
OjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnBy
ZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3Vu
dCk7CisgICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBl
LCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KG9mZnNldCksIHByaW1jb3VudCk7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0y
ODYsNyArMjY3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZFBpeGVsc1JvYnVzdEFO
R0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0cKICAgICBnbDo6UmVhZFBpeGVs
c1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjp0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGlu
dCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1faXNGb3JXZWJHTDIp
CiAgICAgICAgIGludGVybmFsZm9ybWF0ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9y
bWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOwpAQCAtMzEyLDcgKzI5Myw3IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtCiAgICAgZ2w6OlRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
dGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6dGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVs
LCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4U3ViSW1hZ2Uy
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
dm9pZCAqcGl4ZWxzKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzIwLDcgKzMwMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgaW50CiAgICAgZ2w6OlRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBp
eGVscyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTMzMCw3ICszMTEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4
SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldgogCiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC0zMzksNyArMzIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludAogICAgIG1fY29u
dGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3RhdGUuY3Vy
cmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJl
c3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM0Nyw3
ICszMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldgogICAgIGdsOjpDb21wcmVzc2VkVGV4
SW1hZ2UzRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTM1Niw3ICszMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
CiB9CiAKIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lk
ICpwaXhlbHMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NCw3ICszNDUsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjp0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCBpbgogICAgIGdsOjpUZXhJbWFnZTNEUm9idXN0QU5HTEUodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1h
dCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQg
eG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQyMCw3ICs0MDEsNyBAQCB2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRleCwgcG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1z
KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUwMSw3ICs0ODIsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5H
TEUocG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTA5LDcgKzQ5MCw3IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MzcsNyArNTE4
LDcgQEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXgKIH0KICNlbmRpZgogCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5z
LCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJP
YmplY3QpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0
YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKIHsKICAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU3NCw3ICs1NTUs
NyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4
LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQwogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0
ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4Miw3ICs1
NjMsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0K
IAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC01OTAsNyArNTcxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0
blVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IDU3YmI5M2JjODRjMzM1
OTBmYmNmNGIzZjdhMWViNWE1NWM1OTI1NmMuLmQyOGZkZDM1OTg3ZGU1NzM0MGZkMDk1NDIyZjJm
NjRkNWY3YjM4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1
YmxpYzoKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNy
Y1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25n
IGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2ln
bmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1
bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShH
Q0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kx
LCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRz
dFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRl
eEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRl
OwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0K
LSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wg
aXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFn
aW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmlu
ZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWly
ZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3Rl
ZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmlj
dGVkTWF4aW11bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZv
aWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
b3ZlcnJpZGU7CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAgLTEzOSwxOCArMTMw
LDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwogCi0g
ICAgYm9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1faXNJbnRl
bDsKLSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNCdWlsdElu
RnVuY3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZTsKLQogICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsK
IAotICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKLQogICAgIC8v
IFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxp
dHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xvckJ1
ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0
UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IGZl
YjBiZWJlZjMxNWYwZTEzOGJhOTlkNjJlYjZjZmNlZDUxOTM2N2EuLjJlM2ZiNWY3NWRlMTNjMWZi
YjBjZmNlYTJjMzk4MmM0YzBmMTg2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCkBAIC0yMDAzLDIyICsyMDAzLDYgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICBy
ZXR1cm4gZ2w6OkdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
Ci17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5i
dWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RB
TkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwot
fQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
Yk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKQEAgLTIzMTUsMTIgKzIyOTksMTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQogICAgIGdsOjpFbmRRdWVy
eSh0YXJnZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9i
amVjdHVpdihHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiBwYXJhbXMpCitH
Q0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTHVpbnQgdmFsdWUgPSAwOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRR
dWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIDEsIG51bGxw
dHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiAvLyBUcmFuc2Zvcm0gRmVlZGJh
Y2sgRnVuY3Rpb25zCkBAIC0yNzUzLDIwICsyNzM4LDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVuCiAgICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVl
KQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xm
bG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZnYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7Cisg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
KQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwg
JnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIEdDR0xzeW5jIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxh
Z3MpCkBAIC0yODA5LDEyICsyNzk4LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OndhaXRTeW5jKEdDR0xzeW5jIHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGluCiAgICAg
Z2w6OldhaXRTeW5jKHN5bmMsIGZsYWdzLCB0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTeW5jaXYo
c3luYywgcG5hbWUsIGJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlKTsKKyAgICBnbDo6R2V0U3luY2l2
KHN5bmMsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCAyZTFjNzk5
ZTgyODUzYjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi4wNzcxOGU0NGI5ODNiYWQ4MGI0Y2E1
ZTJkZWFmY2EyMWFkOTk1NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29jb2EubW0KQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIEVHTERpc3BsYXkgSW5pdGlhbGl6ZUVH
TERpc3BsYXkoKQogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwogICAgIEVHTGludCBtaW5v
clZlcnNpb24gPSAwOwogICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLSAgICBib29sIHNob3VsZElu
aXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICFpc0luV2ViUHJvY2VzcygpOwor
ICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIShp
c0luV2ViUHJvY2VzcygpIHx8IGlzSW5HUFVQcm9jZXNzKCkpOwogICAgIGlmIChzaG91bGRJbml0
aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKICAgICAgICAgLy8gRm9yIFdLMSB0
eXBlIEFQSXMgd2UgbmVlZCB0byBzZXQgInZvbGF0aWxlIHBsYXRmb3JtIGNvbnRleHQiIGZvciBz
cGVjaWZpYwogICAgICAgICAvLyBBUElzLCBzaW5jZSBjbGllbnQgY29kZSB3aWxsIGJlIGFibGUg
dG8gb3ZlcnJpZGUgdGhlIHRocmVhZC1nbG9iYWwgY29udGV4dApAQCAtMTU0LDYgKzE1NCwxMSBA
QCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
cmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZQogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVG
b3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMs
IG51bGxwdHIpKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJvYmFi
bHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAogc3Rh
dGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwgQ0dM
UGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJyZWRH
UFVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZjIzNjI2OTAwMTE1ZmJkNDAxNWIzMDhjMTNlOWY3ZGRjODU2
NTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5oCkBAIC0wLDAgKzEs
MTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisK
KyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5o
IgorCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworT0JKQ19DTEFTUyBXZWJH
TExheWVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgcHJveHkgc2lkZSBpbXBsZW1lbnRhdGlvbiBvbiBDb2NvYS4K
Ky8vIFRoaXMgaW1wbGVtZW50cyB0aGUgcGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29yZSBpbnRl
cm5hbCBmdW5jdGlvbmFsaXR5OgorLy8gLSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBtYW5hZ2Vt
ZW50LgorLy8gLSBDb21wb3NpdGluZyBzdXBwb3J0LgorLy8gVGhlIHBhcnRzIHdlcmUgbmVlZGVk
IHRvIGJlIGltcGxlbWVudGVkIGR1ZSB0byBsYWNrIG9mIGFic3RyYWN0aW9ucyBhbmQKKy8vIHNt
YWxsIHBlbmRpbmcgZml4ZXMgYXQgdGhlIHRpbWUgb2Ygd3JpdGluZy4KK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EgOiBwdWJsaWMgR3Jh
cGhpY3NDb250ZXh0R0wsIHB1YmxpYyBFeHRlbnNpb25zR0wgeworcHVibGljOgorICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eo
KSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIG92
ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0
IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgZmlu
YWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAg
IEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZl
cmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzeW50aGVzaXpl
R0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50
aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZp
bmFsOworICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBz
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSBmaW5hbDsKKyAgICBHQ0dMYml0Zmll
bGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxJ
bWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisgICAg
Ym9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsK
KyAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRl
Q29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1
ZmZlcigpIGZpbmFsOworCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
ICAgIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKKyNlbmRpZgorICAgIC8vIE90
aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBFeHRlbnNpb25zR0w6OmlzRW5h
YmxlZDsKKyAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQg
ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRW5hYmxlZChj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5pdGlhbGl6ZShj
b25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFi
bGVFeHRlbnNpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5n
JikgPSAwOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5
ZXI7CisgICAgTGlzdEhhc2hTZXQ8R0NHTGVudW0+IG1fc3ludGhldGljRXJyb3JzOworCisgICAg
Ly8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgorICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFi
bGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7
CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIgY2xlYXIgdHJhY2tpbmcgc2hvdWxkIGJl
IG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNl
OworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IHsgMCB9OworfTsKKwor
fQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTNjZDE1ZjI1NjA2MzQ0ZTgzMjQwNjJlN2M2ZmFh
N2MzYTg3N2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpAQCAt
MCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlQ29jb2EuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCisjaW1wb3J0ICJJbWFnZURhdGEuaCIKKyNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgi
CisjaW1wb3J0ICJXZWJHTExheWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2VDb2NvYShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQor
ICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlQ29jb2E6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hKCkKK3sKK30KKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gMDsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAoreworICAgIHJl
dHVybiAwOworfQorCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJHTExh
eWVyLmdldCgpOworfQorCisKK0V4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2VDb2NvYTo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuICp0aGlzOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnNldENvbnRleHRW
aXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNl
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBvd2VyUHJlZmVyZW5jZVVz
ZWRGb3JDcmVhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjppc0dMRVMyQ29tcGxpYW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0ZXMoKS5pc1dlYkdMMjsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpzeW50aGVzaXplR0xFcnJv
cihHQ0dMZW51bSBlcnJvcikKK3sKKyAgICAvLyBOZWVkIHRvIG1vdmUgdGhlIGN1cnJlbnQgZXJy
b3JzIHRvIHRoZSBzeW50aGV0aWMgZXJyb3IgbGlzdCB0bworICAgIC8vIHByZXNlcnZlIHRoZSBv
cmRlciBvZiBlcnJvcnMsIHNvIGEgY2FsbGVyIHRvIGdldEVycm9yIHdpbGwgZ2V0CisgICAgLy8g
YW55IGVycm9ycyBmcm9tIGdsRXJyb3IgYmVmb3JlIHRoZSBlcnJvciB3ZSBhcmUgc3ludGhlc2l6
aW5nLgorICAgIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgIG1fc3ludGhl
dGljRXJyb3JzLmFkZChlcnJvcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2VDb2NvYTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9z
aXRlZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2E6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQoreworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0g
dHJ1ZTsKKyAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBpZiAoIWF0
dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVh
ciA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0
cnMuZGVwdGgpCisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0Nv
bnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpCisg
ICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0NvbnRleHRHTDo6U1RF
TkNJTF9CVUZGRVJfQklUOworICAgIH0KKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1Zl
Y3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmRpZENvbXBvc2l0ZSgpOworfQorCiti
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OmxheWVyQ29tcG9zaXRl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQorCitib29sIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6Om1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpCit7CisgICAgYm9vbCBtb3ZlZEFuRXJyb3IgPSBmYWxzZTsKKyAgICAvLyBT
ZXQgYW4gYXJiaXRyYXJ5IGxpbWl0IG9mIDEwMCBoZXJlIHRvIGF2b2lkIGNyZWF0aW5nIGEgaGFu
ZyBpZgorICAgIC8vIGEgcHJvYmxlbSBkcml2ZXIgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIGl0IHRv
IG5ldmVyIGNsZWFyIHRoZSBlcnJvci4KKyAgICAvLyBPdGhlcndpc2UsIHdlIHdvdWxkIGp1c3Qg
bG9vcCB1bnRpbCB3ZSBnb3QgTk9fRVJST1IuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgIEdDR0xlbnVtIGVycm9yID0gZ2V0RXJyb3IoKTsKKyAgICAg
ICAgaWYgKGVycm9yID09IE5PX0VSUk9SKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1f
c3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CisgICAgICAgIG1vdmVkQW5FcnJvciA9IHRydWU7
CisgICAgfQorICAgIHJldHVybiBtb3ZlZEFuRXJyb3I7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRm
aWVsZCBidWZmZXJzKQoreworICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVzZXJ2ZURy
YXdpbmdCdWZmZXIpCisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gYnVmZmVyczsKK30K
KworR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6Omdl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0
b0NsZWFyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sKK30KKworUmVm
UHRyPEltYWdlRGF0YT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQoreworICAgIHJldHVybiBudWxscHRyOwor
fQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnNpbXVs
YXRlQ29udGV4dENoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6ZW5hYmxlUHJlc2VydmVEcmF3
aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBvcnQgcmVhc29ucy4KKyAg
ICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkLgorICAgIEdy
YXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKK30KKworI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzQ29udGV4dEdMQ1Yq
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OmFzQ1YoKQoreworICAgIHJl
dHVybiBudWxscHRyOworfQorI2VuZGlmCisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2VDb2NvYTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRV
bnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjplbnN1cmVFbmFi
bGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwor
ICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFi
bGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKG5hbWUpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKKyAg
ICB9Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6aXNF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgp
OworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9l
bmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxh
YmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7Cisg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykp
CisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAg
ICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30KKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0K
aW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4uOTlhZDkxNjUy
NTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lt
cG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNpbXBvcnQgPENv
cmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggMTc3
ODZhNjRiYTRlMWRhMDA5NjRlYWU5OTdkMjkyNzY0ZGFkMTg5Ni4uNTljZmI3NTkzYjFhNmIxZmI1
MDliY2FjZGRjZDY5YjdiZDc2YzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAg
LTIyMiw3ICsyMjIsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQo
R0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQogI2VuZGlmCiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAjZW5kaWYKIH0K
IAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQs
IEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjUzLDcgKzI1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHCiAjZW5kaWYKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggZDI4ZjRhMDMxZWJkYzQ4Mzg3NWQzOTg0
ODdkNTc4NzQ4ZmRlNDdlNy4uNmFkOWY0MGMyMTEwOWZkYmU4MmQzNWYxNDA3ZDFkNjg0OTI5OTc2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsCiAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBl
LCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQp
KSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0
cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDA5OTI2Nzhi
OGRjMWUxODNkOTgyNTliNzczMTVjMzYxMjE3MDEzMGYuLjM4NjYwNTJmYjZjMTBkZTkzM2E4OTg3
N2QyZTFkOWIxNjA2MjY1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBA
IC04Niw3ICs4Niw3IEBAIHR5cGVkZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBT
aGFkZXJOYW1lSGFzaDsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlOwog
Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0Nv
bnRleHRHTAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmlu
YWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVu
KTsKQEAgLTk0LDYgKzk0LDggQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
c3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlU2hhcmVkKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KTsKKyAgICBzdGF0aWMgUmVmPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYpOworCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0T2JqOyB9
CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgp
KTsgfQpAQCAtMTk1LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0dHJp
YkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5m
byYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3RpdmVV
bmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3Rp
dmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xP
YmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50
LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAgdm9p
ZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVl
KSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBAIC0yMjMsOCArMjI1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5pZm9y
bXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdl
dFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5h
bDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTM3Myw3ICszNzMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmpl
Y3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAg
Ly8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3Jt
R0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOwor
ICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVy
KCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
cikgZmluYWw7CkBAIC0zODIsOCArMzgyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOwogICAg
IC8vIGdldFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVl
KSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NH
TGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxh
dGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dM
c3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZp
bmFsOwogICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgZmluYWw7CkBAIC0zOTIsNyAr
MzkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRmaWVs
ZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAgIC8vIGdldFN5bmNQYXJhbWV0
ZXIKICAgICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGF0IHRoZSBXZWJHTCBs
ZXZlbCBpZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3QuCi0gICAgdm9pZCBnZXRTeW5j
aXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAq
dmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2soKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xP
YmplY3QgaWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggYWJiN2UyNWEwNmYwODVjY2VhY2ZmNWFiNmU4MjA0NTdjZTlhMmQ5My4u
MTc5NTRlZjk1Mzc0ZGNhMDVkZTQyNWI4YWVlNWU5NjUyYjQ2ZjA1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yMjc4LDE5ICsyMjc4LDE5
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NH
THNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMo
KS5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAg
ICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBj
b3VudCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNp
emVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5z
aW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZz
ZXQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNv
cihpbmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBIQVZFKE9QRU5HTF80KSAmJiBFTkFC
TEUoV0VCR0wyKQpAQCAtMjY4Niw3ICsyNjg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIK
ICAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzLCBHQ0dMdWlu
dCBzcmNPZmZzZXQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgVU5VU0VEX1BB
UkFNKGRyYXdidWZmZXIpOwpAQCAtMjczOCw3ICsyNzM4LDcgQEAgUGxhdGZvcm1HTE9iamVjdCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmEKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUs
IEdDR0x1aW50KiB2YWx1ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5
T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHF1ZXJ5KTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwpAQCAtMjc4Miwx
OCArMjc4MiwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1l
dGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAgIFVOVVNFRF9QQVJBTShw
YXJhbSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJh
bWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxv
YXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDAuZjsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKKwogewogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsK
ICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAg
cmV0dXJuIDA7CiB9CiAKIEdDR0xzeW5jIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5
bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCkBAIC0yODMyLDEyICsy
ODMzLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5j
IHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGluCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVv
dXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5
bmMgc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1
ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5
bmMsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzeW5jKTsKICAgICBVTlVT
RURfUEFSQU0ocG5hbWUpOwogICAgIFVOVVNFRF9QQVJBTShidWZTaXplKTsKLSAgICBVTlVTRURf
UEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAppbmRleCA2Mjg0NDUzMjUwMzM1MTA3ZmQ1NDk4MjIzMmI4YjllYWVjOGU2OGNiLi45Zjgz
MTdiMThkNTNiN2IzYzE2NjY5YTRjNTExOTkzZWFmMzdjNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
QEAgLTEyMyw2ICsxMjMsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzCiAKKyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMCiAg
ICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAKICAgICBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyCkBAIC0yMTgsNiArMjE5
LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24KIAorICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkKICAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKIAogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CmluZGV4IGVkYjZjYTU5NzlkMmY0ZGVmOGIyYjJlNzczZjlkNjlhZTc4NmU3
ZTkuLjRhNjdkZjhlZGMzYjRmNDg5MTg3NzAyZWZiZjA0MWIzZDM0YTkxMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIwLDYgKzIwLDcg
QEAgJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9tb2RlbHMucHkKICQoSkFW
QVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2Vi
S2l0LkdQVVByb2Nlc3Muc2IuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTEzMSw2ICsxMzIsNyBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDc1Njc5ZjU1ZjVhZTM5OWI1ZWFmNDc3
ZjE4OTMyNTZiYzI0ODg0NGQuLjdjZDNkYmNjYTM1MGM2ZTM4MTRjMzQwYzM5M2M5NjNlZGJiOTgx
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dApAQCAtMTc1LDYgKzE3NSwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDM3NzAxYjAxYzNjMWEyYzMwMGUxZGQyZDcyZTZiODUyMzdmNDI0YjUuLjk3NmIxYTVh
M2U1YzBkMzExNWQ0NDUwYzkwODYxNTcxOWU2ZGVjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTE3MSw2ICsxNzEsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKIAlXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwKKwlXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzIFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUgXApAQCAtMjI3LDYgKzIyOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVBsdWdpblBy
b2Nlc3MvUGx1Z2luUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzIFwKIAlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAorCUdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgXAogCUdQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IDBlMmU4ODMyYjFlMjBmMWUwZjMxOWQ1ZDlmMjVkNzJjZTFiZjczYWQuLjQ0YjlmNjNlMTRjNTBi
NzQxOTkzZDZmMzVhNWE5NWY1YWZkODBhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY0LDYgKzY0LDEw
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg+CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
IgorI2VuZGlmCisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIlJlbW90
ZUNETUZhY3RvcnlQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmgiCkBAIC0yOTAsNiArMjk0LDIxIEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAg
QVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQordm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuZW5zdXJlKGdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICB9KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKK30KKyNlbmRpZgogdm9pZCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKICAgICBncHVQcm9jZXNz
KCkubm93UGxheWluZ01hbmFnZXIoKS5jbGVhck5vd1BsYXlpbmdJbmZvQ2xpZW50KCp0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCmluZGV4IDI2NzhkYmM0ZTVkMzY1ZmFkMjhlOGI0ODI3ODYzNzYyYTNjNDU3OGQuLjVh
ZWRmYmI0ZDJjYWM3Yjc2NjBmZjA3MzYwOWQzNzdjNjAxNTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvU2Vzc2lvbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENFbnVtVHJhaXRzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5aW5nTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KQEAgLTM5LDYgKzQwLDExIEBACiAjaW5jbHVkZSA8d3Rm
L0xvZ2dlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKKyNpZiBFTkFCTEUoV0VC
R0wpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaD4KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVUHJvY2VzczsKQEAgLTU0LDYgKzYwLDcgQEAgY2xhc3Mg
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OwogY2xhc3MgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDsKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3Mg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlv
bjsKQEAgLTExOSw2ICsxMjYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmlu
Z0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisjZW5kaWYKKwogICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOwogICAgIHZvaWQg
c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgV2ViQ29y
ZTo6Tm93UGxheWluZ0luZm8mJik7CiAKQEAgLTE4MCw3ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAog
ICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4+
OwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWFwOwotCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWFwIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7CisjZW5kaWYKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJv
eHk+IG1fY2RtRmFjdG9yeVByb3h5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDUxOTRmYjRmNjA4NWQ2MjRkNTk4M2Y2MjUyYzM2NWViMzI3MWYzNDQuLjlkNTRlMTY0
NTk1YjBhMzYxZGZlNGM3NWJmZjQwMThhODU3NTljOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0yNSw2ICsyNSwxMCBAQAogbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdC
YWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQorI2lm
IEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQor
ICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyNlbmRpZgogICAgIHZv
aWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCiAgICAgdm9pZCBTZXROb3dQbGF5aW5nSW5mbyhib29s
IHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm8gbm93UGxheWluZ0luZm8pCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTc3YTFmZjA5NzUzZWY1YjE3NjhiYzYxNDI5N2UzMmRi
MDRmMjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlNZXNzYWdlcy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsK
K30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICA6
IG1fY29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhh
dHRyaWJ1dGVzKSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0
cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byog
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5n
ZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVy
TWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9V
SW50NjQoKSwgKnRoaXMpOworICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBT
dHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdM
OjpFWFRFTlNJT05TKTsKKyAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250
ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
K30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAg
ICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3Qo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQpCit7CisgICAgbV9jb250ZXh0LT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkK
K3sKKyAgICBtX2NvbnRleHQtPnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29udGV4dC0+cHJl
cGFyZUZvckRpc3BsYXkoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmIGV4
dGVuc2lvbikKK3sKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KGV4dGVuc2lvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVhMTI3Yjg1Mzg1ZmUzNGQzODk5YjA5Yzg4ZDM0
NmZiZWM2ZThhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCisK
KyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBwcm9jZXNzIHNpZGUgaW1w
bGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRl
eHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJh
c2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBs
YXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGZpbmFsCisgICAgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisg
ICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBmaW5hbDsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMu
CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZp
bmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmlu
YWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8g
R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRDb21wb3Np
dGUoKSBmaW5hbDsKKyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKKyAgICB2b2lk
IHJlY3ljbGVDb250ZXh0KCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2Vk
Tm90aWZpY2F0aW9uKCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4K
KyAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZv
aWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3Bs
YXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoU3RyaW5nJiYpOworI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVu
Y3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkODI0OTZmNDE0Mjc1OWYzOTgxZTAxMmY2Mjk0MDY0
YmQ1NzI5ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyMzIg
QEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVk
IHsKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAg
dm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBQ
cmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisgICAgdm9pZCBTZXRGYWlsTmV4
dEdQVVN0YXR1c0NoZWNrKCkKKworICAgIHZvaWQgQWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0
dXJlKQorICAgIHZvaWQgQXR0YWNoU2hhZGVyKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNo
YWRlcikKKyAgICB2b2lkIEJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJf
dCBpbmRleCwgU3RyaW5nIG5hbWUpCisgICAgdm9pZCBCaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRUZXh0dXJlKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBn
cmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBCbGVuZEVxdWF0aW9uKHVp
bnQzMl90IG1vZGUpCisgICAgdm9pZCBCbGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9k
ZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHZvaWQgQmxlbmRGdW5jKHVpbnQzMl90IHNm
YWN0b3IsIHVpbnQzMl90IGRmYWN0b3IpCisgICAgdm9pZCBCbGVuZEZ1bmNTZXBhcmF0ZSh1aW50
MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwgdWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90
IGRzdEFscGhhKQorICAgIHZvaWQgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJn
ZXQpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENsZWFy
KHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBDbGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3Jl
ZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHZvaWQgQ2xlYXJEZXB0aChmbG9hdCBk
ZXB0aCkKKyAgICB2b2lkIENsZWFyU3RlbmNpbChpbnQzMl90IHMpCisgICAgdm9pZCBDb2xvck1h
c2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkKKyAgICB2b2lk
IENvbXBpbGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIENvcHlUZXhJbWFnZTJEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBib3JkZXIpCisgICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgs
IGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVh
dGVCdWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDcmVhdGVGcmFtZWJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIENyZWF0ZVByb2dyYW0oKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVSZW5kZXJidWZmZXIoKSAtPiAodWludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVTaGFkZXIodWludDMyX3QgYXJn
MCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRl
VGV4dHVyZSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBEZWxldGVCdWZmZXIodWludDMyX3Qg
YXJnMCkKKyAgICB2b2lkIERlbGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBEZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVSZW5kZXJidWZm
ZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQor
ICAgIHZvaWQgRGVsZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVwdGhGdW5j
KHVpbnQzMl90IGZ1bmMpCisgICAgdm9pZCBEZXB0aE1hc2soYm9vbCBmbGFnKQorICAgIHZvaWQg
RGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB2b2lkIERldGFjaFNoYWRl
cih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgRGlzYWJsZSh1aW50MzJf
dCBjYXApCisgICAgdm9pZCBEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgp
CisgICAgdm9pZCBEcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMy
X3QgY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHModWludDMyX3QgbW9kZSwgaW50MzJfdCBj
b3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRW5hYmxlKHVp
bnQzMl90IGNhcCkKKyAgICB2b2lkIEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGlu
ZGV4KQorICAgIHZvaWQgRmluaXNoKCkKKyAgICB2b2lkIEZsdXNoKCkKKyAgICB2b2lkIEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwg
dWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1aW50MzJfdCBhcmczKQorICAgIHZvaWQgRnJh
bWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1
aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGludDMyX3QgbGV2ZWwpCisgICAgdm9p
ZCBGcm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB2b2lkIEdlbmVyYXRlTWlwbWFwKHVpbnQz
Ml90IHRhcmdldCkKKyAgICB2b2lkIEdldEFjdGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1
aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVV
bmlmb3JtKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBu
YW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJ1
ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTdHJpbmcodWludDMyX3Qg
bmFtZSkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZs
b2F0dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2Vydih1
aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEludGVnZXI2NCh1aW50
MzJfdCBwbmFtZSkgLT4gKGludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBHZXRJbnRlZ2VyNjRpKHVpbnQzMl90IHBuYW1lLCB1aW50MzJfdCBpbmRleCkgLT4gKGludDY0
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRQcm9ncmFtaSh1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRCb29sZWFudih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFs
dWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPiB2YWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFByb2dyYW1JbmZvTG9nKHVpbnQz
Ml90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVy
aSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJJbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+
IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSkg
LT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4gcmFuZ2UsIEdDR0xpbnQgcHJlY2lz
aW9uKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAp
IC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJh
bWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFRleFBhcmFtZXRlcmkodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRVbmlmb3JtZnYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlv
biwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwg
aW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm11aXYo
dWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAt
PiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRVbmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+IChp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VmVydGV4QXR0cmli
T2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQ2NF90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSGludCh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IG1vZGUpCisgICAgdm9pZCBJc0J1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzRW5hYmxlZCh1aW50MzJfdCBjYXApIC0+
IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNGcmFtZWJ1ZmZlcih1
aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IElzUHJvZ3JhbSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIElzUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTaGFkZXIodWludDMyX3QgYXJnMCkgLT4g
KGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1RleHR1cmUodWludDMy
X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBMaW5l
V2lkdGgoZmxvYXQgYXJnMCkKKyAgICB2b2lkIExpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisg
ICAgdm9pZCBQaXhlbFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2
b2lkIFBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB2b2lkIFJl
bmRlcmJ1ZmZlclN0b3JhZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1h
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBTYW1wbGVDb3ZlcmFn
ZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgdm9pZCBTY2lzc29yKGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFNoYWRl
clNvdXJjZSh1aW50MzJfdCBhcmcwLCBTdHJpbmcgc3RyaW5nKQorICAgIHZvaWQgU3RlbmNpbEZ1
bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBT
dGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3Qg
cmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykK
KyAgICB2b2lkIFN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgbWFz
aykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWlu
dDMyX3QgenBhc3MpCisgICAgdm9pZCBTdGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1
aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBU
ZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFt
KQorICAgIHZvaWQgVGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1l
LCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgVW5pZm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZs
b2F0IHgpCisgICAgdm9pZCBVbmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQor
ICAgIHZvaWQgVW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpCisg
ICAgdm9pZCBVbmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkp
CisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgs
IGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZvaWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRp
b24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3Jt
NGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50
MzJfdCB3KQorICAgIHZvaWQgVXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmFs
aWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIxZih1aW50
MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGlu
ZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVmVydGV4QXR0cmliM2YodWludDMyX3Qg
aW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0
Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAg
ICB2b2lkIFZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwg
dWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgVmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHZvaWQgRHJhd0FycmF5c0lu
c3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQz
Ml90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZCh1aW50MzJfdCBt
b2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMy
X3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0cmliRGl2aXNvcih1aW50MzJfdCBpbmRl
eCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB2b2lkIENyZWF0ZVZlcnRleEFycmF5KCkgLT4gKHVp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVmVydGV4QXJy
YXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIElzVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVmVydGV4QXJy
YXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIENvcHlCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHJl
YWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1aW50NjRfdCByZWFkT2Zmc2V0LCB1aW50
NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3Qgc2l6ZSkKKyAgICB2b2lkIFVubWFwQnVmZmVyKHVp
bnQzMl90IHRhcmdldCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBCbGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBz
cmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJf
dCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQor
ICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxh
eWVyKQorICAgIHZvaWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgdm9pZCBSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMs
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB2b2lkIFRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisg
ICAgdm9pZCBUZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGRlcHRoKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlM0QodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6
b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgdm9pZCBHZXRGcmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmlu
ZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVu
aWZvcm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlmb3Jt
MnVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2b2lk
IFVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1
aW50MzJfdCB2MikKKyAgICB2b2lkIFVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMy
X3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQz
Ml90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5k
ZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAg
dm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1
aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQg
RHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90
IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHZvaWQgQ2xlYXJCdWZmZXJmaSh1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwg
ZmxvYXQgZGVwdGgsIGludDMyX3Qgc3RlbmNpbCkKKyAgICB2b2lkIENyZWF0ZVF1ZXJ5KCkgLT4g
KHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlUXVlcnko
dWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBJc1F1ZXJ5KHVpbnQzMl90IHF1ZXJ5KSAtPiAoYm9v
bCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJlZ2luUXVlcnkodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB2b2lkIEVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdl
dCkKKyAgICB2b2lkIEdldFF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFF1ZXJ5T2Jq
ZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVTYW1wbGVyKCkgLT4gKHVpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlU2FtcGxlcih1aW50MzJf
dCBzYW1wbGVyKQorICAgIHZvaWQgSXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpIC0+IChib29s
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFNhbXBsZXIodWludDMyX3Qg
dW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQz
Ml90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgU2Ft
cGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBh
cmFtKQorICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWlu
dDMyX3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAt
PiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEZlbmNlU3luYyh1
aW50MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZsYWdzKSAtPiAodWludDY0X3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1N5bmModWludDY0X3QgYXJnMCkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVTeW5jKHVpbnQ2NF90IGFy
ZzApCisgICAgdm9pZCBDbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFn
cywgdWludDY0X3QgdGltZW91dCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgV2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0
X3QgdGltZW91dCkKKyAgICB2b2lkIEdldFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IHBu
YW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0
ZVRyYW5zZm9ybUZlZWRiYWNrKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpCisgICAgdm9p
ZCBJc1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGlkKQorICAgIHZvaWQgQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJf
dCBwcmltaXRpdmVNb2RlKQorICAgIHZvaWQgRW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZv
aWQgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3Ry
aW5nPiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVyTW9kZSkKKyAgICB2b2lkIEdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIFJlc3VtZVRyYW5zZm9y
bUZlZWRiYWNrKCkKKyAgICB2b2lkIEJpbmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAgICB2b2lkIEJpbmRCdWZmZXJSYW5nZSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90
IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKKyAgICB2b2lkIEdldFVuaWZvcm1JbmRpY2VzKHVpbnQz
Ml90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHVuaWZvcm1OYW1lcykgLT4gKFZlY3RvcjxHQ0dM
dWludD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3Jt
cyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8R0NHTHVpbnQ+IHVuaWZvcm1JbmRpY2VzLCB1aW50
MzJfdCBwbmFtZSkgLT4gKFZlY3RvcjxHQ0dMaW50PiBwYXJhbXMpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5pZm9y
bUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1
bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5p
Zm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgdm9pZCBH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3Jt
QmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMy
X3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGlu
dDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ss
IHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVW
ZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1Zl
cnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmlu
ZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhU
KFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQor
ICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMy
X3QgcHJpbWNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMy
X3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBp
bnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSh1aW50
MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Zjk4ZDM4NjFkMWYxMDNkYTE5MGNiMWZjNGM3Y2QzMTQzMGU3ZWJjNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0wLDAgKzEsOTUxIEBACisvKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8g
VGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRp
dC4KKy8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlv
biBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNw
cmFnbWEgb25jZQorICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKyAg
ICB2b2lkIGF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwor
ICAgIH0KKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJf
dCBpbmRleCwgU3RyaW5nJiYgbmFtZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEF0
dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVm
ZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRGcmFt
ZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lk
IGJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAg
fQorICAgIHZvaWQgYmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpOworICAg
IH0KKyAgICB2b2lkIGJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1
ZSwgZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29sb3IocmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb24odWlu
dDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvbihtb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJH
QiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVx
dWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVu
ZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAgICB2b2lk
IGJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50
MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEp
OworICAgIH0KKyAgICB2b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY2xl
YXIodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFzayk7
CisgICAgfQorICAgIHZvaWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9h
dCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xv
cihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0aChm
bG9hdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7
CisgICAgfQorICAgIHZvaWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhi
b29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jb2xvck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlZCksIHN0
YXRpY19jYXN0PEdDR0xib29sZWFuPihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihi
bHVlKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAgIHZvaWQg
Y29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
b21waWxlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBi
b3JkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworICAg
IH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVidWZmZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVBy
b2dyYW0oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRl
UmVuZGVyYnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgY3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1H
TE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmNyZWF0ZVNoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZUJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQg
ZGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTaGFk
ZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVy
KGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBkZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZGVwdGhGdW5jKGZ1bmMpOworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZsYWcpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4oZmxhZykpOworICAgIH0KKyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0
IHpGYXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIp
OworICAgIH0KKyAgICB2b2lkIGRldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBh
cmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSk7
CisgICAgfQorICAgIHZvaWQgZGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRpc2FibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5cyh1
aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAgfQorICAg
IHZvaWQgZHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90
IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0Vs
ZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQp
KTsKKyAgICB9CisgICAgdm9pZCBlbmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5lbmFibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZsdXNoKCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9pZCBmcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQs
IHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50
LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVy
VGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3Qg
dGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRh
cmdldCwgYXJnMywgbGV2ZWwpOworICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50MzJfdCBt
b2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CisgICAgfQor
ICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdldEFj
dGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFy
ZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmli
KHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUsIFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0o
dWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwg
aW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RG
TW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWludDMyX3Qg
YXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihh
cmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAg
IH0KKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgZ2V0U3RyaW5nKHVpbnQzMl90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3RyaW5n
KG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1
ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwg
MTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2
YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2Vy
dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVf
dD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUs
IHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludDY0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGdldFByb2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52KHVp
bnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpBcnJheVJlZmVyZW5jZTxib29sPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBWZWN0b3I8R0NHTGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4o
dmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHZh
bHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxib29s
PihyZWludGVycHJldF9jYXN0PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCBnZXRFcnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXJyb3IoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Z2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9n
cmFtSW5mb0xvZyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyaSh1aW50MzJfdCBhcmcw
LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGFyZzAsIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRT
aGFkZXJJbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVp
bnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiwgaW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6OmFycmF5PEdDR0xpbnQsIDI+IHJh
bmdlIHsgfTsKKyAgICAgICAgR0NHTGludCBwcmVjaXNpb24gPSB7IH07CisgICAgICAgIG1fY29u
dGV4dC0+Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUs
IHJhbmdlLCAmcHJlY2lzaW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90LCAyPihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihyYW5nZS5k
YXRhKCkpLCByYW5nZS5zaXplKCkpLCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdldFNo
YWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJj
ZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlm
b3JtZnYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVT
aXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2
PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2Nv
bnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2
NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAg
ICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBs
b2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxHQ0dMdWludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1
ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxv
Y2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZS5kYXRhKCkp
LCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24odWlu
dDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24oYXJnMCwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9m
ZnNldChpbmRleCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aGludCh0
YXJnZXQsIG1vZGUpOworICAgIH0KKyAgICB2b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzQnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRW5h
YmxlZCh1aW50MzJfdCBjYXAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRW5hYmxlZChjYXApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGlzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+aXNGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rh
dGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dyYW0o
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGlzUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
Ym9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmlzUmVuZGVyYnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVyKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2hhZGVyKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGlzVGV4dHVyZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4g
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1Rl
eHR1cmUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9p
ZCBsaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5s
aW5rUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBw
bmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9y
ZWkocG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZh
Y3RvciwgZmxvYXQgdW5pdHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZz
ZXQoZmFjdG9yLCB1bml0cyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3Rv
cmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAg
dm9pZCBzYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4oaW52ZXJ0KSk7CisgICAgfQorICAgIHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2hh
ZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIHN0cmluZykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFyZzAsIHN0cmluZyk7CisgICAgfQorICAgIHZvaWQg
c3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7Cisg
ICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJf
dCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIH0K
KyAgICB2b2lkIHN0ZW5jaWxNYXNrKHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnN0ZW5jaWxNYXNrKG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2Vw
YXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBz
dGVuY2lsT3AodWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsK
KyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJf
dCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7Cisg
ICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lLCBmbG9hdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVy
Zih0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtMWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFmKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVu
aWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5
LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGYoaW50
MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVzZVByb2dy
YW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShh
cmcwKTsKKyAgICB9CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHkpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2YoaW5k
ZXgsIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGlu
ZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1
aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5k
ZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihub3JtYWxpemVkKSwgc3Ry
aWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB2
aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWln
aHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRf
dCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVy
RGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnMSksIHVzYWdlKTsKKyAg
ICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Zmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNv
dW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9k
ZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90
IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBw
cmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3Qg
aW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRl
eEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZl
cnRleEFycmF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFy
cmF5KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJpbmRWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0
ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2
NF90IHNpemUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJl
YWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dM
c2l6ZWlwdHI+KHNpemUpKTsKKyAgICB9CisgICAgdm9pZCB1bm1hcEJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGlu
dDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAs
IGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZp
bHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBz
cmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmls
dGVyKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsK
KyAgICB9CisgICAgdm9pZCByZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFy
Z2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAg
IHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFn
ZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5
VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBnZXRGcmFnRGF0YUxvY2F0aW9u
KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RnJh
Z0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlv
biwgdWludDMyX3QgdjApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xdWkobG9j
YXRpb24sIHYwKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMnVpKGludDMyX3QgbG9jYXRpb24s
IHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM3VpKGlu
dDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3Qg
djAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50
MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJJNHVpKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50
MzJfdCB6LCB1aW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRy
aWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQz
Ml90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50
cyh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNv
dW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1
ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwg
aW50MzJfdCBzdGVuY2lsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZp
KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOworICAgIH0KKyAgICB2b2lkIGNy
ZWF0ZVF1ZXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxl
dGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
UXVlcnkocXVlcnkpOworICAgIH0KKyAgICB2b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzUXVlcnkocXVlcnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJlZ2lu
UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBlbmRR
dWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5
KHRhcmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnkodGFyZ2V0LCBw
bmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0
ZVNhbXBsZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2FtcGxlcigpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVTYW1wbGVyKHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIGlzU2FtcGxlcih1aW50MzJf
dCBzYW1wbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgYmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7Cisg
ICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMy
X3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBs
ZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBh
cmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVy
LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmKHVp
bnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZs
b2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBs
ZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQz
Ml90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQ
YXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24s
IHVpbnQzMl90IGZsYWdzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzeW5jIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5jKGNvbmRpdGlvbiwg
ZmxhZ3MpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKSk7CisgICAgfQorICAgIHZv
aWQgaXNTeW5jKHVpbnQ2NF90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU3luYyhyZWludGVy
cHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAg
ICB9CisgICAgdm9pZCBkZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlbGV0ZVN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgfQorICAgIHZvaWQgY2xpZW50V2FpdFN5bmModWlu
dDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5jbGllbnRXYWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTHVpbnQ2ND4odGlt
ZW91dCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgd2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3Qg
dGltZW91dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+d2FpdFN5bmMocmVpbnRlcnByZXRf
Y2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRp
Y19jYXN0PEdDR0xpbnQ2ND4odGltZW91dCkpOworICAgIH0KKyAgICB2b2lkIGdldFN5bmNpKHVp
bnQ2NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN5bmNpKHJl
aW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIHBu
YW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9i
amVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50
MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2soaWQpOworICAgIH0KKyAgICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlk
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0
LCBpZCk7CisgICAgfQorICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBw
cmltaXRpdmVNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZl
ZWRiYWNrKHByaW1pdGl2ZU1vZGUpOworICAgIH0KKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRi
YWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsK
KyAgICB9CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dy
YW0sIFZlY3RvcjxTdHJpbmc+JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwg
dmFyeWluZ3MsIGJ1ZmZlck1vZGUpOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIHBhdXNlVHJhbnNmb3Jt
RmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRi
YWNrKCk7CisgICAgfQorICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVp
bnQzMl90IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlckJhc2Uo
dGFyZ2V0LCBpbmRleCwgYnVmZmVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2Uo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRC
dWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+
KG9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oc2l6ZSkpOworICAgIH0KKyAgICB2
b2lkIGdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYg
dW5pZm9ybU5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxHQ0dMdWludD4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQ+IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxHQ0dMdWludD4mJiB1bmlmb3JtSW5kaWNl
cywgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEdDR0xpbnQ+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQ+
IHBhcmFtcyB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHBhcmFtcykpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0lu
ZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrSW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tC
aW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50
MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tC
aW5kaW5nKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0
b3I8R0NHTGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDAp
OworICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3Qq
PihwYXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBz
cmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJf
dCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWlu
dDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwg
c3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0K
KyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVh
dGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWxldGVW
ZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFy
cmF5T0VTKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmlu
ZFZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpbnNl
cnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAg
IHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7CisgICAg
fQorICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQoKTsKKyAgICB9CisgICAgdm9pZCBk
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50
MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNv
dW50LCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90
IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8R0NHTHZvaWRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVy
dGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQppbmRleCBiN2JiNjNiMjlh
ZDgwMjE3MmRmMjdhMTI4OTViYjE5OThmYTRiNmIwLi42NDM1NzdmOTRlMGIwZDNlZTBjN2ZmYjEx
YzIyMjI2ZjkxMTUyMTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFj
L0dQVVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQ
cm9jZXNzTWFjLm1tCkBAIC0zMiw4ICszMiw4IEBACiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KLSNp
bXBvcnQgPHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+
CiAjaW1wb3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTQ1LDggKzQ1LDkgQEAgdm9pZCBHUFVQcm9jZXNzOjppbml0aWFs
aXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXIK
IHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICAvLyBI
YXZpbmcgYSB3aW5kb3cgc2VydmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNzIHdvdWxkIHJl
c3VsdCBpbiBzcGluIGxvZ3MgKDxyZGFyOi8vcHJvYmxlbS8xMzIzOTExOT4pLgotICAgIE9TU3Rh
dHVzIGVycm9yID0gU2V0QXBwbGljYXRpb25Jc0RhZW1vbih0cnVlKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGVycm9yLCBlcnJvciA9PSBub0Vycik7CisgICAgYXV0byByZXR2YWwgPSBDR1NTZXREZW55
V2luZG93U2VydmVyQ29ubmVjdGlvbnModHJ1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmV0dmFs
ID09IGtDR0Vycm9yU3VjY2Vzcyk7CisgICAgQ0dTU2h1dGRvd25TZXJ2ZXJDb25uZWN0aW9ucygp
OwogI2VuZGlmCiAKICAgICBsYXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXgg
NmE1YzY3MjVjYWE5YmRiODY3YWI4NmI4YzU3ZjM2ZGUyYzg5NmRjZi4uYmU3ZjUyMjBiZTliODVm
ODY4YTVmODM3ZWZlZDY2ZGRmOTVmMjk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTM5LDEwICszOSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5k
ZXggNDdmNWQyZjI3MGZhNWRlNGZhZGUxNTE0NDQyMTExNzk0ZWQzNmQyOC4uMmM1ZTdkZTdkMmU3
NTY5NjBhM2YzZWM4NzZjOGI4MjVjNmU0NWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTGVnYWN5Q0RNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBhOThjZmE0Yzlm
ODAyMzE5MDRmOGVmMGVhYTkzNjIyOWFmYTk3NTk4Li5mZWM2NWNmNjJiNjY3NGI4MzAwYzUwY2Q0
MzM0MTVlOTE1MTE0NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTI5LDcgKzI5
LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAppbmRleCBk
ODliODAzZjZhYmY0MWM4ZTllZGRlNDE0Mjc2OTMyODI2ZDFiMzM4Li4wODFlYjMxODBkMDIxNjRi
NWFhM2Q1NDgwNmY3MmM3ZWRjMGNiMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaApAQCAtMjcs
MTUgKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvUG9saWN5
Q2hlY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBJUEMgewog
Y2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCA2YmZiZmFmYjIwNDQ3
ODMwZDczMGMzOGM1NWQ5MTYwMjJjMjNkMzE2Li4wNmUzMDllNGQ1N2VhMDQ3ZjVlZDgyOTAyNThi
MTljYmNkYTYxOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTM4LDcgKzM4LDYgQEAKIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAppbmRl
eCAyNDVjZjQwZGZjNmZjNzI0MTc0OTljOTk2ZWVhOTVmMGEzYThkNjlhLi44NjgyY2Q3OTVhNWY1
NDRhYmI3OGU3YzFiODU4N2I5Njg4M2Y5NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTI5
LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IDM5MGMwY2UxYzI3YjYwOGRj
OTdhYWZhNTE4NjM2MTg4MGMzYWY0ZDMuLmMzMzc4MzMzYzAyNjY2ZGE2MWFiYWM2NDk0NzAyMTIx
ZGI1ZTg2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC0yNyw5ICsyNywxMSBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJ
ZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CkBAIC0zOCw3ICs0MCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IDM2MDMxMGI3ZDEyMWQyODZkOGQxNjFm
MTgzYWJkMGU3NDViODM1MzMuLjg0M2JiMDZmN2I1NmM2ZTNjZmJlZTc5YTdlNDI4MWVmZWU4Zjlh
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTI4LDE0ICsyOCwxNSBAQAogI2lmIFVTRShMSUJXRUJSVEMp
ICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJUQ0Rl
Y29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKwog
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggZjhhYmMx
ZjQwNWZjMTQ2OTQ3NWI0ZDkwYmFkM2Q1M2NhMGY4MDE0ZS4uNjFjNDcwOGFlOTZkYmNhYTU2OTgw
OWVlMTk5NWJlODE2YTkxZmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2lt
cG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCA3ODhj
NWYwMGMwMmY0ZjE0OGZlZWNjZDM4ZDEwNjgxOGIwZDdlOTYxLi4zYWI0ZTRiMWNmMWMxNDEyMzBj
MTNlNDU3NmM1ZWQ2ZTZlZmMyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAgLTM2
LDcgKzM3LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5k
ZXggN2E2MzM2MzQ3YzAwN2U5N2I3M2I1NDM3NzQ5MTY4MzhkNjQwMzdkYS4uMWFhNTNjYzJmYjc3
YmFmOWUzMjY1MDcyMTA4MDlmZDc2Y2ZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Q
cm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTI2
LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmgiCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkxl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJv
Y2Vzcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Q
cm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZjZlZDgxMWY1MzQy
ZmU0ODU1NTE3NmY4OWQ1MTQ1NzU2MmM2NjU4NS4uMGJjZDU2NzNjOTM0NmFkYTExZDY1NmMzYWRk
NTFiZTRlZGJjMjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oIgpAQCAtMzksMTAgKzQwLDYgQEAgT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Db25m
aWd1cmF0aW9uOwogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sOwogI2VuZGlmCiAKLW5hbWVz
cGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0gLy8gbmFtZXNwYWNlIElQQwotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwpAQCAtMTEyLDQgKzEwOSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwCmluZGV4IGRkYmU0ZWVkZDQ0MWRmODdjNTVhZDMzMGYwNDJjY2RjZmFk
ZmI5MGIuLjY1MWZmMjU0ZjkwNWMxNmE5MGNiNDgyYzk3NzNkNGFjNzQyOTRlYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAK
QEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3du
bG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDM4YWYzNTA4MDc0NjQyOTNiOTVmZmFmMDU5
ZmRlYzM2OTAxNzcyNzQuLjkzZjAzYTgyNTVmMWFlNzE3MzgzYzAwMjkwYTI0ZjkxY2E3YzY1ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNb25pdG9yLmgiCkBAIC00NCwxMCArNDUsNiBA
QCBPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2Fk
VGFzazsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwog
Y2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMzMy
MTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4uNzI2ZGQ5OTBiYWZkNDM5NGI1
YWZjMDMyYTFjZjIwZjE4NDljNDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgi
CiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAx
NjVmMWM3MjY3OGZhNTAuLjk4MGEwNmY3ODM5ZGJkNWU5ZjlkNTA0NTQwOWEzM2Q3N2IxYzAzODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNs
dWRlICJEb3dubG9hZE1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgpAQCAtNDks
NyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggNDQ5YjEzZDhlMDdiMmNkMDQyYzRiYTM2MzZhYjc5M2QzN2Ix
YzNmNC4uYzc3ODg4MTFmMDMyZDU4ZjhiNTI3NzM2ZTFkMjI3ODQxMGY5MTNhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3
b3JrU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDMxOTY0MTkw
ZDE0MWQ1NDlkYTBiYWYyZGM4YmYyOTdiNGU1ODFlODkuLjA0MzRiZjg4MDlhN2ViM2VjYzE4ZThm
NjUwY2MwMjc4YWU2ZWI1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
ZXIuaD4KQEAgLTQwLDcgKzQxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNWI0ODljYzUzOGY3
YzA3MTUxMDEwNmM1OGY1YzA5NGVjOWE4ZTFiOC4uNDhjODgzYmZjMGZjN2Q1MDFjOGE0YTRlNzY4
NGNjYzMzZTM4YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCmluZGV4IDUyZWMzOTI2OTAyMThl
ZGU2NjhkNTVlNjM4ZDhlMTc1MDJmZDZlZTUuLjczNDI5YTAyNzkwNmI0MTZhMzhjMGM2YjM5NDZh
MGRiOWZiMjA2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVh
bUVycm9yLmg+CkBAIC0zNyw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBk
MzNjYmZmMTA4OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi5kMzdkNzgwNjk4M2JiYTU0
N2NhMGY5MjM1ZWI0YmY2YjczMTU2NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgpAQCAtNDMsNyArNDQs
NiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZv
cm1EYXRhUmVmZXJlbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTb2NrZXRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNv
Y2tldFRhc2suaAppbmRleCBkYjU3OTVkZDIxN2Y0NWFkNWY2N2UzMGI3OTFmOTJlMjc2YzAyOTg2
Li45NjFlNDY0NTliZTc3MTc3ZTI2MDVlN2Q4NjUyYWRhODAyMDk3YjUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApAQCAtMzEsOSArMzEsNiBAQAog
I2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAjZWxzZQogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2Nv
YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EuaAppbmRleCBkYWM2OTM1MDdlYjNlZmNlYTZkMTA5NDgwMWJjMDFiMzZmZTI2MzlkLi5lNjgy
NmU0N2U4Mzk1OTQwMjhhZjhmNGFlZDIzOTJiNGIwNWQyZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKQEAg
LTI3LDE1ICsyNywxMiBAQAogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbldlYlNvY2tl
dFRhc2s7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTZXNz
aW9uQ29jb2E7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L1dlYlNvY2tldFRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvV2ViU29ja2V0VGFza0NvY29hLm1tCmluZGV4IDg1NTM0ODc0NDA0Y2UyYmFhNDRhZTY1NjU0
N2QzNzIyNTMzMmVhYjguLjkwYmM0MDliZmZiNzBhMGVlOWU3MzU4YjM4Njc1OTdkMjlmMjRlMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0
VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2Vi
U29ja2V0VGFza0NvY29hLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBIQVZFKE5TVVJMU0VT
U0lPTl9XRUJTT0NLRVQpCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIk5l
dHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKaW5kZXggNDVm
YzY2OWQ3NjZhNzYxYzVkNzczZGM5NWYwNTQxYTM4ZTM2ZjhlMy4uYTNlNzAxNGI1ZDhlYzA5NzM4
ZmZhN2Q1NjY0NTQ1MDEwZjA1MzQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIKIAot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQ
UGFyc2Vycy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBlNDIxYjllMWM3MTMxODQzNGY2NDg3ZjVmY2I1YTZh
ODdiZDczOTE5Li4wODg5MjM5NTlmZTQ2MGZmMmJiYTRjOGMwODM5OTgwNjU3YmYzNDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1Nv
dXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFz
a1NvdXAuaApAQCAtMjUsMTQgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCi1uYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5oCmluZGV4IGUwMGEwY2NkZmE1ODc1YzAyOGM1MDUyMzExNDE3MjhlZTk1
YjQzOTIuLmUzOGJjMWM2MGFmNmRjZjAzNjk2NWFhNzhhYWRiZDZkOGQ0YjYyNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgpA
QCAtNTMsNiArNTQsNDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3Vt
ZW50Q29kZXIgewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRl
bnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKKyAg
ICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+Owor
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVy
ZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSks
IGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQor
ICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm4g
QXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKEV4dGVudCAqIHNpemVvZihUKSwgYWxpZ25v
ZihUKSk7CisgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBUKj4oZGF0YSksIEV4dGVudCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VE
eW5hbWljRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVm
ZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlS
ZWZlcmVuY2UpCisgICAgeworICAgICAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKSk7CisgICAgICAgIGlmICghYXJyYXlSZWZlcmVu
Y2Uuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVy
ZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2Yo
VCkpOworICAgIH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZl
cmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29k
ZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemUgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAg
ICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRh
dGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8VD4+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uU2V0PFQ+JiBvcHRp
b25TZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJy
YXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2QzMmJiNDU3YTViODg1ZjNkNTY2ODdlNzlmMTVjM2EyNjcxYmU2NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJl
bmNlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBJUEMg
eworCitpbmxpbmUgY29uc3RleHByIHNpemVfdCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IEV4dGVudCA9IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4KK2NsYXNz
IEFycmF5UmVmZXJlbmNlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFycmF5UmVm
ZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4geworcHVibGljOgorICAgIEFy
cmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCog
ZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV9z
aXplKHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQorICAgICAgICAsIG1f
c2l6ZSh2ZWN0b3Iuc2l6ZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhbV9zaXplOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gbV9kYXRhOworICAgIH0KKworICAgIFZlY3RvcjxUPiB2ZWN0b3IoKSBjb25zdAorICAgIHsK
KyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEs
IG1fc2l6ZSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgY29uc3QgVCogbV9kYXRhIHsgfTsKKyAgICBzaXplX3QgbV9zaXplIHsgfTsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVuY2Ug
eworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlS
ZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRh
dGEpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUgPT0gRXh0ZW50KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEFycmF5
UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKKyAgICAg
ICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2ZWN0b3Iu
c2l6ZSgpID09IEV4dGVudCk7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuICFFeHRlbnQ7IH0KKworICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIEV4dGVudDsgfQorCisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3Rvcigp
IGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICBpZiAoIWlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBFeHRlbnQpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBtX2Rh
dGEgeyB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgorQXJyYXlSZWZlcmVuY2UoY29uc3QgV1RGOjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+Jikg
LT4gQXJyYXlSZWZlcmVuY2U8VD47CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjI1ZmRhN2JlZDJmZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgotCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLQot
bmFtZXNwYWNlIElQQyB7Ci0KLXZvaWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJh
eSgqdGhpcyk7Ci19Ci0KLWJvb2wgRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIu
ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0
YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5o
CmluZGV4IDM0NTBjMzFiNzNkZGI2YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNkNjky
N2YzNDFjNWFhOTNmYzEwNzNjYjA3NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5o
IgogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0g
ICAgCi1jbGFzcyBEYXRhUmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNlKCkg
PSBkZWZhdWx0OwotCi0gICAgRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAg
IERhdGFSZWZlcmVuY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYgdmVj
dG9yKQotICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6ZSh2
ZWN0b3Iuc2l6ZSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhbV9zaXplOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAgICAg
ICBpZiAoaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBtX2RhdGE7IAotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25z
dAotICAgIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0KLSAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1wcml2
YXRlOgotICAgIGNvbnN0IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3Qg
bV9zaXplIHsgMCB9OwotfTsKK3VzaW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5jZTx1
aW50OF90LCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGViNzMw
NWJmZDE5MTA4NzA2OGQzMGJjZGI4ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJj
NWFiOGJiYWRiZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAg
LTE4NiwyMCArMTg2LDE1IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRlY29k
ZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQogewot
ICAgIHVpbnQ2NF90IHNpemU7Ci0gICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxpZ25t
ZW50LCBzaXplKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50OF90
KiBkYXRhID0gbV9idWZmZXJQb3M7CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAgIGRh
dGFSZWZlcmVuY2UgPSBEYXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBkYXRhOwogfQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1lbnQo
QXR0YWNobWVudCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApp
bmRleCBiNzJkZDhhY2UyNzczZGIzNTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4ODJm
YzkwOTg0YjJmYTU3YmY5YzQ4Yjk2NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCkBAIC00MCw3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogY2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVz
c2FnZUZsYWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAg
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBk
YXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhl
IGRhdGEgcmVmZXJlbmNlIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUg
b2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAgIC8v
IFRoZSBkYXRhIGluIHRoZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlk
IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8g
UmV0dXJucyBudWxscHRyIG9uIGZhaWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0
IHVpbnQ4X3QqIGRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdu
bWVudCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKFQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmNwcAppbmRleCBmZDQwOTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5lODNh
M2U0YWZmNDJhNTc1NTA1ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9FbmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KQEAgLTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6OndyYXBG
b3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9yaWdp
bmFsLT5zZXRTaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShTaG91
bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2RlVmFy
aWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9y
aWdpbmFsLT5idWZmZXJTaXplKCkpKTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9yaWdp
bmFsLT5idWZmZXIoKSwgb3JpZ2luYWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8QXR0
YWNobWVudD4gYXR0YWNobWVudHMgPSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAg
ICAgcmVzZXJ2ZShhdHRhY2htZW50cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2b2lk
IEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSwgc2l6ZV90IGFsaQogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQog
Ci12b2lkIEVuY29kZXI6OmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihkYXRhUmVmZXJlbmNlLnNpemUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2b2lk
IEVuY29kZXI6OmFkZEF0dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAgICAg
bV9hdHRhY2htZW50cy5hcHBlbmQoV1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9FbmNvZGVyLmgKaW5kZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYyNDgy
ZTRjOWExMS4uZWE2MTk2N2JlMWViY2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xh
c3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC02
Miw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPik7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5jb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUg
JiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQgZW5j
b2RlKFQmJiB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmlu
ZGV4IDdmZDE4M2E1NmFlOThiMDY2NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUyYjQ5
ZDVjOGZjNDFhMmQ2NTRhZGNkODllODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCkBAIC05Niw3ICs5Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBl
ZGVmIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7
CiB9OwogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZTsKIHRlbXBsYXRlPD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSY+IHsKICAgICB1c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggN2EzY2Iz
Mzg3NjM2ZGNhZmNlYWNlYWQ5MWI4NjM5YjdiYTc2MzZjNi4uNTAwZjgzOWRmYWFlOTI5N2Y0ZGM2
M2RjNjYzMDU4NzdiMjJkZjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpAQCAtNDgsNyArNDksNyBAQCB2b2lkIFNoYXJlZEJ1ZmZl
ckNvcHk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogT3B0aW9uYWw8U2hhcmVkQnVm
ZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlh
YmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGEpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKaW5kZXggMmY3Mjg1
YWMwYjRiZDZkZTExZGZlYjlmZTMyOGYwMWM5OTk5NTBhMC4uZTk2ZGZiMWZiZjg5MWNkNGEwYzc3
NGU4NWM5MDc4NzU4YTZmZTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIK
IAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJpbmdSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5n
UmVmZXJlbmNlLmNwcAppbmRleCA4NTJlZjQzZTAwODYzMWM5ZmFmYTgyMzBjOTE5YzE3YTlkNGEy
OWI2Li4yMTYxMTM5YzMwMTRmMGVhZmIzZGM0N2M4NWRhNDE5MGEyYmEwNjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIK
IAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IDhiMzc0MGY0YjEwMWFkOTBmNTBlZDU3Yzg1MGI5MDMwZmNjNDMwYzIuLjRiMjBjODVhYzUz
NjIzNjQwM2E4M2VhOTczY2RjY2QxMGZkZjcyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOUE9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiTlBSZW1v
dGVPYmplY3RNYXAuaCIKICNpbmNsdWRlICJOUFJ1bnRpbWVVdGlsaXRpZXMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRl
eCBhZDRmY2Q5ZDhjY2Y0MmYxMmVlNDg4ZTAxMzQ2YzYxOWE3MDFiOGQyLi5jN2E3MDUzY2JkMjZk
MjA0NTRjMDQyYzZhY2UxNmNiNTI1MzBmNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1
ZGUgIlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKQEAg
LTM3LDEwICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci0gICAgY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIExheWVySG9zdGluZ0NvbnRleHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA1NzNlZDNkOGVl
OWJiZjQxMDMxNjhlNzlhMDU3ZjlkYmRiOWI4Njk1Li42NzMyNDRhNjdlMDk5ZmZiNzE4MDdkNTU1
MGM0NTRmMzYzMWRiMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKQEAgLTIwMyw2ICsyMDMsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfZm9yX25hbWVz
cGFjZShuYW1lc3BhY2UsIGtpbmRfYW5kX3R5cGVzKToKIAogZGVmIHR5cGVzX3RoYXRfY2Fubm90
X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsKKyAgICAgICAg
J0lQQzo6RGF0YVJlZmVyZW5jZScsCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAg
J01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcnLApAQCAtMjE0LDYgKzIxNSw3IEBAIGRlZiB0
eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3Jl
OjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAg
J1dlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcycsCiAgICAgICAgICdXZWJDb3Jl
OjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyJywKQEAgLTI0Myw2ICsyNDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5u
b3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAg
ICAnV2ViS2l0OjpHZW9sb2NhdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUnLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAog
ICAgICAgICAnV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEJywKQEAgLTUzMCw2ICs1MzMs
NyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAg
ICAnT3B0aW9uU2V0JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1l
bnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnVmVj
dG9yJzogeydoZWFkZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVh
ZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydo
ZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1
bWVudENvZGVycy5oIiddfSwKKyAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRl
cnMnOiBbJyJBcnJheVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsn
IkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgIH0KIAogICAgIG1hdGNoID0gcmUubWF0Y2goJyg/
UDx0ZW1wbGF0ZV9uYW1lPi4rPyk8KD9QPHBhcmFtZXRlcl9zdHJpbmc+LispPicsIHRlbXBsYXRl
X3N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCA2MTM0M2JkOTQx
MDZiNmU3ODlmODNiYzI1ZGU3OWY3YTYwNDA5M2NjLi5jNzgyMzE2ZjMwNTdhM2NhZjlkM2UyMDc3
YzgxMzI1NTNlNjk3NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgog
CisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhp
bGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgK
aW5kZXggN2JhMjA3YWJiMGFjY2M4YTU3MGY1YzY2M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdkMDNm
YWZlMDM5NTg3OTUyYTYzNzhkMWE5YzhmZjJmNzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
eGlsaWFyeVByb2Nlc3MuaApAQCAtODQsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQ
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzRGFlbW9uKCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2aWNl
c0NoZWNrSW4oKTsKICAgICB2b2lkIHNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91Z2hw
dXRRT1MpOwogI2VuZGlmCkBAIC0xODQsNCArMTgzLDMgQEAgc3RydWN0IEF1eGlsaWFyeVByb2Nl
c3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IDljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIuLmRhMzczNGM4NGQ2
NTRkOGQwM2NhNzkyNWY3YmQ3NTk5MTNiYzM0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzIyMSw0ICszMjIxLDgyIEBAIE9wdGlv
bmFsPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpJbWFnZURhdGE+Pjo6CiAgICAgcmV0dXJuIHsgV1RGTW92ZSgqcmVzdWx0KSB9OwogfQog
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCit2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcykKK3sKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYWxwaGE7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLmRlcHRoOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5zdGVu
Y2lsOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbnRpYWxpYXM7CisgICAgZW5jb2RlciA8
PCBhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0
ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5mYWls
SWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wb3dl
clByZWZlcmVuY2U7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzOwor
ICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5pc1dlYkdMMjsKKyAgICBlbmNvZGVyIDw8IGF0dHJp
YnV0ZXMubm9FeHRlbnNpb25zOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXZpY2VQaXhl
bFJhdGlvOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNl
OworI2lmIEVOQUJMRShXRUJYUikKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMueHJDb21wYXRp
YmxlOworI2VuZGlmCit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMu
YWxwaGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXR0cmlidXRlcy5kZXB0aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnN0ZW5jaWwpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbnRp
YWxpYXMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wcmVzZXJ2ZURy
YXdpbmdCdWZmZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0KSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJp
YnV0ZXMucG93ZXJQcmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5pc1dlYkdMMikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9ucykpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRldmljZVBpeGVs
UmF0aW8pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXR0cmlidXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisjZW5kaWYKKyAgICByZXR1cm4gYXR0cmlidXRlczsKK30KKwordm9pZCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiBh
Y3RpdmVJbmZvKQoreworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5uYW1lOworICAgIGVuY29k
ZXIgPDwgYWN0aXZlSW5mby50eXBlOworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5zaXplOwor
fQorCitPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIGFjdGl2ZUluZm87CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZv
Lm5hbWUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYWN0aXZlSW5mby50eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8uc2l6ZSkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGFjdGl2ZUluZm87Cit9CisKKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggNGE5MzIxNTkxMzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVkNi4uMWRh
ZTk2OTVmMzNjMDlkY2Q3YzU4MDM2MDhlMmQ2YWMxNmU5ZmM2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTcxLDYgKzcxLDEzIEBACiAjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnNHdGsuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzVHlw
ZXNHTC5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewog
Y2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTIwMyw2ICsyMTAsMTAgQEAgc3RydWN0IFNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YTsKIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50PFN0cmluZywgVmVj
dG9yPFN0cmluZz4+OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM7CisjZW5kaWYKKwog
bmFtZXNwYWNlIERPTUNhY2hlRW5naW5lIHsKIHN0cnVjdCBDYWNoZUluZm87CiBzdHJ1Y3QgUmVj
b3JkOwpAQCAtODczLDYgKzg4NCwxOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IHsKIH07CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJik7CisgICAgc3RhdGljIE9wdGlv
bmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2Rl
ciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7
CkBAIC0xMDQxLDQgKzEwNjUsMTYgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM+IHsKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TFBvd2VyUHJlZmVyZW5jZSwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZTo6RGVmYXVsdCwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZTo6TG93UG93ZXIsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZQorICAgID47Cit9OworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCBjZjEzMWE5MjFlMDg2MzY1ZGJmNzdmYTk4ZTQxYzFjNzRhM2U3
ZTI1Li5hZGQ5NDliYTUwOGQ4ZTgxNDA4N2ZlZGU3YjA0OGEzZGVjNmNmODVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
MTU4LDYgKzE1OCw5IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckNh
bnZhc0luR1BVUHJvY2VzczsKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckRPTUluR1BVUHJv
Y2VzczsKICAgICBlbmNvZGVyIDw8IHNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzczsKKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vz
czsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5RGVjb2RlcjsKICAgICBl
bmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcjsKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCkBAIC01MTAsNiArNTEzLDEwIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQ
cm9jZXNzKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VCR0wp
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5H
UFVQcm9jZXNzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGQ5MWU0NjAzOGYzMDliNTEzMGJmZGU1
OGRmZjRhOWYxODE5NTFkZmQuLmMyMDYxMjMxMTQzNWJmNGY5MmNmMDZmZTVlMTEyMDVhNGI1MTEy
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKQEAgLTIyOSw2ICsyMjksOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgYm9vbCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9Owog
ICAgIGJvb2wgc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29s
IHNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdM
KQorICAgIGJvb2wgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2Vu
ZGlmCiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29s
IHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRD
b2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNw
cAppbmRleCA5YmQ4YTgxNzU0OWY1OGZlMzgzZDcyNWRhNjYzZjNiYzU0Y2EwZDc0Li43N2U5YjRk
NWNjNzUyZmJjZGI2YjY1ZjlhZGMyNjAxOTU2Y2ExNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRl
Y29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCAxZDg0ZTJm
ZTI2OGYzNDYwZWIyOTc1YzQyYmE5NWQxNGYxZDIzNWNmLi5mYTI2OGQ1ODRhMGZjOGRmODdhMjFm
YTQ1NjA3N2I4YzVkNDJiODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3Vw
L1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBDZXJ0aWZpY2F0ZUkKICAgICAvLyBFbmNvZGUgc3RhcnRpbmcgZnJvbSB0aGUgcm9v
dCBjZXJ0aWZpY2F0ZS4KICAgICBmb3IgKHNpemVfdCBpID0gY2VydGlmaWNhdGVzRGF0YUxpc3Qu
c2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAgICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlID0g
Y2VydGlmaWNhdGVzRGF0YUxpc3RbaSAtIDFdLmdldCgpOwotICAgICAgICBlbmNvZGVyLmVuY29k
ZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KElQQzo6RGF0YVJlZmVyZW5jZShjZXJ0aWZpY2F0ZS0+
ZGF0YSwgY2VydGlmaWNhdGUtPmxlbikpOworICAgICAgICBlbmNvZGVyIDw8IElQQzo6RGF0YVJl
ZmVyZW5jZShjZXJ0aWZpY2F0ZS0+ZGF0YSwgY2VydGlmaWNhdGUtPmxlbik7CiAgICAgfQogCiAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY2VydGlmaWNhdGVJbmZvLnRsc0Vy
cm9ycygpKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNh
dGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENlcnRpZmljYXRlSW5mbyYgYwogICAg
IEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZTsKICAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgY2hhaW5MZW5ndGg7IGkrKykgewogICAgICAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlKSkKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2UpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0
YSA9IGdfYnl0ZV9hcnJheV9zaXplZF9uZXcoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlLnNpemUo
KSk7CkBAIC0yNzcsNCArMjc3LDMgQEAgT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3UKICNlbmRpZgog
CiB9Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CmluZGV4IDA5MTdmMDFiZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1YTNm
MmVmODYuLjUwY2RlMTJhZmEzYWE3Zjc4YzI3OWVjOGZiODE5NzQ0YjZmYjFlYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dApAQCAtMjYsNiArMjYsNyBAQCBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHku
Y3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAK
QEAgLTEzNyw3ICsxMzgsNiBAQCBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIEBuby11bmlmeQog
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9B
dHRhY2htZW50LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBAbm8t
dW5pZnkKLVBsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8t
dW5pZnkKIFBsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwIEBuby11bmlmeQpAQCAtNjkzLDMg
KzY5Myw1IEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCiBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5OTUxODA3MzI4MGU5Yzk1
YTJiMjVmMDBiYzhiZmIzODg3NjIxMjQxLi4zZmEyYzgwNGIyMzViYzMyMTU4MjhjMjkxZTkwYTRk
ZDk0Mjg5ZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02Myw2ICs2Myw3IEBAIEdQVVBy
b2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCiBHUFVQcm9j
ZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCiAKKwogUGxhdGZvcm0vY2YvTW9kdWxl
Q0YuY3BwCiAKIFBsYXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0NsYXNzaWZpZXJDb2NvYS5jcHAKQEAgLTU3Myw2ICs1NzQsNyBAQCBXZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZp
Y2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKK1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAt
Njg1LDYgKzY4Nyw3IEBAIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVz
c2FnZVJlY2VpdmVyLmNwcAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2Fk
aW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdD
bGllbnQuaAppbmRleCAyZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNkLi43
MzdiNjI1ODE5ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzAsMTAg
KzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwot
fQotCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZy
YW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4
IDgyM2MyMDJhODU2YTAxMzZkZDllYTc1OWYwZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhm
NGZiNGY4NzM0ZDdiZmQ2MDhkMjAzODgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
U3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
IAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDog
cHVibGljIE5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2Fk
U3RhdGU6Ok9ic2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCmluZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZi
YmJhNDJmYzkwY2VjMzU3N2YuLjEyOGEzOTc3ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElE
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KQEAgLTM1LDEwICszNiw2IEBACiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7
CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0YTEw
ZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQzZmE5MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVk
NjViNTdlZDBjODAxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAs
MTAgKzgxLDYgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRk
NDVmMTJlZGUzNGEwZjc4Y2EwYTYuLjI0OGU1M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVk
YWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMx
LDcgKzMxLDYgQEAKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKLSNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDEyOWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1
NmQzY2NjYjIuLmE0ZDhkN2NkODA0ZTY1NjBkYWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxkU2hhcmVkLmgiCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC00OCwxMCArNDksNiBAQCBjbGFzcyBVc2VyU2Ny
aXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNlY3VyaXR5
T3JpZ2luRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IGE4YmY1YzJjY2Q0NjQwOTNhZWY0NjNhOWFiZjMyMmFhZjc0MmMxZTYuLmExOGMyMjc0ZmE0
ZTg3NGE2NjNiMGZiMzU3MjY4MThiYzU5MDZlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNTgsNyArNTgsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJl
YU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNzkxOSw2ICs3
OTE4LDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlv
blBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRS
ZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JD
YW52YXNSZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01J
bkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdF
bmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBw
cmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9IHBy
ZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvcldlYkdMRW5hYmxlZCgpOworI2VuZGlmCisKICAg
ICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURl
Y29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxFKFZQOSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAg
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURl
Y29kZXJFbmFibGVkKCkgJiYgKCFXZWJDb3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVy
ZW5jZXMoKS52cDlTV0RlY29kZXJFbmFibGVkT25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3
MTFmOTFiMmU1Li40MzdhYjc1MGIzNWFiMTYzYjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0No
aWxkRnJhbWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAi
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIw
Myw3ICsyMDQsNiBAQCBlbnVtIGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90Owog
fQogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVy
OwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1
Y2U2NWU5ZDJkNTY1YjNmMTI1ZjM0NTdhMjU2ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMy
ZTZhMTk5NzdkYjYxYmFiNjEzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
CmluZGV4IGQ0NDJiNjJiNTIyNTg3ZjkwZmE2ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2
ODhhMjY4MjE5NDFmZjdhNDE4ZjRkZjVhOTc1YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM4LDEwICszOCw2IEBAIG5hbWVzcGFjZSBBUEkg
ewogY2xhc3MgRnJhbWVJbmZvOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzQ5YTA0NWJjYjgxYWMwMGFmODFmMWFlMzQyY2YzZTAx
OWI4N2I1OS4uMzVkMzY3ZDRmMjkwZDVjZWUwYTQ0ZDA0YzQzZGM3YzE2ZTI4NGJkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02OTgs
NyArNjk4LDYgQEAKIAkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2
MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJB
NzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBB
dHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDky
QTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUg
LyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAv
KiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5
MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVu
Y29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJl
Y2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICov
OyB9OwpAQCAtMTMwMyw2ICsxMzAyLDcgQEAKIAkJN0FGQkQzNjMyMUU1MEYzOTAwNURCQUNCIC8q
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1
REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJB
Q0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJE
MzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0Ig
LyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMg
LyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICov
OyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdp
bkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNF
MUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJ
RGljdGlvbmFyeS5oICovOyB9OwpAQCAtMjcxOCw3ICsyNzE4LDYgQEAKIAkJMUFDNUZGQzExNzRC
RkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3Rh
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3
MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYWdlTG9hZFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdE
MTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0
ZWN0aW9uRGlzYWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0Rl
dGVjdGlvbkRpc2FibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFD
MUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzY3LDYgKzQzNjYsMTYgQEAKIAkJ
N0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaDsgcGF0aCA9IENsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZE
MjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBl
cnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUy
MUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
MURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjY0QzBCMTI1NEMzNjkwMDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4
QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQx
NkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TEZ1bmN0aW9uc0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1
QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY1Myw3ICs2NjYyLDYgQEAKIAkJCQlCQ0VFOTY2
QjExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oICovLAogCQkJCUJDMDMyREEyMTBGNDM3
RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAqLywKIAkJCQlCQzAzMkRBMzEwRjQzN0QxMDA1
OEMxNUEgLyogQ29ubmVjdGlvbi5oICovLAotCQkJCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAv
KiBEYXRhUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyog
RGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNv
ZGVyLmNwcCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5oICov
LApAQCAtNjY3Nyw2ICs2Njg1LDcgQEAKIAkJCQkyREMxODgxQUNCQ0FCNUQ1N0M1QzZFRjAgLyog
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCTFBRTAwRDY5MTgzMjdDMTIwMDA4
N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwICovLAogCQkJCTFBRTAwRDZBMTgzMjdDMTIwMDA4
N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gSVBDOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgzMjIsMTEgKzgzMzEsMTYgQEAKIAkJCQk3MjdBN0Yz
MzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3
M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMw
NDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBC
NjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJ
CQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
ICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4
OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywK
IAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmggKi8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUx
NzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8s
CisJCQkJN0I2NEMwQjEyNTRDMzY5MDAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5
MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkw
MEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0
MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywK
QEAgLTgzNDQsNiArODM1OCwxMCBAQAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3
M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBF
NjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3QjkwNDE2
OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAorCQkJ
CTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICov
LAorCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0
MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0
MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUw
NjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKQEAg
LTExMTAwLDYgKzExMTE4LDcgQEAKIAkJCQkzN0UyNUQ2RTE4RkRFNUQ2MDA1RDNBMDAgLyogQVBJ
Rm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzNzIxODU2NkM3QzAwRjNFQzA1
IC8qIEFQSUZyYW1lSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY5RUVFNjFBNzgxRkI0
MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1
NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
NzhFMTE3MURCN0RDMEEwMDE0QTJERSAvKiBBUElGdWxsc2NyZWVuQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QUI2RUE0NzFFRUFCNkI4MDAwMzdCMkIgLyogQVBJR2VvbG9jYXRpb25Qcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNzRBQTMxNDJBNENCNzAwMzkyNTBGIC8qIEFQ
SUdlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTEzMjI4LDcgKzEzMjQ3LDYgQEAKIAkJCQky
RDkyQTc4NTIxMkI2QUIxMDBGNDkzRkQgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRi
b3hFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5
NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFS
ZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZE
IC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlEQUEzOEMyNENCQTFBODAwNzkz
RDc1IC8qIERlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQw
QzU2RkUyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGY5MmRhNmE0N2Y3ZTI0ZjM4Mzk5YWEz
Njk4YTIxMjkwZDM2MWQ0YTYuLmM5ZGM2ODJiODc1NDliODI1MGRiMjJiMmExY2UyMTU1NTAwMGNl
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTM2LDEwICszNiw2IEBACiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFj
ZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUGF5bWVudENvb3JkaW5hdG9yOwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5k
ZXggMmMwZGY1YjlmNTQ5Njg0N2VkNjY5MTBiZjJmMzliMmNkYzYwY2EwMi4uNWJlOGI5OTc1MjBj
NGFkN2YxYjQ0MDdhZTcyMDRjODRhOTk4ODc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMzUsMTAgKzM1LDYgQEAK
ICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTc5MThl
NGI1MGM5YjdjZjViMmU3OWIwNzdkMDM1MjEyYzYxMjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJUeXBl
PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI5NzVlYmU1Mzg3YjA4YjUwZWUy
NDFhMmViNjMwODdiMmVlOWUwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAg
LTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShhdHRy
aWJ1dGVzKSk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzKQorICAgIDogUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShh
dHRyaWJ1dGVzKQoreworICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2
ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQo
KSwgKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1h
cCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVj
ZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVT
dGF0dXNDaGVjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVG
b3JEaXNwbGF5KCkKK3sKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxX3MpOworICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbiksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVl
c3RlZEV4dGVuc2lvbnMpCit7CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZSkgeworICAgICAgICAv
LyBJbml0aWFsaXphdGlvbiB0aW1lZCBvdXQgYmVmb3JlLCBzbyBsb3NlIHRoZSBjb250ZXh0IG5v
dy4KKyAgICAgICAgd2FzTG9zdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGluaXRp
YWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgbV9k
aWRJbml0aWFsaXplID0gdHJ1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp3YXNMb3N0KCkKK3sKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3Rvciht
X2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmZvcmNlQ29udGV4dExvc3QoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCgpCit7
CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBpZiAoY29ubmVjdGlvbi0+
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQ+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
X3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJp
dmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91dCwgc28gcmVwb3J0IGluaXRp
YWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2UgdGhlIGNvbnRleHQuCisgICAg
d2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRl
eHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwg
c3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM0OTFlYmY4YjY0Zjk1NjQ5
Yzc5Mzk1MWU4ODdlMTU1NjhjMTNhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1
ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisvLyBXZWIgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzQ29u
dGV4dEdMIGludGVyZmFjZS4gVGhlIGltcGxlbWVudGF0aW9uCisvLyBjb252ZXJ0cyB0aGUgaW50
ZXJmYWNlIHRvIGEgc2VxdWVuY2Ugb2YgSVBDIG1lc3NhZ2VzIGFuZCBzZW5kcyB0aGUgbWVzc2Fn
ZXMgdG8KKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIEdQVSBwcm9jZXNzLgorLy8gVGhl
IGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSBmaW5hbAorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMu
CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZp
bmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmlu
YWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KworICAgIC8vIFBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJp
ZGVzLgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOworICAg
IHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsOworICAgIHZvaWQgcHJlcGFy
ZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybVJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7CisjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKKworcHJv
dGVjdGVkOgorICAgIC8vIFBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ug
b3ZlcnJpZGVzLgorICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbikgZmluYWw7CisgICAgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQg
d2FzQ3JlYXRlZChTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0
ZWRFeHRlbnNpb25zKTsKKyAgICB2b2lkIHdhc0xvc3QoKTsKKworICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
Jik7CisgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxzZSB9OworICAgIEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciB7IEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliM2RjYmJlMTM3Y2U5MjJhYzg1MzIxYmIz
MDU3ZTQ2Mzc4YmI2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBX
YXNDcmVhdGVkKFN0cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVF
eHRlbnNpb25zKQorICAgIHZvaWQgV2FzTG9zdCgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOTBiZWQ5NTRlYWZiM2U2OGFiNDg5Y2JmZDgzM2I4ZTUxYjg1Yzdi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTAs
MCArMSwxMzQ0IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKworLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBp
bmNsdWRlZCBpbiB0aGUgcHVibGljIHNlY3Rpb24gb2YgdGhlCisvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5IGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQorCisgICAgdm9pZCBh
Y3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpIGZpbmFsCisgICAgeworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlVGV4dHVyZSh0ZXh0dXJl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgYXR0
YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFk
ZXIpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyKHRhcmdldCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGJp
bmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwg
YXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lk
IGJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5h
bAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIGJsZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFt
cGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENv
bG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5h
bAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJsZW5kRXF1YXRpb24obW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICB9CisKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBH
Q0dMZW51bSBtb2RlQWxwaGEpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1v
ZGVBbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJs
ZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIH0KKworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBH
Q0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIEdDR0xlbnVtIGNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbAorICAgIHsKKyAgICAg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0
dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFf
cyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFy
KEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVk
LCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0NHTGNsYW1wZiBk
ZXB0aCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdDR0xpbnQgcykgZmluYWwKKyAg
ICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVh
clN0ZW5jaWwocyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dM
Ym9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWwKKyAgICB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb2xvck1hc2soc3RhdGljX2Nh
c3Q8Ym9vbD4ocmVkKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxib29s
PihibHVlKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYWxwaGEpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgY29weVRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsCisg
ICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29w
eVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lk
dGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsCisgICAgeworICAgICAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUZyYW1lYnVmZmVyKCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVm
ZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZm
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFf
cyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9
CisKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsCisgICAg
eworICAgICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXIoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXI6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7Cisg
ICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVl
OworICAgIH0KKworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsCisg
ICAgeworICAgICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAg
cmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0g
bW9kZSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIH0KKworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVCdWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICB9CisKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVGcmFtZWJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBkZWxldGVUZXh0dXJlKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBkZXB0aEZ1bmMoR0NHTGVudW0gZnVu
YykgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICB9CisKKyAgICB2b2lkIGRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKSBmaW5hbAorICAg
IHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRo
TWFzayhzdGF0aWNfY2FzdDxib29sPihmbGFnKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NH
TGNsYW1wZiB6RmFyKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBkZXRhY2hTaGFkZXIoUGxhdGZv
cm1HTE9iamVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsCisgICAgeworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVy
KGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisg
ICAgdm9pZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXko
aW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9p
ZCBkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQ0dMZW51bSBt
b2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAg
dm9pZCBlbmFibGUoR0NHTGVudW0gY2FwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShHQ0dMdWludCBpbmRleCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlz
aCgpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RmluaXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9
CisKKyAgICB2b2lkIGZsdXNoKCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0
dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1
ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBmcm9u
dEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdDR0xl
bnVtIHRhcmdldCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmlu
YWwKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHBy
b2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3Rp
dmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAg
ICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWlu
dCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybTo6UmVwbHkocmV0dXJuVmFs
dWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAg
cmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsCisgICAg
eworICAgICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uKGFyZzAs
IG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0
aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
X3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgR0NHTGludCBn
ZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFs
CisgICAgeworICAgICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRl
cmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKwor
ICAgIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkgZmluYWwKKyAgICB7CisgICAgICAg
IFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmcobmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CisgICAgfQorCisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xmbG9hdD4gdmFsdWUpIGZpbmFsCisgICAgeworICAgICAgICBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiB2YWx1ZVJlcGx5OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHN0ZDo6Y29weSh2
YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWVSZXBseS5kYXRhKCkgKyB2YWx1ZS5idWZTaXplLCB2YWx1
ZS5kYXRhKTsKKyAgICB9CisKKyAgICB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWwKKyAgICB7CisgICAgICAgIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5
KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAg
ICAgc3RkOjpjb3B5KHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZVJlcGx5LmRhdGEoKSArIHZhbHVl
LmJ1ZlNpemUsIHZhbHVlLmRhdGEpOworICAgIH0KKworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2Vy
NjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsCisgICAgeworICAgICAgICBpbnQ2NF90IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0
PihyZXR1cm5WYWx1ZSk7CisgICAgfQorCisgICAgR0NHTGludDY0IGdldEludGVnZXI2NGkoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSBmaW5hbAorICAgIHsKKyAgICAgICAgaW50NjRf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIEdDR0xpbnQg
Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmlu
YWwKKyAgICB7CisgICAgICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWkocHJv
Z3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dy
YW1pOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
X3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgdm9pZCBnZXRC
b29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5h
bAorICAgIHsKKyAgICAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPiB2YWx1ZVJlcGx5Owor
ICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJv
b2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICBzdGQ6OmNvcHkodmFsdWVSZXBseS5kYXRhKCks
IHZhbHVlUmVwbHkuZGF0YSgpICsgdmFsdWUuYnVmU2l6ZSwgdmFsdWUuZGF0YSk7CisgICAgfQor
CisgICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAg
IEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9M
b2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgU3RyaW5nIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CisgICAgfQorCisgICAgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsCisgICAgeworICAgICAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIEdDR0xp
bnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0xlbnVtIHBuYW1lKSBmaW5h
bAorICAgIHsKKyAgICAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpKGFyZzAs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOwor
ICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgU3RyaW5nIGdldFNoYWRl
ckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgU3Ry
aW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworICAgIH0KKworICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdD
R0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xp
bnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pIGZpbmFsCisgICAgeworICAgICAgICBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlUmVwbHk7CisgICAgICAgIGludDMy
X3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUs
IHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNo
YWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9uUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgc3RkOjpjb3B5KHJh
bmdlUmVwbHkuZGF0YSgpLCByYW5nZVJlcGx5LmRhdGEoKSArIHJhbmdlLmJ1ZlNpemUsIHJhbmdl
LmRhdGEpOworICAgICAgICAqcHJlY2lzaW9uID0gcHJlY2lzaW9uUmVwbHk7CisgICAgfQorCisg
ICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisg
ICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAg
ICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIEdDR0xmbG9hdCBnZXRUZXhQ
YXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsCisgICAgewor
ICAgICAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmY6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7
CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBHQ0dMaW50IGdldFRl
eFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWwKKyAgICB7
CisgICAgICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0
ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
X3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgdm9pZCBnZXRV
bmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbAorICAgIHsKKyAgICAgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZh
bHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZv
cm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
X3MpOworICAgICAgICBzdGQ6OmNvcHkodmFsdWVSZXBseS5kYXRhKCksIHZhbHVlUmVwbHkuZGF0
YSgpICsgdmFsdWUuYnVmU2l6ZSwgdmFsdWUuZGF0YSk7CisgICAgfQorCisgICAgdm9pZCBnZXRV
bmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWwKKyAgICB7CisgICAgICAgIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZh
bHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZv
cm1pdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
X3MpOworICAgICAgICBzdGQ6OmNvcHkodmFsdWVSZXBseS5kYXRhKCksIHZhbHVlUmVwbHkuZGF0
YSgpICsgdmFsdWUuYnVmU2l6ZSwgdmFsdWUuZGF0YSk7CisgICAgfQorCisgICAgdm9pZCBnZXRV
bmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbAorICAgIHsKKyAgICAgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtdWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDFfcyk7CisgICAgICAgIHN0ZDo6Y29weSh2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWVSZXBs
eS5kYXRhKCkgKyB2YWx1ZS5idWZTaXplLCB2YWx1ZS5kYXRhKTsKKyAgICB9CisKKyAgICBHQ0dM
aW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgZmluYWwKKyAgICB7CisgICAgICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
ICAgIH0KKworICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWludDY0X3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7CisgICAgfQor
CisgICAgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWwKKyAg
ICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50
KHRhcmdldCwgbW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICBHQ0dMYm9vbGVhbiBpc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisg
ICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKKyAgICB9CisKKyAgICBHQ0dMYm9v
bGVhbiBpc0VuYWJsZWQoR0NHTGVudW0gY2FwKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0VuYWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc0VuYWJsZWQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIEdDR0xib29sZWFuIGlzRnJhbWVidWZmZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc0ZyYW1lYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBib29sIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0
dXJuVmFsdWUpOworICAgIH0KKworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNSZW5kZXJidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIEdDR0xib29sZWFuIGlzU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNTaGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNT
aGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworICAgIH0KKworICAgIEdDR0xib29sZWFuIGlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVy
ZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworICAg
IH0KKworICAgIHZvaWQgbGluZVdpZHRoKEdDR0xmbG9hdCBhcmcwKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQg
bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBwaXhl
bFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWwKKyAgICB7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShw
bmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisg
ICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykg
ZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorCisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVh
biBpbnZlcnQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGlu
dmVydCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9p
ZCBzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgc2hhZGVyU291cmNlKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpIGZpbmFsCisgICAgeworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2hhZGVyU291cmNl
KGFyZzAsIHN0cmluZyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWlu
dCBtYXNrKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUo
R0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2sp
IGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBzdGVuY2lsTWFzayhH
Q0dMdWludCBtYXNrKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xl
bnVtIGZhY2UsIEdDR0x1aW50IG1hc2spIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBt
YXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQg
c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykg
ZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpTdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0g
ZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5h
bAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbAorICAg
IHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBh
cmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgfQorCisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsCisgICAgeworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWwK
KyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgfQorCisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBm
aW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxv
YXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdW5pZm9ybTJpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSBmaW5hbAorICAgIHsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaShsb2Nh
dGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHVuaWZvcm0zaShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxv
YXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWwKKyAgICB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
NGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfQorCisgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbAorICAgIHsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlv
biwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dy
YW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2
b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgewor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQ
cm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpIGZpbmFs
CisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfQorCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdmVydGV4QXR0
cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0
IHopIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWlu
dCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0
IHcpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVy
KEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFu
IG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbAor
ICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PGJvb2w+KG5v
cm1hbGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdmlld3BvcnQoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkgZmluYWwKKyAgICB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhKHRhcmdldCwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWwK
KyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpLCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfQorCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3Ip
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgpIGZpbmFsCisgICAgeworICAgICAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CisgICAgfQorCisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHJldHVyblZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0
YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciBy
ZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4od3JpdGVPZmZzZXQp
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgfQorCisgICAgR0NHTGJvb2xlYW4gdW5tYXBCdWZmZXIoR0NHTGVudW0gdGFy
Z2V0KSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbm1hcEJ1ZmZl
cih0YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVubWFwQnVmZmVy
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3Mp
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
KyAgICB9CisKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50
IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dM
aW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFz
aywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNy
Y1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5h
bAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2
ZWwsIGxheWVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAg
IHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZpbmFsCisgICAgeworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZEJ1ZmZlcihzcmMpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCByZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkgZmluYWwKKyAgICB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlM0QodGFyZ2V0
LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIEdDR0xpbnQg
Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgZmluYWwKKyAgICB7CisgICAgICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CisgICAgfQorCisgICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xdWkobG9jYXRpb24sIHYwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpIGZpbmFsCisgICAgeworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwg
djAsIHYxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZv
aWQgdW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEs
IEdDR0x1aW50IHYyKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCB1bmlmb3JtNHVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIs
IEdDR0x1aW50IHYzKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdmVydGV4
QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6
LCBHQ0dMaW50IHcpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdmVydGV4QXR0
cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQg
eiwgR0NHTHVpbnQgdykgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgdmVydGV4
QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsCisgICAgeworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
SVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAg
dm9pZCBkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NH
THVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBm
aW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWwKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICB2
b2lkIGRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsCisgICAgeworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUXVlcnko
cXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgR0NH
TGJvb2xlYW4gaXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbAorICAgIHsKKyAg
ICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5KHF1ZXJ5KSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luUXVlcnko
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbAorICAgIHsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnko
dGFyZ2V0LCBxdWVyeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWwKKyAgICB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgUGxhdGZvcm1H
TE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnkodGFyZ2V0LCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAg
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9i
amVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbAorICAg
IHsKKyAgICAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aShxdWVy
eSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2Jq
ZWN0dWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbAorICAgIHsKKyAgICAgICAgdWludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAg
ICB9CisKKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBm
aW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBs
ZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVy
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3Mp
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
KyAgICB9CisKKyAgICB2b2lkIGJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRl
cmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQg
cGFyYW0pIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIEdDR0xmbG9hdCBnZXRT
YW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
KSBmaW5hbAorICAgIHsKKyAgICAgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBh
cmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cisg
ICAgfQorCisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbAorICAgIHsKKyAgICAgICAgaW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAg
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBHQ0dMc3luYyBmZW5jZVN5bmMo
R0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsCisgICAgeworICAg
ICAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJl
dHVyblZhbHVlKSk7CisgICAgfQorCisgICAgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jIGFy
ZzApIGZpbmFsCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYyhzdGF0
aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmM6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIHZvaWQg
ZGVsZXRlU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBHQ0dMZW51bSBjbGllbnRXYWl0U3luYyhH
Q0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5j
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSks
IGZsYWdzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CisgICAgfQorCisgICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0
ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSBmaW5hbAorICAgIHsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0
aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICBHQ0dMaW50IGdldFN5bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVt
IHBuYW1lKSBmaW5hbAorICAgIHsKKyAgICAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
eW5jaShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2k6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7
CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWwKKyAgICB7CisgICAgICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJhY2so
aWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgR0NHTGJv
b2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbAorICAg
IHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOwor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBiZWdp
blRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpIGZpbmFsCisgICAgewor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbAorICAg
IHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFRy
YW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9
CisKKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1v
ZGUpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVm
ZmVyTW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbAorICAgIHsKKyAgICAgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgIH0KKworICAgIHZvaWQgcGF1c2VU
cmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCByZXN1bWVUcmFuc2Zv
cm1GZWVkYmFjaygpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsCisgICAgeworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRh
cmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihzaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICB9CisKKyAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmlu
YWwKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZh
bHVlOworICAgIH0KKworICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVu
dW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSBmaW5hbAorICAgIHsKKyAgICAgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlm
b3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zOjpSZXBseShwYXJhbXMpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICB9CisKKyAgICBHQ0dMdWludCBnZXRV
bmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYg
dW5pZm9ybUJsb2NrTmFtZSkgZmluYWwKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4OjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOwor
ICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgU3RyaW5nIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCkgZmluYWwKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
X3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfQorCisgICAgdm9pZCB1bmlm
b3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsCisgICAgewor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybUJs
b2NrQmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGlu
ZyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5h
bAorICAgIHsKKyAgICAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBs
eTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUs
IHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdjo6UmVwbHkocGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMV9zKTsKKyAgICAgICAgc3RkOjpjb3B5KHBhcmFtc1JlcGx5LmRhdGEo
KSwgcGFyYW1zUmVwbHkuZGF0YSgpICsgcGFyYW1zLmJ1ZlNpemUsIHBhcmFtcy5kYXRhKTsKKyAg
ICB9CisKKyAgICBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBmaW5hbAorICAg
IHsKKyAgICAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMV9zKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIHZv
aWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NH
TGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwg
R0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVt
IGZpbHRlcikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBz
cmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkgZmluYWwKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICB9
CisKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH0KKworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDFfcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZ2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWwKKyAg
ICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxX3MpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cisg
ICAgfQorCisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzAp
IGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmIGFyZzApIGZpbmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpIGZp
bmFsCisgICAgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIH0KKworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWwKKyAgICB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
fQorCisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcx
LCBjb25zdCBHQ0dMZmxvYXQqIHYpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAg
dm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcxLCBjb25zdCBH
Q0dMaW50KiB2KSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9y
bTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYXJnMSwgY29uc3QgR0NHTGZsb2F0KiB2
KSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYXJnMSwgY29uc3QgR0NHTGludCogdikgZmluYWwgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGFyZzEsIGNvbnN0IEdDR0xmbG9hdCogdikgZmluYWwgeyBub3RJbXBsZW1l
bnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGFyZzEsIGNvbnN0IEdDR0xpbnQqIHYpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQor
CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcxLCBj
b25zdCBHQ0dMZmxvYXQqIHYpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9p
ZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBhcmcxLCBjb25zdCBHQ0dM
aW50KiB2KSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYXJnMSwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7
IH0KKworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYXJnMSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBm
aW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYXJnMSwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAg
IHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxvYXQqIHZh
bHVlcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHZlcnRleEF0dHJp
YjJmdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTGZsb2F0KiB2YWx1ZXMpIGZpbmFsIHsgbm90
SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdDR0xmbG9hdCogdmFsdWVzKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0K
KworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBjb25zdCBHQ0dMZmxv
YXQqIHZhbHVlcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgY29uc3QgR0NHTHZvaWQq
IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAg
IHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWlwdHIgYXJnMiwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIGZpbmFsIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQorCisgICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHZvaWQqIGRhdGEpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisg
ICAgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NHTHZv
aWQqIHBpeGVscykgZmluYWwgCisgICAgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgZmluYWwgeyBub3RJbXBsZW1lbnRl
ZCgpOyB9CisKKyAgICBHQ0dMdm9pZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2Vz
cykgZmluYWwgCisgICAgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHQ0dMZW51bSogYXR0YWNo
bWVudHMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBpbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbnVtQXR0YWNobWVudHMs
IGNvbnN0IEdDR0xlbnVtKiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9
CisKKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlm
b3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorCisgICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsg
bm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3Jt
NHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQor
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtTWF0cml4
NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5h
bCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWwgeyBub3RJ
bXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90SW1wbGVtZW50
ZWQoKTsgfQorCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBjb25z
dCBHQ0dMaW50KiB2YWx1ZXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgY29uc3QgR0NHTHVpbnQqIHZhbHVl
cykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdD
R0xzaXplaSBuLCBjb25zdCBHQ0dMZW51bSogYnVmcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgp
OyB9CisKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIGNvbnN0IEdDR0xpbnQqIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KSBmaW5h
bCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdDR0x1aW50KiB2YWx1ZXMsIEdD
R0x1aW50IHNyY09mZnNldCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lk
IGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIGNvbnN0
IEdDR0xmbG9hdCogdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpIGZpbmFsIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
IGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9p
ZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90SW1wbGVtZW50
ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZp
bmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5p
Zm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMaW50KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9
CisKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsIHsgbm90
SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xm
bG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFs
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWwgeyBub3RJbXBs
ZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7
IH0KKworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVt
KiBidWZzKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgcmVhZFBpeGVs
c1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSog
cm93cywgR0NHTHZvaWQqIHBpeGVscykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAg
ICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFsIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQorCisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxv
YXQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIHRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1l
bnRlZCgpOyB9CisKKyAgICB2b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFs
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9p
ZCogZGF0YSkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgZmluYWwgeyBub3RJbXBsZW1lbnRl
ZCgpOyB9CisKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZv
aWQqIGRhdGEpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0x2b2lkKiBkYXRhKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdGV4
SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbCB7IG5v
dEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFsIHsgbm90SW1wbGVtZW50
ZWQoKTsgfQorCisgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBn
ZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBm
aW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbCB7IG5vdElt
cGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYklp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1w
bGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorCisgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0
KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBzYW1wbGVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbCB7IG5vdEltcGxl
bWVudGVkKCk7IH0KKworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQqIHBhcmFtKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMp
IGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRC
b29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmlu
YWwgLyogTk9MSU5UICovIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSBmaW5hbCB7
IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBm
aW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9pZCBnZXRQb2ludGVy
dlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQorCisgICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJv
b2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorCisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lk
IGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbCB7IG5v
dEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xpbnQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lk
IHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWwgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVk
KCk7IH0KKworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBm
aW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgZmluYWwgeyBub3RJbXBsZW1lbnRlZCgp
OyB9CisKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisg
ICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdm9p
ZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWwgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWwgeyBub3RJbXBs
ZW1lbnRlZCgpOyB9CisKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbCB7IG5vdEltcGxlbWVudGVkKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBiOGE0NzIyMzQxNmRhMjVkOGIyYzFi
MjUzZjBhYjBmMzM3OWE5MTAxLi43ODllZTc3NmVkNWY5Y2YyNjc1NmRjYmJiMWIzODU3MmVkZjQ2
ODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC04MTcsNyArODE3LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xp
bnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCitib29sIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdD
R0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAKaW5k
ZXggOWE5MTgyZTA2MzU5ZWI2OTU0ZGNkOTFiZDE1MDA0MjIyZTM2NDg2MS4uNzAwOTIzMjI4MzM4
MDRhNTRlNmE2YjBhNTljYzNhODI0MWNkMzljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcApAQCAtMjks
OSArMjksMTEgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFVTRShBVURJT19TRVNTSU9O
KQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHku
aCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGI5YTAxYjA2
MjVlM2I3YzdmMDExODRhODNjMzZlNTQ5MTIyZjA5YTguLjE1MTcyYzlmNjIxMGJmNGY5NWUwYzZh
YTc5MzZjNjIyZWE4ZDkzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC00NCw3
ICs0NCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNv
ZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZS5oCmluZGV4IGI3Y2VkYjdlODM5NGY5OWJhOWNmYjBhMmFjMmE5NzgxMWIz
YzQxOGYuLjc3MDJkMWI3MDJkMTIxNjJlMTlhYjlhNmRhYTRjNTk3NTE4NjJmMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZS5oCkBAIC0zMywxMCArMzMsNiBAQAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luYmFuZFRleHRUcmFja1By
aXZhdGUuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRHZW5lcmljQ3VlOwogY2xhc3MgSVNPV2Vi
VlRUQ3VlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMGM2ZjczZDA3MTQ0YjU2MjY3NjkzNjdjOWYyYTNh
NDAxN2VhZGU4MC4uMTY4ZWY0MzVkZGU1NjE0ZDMwZjNiZTI4NjcwYTQ3YWVkNjE2ZGUwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NQcm94
eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDczOWE0OTZlZjQ5NGNiNGE2MTg1NjZmZmM2NGQ0
YTI2NGE3NGU5ZDAuLjRiZWFlMDYyMzE3YmEyNmE2MDY4M2YxZjQ1MTIzM2ViMTA3M2FhN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNv
ZGVySWRlbnRpZmllci5oIgpAQCAtNDMsNyArNDQsNiBAQCB1c2luZyBDVlBpeGVsQnVmZmVyUG9v
bFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKIAogbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmgKaW5kZXggMmRhZDIwMzg0MmYwZTU1M2ZlM2I0NjI0NDFlZTk0ZmEy
NjQ5M2ExMS4uYzI4Y2U3ZjJlMTdlODlhOGU1MTg2YTc3MDZhMmU4YTQ0ZjZiN2UzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVu
ZGxlQnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVu
dFR5cGVzLmg+CkBAIC01NCw3ICs1NSw2IEBAIGNsYXNzIERhdGE7CiBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIERlY29kZXI7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjEsNCArMTYxLDMgQEAgcHJpdmF0ZToKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMw
NjRlOWM0YWZjYzJjZmY1NGEzMjVlMjUzMWVkMDUyMmEwMDEzOTMuLmI5Nzk0NjU5ZWFiZDE4NGIz
ODljMDZkMTMyZjhjNDJmODA1MjNjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zNCwx
MCArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4NjU3MTFiMzY2YzI4ZGY0ODRiNGNkYzA3
YWEzZmNmM2RjZWJmMmY2Li42OTQ4OTZjOTk3YTQ5NDBkYmFiMmRhNzY1NzgyMGEyNzhhZjFkYzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4M2Uz
NzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUzOTY2ZmIuLjdlMWQ0OTk0NzE1Zjg4NDljZThi
ZmU1ZWMzNDU1ZDQ3Mzc3ODAwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTM2LDcgKzM3
LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IDk0ZWYwZDFmY2UyZTYwMWRmNDQ5Y2ZmODUzOWZiZDE2NDc5M2ViZTIuLmZmNjlmNTYwOWU1
NzdjYWM3NzdmMDRhZmE3NGFmMjEwNzQ4NjRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNiw3ICsyNiw2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgog
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5k
ZXggZjUzNDc4MzQ3ZTc3NWRmMzdlYTk3NjM0YzIzMzA5MzJiNGExNGQyOC4uYWQ3ZmYxODdkYmI0
MzUzYjllZDNiYzU3YzViYTJjNGFhNGU4Y2ZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9OZXR3b3JrU2VuZFF1ZXVlLmg+CkBAIC0zOCw3ICszOSw2IEBACiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBhZjI0MmNkMmI1OTVh
YzRhNDQ4NDI5N2JlNWQ1Y2ZlMThkNDhmMzI0Li43ZDAwNzM2OWI5Y2NlODViOGYwNTQ1N2Q2NjZk
MWU0NDUxYjk2YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCmluZGV4IGRkMDgyMDEwNzEyYjlmNWRiOWZl
YmQ4OGRhNjY5YjZkZjYxZDBmMjkuLmI0M2NiMmVmYWQxZTEwMWVlMjY1YjkzZGRlOWIwNjEyNzM2
YTA5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRs
ZS5oPgpAQCAtMzMsNyArMzQsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9u
OwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENTb2NrZXQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAppbmRleCBjYjQ4ZTA1NzM0OGEyZTg2NmIwOTFmZjVh
Yzg3MjYwNWNhMTkyZGQ1Li4zMjNmMjVlZThmZDgxYjAyNjMwZDJmMjU5YTFhZmI4ODRiNGNmNWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDU29ja2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldC5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmgKaW5kZXggZWE1MzU5NjAxMDlmZWU2ZGM0ODA1Y2Y2ODkxMjc5OGVlOWFiNmYwMy4uNDBi
NGM4ZjIxMjljZjEyMzNhMWIzMWI4NTEyN2U3YTdlOWUzZDdjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNjAsMTAgKzYwLDYg
QEAgT0JKQ19DTEFTUyBQREZTZWxlY3Rpb247CiBPQkpDX0NMQVNTIFdLUERGUGx1Z2luQWNjZXNz
aWJpbGl0eU9iamVjdDsKIE9CSkNfQ0xBU1MgV0tQREZMYXllckNvbnRyb2xsZXJEZWxlZ2F0ZTsK
IAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggMzM0NzY0YWNlMmE4YzQzODU4OGIzMTk4MDYyZjM2NWEzNjZlOGJk
YS4uNWIyNzMyZjJjNGU0YzQ4M2ViZjg0MDg3YThjMjYzNGU5ZDU0OTIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTEwOCw2ICsxMDgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtOTEyLDYgKzkxNiwyMiBAQCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBSZQogICAgIHJldHVybiBtX3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisK
K1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
IFBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0Cit7CisgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJH
TCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBVTlVTRURfVkFSSUFCTEUoaG9zdFdp
bmRvd0Rpc3BsYXlJRCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShhdHRyaWJ1dGVzKTsKKyNlbHNlCisgICAgcmV0
dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXll
cihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGVj
MTRmZGIxNmM4MWNjMTI3MDZjZmNiNTllOTlmMmNkMzM3NjBkYzguLjEyMTVmOTJhMDMxOTU4MGEw
ZGRkOTIxMDUxM2RkMmQ1ZDMwNTA1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI0Myw3ICsy
NDMsMTEgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBv
c2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQpIGNvbnN0IGZpbmFsOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCisjZW5k
aWYKKwogCiAgICAgQ29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJp
Z2dlcnMoKSBjb25zdCBmaW5hbAogICAgIHsKQEAgLTQwMyw2ICs0MDcsNyBAQCBwcml2YXRlOgog
CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJh
ciB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzVmVydGlj
YWxTY3JvbGxiYXIgeyBmYWxzZSB9OworCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5NTcwZWMz
YmEwNGFlM2E3MDM4MzQ5NTg4MGQwM2IyMjViZDYxZDJiLi43YjA3ZGY2OTI1OTk5NzU2MzI4Mzg1
YzJjM2MzZTQxMmM0ZjcwODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNDIyLDYgKzQyMiw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICAgICAsIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91
bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRSZW5kZXJET01JbkdQ
VVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB9CiAgICAg
LCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUGxheU1l
ZGlhSW5HUFVQcm9jZXNzIH0KKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgLCBtX3Nob3VsZFJlbmRl
cldlYkdMSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJv
Y2Vzc30KKyNlbmRpZgogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAsIG1fbmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgcGFyYW1ldGVycy5uZWVkc0luQXBwQnJvd3Nl
clByaXZhY3lRdWlya3MgfQogI2VuZGlmCkBAIC03MjUsNyArNzI4LDYgQEAgV2ViUGFnZTo6V2Vi
UGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogICAgIGlmIChXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKiBtYW5hZ2VyID0g
d2ViUHJvY2Vzcy5zdXBwbGVtZW50PFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI+KCkpCiAgICAg
ICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1hbmFn
ZXItPm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSgpKTsKICNlbmRpZgotICAgIAogICAgIGlmIChw
YXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3RvciAhPSAxKQogICAgICAgICBzY2FsZVZpZXcocGFyYW1l
dGVycy52aWV3U2NhbGVGYWN0b3IpOwogCkBAIC0zNzg3LDYgKzM3ODksOSBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5k
ZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5k
ZXJET01JbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQ
VVByb2Nlc3NGb3JNZWRpYShtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7CisjaWYgRU5B
QkxFKFdFQkdMKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NG
b3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKKyNlbmRpZgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpAQCAtNjk4NCw2ICs2OTg5LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzeW5jaHJvbml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJv
Y2VzcygpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobV9pZGVudGlmaWVyLCBtX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJucyksIDApOwogfQogCisKICNpZiBFTkFCTEUoTUVESUFfVVNBR0Up
CiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29u
c3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGE3NDhiZTIxMzVlM2QyMmI0MGRiMDVhMTYzYWVlMDBhZDUzNDI0ZDEuLjJk
NWY0NDFjZTQzZDgzYzE1OTUwOWJlYWYwNGE1ZDI3OGZlMGUxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiQ29udGVu
dEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgi
CiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBAIC0xNjAsNyArMTYxLDYgQEAgY2xhc3MgQXJy
YXk7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0x
ODIzLDYgKzE4MjMsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJDYW52YXNJ
bkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJET01JbkdQVVBy
b2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3Mg
eyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fc2hvdWxkUmVuZGVyV2Vi
R0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgIGJvb2wgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBmYWxz
ZSB9OwogI2VuZGlmCkBAIC0yMTgwLDQgKzIxODMsMyBAQCBpbmxpbmUgYm9vbCBXZWJQYWdlOjpw
bGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBj
bwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjJmMjI4MjJjN2IyMjNmY2E1OWY5NTU3M2QxMWRjOTli
MTAzNDgxMS4uNTgyZWU3NWQ5OWE3NDI0MjU0YTM5ZGFiMjA2Zjg0NjE3MzRhZDlhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk0Miw2ICsxOTQyLDIwIEBA
IGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJlbmRlcmluZ1B1
cnBvc2UgcHVycG9zZSkKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCisjaWYgRU5BQkxF
KFdFQkdMKQordm9pZCBXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCB1
c2VHUFVQcm9jZXNzRm9yV2ViR0wpCit7CisgICAgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgPSB1
c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVt
b3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdAoreworICAgIHJldHVybiBtX3VzZUdQVVByb2Nl
c3NGb3JXZWJHTDsKK30KKworI2VuZGlmCisKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU5YzQ3ZGI0YzQ0N2MwZjRhYjYy
N2MwOTRiNWY2OGRiNTY1YTlhNmMuLjFhNTg1YWMxNDJiMTgzMjc2NGM0ZDg1Mzc5MDkwYjJjYmNh
NzNjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzQ3LDYgKzM0
NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5n
KGJvb2wpOwogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wpOwogICAgIGJv
b2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2Up
OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChi
b29sKTsKKyAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkgY29uc3Q7
CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4Nyw2ICs2OTEsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nIHsgZmFs
c2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYSB7IGZhbHNlIH07CisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgeyBmYWxzZSB9OworI2Vu
ZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTYzYmNkNGJjNDU0Y2Y0YTViM2Q5N2Y5YTUyNzEw
ZjlhNmEzZGRjYy4uOWZmNmVhZjY0ZTQ0M2JiM2JkZWE2YmVmNDY0ZmZiMWQ5YjdhODlmOCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIwLTExLTAzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0Nv
bnRleHRHTCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVtZW50YXRpb24g
aXMgdXNpbmcgV2ViS2l0IElQQyBhbmQgaXMgaW5jb21wbGV0ZS4KKworICAgICAgICBBZGQgdGhl
IGNvZGUgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAg
ICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDogQWRkZWQuCisKIDIwMjAtMTEtMjEgIEpp
ZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIElt
cGxlbWVudCBTUEkgZm9yIEF1dGhlbnRpY2F0aW9uU2VydmljZXMuRnJhbWV3b3JrCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg2ZGEyNjc3MmQ0OTdjYmU3NjQ0Y2FkNDdh
ZTMwOTg3ZDkzYmRjNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbApAQCAtMCwwICsxLDgzNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyAt
Ki0gY29kaW5nOiB1dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgVGhpcyBzY3Jp
cHQgZ2VuZXJhdGVzIHRoZSBzb3VyY2UgZmlsZXMgZm9yIFdlYkdMIEdQVSBwcm9jZXNzIElQQy4K
KyMKKyMgcHl0aG9uMyAtbSBibGFjayAtbCAxNTAgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsCisjIHB5dGhvbjMgLW0gbXlweSBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2Vi
Z2wKKyMKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0
IHN5cworCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgRGljdCwgSXRlcmFibGUsIENhbGxhYmxl
LCBUdXBsZSwgU2V0LCBPcHRpb25hbAorCityb290X2RpciA9IChwYXRobGliLlBhdGgoX19maWxl
X18pLnBhcmVudCAvICIuLiIgLyAiLi4iKS5yZXNvbHZlKCkKK2Z1bmN0aW9uc19pbnB1dF9mbnMg
PSBbCisgICAgcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAi
Z3JhcGhpY3MiIC8gIkdyYXBoaWNzQ29udGV4dEdMLmgiLAorICAgIHJvb3RfZGlyIC8gIlNvdXJj
ZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRlbnNpb25zR0wu
aCIsCitdCit0eXBlc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIg
LyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJHcmFwaGljc1R5cGVzR0wuaCIKKwordGVtcGxh
dGVfcHJlYW1ibGUgPSAiIiIvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyIiIgorY29udGV4dF9mdW5jdGlvbnNf
Zm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAiZ3Jh
cGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiCitj
b250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAg
ICsgIiIiLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0
aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgor
I3ByYWdtYSBvbmNlCit7fQorCisiIiIKKykKK2NvbnRleHRfbWVzc2FnZXNfZm4gPSByb290X2Rp
ciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3MiIC8gIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIgorY29udGV4dF9tZXNzYWdlc190ZW1w
bGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcg
ZXh0ZW5zaW9uKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91
cworICAgIHZvaWQgU2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7fQorfX0KKworI2VuZGlm
CisKKyIiIgorKQorCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiA9IHJvb3RfZGlyIC8gIlNv
dXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmgiCitjb250ZXh0
X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAg
ICsgIiIiCisvLyBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwdWJsaWMgc2Vj
dGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgaW1wbGVtZW50YXRp
b25zLgorI3ByYWdtYSBvbmNlCit7fQorIiIiCispCisKKworZGVmIHdyaXRlX2ZpbGUoZm4sIG5l
d19jb250ZW50cyk6CisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAg
ICAgICAgICBpZiBmLnJlYWQoKSA9PSBuZXdfY29udGVudHM6CisgICAgICAgICAgICAgICAgcmV0
dXJuCisgICAgZXhjZXB0OgorICAgICAgICBwYXNzCisgICAgd2l0aCBvcGVuKGZuLCAidyIpIGFz
IGY6CisgICAgICAgIGYud3JpdGUobmV3X2NvbnRlbnRzKQorCisKK2NsYXNzIGNwcF90eXBlKG9i
amVjdCk6CisgICAgdHlwZV9uYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBl
X25hbWVfc3BlYzogc3RyKToKKyAgICAgICAgc2VsZi50eXBlX25hbWUgPSB0eXBlX25hbWVfc3Bl
Yy5zdHJpcCgpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
dHlwZV9uYW1lCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNo
KHNlbGYudHlwZV9uYW1lKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAg
ICByZXR1cm4gc2VsZi50eXBlX25hbWUgPT0gb3RoZXIudHlwZV9uYW1lCisKKyAgICBkZWYgaXNf
dm9pZChzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUgPT0gInZv
aWQiIG9yIHNlbGYudHlwZV9uYW1lID09ICJHQ0dMdm9pZCIKKworICAgIGRlZiBpc19vdXRwdXRf
YnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgaWYgc2VsZi50eXBlX25hbWUuc3Rh
cnRzd2l0aCgiR0NHTFNwYW4iKSBhbmQgbm90IHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoIkdD
R0xTcGFuPGNvbnN0ICIpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2Vs
Zi5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgZGVmIGdldF9idWZmZXJfZWxlbWVudF9wb2ludGVyX3R5cGUoc2VsZikg
LT4gJ2NwcF90eXBlJzoKKyAgICAgICAgdHlwZSwgXyA9IHNlbGYuZ2V0X2J1ZmZlcl9lbGVtZW50
X3R5cGVfYW5kX2FyaXR5KCkKKyAgICAgICAgcmV0dXJuIHR5cGUuZ2V0X3BvaW50ZXJfdHlwZSgp
CisKKyAgICBkZWYgZ2V0X2J1ZmZlcl9lbGVtZW50X3R5cGVfYW5kX2FyaXR5KHNlbGYpIC0+IFR1
cGxlWydjcHBfdHlwZScsIE9wdGlvbmFsW2ludF1dOgorICAgICAgICBtID0gcmUubWF0Y2gociJb
XHc6XSs8KFtcdzpdKyk+Iiwgc2VsZi50eXBlX25hbWUpCisgICAgICAgIGlmIG06CisgICAgICAg
ICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKG1bMV0pLCBOb25lCisgICAgICAgIG0gPSByZS5tYXRj
aChyIltcdzpdKzwoW1x3Ol0rKSwgKFxkKyk+Iiwgc2VsZi50eXBlX25hbWUpCisgICAgICAgIGlm
IG06CisgICAgICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKG1bMV0pLCBpbnQobVsyXSkKKyAg
ICAgICAgYXNzZXJ0KEZhbHNlKQorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKCJVTkVYUEVD
VEVEIikKKworICAgIGRlZiBpc19wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVy
biAiKiIgaW4gc2VsZi50eXBlX25hbWUgYW5kICJjb25zdCAiIG5vdCBpbiBzZWxmLnR5cGVfbmFt
ZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgbSA9
IHJlLm1hdGNoKHIiY29uc3QgKC4rKVwqIiwgc2VsZi50eXBlX25hbWUpCisgICAgICAgIHJldHVy
biBtIGlzIG5vdCBOb25lCisKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiAiJiIgaW4gc2VsZi50eXBlX25hbWUgYW5kICJjb25zdCAiIG5vdCBpbiBz
ZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKSAtPiBib29s
OgorICAgICAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiIsIHNlbGYudHlwZV9uYW1lKQor
ICAgICAgICByZXR1cm4gbSBpcyBub3QgTm9uZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4g
Ym9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoIkdDR0xTcGFu
IikKKworICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIHNlbGYuaXNfc3BhbigpIGFuZCAiLCIgbm90IGluIHNlbGYudHlwZV9uYW1lCisKKyAgICBk
ZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgbSA9IHJlLm1h
dGNoKHIiY29uc3QgKC4rKSYiLCBzZWxmLnR5cGVfbmFtZSkKKyAgICAgICAgaWYgbToKKyAgICAg
ICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIi
Y29uc3QgKC4rKVwqIiwgc2VsZi50eXBlX25hbWUpCisgICAgICAgIGlmIG06CisgICAgICAgICAg
ICByZXR1cm4gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKylc
KiIsIHNlbGYudHlwZV9uYW1lKQorICAgICAgICBpZiBtOgorICAgICAgICAgICAgcmV0dXJuIGdl
dF9jcHBfdHlwZShtWzFdKQorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiIsIHNlbGYudHlw
ZV9uYW1lKQorICAgICAgICBpZiBtOgorICAgICAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZSht
WzFdKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9ydmFsdWVfdHlwZShzZWxm
KSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9u
YW1lICsgIiYmIikKKworICAgIGRlZiBnZXRfcG9pbnRlcl90eXBlKHNlbGYpIC0+ICdjcHBfdHlw
ZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiKiIpCisK
K2NsYXNzIGNwcF9leHByKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBleHByOiBz
dHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgZXhwcjogc3RyKToK
KyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLmV4cHIgPSBleHByCisKKyAg
ICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwcgorCisKK0NwcEV4
cHJDb252ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdCisK
KworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhy
b3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBj
cHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcihleHBy
OiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4g
Y3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9PihyZWludGVycHJl
dF9jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0
dXJuIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcgorCitkZWYgY3BwX3JlaW50ZXJw
cmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUp
IC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNw
cF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90
eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYicmVpbnRl
cnByZXRfY2FzdDx7dHlwZS50eXBlX25hbWV9PihzdGF0aWNfY2FzdDx7c3RyKGNhc3RfdGhyb3Vn
aF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2Fz
dF90b19wb2ludGVyCisKK2RlZiBjcHBfc3RhdGljX2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6
IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0
aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9Pih7c3RyKGV4cHIpfSkiKQorCisKK2RlZiBjcHBfaW1w
bGljaXRfY2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgor
ICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBzdHIoZXhwcikpCisKKworZGVmIGNwcF9hcnJheV9y
ZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBl
KSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2J1ZmZl
cl9lbGVtZW50X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYie3N0
cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDx7ZWxlbWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4
cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXplKCkpIikKKworCitkZWYgY3BwX21vdmVfZXhw
cihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKGV4cHIu
dHlwZS5nZXRfcnZhbHVlX3R5cGUoKSwgZiJXVEZNb3ZlKHtzdHIoZXhwcil9KSIpCisKKworY3Bw
X3R5cGVzOiBEaWN0W3N0ciwgY3BwX3R5cGVdID0ge30KKworCitkZWYgZ2V0X2NwcF90eXBlKHR5
cGVfbmFtZTogc3RyKToKKyAgICByID0gY3BwX3R5cGVzLmdldCh0eXBlX25hbWUsIE5vbmUpCisg
ICAgaWYgbm90IHI6CisgICAgICAgIHIgPSBjcHBfdHlwZXNbdHlwZV9uYW1lXSA9IGNwcF90eXBl
KHR5cGVfbmFtZSkKKyAgICByZXR1cm4gcgorCisKK2NsYXNzIGNwcF9hcmcob2JqZWN0KToKKyAg
ICBuYW1lOiBzdHIKKyAgICB0eXBlOiBjcHBfdHlwZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisg
ICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gInt9IHt9Ii5mb3JtYXQoc2VsZi50eXBlLCBzZWxmLm5hbWUpCisKKworY2xhc3Mg
Y3BwX2RlY2wob2JqZWN0KToKKyAgICB0eXBlOiBjcHBfdHlwZQorICAgIG5hbWU6IHN0cgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAg
ICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5h
bWV9IgorCisKK2NsYXNzIGNwcF9hcmdfbGlzdChvYmplY3QpOgorICAgIGFyZ3M6IExpc3RbY3Bw
X2FyZ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddKToKKyAg
ICAgICAgc2VsZi5hcmdzID0gYXJncworCisgICAgZGVmIG5hbWVzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gIiwgIi5qb2luKGEubmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhw
cnMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2V4cHIoYS50eXBlLCBhLm5hbWUpIGZvciBh
IGluIHNlbGYuYXJnc10KKworICAgIGRlZiBkZWNscyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtj
cHBfZGVjbChhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIHR5
cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2EudHlwZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisK
KyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihzdHIoYSkg
Zm9yIGEgaW4gc2VsZi5hcmdzKQorCisKK2NsYXNzIGNwcF9mdW5jKG9iamVjdCk6CisgICAgbmFt
ZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBl
CisgICAgaXNfZXh0ZW5zaW9uOiBib29sCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZTog
c3RyLCByZXR1cm5fdHlwZTogY3BwX3R5cGUsIGFyZ3M6IGNwcF9hcmdfbGlzdCwgaXNfZXh0ZW5z
aW9uOiBib29sKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnJldHVy
bl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBz
ZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgIHJldHVybiBmIntzZWxmLnJldHVybl90eXBlfSB7c2VsZi5uYW1lfSB7c3RyKHNl
bGYuYXJncyl9IgorCisgICAgZGVmIGdldF9hcmdzX2NhdGVnb3JpZXMoc2VsZikgLT4gVHVwbGVb
TGlzdFtjcHBfYXJnXSwgTGlzdFtjcHBfYXJnXV06CisgICAgICAgIGluX2FyZ3MgPSBbXQorICAg
ICAgICBvdXRfYXJncyA9IFtdCisgICAgICAgIGZvciBhIGluIHNlbGYuYXJncy5hcmdzOgorICAg
ICAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICBvdXRfYXJn
cyArPSBbYV0KKyAgICAgICAgICAgIGVsaWYgYS50eXBlLmlzX291dHB1dF9idWZmZXJfdHlwZSgp
OgorICAgICAgICAgICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxpZiBhLm5h
bWUgPT0gImJ1ZlNpemUiOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsaWYg
YS50eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAgICAgICAgICAgIG91dF9hcmdzICs9IFthXQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbl9hcmdzICs9IFthXQorICAgICAg
ICByZXR1cm4gaW5fYXJncywgb3V0X2FyZ3MKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZF90eXBl
KHNlbGYsIHR5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgdHlwZS5pc19jb25zdF9wb2ludGVy
KCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAg
IGRlZiBpc19pbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyIgaW4gYS50eXBlLnR5cGVfbmFt
ZSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgICNpZiAiR0NHTHN5bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1lOgorICAg
ICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkoYS5uYW1lID09ICJidWZTaXpl
IiBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgaWYgYW55KGEudHlwZS5pc19wb2ludGVyKCkgYW5kIGEudHlwZS5nZXRfdmFsdWVfdHlw
ZSgpLmlzX3ZvaWQoKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoYS50
eXBlKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgaWYgc2VsZi5yZXR1cm5fdHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxm
LnJldHVybl90eXBlKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4g
VHJ1ZQorCisKK3dlYmtpdF9pcGNfdHlwZXM6IERpY3RbY3BwX3R5cGUsIGNwcF90eXBlXSA9IHt9
CisKK3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyczogRGljdFtUdXBsZVtjcHBfdHlwZSwgY3Bw
X3R5cGVdLCBDcHBFeHByQ29udmVydGVyXSA9IHt9CisKKworZGVmIHdlYmtpdF9pcGNfY29udmVy
dF9leHByKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAg
IiIiIENvbnZlcnRzIGBleHByYCBvZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlwZWAgIiIiCisgICAg
Y29udmVydCA9IHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5nZXQoKGV4cHIudHlwZSwgdHlw
ZSksIE5vbmUpCisgICAgaWYgbm90IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4cHIudHlwZSA9PSB0
eXBlOgorICAgICAgICAgICAgcmV0dXJuIGV4cHIKKyAgICAgICAgY29udmVydCA9IGNwcF9pbXBs
aWNpdF9jYXN0CisgICAgcmV0dXJuIGNvbnZlcnQoZXhwciwgdHlwZSkKKworCitkZWYgd2Via2l0
X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKHR5cGUgOiBjcHBfdHlwZSkgLT4gY3BwX3R5cGU6
CisgICAgcHJpbnQodHlwZSkKKyAgICBlbGVtZW50X3R5cGUsIGFyaXR5ID0gdHlwZS5nZXRfYnVm
ZmVyX2VsZW1lbnRfdHlwZV9hbmRfYXJpdHkoKQorICAgIHdlYmtpdF9pcGNfZWxlbWVudF90eXBl
ID0gd2Via2l0X2lwY190eXBlc1tlbGVtZW50X3R5cGVdCisgICAgaWYgYXJpdHkgaXMgbm90IE5v
bmU6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtz
dHIod2Via2l0X2lwY19lbGVtZW50X3R5cGUpfSwge2FyaXR5fT4iKQorICAgIHJldHVybiBnZXRf
Y3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50X3R5
cGUpfT4iKQorCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZSh0eXBlOiBj
cHBfdHlwZSkgLT4gY3BwX3R5cGU6CisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAg
ICAgICAgaW5saW5lX2NhcGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiB0eXBlLnR5cGVfbmFtZSBl
bHNlIDQKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZSh0eXBlLnR5cGVfbmFtZS5yZXBsYWNl
KCJHQ0dMU3BhbiIsICJWZWN0b3IiKVs6LTFdICsgIiwgIiArIHN0cihpbmxpbmVfY2FwYWNpdHkp
ICsgIj4iKQorICAgIHJldHVybiBnZXRfY3BwX3R5cGUodHlwZS50eXBlX25hbWUucmVwbGFjZSgi
R0NHTFNwYW4iLCAic3RkOjphcnJheSIpKQorCisKKyMgU2VlIG1lc3NhZ2VzLnB5IGZ1bmN0aW9u
X3BhcmFtZXRlcl90eXBlCit3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXMgPSBzZXQoCisgICAgWyJ1
aW50OF90IiwgInVpbnQxNl90IiwgInVpbnQzMl90IiwgInVpbnQ2NF90IiwgImludDhfdCIsICJp
bnQxNl90IiwgImludDMyX3QiLCAiaW50NjRfdCIsICJib29sIiwgImZsb2F0IiwgImRvdWJsZSIg
ImJvb2wiXQorKQorCisKK2RlZiB3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBl
KHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfdHlwZToKKyAgICBpZiB0eXBlLnR5cGVfbmFtZSBpbiB3
ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVybiB0eXBlCisgICAgcmV0dXJu
IHR5cGUuZ2V0X3J2YWx1ZV90eXBlKCkKKworCitkZWYgd2Via2l0X2lwY19tb3ZlX2V4cHIoZXhw
cjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIGlmIGV4cHIudHlwZS50eXBlX25hbWUgaW4g
d2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1cm4gZXhwcgorICAgIHJldHVy
biBjcHBfbW92ZV9leHByKGV4cHIpCisKKworZGVmIHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYzog
Y3BwX2Z1bmMpOgorICAgIHJldHVybiBmdW5jLm5hbWVbMF0uY2FwaXRhbGl6ZSgpICsgZnVuYy5u
YW1lWzE6XQorCisKK2NsYXNzIHdlYmtpdF9pcGNfbXNnKG9iamVjdCk6CisgICAgbmFtZTogc3Ry
CisgICAgaW5fYXJnczogY3BwX2FyZ19saXN0CisgICAgb3V0X2FyZ3M6IGNwcF9hcmdfbGlzdAor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5u
YW1lID0gd2Via2l0X2lwY19tc2dfbmFtZShmdW5jKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJn
cyA9IGZ1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIGlwY19pbl9hcmdzID0gW2Nw
cF9hcmcod2Via2l0X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUpIGZvciBhIGluIGluX2FyZ3Nd
CisgICAgICAgIGlwY19vdXRfYXJncyA9IFtdCisgICAgICAgIGlmIG5vdCBmdW5jLnJldHVybl90
eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgICAgIHByaW50KGYie3N0cihmdW5jLnJldHVybl90eXBl
KX0gLXJldD4ge3dlYmtpdF9pcGNfdHlwZXNbZnVuYy5yZXR1cm5fdHlwZV19IikKKyAgICAgICAg
ICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2Z1bmMucmV0dXJu
X3R5cGVdLCAicmV0dXJuVmFsdWUiKV0KKyAgICAgICAgZm9yIGEgaW4gb3V0X2FyZ3M6CisgICAg
ICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY190eXBlc1thLnR5cGVd
LCBhLm5hbWUpXQorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAg
ICAgICAgICAgICAgIGlwY19pbl9hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZSgidWludDY0
X3QiKSwgZiJ7YS5uYW1lfVNpemUiKV0KKyAgICAgICAgc2VsZi5pbl9hcmdzID0gY3BwX2FyZ19s
aXN0KGlwY19pbl9hcmdzKQorICAgICAgICBzZWxmLm91dF9hcmdzID0gY3BwX2FyZ19saXN0KGlw
Y19vdXRfYXJncykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2Vs
Zi5vdXRfYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBmIlxuICAgIHZvaWQge3NlbGYu
bmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkgLT4gKHtzdHIoc2VsZi5vdXRfYXJncyl9KSBTeW5j
aHJvbm91cyIKKyAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNl
bGYuaW5fYXJncyl9KSIKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVj
dCk6CisgICAgbmFtZTogc3RyCisgICAgbXNnX25hbWU6IHN0cgorICAgIHJldHVybl90eXBlOiBj
cHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgcHJlX2NhbGxfc3RtdHM6IExp
c3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9zdG10czog
TGlzdFtzdHJdCisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBM
aXN0W2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVu
Yyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5tc2df
bmFtZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoY3BwX2Z1bmMpCisgICAgICAgIHNlbGYucmV0dXJu
X3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVu
Yy5hcmdzCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNh
bGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAg
IHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAg
IGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAg
ICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAg
ICAgIHNlbGYucHJvY2Vzc19pbl9hcmdzKGluX2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19v
dXRfYXJncyhvdXRfYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQorCisgICAgZGVm
IHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oW3N0cihp
KSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkKKyAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2lu
KHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgaXNfYXN5bmMgPSBzZWxm
LnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykgPT0gMAorICAgICAgICBp
ZiBpc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAg
ICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNn
X25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7IiwKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyAr
PSBbCisgICAgICAgICAgICAgICAgZiJzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDFfcyk7IiwKKyAgICAgICAgICAgIF0KKworICAg
IGRlZiBwcm9jZXNzX2luX2FyZ3Moc2VsZiwgaW5fYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAg
ICAgIGZvciBpIGluIGluX2FyZ3M6CisgICAgICAgICAgICBpZiBpLnR5cGUuaXNfY29uc3RfcG9p
bnRlcigpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhw
cihjcHBfZXhwcihpLnR5cGUsIGkubmFtZSksIHdlYmtpdF9pcGNfdHlwZXNbaS50eXBlXSldCisK
KyAgICBkZWYgcHJvY2Vzc19vdXRfYXJncyhzZWxmLCBvdXRfYXJnczogTGlzdFtjcHBfYXJnXSk6
CisgICAgICAgIGZvciBvIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaWYgby50eXBlLmlzX3Bv
aW50ZXIoKToKKyAgICAgICAgICAgICAgICB2YWx1ZV90eXBlID0gby50eXBlLmdldF92YWx1ZV90
eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBj
X3R5cGVzW3ZhbHVlX3R5cGVdCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lw
Y192YWx1ZV90eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJl
X2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9ID0ge3sgfX07Il0K
KyAgICAgICAgICAgICAgICBlID0gY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpCisgICAgICAgICAg
ICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2VdCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2Nh
bGxfc3RtdHMgKz0gW2YiKntvLm5hbWV9ID0ge3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHZh
bHVlX3R5cGUpfTsiXQorICAgICAgICAgICAgZWxpZiBvLnR5cGUuaXNfc3BhbigpOgorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQorICAg
ICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5
IikKKyAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBl
KX0ge3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtj
cHBfZXhwcih2LnR5cGUsIHYubmFtZSldCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5
bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBf
ZXhwcihnZXRfY3BwX3R5cGUoInNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KKyAgICAg
ICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbZiJzdGQ6OmNvcHkoe3YubmFtZX0u
ZGF0YSgpLCB7di5uYW1lfS5kYXRhKCkgKyB7by5uYW1lfS5idWZTaXplLCB7by5uYW1lfS5kYXRh
KTsiXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyAr
PSBbY3BwX2V4cHIoby50eXBlLCBvLm5hbWUpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3Zh
bHVlKHNlbGYsIHJldHVybl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBl
LmlzX3ZvaWQoKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpcGNfcmV0dXJuX3R5cGUg
PSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhw
ciA9IGNwcF9leHByKGlwY19yZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92
YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbcmV0
dXJuX3ZhbHVlX2V4cHJdICsgc2VsZi5vdXRfZXhwcnMKKyAgICAgICAgc2VsZi5wb3N0X2NhbGxf
c3RtdHMgKz0gW2YicmV0dXJuIHtzdHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3Zh
bHVlX2V4cHIsIHJldHVybl90eXBlKSl9OyJdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAg
ICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgor
ICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgICAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJl
X2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBzZWxmLnBvc3RfY2FsbF9zdG10cykKKyAg
ICAgICAgcmV0dXJuIGYiIiJcbiAgICB7c3RyKHNlbGYucmV0dXJuX3R5cGUpfSB7c2VsZi5uYW1l
fSh7c3RyKHNlbGYuYXJncyl9KSBmaW5hbHtub2xpbnR9CisgICAge3t7Ym9keX0KKyAgICB9fSIi
IgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKG9iamVjdCk6Cisg
ICAgbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2Fy
Z19saXN0CisgICAgYm9keTogTGlzdFtzdHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3Bw
X2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorCisg
ICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBz
ZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYuYm9keSA9IFsibm90SW1wbGVt
ZW50ZWQoKTsiXQorICAgICAgICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlwZS50eXBlX25hbWUgIT0g
InZvaWQiOgorICAgICAgICAgICAgc2VsZi5ib2R5ICs9IFsicmV0dXJuIHsgfTsiXQorCisgICAg
ZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLyogTk9MSU5UICovIiBpZiAi
XyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgaWYgbGVuKHNlbGYuYm9keSkgPD0gMToK
KyAgICAgICAgICAgIGJvZHkgPSBmInt7IHsgJyAnLmpvaW4oc2VsZi5ib2R5KSB9IH19IgorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgYm9keSA9ICJcbiAgICB7XG4gICAgICAgICIgKyAiXG4g
ICAgICAgICIuam9pbihzZWxmLmJvZHkpICsgIlxuICAgIH0iCisgICAgICAgIHJldHVybiBmIlxu
ICAgIHtzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0p
IGZpbmFse25vbGludH0ge2JvZHl9IgorCisKK2NsYXNzIGNvbnRleHRfcHJveHlfY3BwX3dlYmtp
dF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0
X2lwY19jcHBfcHJveHlfaW1wbF0KKyAgICB1bmltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3By
b3h5X3BsYWNlaG9sZGVyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJs
ZVtjcHBfZnVuY10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAg
IHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChmKSBmb3IgZiBpbiBmdW5j
c10KKyAgICAgICAgc2VsZi51bmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9s
ZGVyKGYpIGZvciBmIGluIHVuaW1wbGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBs
cyArIHNlbGYudW5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3Jp
dGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuLAorICAgICAg
ICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1
bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2Jq
ZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBpc19leHRl
bnNpb246IGJvb2wKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10
czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHBy
czogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgcmV0
dXJuX3ZhbHVlX2V4cHI6IE9wdGlvbmFsW2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5h
bWUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtdKQorICAgICAgICBzZWxmLmlz
X2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5w
b3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAg
c2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gTm9u
ZQorCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5
cGUpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdv
cmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3MuYXJncywgc2V0
KGluX2FyZ3MpLCBzZXQob3V0X2FyZ3MpKQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisK
KyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9u
cygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgorCisgICAgICAgIGluX2V4cHJzID0g
IiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQorICAgICAgICBpc19hc3lu
YyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAorCisgICAgICAgIGNhbGxfZXhwciA9IGYibV9j
b250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBpZiBub3Qgc2Vs
Zi5yZXR1cm5fdmFsdWVfZXhwcjoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7
Y2FsbF9leHByfTsiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRz
ICs9IFtmIntzdHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxfZXhwcn07Il0KKyAg
ICAgICAgaWYgbm90IGlzX2FzeW5jOgorICAgICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2lu
KHN0cihlKSBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYucG9zdF9j
YWxsX3N0bXRzICs9IFtmImNvbXBsZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9KTsiXQorCisgICAg
ZGVmIHByb2Nlc3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddLCBpbl9hcmdzOiBTZXRb
Y3BwX2FyZ10sIG91dF9hcmdzOiBTZXRbY3BwX2FyZ10pOgorICAgICAgICBmb3IgYSBpbiBhcmdz
OgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGlmIGEgaW4gaW5fYXJnczoKKyAgICAgICAg
ICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJnKGEpCisgICAgICAgIGlmIHNlbGYub3V0X2V4
cHJzOgorICAgICAgICAgICAgb3V0X2FyZ19kZWNscyA9ICIsICIuam9pbihmIntzdHIoZS50eXBl
KX0iIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3Mg
Kz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh7b3V0X2Fy
Z19kZWNsc30pPiYmIiksICJjb21wbGV0aW9uSGFuZGxlciIpXQorCisgICAgZGVmIHByb2Nlc3Nf
aW5fYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3Bw
X2FyZyh3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdlYmtpdF9pcGNfdHlw
ZXNbYS50eXBlXSksIGEubmFtZSldCisgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9p
cGNfY29udmVydF9leHByKGNwcF9leHByKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1l
KSwgYS50eXBlKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmcoc2VsZiwgYTogY3BwX2FyZyk6
CisgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICB2YWx1ZV9hcmcg
PSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVl
X2FyZy5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3Bw
X2V4cHIoYS50eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9IildCisgICAgICAgICAgICBlID0gY3Bw
X2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgd2Via2l0
X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1tlLnR5cGVdCisgICAgICAgICAgICBz
ZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY192
YWx1ZV90eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAg
ICAgICAgICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInth
Lm5hbWV9U2l6ZSIpCisgICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbc2l6ZV9hcmddCisg
ICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVf
dHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9
IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0oc3RhdGljX2Nh
c3Q8c2l6ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBy
cyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIGYie3N0b3JlX2FyZy5uYW1lfSIpXQorICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAg
ICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4
cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAg
ICAgICAgZWxpZiBhLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3Bw
X2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAg
ICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0g
e3N0cihzdG9yZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJz
ICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpXQorICAgICAgICAg
ICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAg
ICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3Rv
cmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBhLnR5cGUuaXNfcmVmZXJlbmNlKCkKKyAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAg
ICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQor
ICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c2VsZi5ucyh2YWx1ZV9hcmcu
dHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgZSA9IGNw
cF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHNlbGYu
aW5fZXhwcnMgKz0gW2VdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lw
Y19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY190eXBlKSld
CisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90
eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0dXJuX3R5
cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIocmV0dXJuX3R5cGUsICJy
ZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92
YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAg
ICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2Nv
bnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgaXBjX3JldHVybl90eXBlKSldCisgICAgICAg
IHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSByZXR1cm5fdmFsdWVfZXhwcgorCisgICAgZGVmIF9f
c3RyX18oc2VsZik6CisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAgICAgIHtifSIgZm9y
IGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9zdF9j
YWxsX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIo
c2VsZi5hcmdzKX0pCisgICAge3t7Ym9keX0KKyAgICB9fSIiIgorCisgICAgZGVmIG5zKHNlbGYs
IHR5cGU6IGNwcF90eXBlKToKKyAgICAgICAgIyBUT0RPOiBuYW1lc3BhY2UgaW5mbyBpcyBub3Qg
c3RvcmVkIGluIG5hbWVzLgorICAgICAgICBpZiB0eXBlLnR5cGVfbmFtZSA9PSAiQWN0aXZlSW5m
byI6CisgICAgICAgICAgICByZXR1cm4gIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjoiICsg
c3RyKHR5cGUpCisgICAgICAgIHJldHVybiBzdHIodHlwZSkKKworCitjbGFzcyBjb250ZXh0X2Nw
cF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBpbXBsczogTGlzdFt3ZWJr
aXRfaXBjX2NwcF9pbXBsXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJs
ZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX2ltcGwo
ZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBscykKKworICAgIGRl
ZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRl
eHRfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUu
Zm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIGNvbnRl
eHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGdlbmVyYXRvci4iCisgICAg
bXNnczogTGlzdFt3ZWJraXRfaXBjX21zZ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5j
czogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5tc2dzID0gW3dlYmtpdF9pcGNf
bXNnKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdldF9tZXNzYWdlcyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuICIiLmpvaW4oc3RyKG0pIGZvciBtIGluIHNlbGYubXNncykKKworICAgIGRl
ZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZShjb250ZXh0X21lc3NhZ2VzX2Zu
LCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9tZXNzYWdlcygpKSkK
KworCitkZWYgY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM6IHN0ciwgYXJnX2luZGV4OiBpbnQpOgor
ICAgIHIgPSBhcmdfc3BlYy5yc3BsaXQoIiAiLCAxKQorICAgIG5hbWUgPSAiIgorICAgIHR5cGUg
PSBOb25lCisgICAgaWYgbGVuKHIpID4gMSBhbmQgclswXSAhPSAiY29uc3QiOgorICAgICAgICBu
YW1lID0gclsxXS5zdHJpcCgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoclswXSkKKyAg
ICBlbHNlOgorICAgICAgICBuYW1lID0gImFyZ3t9Ii5mb3JtYXQoYXJnX2luZGV4KQorICAgICAg
ICB0eXBlID0gZ2V0X2NwcF90eXBlKGFyZ19zcGVjKQorICAgIHJldHVybiBjcHBfYXJnKHR5cGUs
IG5hbWUpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjczogSXRlcmFibGVb
c3RyXSk6CisgICAgcmV0dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM9
ZSwgYXJnX2luZGV4PWkpIGZvciBpLCBlIGluIGVudW1lcmF0ZShhcmdzX3NwZWNzKV0pCisKKwor
ZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nfc3Bl
Y3M6IEl0ZXJhYmxlW3N0cl0sIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgcmV0dXJuIGNwcF9m
dW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJn
cz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpLCBpc19leHRlbnNpb249aXNfZXh0ZW5z
aW9uKQorCisKK2RlZiBtYWluKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJz
ZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10iKQorICAgIF9vcHRpb25zID0gcGFyc2VyLnBhcnNl
X2FyZ3MoKQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90
ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzLgorICAgIGZ1bmNzID0gW10KKyAgICB1
bmltcGxlbWVudGVkID0gW10KKyAgICBmb3IgZm4gaW4gZnVuY3Rpb25zX2lucHV0X2ZuczoKKyAg
ICAgICAgaXNfZXh0ZW5zaW9uID0gIkV4dGVuc2lvbiIgaW4gc3RyKGZuKQorICAgICAgICB3aXRo
IG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkK
KyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgICAgIGlmIHJlLm1h
dGNoKAorICAgICAgICAgICAgICAgICAgICAiLy8gV2ViR0wgZnVuY3Rpb25zLiBUaGlzIGxpc3Qg
aXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iLAorICAgICAgICAgICAgICAg
ICAgICBsaW5lLnN0cmlwKCksCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKKworICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAg
ICAgaWYgcmUubWF0Y2goIi8vIE90aGVyIGZ1bmN0aW9ucy4iLCBsaW5lLnN0cmlwKCkpOgorICAg
ICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4q
dmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkgPSAwOyIsIGxpbmUpCisgICAgICAgICAgICAg
ICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgIyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29t
L3F1ZXN0aW9ucy8zMzUyNzI0NS9weXRob24tc3BsaXQtYnktY29tbWEtc2tpcHBpbmctdGhlLWNv
bnRlbnQtaW5zaWRlLXBhcmVudGhlc2VzCisgICAgICAgICAgICAgICAgICAgIGNvbW1hID0gciIs
KD8hKD86W148XSpcPFtePl0qXD4pKltePD5dKlw+KSIKKyAgICAgICAgICAgICAgICAgICAgYXJn
c19zcGVjcyA9IGZpbHRlcihOb25lLCBbYS5zdHJpcCgpIGZvciBhIGluIHJlLnNwbGl0KGNvbW1h
LCBtWzNdLnN0cmlwKCkpXSkKKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBf
ZnVuYygKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdz
X3NwZWNzPWFyZ3Nfc3BlY3MsCisgICAgICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249
aXNfZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAg
IGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNz
LmFwcGVuZChmdW5jKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pbXBsZW1lbnRlZC5hcHBlbmQoZnVuYykKKworICAgICMgSW5pdGlhbGl6ZSBX
ZWJLaXQgSVBDIGdlbmVyYXRpb24uIENvbnN0cnVjdCB0eXBlIG1hcHBpbmdzIGZvciB0aGUgdXNl
ZCBDKysgdHlwZXMgLT4gSVBDIHR5cGVzLgorICAgICMgVE9ETzogbmFtZXNwYWNpbmcgaXNzdWVz
LgorICAgIGFpX3R5cGUgPSBnZXRfY3BwX3R5cGUoIkFjdGl2ZUluZm8mIikKKyAgICBhaV90cmFu
c2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKCJXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlSW5mbyIpCisgICAgd2Via2l0X2lwY190eXBlc1thaV90eXBlXSA9IGFpX3RyYW5zZmVyX3R5
cGUKKworICAgIHdpdGggb3Blbih0eXBlc19pbnB1dF9mbikgYXMgZjoKKyAgICAgICAgZm9yIGxp
bmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGlj
X2Fzc2VydFwoc3RkOjppc19zYW1lX3Y8KFx3KyksIChcdyspPlwpOyIsIGxpbmUpCisgICAgICAg
ICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2NwcF90eXBl
KG1bMV0pXSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3Kylc
KSA9PSBzaXplb2ZcKChcdyspXCkgJiYgc2l6ZW9mXCgoXHcrKVwpID09IHNpemVvZlwoKFx3Kylc
KVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBl
ID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3Bw
X3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjcHBfY2FzdF90aHJvdWdoX3R5cGUgPSBnZXRf
Y3BwX3R5cGUobVs0XSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBl
XSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJz
WyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRl
cl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3JlaW50ZXJw
cmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNf
YXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAg
ICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUo
bVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlw
ZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19j
b252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgZm9yIGZ1bmMgaW4gZnVuY3M6CisgICAgICAgIGZvciBj
cHBfdHlwZSBpbiBmdW5jLmFyZ3MudHlwZXMoKSArIFtmdW5jLnJldHVybl90eXBlXToKKyAgICAg
ICAgICAgIHByaW50KGYie3N0cihjcHBfdHlwZSl9IC0+IHt3ZWJraXRfaXBjX3R5cGVzLmdldChj
cHBfdHlwZSwgTm9uZSl9IikKKyAgICAgICAgICAgIGlmIG5vdCB3ZWJraXRfaXBjX3R5cGVzLmdl
dChjcHBfdHlwZSwgTm9uZSk6CisgICAgICAgICAgICAgICAgIyBUT0RPOiB0aGlzIGlzIG5vdCBk
cml2ZW4gYnkgdGhlIHR5cGluZy4KKyAgICAgICAgICAgICAgICBpZiBjcHBfdHlwZS5pc19keW5h
bWljX3NwYW4oKSBvciBjcHBfdHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICAgICAgICAgIHRy
YW5zZmVyX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5zZmVyX3R5cGUoY3BwX3R5cGUp
CisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNm
ZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVfdHlw
ZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zl
cl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAg
ICAgICAgICAgZWxpZiBjcHBfdHlwZS5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgICAgICAg
ICAgdHJhbnNmZXJfdHlwZSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBlCisgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tj
cHBfdHlwZV0gPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisKKyAgICAjIFRoZSBpbnB1dCB0
byB0aGUgZ2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUuCisgICAgIyBS
dW4gdGhlIHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBnZW5lcmF0b3JzID0gWworICAgICAgICBj
b250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcywgdW5pbXBsZW1lbnRl
ZCksCisgICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAg
ICAgICAgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgIF0KKyAg
ICBmb3IgZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBnLmdlbmVyYXRlKCkKKworICAgIHByaW50
KCJJbXBsZW1lbnRlZDoiKQorICAgIHByaW50KCIiLmpvaW4oZiIgIHtzdHIoaSl9XG4iIGZvciBp
IGluIGZ1bmNzKSkKKyAgICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgIHByaW50KCIiLmpv
aW4oZiIgIHtzdHIodSl9XG4iIGZvciB1IGluIHVuaW1wbGVtZW50ZWQpKQorICAgIHByaW50KGYi
SW1wbGVtZW50ZWQ6IHtsZW4oZnVuY3MpfSwgdW5pbXBsZW1lbnRlZDoge2xlbih1bmltcGxlbWVu
dGVkKX0sIHRvdGFsOiB7bGVuKGZ1bmNzKStsZW4odW5pbXBsZW1lbnRlZCl9IikKKworICAgIHJl
dHVybiAwCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWlu
KCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415024</attachid>
            <date>2020-11-30 08:06:23 -0800</date>
            <delta_ts>2020-12-01 02:25:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201130180619.patch</filename>
            <type>text/plain</type>
            <size>522479</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhmZWU1ZDU3NzFiNjE1
MzZjYTA2NGRkMGNjZDI3OGM1ZGRlNWY4OC4uZDczNDg4NjNlMDQ5OTMxYTBhYzZkMjJhYzk2YTU0
YWY4OTBlMTAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMC0xMS0wMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVSBwcm9jZXNzLgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcworICAgICAgICB0aGUgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8KKyAgICAgICAg
dGhlIEdQVSBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlCisgICAgICAgIHJlc3VsdHMgYXJlIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSBHQ0dMU3BhbiBmb3Jt
LgorCisgICAgICAgIE1pc3Npbmc6CisgICAgICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGxvc3MK
KyAgICAgICAgIC0gU2ltdWxhdGVkIGNvbnRleHQgY2hhbmdlCisgICAgICAgICAtIFBhaW50IFdl
YkdMIGNvbnRlbnRzIHRvIDJEIGNhbnZhcworICAgICAgICAgLSBVcGxvYWQgdmlkZW8gdG8gV2Vi
R0wKKyAgICAgICAgIC0gVXBsb2FkIGNhbnZhcyB0byBXZWJHTAorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgdGVzdGVkIGJ5IGV4aXN0aW5nIHdlYmdsIHRlc3RzIG9uY2UgdGhlIGltcGxlbWVudGF0
aW9uIHdvcmtzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcm92aWRlci5oOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAg
ICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dM
LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xC
YXNlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dGV4SW1hZ2UyRFJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJ
bWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnRleElt
YWdlM0RSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OndpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxz
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9y
bWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZUNvY29hOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpw
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlQ29jb2E6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpy
ZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2E6OnNldENvbnRleHRWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JD
cmVhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hOjppc0dMRVMyQ29tcGxpYW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnN5bnRoZXNpemVHTEVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2E6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpzZXRGYWlsTmV4dEdQVVN0
YXR1c0NoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6Om1hcmtDb250ZXh0Q2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjps
YXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2VDb2NvYTo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OmdldEJ1ZmZl
cnNUb0F1dG9DbGVhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYTo6bWFya0xheWVyQ29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpzaW11bGF0ZUNvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0w6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZp
c29yKToKKwogMjAyMC0xMS0zMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI3MDE4NSkgW0dUS10gU29tZSB3ZWJnbCBmYWlsdXJl
cyBhZnRlciBtdWx0aXZhbHVlIHNldHRlciByZWZhY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMTYwYTI1MTdj
OTM0ODFhODdjNjIyODRmNjg4ZDIzMzQzYWM4YTJmLi5jODZhMjQ3Nzc4NWZlYmViYzI3NjM0OTAz
Y2M2NjBmYWY4MDA0YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxOSBAQAorMjAyMC0xMS0wMyAg
S2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBSZW1vdGVXZWJHTEJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZv
ciBHUFUgcHJvY2Vzcy4KKyAgICAgICAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBX
ZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxlbWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0
IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBhc3MKKyAgICAgICAgdGhlIEdyYXBoaWNzQ29udGV4
dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBmcm9tIHdlYiBwcm9jZXNzIHRvCisgICAgICAgIHRo
ZSBHUFUgcHJvY2Vzcy4gVGhlIHNjcmlwdCBpcyBydW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUg
YW5kIHRoZQorICAgICAgICByZXN1bHRzIGFyZSBjb21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVh
c2Ugb2YgcmV2aWV3LgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0R0wgYW5kIEV4
dGVuc2lvbnNHTCB0byBub3QgaGF2ZSBkdXBsaWNhdGUgbmFtZXMKKyAgICAgICAgYW5kIGhhdmUg
dGhlIGNvcnJlY3QgZnVuY3Rpb24gc2lnbmF0dXJlcy4KKworICAgICAgICBDaGFuZ2VzIGZldyBy
ZW1haW5pbmcgR3JhcGhpY3NDb250ZXh0R0wgZ2V0dGVycyB0byB1c2UgR0NHTFNwYW4gZm9ybS4K
KworICAgICAgICBJbXBsZW1lbnRzIHNpbXBsZSBnZXR0ZXJzLCBtdWx0aS12YWx1ZSBnZXR0ZXJz
LCBzaW1wbGUgY2FsbHMuCisgICAgICAgIE1pc3NpbmcgbXVsdGktdmFsdWUgc2V0dGVycy4KKyAg
ICAgICAgTWlzc2luZyByZWFkUGl4ZWxzLgorCisgICAgICAgIEltcGxlbWVudGVkOiAxOTAsIHVu
aW1wbGVtZW50ZWQ6IDEwMywgdG90YWw6IDI5MworCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGVz
dGVkIGJ5IGV4aXN0aW5nIHdlYmdsIHRlc3RzIG9uY2UgdGhlIGltcGxlbWVudGF0aW9uIHdvcmtz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4
dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46IEFk
ZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDogQWRkZWQuCisgICAgICAgIChhY3RpdmVUZXh0dXJlKToK
KyAgICAgICAgKGF0dGFjaFNoYWRlcik6CisgICAgICAgIChiaW5kQXR0cmliTG9jYXRpb24pOgor
ICAgICAgICAoYmluZEJ1ZmZlcik6CisgICAgICAgIChiaW5kRnJhbWVidWZmZXIpOgorICAgICAg
ICAoYmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChiaW5kVGV4dHVyZSk6CisgICAgICAgIChi
bGVuZENvbG9yKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb24pOgorICAgICAgICAoYmxlbmRFcXVh
dGlvblNlcGFyYXRlKToKKyAgICAgICAgKGJsZW5kRnVuYyk6CisgICAgICAgIChibGVuZEZ1bmNT
ZXBhcmF0ZSk6CisgICAgICAgIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAgKGNs
ZWFyKToKKyAgICAgICAgKGNsZWFyQ29sb3IpOgorICAgICAgICAoY2xlYXJEZXB0aCk6CisgICAg
ICAgIChjbGVhclN0ZW5jaWwpOgorICAgICAgICAoY29sb3JNYXNrKToKKyAgICAgICAgKGNvbXBp
bGVTaGFkZXIpOgorICAgICAgICAoY29weVRleEltYWdlMkQpOgorICAgICAgICAoY29weVRleFN1
YkltYWdlMkQpOgorICAgICAgICAoY3JlYXRlQnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoY3JlYXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVNoYWRlcik6CisgICAgICAgIChjcmVhdGVUZXh0dXJl
KToKKyAgICAgICAgKGN1bGxGYWNlKToKKyAgICAgICAgKGRlbGV0ZUJ1ZmZlcik6CisgICAgICAg
IChkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChkZWxldGVQcm9ncmFtKToKKyAgICAgICAg
KGRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChkZWxldGVTaGFkZXIpOgorICAgICAgICAo
ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChkZXB0aEZ1bmMpOgorICAgICAgICAoZGVwdGhNYXNr
KToKKyAgICAgICAgKGRlcHRoUmFuZ2UpOgorICAgICAgICAoZGV0YWNoU2hhZGVyKToKKyAgICAg
ICAgKGRpc2FibGUpOgorICAgICAgICAoZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAg
ICAgKGRyYXdBcnJheXMpOgorICAgICAgICAoZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKGVuYWJs
ZSk6CisgICAgICAgIChlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChmaW5pc2gp
OgorICAgICAgICAoZmx1c2gpOgorICAgICAgICAoZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgor
ICAgICAgICAoZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoZnJvbnRGYWNlKToKKyAg
ICAgICAgKGdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKGdldEF0dHJpYkxvY2F0aW9uKToKKyAg
ICAgICAgKGdldFN0cmluZyk6CisgICAgICAgIChnZXRFcnJvcik6CisgICAgICAgIChnZXRQcm9n
cmFtSW5mb0xvZyk6CisgICAgICAgIChnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKGdldFNo
YWRlclNvdXJjZSk6CisgICAgICAgIChnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAgKGhpbnQpOgorICAgICAgICAoaXNCdWZmZXIp
OgorICAgICAgICAoaXNFbmFibGVkKToKKyAgICAgICAgKGlzRnJhbWVidWZmZXIpOgorICAgICAg
ICAoaXNQcm9ncmFtKToKKyAgICAgICAgKGlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGlzU2hh
ZGVyKToKKyAgICAgICAgKGlzVGV4dHVyZSk6CisgICAgICAgIChsaW5lV2lkdGgpOgorICAgICAg
ICAobGlua1Byb2dyYW0pOgorICAgICAgICAocGl4ZWxTdG9yZWkpOgorICAgICAgICAocG9seWdv
bk9mZnNldCk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKHNhbXBs
ZUNvdmVyYWdlKToKKyAgICAgICAgKHNjaXNzb3IpOgorICAgICAgICAoc2hhZGVyU291cmNlKToK
KyAgICAgICAgKHN0ZW5jaWxGdW5jKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jU2VwYXJhdGUpOgor
ICAgICAgICAoc3RlbmNpbE1hc2spOgorICAgICAgICAoc3RlbmNpbE1hc2tTZXBhcmF0ZSk6Cisg
ICAgICAgIChzdGVuY2lsT3ApOgorICAgICAgICAoc3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAg
ICAodGV4UGFyYW1ldGVyZik6CisgICAgICAgICh0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKHVu
aWZvcm0xZik6CisgICAgICAgICh1bmlmb3JtMWkpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAg
ICAgICAgKHVuaWZvcm0yaSk6CisgICAgICAgICh1bmlmb3JtM2YpOgorICAgICAgICAodW5pZm9y
bTNpKToKKyAgICAgICAgKHVuaWZvcm00Zik6CisgICAgICAgICh1bmlmb3JtNGkpOgorICAgICAg
ICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVy
dGV4QXR0cmliMWYpOgorICAgICAgICAodmVydGV4QXR0cmliMmYpOgorICAgICAgICAodmVydGV4
QXR0cmliM2YpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliUG9pbnRlcik6CisgICAgICAgICh2aWV3cG9ydCk6CisgICAgICAgIChidWZmZXJEYXRhKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoY3JlYXRl
VmVydGV4QXJyYXkpOgorICAgICAgICAoZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoaXNW
ZXJ0ZXhBcnJheSk6CisgICAgICAgIChiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoY29weUJ1
ZmZlclN1YkRhdGEpOgorICAgICAgICAodW5tYXBCdWZmZXIpOgorICAgICAgICAoYmxpdEZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKHJl
YWRCdWZmZXIpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAg
ICAgICAgKHRleFN0b3JhZ2UyRCk6CisgICAgICAgICh0ZXhTdG9yYWdlM0QpOgorICAgICAgICAo
Y29weVRleFN1YkltYWdlM0QpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlvbik6CisgICAg
ICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAgICAodW5pZm9y
bTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0aSk6
CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKHZlcnRleEF0dHJpYklQb2lu
dGVyKToKKyAgICAgICAgKGRyYXdSYW5nZUVsZW1lbnRzKToKKyAgICAgICAgKGNsZWFyQnVmZmVy
ZmkpOgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAg
ICAgICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5
KToKKyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGNyZWF0ZVNhbXBsZXIpOgorICAgICAg
ICAoZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChpc1NhbXBsZXIpOgorICAgICAgICAoYmluZFNh
bXBsZXIpOgorICAgICAgICAoc2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoc2FtcGxlclBh
cmFtZXRlcmYpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAo
ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChw
YXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAgKGJpbmRCdWZmZXJSYW5nZSk6
CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChnZXRBY3RpdmVVbmlm
b3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9ja0JpbmRpbmcpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
ICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9s
aWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxh
eW91dE1pbGVzdG9uZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBhZ2lu
YXRpb25MaW5lR3JpZEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdl
dFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6Om5vbkVwaGVtZXJhbFdlYlBhZ2VQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RT
aGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJS
ZWRpcmVjdFNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TWVkaWFW
b2x1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmN1cnJlbnRseVByb2Nlc3Nl
ZE1vdXNlRG93bkV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0
TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2Fu
Y2VsRm9yT3BlblBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNz
RGlkQmVjb21lUmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVz
ZXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0Tm90aWZpY2F0aW9u
UGVybWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0lt
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZVN5c3RlbUFw
cGVhcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyV2hlZWxFdmVu
dFRlc3RNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRh
Y2htZW50SWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTcGVlY2hT
eW50aGVzaXplcik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp3YWl0Rm9yV2FzQ3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dl
bmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6dG9v
bGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjptZW51YmFy
VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVz
dGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OmVuY29kZUFyZ3Vt
ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6On5XZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZXhlY3V0ZUVkaXRpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNFZGl0
aW5nQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkQWx0ZXJu
YXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNjcm9sbE1haW5GcmFtZUlmTm90
QXRNYXhTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmR1bXBIaXN0b3J5SXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmR1bXBIaXN0b3J5Rm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUlzSW5XaW5kb3cpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXBkYXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OndpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
bWFpbkZyYW1lVmlldyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5U
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlV2Vic2l0ZVBvbGlj
aWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlzcGF0Y2hEaWRSZWFjaExheW91dE1p
bGVzdG9uZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRQZXJm
b3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaG91bGRVc2VSZW1v
dGVXZWJHTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldElzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
IDIwMjAtMTEtMjkgIEFkYW0gTWF6YW5kZXIgIDxtYXphbmRlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgRGVueSBsb2dzIGZvciBiZW5pZ24gZm9udHNlcnZpY2VzZCBkYWVtb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFlZDhlYWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgy
ZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1ODk3MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCArMzExLDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3Jt
RGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50
UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDY2ODc1MmM3OTUyNmJjNmNkMTQzYzJlZjY1OTZmMTRjN2IwNzMzZWQu
LmJiNGJhZDg3ZGZjYWU0MGI3ZmU0ZDAwYjBmY2UyNDFlZmZiOWQ1OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtMzU3LDEyICszNTcsMTQgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0
aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzODQ1MzljNGQ0ODEzZTVlNjg4NzI0MTgx
MWJiNTQ5NzAwNDFiODE1Li5iZjE0NjVlYmE2NDUwMzk0NDFlNDcxNjUxYWZmNWY5ZWU0YjEyYWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yMDUyLDcgKzIwNTIsNyBAQAogCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2QzggLyog
V2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFCQ0Q1MTM4RUEwQjcwMDcxRDI5
MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25v
d25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZF
NjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAv
KiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4
dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNzJGNTRDMjI5RENEMEMw
MEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIzRTE1MSAvKiBUZW1wb3Jh
cnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGlu
Zy5jcHAgKi87IH07CkBAIC0yMjQ2LDYgKzIyNDYsOSBAQAogCQk3QUY5QjIwRjE4Q0ZCNUY0MDBD
NjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNWVFRSZWdpb25M
aXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRl
eHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCMTAzMzlGMjU0OTcy
MUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAv
KiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3QjY0QzBBRTI1NEMxNkY5MDAwNkI0QUYgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2NEMwQUMyNTRDMTZFRTAwMDZCNEFGIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAv
KiBQbGF0Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5MDA2RUVC
OEMgLyogUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVD
QjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIz
NEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUy
NTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3Mzgx
RkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAv
KiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjIsNiArMTAyMjUsMTEgQEAK
IAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAx
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEFDMjU0
QzE2RUUwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0IxNjAwMDZCNEFGIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFBs
YXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNjYwMCw2ICsyNjYwOCw3IEBACiAJCQkJNTUwNjQwQUQyNDA3NTZE
QTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8sCiAJCQkJMDU2MkY5
NjAxNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5
REIzM0RDMDAzODc2RDcgLyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCisJCQkJ
N0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZv
cm1UZXh0VHJhY2suaCAqLywKIAkJCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZv
cm1UaW1lUmFuZ2VzLmNwcCAqLywKIAkJCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxh
dGZvcm1UaW1lUmFuZ2VzLmggKi8sCkBAIC0yNjc1OCw2ICsyNjc2Nyw4IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNERjk5NTAxMjRDMjgxNDkwMDJFQTA2MiAv
KiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCTdCNkRDODE1MjU3MTJFOTEwMDM4
MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8sCisJCQkJ
N0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggKi8sCiAJCQkJQ0RGOTk1MDAyNEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQ
cml2YXRlV2ViTS5oICovLAogCQkJCUY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNv
Y29hLmggKi8sCiAJCQkJRjQ4RDJBQTQyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EubW0g
Ki8sCkBAIC0yNjc4Miw2ICsyNjc5Myw4IEBACiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5
IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAogCQkJCTMxNjQ3
RkE4MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLmggKi8sCiAJCQkJMzE2
NDdGQTkyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EubW0gKi8sCisJCQkJ
N0I2NEMwQUMyNTRDMTZFRTAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2EuaCAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZF
MDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQx
QTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMw
RjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLApAQCAtMzIzNTYs
NiArMzIzNjksNyBAQAogCQkJCUNBM0E0QUFGMjU0MTZFNDAwMDZDREFFMiAvKiBJbWFnZVJlc29s
dXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMjdBRTUwMjJBOTg2ODcwMDk0N0ZGOSAvKiBJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE5M0JDMTFGNUUw
RUVEMDA4OEYzRTYgLyogSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NDY3NTdCMUZEMjEyQTkwMDNCMTBCMCAv
KiBJbWFnZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIzNDgwOTQwRUVGNTBENDAwQUMx
QjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEVEMTkzMjE2RDA3
OTUwMDc3NUIzMyAvKiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLywKQEAg
LTMzODc4LDYgKzMzODkyLDcgQEAKIAkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2OTA5
QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1Nb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDNTk4OTA1ODE0RTlDMjk5MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUGxhdGZvcm1SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxRDcw
QzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVuLmggaW4gSGVhZGVycyAqLywKIAkJCQky
OTdCRTNENTE2QzAzQzA4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5N0JFM0Q2MTZDMDNDMEIwMDMzMTZCRCAvKiBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0MDE2LDYgKzM0
MDMxLDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQg
LyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0
MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNjRDMEFFMjU0
QzE2RjkwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3RlUGxh
eWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAvKiBS
ZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcAppbmRleCAyZmM5M2FlYWZjOTM5MDM3NGE2ZWIzYzIwOWVlYTc2YTE5NjMy
ZGM4Li43MTQ4NzNjMGE0YzZiMDY1YjZiN2FhNTY0ZTgxYWUzM2QwMzI3MDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtNjc2LDIxICs2NzYsMTIgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJnZXRC
dWZmZXJTdWJEYXRhIiwgIlBhcmFtZXRlcnMgd291bGQgcmVhZCBvdXRzaWRlIHRoZSBib3VuZHMg
b2YgdGhlIHNvdXJjZSBidWZmZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwog
ICAgIGlmICghY29weUxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5t
b3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAvLyBGSVhNRTogQ29hbGVzY2UgbXVsdGlwbGUgZ2V0QnVmZmVyU3ViRGF0YSgpIGNhbGxzIHRv
IHVzZSBhIHNpbmdsZSBtYXAoKSBjYWxsCi0gICAgdm9pZCogcHRyID0gbV9jb250ZXh0LT5tYXBC
dWZmZXJSYW5nZSh0YXJnZXQsIGNoZWNrZWRTcmNCeXRlT2Zmc2V0LnVuc2FmZUdldCgpLCBzdGF0
aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGNoZWNrZWRDb3B5TGVuZ3RoUHRyLnVuc2FmZUdldCgpICog
Y2hlY2tlZEVsZW1lbnRTaXplLnVuc2FmZUdldCgpKSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1BUF9S
RUFEX0JJVCk7Ci0gICAgaWYgKHB0cikKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIq
Pihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9m
ZnNldCAqIGVsZW1lbnRTaXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7Ci0KLSAg
ICBpZiAoIW1fY29udGV4dC0+dW5tYXBCdWZmZXIodGFyZ2V0KSkKLSAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0QnVmZmVy
U3ViRGF0YSIsICJGYWlsZWQgd2hpbGUgdW5tYXBwaW5nIGJ1ZmZlciIpOwotI2VuZGlmCi0gICAg
bV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBtX2NvbnRl
eHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzcmNCeXRlT2Zmc2V0LCBtYWtlR0NHTFNwYW4o
c3RhdGljX2Nhc3Q8Y2hhcio+KGRzdERhdGEtPmJhc2VBZGRyZXNzKCkpICsgZHN0RGF0YS0+Ynl0
ZU9mZnNldCgpICsgZHN0T2Zmc2V0ICogZWxlbWVudFNpemUsIGNvcHlMZW5ndGggKiBlbGVtZW50
U2l6ZSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlcikKQEAgLTE3MDEsNyAr
MTY5Miw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYo
R0NHTHVpbnQgaW5kZXgsIFVpbnQzMkxpc3QmJiBsaXN0CiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYi
LCAibm8gYXJyYXkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGludCBz
aXplID0gbGlzdC5sZW5ndGgoKTsKICAgICBpZiAoc2l6ZSA8IDQpIHsKICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0ZXhBdHRy
aWJJNHVpdiIsICJhcnJheSB0b28gc21hbGwiKTsKQEAgLTE5NjYsOSArMTk1Nyw3IEBAIFdlYkdM
QW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVyKFdlYkdMUXVlcnkm
IHF1ZXJ5LCBHQ0dMZW51bSBwCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdihx
dWVyeS5vYmplY3QoKSwgcG5hbWUsICZyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWko
cXVlcnkub2JqZWN0KCksIHBuYW1lKSk7CiB9CiAKIFJlZlB0cjxXZWJHTFNhbXBsZXI+IFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjAxMyw3ICsyMDAyLDcgQEAg
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBX
ZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAodW5pdCA+PSBtX2JvdW5kU2FtcGxl
cnMuc2l6ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX1ZBTFVFLCAiYmluZFNhbXBsZXIiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjA1OCwxNyArMjA0NywxMSBAQCBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyKFdlYkdMU2FtcGxlciYgc2FtcGxl
ciwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUjoK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUjoKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUzoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFX1dSQVBfVDogewotICAgICAgICBpbnQgdmFsdWUgPSAwOwotICAgICAgICBt
X2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLm9iamVjdCgpLCBwbmFtZSwg
JnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX1dSQVBfVDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0
U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFX01JTl9MT0Q6IHsKLSAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwotICAgICAg
ICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyLm9iamVjdCgpLCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQt
PmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIub2JqZWN0KCksIHBuYW1lKTsKICAgICBkZWZh
dWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9FTlVNLCAiZ2V0U2FtcGxlclBhcmFtZXRlciIsICJJbnZhbGlkIHBuYW1lIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjExNyw3ICsyMTAwLDcgQEAgR0NHTGVudW0gV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMoV2ViR0xTeW5jJiBzeW5jLCBHQ0dMYml0Zmll
bGQgZmwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfT1BFUkFUSU9OLCAiY2xpZW50V2FpdFN5bmMiLCAidGltZW91dCA+IE1BWF9DTElFTlRfV0FJ
VF9USU1FT1VUX1dFQkdMIik7CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJ
VF9GQUlMRURfV0VCR0w7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGZsYWdzICYmIGZsYWdzICE9
IEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCkgewogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImNsaWVu
dFdhaXRTeW5jIiwgImludmFsaWQgZmxhZ3MiKTsKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dEdMOjpXQUlUX0ZBSUxFRF9XRUJHTDsKQEAgLTIxNzgsOSArMjE2MSw5IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zv
cm1GZWVkYmFjayogZmVlCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFm
ZWVkYmFja09iamVjdCB8fCBmZWVkYmFja09iamVjdC0+aXNEZWxldGVkKCkgfHwgIXZhbGlkYXRl
V2ViR0xPYmplY3QoImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tPYmplY3QpKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQoZmVlZGJhY2tPYmplY3QgIT0gbV9k
ZWZhdWx0VHJhbnNmb3JtRmVlZGJhY2spOwotICAgIAorCiAgICAgaWYgKGZlZWRiYWNrT2JqZWN0
LT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgImF0dGVt
cHQgdG8gZGVsZXRlIGFuIGFjdGl2ZSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0Iik7CiAgICAg
ICAgIHJldHVybjsKQEAgLTIyNDcsNyArMjIzMCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKQogewog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAK
KwogICAgIGlmICghVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ByaW1pdGl2ZU1vZGUocHJpbWl0
aXZlTW9kZSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfRU5VTSwgImJlZ2luVHJhbnNmb3JtRmVlZGJhY2siLCAiaW52YWxpZCB0cmFuc2Zv
cm0gZmVlZGJhY2sgcHJpbWl0aXZlIG1vZGUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjI4Nyw3
ICsyMjcwLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1GZWVk
YmFjaygpCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImVuZFRyYW5zZm9ybUZlZWRiYWNrIiwgInRyYW5zZm9ybSBmZWVkYmFj
ayBpcyBub3QgYWN0aXZlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBt
X2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CiAKICAgICBtX2JvdW5kVHJhbnNmb3Jt
RmVlZGJhY2stPnNldFBhdXNlZChmYWxzZSk7CkBAIC0yMjk4LDcgKzIyODEsNyBAQCB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoV2ViR0xQcm9n
cmFtJiBwcm9ncmFtLCBjbwogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mi
LCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHN3aXRjaCAoYnVmZmVy
TW9kZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNFUEFSQVRFX0FUVFJJQlM6CiAg
ICAgICAgIGlmICh2YXJ5aW5ncy5zaXplKCkgPiBtX21heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJh
dGVBdHRyaWJzKSB7CkBAIC0yNDg0LDI0ICsyNDY3LDI0IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29u
c3QKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJv
Z3JhbU9yU2hhZGVyKCJnZXRBY3RpdmVVbmlmb3JtcyIsICZwcm9ncmFtKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2Vz
LnNpemUoKSwgMCk7Ci0gICAgCiAgICAgc3dpdGNoIChwbmFtZSkgewotICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOSUZPUk1fVFlQRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVV
bmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9UWVBFOiB7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgp
LCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcChbXShh
dXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xlbnVtPih4KTsgfSk7Ci0gICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9TSVpFOgotICAgICAgICBtX2NvbnRleHQtPmdldEFj
dGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVz
dWx0KTsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9TSVpFOiB7
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9n
cmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVz
dWx0Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50Pih4KTsgfSk7
CisgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfSU5ERVg6
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9PRkZTRVQ6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9BUlJBWV9TVFJJREU6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5JRk9STV9NQVRSSVhfU1RSSURFOgotICAgICAgICBtX2NvbnRleHQtPmdl
dEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwg
cmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKLSAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpVTklGT1JNX0lTX1JPV19NQUpPUjoKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUs
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHBy
b2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeCk7IH0pOworICAgIH0KICAgICBkZWZhdWx0OgogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAi
Z2V0QWN0aXZlVW5pZm9ybXMiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTM1NjgsOCArMzU1MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHCiAKICAgICBjbGVhcklmQ29tcG9zaXRlZCgpOwogCi0gICAgR0NHTHNpemVpIGxlbmd0aCwg
Y29sdW1ucywgcm93czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVs
c1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgJmxlbmd0
aCwgJmNvbHVtbnMsICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpLCB0
cnVlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3
JiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDMyYTcx
NTAzMDgxNjQwZmUwODE3ZDg5ODUwYzc3MmRhMjA4NmUzOGEuLjFiNDFkZjliMGM4NTM2Y2Q2MjYw
ODNlM2FlNzc2MDBlZDFjZTlmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MTAsOCArNzEwLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3Vz
cGVuZElmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0K
LQotICAgIGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0
cmlidXRlcywgaG9zdFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0
R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsK
ICAgICAgICAgaWYgKGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQt
PmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
Z2xjb250ZXh0Y3JlYXRpb25lcnJvckV2ZW50LApAQCAtNDMzOCwxMCArNDMzNyw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoCiAgICAgdm9pZCogZGF0YSA9IHBpeGVscy5iYXNlQWRkcmVzcygp
OwogCiAjaWYgVVNFKEFOR0xFKQotICAgIEdDR0xzaXplaSBsZW5ndGggPSAwOwotICAgIEdDR0xz
aXplaSBjb2x1bW5zID0gMDsKLSAgICBHQ0dMc2l6ZWkgcm93cyA9IDA7Ci0gICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksICZsZW5ndGgsICZjb2x1bW5z
LCAmcm93cywgZGF0YSwgZmFsc2UpOworICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxzLmJ5
dGVMZW5ndGgoKSkpOwogI2Vsc2UKICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQp
CiAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzRVhUKHgsIHks
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgZGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAppbmRleCA0YTQyMGJmMGEx
MTZjY2NhYjVkYjg3YTI2ZDhiYTI0MjgyOGYyZDU1Li44OWE2M2UzNjIxNzEyMjRiNDEzYTQ5NTQy
MzEyZTM4MzZiNmViYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5j
cHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBXZWJHTFN5bmM6OnVwZGF0ZUNhY2hlKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYWxs
b3dDYWNoZVVwZGF0ZSA9IGZhbHNlOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0U3luY2l2KG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTLCBzaXplb2Yo
bV9zeW5jU3RhdHVzKSwgJm1fc3luY1N0YXR1cyk7CisgICAgbV9zeW5jU3RhdHVzID0gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaShtX3N5bmMsIEdyYXBoaWNzQ29udGV4dEdM
OjpTWU5DX1NUQVRVUyk7CiAgICAgaWYgKG1fc3luY1N0YXR1cyA9PSBHcmFwaGljc0NvbnRleHRH
TDo6VU5TSUdOQUxFRCkKICAgICAgICAgc2NoZWR1bGVBbGxvd0NhY2hlVXBkYXRlKGNvbnRleHQp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDBhMDk4ZDJkYjQ5MjBkNzNjMmYxMDgxNDVi
MjMwYmQ5MDg0YTY5NWIuLjc0MmRlNGM4Njg3NDhkMDU0OTJkMzFiYTRhOTc4N2VkM2YxYWMzZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUyOCw2ICs1MjgsMTMgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW8KICAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0w+IENocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5j
cmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBkaXNwbGF5SUQoKSk7Cit9CisjZW5k
aWYKKwogUGxhdGZvcm1EaXNwbGF5SUQgQ2hyb21lOjpkaXNwbGF5SUQoKSBjb25zdAogewogICAg
IHJldHVybiBtX3BhZ2UuZGlzcGxheUlEKCk7CkBAIC01NDEsNiArNTQ4LDcgQEAgdm9pZCBDaHJv
bWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9w
dGlvbmFsPHVuc2lnbmUKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJ
RCwgbm9taW5hbEZyYW1lSW50ZXJ2YWwpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
R1JBUEhJQ1NfQ09OVEVYVF9HTCkKKyAgICAvLyBUT0RPOiBHUFUgcHJvY2Vzcy4gQ2hhbmdlIHRv
IEdDR0xNYW5hZ2VyLCBtYWtlIGl0IHdvcmssIHJldHVybiBudWxsIGZvciBvdGhlcnMuCiAgICAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NyZWVuRGlk
Q2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4
IDIzMzI4ZjU2YTE5MTIwNDlkNDc5NzY0MWQwMTQwMDU1MTU5MDM1MDIuLmE4OWRkMWExZDg2NWU1
MzI4ZWIwNTA1NzY1NDBkM2YyMzJhM2NmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtODYsNiAr
ODYsMTAgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVy
cmlkZTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQ
bGF0Zm9ybURpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+KSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggM2E5ZTFkNjY5MDk3ZTU5NWQ5YjU3ZmM0Y2ZmN2U2
MWE1ZDE4ZDBhOS4uOGYxOGZkZmYwNDk5MDM3NTg5OGIxN2I5MjhjYzBlMDYwMGU5MWM3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMjUsNiArMzI1LDEwIEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAorI2lmIEVO
QUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2Vi
Q29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRp
ZgorCiAgICAgLy8gUGFzcyBudWxscHRyIGFzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRldGF0Y2gg
dGhlIHJvb3QgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KEZyYW1lJiwgR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVmll
d092ZXJsYXlHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ib3N0V2luZG93LmgKaW5kZXggNDNkYjFmZmFlMDEyYmIyMTg5NGYyY2E5NjMwNzIxNDc2
NmFhZGQ5ZS4uNzM4MTE4YjIxZTNjMzM3YjJlNTMxYzk5NmQwOTliZDNlOWE1NjliMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSAiV2lkZ2V0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYzLDYgKzY0LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdy
YXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0
ID0gMDsKKyNlbmRpZgorCiAgICAgLy8gTWV0aG9kIGZvciByZXRyaWV2aW5nIHRoZSBuYXRpdmUg
Y2xpZW50IG9mIHRoZSBwYWdlLgogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRm
b3JtUGFnZUNsaWVudCgpIGNvbnN0ID0gMDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKaW5kZXggYTIyNTNjODFiZmUwYTBi
YjA5MTBiZGU2YzBkYjI2YWE3ODQ1MmZiMy4uN2FmYmE2ZWM1MDg4MTljYzFlYWJhZGNjZGUwYmI3
OWE4Mzg0MmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgKQEAgLTM0LDEzICszNCwxNiBAQCBXRUJDT1JFX0VYUE9SVCBpbnQg
cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKICNpZiBQTEFURk9STShXSU4pCiBpbmxpbmUg
Ym9vbCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc0lu
R1BVUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZWxpZiAhUExBVEZPUk0oQ09DT0EpCiBp
bmxpbmUgYm9vbCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBib29s
IGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAKIGJvb2wgaXNJbldlYlByb2Nlc3MoKTsKK2Jvb2wgaXNJbkdQVVByb2Nlc3Mo
KTsKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNzKCk7CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3NDb2NvYS5tbQppbmRleCBmYmQxZDQzYzA4Zjg2ZGMzYzE4ZWQyMTU2MGYwOGNmODdmYTFh
ZjM5Li5iMDZmZjQ3ZGZjNTQxNzIxZjY0YWEwZGUzOGIzYjkyZjg4MzgyNDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3NDb2NvYS5tbQpAQCAtOTYsNiArOTYsMTIgQEAgYm9vbCBpc0luV2ViUHJvY2Vz
cygpCiAgICAgcmV0dXJuIG1haW5CdW5kbGVJc1dlYlByb2Nlc3M7CiB9CiAKK2Jvb2wgaXNJbkdQ
VVByb2Nlc3MoKQoreworICAgIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc0dQVVByb2Nlc3MgPSBb
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBoYXNQcmVmaXg6QCJjb20u
YXBwbGUuV2ViS2l0LkdQVSJdOworICAgIHJldHVybiBtYWluQnVuZGxlSXNHUFVQcm9jZXNzOwor
fQorCiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgc3RhdGljIGJvb2wgbWFpbkJ1
bmRsZUlzTmV0d29ya1Byb2Nlc3MgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVu
dGlmaWVyXSBoYXNQcmVmaXg6QCJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmciXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMDZj
MTIxMTI3ZTIyZDEzZTZiZTM4NmI4ZWJiYTc2YzY3MTE2YTEzZC4uYmVjZTY1NGFmOTBjNDk4ZTY3
YmFhMjI4ZDJhM2MzYzBiODllN2E5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI2NCw3ICsyNjQsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUID0gMHg4Q0VF
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9
IDB4OENFRjsKIAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1
cC13ZWJnbCB1bmRlcnN0YW5kcy4KKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAvLyBH
TF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlm
ZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc2LDEwICsyNzYsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAw
OwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBi
bGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBz
cmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5z
aWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBH
Q0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkw
LCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVu
dW0gZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRl
cm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xf
T0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTMsMTUgKzI5MywxNSBAQCBwdWJsaWM6CiAg
ICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1h
cmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFy
a2VyRVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9
IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwg
R0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsK
QEAgLTMyOSw3ICszMjksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xm
bG9hdCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RB
TkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1Miw3ICszNTEsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlm
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
QU1EKCkgPSAwOwpAQCAtMzY0LDYgKzM2Miw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3Qg
YmUgYXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNv
bmZpZ3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVt
dWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkZjRh
MTE5YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIxYWVh
N2E1YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQSElD
U19DT05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9y
bWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpA
QCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1
bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdM
OjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJz
KGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1MmRj
NmVmMy4uMGJhYjZjMDYyMWFlYTkxY2QzZTgxMzYzZTliMjc2ODU5ZjI1ODBhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
CkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZv
ciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgog
ICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtNjY5LDYgKzY3MSw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfUkVDVEFOR0xFX0FSQiA9IDB4ODRG
NTsKICAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfQklORElOR19SRUNUQU5H
TEVfQVJCID0gMHg4NEY2OwogCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRVFVRVNU
QUJMRV9FWFRFTlNJT05TX0FOR0xFID0gMHg5M0E4OworCisKICAgICAvLyBBdHRlbXB0IHRvIGVu
dW1lcmF0ZSBhbGwgcG9zc2libGUgbmF0aXZlIGltYWdlIGZvcm1hdHMgdG8KICAgICAvLyByZWR1
Y2UgdGhlIGFtb3VudCBvZiB0ZW1wb3JhcnkgYWxsb2NhdGlvbnMgZHVyaW5nIHRleHR1cmUKICAg
ICAvLyB1cGxvYWRpbmcuIFRoaXMgZW51bSBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIGl0IGlzIGFj
Y2Vzc2VkCkBAIC05MTEsMTQgKzkxNiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIEdDR0xpbnQgc2l6
ZTsKICAgICB9OwogCisgICAgLy8gQ3JlYXRlcyBhIEdyYXBoaWNzQ29udGV4dEdMIGluc3RhbmNl
IHRvIHJlbmRlciBpbnRvIG9mZnNjcmVlbiBkZXN0aW5hdGlvbiBpbiBjb250ZXh0IG9mIEhvc3RX
aW5kb3cuCisgICAgLy8gSG9zdFdpbmRvdyBtaWdodCBhZmZlY3QgdGhlIGRlY2lzaW9uIHdoaWNo
IGJhY2tlbmQgaXMgdG8gYmUgdXNlZC4KKyAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgSG9zdFdpbmRv
dyopOworCiAgICAgR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
LCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdM
KiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0woKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVudChDbGllbnQmIGNsaWVudCkgeyBt
X2NsaWVudHMuYWRkKCZjbGllbnQpOyB9CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ2xpZW50JiBj
bGllbnQpIHsgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsgfQogCi0gICAgLy8gV2ViR0wgZnVu
Y3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgotCisgICAg
Ly8gV2ViR0wgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xl
bnVtIHRleHR1cmUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKQEAgLTk4MCw3ICs5ODgsNiBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJz
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkq
IGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lKSA9IDA7CiAKQEAgLTEwMjUsMTAgKzEwMzIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOwogCi0gICAgLy8gZ2V0VmVydGV4QXR0cmliCi0gICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSA9IDA7Ci0KICAgICB2aXJ0dWFsIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpID0gMDsKQEAgLTExMDAsNyAr
MTEwMyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0x2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCAgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKQEAgLTExMjQsOCArMTEyOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyA9PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgogCiAgICAgdmlydHVh
bCB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdy
aXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQs
IEdDR0xzaXplaXB0ciBzaXplKSA9IDA7Ci0gICAgdmlydHVhbCBHQ0dMdm9pZCogbWFwQnVmZmVy
UmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxl
bmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgPSAwOwotICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4g
dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48
R0NHTHZvaWQ+IGRhdGEpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBsYXllcikgPSAwOwpAQCAtMTE4Nyw3ICsxMTkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpID0gMDsKICAgICB2aXJ0dWFsIFBsYXRm
b3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAw
OwogICAgIC8vIGdldFF1ZXJ5UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCog
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgPSAwOwpAQCAtMTE5Niw4ICsxMTk5
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgPSAwOwogICAgIC8vIGdldFNhbXBs
ZXJQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmly
dHVhbCBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRTYW1wbGVy
UGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSA9IDA7
CiAKICAgICB2aXJ0dWFsIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdD
R0xiaXRmaWVsZCBmbGFncykgPSAwOwogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gaXNTeW5jKEdD
R0xzeW5jKSA9IDA7CkBAIC0xMjA1LDcgKzEyMDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBH
Q0dMZW51bSBjbGllbnRXYWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dM
dWludDY0IHRpbWVvdXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpID0gMDsKICAgICAvLyBnZXRT
eW5jUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpID0gMDsKIAog
ICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9i
amVjdCBpZCkgPSAwOwpAQCAtMTIyMiw3ICsxMjI1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxh
dGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6
ZSkgPSAwOwogICAgIC8vIGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBj
YWxscyBhYm92ZS4KICAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGlj
ZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9y
bU5hbWVzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMs
IEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykgPSAwOworICAgIHZpcnR1
YWwgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBu
YW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSA9
IDA7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyCkBAIC0xMjMwLDcgKzEy
MzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSA9IDA7Ci0KKyAg
ICAKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCiAgICAgR0NHTGZsb2F0IGdldEZsb2F0KEdDR0xl
bnVtIHBuYW1lKTsKICAgICBHQ0dMYm9vbGVhbiBnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKTsK
QEAgLTEzOTQsNyArMTM5Nyw2IEBAIGlubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1CiAgICAgcmV0dXJu
IHZhbHVlWzBdOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmlu
ZGV4IDg1YzI5YTRiNmU1NjExMGRjN2JkNzQ3YWUzMzk4N2MzNDAzNzVkZjEuLjNiMDY0YzNlNzY4
ZWNjNGJmMDJiNzYyNWE2ZjFlZGJjYzgwODc0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw3ICsyNSw5IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ0LDEzICs0NiwxNyBAQCB0eXBlZGVmIHVuc2lnbmVkIEdD
R0x1aW50OwogdHlwZWRlZiBmbG9hdCBHQ0dMZmxvYXQ7CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IEdDR0xoYWxmZmxvYXQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xjbGFtcGY7Cit0eXBlZGVmIGNoYXIg
R0NHTGNoYXI7Cit0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Cit0eXBlZGVmIHZv
aWQgR0NHTHZvaWQ7CisKKy8vIFRoZXNlIEdDR0wgdHlwZXMgZG8gbm90IHN0cmljdGx5IG1hdGNo
IHRoZSBHTCB0eXBlcyBhcyBkZWZpbmVkIGluIE9wZW5HTCBFUyAyLjAKKy8vIGhlYWRlciBmaWxl
IGZvciBhbGwgcGxhdGZvcm1zLgogdHlwZWRlZiBpbnRwdHJfdCBHQ0dMaW50cHRyOwogdHlwZWRl
ZiBpbnRwdHJfdCBHQ0dMc2l6ZWlwdHI7Ci10eXBlZGVmIGNoYXIgR0NHTGNoYXI7Cit0eXBlZGVm
IGludHB0cl90IEdDR0x2b2lkcHRyOwogdHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0OwogdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgR0NHTHVpbnQ2NDsKLXR5cGVkZWYgc3RydWN0IF9fR0xz
eW5jKiBHQ0dMc3luYzsKLXR5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKIAogdHlwZWRlZiBHQ0dMdWlu
dCBQbGF0Zm9ybUdMT2JqZWN0OwogCkBAIC01OCwxMyArNjQsMTcgQEAgdHlwZWRlZiBHQ0dMdWlu
dCBQbGF0Zm9ybUdMT2JqZWN0OwogdHlwZWRlZiB1bnNpZ25lZCBHTHVpbnQ7CiAjZW5kaWYKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCk+CitpbmxpbmUgY29uc3RleHByIHNpemVfdCBnY0dMU3BhbkR5bmFtaWNF
eHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gZ2NHTFNwYW5EeW5hbWljRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KIHN0cnVjdCBH
Q0dMU3BhbiB7Ci0gICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXkpCisgICAgZXhwbGljaXQg
R0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBzaXplID0gRXh0ZW50KQogICAgICAgICA6IGRhdGEo
YXJyYXkpCi0gICAgeyB9CisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUg
PT0gRXh0ZW50KTsKKyAgICB9CiAgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQogICAg
ICAgICA6IGRhdGEoYXJyYXkpCiAgICAgeyB9CkBAIC03Miw2ICs4MiwxMiBAQCBzdHJ1Y3QgR0NH
TFNwYW4gewogICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIEV4dGVudD4mIG90aGVyLCBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIHN0
ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCiAgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQogICAg
IHsgfQorICAgIEdDR0xTcGFuKHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAg
IDogZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CisgICAgR0NHTFNwYW4oY29uc3Qgc3RkOjph
cnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAg
ICB7IH0KICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEg
JiYgaSA8IGJ1ZlNpemUpOyByZXR1cm4gZGF0YVtpXTsgfQogICAgIFQmIG9wZXJhdG9yKigpIHsg
UkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBidWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CiAgICAgVCog
ZGF0YTsKQEAgLTc5LDcgKzk1LDcgQEAgc3RydWN0IEdDR0xTcGFuIHsKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKT4geworc3RydWN0IEdDR0xTcGFuPFQsIGdjR0xTcGFuRHluYW1pY0V4dGVudD4g
ewogICAgIEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCiAgICAgICAgIDogZGF0
YShhcnJheSkKICAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQpAQCAtMTIxLDYgKzEzNywxMSBA
QCBzdHJ1Y3QgR0NHTFNwYW48R0NHTHZvaWQ+IHsKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEp
CiAgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQogICAgIHsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dM
U3BhbihXVEY6OlZlY3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5KQorICAgICAgICA6IGRh
dGEoYXJyYXkuZGF0YSgpKQorICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgpICogc2l6ZW9m
KFUpKQorICAgIHsgfQogICAgIEdDR0x2b2lkKiBkYXRhOwogICAgIGNvbnN0IHNpemVfdCBidWZT
aXplOwogfTsKQEAgLTE1Miw4ICsxNzMsMTEgQEAgc3RydWN0IEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05d
KSAtPiBHQ0dMU3BhbjxULCBOPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUdDR0xTcGFuKFdU
Rjo6VmVjdG9yPFQ+JikgLT4gR0NHTFNwYW48VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgTj4KK0dDR0xTcGFuKHN0ZDo6YXJyYXk8VCwgTj4mKSAtPiBHQ0dMU3BhbjxULCBOPjsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorR0NHTFNwYW4oV1RG
OjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JikgLT4gR0NHTFNwYW48VD47CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBHQ0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNv
dW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZhMGFhMjBjZTFhMjQzNThjYWFmMzEzMmYxNzhiOTdhM2M0ODBkNDIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2Nv
YS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKy8vIE5hbWUgZm9yIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYyBiYXNlIGNsYXNzIG9mIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHByb3h5
LgorLy8gRHVlIHRvIHRoZSBsYWNrIG9mIGFic3RyYWN0aW9ucywgd2UgY3VycmVudGx5IG5lZWQg
dG8gaW5oZXJpdCB0aGUKKy8vIHBsYXRmb3JtIGRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbiBpbiB0
aGUgbWlkZGxlIG9mIHRoZSBpbmhlcml0YW5jZSBjaGFpbgorLy8gb2YgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS4KKy8vIFRoaXMgbWVhbnMgd2UgY2Fubm90IGhhdmUgYSByZWFsIHBsYXRm
b3JtIGluZGVwZW5kZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgYmFzZSBjbGFzcy4K
Ky8vIEZvciB0aGlzIHJlYXNvbiB3ZSBtdXN0IHJlZmVyIHRvIHRoZSBjb25jcmV0ZSBjbGFzcyBm
b3IgdGhlIHRpbWUgYmVpbmcuCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2luZyBQbGF0Zm9ybVJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2VDb2NvYTsKKyNlbmRpZgorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xC
YXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjdkNTc0NDY1YTljMTAxMWMxZGYxZWZmNTc3ZGRlNmY5NTNjNDMw
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQmFzZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisK
KyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgcmVtb3RlIEdy
YXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKy8vIFRoaXMgaW1wbGVtZW50cyB0aGUg
cGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29yZSBpbnRlcm5hbCBmdW5jdGlvbmFsaXR5OgorLy8g
LSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBtYW5hZ2VtZW50LgorLy8gLSBDb21wb3NpdGluZyBz
dXBwb3J0LgorLy8gVGhlIHBhcnRzIHdlcmUgbmVlZGVkIHRvIGJlIGltcGxlbWVudGVkIGR1ZSB0
byBsYWNrIG9mIGFic3RyYWN0aW9ucyBhbmQKKy8vIHNtYWxsIHBlbmRpbmcgZml4ZXMgYXQgdGhl
IHRpbWUgb2Ygd3JpdGluZy4KK1dFQkNPUkVfRVhQT1JUIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlQ29jb2EgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wsIHB1YmxpYyBF
eHRlbnNpb25zR0wgeworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQmFzZShj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xCYXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVj
dCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdC
dWZmZXIoKSBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbCB7
IHJldHVybiAqdGhpczsgfQorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
IGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAg
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNy
ZWF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7
CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKKyAgICB2
b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHByZXBhcmVG
b3JEaXNwbGF5KCkgZmluYWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsK
KyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0QnVm
ZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxkIGdl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICBSZWZQdHI8SW1hZ2VE
YXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpIGZpbmFsOworICAgIGJvb2wg
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmluYWw7CisgICAg
dm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRl
eHRDaGFuZ2VkKCkgZmluYWw7CisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51bGxw
dHIgfTsKKyNlbmRpZgorICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CisK
K307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MDJl
YTRiNTU3YzY4NmNmZDgyM2QwODFjNTVlNGEuLjdjMTUxZmEyODUwZjMzYzE0OWE5ZGM4MjIzODFi
OGZjYmRlOWNiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQ2LDI4ICs0Niw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIEV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3Ry
aW5nKQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1faXNOVklESUEoZmFsc2UpCi0gICAgLCBtX2lz
QU1EKGZhbHNlKQotICAgICwgbV9pc0ludGVsKGZhbHNlKQotICAgICwgbV9pc0ltYWdpbmF0aW9u
KGZhbHNlKQotICAgICwgbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbihmYWxzZSkK
LSAgICAsIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKGZhbHNlKQogICAg
ICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRHZXRTdHJpbmcpCiB7Ci0gICAgLy8g
RklYTUU6IGlkZWFsbHksIHJlbW92ZSB0aGlzIGluaXRpYWxpemF0aW9uIGFsdG9nZXRoZXIuIEFO
R0xFCi0gICAgLy8gc3Vic3VtZXMgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBncmFwaGljcyBkcml2
ZXIgd29ya2Fyb3VuZHMuCi0gICAgbV92ZW5kb3IgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAgbV9yZW5kZXJlciA9
IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JF
TkRFUkVSKSkpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gdmVuZG9yQ29tcG9uZW50cyA9IG1fdmVu
ZG9yLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAgICBpZiAodmVuZG9y
Q29tcG9uZW50cy5jb250YWlucygibnZpZGlhIikpCi0gICAgICAgIG1faXNOVklESUEgPSB0cnVl
OwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5kb3JDb21w
b25lbnRzLmNvbnRhaW5zKCJhbWQiKSkKLSAgICAgICAgbV9pc0FNRCA9IHRydWU7Ci0gICAgaWYg
KHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImludGVsIikpCi0gICAgICAgIG1faXNJbnRlbCA9
IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImltYWdpbmF0aW9uIikp
Ci0gICAgICAgIG1faXNJbWFnaW5hdGlvbiA9IHRydWU7CiB9CiAKIEV4dGVuc2lvbnNHTEFOR0xF
Ojp+RXh0ZW5zaW9uc0dMQU5HTEUoKSA9IGRlZmF1bHQ7CkBAIC0xMDMsNyArODMsNyBAQCBib29s
IEV4dGVuc2lvbnNHTEFOR0xFOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIAotaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK0dMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkKIHsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5P
X0VSUk9SOwogfQpAQCAtMTE0LDEwICs5NCwxMSBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpbnQgc291cmNlTGVuZ3RoID0gbV9jb250
ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdU
SF9BTkdMRSk7CisKICAgICBpZiAoIXNvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9U
UkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWlu
YXRpb24uCi0gICAgaW50IHJldHVybmVkTGVuZ3RoID0gMDsKKyAgICBHQ0dMaW50IHJldHVybmVk
TGVuZ3RoID0gMDsKICAgICBnbDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRl
ciwgc291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAo
IXJldHVybmVkTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTE0Nyw3
ICsxMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0
ZW5zaW9ucygpCiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwg
bG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZ
MCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs
b25nIGZpbHRlcikKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CiAgICAgLy8gRklY
TUU6IGNvbnNpZGVyIGFkZGluZyBzdXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZS4KICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xNTYs
NyArMTM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcg
c3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcKICAgICBnbDo6QmxpdEZyYW1lYnVm
ZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEs
IGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM1LDcgKzIxNiw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQog
ICAgIGdsOjpEcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI0MywxNSArMjI0LDE1IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpCiAgICAg
Z2w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3Vu
dCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlw
ZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0
KSksIHByaW1jb3VudCk7CisgICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KG9mZnNldCksIHByaW1jb3Vu
dCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0zNTAsNyArMzMxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bQogICAgIGds
OjpHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CkBAIC00MzEsNyArNDEyLDcgQEAgdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
dWludCBpbmQKICAgICBnbDo6R2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRl
eCwgYnVmU2l6ZSwgbGVuZ3RoLCB2YWwpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2
ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQzOSw3ICs0MjAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bAogICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZl
bCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDU2LDU1ICs0MzcsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaQogICAgIGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5H
TEUocG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxG
cm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQot
ewotICAgIC8vIFdlIGNhbiBhc3N1bWUgdGhpcyBkb2Vzbid0IG92ZXJmbG93IGJlY2F1c2UgdGhl
IGNhbGxpbmcgZnVuY3Rpb25zCi0gICAgLy8gdXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBp
bnQgdG90YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgcGl4ZWxzW2kgKyAzXSA9IDI1NTsKLX0K
LSNlbmRpZgotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xF
KGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJv
b2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogcmVt
b3ZlIHRoZSB0d28gZ2xGbHVzaCBjYWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBp
LmUuLAotICAgIC8vIGFsbCBwcmV2aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUg
YmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgotICAgIGdsOjpGbHVzaCgpOwotICAgIGF1dG8gYXR0cnMg
PSBtX2NvbnRleHQtPmNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgR0NHTGVudW0gZnJhbWVidWZm
ZXJUYXJnZXQgPSBtX2NvbnRleHQtPm1faXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6
UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBj
b25zdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3Rh
dGUgPSBtX2NvbnRleHQtPm1fc3RhdGU7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0
ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAg
IG1fY29udGV4dC0+cmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHks
IHdpZHRoLCBoZWlnaHQpKTsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZl
clRhcmdldCwgbV9jb250ZXh0LT5tX2Zibyk7Ci0gICAgICAgIGdsOjpGbHVzaCgpOwotICAgIH0K
LSAgICAodm9pZCkgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsK
LSAgICBnbDo6UmVhZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIGJ1ZlNpemUsIGxlbmd0aCwgY29sdW1ucywgcm93cywgZGF0YSk7Ci0gICAgR0xl
bnVtIGVycm9yID0gZ2w6OkdldEVycm9yKCk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBz
dGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKQotICAgICAg
ICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fbXVs
dGlzYW1wbGVGQk8pOwotCi0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIC8vIEFOR0xFIGRldGVj
dGVkIGEgZmFpbHVyZSBkdXJpbmcgdGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9u
LiBTdXJmYWNlIHRoaXMgaW4gdGhlCi0gICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBh
bmQgc2tpcCB0aGUgYWxwaGEgY2hhbm5lbCBmaXh1cCBiZWxvdy4KLSAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFyZWFkaW5n
VG9QaXhlbEJ1ZmZlck9iamVjdCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYm
ICh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91
bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0
ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKSkpCi0gICAgICAg
IHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXIqPihkYXRhKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9Q
aXhlbEJ1ZmZlck9iamVjdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykK
K3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzQ0NSw3IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sCiAgICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShw
cm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUyMCw3
ICs0NTMsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWl2
Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1z
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggYTc3MzFkZmQyMGM1ZjAzYTMzNTkwM2Zh
YTZlMzhmZjcyZjRiMjMyMy4uY2JmNDk4YmQ3YzFhMWFiOWFhNmI3MGZiNWQzOGFjNGI5MmZiMDM1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC01NiwyMSArNTYsMTIgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcg
c3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxv
bmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBm
aWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxv
bmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3Jj
WDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQg
ZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xi
aXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7Ci0KLSAgICBi
b29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJvb2wg
aXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVsKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRvcigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5G
dW5jdGlvbkVtdWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVt
VGV4dHVyZVNpemU7IH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291
bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsK
IAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFkUGl4
ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVp
ICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwpAQCAtOTcsNyArODgsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAq
Y29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVs
QnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CkBAIC0xMzAsMTggKzEyMCw4IEBA
IHByaXZhdGU6CiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKIAotICAgIGJv
b2wgbV9pc05WSURJQTsKLSAgICBib29sIG1faXNBTUQ7Ci0gICAgYm9vbCBtX2lzSW50ZWw7Ci0g
ICAgYm9vbCBtX2lzSW1hZ2luYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVy
ZVNpemU7Ci0KICAgICBib29sIG1fdXNlSW5kZXhlZEdldFN0cmluZyB7IGZhbHNlIH07CiAKLSAg
ICBTdHJpbmcgbV92ZW5kb3I7Ci0gICAgU3RyaW5nIG1fcmVuZGVyZXI7Ci0KICAgICAvLyBXaGV0
aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4
dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJG
bG9hdFJHQiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCAxMjdhM2I4
ZGJhM2MzZjQ0Y2Q3NjVkZDhmYzcxMWNkZDg3OGRlOWE0Li4xZDYwNGI3MWQ0ODE0ZjU5N2MyYzJm
Yzg5ZWRjOTY0OGRjMTNjNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApA
QCAtNDQzLDMyICs0NDMsNTMgQEAgRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0RXh0ZW5zaW9ucygpCiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9p
ZD4gZGF0YSkKK3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIGRhdGEu
ZGF0YSwgZmFsc2UpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHZvaWQq
PihvZmZzZXQpLCB0cnVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSog
cm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpCiB7
Ci0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJp
dmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNh
bGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoZSB0d28gZ2xGbHVzaCBjYWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUu
LAorICAgIC8vIGFsbCBwcmV2aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVm
b3JlIHJlYWRpbmcgcGl4ZWxzLgogICAgIGdsOjpGbHVzaCgpOwogICAgIGF1dG8gYXR0cnMgPSBj
b250ZXh0QXR0cmlidXRlcygpOwogICAgIEdDR0xlbnVtIGZyYW1lYnVmZmVyVGFyZ2V0ID0gbV9p
c0ZvcldlYkdMMiA/IEdyYXBoaWNzQ29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhp
Y3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9z
dGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgeworICAgIGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTFN0YXRlJiBzdGF0ZSA9IG1fc3Rh
dGU7CisgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9t
dWx0aXNhbXBsZUZCTykgewogICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5
KEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBnbDo6QmluZEZyYW1lYnVm
ZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2Zibyk7CiAgICAgICAgIGdsOjpGbHVzaCgpOwogICAg
IH0KLSAgICBnbDo6UmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGRhdGEpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8g
PT0gbV9tdWx0aXNhbXBsZUZCTykKKyAgICBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KTsKKyAgICBnbDo6UmVhZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxlbmd0aCwgY29sdW1ucywgcm93cywgZGF0YSk7CisgICAg
R0xlbnVtIGVycm9yID0gZ2w6OkdldEVycm9yKCk7CisgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAm
JiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgZ2w6OkJp
bmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9tdWx0aXNhbXBsZUZCTyk7CiAKKyAg
ICBpZiAoZXJyb3IpIHsKKyAgICAgICAgLy8gQU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmlu
ZyB0aGUgUmVhZG5QaXhlbHNSb2J1c3RBTkdMRSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0
aGUKKyAgICAgICAgLy8gc3ludGhldGljIGVycm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBj
aGFubmVsIGZpeHVwIGJlbG93LgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgaWYgKCFhdHRycy5hbHBoYSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5
cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpICYmIChtX3N0YXRlLmJvdW5k
UmVhZEZCTyA9PSBtX2ZibyB8fCAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFk
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pKSkKKyAgICBpZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVy
T2JqZWN0ICYmICFhdHRycy5hbHBoYSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpS
R0JBIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpICYmIChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0g
bV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0
aXNhbXBsZUZCTykpKQogICAgICAgICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwg
aGVpZ2h0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YSkpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0ocmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwogI2VuZGlmCiB9CiAKLQog
Ly8gVGhlIGNvbnRlbnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uIGZvbGxvdywg
cG9ydGVkIHRvIHVzZSBBTkdMRS4KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KQpAQCAtODk4LDIwICs5MTksMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVm
ZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LAogICAgIGdsOjpC
dWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9
CiAKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0
ZmllbGQgYWNjZXNzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9p
ZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZz
ZXQsIGxlbmd0aCwgYWNjZXNzKTsKLX0KLQotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkKLXsKLSAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gR0xfRkFMU0U7Ci0KLSAgICByZXR1cm4gZ2w6
OlVubWFwQnVmZmVyKHRhcmdldCk7CisgICAgICAgIHJldHVybjsKKyAgICBHQ0dMdm9pZCogcHRy
ID0gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIEdyYXBo
aWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOworICAgIGlmICghcHRyKQorICAgICAgICByZXR1
cm47CisgICAgbWVtY3B5KGRhdGEuZGF0YSwgcHRyLCBkYXRhLmJ1ZlNpemUpOworICAgIGlmICgh
Z2w6OlVubWFwQnVmZmVyKHRhcmdldCkpCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xl
bnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVP
ZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKQpAQCAtMTAwOCwxNCArMTAyNSwxNSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbAogICAgIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3Jt
YXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZv
aWQqPihvZmZzZXQpLCAwKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdD
R0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4m
IHBhcmFtcykKK1ZlY3RvcjxHQ0dMaW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0
aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVp
bnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgVmVjdG9yPEdDR0xp
bnQ+IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwogICAgIEFTU0VSVChwcm9ncmFt
KTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dy
YW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwg
cGFyYW1zLmRhdGEoKSk7CisgICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5p
Zm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCByZXN1bHQu
ZGF0YSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBHQ0dMZW51bSBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpCkBAIC0y
MTAxLDIyICsyMTE5LDYgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6
OkdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCi17Ci0gICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBu
dWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRl
eCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCiBHQ0dM
c2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKQEAgLTIzOTIsMTIgKzIzOTQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQogICAgIGdsOjpFbmRRdWVyeSh0YXJnZXQp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiBwYXJhbXMpCitHQ0dMdWludCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTHVpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVj
dHVpdihpZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6
R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiAvLyBUcmFuc2Zvcm0gRmVlZGJhY2sgRnVuY3Rp
b25zCkBAIC0yODM5LDIwICsyODQyLDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVuCiAgICAg
Z2w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZs
b2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1
ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnYo
c2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogeworICAg
IEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJpdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIEdDR0xzeW5jIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCkBAIC0y
ODk1LDEyICsyOTAyLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OndhaXRTeW5j
KEdDR0xzeW5jIHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGluCiAgICAgZ2w6OldhaXRT
eW5jKHN5bmMsIGZsYWdzLCB0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50
IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTeW5jaXYoc3luYywgcG5h
bWUsIGJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlKTsKKyAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBu
YW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjczNTk3ZjQ3NTNkMGJlYzFkMDJlN2Q1ZmNmZGM2NDNhOTgzYzg4ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcApAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaCIKKworI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NP
QSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbjo6fkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCkgPSBkZWZhdWx0
OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTllODhjMmY5OWIxY2FhNTgxMTdjNzM5MTFhNTFi
NjdkZGU2MzJiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTAs
MCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9H
TCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKKyNpbmNsdWRl
IDxtZW1vcnk+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQW4gaW50ZXJmYWNlIGZvciBp
bXBsZW1lbnRpbmcgZnJvbnQgYnVmZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2Fw
CisvLyBjaGFpbiBvZiBJT1N1cmZhY2VzLgorLy8gVGhlIGltcGxlbWVudG9yIHdpbGwgb3duIHRo
ZSBJT1N1cmZhY2VzIGl0IHVzZXMgZm9yIGRpc3BsYXkuCisvLyBUaGUgY2xpZW50IG1heSBhdHRh
Y2ggbWV0YWRhdGEgdG8gZWFjaCBJT1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRh
dGEKKy8vIGJhY2sgb25jZSB0aGUgSU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZl
ciwgdGhlIGNsaWVudCBtYXkgbm90IG5lY2Nlc3NhcmlseQorLy8gYmUgYWJsZSB0byBvYnRhaW4g
dGhlIElPU3VyZmFjZSBpdHNlbGYgZm9yIHJldXNlLgorLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1l
dGFkYXRhIGlzIHRvIHVzZSBFR0xTdXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlz
IHdheQorLy8gd2hlbiB0aGUgZGlzcGxheSBjbGllbnQgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZh
Y2UgZGlzcGxheSwgdGhlIGNsaWVudCBjYW4gY29udGludWUgdXNpbmcKKy8vIHRoZSBleGlzdGlu
ZyBiaW5kaW5nIG9idGFpbmVkIHRocm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgorY2xh
c3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewor
cHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KCk7CisgICAgc3RydWN0IEJ1ZmZlciB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpJT1N1cmZhY2U+IHN1cmZhY2U7IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCisgICAgICAgIHZv
aWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8gUHJvZHVjZXIgc3BlY2lmaWMgbWV0YWRhdGEgaGFu
ZGxlIChzdWNoIGFzIEVHTFN1cmZhY2UpLgorICAgIH07CisgICAgLy8gUmV0dXJucyB0aGUgbWV0
YWRhdGEgaGFuZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGll
bnQgbWF5IHJlY2lldmUgYmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1
cmZhY2UsIGluIGNhc2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRoZQorICAgIC8vIHRpbWUgb2YgdGhl
IGNhbGwuCisgICAgLy8gUmV0dXJucyBlaXRoZXI6CisgICAgLy8gLSBFbXB0eSBidWZmZXIgaWYg
bm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRlZC4KKyAgICAvLyAtIEJ1ZmZlciB3aXRoIGVtcHR5
IHN1cmZhY2UgYW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1
ZmZlciB3YXMgYXZhaWxhYmxlCisgICAgLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4g
dXNlLgorICAgIC8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgorICAgIHZpcnR1YWwgQnVmZmVyIHJl
Y3ljbGVCdWZmZXIoKSA9IDA7CisKKyAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNw
bGF5IHdpdGggYSBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xpZW50IHRyYW5zZmVycyB0aGUg
b3duZXJzaGlwIG9mIHRoZSBJT1N1cmZhY2Ugc3VyZmFjZSBpbiB0aGUgYGJ1ZmZlcmAuCisgICAg
dmlydHVhbCB2b2lkIHByZXNlbnQoQnVmZmVyKSA9IDA7CisKKyAgICAvLyBEZXRhY2hlcyB0aGUg
Y2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBo
YW5kbGUuCisgICAgLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRl
ZCwgcmVjeWNsZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKyAg
ICAvLyB0aGlzLgorICAgIHZpcnR1YWwgdm9pZCogZGV0YWNoQ2xpZW50KCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmlu
ZGV4IDJlMWM3OTllODI4NTNiMzIwYjhjZWRkZDRhNmZlNWU1MDRhOWQ4OWMuLmFmYjRlZmFjYzdl
M2FiZmRmZjYxYjAxYzc5ZTdhOWRkZGE4Y2UxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCiAjaW1wb3J0ICJjb25maWcuaCIKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIEVHTERpc3Bs
YXkgSW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwog
ICAgIEVHTGludCBtaW5vclZlcnNpb24gPSAwOwogICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLSAg
ICBib29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICFpc0lu
V2ViUHJvY2VzcygpOworICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRl
eHRTdXBwb3J0ID0gIShpc0luV2ViUHJvY2VzcygpIHx8IGlzSW5HUFVQcm9jZXNzKCkpOwogICAg
IGlmIChzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKICAgICAg
ICAgLy8gRm9yIFdLMSB0eXBlIEFQSXMgd2UgbmVlZCB0byBzZXQgInZvbGF0aWxlIHBsYXRmb3Jt
IGNvbnRleHQiIGZvciBzcGVjaWZpYwogICAgICAgICAvLyBBUElzLCBzaW5jZSBjbGllbnQgY29k
ZSB3aWxsIGJlIGFibGUgdG8gb3ZlcnJpZGUgdGhlIHRocmVhZC1nbG9iYWwgY29udGV4dApAQCAt
MTM0LDcgKzEzNCw3IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHCiAgICAgaWYgKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0
cygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TChhdHRycywgaG9zdFdpbmRvdywgZGVzdGluYXRpb24pKTsKKyAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uLCBudWxscHRyLCBudWxscHRyKSk7
CiAKICAgICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNDcsMTMgKzE0NywxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hh
cmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8g
aG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQu
Y29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlv
bigpLCAmc2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygp
LCBob3N0V2luZG93LCBzaGFyZWRDb250ZXh0LmRlc3RpbmF0aW9uKCksICZzaGFyZWRDb250ZXh0
LCBudWxscHRyKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCksIGhvc3RXaW5kb3cpOwogCiAgICAg
cmV0dXJuIGNvbnRleHQ7CiB9CiAKK1JlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycywgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4mIHN3YXBDaGFpbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0R0w6OkRlc3RpbmF0aW9u
OjpPZmZzY3JlZW4sIG51bGxwdHIsICZzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRGT1JNKE1B
QykgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8
cmRhcjovLzUzMDYyNzk0Pi4KIAogc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENv
bnRleHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElP
UmVnaXN0cnlHUFVJRCBwcmVmZXJyZWRHUFVJRCkKQEAgLTIwNCw3ICsyMDksNyBAQCBzdGF0aWMg
dm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhl
bEZvcm1hdE9iaiBwaXhlbAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRH
TDo6RGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFy
ZWRDb250ZXh0KQorR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdywgR3JhcGhpY3NDb250ZXh0R0w6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBk
ZXN0aW5hdGlvbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMu
aXNXZWJHTDI7CkBAIC0zMzEsMTMgKzMzNiwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAog
ICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMo
KTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0gICAgLy8g
Q3JlYXRlIHRoZSBXZWJHTExheWVyCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0
aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZToh
YXR0cnMuYWxwaGFdKTsKKyAgICBpZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9
IHN3YXBDaGFpbjsKKyAgICBlbHNlIHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCisgICAgICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxv
Y10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVu
dHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV93ZWJH
TExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworICAgICAgICAgICAgW21fd2ViR0xMYXll
ciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKICNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKyAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3N3
YXBDaGFpbiA9ICZbbV93ZWJHTExheWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8gQ3Jl
YXRlIHRoZSB0ZXh0dXJlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAg
ICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBAIC00
MDYsMTMgKzQxNSwxMiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKCkKICAgICAgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQogICAg
ICAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdCdWZm
ZXJGQk8pOwogICAgIH0KLSAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBpZiAo
bV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9k
aXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExheWVy
KSB7Ci0gICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVC
dWZmZXJdOworICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3lj
bGVCdWZmZXIoKTsKICAgICAgICAgaWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAg
ICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRs
ZSk7Ci0gICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFjaENs
aWVudF07CisgICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0YWNo
Q2xpZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVHTF9E
ZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBAIC01
NzUsMTEgKzU4MywxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKQogICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdM
X05PX1NVUkZBQ0U7CiAgICAgfQogICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQgYnVm
ZmVyIG5vdywgYmVjYXVzZSBpdCBtb3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBhdCB0
aGUgdGltZSBpdCB3aWxsIGJlIHJldXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21f
d2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9z
d2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxl
KQogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZl
ci5oYW5kbGUpOwogICAgIHJlY3ljbGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICByZXR1
cm4gYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmco
KQoreworICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkp
OwogICAgIGF1dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVy
bmFsRnJhbWVidWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAg
IGlmICghYmFja2luZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1MCw3IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNv
bnN0CiAgICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0
byBhIGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVuIGNv
bnNpZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5zCiAg
ICAgLy8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGZp
bmRpbmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2ls
bCBzdGlsbCBiZSBhIFdpbmRvd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBXZWJL
aXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwg
YW5kCiAgICAgLy8gbV9kaXNwbGF5TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNlLgog
ICAgIGlmIChwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC02NDYsMTIgKzY1OSwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxv
d09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdAogICAgIC8vIGFuZCBNQUMvTUFDQ0FUQUxZU1QgYW5k
IE9QRU5HTC9PUEVOR0xFUy4KICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICAKKwog
I2lmIEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKICAgICBpZiAoaGFzTG93QW5kSGlnaFBv
d2VyR1BVcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIAorCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC02ODMsMTAgKzY5NiwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxs
IGJlIHVzZWQgZnJvbSBvdGhlciBncmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1h
bmRzLgogICAgIGdsOjpGbHVzaCgpOwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dl
YkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dh
cENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlz
cGxheU9iaiwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBb
bV93ZWJHTExheWVyIHByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rp
c3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dh
cENoYWluLT5wcmVzZW50KHsgV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNw
bGF5QnVmZmVyUGJ1ZmZlciB9KTsKICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05P
X1NVUkZBQ0U7CiAKICAgICBib29sIGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3
MTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgp
CiAKICAgICAvLyBFcnJvciB3aWxsIGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250
ZXh0Q3VycmVudCgpIHdoaWNoIHdpbGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAg
ICAgaWYgKCFoYXNOZXdCYWNraW5nKQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKTsKKyAgICAgICAgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAog
ICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2NkMjY4MjQyNGNh
YTFmYjI1ODViYmQ2ZTVlYjFiMGIwYjhiODUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYS5oCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KKworT0JKQ19DTEFTUyBXZWJHTExheWVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworCisvLyBBIGJhc2Ug
Y2xhc3MgZm9yIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHByb3h5IHNpZGUgaW1wbGVtZW50YXRp
b24gb24gQ29jb2EuCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5n
IFdlYkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJhd2luZyBidWZmZXIgdHJh
Y2tpbmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KKy8vIFRoZSBwYXJ0
cyB3ZXJlIG5lZWRlZCB0byBiZSBpbXBsZW1lbnRlZCBkdWUgdG8gbGFjayBvZiBhYnN0cmFjdGlv
bnMgYW5kCisvLyBzbWFsbCBwZW5kaW5nIGZpeGVzIGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcuCitj
bGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
IDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZUNvY29hKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5h
YmxlZDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0woKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVy
ZSgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyAgICB2
b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0ZWQo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0Zmll
bGQpIGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyKikgZmluYWw7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9JbWFnZURhdGEoKSBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0Nh
bnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgp
IGZpbmFsOworICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CisK
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250
ZXh0R0xDViogYXNDVigpIGZpbmFsOworI2VuZGlmCisgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wg
b3ZlcnJpZGVzLgorICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOworICAgIGJvb2wg
c3VwcG9ydHMoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZh
aWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOwor
ICAgIHZpcnR1YWwgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKyAgICBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgc3dhcENoYWluKCk7CisKK3ByaXZhdGU6CisgICAg
UmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKKworICAgIC8vIEd1YXJkZWQgYnkg
d2FpdFVudGlsSW5pdGlhbGl6ZWQoKS4KKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVF
eHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsK
KworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOworCisgICAgLy8gRklY
TUU6IERyYXdpbmcgYnVmZmVyIGNsZWFyIHRyYWNraW5nIHNob3VsZCBiZSBtb3ZlZCB0byB0aGUg
Y2xpZW50LgorICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKKyAgICBHQ0dMYml0
ZmllbGQgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSB7IDAgfTsKK307CisKK30KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGNmNzJjMjg0YzcyYWNlMzU2MTMwZjRlOTZmZDQzZmZhM2ZiYWIxMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KQEAgLTAsMCArMSwxOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKyNpbXBvcnQgIkltYWdl
RGF0YS5oIgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbXBvcnQgIldlYkdMTGF5ZXIu
aCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmIGF0dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMo
W1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNl
UGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyNpZm5kZWYgTkRFQlVH
CisgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CisjZW5kaWYK
KyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlQ29jb2E6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
KCkKK3sKK30KKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gMDsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVy
biAwOworfQorCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZUNvY29hOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJHTExheWVy
LmdldCgpOworfQorCisKK0V4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYTo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnNldENvbnRleHRWaXNp
YmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OnBvd2VyUHJlZmVyZW5jZVVzZWRG
b3JDcmVhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0ZXMoKS5pc1dlYkdMMjsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjptYXJrQ29udGV4dENoYW5nZWQo
KQoreworICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgor
ICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFu
Z2VkKCk7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sK
KyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRB
dHRyaWJ1dGVzKCk7CisgICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKKyAg
ICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVG
RkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJzLmRlcHRoKQorICAgICAgICAgICAgbV9idWZmZXJz
VG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7CisgICAg
ICAgIGlmIChhdHRycy5zdGVuY2lsKQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
fD0gR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICB9CisgICAgZm9y
IChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50
LT5kaWRDb21wb3NpdGUoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVy
Q29tcG9zaXRlZDsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7CisgICAg
aWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAgICAg
bV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xlYXI7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KEltYWdlQnVmZmVyKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVy
KCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhN
RTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29u
dGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKK30KKworI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzQ29udGV4dEdMQ1YqIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2E6OmFzQ1YoKQoreworICAgIHJldHVybiBudWxs
cHRyOworfQorI2VuZGlmCisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRp
YWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1l
KSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hOjplbnN1cmVFbmFibGVkKGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIGlmICht
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKG5h
bWUpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKKyAgICB9Cit9CisK
K2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYTo6aXNFbmFibGVkKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAg
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8mIGV4
dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX3Jl
cXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30KKworR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4mIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29j
b2E6OnN3YXBDaGFpbigpCit7CisgICAgcmV0dXJuIFttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsK
K30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLmgKaW5kZXggMTRiMDFlNzA1ZjIwNTMwMWM3Yzk3Y2Y2NmU3MWEw
OGJiZjQxZTcwNS4uN2ZlODhhMmZmNGNlMGY1NTlkNTlkYzFjZDk1MmEzYTdlYTg4MDk2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIuaApAQCAtMjMsNTIgKzIzLDIyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQg
IklPU3VyZmFjZS5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8bWVtb3J5
PgogI2ltcG9ydCA8d3RmL05ha2VkUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVj
dCBXZWJHTExheWVyQnVmZmVyIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJm
YWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgotICAgIHZvaWQqIGhhbmRsZSB7
IG51bGxwdHIgfTsgLy8gQ2xpZW50IHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBF
R0xTdXJmYWNlKS4KLX07Ci19Ci0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiAKIC8vIEEgbGF5ZXIgY2xhc3MgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50
IG9mIGEgMy1idWZmZXJpbmcgc3dhcAogLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KLS8vIFRoZSBs
YXllciB3aWxsIG93biB0aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgotLy8gVGhl
IGNsaWVudCBtYXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJl
Y2VpdmUgdGhlIG1ldGFkYXRhCi0vLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBk
aXNwbGF5ZWQuIEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKLS8vIGJl
IGFibGUgdG8gb2J0YWluIHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KLS8vIEV4YW1w
bGUgdXNlIG9mIHRoZSBtZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRo
ZSBtZXRhZGF0YS4gVGhpcyB3YXkKLS8vIHdoZW4gdGhlIFdlYkdMTGF5ZXIgaXMgZG9uZSB3aXRo
IHRoZSBJT1N1cmZhY2UgZGlzcGxheSwgdGhlIGNsaWVudCBjYW4gY29udGludWUgdXNpbmcKLS8v
IHRoZSBleGlzdGluZyBiaW5kaW5nIG9idGFpbmVkIHRocm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xl
IGxvZ2ljLgogQGludGVyZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgogCiAtIChpZClpbml0V2l0
aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6
KGJvb2wpY29udGVudHNPcGFxdWU7CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RX
aXRoQ29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKLS8vIFJldHVybnMg
dGhlIG1ldGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCi0vLyBD
bGllbnQgbWF5IHJlY2lldmUgYmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRz
IHN1cmZhY2UsIGluIGNhc2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRoZQotLy8gdGltZSBvZiB0aGUg
Y2FsbC4KLS8vIFJldHVybnMgZWl0aGVyOgotLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVy
IGhhcyBiZWVuIHN1Ym1pdHRlZC4KLS8vIC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQg
bm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRsZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFp
bGFibGUKLS8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KLS8vIC0gU3VyZmFj
ZSBhbmQgaGFuZGxlLgotLSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcilyZWN5Y2xlQnVmZmVy
OwotCi0vLyBQcmVwYXJlcyB0aGUgbGF5ZXIgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1
ZmZlci4KLS8vIENsaWVudCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNl
IHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhD
b250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcilidWZmZXI7Ci0KLS8vIERldGFjaGVz
IHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFk
YXRhIGhhbmRsZS4KLS8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0
ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCi0v
LyB0aGlzLgotLSAodm9pZCopZGV0YWNoQ2xpZW50OworLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2FwQ2hhaW47CiAKIEBlbmQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KaW5k
ZXggYzhmNGU3OWY3MzEyZWFhNmFiMDQ0NjgwODNlYThkMGM4YmVmYTNiYy4uMTY4ZmQ1ZjZjODQy
MzdiZGY4YWI5Y2JiY2E2NDA3Mzk1MDVjOTIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCkBAIC0yMCw3ICsyMCw3IEBA
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzIsMTMgKzMy
LDM5IEBACiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FM
YXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+Ci0jaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKworY2xhc3MgV2Vi
R0xMYXllclN3YXBDaGFpbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViR0xMYXllclN3
YXBDaGFpbihXZWJHTExheWVyKiBsYXllcikgIDogbV9sYXllcihsYXllcikgeyB9OworICAgIH5X
ZWJHTExheWVyU3dhcENoYWluKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworICAgIHZvaWQgcHJlc2Vu
dChCdWZmZXIpIG92ZXJyaWRlOworICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKKyAgICAgICAgICAg
IGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKKyAgICAgICAgICAgICAgICBt
X3NwYXJlQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KG1fc3BhcmVCdWZmZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQor
ICAgIHZvaWQqIGRldGFjaENsaWVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQo
IW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9IG1fZGlzcGxh
eUJ1ZmZlci5oYW5kbGU7CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUgPSBudWxscHRy
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBXZWJDb3JlOjpJT1N1cmZhY2Uq
IGRpc3BsYXlTdXJmYWNlKCkgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UuZ2V0KCk7
IH0KK3ByaXZhdGU6CisgICAgQnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBCdWZmZXIgbV9z
cGFyZUJ1ZmZlcjsKKyAgICBXZWJHTExheWVyKiBjb25zdCBtX2xheWVyOworfTsKIAogQGltcGxl
bWVudGF0aW9uIFdlYkdMTGF5ZXIgewotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX2Nv
bnRlbnRzQnVmZmVyOwotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX3NwYXJlQnVmZmVy
OwotCiAgICAgQk9PTCBfcHJlcGFyZWRGb3JEaXNwbGF5OworICAgIE9wdGlvbmFsPFdlYkdMTGF5
ZXJTd2FwQ2hhaW4+IF9zd2FwQ2hhaW47CiB9CiAKIC0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxS
YXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50
c09wYXF1ZQpAQCAtNDcsNiArNzMsNyBAQAogICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zv
cm0zRElkZW50aXR5OwogICAgIHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsK
ICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOworICAgIF9zd2FwQ2hh
aW4uZW1wbGFjZShzZWxmKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNzMsMzAgKzEwMCwy
MSBAQAogICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KLQotLSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgcmVjeWNsZUJ1ZmZlcgorLSAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2FwQ2hhaW4KIHsK
LSAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKLSAgICAgICAgaWYgKF9zcGFyZUJ1ZmZl
ci5zdXJmYWNlLT5pc0luVXNlKCkpCi0gICAgICAgICAgICBfc3BhcmVCdWZmZXIuc3VyZmFjZS5y
ZXNldCgpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShfc3BhcmVCdWZmZXIpOwotICAgIH0KLSAg
ICByZXR1cm4geyB9OworICAgIHJldHVybiBfc3dhcENoYWluLnZhbHVlKCk7CiB9CiAKLS0gKHZv
aWQpcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZm
ZXIpIGJ1ZmZlcgorLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheQogewotICAgIEFTU0VSVCghX3Nw
YXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIF9zcGFyZUJ1ZmZlciA9IFdURk1vdmUoX2NvbnRlbnRz
QnVmZmVyKTsKLSAgICBfY29udGVudHNCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiAgICAgW3Nl
bGYgc2V0TmVlZHNEaXNwbGF5XTsKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gWUVTOwogfQog
CiAtICh2b2lkKWRpc3BsYXkKIHsKLSAgICBpZiAoX2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UgJiYg
X3ByZXBhcmVkRm9yRGlzcGxheSkgewotICAgICAgICBzZWxmLmNvbnRlbnRzID0gX2NvbnRlbnRz
QnVmZmVyLnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpOworICAgIGlmIChfc3dhcENoYWluLT5k
aXNwbGF5U3VyZmFjZSgpICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKKyAgICAgICAgc2VsZi5j
b250ZW50cyA9IF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCktPmFzTGF5ZXJDb250ZW50cygp
OwogICAgICAgICBbc2VsZiByZWxvYWRWYWx1ZUZvcktleVBhdGg6QCJjb250ZW50cyJdOwogICAg
IH0KICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNB
TGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7CkBAIC0xMDYsMTMgKzEyNCwxNCBA
QAogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBOTzsKIH0KIAotLSAodm9pZCopIGRldGFjaENs
aWVudAorQGVuZAorCit2b2lkIFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnByZXNlbnQoQnVmZmVyIGJ1
ZmZlcikKIHsKLSAgICBBU1NFUlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICB2b2lkKiBy
ZXN1bHQgPSBfY29udGVudHNCdWZmZXIuaGFuZGxlOwotICAgIF9jb250ZW50c0J1ZmZlci5oYW5k
bGUgPSBudWxscHRyOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgQVNTRVJUKCFtX3NwYXJlQnVm
ZmVyLnN1cmZhY2UpOworICAgIG1fc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZl
cik7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgIFttX2xheWVy
IHByZXBhcmVGb3JEaXNwbGF5XTsKIH0KLUBlbmQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRl
eCAzOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi45OWFkOTE2NTI1OTE4
NzNlMGU4M2ZlODc4OTI1ZWNhMjMzYTFhMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2Uu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJG
bG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0
ICJJbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlR3JhcGhpYy5oIgogI2ltcG9ydCA8Q29yZUlt
YWdlL0NJQ29udGV4dC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA3ZWM4MWNm
NGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi4xNjJjN2E4OGU4NjBjN2I5NTBmNmI0
MTA3YTE0N2I2ZjA3NDk1OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMjIy
LDcgKzIyMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIz
Nyw3ICsyMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNl
ZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMcwogI2VuZGlmCiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
bG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Myw3ICsy
NTMsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgRwogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2MWZiYTc3OGY4ZmI0Mzg0YjFi
YzJkYjM4ZWNmNmM0ODNlYi4uYmE3Mjk5ZGIyZjA0MTljM2Y4Y2E0ZjQxZWY2YjVhN2ViNGNhNzRj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTM2Niw3ICsz
NjYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RB
TkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMcwogICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NH
THNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICosIGJvb2wpCit2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBH
Q0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBH
Q0dMc2l6ZWkgKiwgR0NHTFNwYW48R0NHTHZvaWQ+LCBib29sKQogewogICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0NGNlZTRh
MjJkOGZiMjhjNjQuLjhhY2I5YzgzNzRmOWFjZGNjNjBmMzExYTQ4MTAxYWFlZjE5OThjYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRh
LCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFj
ZWZjYmI4YWMzLi5kNTcxNjkyZjM2MWE0ZjRmYjg1YTUwYmE1YmVjMjA1ZjhjYzU5MjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTAogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJy
YXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHCiAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwg
Y291bnQsIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdF
bGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2Rl
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwKICAg
ICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50
ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmlt
Y291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZp
c29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKQogewogICAgIGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSkgewog
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYzI1NWIwYzEyZjRmY2Jm
YTQ2ZGIwMmQ1NWM4MGI0Y2I3N2QxN2I3MC4uMmMyYzM4ZTdhZGNiMzQ4NDU3YTA4ZWE0ZWM0MzUw
NTM1NzdlMmU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAj
aW5jbHVkZSAiSU9TdXJmYWNlLmgiCiAjZW5kaWYKIApAQCAtODYsNyArODcsNyBAQCB0eXBlZGVm
IFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFtZUhhc2g7CiAKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMUHJpdmF0ZTsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29u
dGV4dEdMCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERl
c3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbik7CkBAIC05NCw2ICs5NSw4IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w+IGNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVk
Q29udGV4dCk7CisgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRl
Rm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpOworCiAgICAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9jb250ZXh0T2JqOyB9CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93
ZWJHTExheWVyLmdldCgpKTsgfQpAQCAtMTkxLDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAg
Ym9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291
bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAgIHZvaWQgZ2V0QXR0YWNo
ZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBH
Q0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKTsKICAgICBHQ0dMaW50
IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkg
ZmluYWw7CiAgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBAIC0yMTksOCArMjIyLDYg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAg
IHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRV
bmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5h
bDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTIzNiw3ICsyMzcsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBw
YXJhbSkgZmluYWw7CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdD
R0xmbG9hdCB1bml0cykgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRh
dGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZUNvdmVy
YWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CkBAIC0yNTQs
NyArMjU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OwogICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9m
ZnNldCkgZmluYWw7CiAKQEAgLTMxNywxMiArMzE5LDEwIEBAIHB1YmxpYzoKICNpZiAhVVNFKEFO
R0xFKQogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRh
dGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7
CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RC
eXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBk
c3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAjZW5kaWYKICAgICB2b2lkIGNvcHlCdWZmZXJT
dWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50
cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXpl
KSBmaW5hbDsKIAotICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3Mp
IGZpbmFsOwotICAgIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgZmlu
YWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgYmxp
dEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZp
bmFsOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9i
amVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICAg
ICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgZmluYWw7
CisgICAgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBs
ZXIoKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyKSBmaW5hbDsKQEAgLTM5Myw4ICszOTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYW1wbGVy
UGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CiAg
ICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBH
Q0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdD
R0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykg
ZmluYWw7CiAgICAgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jKSBmaW5hbDsKQEAgLTQwMyw3
ICs0MDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZp
ZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CiAgICAgLy8gZ2V0U3luY1BhcmFt
ZXRlcgogICAgIC8vIEZJWE1FIC0gdGhpcyBjYW4gYmUgaW1wbGVtZW50ZWQgYXQgdGhlIFdlYkdM
IGxldmVsIGlmIHdlIHNpZ25hbCB0aGUgV2ViR0xTeW5jIG9iamVjdC4KLSAgICB2b2lkIGdldFN5
bmNpdihHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
ICp2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjaygpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1H
TE9iamVjdCBpZCkgZmluYWw7CkBAIC00MjAsNyArNDIwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3Jt
R0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZp
bmFsOwogICAgIC8vIGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBjYWxs
cyBhYm92ZS4KICAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmlu
YWw7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwg
VmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRB
Y3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dM
dWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dM
dWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9y
bUJsb2NrUGFyYW1ldGVyCkBAIC00MjksMTEgKzQyOSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZp
bmFsOwogCi0jaWYgIVVTRShBTkdMRSkKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCByZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwg
R0NHTHVpbnQgZHN0T2Zmc2V0KTsKLSNlbmRpZgotCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAK
ICAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMs
IGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3Jh
cGhpY3NDb250ZXh0Jik7CkBAIC01MTUsNyArNTEwLDcgQEAgcHVibGljOgogI2VuZGlmIC8vICFV
U0UoQU5HTEUpCiAKIHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5h
dGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9
IG51bGxwdHIpOworICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNj
cmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRyLCBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogPSBudWxscHRyKTsKIAogICAgIC8v
IENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0IGV2ZW50dWFs
bHkgY2FsbCBPcGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50
cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCkBA
IC01MjcsNyArNTIyLDkgQEAgcHJpdmF0ZToKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KICAgICB2
b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKLSAgICAKKworICAgIHZv
aWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xz
aXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmpl
Y3QpOworCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJhdGlvbiBsZWF2
ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9pZCBjaGVja0dQVVN0YXR1
cygpOwogCkBAIC01NDgsMTAgKzU0NSwxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAgYm9vbCByZXNo
YXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGFsbG9jYXRlQW5kQmluZERpc3Bs
YXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluKiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKKyAgICAvLyBUT0RPOiB0aGlzIHNob3Vs
ZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gaW1hZ2UgYnVmZmVyLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE3OSAuCiAgICAgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxscHRyIH07CkBAIC01NzksNyArNTc5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgaXNWYWxpZChmYWxzZSkKICAgICAgICAgewogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwKGVu
dW0gQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEFTU0VSVChzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUgfHwg
c3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBlID09
IFNIQURFUl9TWU1CT0xfVFlQRV9WQVJZSU5HKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIHVzaW5nIEJvdW5kVGV4dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0sCiAg
ICAgICAgICAgICBzdGQ6OnBhaXI8R0NHTHVpbnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAgIFdU
Rjo6SW50SGFzaDxHQ0dMZW51bT4sIAorICAgICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVt
PiwKICAgICAgICAgICAgIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVp
bnQ+LAogICAgICAgICAgICAgV1RGOjpQYWlySGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czxHQ0dMdWludD4+CiAgICAgICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4ODY3MjAzOWFlYTRmNTk5OTZlNGQ5
NGUxYzFhMGZlLi5mYTI4N2Y2MDNmZDI4OWE4MzdiNzZlMTU1M2ViYmRhM2RjNzIyM2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTIyNzgs
MTkgKzIyNzgsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERp
cmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEcKIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0
RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9k
ZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxl
bWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAg
ICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQs
IHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewotICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhB
dHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKIH0KIAogI2lmIEhBVkUoT1BFTkdM
XzQpICYmIEVOQUJMRShXRUJHTDIpCkBAIC0yMzM1LDEzICsyMzM1LDggQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMaW50cHRyLAogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQs
IGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3Ro
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51
bSwgR0NHTGludHB0ciwgR0NHTFNwYW48R0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0odGFy
Z2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjQnl0ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGRzdERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJB
TShsZW5ndGgpOwogfQogCiAjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykK
QEAgLTI3MTIsNyArMjcwNyw3IEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2
KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3Jt
R0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShxdWVy
eSk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKQEAgLTI3NTYsMTggKzI3NTEsMTkgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW4KICAgICBVTlVTRURfUEFSQU0ocGFyYW0pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xm
bG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFs
dWUpOworICAgIHJldHVybiAwLmY7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpCisKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFN
KHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBH
Q0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRp
dGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjgwNiwxMiArMjgwMiwxMiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0Zmll
bGQgZmxhZ3MsIEdDR0xpbgogICAgIFVOVVNFRF9QQVJBTSh0aW1lb3V0KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFt
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsK
ICAgICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAg
ICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAtMjg5NCwxMSArMjg5MCwxMyBAQCBWZWN0
b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtSW5kaWNlcyhQ
bGF0Zm9ybUdMT2JqZWN0IHBybwogI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VT
XzMpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCiB7CisgICAgVmVj
dG9yPEdDR0xpbnQ+IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwogICAgIEFTU0VS
VChwcm9ncmFtKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNp
dihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwg
cG5hbWUsIHBhcmFtcy5kYXRhKCkpOworICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dy
YW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwg
cmVzdWx0LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
aW5kZXggNjI4NDQ1MzI1MDMzNTEwN2ZkNTQ5ODIyMzJiOGI5ZWFlYzhlNjhjYi4uOWY4MzE3YjE4
ZDUzYjdiM2MxNjY2OWE0YzUxMTk5M2VhZjM3Yzc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0x
MjMsNiArMTIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcwog
CisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTAogICAgIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogCiAgICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcgpAQCAtMjE4LDYgKzIxOSw3IEBA
IHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uCiAKKyAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5CiAKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCBlZGI2Y2E1OTc5ZDJmNGRlZjhiMmIyZTc3M2Y5ZDY5YWU3ODZlN2U5Li40
YTY3ZGY4ZWRjM2I0ZjQ4OTE4NzcwMmVmYmYwNDFiM2QzNGE5MTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMCw2ICsyMCw3IEBAICQo
SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvbW9kZWxzLnB5CiAkKEpBVkFTQ1JJ
UFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5H
UFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMzEsNiArMTMyLDcgQEAgJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA3NTY3OWY1NWY1YWUzOTliNWVhZjQ3N2YxODkz
MjU2YmMyNDg4NDRkLi43Y2QzZGJjY2EzNTBjNmUzODE0YzM0MGMzOTNjOTYzZWRiYjk4MTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAg
LTE3NSw2ICsxNzUsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCAzNzcwMWIwMWMzYzFhMmMzMDBlMWRkMmQ3MmU2Yjg1MjM3ZjQyNGI1Li45NzZiMWE1YTNlNWMw
ZDMxMTVkNDQ1MGM5MDg2MTU3MTllNmRlY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0xNzEsNiArMTcxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwK
QEAgLTIyNyw2ICsyMjgsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlQbHVnaW5Qcm9jZXNz
L1BsdWdpblByb2Nlc3MgXAogCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBc
CiAJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFwKIAlHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eSBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwZTJl
ODgzMmIxZTIwZjFlMGYzMTlkNWQ5ZjI1ZDcyY2UxYmY3M2FkLi40NGI5ZjYzZTE0YzUwYjc0MTk5
M2Q2ZjM1YTVhOTVmNWFmZDgwYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02NCw2ICs2NCwxMCBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oPgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5o
IgpAQCAtMjkwLDYgKzI5NCwyMSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VS
VF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgfSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNl
R3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0Nv
bnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9CisjZW5kaWYKIHZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAgICAgZ3B1UHJvY2VzcygpLm5v
d1BsYXlpbmdNYW5hZ2VyKCkuY2xlYXJOb3dQbGF5aW5nSW5mb0NsaWVudCgqdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAppbmRleCAyNjc4ZGJjNGU1ZDM2NWZhZDI4ZThiNDgyNzg2Mzc2MmEzYzQ1NzhkLi41YWVkZmJi
NGQyY2FjN2I3NjYwZmYwNzM2MDlkMzc3YzYwMTU4NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJSZW1vdGVB
dWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NJZGVudGlmaWVyLmg+CkBAIC0zOSw2ICs0MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dn
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgRU5BQkxFKFdFQkdMKQor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7CkBAIC01NCw2ICs2MCw3IEBAIGNsYXNzIFJlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7
CiBjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKIGNsYXNzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ7CitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CkBA
IC0xMTksNiArMTI2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNr
ZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJp
bmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAorI2lmIEVOQUJMRShXRUJH
TCkKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB2b2lk
IHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
I2VuZGlmCisKICAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKTsKICAgICB2b2lkIHNldE5v
d1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIFdlYkNvcmU6Ok5v
d1BsYXlpbmdJbmZvJiYpOwogCkBAIC0xODAsNyArMTkyLDEwIEBAIHByaXZhdGU6CiAKICAgICB1
c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsK
LQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB1c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1h
cCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1h
cCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOworI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBt
X2NkbUZhY3RvcnlQcm94eTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA1MTk0ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1MmMzNjVlYjMyNzFmMzQ0Li45ZDU0ZTE2NDU5NWIw
YTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2Vu
ZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2
b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIENs
ZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5v
d1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGUyMzEwZDRhZWUwMDZiOWY5NDBhZmE5YzQzOGMxYWNjOTVlM2Jh
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Lmg+CisjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0woYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKSk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpCisgICAgOiBtX2NvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgKnRoaXMpKQorICAgICwgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpKQorICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
ID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9j
b250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250
ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmlu
ZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0Nv
bnRleHRHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChleHRlbnNpb25zLCBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQor
eworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCitHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQo
KTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAg
ICByZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKK3sKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250
ZXh0KCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdl
ZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJl
Y3ljbGVCdWZmZXIoKQoreworICAgIHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikK
K3sKKyAgICBBU1NFUlQoIW1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX2Rpc3BsYXlC
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Cit9CisKK3ZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpkZXRhY2hDbGllbnQoKQoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGlzcGxh
eUJ1ZmZlci5oYW5kbGUsIG51bGxwdHIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlmICh3
aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0
KTsKKyAgICBlbHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
bV9jb250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9
IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIE1hY2hTZW5kUmlnaHQgc2Vu
ZFJpZ2h0OworICAgIGlmIChkaXNwbGF5QnVmZmVyKQorICAgICAgICBzZW5kUmlnaHQgPSBkaXNw
bGF5QnVmZmVyLT5jcmVhdGVTZW5kUmlnaHQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHNlbmRSaWdodCkpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1
cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmIGV4dGVuc2lvbikKK3sKKyAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAg
bV9jb250ZXh0LT5tYXJrQ29udGV4dENoYW5nZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTViNjNiYjhk
ODkyMmU3NGJhY2RhMjZkNzk4NTQyNmQwZGZhZDdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAg
LTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKworI2luY2x1ZGUgPFdl
YkNvcmUvRXh0ZW5zaW9uc0dMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOworCisvLyBHUFUgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2
ZXMgbWVzc2FnZXMgYWJvdXQgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMKKy8vIGFuZCBpc3N1ZXMg
cmVhbCBHcmFwaGljc0NvbnRleHRHTCBjYWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2Fn
ZXMuCisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmlu
ZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBmaW5hbAorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6Q2xpZW50CisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
KCkgZmluYWw7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgorICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGll
bnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmluYWw7CisgICAgdm9pZCBm
b3JjZUNvbnRleHRMb3N0KCkgZmluYWw7CisgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpIGZpbmFs
OworICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpIGZpbmFsOwor
CisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgor
ICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgZmluYWw7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZl
cikgZmluYWw7CisgICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgZmluYWw7CisKKyAgICAvLyBNZXNz
YWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpOworICAgIHZvaWQgZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChTdHJpbmcmJik7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQo
KTsKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVk
LmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOworICAgIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluOjpCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ5MjlkOTk3NjdiZGI2OGJmZDZiZWNhZTE2NjJlMjI1MzNjNjY5
OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyODkgQEAKKy8q
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wu
IERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAm
JiBQTEFURk9STShDT0NPQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wg
Tm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBk
aXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkK
KworICAgIHZvaWQgU2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgdm9pZCBTeW50aGVz
aXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB2b2lkIE1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
QWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHZvaWQgQXR0YWNoU2hhZGVyKHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB2b2lkIEJpbmRBdHRyaWJMb2Nh
dGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nIG5hbWUpCisgICAgdm9p
ZCBCaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJp
bmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBC
aW5kUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lk
IEJpbmRUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJs
ZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEp
CisgICAgdm9pZCBCbGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBCbGVuZEVx
dWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAg
IHZvaWQgQmxlbmRGdW5jKHVpbnQzMl90IHNmYWN0b3IsIHVpbnQzMl90IGRmYWN0b3IpCisgICAg
dm9pZCBCbGVuZEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwg
dWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90IGRzdEFscGhhKQorICAgIHZvaWQgQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENsZWFyKHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBDbGVh
ckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQor
ICAgIHZvaWQgQ2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB2b2lkIENsZWFyU3RlbmNpbChp
bnQzMl90IHMpCisgICAgdm9pZCBDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wg
Ymx1ZSwgYm9vbCBhbHBoYSkKKyAgICB2b2lkIENvbXBpbGVTaGFkZXIodWludDMyX3QgYXJnMCkK
KyAgICB2b2lkIENvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgdm9pZCBDb3B5VGV4U3Vi
SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwg
aW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVCdWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVGcmFtZWJ1ZmZlcigpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVByb2dyYW0oKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVSZW5k
ZXJidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVGV4dHVyZSgpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAg
dm9pZCBEZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZUZyYW1lYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzAp
CisgICAgdm9pZCBEZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERl
bGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlVGV4dHVyZSh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgRGVwdGhGdW5jKHVpbnQzMl90IGZ1bmMpCisgICAgdm9pZCBEZXB0
aE1hc2soYm9vbCBmbGFnKQorICAgIHZvaWQgRGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQg
ekZhcikKKyAgICB2b2lkIERldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcx
KQorICAgIHZvaWQgRGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBEaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBEcmF3QXJyYXlzKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVu
dHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgRW5hYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRmluaXNoKCkKKyAgICB2
b2lkIEZsdXNoKCkKKyAgICB2b2lkIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1
aW50MzJfdCBhcmczKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFy
ZzMsIGludDMyX3QgbGV2ZWwpCisgICAgdm9pZCBGcm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAg
ICB2b2lkIEdlbmVyYXRlTWlwbWFwKHVpbnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdldEFjdGl2
ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEF0dHJpYkxvY2F0
aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRTdHJpbmcodWludDMyX3QgbmFtZSkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZsb2F0dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3Qg
dmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSkgLT4gKGludDY0X3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjRpKHVpbnQzMl90IHBuYW1l
LCB1aW50MzJfdCBpbmRleCkgLT4gKGludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRQcm9ncmFtaSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBwbmFtZSkgLT4g
KGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCb29sZWFudih1
aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTxib29sPiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVp
bnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFByb2dyYW1JbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFk
ZXJJbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlw
ZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dCwgMj4gcmFuZ2UsIEdDR0xpbnQgcHJlY2lzaW9uKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtZnYodWludDMy
X3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRV
bmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFs
dWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2Nh
dGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtTG9jYXRpb24odWludDMy
X3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBwbmFtZSkgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SGludCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBJc0J1ZmZlcih1
aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IElzRW5hYmxlZCh1aW50MzJfdCBjYXApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgSXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUHJvZ3JhbSh1aW50MzJfdCBhcmcwKSAtPiAo
Ym9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUmVuZGVyYnVmZmVyKHVp
bnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SXNTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBJc1RleHR1cmUodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBMaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB2b2lkIExp
bmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBQaXhlbFN0b3JlaSh1aW50MzJfdCBw
bmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9y
LCBmbG9hdCB1bml0cykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgdm9pZCBTYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisg
ICAgdm9pZCBTY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBTdHJpbmcg
c3RyaW5nKQorICAgIHZvaWQgU3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYs
IHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZh
Y2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQg
U3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2VwYXJhdGUo
dWludDMyX3QgZmFjZSwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1aW50MzJf
dCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBTdGVuY2ls
T3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwg
dWludDMyX3QgenBhc3MpCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyaSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgVW5p
Zm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3JtMWZ2KGlu
dDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBV
bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHZvaWQgVW5pZm9ybTFp
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAg
dm9pZCBVbmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2
b2lkIFVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4gdikKKyAgICB2b2lkIFVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGlu
dDMyX3QgeSkKKyAgICB2b2lkIFVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTNmKGludDMyX3QgbG9jYXRp
b24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBVbmlmb3JtM2Z2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlm
b3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikK
KyAgICB2b2lkIFVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3JtNGZ2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlm
b3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgeiwg
aW50MzJfdCB3KQorICAgIHZvaWQgVW5pZm9ybTRpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MmZ2KGludDMy
X3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2
YWx1ZSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0
cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5p
Zm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVc2VQcm9ncmFtKHVpbnQzMl90IGFy
ZzApCisgICAgdm9pZCBWYWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZl
cnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHZvaWQgVmVydGV4QXR0
cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiB2YWx1
ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxv
YXQgeSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdCwgMj4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliM2YodWlu
dDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+IHZh
bHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGZ2KHVpbnQz
Ml90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiB2YWx1ZXMpCisgICAgdm9p
ZCBWZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQz
Ml90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIFZpZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIEJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwg
dWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJEYXRhMSh1aW50
MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSwgdWludDMyX3Qg
dXNhZ2UpCisgICAgdm9pZCBCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qg
b2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBSZWFk
blBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplKSAt
PiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZv
aWQgUmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgdm9pZCBUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
aW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTJEMSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVGV4U3ViSW1hZ2UyRDAo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3Qg
eW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAg
dm9pZCBUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMy
X3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAg
dm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVp
bnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90
IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQg
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Zmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHZvaWQg
Q3JlYXRlVmVydGV4QXJyYXkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNW
ZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29w
eUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQs
IHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBzaXpl
KQorICAgIHZvaWQgR2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9m
ZnNldCwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNY
MCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBk
c3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMy
X3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJl
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxheWVyKQorICAgIHZvaWQgSW52YWxpZGF0ZUZyYW1l
YnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0
YWNobWVudHMpCisgICAgdm9pZCBJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMyX3QgdGFy
Z2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cywgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgUmVh
ZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3Jh
Z2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdl
M0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHZv
aWQgVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTNEMSh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwg
dWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9p
ZCBUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
eG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4
U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZz
ZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UzRCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBp
bnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3Qg
aW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBD
b21wcmVzc2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVp
bnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBp
bnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRl
cHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBHZXRGcmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyBu
YW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZv
cm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlmb3JtMnVp
KGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2b2lkIFVu
aWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50
MzJfdCB2MikKKyAgICB2b2lkIFVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3Qg
djAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9pZCBVbmlm
b3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBk
YXRhKQorICAgIHZvaWQgVW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm0zdWl2KGludDMyX3QgbG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlm
b3JtNHVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBk
YXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wg
dHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5p
Zm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4NGZ2KGlu
dDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQg
VW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4M2Z2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiBkYXRhKQorICAgIHZvaWQgVmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWJJNGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+
IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQz
Ml90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0
ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5k
ZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB2b2lkIERyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQz
Ml90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVp
bnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwg
aW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlcykK
KyAgICB2b2lkIENsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVm
ZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVh
ckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVpbnQzMl90
IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2ls
KQorICAgIHZvaWQgQ3JlYXRlUXVlcnkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBEZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB2b2lkIElz
UXVlcnkodWludDMyX3QgcXVlcnkpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAg
IHZvaWQgRW5kUXVlcnkodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0UXVlcnkodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwgdWludDMy
X3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IENyZWF0ZVNhbXBsZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBEZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJc1NhbXBs
ZXIodWludDMyX3Qgc2FtcGxlcikgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBCaW5kU2FtcGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAg
IHZvaWQgU2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUs
IGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1w
bGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBHZXRTYW1wbGVyUGFy
YW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMy
X3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgRmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3Qg
ZmxhZ3MpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElz
U3luYyh1aW50NjRfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIERlbGV0ZVN5bmModWludDY0X3QgYXJnMCkKKyAgICB2b2lkIENsaWVudFdhaXRTeW5j
KHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0KSAtPiAodWlu
dDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBXYWl0U3luYyh1aW50NjRf
dCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHZvaWQgR2V0U3lu
Y2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAtPiAodWlu
dDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB2b2lkIElzVHJhbnNmb3JtRmVlZGJhY2sodWludDMy
X3QgaWQpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFRy
YW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgdm9pZCBC
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgdm9pZCBF
bmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmdz
KHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHZhcnlpbmdzLCB1aW50MzJfdCBidWZm
ZXJNb2RlKQorICAgIHZvaWQgR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3JtRmVlZGJh
Y2soKQorICAgIHZvaWQgUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgQmluZEJ1
ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVy
KQorICAgIHZvaWQgQmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5k
ZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQorICAg
IHZvaWQgR2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4g
dW5pZm9ybU5hbWVzKSAtPiAoVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1
aW50MzJfdD4gdW5pZm9ybUluZGljZXMsIHVpbnQzMl90IHBuYW1lKSAtPiAoVmVjdG9yPGludDMy
X3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUJsb2NrSW5k
ZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+ICh1aW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9j
a05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgpIC0+IChT
dHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5k
aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJf
dCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYo
dWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBu
YW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PiBwYXJhbXMpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJh
bWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gx
LCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRz
dFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAg
dm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAtPiAodWlu
dDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJh
eU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBh
cmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0
ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBJbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lk
IFB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFBvcEdyb3VwTWFya2Vy
RVhUKCkKKyAgICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IGJ1ZnMpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9k
ZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAg
dm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNv
dW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQor
ICAgIHZvaWQgVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBkaXZpc29yKQorfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVk
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjdkY2I5MzY1YzJjNzNlOTdj
Y2I2ZjJiOWYzYzkwNDMxN2E2ZWVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmgKQEAgLTAsMCArMSwxMTgzIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMgZmlsZSBz
aG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQorICAgIHZv
aWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAgICB9CisgICAgdm9pZCBzeW50aGVzaXpl
R0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoZXJyb3IpOworICAgIH0KKyAgICB2b2lkIG1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
YWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNoYWRlcih1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRB
dHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nJiYgbmFt
ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGlu
ZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0YXJn
ZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1
ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5i
aW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFRleHR1
cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kQ29s
b3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
OworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvbihtb2RlKTsKKyAgICB9CisgICAgdm9pZCBi
bGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJH
QiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmModWludDMyX3Qgc2ZhY3Rv
ciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5j
KHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVp
bnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMy
X3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1NlcGFyYXRl
KHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgIH0KKyAgICB2b2lkIGNo
ZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xl
bnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY2xlYXIodWludDMyX3QgbWFzaykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFzayk7CisgICAgfQorICAgIHZvaWQgY2xl
YXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7CisgICAgfQorICAgIHZvaWQgY2xl
YXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJTdGVu
Y2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwg
Ym9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb2xvck1h
c2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlZCksIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihibHVlKSwgc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAgIHZvaWQgY29tcGlsZVNoYWRlcih1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGFyZzApOwor
ICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhT
dWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7
CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9i
amVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7
CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9y
bUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVByb2dyYW0oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUmVuZGVyYnVmZmVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2hhZGVyKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihhcmcw
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVy
ZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVpbnQzMl90IGFy
ZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihhcmcwKTsKKyAgICB9
CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBk
ZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRl
bGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKHVp
bnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZl
cihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2
b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aEZ1bmModWludDMy
X3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMpOworICAg
IH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZsYWcpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oZmxhZykpOworICAgIH0KKyAg
ICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpOworICAgIH0KKyAgICB2b2lkIGRl
dGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgZGlz
YWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGUoY2Fw
KTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5k
ZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShp
bmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90
IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJy
YXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBl
bmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGUoY2Fw
KTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRl
eCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5k
ZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZl
cnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQs
IGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBh
cmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZl
clRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpOwor
ICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2VuZXJhdGVNaXBt
YXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZW5lcmF0ZU1p
cG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYih1aW50MzJfdCBw
cm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBhcmcy
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUoYXJnMikp
OworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3RyaW5nKHVpbnQz
Ml90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0
RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0
PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2KHBu
YW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwgdWlu
dDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9y
PEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBnZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJ
bnRlZ2VyNjQocG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxp
bnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NGkodWlu
dDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdl
cjY0aShwbmFtZSwgaW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1pKHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dy
YW1pKHByb2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRf
dCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxi
b29sPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGJv
b2xlYW4sIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPihyZWludGVycHJldF9jYXN0PGJv
b2wqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRF
cnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbUluZm9Mb2codWlu
dDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhhcmcwKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdl
dCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgZ2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGFyZzAsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlckluZm9Mb2co
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFyZzApOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVp
bnQzMl90IHByZWNpc2lvblR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90LCAyPiwgaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBzdGQ6OmFycmF5PEdDR0xpbnQsIDI+IHJhbmdlIHsgfTsKKyAgICAgICAgR0NH
TGludCBwcmVjaXNpb24gPSB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLCAmcHJlY2lzaW9uKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAy
PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihyYW5nZS5kYXRhKCkpLCByYW5nZS5zaXplKCkp
LCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShhcmcwKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdl
dFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRl
eFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtZnYodWludDMyX3QgcHJvZ3Jh
bSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNfY2FzdDxz
aXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihw
cm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUuZGF0
YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2KHVpbnQz
Ml90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1ZShzdGF0
aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVu
aWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJf
dCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVu
aWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFs
dWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWlu
dCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYg
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0dXJuVmFs
dWUpKTsKKyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgbW9k
ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOworICAgIH0K
KyAgICB2b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzQnVm
ZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBjYXAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzRW5hYmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRnJh
bWVidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1ZmZlcihh
cmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUmVuZGVy
YnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVmZmVyKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmlzU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4dHVyZSh1
aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcwKTsKKyAg
ICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsKKyAg
ICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7Cisg
ICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShm
bG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBs
ZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7CisgICAg
fQorICAgIHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3IoeCwgeSwg
d2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQzMl90IGFy
ZzAsIFN0cmluZyYmIHN0cmluZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291
cmNlKGFyZzAsIHN0cmluZyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1bmModWludDMyX3Qg
ZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNp
bEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwg
dWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmNTZXBh
cmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNr
KHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrKG1h
c2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwg
dWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2tTZXBh
cmF0ZShmYWNlLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3AodWludDMyX3QgZmFp
bCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5zdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCBzdGVu
Y2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFp
bCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcFNl
cGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgdGV4UGFy
YW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJh
bSk7CisgICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
MWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybTFmKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWZ2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbiwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwg
di5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwg
ZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKGxv
Y2F0aW9uLCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmZ2KGludDMyX3QgbG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtMml2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0
aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRh
KCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zZihpbnQzMl90IGxvY2F0
aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0z
ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0z
aShsb2NhdGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeiwgZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0
aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGZ2KGludDMyX3QgbG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50
MzJfdCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00aShs
b2NhdGlvbiwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZs
b2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9z
ZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVl
LmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1c2VQcm9ncmFtKHVpbnQzMl90IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAg
IHZvaWQgdmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnZhbGlkYXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIxZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliMWYoaW5kZXgsIHgpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjFm
dih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4mJiB2YWx1ZXMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgbWFrZUdD
R0xTcGFuPDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEo
KSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxv
YXQgeCwgZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmYo
aW5kZXgsIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBp
bmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4mJiB2YWx1ZXMpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgbWFrZUdDR0xTcGFuPDI+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2YoaW5k
ZXgsIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdih1aW50MzJfdCBp
bmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4mJiB2YWx1ZXMpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgbWFrZUdDR0xTcGFuPDM+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliNGYoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRm
dih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4mJiB2YWx1ZXMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgbWFrZUdD
R0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEo
KSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJfdCBz
dHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KG5vcm1hbGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOwor
ICAgIH0KKyAgICB2b2lkIHZpZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmlld3BvcnQo
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTAodWludDMy
X3QgdGFyZ2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4o
YXJnMSksIHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMSh1aW50MzJfdCB0YXJn
ZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhLCB1aW50MzJfdCB1c2FnZSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNp
emUoKSksIHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVpbnQzMl90IHRh
cmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRp
Y19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
ZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGNo
YXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDApOworICAgICAgICBt
X2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
ZGF0YSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIHJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xp
bnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQwKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50
MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9y
bWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCB0ZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMy
X3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhl
bHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdl
MkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkp
OworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0
YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
eG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
dWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFn
ZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lk
IGRyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJf
dCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRy
YXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0K
KyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNv
dW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7Cisg
ICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcih1aW50MzJfdCBpbmRleCwgdWludDMy
X3QgZGl2aXNvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliRGl2aXNv
cihpbmRleCwgZGl2aXNvcik7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVmVydGV4QXJyYXkoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRl
eEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVZl
cnRleEFycmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXkodWludDMyX3Qg
YXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9Cisg
ICAgdm9pZCBiaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZFZlcnRleEFycmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlCdWZm
ZXJTdWJEYXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1aW50
NjRfdCByZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3Qgc2l6ZSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3Jp
dGVUYXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oc2l6
ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1
aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVfdD4o
ZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdl
dCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgZGF0YSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNy
Y1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90
IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNy
Y1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Cisg
ICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IGxheWVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmVM
YXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CisgICAgfQor
ICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkpLCBhdHRhY2htZW50
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRz
LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQs
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0YWNobWVu
dHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnJlYWRCdWZmZXIoc3JjKTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdl
dCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2
b2lkIHRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHRleFN0b3JhZ2UzRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTNEMCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwg
dWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lk
Kj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJ
bWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQz
Ml90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4
U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZz
ZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVs
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRo
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4
U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9m
ZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1h
Z2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
aW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9y
bWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRh
dGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1h
dCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXpl
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRG
cmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWko
aW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0xdWkobG9jYXRpb24sIHYwKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMnVpKGlu
dDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwg
dWludDMyX3QgdjIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWkobG9jYXRp
b24sIHYwLCB2MSwgdjIpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWkoaW50MzJfdCBsb2Nh
dGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwg
djIsIHYzKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2
KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM3Vp
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0
cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSks
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0
YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYo
aW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2
KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihpbnQzMl90IGxv
Y2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJJNGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+
JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGl2KGlu
ZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFs
dWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKHVpbnQzMl90
IGluZGV4LCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1aW50MzJfdCB3KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6
LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4mJiB2YWx1ZXMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6
ZSwgdWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5
cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAg
IHZvaWQgZHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVp
bnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFy
dCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7Cisg
ICAgfQorICAgIHZvaWQgZHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4m
JiBidWZzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycyhtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwg
aW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdmFsdWVz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1
ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVl
cy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJ1
aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1
ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVm
ZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1
ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJmaSh1aW50MzJfdCBidWZm
ZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qgc3RlbmNpbCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIs
IGRlcHRoLCBzdGVuY2lsKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVRdWVyeShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5jcmVhdGVRdWVyeSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUXVlcnkodWludDMyX3QgcXVl
cnkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVF1ZXJ5KHF1ZXJ5KTsKKyAgICB9
CisgICAgdm9pZCBpc1F1ZXJ5KHVpbnQzMl90IHF1ZXJ5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4g
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1F1
ZXJ5KHF1ZXJ5KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4o
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgcXVlcnkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJlZ2luUXVlcnko
dGFyZ2V0LCBxdWVyeSk7CisgICAgfQorICAgIHZvaWQgZW5kUXVlcnkodWludDMyX3QgdGFyZ2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRRdWVyeSh0YXJnZXQpOworICAgIH0KKyAg
ICB2b2lkIGdldFF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aSh1aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHVp
bnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTYW1wbGVyKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNhbXBsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIodWludDMyX3Qg
c2FtcGxlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2FtcGxlcihzYW1wbGVy
KTsKKyAgICB9CisgICAgdm9pZCBpc1NhbXBsZXIodWludDMyX3Qgc2FtcGxlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+aXNTYW1wbGVyKHNhbXBsZXIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRTYW1w
bGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBh
cmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVy
LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQz
Ml90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVy
LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBw
bmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBmZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMc3luYyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KHJldHVyblZhbHVlKSkpOworICAgIH0KKyAgICB2b2lkIGlzU3luYyh1aW50NjRfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1N5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4o
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRl
U3luYyh1aW50NjRfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTeW5j
KHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkp
OworICAgIH0KKyAgICB2b2lkIGNsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90
IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2xpZW50V2FpdFN5
bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzAp
KSwgZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0x1aW50NjQ+KHRpbWVvdXQpKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHdhaXRTeW5jKHVp
bnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPndhaXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRp
Y19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHRp
bWVvdXQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTeW5jaShyZWludGVycHJldF9jYXN0PEdDR0xz
eW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVUcmFuc2Zv
cm1GZWVkYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjaygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKTsKKyAgICB9CisgICAg
dm9pZCBpc1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xl
YW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5p
c1RyYW5zZm9ybUZlZWRiYWNrKGlkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVHJhbnNmb3Jt
RmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpOworICAgIH0KKyAgICB2
b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgdHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiYm
IHZhcnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcy
IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJv
Z3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFy
ZzIpKTsKKyAgICB9CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2
b2lkIHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyQmFz
ZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZl
cik7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBz
aXplKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBp
bmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBzdGF0aWNfY2Fz
dDxHQ0dMc2l6ZWlwdHI+KHNpemUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtSW5kaWNl
cyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiYmIHVuaWZvcm1OYW1lcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0s
IHVuaWZvcm1OYW1lcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jtcyh1aW50MzJfdCBwcm9n
cmFtLCBWZWN0b3I8dWludDMyX3Q+JiYgdW5pZm9ybUluZGljZXMsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50PiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtQmxvY2tJbmRl
eCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiB1bmlmb3JtQmxvY2tOYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0x1aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVu
aWZvcm1CbG9ja0luZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybUJsb2NrQmlu
ZGluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMy
X3QgdW5pZm9ybUJsb2NrQmluZGluZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bUJsb2NrQmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmlu
ZGluZyk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50
NjRfdCBwYXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9y
PEdDR0xpbnQsIDQ+IHBhcmFtcyhzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtc1NpemUpLCAwKTsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlm
b3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4o
cGFyYW1zLmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3Jj
WDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3Qg
ZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQz
Ml90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNy
Y1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAgICB9Cisg
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRl
VmVydGV4QXJyYXlPRVMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBh
cmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVsZXRlVmVy
dGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNWZXJ0ZXhBcnJh
eU9FUyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4o
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVModWludDMy
X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmJpbmRW
ZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaW5zZXJ0
RXZlbnRNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApOworICAgIH0KKyAgICB2
b2lkIHB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkucHVzaEdyb3VwTWFya2VyRVhUKGFyZzApOworICAgIH0K
KyAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnBvcEdyb3VwTWFya2VyRVhUKCk7CisgICAgfQorICAgIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBidWZzKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1
ZnMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNv
dW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9Cisg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90
IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0x2b2lkcHRy
PihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRl
eCwgZGl2aXNvcik7CisgICAgfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWFjL0dQVVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQ
VVByb2Nlc3NNYWMubW0KaW5kZXggYjdiYjYzYjI5YWQ4MDIxNzJkZjI3YTEyODk1YmIxOTk4ZmE0
YjZiMC4uMjRjNDM3Y2FhZTdmOGY5YTlhZmY5MjcwM2VmY2Y5ZGEwMzFlNGM0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQpAQCAtMzIsOCArMzIs
OCBAQAogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9y
dCAiV0tGb3VuZGF0aW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4K
KyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZp
Y2VzU1BJLmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw5ICs0
NCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHZvaWQgR1BVUHJvY2Vzczo6aW5pdGlh
bGl6ZVByb2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYg
MAogICAgIC8vIEhhdmluZyBhIHdpbmRvdyBzZXJ2ZXIgY29ubmVjdGlvbiBpbiB0aGlzIHByb2Nl
c3Mgd291bGQgcmVzdWx0IGluIHNwaW4gbG9ncyAoPHJkYXI6Ly9wcm9ibGVtLzEzMjM5MTE5Piku
Ci0gICAgT1NTdGF0dXMgZXJyb3IgPSBTZXRBcHBsaWNhdGlvbklzRGFlbW9uKHRydWUpOwotICAg
IEFTU0VSVF9VTlVTRUQoZXJyb3IsIGVycm9yID09IG5vRXJyKTsKKyAgICBhdXRvIHJldHZhbCA9
IENHU1NldERlbnlXaW5kb3dTZXJ2ZXJDb25uZWN0aW9ucyh0cnVlKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChyZXR2YWwgPT0ga0NHRXJyb3JTdWNjZXNzKTsKKyAgICBDR1NTaHV0ZG93blNlcnZlckNv
bm5lY3Rpb25zKCk7CisjZW5kaWYKICNlbmRpZgogCiAgICAgbGF1bmNoU2VydmljZXNDaGVja0lu
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29t
LmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCmluZGV4IGRiMDZlNTM0ZjdmNTFkMmViZDAz
ODI1ZjU4MjQ1Zjg0OTZmOGIxNzkuLmVkMTAwYjM2ZWQ2ZjQ2ZDRhYWY2MzU0NDc3ODgyYWI3OTNh
MTFiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
YWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCkBAIC0yMDcsNiArMjA3LDcgQEAK
ICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeQUFQTCwoRGlzcGxheVBpcGV8T3BlbkNMZGlz
YWJsZWR8SU9HcmFwaGljc19MRVIofF9SZWdUYWdfMXxfUmVnVGFnXzB8X0J1c3lfMil8YWxpYXMt
cG9saWN5fGJvb3QtZGlzcGxheXxkaXNwbGF5LWFsaWFzfG11eC1zd2l0Y2gtc3RhdGV8bmRydi1k
ZXZ8cHJpbWFyeS1kaXNwbGF5fHNsb3QtbmFtZSkiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdl
eCAjIl5BVFksKGNiaXRzfGZiXyhsaW5lYnl0ZXN8b2Zmc2V0fHNpemUpfGludHJldikiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiQVRZLERldmljZU5hbWUiKSA7OyBOZWVkZWQgYnkgTWV0YWwgY29t
cGlsZXJzCisgICAgKGlva2l0LXByb3BlcnR5ICJBVFksRUZJRGlzcGxheSIpCiAgICAgKGlva2l0
LXByb3BlcnR5ICJBVFksRmFtaWx5TmFtZSIpIDs7IERpdHRvCiAgICAgKGlva2l0LXByb3BlcnR5
ICJBVkNTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQmFja2xpZ2h0SGFuZGxlIikK
QEAgLTIxNyw2ICsyMTgsOSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ2Fwc0xvY2tEZWxheSIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJDYXNlU2Vuc2l0aXZlIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIkNvbmZpZ1N0YXRlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGFuZXMiKQorICAgIChp
b2tpdC1wcm9wZXJ0eSAiRFBMaW5rQml0IikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua1Jh
dGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRGVzY3JpcHRpb24iKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiRGV2ZWxvcG1lbnQiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5EZXZpY2Uo
IENoYXJhY3RlcmlzdGljc3xFcUlEKSIpCkBAIC0yMjksMTAgKzIzMywxNyBAQAogICAgIChpb2tp
dC1wcm9wZXJ0eSAiRmFtaWx5IElEIikKICAgICAoaW9raXQtcHJvcGVydHkgIkZvcmNlU3VwcG9y
dGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkZvcm1hdHMiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiRnJhbWVidWZmZXJFbmFibGVkIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVy
U3RhcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJHUFVDb25maWd1cmF0aW9uVmFyaWFibGUi
KQorICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVRENDRGlzcGxheWFibGUiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiR1BVRGVidWdOdWxsQ2xpZW50TWFzayIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJH
cHVEZWJ1Z1BvbGljeSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVSYXdDb3VudGVyQnVuZGxl
TmFtZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVSYXdDb3VudGVyUGx1Z2luQ2xhc3NOYW1l
IikKICAgICAoaW9raXQtcHJvcGVydHkgIkhFVkNTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiSElEUG9pbnRlckFjY2VsZXJhdGlvblR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAi
SHdDdHhDYWNoZVVwZGF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPQWNjZWwo
RGlzcGxheVBpcGVDYXBhYmlsaXRpZXN8SW5kZXh8VHlwZXN8UmV2aXNpb24pIikKICAgICAoaW9r
aXQtcHJvcGVydHktcmVnZXggIyJeSU8oQ2xhc3N8TWF0Y2hDYXRlZ29yeXxOYW1lTWF0Y2gpIikK
ICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9BdWRpb0NvbnRyb2woQ2hhbm5lbElEfElE
fFN1YlR5cGV8VXNhZ2V8VmFsdWUpIikKQEAgLTI4Miw2ICsyOTMsOCBAQAogICAgIChpb2tpdC1w
cm9wZXJ0eSAiSU9QYXJlbnRNYXRjaCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklP
UENJKChDbGFzc3xQcmltYXJ5fFByb3BlcnR5fClNYXRjaHxFeHByZXNzKENhcGFiaWxpdGllc3xM
aW5rKFN0YXR1c3xDYXBhYmlsaXRpZXMpKXxNU0lNb2RlfFJlc291cmNlZHxUdW5uZWxsZWQpIikK
ICAgICAoaW9raXQtcHJvcGVydHkgIklPUE1Jc1Bvd2VyTWFuYWdlZCIpCisgICAgKGlva2l0LXBy
b3BlcnR5ICJJT1BlcnNvbmFsaXR5UHVibGlzaGVyIikKKwogICAgIChpb2tpdC1wcm9wZXJ0eS1y
ZWdleCAjIl5JT1BsYXRmb3JtKFNlcmlhbE51bWJlcnxVVUlEKSIpCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJJT1Bvd2VyTWFuYWdlbWVudCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1Byb2JlU2Nv
cmUiKQpAQCAtMzE3LDYgKzMzMCw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJQcm90b2NvbCBD
aGFyYWN0ZXJpc3RpY3MiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiUmVtb3ZhYmxlIikKICAgICAo
aW9raXQtcHJvcGVydHktcmVnZXggIyJeUmVzZXRPbihMb2NrfFVubG9jaylNcyIpCisgICAgKGlv
a2l0LXByb3BlcnR5ICJTV0lQX3Byb3BlcnRpZXMiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2Fm
ZUVqZWN0UmVxdWVzdGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhbXBsZVJhdGVzIikKICAg
ICAoaW9raXQtcHJvcGVydHkgIlNlcmlhbCBOdW1iZXIiKQpAQCAtMzM4LDYgKzM1Miw3IEBACiAg
ICAgKGlva2l0LXByb3BlcnR5ICJhdHRhY2hlZC1ncHUtY29udHJvbC1wYXRoIikKICAgICAoaW9r
aXQtcHJvcGVydHktcmVnZXggIyJeYXVkaW8tKGNvZGVjLWluZm98ZGV2aWNlLW12YWx1ZXxkZXZp
Y2UtbnZhbHVlfHNlbGVjdG9yKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJhdi1zaWduYWwtdHlw
ZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJiYWNrbGlnaHQtUFdNLWZyZXEiKQogICAgIChpb2tp
dC1wcm9wZXJ0eSAiYmNkVmVyc2lvbiIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXihi
b2FyZHxkZXZpY2V8cmV2aXNpb258c3Vic3lzdGVtfHZlbmRvciktaWQiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiYm9vdC1nYW1tYS1yZXN0b3JlZCIpCkBAIC0zNTAsNiArMzY1LDExIEBACiAgICAg
KGlva2l0LXByb3BlcnR5ICJjb25uZWN0b3ItdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXihkZXZpY2V8cmV2aXNpb258c3Vic3lzdGVtLXZlbmRvcnx0b3VjaC1zaXplKS1pZCIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJkZXZpY2VfdHlwZSIpCisgICAgKGlva2l0LXByb3BlcnR5
ICJkaXNwbGF5LWJwYyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWNvbm5lY3QtZmxh
Z3MiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1saW5rLWNvbXBvbmVudC1iaXRzIikK
KyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktcGl4ZWwtY29tcG9uZW50LWJpdHMiKQorICAg
IChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS10eXBlIikKICAgICAoaW9raXQtcHJvcGVydHkgImRw
bSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJlcnJvcmRiIikgOzsgTmVlZGVkIGZvciBPcGVuR0wg
b24gb2xkZXIgaGFyZHdhcmUKICAgICAoaW9raXQtcHJvcGVydHkgImZpbGV2YXVsdC1pbWFnZSIp
IDs7IE5lZWRlZCBieSBMYXVuY2hTZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTli
ZGI4NjdhYjg2YjhjNTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVk
NjZkZGY5NWYyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVM
ZWdhY3lDRE1Qcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcw
ZmE1ZGU0ZmFkZTE1MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3
NmM4YjgyNWM2ZTQ1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4MDIzMTkwNGY4ZWYw
ZWFhOTM2MjI5YWZhOTc1OTguLmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4OWI4MDNmNmFiZjQx
YzhlOWVkZGU0MTQyNzY5MzI4MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1YWEzZDU0ODA2Zjcy
YzdlZGMwY2IxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywxNSArMjcsMTYgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDZiZmJmYWZiMjA0NDc4MzBkNzMwYzM4YzU1
ZDkxNjAyMmMyM2QzMTYuLjA2ZTMwOWU0ZDU3ZWEwNDdmNWVkODI5MDI1OGIxOWNiY2RhNjE5MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNv
dXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkuaApAQCAtMzgsNyArMzgsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IDI0NWNmNDBkZmM2
ZmM3MjQxNzQ5OWM5OTZlZWE5NWYwYTNhOGQ2OWEuLjg2ODJjZDc5NWE1ZjU0NGFiYjc4ZTdjMWI4
NTg3Yjk2ODgzZjk0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtMjksNyArMjksNiBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
UmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggMzkwYzBjZTFjMjdiNjA4ZGM5N2FhZmE1MTg2MzYx
ODgwYzNhZjRkMy4uYzMzNzgzMzNjMDI2NjZkYTYxYWJhYzY0OTQ3MDIxMjFkYjVlODZjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIK
KwogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
QEAgLTM4LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNs
YXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5LmgKaW5kZXggMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYxODNhYmQwZTc0NWI4
MzUzMy4uODQzYmIwNmY3YjU2YzZlM2NmYmVlNzlhN2U0MjgxZWZlZThmOWE3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkuaApAQCAtMjgsMTQgKzI4LDE1IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmOGFiYzFmNDA1ZmMxNDY5NDc1
YjRkOTBiYWQzZDUzY2EwZjgwMTRlLi42MWM0NzA4YWU5NmRiY2FhNTY5ODA5ZWUxOTk1YmU4MTZh
OTFmZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShMSUJX
RUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbXBv
cnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJS
VENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDc4OGM1ZjAwYzAyZjRmMTQ4
ZmVlY2NkMzhkMTA2ODE4YjBkN2U5NjEuLjNhYjRlNGIxY2YxYzE0MTIzMGMxM2U0NTc2YzVlZDZl
NmVmYzJlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBI
QVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtMzYsNyArMzcsNiBAQAog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9D
b2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQppbmRleCA3YTYzMzYzNDdj
MDA3ZTk3YjczYjU0Mzc3NDkxNjgzOGQ2NDAzN2RhLi4xYWE1M2NjMmZiNzdiYWY5ZTMyNjUwNzIx
MDgwOWZkNzZjZmJiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2Nv
YS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtMjYsNyArMjYsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIu
aCIKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW1w
b3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBmNmVkODExZjUzNDJmZTQ4NTU1MTc2Zjg5
ZDUxNDU3NTYyYzY2NTg1Li4wYmNkNTY3M2M5MzQ2YWRhMTFkNjU2YzNhZGQ1MWJlNGVkYmMyNzMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCkBA
IC0zOSwxMCArNDAsNiBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb247CiBP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfSAvLyBuYW1lc3BhY2UgSVBDCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC0x
MTIsNCArMTA5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5j
cHAKaW5kZXggZGRiZTRlZWRkNDQxZGY4N2M1NWFkMzMwZjA0MmNjZGNmYWRmYjkwYi4uNjUxZmYy
NTRmOTA1YzE2YTkwY2I0ODJjOTc3M2Q0YWM3NDI5NGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5o
IgogI2luY2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlN
ZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmgKaW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlmZGVjMzY5MDE3NzI3
NC4uOTNmMDNhODI1NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNp
bmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBAIE9CSkNfQ0xBU1Mg
TlNQcm9ncmVzczsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlm
CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0MGYyN2MxNjA1
YzNjZDc0YmM2OTA3YjdkOTFiNDdiNzYyLi43MjZkZDk5MGJhZmQ0Mzk0YjVhZmMwMzJhMWNmMjBm
MTg0OWM0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1
MC4uOTgwYTA2Zjc4MzlkYmQ1ZTlmOWQ1MDQ1NDA5YTMzZDc3YjFjMDM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
TWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC00OSw3ICs1MCw2IEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlv
bjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNw
cAppbmRleCA0NDliMTNkOGUwN2IyY2QwNDJjNGJhMzYzNmFiNzkzZDM3YjFjM2Y0Li5jNzc4ODgx
MWYwMzJkNThmOGI1Mjc3MzZlMWQyMjc4NDEwZjkxM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFu
bmVsLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMzE5NjQxOTBkMTQxZDU0OWRhMGJh
ZjJkYzhiZjI5N2I0ZTU4MWU4OS4uMDQzNGJmODgwOWE3ZWIzZWNjMThlOGY2NTBjYzAyNzhhZTZl
YjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgpAQCAtNDAs
NyArNDEsNiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNz
IENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA1YjQ4OWNjNTM4ZjdjMDcxNTEwMTA2YzU4
ZjVjMDk0ZWM5YThlMWI4Li40OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2NjMzNlMzhjMTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJOZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVz
dEhlYWRlckZpZWxkUHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNTJlYzM5MjY5MDIxOGVkZTY2OGQ1NWU2Mzhk
OGUxNzUwMmZkNmVlNS4uNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5ZmIyMDZmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtRXJyb3IuaD4KQEAg
LTM3LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNz
IERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2NiZmYxMDg5Y2Mx
MDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLmQzN2Q3ODA2OTgzYmJhNTQ3Y2EwZjkyMzVlYjRi
ZjZiNzMxNTY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CkBAIC00Myw3ICs0NCw2IEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tl
dFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmlu
ZGV4IGRiNTc5NWRkMjE3ZjQ1YWQ1ZjY3ZTMwYjc5MWY5MmUyNzZjMDI5ODYuLjk2MWU0NjQ1OWJl
NzcxNzdlMjYwNWU3ZDg2NTJhZGE4MDIwOTdiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0zMSw5ICszMSw2IEBACiAjaW5jbHVkZSAiV2Vi
U29ja2V0VGFza1NvdXAuaCIKICNlbHNlCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCmluZGV4IGRh
YzY5MzUwN2ViM2VmY2VhNmQxMDk0ODAxYmMwMWIzNmZlMjYzOWQuLmU2ODI2ZTQ3ZTgzOTU5NDAy
OGFmOGY0YWVkMjM5MmI0YjA1ZDJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtMjcsMTUgKzI3LDEy
IEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzazsKIAotbmFt
ZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFz
a0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRU
YXNrQ29jb2EubW0KaW5kZXggODU1MzQ4NzQ0MDRjZTJiYWE0NGFlNjU2NTQ3ZDM3MjI1MzMyZWFi
OC4uOTBiYzQwOWJmZmI3MGEwZWU5ZTczNThiMzg2NzU5N2QyOWYyNGUwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tF
VCkKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25D
b2NvYS5oIgogI2ltcG9ydCAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0NWZjNjY5ZDc2NmE3NjFj
NWQ3NzNkYzk1ZjA1NDFhMzhlMzZmOGUzLi5hM2U3MDE0YjVkOGVjMDk3MzhmZmE3ZDU2NjQ1NDUw
MTBmMDUzNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1NvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFz
a1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oCmluZGV4IGU0MjFiOWUxYzcxMzE4NDM0ZjY0ODdmNWZjYjVhNmE4N2JkNzM5MTkuLjA4
ODkyMzk1OWZlNDYwZmYyYmJhNGM4YzA4Mzk5ODA2NTdiZjM0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCkBAIC0y
NSwxNCArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU29j
a2V0Q2hhbm5lbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmgKaW5kZXggZTAwYTBjY2RmYTU4NzVjMDI4YzUwNTIzMTE0MTcyOGVlOTViNDM5Mi4uZTM4YmMx
YzYwYWY2ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01Myw2ICs1NCw0
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1lbnRDb2RlciB7CiAg
ICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5
UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJy
YXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVu
Y2Uuc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9CisgICAgc3RhdGljIE9w
dGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
eworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5j
ZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICAg
ICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRh
KSwgRXh0ZW50KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+
PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJy
YXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAg
ICB7CisgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJl
ZmVyZW5jZS5zaXplKCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXplKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSks
IGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQor
ICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIGlmICghc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUoKTsK
KyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhS
ZWZlcmVuY2Uoc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0
YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJh
eVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIHN0YXRpY19j
YXN0PHNpemVfdD4oc2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNldCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZDMyYmI0NTdhNWI4ODVmM2Q1NjY4N2U3OWYxNWMzYTI2NzFiZTY0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApAQCAtMCww
ICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bGltaXRz
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2lubGluZSBj
b25zdGV4cHIgc2l6ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50ID0gYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVu
Y2U7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlSZWZlcmVuY2U8VCwgYXJy
YXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2Uo
KSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAg
ICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBB
cnJheVJlZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCisg
ICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwgbV9zaXplKHZlY3Rvci5z
aXplKCkpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX3NpemU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7Cisg
ICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0
b3I8VD4gcmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9zaXplKTsKKwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBt
X2RhdGEgeyB9OworICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZSB7CitwdWJsaWM6Cisg
ICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25z
dCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KKworICAg
IHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29u
c3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2
ZWN0b3IuZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5zaXplKCkgPT0gRXh0
ZW50KTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIUV4dGVudDsgfQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gRXh0ZW50OyB9CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKKyAgICB7
CisgICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNFbXB0eSgpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7IH07Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitBcnJheVJlZmVy
ZW5jZShjb25zdCBXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBBcnJheVJlZmVy
ZW5jZTxUPjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgKaW5kZXggZWMzZDE0YWU4ZjNlYzI0NzA1NDc2M2NhZWU5MDljYzJjODc1ZjVk
OC4uYmJkN2FiY2I0Y2RjNjA0MzgyYjEwNjVlMzMyMzg0NDljNmFjNTk3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjI3LDEwICsyMjcsMTIgQEAgcHVibGlj
OgogICAgIHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7CiAK
ICAgICB2b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKTsK
LQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQgPSAwLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOyAvLyBUaHJlYWQtc2Fm
ZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsg
fSk7IC8vIFRocmVhZC1zYWZlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNl
dDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQg
b25seS4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGNoZWNrIHRoZSBTZW5kU3luY1Jlc3Vs
dCBmb3IgdHJ1ZS9mYWxzZSBpbiBjYXNlIHRoZXkgbmVlZCB0byBrbm93IGlmIHRoZSByZXN1bHQg
d2FzIHJlYWxseSByZWNlaXZlZC4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGhvbGQgb24g
dG8gdGhlIFNlbmRTeW5jUmVzdWx0IGluIGNhc2UgdGhleSByZWZlcmVuY2UgdGhlIGNvbnRlbnRz
IG9mIHRoZSByZXBseSB2aWEgRGF0YVJlZmVyZXJlbmNlIC8gQXJyYXlSZWZlcmVuY2UuCisgICAg
dXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj47CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+
IHdhaXRGb3JPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICAKICAgICAv
LyBUaHJlYWQtc2FmZS4KQEAgLTI0OSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYWlu
IHRocmVhZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAg
Ym9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRz
OjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3lu
YzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJ
bnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTU1MSw3ICs1NTMs
NyBAQCB2b2lkIG1vdmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYgYSwgc3RkOjp0dXBsZTxCLi4u
PiYgYikKICAgICBUdXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3RkOjp0dXBsZTxBLi4uPiwgc3Rk
Ojp0dXBsZTxCLi4uPj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwg
T3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpzZW5kU3luYyhU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU3MCwx
NSArNTcyLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICAvLyBOb3cgc2VuZCB0aGUg
bWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUo
ZW5jb2RlciksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgaWYgKCFyZXBseURlY29k
ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8v
IERlY29kZSB0aGUgcmVwbHkuCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVu
dHM+IHJlcGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7
CiAgICAgaWYgKCFyZXBseUFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIG1vdmVUdXBsZShXVEZNb3ZlKCpyZXBseUFyZ3VtZW50cyksIHJl
cGx5KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gcmVwbHlEZWNvZGVyOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9u
U2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjI1ZmRhN2JlZDJmZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EYXRhUmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgot
Ci0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLQotbmFtZXNwYWNl
IElQQyB7Ci0KLXZvaWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheSgqdGhpcyk7
Ci19Ci0KLWJvb2wgRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlVmFy
aWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCmluZGV4IDM0
NTBjMzFiNzNkZGI2YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNkNjkyN2YzNDFjNWFh
OTNmYzEwNzNjYjA3NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
YXRhUmVmZXJlbmNlLmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgogCiBuYW1l
c3BhY2UgSVBDIHsKIAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0gICAgCi1jbGFz
cyBEYXRhUmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0
OwotCi0gICAgRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkK
LSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIERhdGFSZWZl
cmVuY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQotICAg
ICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6
ZSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
bV9zaXplOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQot
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAgICAgICBpZiAoaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2Rh
dGE7IAotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25zdAotICAgIHsK
LSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCht
X2RhdGEsIG1fc2l6ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1wcml2YXRlOgotICAg
IGNvbnN0IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwotfTsKK3VzaW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5jZTx1aW50OF90LCBh
cnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGViNzMwNWJmZDE5MTA4
NzA2OGQzMGJjZGI4ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJjNWFiOGJiYWRi
ZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAgLTE4NiwyMCAr
MTg2LDE1IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgRGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRlY29kZUZpeGVkTGVu
Z3RoUmVmZXJlbmNlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQogewotICAgIHVpbnQ2
NF90IHNpemU7Ci0gICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxpZ25tZW50LCBzaXpl
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhID0g
bV9idWZmZXJQb3M7CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAgIGRhdGFSZWZlcmVu
Y2UgPSBEYXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBkYXRhOwogfQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1lbnQoQXR0YWNobWVu
dCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCBiNzJk
ZDhhY2UyNzczZGIzNTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4ODJmYzkwOTg0YjJm
YTU3YmY5YzQ4Yjk2NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CkBAIC00MCw3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEYXRhUmVmZXJl
bmNlOwogY2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSA6IHVpbnQ4X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXpl
X3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhlIGRhdGEgcmVm
ZXJlbmNlIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFy
Z3VtZW50RGVjb2RlciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAgIC8vIFRoZSBkYXRh
IGluIHRoZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUg
bGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8gUmV0dXJucyBu
dWxscHRyIG9uIGZhaWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0IHVpbnQ4X3Qq
IGRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGht
ZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKFQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRl
eCBmZDQwOTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5lODNhM2U0YWZmNDJh
NTc1NTA1ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KQEAgLTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6OndyYXBGb3JUZXN0aW5n
KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9yaWdpbmFsLT5zZXRT
aG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShTaG91bGREaXNwYXRj
aFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2RlVmFyaWFibGVMZW5n
dGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5i
dWZmZXJTaXplKCkpKTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9yaWdpbmFsLT5idWZm
ZXIoKSwgb3JpZ2luYWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8QXR0YWNobWVudD4g
YXR0YWNobWVudHMgPSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgcmVzZXJ2
ZShhdHRhY2htZW50cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2b2lkIEVuY29kZXI6
OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwg
c2l6ZV90IGFsaQogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVu
Y29kZXI6OmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihkYXRh
UmVmZXJlbmNlLnNpemUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2b2lkIEVuY29kZXI6
OmFkZEF0dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAgICAgbV9hdHRhY2ht
ZW50cy5hcHBlbmQoV1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmgKaW5kZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYyNDgyZTRjOWExMS4u
ZWE2MTk2N2JlMWViY2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsK
IAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhf
dDsKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xhc3MgU2hvdWxk
RGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC02Miw3ICs2MSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGVyPik7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5jb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUgJiYgIXN0ZDo6
aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQgZW5jb2RlKFQmJiB0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDdmZDE4
M2E1NmFlOThiMDY2NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUyYjQ5ZDVjOGZjNDFh
MmQ2NTRhZGNkODllODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CkBAIC05Niw3ICs5Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0ZDo6
cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9OwogCi1j
bGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIHRl
bXBsYXRlPD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSY+IHsKICAgICB1c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCA0NmUyMWQ4ZDkzNmYyZDhiNTE2N2IyNDlm
ODgxMTE2ZmZlYjdkNGI5Li43NzQ2MWQ1NTViNzI5MmMyMGViZjUxNGEzMDJkMWRjNmU3NzcwMTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC01NCw5
ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZDxVPihtZXNzYWdl
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKICAgICB9CisgICAgdXNp
bmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHko
KSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAg
U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgc3Rh
dGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOwogCkBAIC02NCw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5
KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAg
IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRz
OjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpKTsK
IApAQCAtNzIsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSwgdHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5j
KFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCks
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RG
TW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNP
cHRpb25zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFiODYzOWI3YmE3NjM2
YzYuLjUwMGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5o
IgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKQEAgLTQ4LDcg
KzQ5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhKSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwCmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUzMjhmMDFjOTk5OTUw
YTAuLmU5NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXggODUyZWY0M2UwMDg2
MzFjOWZhZmE4MjMwYzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBlYWZiM2RjNDdjODVk
YTQxOTBhMmJhMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
aW5nUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdS
ZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA4YjM3NDBmNGIxMDFhZDkwZjUwZWQ1N2M4NTBi
OTAzMGZjYzQzMGMyLi40YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTlBPYmplY3RQ
cm94eS5oIgogI2luY2x1ZGUgIk5QUmVtb3RlT2JqZWN0TWFwLmgiCiAjaW5jbHVkZSAiTlBSdW50
aW1lVXRpbGl0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggYWQ0ZmNkOWQ4Y2NmNDJmMTJlZTQ4OGUwMTM0NmM2
MTlhNzAxYjhkMi4uYzdhNzA1M2NiZDI2ZDIwNDU0YzA0MmM2YWNlMTZjYjUyNTMwZjQzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLW5hbWVzcGFjZSBJUEMg
ewotICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggNTczZWQzZDhlZTliYmY0MTAzMTY4ZTc5YTA1N2Y5ZGJkYjliODY5NS4u
NjczMjQ0YTY3ZTA5OWZmYjcxODA3ZDU1NTBjNDU0ZjM2MzFkYjEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDMsNiArMjAzLDcgQEAgZGVmIGZvcndh
cmRfZGVjbGFyYXRpb25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5kX2FuZF90eXBlcyk6
CiAKIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0
dXJuIGZyb3plbnNldChbCisgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAn
TWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywK
QEAgLTIxNCw2ICsyMTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMnLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDMsNiArMjQ1
LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAg
ICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXInLAogICAgICAgICAnV2Vi
S2l0OjpEb3dubG9hZElEJywKICAgICAgICAgJ1dlYktpdDo6R2VvbG9jYXRpb25JZGVudGlmaWVy
JywKKyAgICAgICAgJ1dlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6
TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9tUHJv
dG9jb2xJRCcsCkBAIC01MzAsNiArNTMzLDcgQEAgZGVmIGNsYXNzX3RlbXBsYXRlX2hlYWRlcnMo
dGVtcGxhdGVfc3RyaW5nKToKICAgICAgICAgJ09wdGlvblNldCc6IHsnaGVhZGVycyc6IFsnPHd0
Zi9PcHRpb25TZXQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENv
ZGVycy5oIiddfSwKICAgICAgICAgJ1ZlY3Rvcic6IHsnaGVhZGVycyc6IFsnPHd0Zi9WZWN0b3Iu
aD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwK
ICAgICAgICAgJ3N0ZDo6cGFpcic6IHsnaGVhZGVycyc6IFsnPHV0aWxpdHk+J10sICdhcmd1bWVu
dF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdJUEM6
OkFycmF5UmVmZXJlbmNlJzogeydoZWFkZXJzJzogWyciQXJyYXlSZWZlcmVuY2UuaCInXSwgJ2Fy
Z3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICB9CiAK
ICAgICBtYXRjaCA9IHJlLm1hdGNoKCcoP1A8dGVtcGxhdGVfbmFtZT4uKz8pPCg/UDxwYXJhbWV0
ZXJfc3RyaW5nPi4rKT4nLCB0ZW1wbGF0ZV9zdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
RGF0YS5jcHAKaW5kZXggNjEzNDNiZDk0MTA2YjZlNzg5ZjgzYmMyNWRlNzlmN2E2MDQwOTNjYy4u
Yzc4MjMxNmYzMDU3YTNjYWY5ZDNlMjA3N2M4MTMyNTUzZTY5NzU2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElEYXRhLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkFQSURhdGEuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCmluZGV4IDdiYTIwN2FiYjBhY2NjOGE1NzBmNWM2NjNm
NDZjYWEyNGE4MjZkOTEuLjMxZmQ3ZDAzZmFmZTAzOTU4Nzk1MmE2Mzc4ZDFhOWM4ZmYyZjc5MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc0RhZW1vbigp
OwogICAgIHZvaWQgbGF1bmNoU2VydmljZXNDaGVja0luKCk7CiAgICAgdm9pZCBzZXRRT1MoaW50
IGxhdGVuY3lRT1MsIGludCB0aHJvdWdocHV0UU9TKTsKICNlbmRpZgpAQCAtMTg0LDQgKzE4Mywz
IEBAIHN0cnVjdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5YzI2ZGI0ZTlhOWY2YmE3MmU0ODIwYmI0MDZj
MmNmYmRlMTEzZTliLi5kYTM3MzRjODRkNjU0ZDhkMDNjYTc5MjVmN2JkNzU5OTEzYmMzNGFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTMyMjEsNCArMzIyMSw4MiBAQCBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj4g
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OgogICAgIHJldHVybiB7
IFdURk1vdmUoKnJlc3VsdCkgfTsKIH0KIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgZW5jb2RlciA8PCBh
dHRyaWJ1dGVzLmFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXB0aDsKKyAgICBl
bmNvZGVyIDw8IGF0dHJpYnV0ZXMuc3RlbmNpbDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMu
YW50aWFsaWFzOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGE7
CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjsKKyAgICBl
bmNvZGVyIDw8IGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDsKKyAgICBl
bmNvZGVyIDw8IGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlOworICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5zaGFyZVJlc291cmNlczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaXNXZWJH
TDI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9uczsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0
ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5jZTsKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgZW5jb2Rl
ciA8PCBhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZTsKKyNlbmRpZgorfQorCitPcHRpb25hbDxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFscGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGVwdGgpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5zdGVuY2lsKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFs
cGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZmFpbElmTWFq
b3JQZXJmb3JtYW5jZUNhdmVhdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVz
LnNoYXJlUmVzb3VyY2VzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaXNXZWJHTDIpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5ub0V4dGVuc2lv
bnMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJl
ZmVyZW5jZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQlhS
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy54ckNvbXBhdGlibGUpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7
Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyYgYWN0aXZlSW5mbykKK3sKKyAgICBlbmNvZGVyIDw8IGFj
dGl2ZUluZm8ubmFtZTsKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8udHlwZTsKKyAgICBlbmNv
ZGVyIDw8IGFjdGl2ZUluZm8uc2l6ZTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OkFjdGl2ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhY3RpdmVJbmZvOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5uYW1lKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8udHlwZSkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZv
LnNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBhY3RpdmVJ
bmZvOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDRhOTMyMTU5MTMwY2I3YmNkZTU1
ZTIxMWUxN2M0YmVkZWYxNzA1ZDYuLjFkYWU5Njk1ZjMzYzA5ZGNkN2M1ODAzNjA4ZTJkNmFjMTZl
OWZjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC03MSw2ICs3MSwxMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUg
IkFycmF5UmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc1R5cGVzR0wuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC0yMDMsNiAr
MjEwLDEwIEBAIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CiB1c2luZyBJREJLZXlQ
YXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsKICNlbmRpZgogCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCitzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzOworI2VuZGlmCisKIG5hbWVzcGFjZSBET01DYWNoZUVuZ2luZSB7CiBzdHJ1
Y3QgQ2FjaGVJbmZvOwogc3RydWN0IFJlY29yZDsKQEAgLTg3Myw2ICs4ODQsMTkgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uPiB7CiB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAg
IHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTA0MSw0ICsxMDY1LDE2IEBAIHRlbXBsYXRl
IDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzPiB7
CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisK
K3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UsCisgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQsCisgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyLAorICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UKKyAgICA+
OworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggY2YxMzFhOTIxZTA4
NjM2NWRiZjc3ZmE5OGU0MWMxYzc0YTNlN2UyNS4uYWRkOTQ5YmE1MDhkOGU4MTQwODdmZWRlN2Iw
NDhhM2RlYzZjZjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE1OCw2ICsxNTgsOSBAQCB2b2lkIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8
PCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBzaG91bGRQbGF5
TWVkaWFJbkdQVVByb2Nlc3M7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGVuY29kZXIgPDwgc2hv
dWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7CisjZW5kaWYKICAgICBlbmNvZGVyIDw8IHNob3Vs
ZEVuYWJsZVZQOURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlTV0RlY29k
ZXI7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTEwLDYgKzUxMywxMCBAQCBP
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcykpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5z
aG91bGRFbmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRl
eCBkOTFlNDYwMzhmMzA5YjUxMzBiZmRlNThkZmY0YTlmMTgxOTUxZGZkLi5jMjA2MTIzMTE0MzVi
ZjRmOTJjZjA2ZmU1ZTExMjA1YTRiNTExMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMjksNiArMjI5LDkgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkUmVuZGVyQ2FudmFz
SW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFJlbmRlckRPTUluR1BVUHJv
Y2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBm
YWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIHNob3VsZFJlbmRlcldlYkdMSW5H
UFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVj
b2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIgeyBmYWxz
ZSB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggOWJkOGE4MTc1NDlmNThmZTM4M2Q3MjVk
YTY2M2YzYmM1NGNhMGQ3NC4uNzdlOWI0ZDVjYzc1MmZiY2RiNmI2NWY5YWRjMjYwMTk1NmNhMTQ3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVyc0NGLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzU291cC5jcHAKaW5kZXggMWQ4NGUyZmUyNjhmMzQ2MGViMjk3NWM0MmJhOTVkMTRmMWQyMzVj
Zi4uZmEyNjhkNTg0YTBmYzhkZjg3YTIxZmE0NTYwNzdiOGM1ZDQyYjg1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2VydGlmaWNhdGVJCiAgICAgLy8gRW5j
b2RlIHN0YXJ0aW5nIGZyb20gdGhlIHJvb3QgY2VydGlmaWNhdGUuCiAgICAgZm9yIChzaXplX3Qg
aSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0LnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBH
Qnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0W2kgLSAxXS5nZXQo
KTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShJUEM6OkRh
dGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pKTsKKyAgICAg
ICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRp
ZmljYXRlLT5sZW4pOwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgYm9v
bCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBDZXJ0aWZpY2F0ZUluZm8mIGMKICAgICBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4gY2VydGlm
aWNhdGU7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNoYWluTGVuZ3RoOyBpKyspIHsK
ICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZTsKLSAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNlcnRpZmlj
YXRlRGF0YVJlZmVyZW5jZSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNh
dGVEYXRhUmVmZXJlbmNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBH
Qnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJyYXlfc2l6ZWRfbmV3KGNlcnRp
ZmljYXRlRGF0YVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjc3LDQgKzI3NywzIEBAIE9wdGlvbmFs
PFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1CiAjZW5kaWYKIAogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwOTE3ZjAxYmUx
YzlmOGNhYTJhYmY3ZjBmODkwZjg5NWEzZjJlZjg2Li41MGNkZTEyYWZhM2FhN2Y3OGMyNzllYzhm
YjgxOTc0NGI2ZmIxZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCkBAIC0xMzcsNyArMTM4LDYgQEAgUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAg
QG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5Ci1QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5j
ZS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0
Zm9ybS9JUEMvRW5jb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5n
LmNwcCBAbm8tdW5pZnkKQEAgLTY5MywzICs2OTMsNSBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAogV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKworUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggOTk1MTgwNzMyODBlOWM5NWEyYjI1ZjAwYmM4YmZiMzg4NzYyMTI0MS4uMTNmYTcx
NWU3OTZmYzg1OTIzMTRiM2ZlN2YwZDRlYTlhZWQ4OTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dApAQCAtNjMsNiArNjMsNyBAQCBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bQogCisKIFBsYXRmb3JtL2NmL01vZHVsZUNGLmNwcAogCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL2Nv
Y29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwCkBAIC01NzMsNiAr
NTc0LDggQEAgV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KIFdlYlByb2Nlc3Mv
RW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5t
bQogCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCkBAIC02ODUsNiArNjg4LDcg
QEAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4
IDJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QuLjczN2I2MjU4MTk4NjZh
MGVjYjU5OWEyMTMwYjMyOTEzZWFmMzk2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDRmMzk4YjUzMGY2MDg1NzVj
OTY3YjgzYzc0ZmEyZjQzMjhmNmNlM2IuLjhjYTk3ZTZlNTk3YmQ3MTEwYTBkNzM4ZTBjNGE3Yzg1
NjAzYThhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nl
c3NQcm94eS5oCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFByb2Nlc3NU
aHJvdHRsZXImIHRocm90dGxlcigpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CisgICAgdXNpbmcgU2VuZFN5
bmNSZXN1bHQgPSBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAx
X3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0p
OwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA6
IGJvb2wgeyBObywgWWVzIH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4g
dm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmLCBDJiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQg
PSAwLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiA9IHsgfSwgU2hvdWxkU3RhcnRQcm9jZXNz
VGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6
WWVzKTsKQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVy
biBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTE2
MywxMiArMTY0LDEyIEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNz
YWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IAotYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNz
YWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMpCitBdXhpbGlhcnlQcm9jZXNzUHJveHk6OlNlbmRTeW5jUmVzdWx0IEF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVw
bHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VS
VChVOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFRy
YWNlU2NvcGUgc2NvcGUoU3luY01lc3NhZ2VTdGFydCwgU3luY01lc3NhZ2VFbmQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5k
ZXggODIzYzIwMmE4NTZhMDEzNmRkOWVhNzU5ZjBlY2RlYmE0N2Y0ZjM2Mi4uYjU3N2NiZGY4ZTA3
OGY0ZmI0Zjg3MzRkN2JmZDYwOGQyMDM4ODA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaApAQCAtMzIsMTAgKzMyLDYgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24gZmluYWwg
OiBwdWJsaWMgTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24sIHB1YmxpYyBGcmFtZUxv
YWRTdGF0ZTo6T2JzZXJ2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKaW5kZXggZmY5OGI4NGZhODlkYmVmZGQ2NDY2
NmJiYmE0MmZjOTBjZWMzNTc3Zi4uMTI4YTM5NzdlNjNlZTRmNGVmMWYyMGVhYWVjODZkMDhlY2Jm
NThkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29s
SUQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgpAQCAtMzUsMTAgKzM2LDYgQEAKIE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbExvYWRl
cjsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzRjNzE4NzRh
MTBkYTliNTQxZmVlMjgyMDgwOGMxZTUwZDNmYTkyYi4uOWRiM2E1MDliOTE0YzA5M2NhZjE2OWEw
NWQ2NWI1N2VkMGM4MDEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCkBAIC04
MCwxMCArODEsNiBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggMjRiNjMzZTQ4NGQyYTM1YmE3
NGQ0NWYxMmVkZTM0YTBmNzhjYTBhNi4uMjQ4ZTUzYTA4M2QxOWEwZWY0ZDgzYzIzYjhjY2UwMDM0
NWRhYWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJJbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggMTI5YTM0MGYwODk2NGQwZmZhMjNhMzcxMDFhMDlh
ODU2ZDNjY2NiMi4uYTRkOGQ3Y2Q4MDRlNjU2MGRhYmZkZTYxMTRmZjA2MjExYmFkNDdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb250ZW50V29ybGRTaGFyZWQuaCIK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTQ4LDEwICs0OSw2IEBAIGNsYXNzIFVzZXJT
Y3JpcHQ7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggNmVkMWM2OWMwOGZjNTU5ZmUyYTNmM2I5Mzk1MGVhODI4ZDYwZDRiZi4uY2VjNzNkMTNk
MDk4ZDcxMzE4NDhhZmI1OTNlZjA3MjQxMDIxOGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OCw3ICs1OCw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC03OTI3LDYg
Kzc5MjYsMTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zv
ckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRP
TUluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmlu
Z0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyA9
IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpOworI2lmIEVOQUJM
RShXRUJHTCkKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzID0g
cHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCk7CisjZW5kaWYKKwog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5
RGVjb2RlckVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkKICAg
ICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5
RGVjb2RlckVuYWJsZWQoKSAmJiAoIVdlYkNvcmU6OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVm
ZXJlbmNlcygpLnZwOVNXRGVjb2RlckVuYWJsZWRPbkJhdHRlcnkoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY0MjQ0NmY5ZTlhYTRiNTIxMTE0OTAzYjZmMGI1
ZjcxMWY5MWIyZTUuLjQzN2FiNzUwYjM1YWIxNjNiMmE1ODBhZTg2NzJlZDQ2MDE2NDc0MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRl
ICJEcmFnQ29udHJvbGxlckFjdGlvbi5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAt
MjAzLDcgKzIwNCw2IEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7
CiB9CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29k
ZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKaW5kZXggZjQy
NDVjZTY1ZTlkMmQ1NjViM2YxMjVmMzQ1N2EyNTZmYjM5YzlkNC4uZDIzOGMyYTFhNjA4ZGM1YTQ2
MzJlNmExOTk3N2RiNjFiYWI2MTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKaW5kZXggZDQ0MmI2MmI1MjI1ODdmOTBmYTY4OWQ1NmIyMDYyNzZkZWI0NDgyYi4uODI1Y2Qw
MjY4OGEyNjgyMTk0MWZmN2E0MThmNGRmNWE5NzViYTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzgsMTAgKzM4LDYgQEAgbmFtZXNwYWNlIEFQ
SSB7CiBjbGFzcyBGcmFtZUluZm87CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNDYxMWJkMWQzZjMyYzUyNjMxNTUxZjM5NmUxZjg0
MDQwZTQ4OGJkLi45OGI4ZDFhNDcwZmQyZjRjNTc3NTBmMzNmNjI0MjgwMGE5NDQ5NjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY5
OCw3ICs2OTgsNiBAQAogCQkyRDkyQTc3QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJndW1lbnRDb2Rl
cnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEz
RDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKIAkJMkQ5
MkE3N0MyMTJCNkE3MTAwRjQ5M0ZEIC8qIEF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk2NkExMTJGQUY1NzAwNkJDQzI0IC8q
IEF0dGFjaG1lbnQuY3BwICovOyB9OwogCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi87IH07Ci0JCTJE
OTJBNzdFMjEyQjZBNzEwMEY0OTNGRCAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQzc1MzdEMTgzQkU1MEYwMDcyQ0Ix
NSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZE
IC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovOyB9OwogCQky
RDkyQTc4MDIxMkI2QTcxMDBGNDkzRkQgLyogRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ5RjEwRjQzN0QxMDA1OEMxNUEgLyog
RW5jb2Rlci5jcHAgKi87IH07CiAJCTJEOTJBNzgxMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEzRUVEMEMxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAg
Ki87IH07CkBAIC0xMzAzLDYgKzEzMDIsNyBAQAogCQk3QUZCRDM2MzIxRTUwRjM5MDA1REJBQ0Ig
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi87IH07CiAJCTdBRkJEMzY3MjFFNTFCQUIw
MDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVE
QkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FG
QkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CisJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZC
QyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmgg
Ki87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEz
M0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBB
UElEaWN0aW9uYXJ5LmggKi87IH07CkBAIC0yNzE5LDcgKzI3MTksNiBAQAogCQkxQUM1RkZDMTE3
NEJGRDFCMDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2Fk
U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUxvYWRT
dGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1MzdBMTgzQTlGREIw
MDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhZ2VMb2FkU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFDNzUz
N0QxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdE
ZXRlY3Rpb25EaXNhYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5n
RGV0ZWN0aW9uRGlzYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVB
MUMxQjMzNjk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhhbmdEZXRlY3Rpb25EaXNhYmxlck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNjgsNiArNDM2NywxNiBAQAog
CQk3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oOyBwYXRoID0gQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQz
NkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGVyc2lzdGVuY3lVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2
RTIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQZXJzaXN0ZW5jeVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4
QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQx
NkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TEZ1bmN0aW9uc0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1
bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY2NTEsMTEgKzY2NjAsMTEgQEAK
IAkJCQkxQUVGRDI3ODExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oICovLAogCQkJ
CTFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi8sCiAJCQkJ
MUFFRkQyRjYxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggKi8sCisJCQkJN0Ix
REIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8sCiAJCQkJQkNFRTk2
NkExMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwICovLAogCQkJCUJDRUU5NjZCMTEy
RkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggKi8sCiAJCQkJQkMwMzJEQTIxMEY0MzdEMTAw
NThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovLAogCQkJCUJDMDMyREEzMTBGNDM3RDEwMDU4QzE1
QSAvKiBDb25uZWN0aW9uLmggKi8sCi0JCQkJMUFDNzUzN0QxODNCRTUwRjAwNzJDQjE1IC8qIERh
dGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRh
UmVmZXJlbmNlLmggKi8sCiAJCQkJQkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIu
Y3BwICovLAogCQkJCUJDMDMyRDlFMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggKi8sCkBA
IC04MzI1LDExICs4MzM0LDE2IEBACiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNv
Y29hICovLAogCQkJCUY0MDk0Q0JBMjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlM
aXN0V3JpdGVySGFuZGxlLmggKi8sCisJCQkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4
OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywK
IAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3Jt
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAw
N0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAorCQkJCTdCOTA0
MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAq
LywKKwkJCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oICovLAorCQkJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjU3MjU3NEY2NzIw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcCAqLywKIAkJCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKQEAgLTgzNDcsNiArODM2MSwxMCBA
QAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAorCQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZF
RUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovLAorCQkJCTdCOTA0MTY4MjU0QUZF
QTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJ
CQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5j
dGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVt
b3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKQEAgLTExMTYzLDYgKzExMTgxLDcgQEAK
IAkJCQkxQUVGRDJGNzExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQUYwQzRBMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NG
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyogQXJndW1l
bnRDb2RlcnNDb2NvYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IxREIyNjYyNTY2OENFMTAwMEUy
NkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyODE4M0RE
NkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUZBNjM0
RjIzNEY3QzY0MDBGRkE4NjQgLyogQXN5bmNSZXZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTEzMjMxLDcgKzEzMjUwLDYgQEAKIAkJCQkyRDkyQTc4NTIxMkI2QUIxMDBGNDkzRkQg
LyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3
N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDlEQUEzOEMyNENCQTFBODAwNzkzRDc1IC8qIERlZmF1bHRXZWJCcm93c2Vy
Q2hlY2tzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQwQzU2RkUyMjlGMURFQTAwQkQzM0U3IC8q
IERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oCmluZGV4IGY5MmRhNmE0N2Y3ZTI0ZjM4Mzk5YWEzNjk4YTIxMjkwZDM2MWQ0YTYuLmM5ZGM2
ODJiODc1NDliODI1MGRiMjJiMmExY2UyMTU1NTAwMGNlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgK
QEAgLTM2LDEwICszNiw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9y
OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMmMwZGY1YjlmNTQ5Njg0N2VkNjY5
MTBiZjJmMzliMmNkYzYwY2EwMi4uNWJlOGI5OTc1MjBjNGFkN2YxYjQ0MDdhZTcyMDRjODRhOTk4
ODc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaApAQCAtMzUsMTAgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTc5MThlNGI1MGM5YjdjZjViMmU3OWIwNzdkMDM1
MjEyYzYxMjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzYyZjRiNzNjNTgyMzA1NzUyYzQ1ZGFlY2NjN2IwZTQ0NjRiOGMwNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisK
KyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0Q0cuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogUGxhdGZvcm1SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZShhdHRycykKK3sKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2Fn
ZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAu
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRv
VUludDY0KCksICp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpLCAwKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQoreworICAgIElQQzo6TWVzc2FnZVJlY2VpdmVy
TWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1lc3NhZ2VS
ZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCht
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworICAgIHN3YXBDaGFpbigpLnJlY3lj
bGVCdWZmZXIoKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKTsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIG1f
Y3VycmVudFdpZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBo
ZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworICAgIE1hY2hT
ZW5kUmlnaHQgZGlzcGxheUJ1ZmZlclNlbmRSaWdodDsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KGRpc3BsYXlC
dWZmZXJTZW5kUmlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMV9zKTsKKyAg
ICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RG
TW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAg
aWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgYXV0byYgc2MgPSBzd2FwQ2hhaW4oKTsKKyAg
ICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOworICAgICAgICBzYy5wcmVzZW50KHsgV1RGTW92ZShk
aXNwbGF5QnVmZmVyKSwgbnVsbHB0ciB9KTsKKyAgICB9CisKKyAgICBtYXJrTGF5ZXJDb21wb3Np
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRl
bnNpb24pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRl
eHRDaGFuZ2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sK
KyAgICAvLyBGSVhNRTogQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90
IGNsZWFyIHRoaXMgaXMgdGhlIHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTM0OQorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVx
dWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAg
IC8vIEluaXRpYWxpemF0aW9uIHRpbWVkIG91dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQg
bm93LgorICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5p
dGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBt
X2RpZEluaXRpYWxpemUgPSB0cnVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0xvc3QoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9y
KG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQoKQoreworICAgIGZv
ciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVu
dC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBp
ZiAobV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MsIElQ
Qzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkK
KyAgICAgICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91dCwgc28gcmVwb3J0IGluaXRpYWxpemVk
IHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2UgdGhlIGNvbnRleHQuCisgICAgd2FzQ3Jl
YXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRleHQgYXMg
bG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwgc3RhY2su
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUxMzVlNzEzNmI1YmMyNmI1NDJiYzFh
MjUxMDFjNTRlMzMyMGU1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0wLDAg
KzEsNDA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCisvLyBXZWIgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4
dEdMIGludGVyZmFjZS4gVGhlIGltcGxlbWVudGF0aW9uCisvLyBjb252ZXJ0cyB0aGUgaW50ZXJm
YWNlIHRvIGEgc2VxdWVuY2Ugb2YgSVBDIG1lc3NhZ2VzIGFuZCBzZW5kcyB0aGUgbWVzc2FnZXMg
dG8KKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIEdQVSBwcm9jZXNzLgorLy8gVGhlIGlt
cGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eSBmaW5hbAorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk+CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0
cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisg
ICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFs
OworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7
CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKwor
ICAgIC8vIFBsYXRmb3JtUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVz
LgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOworICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3JlOjpQbGF0Zm9y
bVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7CisgICAgdm9pZCBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKKyAg
ICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgc2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworCisgICAgLy8gRnVuY3Rpb25zIHdpdGggYSBnZW5l
cmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LgorICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFs
OworICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOworICAg
IGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgZmluYWw7CisgICAgdm9pZCBh
Y3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpIGZpbmFsOworICAgIHZvaWQgYXR0YWNoU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpIGZp
bmFsOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwg
R0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCBiaW5k
QnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5k
Q29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwg
R0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDR0xlbnVt
IG1vZGUpIGZpbmFsOworICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1v
ZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1bmMoR0NH
TGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1
bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3Jj
QWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBjaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9pZCBjbGVhcihHQ0dM
Yml0ZmllbGQgbWFzaykgZmluYWw7CisgICAgdm9pZCBjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVk
LCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZp
bmFsOworICAgIHZvaWQgY2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKSBmaW5hbDsKKyAgICB2
b2lkIGNsZWFyU3RlbmNpbChHQ0dMaW50IHMpIGZpbmFsOworICAgIHZvaWQgY29sb3JNYXNrKEdD
R0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xi
b29sZWFuIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
KSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlUHJvZ3JhbSgpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUmVuZGVyYnVm
ZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTaGFkZXIoR0NHTGVudW0g
YXJnMCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUZXh0dXJlKCkgZmluYWw7
CisgICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0
ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlRnJh
bWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVBy
b2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVJlbmRl
cmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVUZXh0dXJl
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZXB0aEZ1bmMoR0NHTGVu
dW0gZnVuYykgZmluYWw7CisgICAgdm9pZCBkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykgZmlu
YWw7CisgICAgdm9pZCBkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZh
cikgZmluYWw7CisgICAgdm9pZCBkZXRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZShHQ0dMZW51bSBj
YXApIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGlu
ZGV4KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZShHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIHZv
aWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZv
aWQgZmluaXNoKCkgZmluYWw7CisgICAgdm9pZCBmbHVzaCgpIGZpbmFsOworICAgIHZvaWQgZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykgZmlu
YWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcz
LCBHQ0dMaW50IGxldmVsKSBmaW5hbDsKKyAgICB2b2lkIGZyb250RmFjZShHQ0dMZW51bSBtb2Rl
KSBmaW5hbDsKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7
CisgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgYm9vbCBnZXRBY3RpdmVV
bmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUlu
Zm8mIGFyZzIpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsK
KyAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0
RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsK
KyAgICB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2
YWx1ZSkgZmluYWw7CisgICAgR0NHTGludDY0IGdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CisgICAgR0NHTGludDY0IGdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1
aW50IGluZGV4KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYo
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CisgICAg
R0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0xlbnVtIHBuYW1lKSBmaW5h
bDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5
cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBH
Q0dMaW50KiBwcmVjaXNpb24pIGZpbmFsOworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0VGV4UGFyYW1ldGVy
ZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdl
dFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVu
aWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4g
dmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMc2l6ZWlwdHIg
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmlu
YWw7CisgICAgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7
CisgICAgR0NHTGJvb2xlYW4gaXNCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICBHQ0dMYm9vbGVhbiBpc0VuYWJsZWQoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICBHQ0dM
Ym9vbGVhbiBpc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICBHQ0dMYm9vbGVhbiBpc1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIEdDR0xib29sZWFuIGlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgbGluZVdpZHRoKEdDR0xmbG9hdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmtQ
cm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwaXhlbFN0b3Jl
aShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBwb2x5Z29u
T2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykgZmluYWw7CisgICAgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9p
ZCBzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpIGZp
bmFsOworICAgIHZvaWQgc2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHNoYWRlclNvdXJjZShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc3RlbmNp
bEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOwor
ICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5j
LCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFz
ayhHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NH
TGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3AoR0NH
TGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKKyAgICB2
b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xl
bnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJm
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7
CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHkpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQg
eikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRmKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZh
bHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsK
KyAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2
b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZv
aWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0LCAxPiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4g
dmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAz
PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliUG9p
bnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9v
bGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAg
IHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVh
ZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZp
bmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOworICAgIFBs
YXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXkoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0
ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xl
YW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQg
YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBj
b3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdl
dCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAg
dm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NH
TGludCBsZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJh
bWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNo
bWVudHMpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAg
ICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKSBmaW5hbDsKKyAgICB2
b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAg
R0NHTGludCBnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHVpbnQgdjApIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJ1aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50
IHYyKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVp
bnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTN1
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZv
aWQgdmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdD
R0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2
YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGlu
dHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0g
bW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVy
cyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1
ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2
YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpIGZpbmFs
OworICAgIHZvaWQgY2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpIGZpbmFsOworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KFBs
YXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUXVlcnkoUGxh
dGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVt
IHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAgdm9pZCBlbmRRdWVy
eShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0
UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmlu
YWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgR0NH
TGJvb2xlYW4gaXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAg
dm9pZCBiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
IGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBH
Q0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25k
aXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTeW5j
KEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU3luYyhHQ0dMc3luYyBhcmcw
KSBmaW5hbDsKKyAgICBHQ0dMZW51bSBjbGllbnRXYWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkgZmluYWw7CisgICAgdm9pZCB3YWl0
U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0
KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFN5bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2Jq
ZWN0IGlkKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRm
b3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdD
R0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBiZWdp
blRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpIGZpbmFsOworICAgIHZv
aWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2V0VHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
aW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1G
ZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5h
bDsKKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXJS
YW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1
ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0cikgZmluYWw7CisgICAgVmVjdG9y
PEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dM
aW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZl
Y3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7Cisg
ICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZp
bmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBp
c1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBi
aW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBTdHJp
bmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzAp
IGZpbmFsOworICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpIGZpbmFsOworICAgIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCByZWFk
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50
ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclBh
cmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBm
aW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCog
cGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxv
YXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVu
dW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJv
b2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSBmaW5h
bDsgLy8gTk9MSU5UCisgICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogdmFsKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRR
dWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIC8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK3Byb3RlY3RlZDoKKyAgICAvLyBQbGF0Zm9ybVJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdhaXRV
bnRpbEluaXRpYWxpemVkKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZXMgdG8g
YmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJsZUV4dGVu
c2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzTG9zdCgp
OworICAgIHZvaWQgd2FzQ2hhbmdlZCgpOworCisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBi
b29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCisvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8g
Zm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUt
Z3B1cC13ZWJnbCBzY3JpcHQuCitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xlbnVt
LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGJvb2xlYW4pID09IHNpemVv
Zihib29sKSk7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xiaXRmaWVsZCwgdWlu
dDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJ5dGUsIGludDhfdD4p
Oworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWJ5dGUsIHVpbnQ4X3Q+KTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNob3J0LCBpbnQxNl90Pik7CitzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1c2hvcnQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xpbnQsIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lX3Y8R0NHTHNpemVpLCBpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PEdDR0x1aW50LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVf
djxHQ0dMZmxvYXQsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xo
YWxmZmxvYXQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xj
bGFtcGYsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x2b2lkLCB2
b2lkPik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFBsYXRmb3JtR0xPYmplY3QsIHVp
bnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMaW50cHRyKSA9PSBzaXplb2YodWlu
dDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xzaXplaXB0cikgPT0gc2l6ZW9mKHVp
bnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMdm9pZHB0cikgPT0gc2l6ZW9mKHVp
bnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMY2hhcikgPT0gc2l6ZW9mKHVpbnQ4
X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnQ2NCkgPT0gc2l6ZW9mKGludDY0X3Qp
KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x1aW50NjQpID09IHNpemVvZih1aW50NjRfdCkp
Oworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMpID09IHNpemVvZih1aW50NjRfdCkgJiYg
c2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRyX3QpKTsKKy8vIEVuZCBvZiBsaXN0IHVz
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJiMmJjMTAxMGVmOGVjZDBhZjU3NzdhYmQ0
ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0w
LDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3Jl
YXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5z
aW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2FzQ2hhbmdlZCgpOworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1ZDA0NTVjNmMxNTU4ZGUz
YWY4ZGE3ZTg1MWFiNzQ5NjlhMGJkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NyBAQAorLyogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMg
ZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExB
VEZPUk0oQ09DT0EpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1c0No
ZWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jv
b2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0
dXJlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVUZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkF0dGFjaFNoYWRlcihwcm9ncmFtLCBz
aGFkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFy
ZzAsIGluZGV4LCBuYW1lKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJn
MSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEZy
YW1lYnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwg
YXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5k
Q29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwg
R0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24obW9kZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9k
ZUFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3Rvciwg
ZGZhY3RvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNS
R0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1
bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xl
YXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVl
LCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhclN0ZW5jaWwoR0NHTGludCBzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb2xv
ck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1
ZSwgR0NHTGJvb2xlYW4gYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvbG9yTWFzayhzdGF0aWNfY2FzdDxib29sPihyZWQpLCBzdGF0aWNfY2Fz
dDxib29sPihncmVlbiksIHN0YXRpY19jYXN0PGJvb2w+KGJsdWUpLCBzdGF0aWNfY2FzdDxib29s
PihhbHBoYSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bXBpbGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCit7
CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFt
ZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1l
YnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZm
ZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZm
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkKK3sK
KyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1
cmUoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUZyYW1lYnVmZmVyKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVBy
b2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZWxldGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0
aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJvb2w+KGZsYWcpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aFJhbmdl
KHpOZWFyLCB6RmFyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUoR0NHTGVudW0gY2Fw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUo
Y2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGlu
ZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2goKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGaW5pc2goKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZsdXNoKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Rmx1c2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVy
YnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVu
dCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2
ZWwpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1l
YnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZl
bCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJ
bmZvJiBhcmcyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dy
YW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVV
bmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1l
dGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFN0cmluZyhHQ0dMZW51bSBuYW1lKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmlu
ZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFs
dWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXpl
b2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7
CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXpl
b2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDY0X3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4o
cmV0dXJuVmFsdWUpOworfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCit7CisgICAg
aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWko
cHJvZ3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFBy
b2dyYW1pOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xib29sZWFuPiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVl
UmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnY6OlJlcGx5KHZhbHVlUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRS
ZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFs
dWUuYnVmU2l6ZSAqIHNpemVvZihib29sKSk7CisgICAgCit9CisKK0dDR0xlbnVtIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJy
b3I6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFy
Z2V0LCBhdHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJv
Z3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmkoYXJnMCwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmlu
ZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBH
Q0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQoreworICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4gcmFuZ2VSZXBseTsKKyAgICBpbnQzMl90IHBy
ZWNpc2lvblJlcGx5ID0geyB9OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNo
YWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9u
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNl
bmRSZXN1bHQpIHsKKyAgICAgICAgbWVtY3B5KHJhbmdlLmRhdGEsIHJhbmdlUmVwbHkuZGF0YSgp
LCByYW5nZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgaWYgKHByZWNpc2lv
bikKKyAgICAgICAgICAgICpwcmVjaXNpb24gPSBwcmVjaXNpb25SZXBseTsKKyAgICB9Cit9CisK
K1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNv
dXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJT
b3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGZsb2F0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4
UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1l
dGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sK
KyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQp
CisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1j
cHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2Yo
aW50MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1
ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50MzJf
dCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlv
bjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc2l6ZWlwdHIgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0
dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xz
aXplaXB0cj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50KHRhcmdldCwgbW9kZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQorewor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0J1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5h
YmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVi
dWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0Zy
YW1lYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJh
bWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1By
b2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1By
b2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFt
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRl
cmJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRl
cmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFk
ZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXI6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RleHR1cmUoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlua1Byb2dyYW0o
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQo
R0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZl
clN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZl
cnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBs
ZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNv
dXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJn
MCwgc3RyaW5nKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdD
R0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBH
Q0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1h
c2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2sobWFzayks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1
aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2ls
T3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3AoZmFpbCwg
emZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVt
IGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2Vw
YXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0
ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJn
ZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGZsb2F0IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0xZihsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
MWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmdihsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFp
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZihsb2Nh
dGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xp
bnQgeCwgR0NHTGludCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtMmkobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMml2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
aW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNm
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHop
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0z
Zihsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0
YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdD
R0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwg
dyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0
aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVl
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
TWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUu
ZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVz
ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVc2VQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWIxZihpbmRleCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIy
ZihpbmRleCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dM
ZmxvYXQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVl
cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4
QXR0cmliM2Z2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBH
Q0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwg
eiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1
ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJQ
b2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xi
b29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxib29sPihub3JtYWxpemVk
KSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NHTGVudW0gdXNhZ2UpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGEw
KHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2FnZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyU3Vi
RGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4
ZWxzMCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwOjpSZXBseShkYXRh
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNl
bmRSZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRh
dGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVs
cy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1h
Z2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZz
ZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBy
ZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1h
Z2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJy
YXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVu
dHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpLCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCit7CisgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVy
dGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXko
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50
cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwg
d3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhKHRh
cmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVmU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YTo6UmVwbHkoZGF0
YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChz
ZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBk
YXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dM
aW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBH
Q0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQg
bWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEs
IGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
bGF5ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWws
IGxheWVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZUZyYW1lYnVmZmVy
KHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0
YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSksIHgs
IHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBz
cmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRC
dWZmZXIoc3JjKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2
ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRh
KSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QxKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDEodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2Uz
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJ
bWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFn
RGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0s
IG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9j
YXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
MXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdD
R0x1aW50IHYxLCBHQ0dMdWludCB2MikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2
MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWl2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1
aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0
aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1N
YXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRy
YW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDRm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSks
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
Ykk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NH
TGludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFs
dWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0
ZXhBdHRyaWJJNGl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgs
IHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2lu
dGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdD
R0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0
YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFs
dWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVh
ckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIs
IEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJ1
aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYoYnVm
ZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVm
ZmVyLCBkZXB0aCwgc3RlbmNpbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVR
dWVyeSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRl
UXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUXVlcnkocXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBib29sIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVyeShH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRhcmdldCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnkodGFyZ2V0LCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVlcnks
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVj
dHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVTYW1wbGVyKHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
U2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzU2FtcGxlcihzYW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1NhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVy
KEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxl
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBw
bmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVy
ZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK0dDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVy
UGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJm
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxl
clBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0xzeW5jIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZlbmNlU3luYyhHQ0dM
ZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKK3sKKyAgICB1aW50NjRfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGZW5jZVN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEdD
R0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKTsKK30KKworR0NHTGJv
b2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKEdDR0xzeW5jIGFyZzAp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1N5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGllbnRXYWl0
U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91
dCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwg
R0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0
PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKEdDR0xzeW5j
IGFyZzAsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5j
aShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkp
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2k6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2soaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZv
cm1HTE9iamVjdCBpZCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVkYmFj
ayhpZCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVk
YmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZl
ZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRiYWNr
KHRhcmdldCwgaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dM
ZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQ
bGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGlu
ZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXpl
aXB0ciBzaXplKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCitWZWN0b3I8R0NHTHVpbnQ+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKK3sKKyAgICBWZWN0b3I8dWlu
dDMyX3Q+IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVz
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlczo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitWZWN0b3I8R0NHTGludD4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3Jt
QmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9y
bUJsb2NrTmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0lu
ZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1C
bG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFt
LCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykK
K3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5OworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBu
YW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlVW5pZm9ybUJsb2NraXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBz
aXplb2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRG
cmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRz
dFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
VmVydGV4QXJyYXlPRVMoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4
QXJyYXlPRVMoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0
ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1h
cmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZm
ZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBw
cmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlz
b3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBw
aXhlbHMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZv
cm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbnRlcmZhY2Vp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2Us
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSAvLyBOT0xJTlQKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2Ft
cGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmlu
ZGV4IGFlZjgzZTI1ODg4OWE1YmU4MjY3YTY4YjFjNjlmZWM1YTM0ZTAzODYuLjZhNGFkZjVkNmQz
NGE3YzY5MWJmZjAwZWVjZTAxZmM3YWE4OTQwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51
bSwgYm9vbCwgYm9vbCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0
Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgYm9vbCwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCA5NWM4MzZlNjk1
MDQxZDk3ZDI1OTAzNmZkNzNkZmY1YzQ2YjhmZjkxLi5jOGM1ODI5MDUwYTUyNThmOWQ5MzE5NzZi
OTVmMDVlNTk3YTU2YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKCkKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRk
Q2xpZW50KCp0aGlzKTsKLSAgICBib29sIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kU3luYygKKyAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kU3luYygKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwgc2FtcGxlUmF0ZSgpLCBo
YXJkd2FyZVNhbXBsZVJhdGUoKSksCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25J
RCksIDApOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiBzdHJlYW1Gb3JtYXQ7CiAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0
cmVhbUZvcm1hdCk7CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1f
bnVtYmVyT2ZGcmFtZXMpOwotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJB
dWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAKaW5kZXggOWE5MTgyZTA2MzU5ZWI2OTU0ZGNkOTFi
ZDE1MDA0MjIyZTM2NDg2MS4uNzAwOTIzMjI4MzM4MDRhNTRlNmE2YjBhNTljYzNhODI0MWNkMzlj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9TZXNzaW9uLmNwcApAQCAtMjksOSArMjksMTEgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIFVTRShBVURJT19TRVNTSU9OKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nl
c3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJv
dmlkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCmluZGV4IGI4ZjQ1YTZkNWJiNGRiNDYw
OTg4MDEyNDNiYjVlOTMxN2IxZTNlMmIuLjY1YjhmZDBkNzczNDdlOTM4YjU2NDU4MjI2Yjc4ZGE0
M2M5Nzg5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3Bw
CkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291
cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nv
dXJjZVByb3ZpZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCmluZGV4IGU1OWUxYjA2YjQ0N2U1
ZDgwY2E2MTA1MmM2YzdhMzJjNGJhMTQyZTYuLjgxOTQwOTBjOTMzYjJmMTFhNjQ2MGFiM2MxNzcy
ZDM3NjE2MzcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgK
QEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRlbnRpZmllci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5jcHAKaW5kZXggMGRiODVhZTliZDI0MWViYTFiZGE0ZTYyMjQ0MGY2MzI4ZTFkOGEwYi4u
Mjk3ZWViZGExOTE4OWRmZTBjZmU2YzFlZDc2OWFhY2I5ZDZkOTExOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb24uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXJDb3B5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGI5YTAx
YjA2MjVlM2I3YzdmMDExODRhODNjMzZlNTQ5MTIyZjA5YTguLjE1MTcyYzlmNjIxMGJmNGY5NWUw
YzZhYTc5MzZjNjIyZWE4ZDkzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC00
NCw3ICs0NCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBE
ZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1By
aXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGI3Y2VkYjdlODM5NGY5OWJhOWNmYjBhMmFjMmE5Nzgx
MWIzYzQxOGYuLjc3MDJkMWI3MDJkMTIxNjJlMTlhYjlhNmRhYTRjNTk3NTE4NjJmMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMywxMCArMzMsNiBAQAogI2luY2x1ZGUgIlRyYWNrUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRHZW5lcmljQ3VlOwogY2xhc3MgSVNP
V2ViVlRUQ3VlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMGM2ZjczZDA3MTQ0YjU2MjY3NjkzNjdjOWYy
YTNhNDAxN2VhZGU4MC4uMTY4ZWY0MzVkZGU1NjE0ZDMwZjNiZTI4NjcwYTQ3YWVkNjE2ZGUwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAm
JiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NQ
cm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDczOWE0OTZlZjQ5NGNiNGE2MTg1NjZmZmM2
NGQ0YTI2NGE3NGU5ZDAuLjRiZWFlMDYyMzE3YmEyNmE2MDY4M2YxZjQ1MTIzM2ViMTA3M2FhN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENF
bmNvZGVySWRlbnRpZmllci5oIgpAQCAtNDMsNyArNDQsNiBAQCB1c2luZyBDVlBpeGVsQnVmZmVy
UG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKIAogbmFtZXNwYWNlIElQQyB7
CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggMmRhZDIwMzg0MmYwZTU1M2ZlM2I0NjI0NDFlZTk0
ZmEyNjQ5M2ExMS4uYzI4Y2U3ZjJlMTdlODlhOGU1MTg2YTc3MDZhMmU4YTQ0ZjZiN2UzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSUluamVjdGVk
QnVuZGxlQnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29u
dGVudFR5cGVzLmg+CkBAIC01NCw3ICs1NSw2IEBAIGNsYXNzIERhdGE7CiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjEsNCArMTYxLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4
IDMwNjRlOWM0YWZjYzJjZmY1NGEzMjVlMjUzMWVkMDUyMmEwMDEzOTMuLmI5Nzk0NjU5ZWFiZDE4
NGIzODljMDZkMTMyZjhjNDJmODA1MjNjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0z
NCwxMCArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4NjU3MTFiMzY2YzI4ZGY0ODRiNGNk
YzA3YWEzZmNmM2RjZWJmMmY2Li42OTQ4OTZjOTk3YTQ5NDBkYmFiMmRhNzY1NzgyMGEyNzhhZjFk
YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4
M2UzNzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUzOTY2ZmIuLjdlMWQ0OTk0NzE1Zjg4NDlj
ZThiZmU1ZWMzNDU1ZDQ3Mzc3ODAwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTM2LDcg
KzM3LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3Bw
CmluZGV4IDk0ZWYwZDFmY2UyZTYwMWRmNDQ5Y2ZmODUzOWZiZDE2NDc5M2ViZTIuLmZmNjlmNTYw
OWU1NzdjYWM3NzdmMDRhZmE3NGFmMjEwNzQ4NjRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5o
IgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVs
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggZjUzNDc4MzQ3ZTc3NWRmMzdlYTk3NjM0YzIzMzA5MzJiNGExNGQyOC4uYWQ3ZmYxODdk
YmI0MzUzYjllZDNiYzU3YzViYTJjNGFhNGU4Y2ZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JrU2VuZFF1ZXVlLmg+CkBAIC0zOCw3ICszOSw2IEBACiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBhZjI0MmNkMmI1
OTVhYzRhNDQ4NDI5N2JlNWQ1Y2ZlMThkNDhmMzI0Li43ZDAwNzM2OWI5Y2NlODViOGYwNTQ1N2Q2
NjZkMWU0NDUxYjk2YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKIAotI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCmluZGV4IGRkMDgyMDEwNzEyYjlmNWRi
OWZlYmQ4OGRhNjY5YjZkZjYxZDBmMjkuLmI0M2NiMmVmYWQxZTEwMWVlMjY1YjkzZGRlOWIwNjEy
NzM2YTA5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhh
bmRsZS5oPgpAQCAtMzMsNyArMzQsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAppbmRleCBjYjQ4ZTA1NzM0OGEyZTg2NmIwOTFm
ZjVhYzg3MjYwNWNhMTkyZGQ1Li4zMjNmMjVlZThmZDgxYjAyNjMwZDJmMjU5YTFhZmI4ODRiNGNm
NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDU29ja2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNv
ZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmgKaW5kZXggZWE1MzU5NjAxMDlmZWU2ZGM0ODA1Y2Y2ODkxMjc5OGVlOWFiNmYwMy4u
NDBiNGM4ZjIxMjljZjEyMzNhMWIzMWI4NTEyN2U3YTdlOWUzZDdjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNjAsMTAgKzYw
LDYgQEAgT0JKQ19DTEFTUyBQREZTZWxlY3Rpb247CiBPQkpDX0NMQVNTIFdLUERGUGx1Z2luQWNj
ZXNzaWJpbGl0eU9iamVjdDsKIE9CSkNfQ0xBU1MgV0tQREZMYXllckNvbnRyb2xsZXJEZWxlZ2F0
ZTsKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKaW5kZXggMzM0NzY0YWNlMmE4YzQzODU4OGIzMTk4MDYyZjM2NWEzNjZl
OGJkYS4uNWIyNzMyZjJjNGU0YzQ4M2ViZjg0MDg3YThjMjYzNGU5ZDU0OTIzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKQEAgLTEwOCw2ICsxMDgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtOTEyLDYgKzkxNiwyMiBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZQogICAgIHJldHVybiBtX3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wp
CisKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMsIFBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0Cit7CisgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JX
ZWJHTCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBVTlVTRURfVkFSSUFCTEUoaG9z
dFdpbmRvd0Rpc3BsYXlJRCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShhdHRyaWJ1dGVzKTsKKyNlbHNlCisgICAg
cmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NM
YXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IGVjMTRmZGIxNmM4MWNjMTI3MDZjZmNiNTllOTlmMmNkMzM3NjBkYzguLjEyMTVmOTJhMDMxOTU4
MGEwZGRkOTIxMDUxM2RkMmQ1ZDMwNTA1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI0Myw3
ICsyNDMsMTEgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1
cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29y
ZTo6UGl4ZWxGb3JtYXQpIGNvbnN0IGZpbmFsOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRm
b3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCisj
ZW5kaWYKKwogCiAgICAgQ29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5n
VHJpZ2dlcnMoKSBjb25zdCBmaW5hbAogICAgIHsKQEAgLTQwMyw2ICs0MDcsNyBAQCBwcml2YXRl
OgogCiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9s
bGJhciB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzVmVy
dGljYWxTY3JvbGxiYXIgeyBmYWxzZSB9OworCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzYzA1
NGU4MzQ4ZTA5MmMwOTQ3MDc3ZmRlMWVlOTM5NTQ0NmMxZjExLi44NzYwZTgzMjRlODVlYzljYzVh
ZTg4OWU5OTc5MzUzZDIwZDg2NzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNDIyLDYgKzQyMiw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICAgICAsIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5z
aG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRSZW5kZXJET01J
bkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB9CiAg
ICAgLCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUGxh
eU1lZGlhSW5HUFVQcm9jZXNzIH0KKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgLCBtX3Nob3VsZFJl
bmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BV
UHJvY2Vzc30KKyNlbmRpZgogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAsIG1f
bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgcGFyYW1ldGVycy5uZWVkc0luQXBwQnJv
d3NlclByaXZhY3lRdWlya3MgfQogI2VuZGlmCkBAIC03MjUsNyArNzI4LDYgQEAgV2ViUGFnZTo6
V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogICAgIGlmIChXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKiBtYW5hZ2Vy
ID0gd2ViUHJvY2Vzcy5zdXBwbGVtZW50PFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI+KCkpCiAg
ICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1h
bmFnZXItPm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSgpKTsKICNlbmRpZgotICAgIAogICAgIGlm
IChwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3RvciAhPSAxKQogICAgICAgICBzY2FsZVZpZXcocGFy
YW1ldGVycy52aWV3U2NhbGVGYWN0b3IpOwogCkBAIC0zNzkzLDYgKzM3OTUsOSBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNS
ZW5kZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRS
ZW5kZXJET01JbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVz
ZUdQVVByb2Nlc3NGb3JNZWRpYShtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7CisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nl
c3NGb3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKKyNlbmRpZgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpAQCAtNjk5MCw2ICs2OTk1LDcgQEAg
dm9pZCBXZWJQYWdlOjpzeW5jaHJvbml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3Jr
UHJvY2VzcygpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpTZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobV9pZGVudGlmaWVyLCBt
X2NvcnNEaXNhYmxpbmdQYXR0ZXJucyksIDApOwogfQogCisKICNpZiBFTkFCTEUoTUVESUFfVVNB
R0UpCiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Np
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwg
Y29uc3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGU3ZjhjMGEzYjYwNGU3YWExNTdjNzQwMjMxZTU1NTc0OWQ0ZWY3Yzcu
LjIxMTBhMzJmNjcwZjAwZmEyNDRmZTZmOWQ3OTVhNmRkZjYwZDE3MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiQ29u
dGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZv
LmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBAIC0xNjAsNyArMTYxLDYgQEAgY2xhc3Mg
QXJyYXk7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBA
IC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5j
V2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkK
ICAgICB7CiAgICAgICAgIGNhbmNlbEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNSZXBsaWVz
KCk7CiAgICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJl
cGx5KSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxh
dGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwpAQCAtMTgyNiw2ICsxODI2LDkgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgYm9vbCBtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsK
KyNlbmRpZgogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIG1fbmVlZHNJ
bkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgZmFsc2UgfTsKICNlbmRpZgpAQCAtMjE4Myw0ICsy
MTg2LDMgQEAgaW5saW5lIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRv
clN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY28KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGYy
ZjIyODIyYzdiMjIzZmNhNTlmOTU1NzNkMTFkYzk5YjEwMzQ4MTEuLjU4MmVlNzVkOTlhNzQyNDI1
NGEzOWRhYjIwNmY4NDYxNzM0YWQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTE5NDIsNiArMTk0MiwyMCBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UpCiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KKworI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgV2ViUHJvY2Vzczo6
c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wgdXNlR1BVUHJvY2Vzc0ZvcldlYkdMKQorewor
ICAgIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMID0gdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQor
Citib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKKyNlbmRpZgor
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCBlOWM0N2RiNGM0NDdjMGY0YWI2MjdjMDk0YjVmNjhkYjU2NWE5YTZjLi4xYTU4
NWFjMTQyYjE4MzI3NjRjNGQ4NTM3OTA5MGIyY2JjYTczYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM0Nyw2ICszNDcsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhib29sKTsKICAgICB2b2lkIHNldFVzZUdQ
VVByb2Nlc3NGb3JNZWRpYShib29sKTsKICAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmlu
Z0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAg
dm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCk7CisgICAgYm9vbCBzaG91bGRVc2VS
ZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShWUDkpCkBAIC02ODcsNiArNjkxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlR1BV
UHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZUdQVVBy
b2Nlc3NGb3JET01SZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNz
Rm9yTWVkaWEgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fdXNlR1BV
UHJvY2Vzc0ZvcldlYkdMIHsgZmFsc2UgfTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VlA5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGE0NjY0YmFhYzljNDI0YzU2Yzg2YTkyNjA3YTQyYzU2MjA3NjkwNTMuLmRhMzk2MDgwMDBjZDNl
ODc1Zjc5NGYzOGM1NWZlODFmMzJiODM5ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMS0wMyAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRz
IGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVSBwcm9jZXNzLgor
ICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMgYW5kIGlz
IGluY29tcGxldGUuCisKKyAgICAgICAgQWRkIHRoZSBjb2RlIGdlbmVyYXRvciB0byBnZW5lcmF0
ZSB0aGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAt
d2ViZ2w6IEFkZGVkLgorCiAyMDIwLTExLTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBuZXcgZGlzcGxheSBsaXN0IG1ldGEgY29t
bWFuZHMgaW4gcHJlcGFyYXRpb24gZm9yIHdlYmtpdC5vcmcvYi8yMTkwOTEKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTQxNGQ0NzFmYTQ4MjM3MDE5MjkyMzczMGFjZjk2
ZGUzZWY5MTA4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsCkBAIC0wLDAgKzEsMTAyNSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyAtKi0g
Y29kaW5nOiB1dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgVGhpcyBzY3JpcHQg
Z2VuZXJhdGVzIHRoZSBzb3VyY2UgZmlsZXMgZm9yIFdlYkdMIEdQVSBwcm9jZXNzIElQQy4KKyMK
KyMgcHl0aG9uMyAtbSBibGFjayAtbCAxNTAgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdl
YmdsCisjIHB5dGhvbjMgLW0gbXlweSBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
KyMKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGVudW0KK2ltcG9ydCBwYXRobGliCitpbXBvcnQg
cmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBjb2xsZWN0aW9ucworCitmcm9tIHR5cGluZyBpbXBvcnQg
TGlzdCwgRGljdCwgSXRlcmFibGUsIENhbGxhYmxlLCBUdXBsZSwgU2V0LCBPcHRpb25hbCwgR2Vu
ZXJhdG9yLCBJdGVyYXRvciwgQ291bnRlcgorCityb290X2RpciA9IChwYXRobGliLlBhdGgoX19m
aWxlX18pLnBhcmVudCAvICIuLiIgLyAiLi4iKS5yZXNvbHZlKCkKK2V4dGVuc2lvbnNfaW5wdXRf
Zm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYkNvcmUiIC8gInBsYXRmb3JtIiAvICJncmFw
aGljcyIgLyAiRXh0ZW5zaW9uc0dMLmgiCisKK2Z1bmN0aW9uc19pbnB1dF9mbnMgPSBbCisgICAg
cm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAi
Z3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKK10KK3R5cGVzX2lu
cHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8g
IkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKwor
Cit0ZW1wbGF0ZV9wcmVhbWJsZSA9ICIiIi8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorIiIiCitjb250ZXh0X2Z1
bmN0aW9uc19mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJHUFVQcm9jZXNz
IiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0
ZWQuaCIKK2NvbnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlID0gKAorICAgIHRlbXBsYXRlX3ByZWFt
YmxlCisgICAgKyAiIiIvLyBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwcml2
YXRlIHNlY3Rpb24gb2YgdGhlCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbXBsZW1lbnRh
dGlvbnMuCisjcHJhZ21hIG9uY2UKK3t9CisKKyIiIgorKQorY29udGV4dF9tZXNzYWdlc19mbiA9
IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJHUFVQcm9jZXNzIiAvICJncmFwaGlj
cyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4iCitjb250ZXh0X21lc3Nh
Z2VzX3RlbXBsYXRlID0gKAorICAgIHRlbXBsYXRlX3ByZWFtYmxlCisgICAgKyAiIiIjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CisgICAg
dm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJv
bm91cworICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQor
ICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3t9Cit9fQorCisjZW5kaWYKKwor
IiIiCispCisKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNl
IiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIgorY29udGV4dF9w
cm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICAr
ICIiIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAm
JiBQTEFURk9STShDT0NPQSkKKworbmFtZXNwYWNlIFdlYktpdCB7ewore30KKworfX0KKworI2Vu
ZGlmCisKKyIiIgorKQorCisKK2RlZiB3cml0ZV9maWxlKGZuLCBuZXdfY29udGVudHMpOgorICAg
IHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgaWYgZi5yZWFk
KCkgPT0gbmV3X2NvbnRlbnRzOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgIGV4Y2VwdDoK
KyAgICAgICAgcGFzcworICAgIHdpdGggb3BlbihmbiwgInciKSBhcyBmOgorICAgICAgICBmLndy
aXRlKG5ld19jb250ZW50cykKKworY2xhc3MgY3BwX3R5cGUob2JqZWN0KToKKyAgICB0eXBlX25h
bWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0cik6CisgICAg
ICAgIHNlbGYudHlwZV9uYW1lID0gdHlwZV9uYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6
CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYudHlwZV9uYW1lKQorCisgICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2VxX18o
c2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUgPT0gb3RoZXIudHlw
ZV9uYW1lCisKKyAgICBkZWYgaXNfdm9pZChzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4g
c2VsZi50eXBlX25hbWUgaW4gWyJ2b2lkIiwgIkdDR0x2b2lkIiwgImNvbnN0IHZvaWQiLCAiY29u
c3QgR0NHTHZvaWQiXQorCisgICAgZGVmIGlzX2NvbnN0KHNlbGYpIC0+IGJvb2w6CisgICAgICAg
IHJldHVybiBzZWxmLnR5cGVfbmFtZS5zdGFydHN3aXRoKCJjb25zdCAiKQorCisgICAgZGVmIGlz
X2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRl
ZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZh
bHNlCisKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9wb2ludGVyKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKSAtPiBib29s
OgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2Vs
ZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5
cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBn
ZXRfZGVjYXlfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICBpZiBzZWxmLmlzX2Nv
bnN0KCk6CisgICAgICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lWzY6
XSkKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXRfcnZhbHVlX3R5cGUoc2VsZikg
LT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFt
ZSArICImJiIpCisKKyAgICBkZWYgZ2V0X3BvaW50ZXJfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUn
OgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIioiKQorCitj
bGFzcyBjcHBfdHlwZV9jb250YWluZXIoY3BwX3R5cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB0eXBlX25hbWUgOiBzdHIsIGNvbnRhaW5lcl9uYW1lIDogc3RyLCBjb250YWluZWRfdHlwZSA6
IGNwcF90eXBlLCBhcml0eSA6IE9wdGlvbmFsW2ludF0gPSBOb25lKToKKyAgICAgICAgY3BwX3R5
cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNvbnRhaW5lcl9uYW1l
ID0gY29udGFpbmVyX25hbWUKKyAgICAgICAgc2VsZi5jb250YWluZWRfdHlwZSA9IGNvbnRhaW5l
ZF90eXBlCisgICAgICAgIHNlbGYuYXJpdHkgPSBhcml0eQorICAgIGRlZiBpc19jb250YWluZXIo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYgaXNfc3BhbihzZWxm
KSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNw
YW4iCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iIGFuZCBzZWxmLmFyaXR5IGlzIE5v
bmUKKyAgICBkZWYgZ2V0X2NvbnRhaW5lcl9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5jb250YWluZXJfbmFtZQorICAgIGRlZiBnZXRfYXJpdHkoc2VsZikgLT4gT3B0aW9uYWxbaW50
XToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXJpdHkKKyAgICBkZWYgZ2V0X2NvbnRhaW5lZF90eXBl
KHNlbGYpIC0+IGNwcF90eXBlOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZQor
ICAgIGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIHNlbGYuY29udGFpbmVkX3R5cGUuaXNfY29uc3QoKQorCitkZWYgY3JlYXRlX2NwcF90eXBl
X2NvbnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5l
cl06CisgICAgbSA9IHJlLm1hdGNoKHIiKFtcdzpdKyk8KC4rKT4kIiwgdHlwZV9uYW1lKQorICAg
IGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGNvbnRhaW5lcl9uYW1lID0gbVsx
XQorICAgIHRlbXBsYXRlcyA9IG1bMl0KKyAgICBhcml0eSA9IE5vbmUKKyAgICBtID0gcmUubWF0
Y2gociIoW14sXSspLFxzKihcZCspIiwgdGVtcGxhdGVzKQorICAgIGlmIG06CisgICAgICAgIHRl
bXBsYXRlcyA9IG1bMV0KKyAgICAgICAgYXJpdHkgPSBpbnQobVsyXSkKKyAgICByZXR1cm4gY3Bw
X3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSwgY29udGFpbmVyX25hbWUsIGdldF9jcHBfdHlwZSh0
ZW1wbGF0ZXMpLCBhcml0eSkKKworY2xhc3MgY3BwX3R5cGVfZnVuY3Rpb24oY3BwX3R5cGUpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIHJldHVybl92YWx1ZV90eXBl
IDogY3BwX3R5cGUsIGFyZ3VtZW50X3R5cGVzIDogTGlzdFtjcHBfdHlwZV0pOgorICAgICAgICBj
cHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYucmV0dXJuX3Zh
bHVlX3R5cGUgID0gcmV0dXJuX3ZhbHVlX3R5cGUKKyAgICAgICAgc2VsZi5hcmd1bWVudF90eXBl
cyA9IGFyZ3VtZW50X3R5cGVzCisKK2RlZiBjcHBfc3BsaXRfYXJnc19zcGVjcyhhcmdzX3NwZWMg
OiBzdHIpIC0+IEl0ZXJhdG9yW3N0cl06CisgICAgICMgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNv
bS9xdWVzdGlvbnMvMzM1MjcyNDUvcHl0aG9uLXNwbGl0LWJ5LWNvbW1hLXNraXBwaW5nLXRoZS1j
b250ZW50LWluc2lkZS1wYXJlbnRoZXNlcworICAgIGNvbW1hID0gciIsKD8hKD86W148XSpcPFte
Pl0qXD4pKltePD5dKlw+KSIKKyAgICByZXR1cm4gZmlsdGVyKE5vbmUsIFthLnN0cmlwKCkgZm9y
IGEgaW4gcmUuc3BsaXQoY29tbWEsIGFyZ3Nfc3BlYy5zdHJpcCgpKV0pCisgICAgCitkZWYgY3Jl
YXRlX2NwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5
cGVfZnVuY3Rpb25dOgorICAgIG0gPSByZS5tYXRjaChyJyguKilcKCguKilcKScsIHR5cGVfbmFt
ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm5fdmFsdWVf
dHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgIGFyZ3NfdHlwZXMgPSBbZ2V0X2NwcF90eXBl
KGEpIGZvciBhIGluIGNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bMl0pXQorICAgIHJldHVybiBjcHBf
dHlwZV9mdW5jdGlvbih0eXBlX25hbWUsIHJldHVybl92YWx1ZV90eXBlLCBhcmdzX3R5cGVzKQor
ICAgICAgICAKKyMgUG9pbnRlciBvciByZWZlcmVyZW5jZQorY2xhc3MgY3BwX3R5cGVfaW5kaXJl
Y3QoY3BwX3R5cGUpOgorICAgIGNhdGVnb3J5IDogc3RyCisgICAgdmFsdWVfdHlwZSA6IGNwcF90
eXBlCisgICAgCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY2F0ZWdv
cnkgOiBzdHIsIHZhbHVlX3R5cGUgOiBjcHBfdHlwZSk6CisgICAgICAgIGNwcF90eXBlLl9faW5p
dF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5jYXRlZ29yeSA9IGNhdGVnb3J5Cisg
ICAgICAgIHNlbGYudmFsdWVfdHlwZSA9IHZhbHVlX3R5cGUKKworICAgIGRlZiBpc19jb25zdF9w
b2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIHNl
bGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNf
Y29uc3RfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAn
JicgYW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19yZWZlcmVuY2Uoc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQor
ICAgIGRlZiBpc19ydmFsdWVfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5j
YXRlZ29yeSA9PSAnJiYnCisgICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi52YWx1ZV90eXBlCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QodHlw
ZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9pbmRpcmVjdF06CisgICAgbSA9IHJl
Lm1hdGNoKHIiY29uc3QgKC4rKSYmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAg
ICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYmJCIsIHR5cGVfbmFtZSkgCisgICAgaWYgbToKKyAgICAg
ICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYmJywgZ2V0X2NwcF90eXBl
KG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJCIsIHR5cGVfbmFtZSkKKyAg
ICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYkIiwgdHlwZV9uYW1lKQor
ICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcm
JywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKylcKiQi
LCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKylc
KiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGly
ZWN0KHR5cGVfbmFtZSwgJyonLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgcmV0dXJuIE5vbmUK
KworCitjbGFzcyBjcHBfZXhwcihvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgZXhw
cjogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIGV4cHI6IHN0
cik6CisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5leHByID0gZXhwcgor
CisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmV4cHIKKworCitD
cHBFeHByQ29udmVydGVyID0gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHBy
XQorCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjYXN0
X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBl
XSwgY3BwX2V4cHJdOgorICAgIGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIo
ZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0
dXJuIGNwcF9leHByKHR5cGUsIGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4ocmVpbnRl
cnByZXRfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAg
IHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIKKworZGVmIGNwcF9yZWlu
dGVycHJldF9jYXN0X3RvX3BvaW50ZXJfdGhyb3VnaChjYXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90
eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdOgorICAgIGRl
ZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBj
cHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInJl
aW50ZXJwcmV0X2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oc3RhdGljX2Nhc3Q8e3N0cihjYXN0X3Ro
cm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0
X2Nhc3RfdG9fcG9pbnRlcgorCitkZWYgY3BwX3N0YXRpY19jYXN0KGV4cHI6IGNwcF9leHByLCB0
eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYi
c3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oe3N0cihleHByKX0pIikKKworCitkZWYgY3Bw
X2ltcGxpY2l0X2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhw
cjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgc3RyKGV4cHIpKQorCisKK2RlZiBjcHBfYXJy
YXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBf
dHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0g
dHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4g
Y3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfShyZWludGVycHJldF9jYXN0PHtlbGVtZW50X3Bv
aW50ZXJfdHlwZX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9LnNpemUoKSkiKQor
CitkZWYgd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252
ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9l
eHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUo
KS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5
cGUpfShyZWludGVycHJldF9jYXN0PGNvbnN0IHtlbGVtZW50X3BvaW50ZXJfdHlwZX0+KHtzdHIo
ZXhwcil9LmRhdGEpLCB7c3RyKGV4cHIpfS5idWZTaXplKSIpCisKK2RlZiBjcHBfbW92ZV9leHBy
KGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIoZXhwci50
eXBlLmdldF9ydmFsdWVfdHlwZSgpLCBmIldURk1vdmUoe3N0cihleHByKX0pIikKKworCitjcHBf
dHlwZXM6IERpY3Rbc3RyLCBjcHBfdHlwZV0gPSB7fQorCitjcHBfdHlwZV9jb25zdHJ1Y3RvcnMg
OiBMaXN0W0NhbGxhYmxlW1tzdHJdLCBPcHRpb25hbFtjcHBfdHlwZV1dXSA9IFsKKyAgICBjcmVh
dGVfY3BwX3R5cGVfZnVuY3Rpb24sCisgICAgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lciwKKyAg
ICBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QKK10KKworZGVmIGdldF9jcHBfdHlwZSh0eXBlX25h
bWU6IHN0cik6CisgICAgciA9IGNwcF90eXBlcy5nZXQodHlwZV9uYW1lLCBOb25lKQorICAgIGlm
IHI6CisgICAgICAgIHJldHVybiByCisgICAgZm9yIHR5cGVfY29uc3RyIGluIGNwcF90eXBlX2Nv
bnN0cnVjdG9yczoKKyAgICAgICAgciA9IHR5cGVfY29uc3RyKHR5cGVfbmFtZSkKKyAgICAgICAg
aWYgcjoKKyAgICAgICAgICAgIGJyZWFrCisgICAgaWYgbm90IHI6CisgICAgICAgIHIgPSBjcHBf
dHlwZSh0eXBlX25hbWUpCisgICAgY3BwX3R5cGVzW3R5cGVfbmFtZV0gPSByCisgICAgcmV0dXJu
IHIKKworCitjbGFzcyBjcHBfYXJnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgdHlwZTog
Y3BwX3R5cGUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFtZTog
c3RyKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnR5cGUgPSB0eXBl
CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7fSB7fSIuZm9ybWF0
KHNlbGYudHlwZSwgc2VsZi5uYW1lKQorCisKK2NsYXNzIGNwcF9kZWNsKG9iamVjdCk6CisgICAg
dHlwZTogY3BwX3R5cGUKKyAgICBuYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
eXBlOiBjcHBfdHlwZSwgbmFtZTogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAg
ICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAg
cmV0dXJuIGYie3N0cihzZWxmLnR5cGUpfSB7c2VsZi5uYW1lfSIKKworCitjbGFzcyBjcHBfYXJn
X2xpc3Qob2JqZWN0KToKKyAgICBhcmdzOiBMaXN0W2NwcF9hcmddCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MK
KworICAgIGRlZiBuYW1lcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihhLm5hbWUg
Zm9yIGEgaW4gc2VsZi5hcmdzKQorCisgICAgZGVmIGV4cHJzKHNlbGYpOgorICAgICAgICByZXR1
cm4gW2NwcF9leHByKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBk
ZWYgZGVjbHMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2RlY2woYS50eXBlLCBhLm5hbWUp
IGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiB0eXBlcyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIFthLnR5cGUgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgIHJldHVybiAiLCAiLmpvaW4oc3RyKGEpIGZvciBhIGluIHNlbGYuYXJncykKKwor
CitjbGFzcyBjcHBfZnVuYyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9h
cmdfbGlzdAorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGlzX2V4dGVuc2lvbjogYm9v
bAorICAgIG92ZXJsb2FkX3N1ZmZpeDogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFt
ZTogc3RyLCByZXR1cm5fdHlwZTogY3BwX3R5cGUsIGFyZ3M6IGNwcF9hcmdfbGlzdCwgaXNfZXh0
ZW5zaW9uOiBib29sKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnJl
dHVybl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAg
ICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLm92ZXJsb2Fk
X3N1ZmZpeCA9ICIiCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGYi
e3NlbGYucmV0dXJuX3R5cGV9IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pIgorCisgICAg
ZGVmIGdldF9hcmdzX2NhdGVnb3JpZXMoc2VsZikgLT4gVHVwbGVbTGlzdFtjcHBfYXJnXSwgTGlz
dFtjcHBfYXJnXV06CisgICAgICAgIGluX2FyZ3MgPSBbXQorICAgICAgICBvdXRfYXJncyA9IFtd
CisgICAgICAgIGZvciBhIGluIHNlbGYuYXJncy5hcmdzOgorICAgICAgICAgICAgI2ZtdDogb2Zm
CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpIG9yIFwKKyAgICAgICAgICAgICAg
ICBhLnR5cGUuaXNfcmVmZXJlbmNlKCk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2Fd
CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIp
IGFuZCAoKChhLnR5cGUuaXNfc3BhbigpIG9yIGEudHlwZS5pc19keW5hbWljX3NwYW4oKSkgYW5k
IG5vdCBhLnR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKSkpOgorICAgICAgICAg
ICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBpbl9hcmdzICs9IFthXQorICAgICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgcmV0dXJuIGlu
X2FyZ3MsIG91dF9hcmdzCisKKyAgICBkZWYgaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLCB0eXBl
OiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgaXNfaW1w
bGVtZW50ZWQoc2VsZik6CisgICAgICAgICMiIGluIGEudHlwZS50eXBlX25hbWUgZm9yIGEgaW4g
c2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICAjaWYg
IkdDR0xzeW5jIiBpbiBzZWxmLnJldHVybl90eXBlLnR5cGVfbmFtZToKKyAgICAgICAgIyAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEubmFtZSA9PSAiYnVmU2l6ZSIgZm9yIGEgaW4g
c2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFu
eShhLnR5cGUuaXNfcG9pbnRlcigpIGFuZCBhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKS5pc192b2lk
KCkgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgIGlmIGFueShub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKGEudHlwZSkgZm9yIGEg
aW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlm
IHNlbGYucmV0dXJuX3R5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoc2VsZi5yZXR1cm5fdHlw
ZSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworCit3
ZWJraXRfaXBjX3R5cGVzOiBEaWN0W2NwcF90eXBlLCBjcHBfdHlwZV0gPSB7fQorCit3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnM6IERpY3RbVHVwbGVbY3BwX3R5cGUsIGNwcF90eXBlXSwgQ3Bw
RXhwckNvbnZlcnRlcl0gPSB7fQorCisKK2RlZiB3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihleHBy
OiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICIiIiBDb252ZXJ0
cyBgZXhwcmAgb2YgdHlwZSBvZiBgc2VsZmAgdG8gYHR5cGVgICIiIgorICAgIGNvbnZlcnQgPSB3
ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuZ2V0KChleHByLnR5cGUsIHR5cGUpLCBOb25lKQor
ICAgIGlmIG5vdCBjb252ZXJ0OgorICAgICAgICBpZiBleHByLnR5cGUgPT0gdHlwZToKKyAgICAg
ICAgICAgIHJldHVybiBleHByCisgICAgICAgIGNvbnZlcnQgPSBjcHBfaW1wbGljaXRfY2FzdAor
ICAgIHJldHVybiBjb252ZXJ0KGV4cHIsIHR5cGUpCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3Nw
YW5fdHJhbnNmZXJfdHlwZSh0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlwZToK
KyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNheV90
eXBlKCkKKyAgICBhcml0eSA9IHR5cGUuZ2V0X2FyaXR5KCkKKyAgICB3ZWJraXRfaXBjX2VsZW1l
bnRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZWxlbWVudF90eXBlXSBpZiBub3QgZWxlbWVudF90
eXBlLmlzX3ZvaWQoKSBlbHNlIGdldF9jcHBfdHlwZSgndWludDhfdCcpCisgICAgaWYgYXJpdHkg
aXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVm
ZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50X3R5cGUpfSwge2FyaXR5fT4iKQorICAgIHJl
dHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19l
bGVtZW50X3R5cGUpfT4iKQorCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlw
ZSh0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlw
ZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGlmIGVs
ZW1lbnRfdHlwZS5pc192b2lkKCk6CisgICAgICAgIGVsZW1lbnRfdHlwZSA9IGdldF9jcHBfdHlw
ZSgnR0NHTGNoYXInKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgIGlu
bGluZV9jYXBhY2l0eSA9IDE2IGlmICJmbG9hdCIgaW4gZWxlbWVudF90eXBlLnR5cGVfbmFtZSBl
bHNlIDQKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIlZlY3Rvcjx7c3RyKGVsZW1lbnRf
dHlwZSl9LCB7c3RyKGlubGluZV9jYXBhY2l0eSl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlw
ZShmInN0ZDo6YXJyYXk8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cih0eXBlLmdldF9hcml0eSgp
KX0+IikKKworZGVmIHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uKGV4cHIgOiBj
cHBfZXhwciwgdHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgcG9p
bnRlcl9jYXN0X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5
cGUoKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgIHJldHVybiBjcHBf
ZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PHtzdHIocG9pbnRlcl9j
YXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisK
KyAgICBhc3NlcnQodHlwZS5pc19zcGFuKCkpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYi
bWFrZUdDR0xTcGFuPHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9PihyZWludGVycHJldF9jYXN0PHtz
dHIocG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSkiKQorCisjIFNlZSBt
ZXNzYWdlcy5weSBmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZQord2Via2l0X2lwY19idWlsdGluX3R5
cGVzID0gc2V0KAorICAgIFsidWludDhfdCIsICJ1aW50MTZfdCIsICJ1aW50MzJfdCIsICJ1aW50
NjRfdCIsICJpbnQ4X3QiLCAiaW50MTZfdCIsICJpbnQzMl90IiwgImludDY0X3QiLCAiYm9vbCIs
ICJmbG9hdCIsICJkb3VibGUiICJib29sIl0KKykKKworCitkZWYgd2Via2l0X2lwY19nZXRfbWVz
c2FnZV9mb3J3YXJkZXJfdHlwZSh0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX3R5cGU6CisgICAgaWYg
dHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1
cm4gdHlwZQorICAgIHJldHVybiB0eXBlLmdldF9ydmFsdWVfdHlwZSgpCisKKworZGVmIHdlYmtp
dF9pcGNfbW92ZV9leHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICBpZiBleHBy
LnR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoKKyAgICAgICAgcmV0
dXJuIGV4cHIKKyAgICByZXR1cm4gY3BwX21vdmVfZXhwcihleHByKQorCisKK2RlZiB3ZWJraXRf
aXBjX21zZ19uYW1lKGZ1bmM6IGNwcF9mdW5jKToKKyAgICByZXR1cm4gZnVuYy5uYW1lWzBdLmNh
cGl0YWxpemUoKSArIGZ1bmMubmFtZVsxOl0gKyBmdW5jLm92ZXJsb2FkX3N1ZmZpeAorCisKK2Ns
YXNzIHdlYmtpdF9pcGNfbXNnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgaW5fYXJnczog
Y3BwX2FyZ19saXN0CisgICAgb3V0X2FyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZ1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gd2Via2l0X2lw
Y19tc2dfbmFtZShmdW5jKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGZ1bmMuZ2V0X2Fy
Z3NfY2F0ZWdvcmllcygpCisgICAgICAgIGlwY19pbl9hcmdzID0gW2NwcF9hcmcod2Via2l0X2lw
Y190eXBlc1thLnR5cGVdLCBhLm5hbWUpIGZvciBhIGluIGluX2FyZ3NdCisgICAgICAgIGlwY19v
dXRfYXJncyA9IFtdCisgICAgICAgIGlmIG5vdCBmdW5jLnJldHVybl90eXBlLmlzX3ZvaWQoKToK
KyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2Z1
bmMucmV0dXJuX3R5cGVdLCAicmV0dXJuVmFsdWUiKV0KKyAgICAgICAgZm9yIGEgaW4gb3V0X2Fy
Z3M6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY190eXBl
c1thLnR5cGVdLCBhLm5hbWUpXQorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2R5bmFtaWNfc3Bh
bigpOgorICAgICAgICAgICAgICAgIGlwY19pbl9hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlw
ZSgidWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUiKV0KKyAgICAgICAgc2VsZi5pbl9hcmdzID0g
Y3BwX2FyZ19saXN0KGlwY19pbl9hcmdzKQorICAgICAgICBzZWxmLm91dF9hcmdzID0gY3BwX2Fy
Z19saXN0KGlwY19vdXRfYXJncykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBp
ZiBsZW4oc2VsZi5vdXRfYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBmIlxuICAgIHZv
aWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkgLT4gKHtzdHIoc2VsZi5vdXRfYXJn
cyl9KSBTeW5jaHJvbm91cyIKKyAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1l
fSh7c3RyKHNlbGYuaW5fYXJncyl9KSIKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9p
bXBsKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgbXNnX25hbWU6IHN0cgorICAgIHJldHVy
bl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgcHJlX2NhbGxf
c3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2Fs
bF9zdG10czogTGlzdFtzdHJdCisgICAgcmV0dXJuX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9l
eHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5u
YW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm1zZ19uYW1lID0gd2Via2l0X2lwY19t
c2dfbmFtZShjcHBfZnVuYykKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJl
dHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAg
ICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMg
PSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMg
PSBbXQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVn
b3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVy
bl90eXBlKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJncyhpbl9hcmdzKQorICAgICAgICBz
ZWxmLnByb2Nlc3Nfb3V0X2FyZ3Mob3V0X2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19jYWxs
KCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGluX2V4cHJzID0gIiwg
Ii5qb2luKFtzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbl9leHByc10pCisgICAgICAgIG91dF9leHBy
cyA9ICIsICIuam9pbihzdHIobykgZm9yIG8gaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgIGlz
X2FzeW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192b2lkKCkgYW5kIGxlbihvdXRfZXhwcnMpID09
IDAKKyAgICAgICAgaWYgaXNfYXN5bmM6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0g
WworICAgICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOyIsCisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZW5k
X3Jlc3VsdCA9ICIiCisgICAgICAgICAgICBpZiBzZWxmLnBvc3RfY2FsbF9zdG10czogCisgICAg
ICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiYXV0byBzZW5kUmVzdWx0ID0gIgorICAgICAgICAg
ICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gWworICAgICAgICAgICAgICAgICAgICAiaWYg
KHNlbmRSZXN1bHQpIiArICgiIHsiIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVs
c2UgIiIpCisgICAgICAgICAgICAgICAgXSArIFsiICAgICIgKyBzIGZvciBzIGluIHNlbGYucG9z
dF9jYWxsX3N0bXRzXSArIFsKKyAgICAgICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2VsZi5w
b3N0X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFt
ZX0oe2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYu
bXNnX25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsiLAorICAgICAgICAgICAgXQorCisKKyAgICBkZWYgcHJvY2Vzc19pbl9hcmdz
KHNlbGYsIGluX2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgaSBpbiBpbl9hcmdz
OgorICAgICAgICAgICAgaWYgaS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2Vs
Zi5pbl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoaS50eXBlLCBp
Lm5hbWUpLCB3ZWJraXRfaXBjX3R5cGVzW2kudHlwZV0pXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0
X2FyZ3Moc2VsZiwgb3V0X2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgbyBpbiBv
dXRfYXJnczoKKyAgICAgICAgICAgIGlmIG8udHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAg
ICAgICAgdmFsdWVfdHlwZSA9IG8udHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICAg
ICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1t2YWx1ZV90eXBlXQor
ICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdmFsdWVfdHlwZSwgby5uYW1l
ICsgIlJlcGx5IikKKyAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntz
dHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICAgICAgZSA9
IGNwcF9leHByKHYudHlwZSwgdi5uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJz
ICs9IFtlXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKKyAgICAg
ICAgICAgICAgICAgICAgI2ZtdDogb2ZmCisgICAgICAgICAgICAgICAgICAgIGYiaWYgKHtvLm5h
bWV9KSIsCisgICAgICAgICAgICAgICAgICAgIGYiICAgICp7by5uYW1lfSA9IHt3ZWJraXRfaXBj
X2NvbnZlcnRfZXhwcihlLCB2YWx1ZV90eXBlKX07IgorICAgICAgICAgICAgICAgICAgICAjZm10
OiBvbgorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsaWYgby50eXBlLmlzX3NwYW4o
KToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28u
dHlwZV0KKyAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUs
IGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0
X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAg
ICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KKyAgICAg
ICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYi
e28ubmFtZX0uYnVmU2l6ZSIpXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRz
ICs9IFsKKyAgICAgICAgICAgICAgICAgICAgZiJtZW1jcHkoe28ubmFtZX0uZGF0YSwge3YubmFt
ZX0uZGF0YSgpLCB7by5uYW1lfS5idWZTaXplICogc2l6ZW9mKHtzdHIod2Via2l0X2lwY190eXBl
LmdldF9jb250YWluZWRfdHlwZSgpKX0pKTsiCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIoby50
eXBlLCBvLm5hbWUpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVy
bl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAg
ICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUK
KyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0K
KyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhwcihpcGNfcmV0dXJuX3R5cGUsICJy
ZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92
YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAg
ICAgIHNlbGYub3V0X2V4cHJzID0gW3JldHVybl92YWx1ZV9leHByXSArIHNlbGYub3V0X2V4cHJz
CisgICAgICAgIHNlbGYucmV0dXJuX3N0bXRzID0gW2YicmV0dXJuIHtzdHIod2Via2l0X2lwY19j
b252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIHJldHVybl90eXBlKSl9OyJdCisKKyAgICBk
ZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJfIiBp
biBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgIHtifSIg
Zm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9z
dF9jYWxsX3N0bXRzICsgc2VsZi5yZXR1cm5fc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIiXG57
c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2Vs
Zi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9Cit7e3tib2R5fQorfX0iIiIKKworCitj
bGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcihvYmplY3QpOgorICAgIG5hbWU6
IHN0cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAor
ICAgIGJvZHk6IExpc3Rbc3RyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBj
cHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKworICAgICAgICBz
ZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdz
ID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLmJvZHkgPSBbIm5vdEltcGxlbWVudGVkKCk7
Il0KKyAgICAgICAgaWYgY3BwX2Z1bmMucmV0dXJuX3R5cGUudHlwZV9uYW1lICE9ICJ2b2lkIjoK
KyAgICAgICAgICAgIHNlbGYuYm9keSArPSBbInJldHVybiB7IH07Il0KKworICAgIGRlZiBfX3N0
cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYu
bmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiXG57XG4gICAgIiArICJcbiAgICAiLmpvaW4o
c2VsZi5ib2R5KSArICJcbn0iCisgICAgICAgIHJldHVybiBmIlxue3N0cihzZWxmLnJldHVybl90
eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxm
LmFyZ3MpfSl7bm9saW50fXtib2R5fSIKKworCitjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93ZWJr
aXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5IEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtp
dF9pcGNfY3BwX3Byb3h5X2ltcGxdCisgICAgdW5pbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9w
cm94eV9wbGFjZWhvbGRlcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFi
bGVbY3BwX2Z1bmNdLCB1bmltcGxlbWVudGVkOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAg
ICBzZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwoZikgZm9yIGYgaW4gZnVu
Y3NdCisgICAgICAgIHNlbGYudW5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhv
bGRlcihmKSBmb3IgZiBpbiB1bmltcGxlbWVudGVkXQorCisgICAgZGVmIGdldF9mdW5jdGlvbnMo
c2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZvciBpIGluIHNlbGYuaW1w
bHMgKyBzZWxmLnVuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdy
aXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiwKKyAgICAg
ICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9m
dW5jdGlvbnMoKSksCisgICAgICAgICkKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBsKG9i
amVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgaXNfZXh0
ZW5zaW9uOiBib29sCisgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3Rt
dHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgaW5fZXhw
cnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIHJl
dHVybl92YWx1ZV9leHByOiBPcHRpb25hbFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5u
YW1lCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gY3BwX2Z1bmMub3ZlcmxvYWRfc3Vm
Zml4CisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9hcmdfbGlzdChbXSkKKyAgICAgICAgc2VsZi5p
c19leHRlbnNpb24gPSBjcHBfZnVuYy5pc19leHRlbnNpb24KKyAgICAgICAgc2VsZi5wcmVfY2Fs
bF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYu
cG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAgICAg
IHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IE5v
bmUKKworICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVybl90
eXBlKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVn
b3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfYXJncyhjcHBfZnVuYy5hcmdzLmFyZ3MsIHNl
dChpbl9hcmdzKSwgc2V0KG91dF9hcmdzKSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQor
CisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgZXh0ID0gImdldEV4dGVuc2lv
bnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVsc2UgIiIKKworICAgICAgICBpbl9leHBycyA9
ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5pbl9leHBycykKKyAgICAgICAgaXNfYXN5
bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMpID09IDAKKworICAgICAgICBjYWxsX2V4cHIgPSBmIm1f
Y29udGV4dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5fZXhwcnN9KSIKKyAgICAgICAgaWYgbm90IHNl
bGYucmV0dXJuX3ZhbHVlX2V4cHI6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yi
e2NhbGxfZXhwcn07Il0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10
cyArPSBbZiJ7c3RyKHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIpfSA9IHtjYWxsX2V4cHJ9OyJdCisg
ICAgICAgIGlmIG5vdCBpc19hc3luYzoKKyAgICAgICAgICAgIG91dF9leHBycyA9ICIsICIuam9p
bihzdHIoZSkgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAgICBzZWxmLnBvc3Rf
Y2FsbF9zdG10cyArPSBbZiJjb21wbGV0aW9uSGFuZGxlcih7b3V0X2V4cHJzfSk7Il0KKworICAg
IGRlZiBwcm9jZXNzX2FyZ3Moc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSwgaW5fYXJnczogU2V0
W2NwcF9hcmddLCBvdXRfYXJnczogU2V0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGEgaW4gYXJn
czoKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAg
ICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBpZiBhIGluIGluX2FyZ3M6CisgICAgICAg
ICAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZyhhKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2FyZyhhKQorICAgICAgICBpZiBzZWxmLm91dF9l
eHByczoKKyAgICAgICAgICAgIG91dF9hcmdfZGVjbHMgPSAiLCAiLmpvaW4oZiJ7c3RyKGUudHlw
ZSl9IiBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYuYXJncy5hcmdz
ICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZShmIkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoe291dF9h
cmdfZGVjbHN9KT4mJiIpLCAiY29tcGxldGlvbkhhbmRsZXIiKV0KKworICAgIGRlZiBwcm9jZXNz
X2luX2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2Nw
cF9hcmcod2Via2l0X2lwY19nZXRfbWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh3ZWJraXRfaXBjX3R5
cGVzW2EudHlwZV0pLCBhLm5hbWUpXQorICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcih3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFt
ZSksIGEudHlwZSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJnKHNlbGYsIGE6IGNwcF9hcmcp
OgorICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgdmFsdWVfYXJn
ID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAg
c2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1
ZV9hcmcubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2Nw
cF9leHByKGEudHlwZSwgZiIme3ZhbHVlX2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgZSA9IGNw
cF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHdlYmtp
dF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZS50eXBlXQorICAgICAgICAgICAg
c2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9pcGNf
dmFsdWVfdHlwZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAg
ICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQor
ICAgICAgICAgICAgc2l6ZV9hcmcgPSBjcHBfYXJnKGdldF9jcHBfdHlwZSgidWludDY0X3QiKSwg
ZiJ7YS5uYW1lfVNpemUiKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW3NpemVfYXJn
XQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0
b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10
cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9KHN0YXRp
Y19jYXN0PHNpemVfdD4oe2EubmFtZX1TaXplKSwgMCk7Il0KKyAgICAgICAgICAgIHNlbGYuaW5f
ZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBmIntzdG9yZV9hcmcubmFtZX0iKV0K
KyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQor
ICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNw
cF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSld
CisgICAgICAgIGVsaWYgYS50eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2lu
c3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgIHN0b3JlX2Fy
ZyA9IGNwcF9hcmcod2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFt
ZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcu
dHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5p
bl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKV0KKyAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAg
ICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9l
eHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSldCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgYS50eXBlLmlzX3JlZmVyZW5jZSgpCisg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAg
ICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEu
bmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3NlbGYubnModmFs
dWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAgICAg
IGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAgICAgICAg
ICBzZWxmLmluX2V4cHJzICs9IFtlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dl
YmtpdF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9pcGNf
dHlwZSkpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90eXBl
OiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAg
ICAgIHJldHVybgorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3Jl
dHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKHJldHVybl90
eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmInty
ZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9fTsi
XQorICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0
X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIGlwY19yZXR1cm5fdHlwZSkpXQor
ICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gcmV0dXJuX3ZhbHVlX2V4cHIKKworICAg
IGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgICAgICB7
Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBzZWxm
LnBvc3RfY2FsbF9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiIgICAgdm9pZCB7c2VsZi5uYW1l
fXtzZWxmLm92ZXJsb2FkX3N1ZmZpeH0oe3N0cihzZWxmLmFyZ3MpfSkKKyAgICB7e3tib2R5fQor
ICAgIH19IiIiCisKKyAgICBkZWYgbnMoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICAj
IFRPRE86IG5hbWVzcGFjZSBpbmZvIGlzIG5vdCBzdG9yZWQgaW4gbmFtZXMuCisgICAgICAgIGlm
IHR5cGUudHlwZV9uYW1lID09ICJBY3RpdmVJbmZvIjoKKyAgICAgICAgICAgIHJldHVybiAiV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OiIgKyBzdHIodHlwZSkKKyAgICAgICAgcmV0dXJuIHN0
cih0eXBlKQorCitkZWYgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcyA6
IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgY291bnRzID0gY29sbGVjdGlvbnMuQ291bnRlcihm
Lm5hbWUgZm9yIGYgaW4gZnVuY3MpCisgICAgc3VmZml4ZXMgOiBDb3VudGVyW3N0cl0gPSBjb2xs
ZWN0aW9ucy5Db3VudGVyKCkKKyAgICBmb3IgZiBpbiBmdW5jczoKKyAgICAgICAgaWYgY291bnRz
W2YubmFtZV0gPiAxOgorICAgICAgICAgICAgZi5vdmVybG9hZF9zdWZmaXggPSBzdHIoc3VmZml4
ZXNbZi5uYW1lXSkKKyAgICAgICAgICAgIHN1ZmZpeGVzLnVwZGF0ZShbZi5uYW1lXSkKKworCitj
bGFzcyBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBp
bXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9pbXBsXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dlYmtp
dF9pcGNfY3BwX2ltcGwoZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9u
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5p
bXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAg
ICAgICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9mdW5j
dGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQor
CisKK2NsYXNzIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGdl
bmVyYXRvci4iCisgICAgbXNnczogTGlzdFt3ZWJraXRfaXBjX21zZ10KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5tc2dz
ID0gW3dlYmtpdF9pcGNfbXNnKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdldF9tZXNz
YWdlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oc3RyKG0pIGZvciBtIGluIHNlbGYu
bXNncykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZShjb250
ZXh0X21lc3NhZ2VzX2ZuLCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdl
dF9tZXNzYWdlcygpKSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM6IHN0ciwgYXJn
X2luZGV4OiBpbnQpOgorICAgIHIgPSBhcmdfc3BlYy5yc3BsaXQoIiAiLCAxKQorICAgIG5hbWUg
PSAiIgorICAgIHR5cGUgPSBOb25lCisgICAgaWYgbGVuKHIpID4gMSBhbmQgclswXSAhPSAiY29u
c3QiOgorICAgICAgICBuYW1lID0gclsxXS5zdHJpcCgpCisgICAgICAgIHR5cGUgPSBnZXRfY3Bw
X3R5cGUoclswXSkKKyAgICBlbHNlOgorICAgICAgICBuYW1lID0gImFyZ3t9Ii5mb3JtYXQoYXJn
X2luZGV4KQorICAgICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKGFyZ19zcGVjKQorICAgIHJldHVy
biBjcHBfYXJnKHR5cGUsIG5hbWUpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19z
cGVjczogSXRlcmFibGVbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRlX2Nw
cF9hcmcoYXJnX3NwZWM9ZSwgYXJnX2luZGV4PWkpIGZvciBpLCBlIGluIGVudW1lcmF0ZShhcmdz
X3NwZWNzKV0pCisKKworZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVj
OiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAgICBy
ZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0dXJu
X3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjcyksIGlzX2V4dGVuc2lv
bj1pc19leHRlbnNpb24pCisKKworZGVmIHJlYWRfbGluZXNfdW50aWwobGluZXMgOiBJdGVyYWJs
ZVtzdHJdLCBtYXRjaCA6IHN0cikgLT4gR2VuZXJhdG9yW3N0ciwgTm9uZSwgTm9uZV06CisgICAg
Zm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIGlmIHJlLm1hdGNoKG1hdGNoLCBsaW5lLnN0cmlw
KCkpOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgeWllbGQgbGluZQorCitkZWYgbWFpbigp
OgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCJ1c2FnZTogJXByb2cgW29w
dGlvbnNdIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBoZWxwPSJQcmludCBzb21lIGRlYnVnIGluZm8gZnJvbSB0aGUgZ2VuZXJhdG9y
IHNjcmlwdCIpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgICMgQ29u
c3RydWN0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUgZnJvbSB3ZWIgcHJvY2VzcyB0
byBHUFUgcHJvY2Vzcy4KKworICAgICMgRklYTUU6IFVudGlsIGV4dGVuc2lvbnMgaGVhZGVyIGlz
IHJlbW92ZWQsIHdlIG5lZWQgdG8gY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAj
IHdpdGggdGhlIGRpc3RpbmN0aW9uIG9mIHdoZXRoZXIgYSBmdW5jdGlvbiBpcyBvciBpcyBub3Qg
YW4gZXh0ZW5zaW9uIGZ1bmN0aW9uLgorICAgIGV4dGVuc2lvbl9zaWduYXR1cmVzIDogU2V0W3N0
cl0gPSBzZXQoKQorICAgIHdpdGggb3BlbihleHRlbnNpb25zX2lucHV0X2ZuKSBhcyBmOgorICAg
ICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNo
KHIiLip2aXJ0dWFsIChcUyspXHMrKFx3KylcKCguKilcKSA9IDA7IiwgbGluZSkKKyAgICAgICAg
ICAgIGlmIG06CisgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZT1tWzJdLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3Bl
Yz1tWzFdLAorICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3Nw
ZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249VHJ1ZSwKKyAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMudXBkYXRl
KFtzdHIoZnVuYyldKQorICAgIGZ1bmNzID0gW10KKyAgICB1bmltcGxlbWVudGVkID0gW10KKyAg
ICBmb3IgZm4gaW4gZnVuY3Rpb25zX2lucHV0X2ZuczoKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBh
cyBmOgorICAgICAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgICAg
ICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRnVuY3Rpb25zIHdpdGggYSBn
ZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdw
dXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAg
Zm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQg
YnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgbSA9IHJl
Lm1hdGNoKHIiXHMqKFxTKylccysoXHcrKVwoKC4qKVwpIGZpbmFsOyIsIGxpbmUpCisgICAgICAg
ICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgZnVuY19uYW1lID0gbVsyXQorICAg
ICAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZT1mdW5jX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5f
c3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBfc3BsaXRf
YXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBmdW5jLmlz
X2V4dGVuc2lvbiA9IHN0cihmdW5jKSBpbiBleHRlbnNpb25fc2lnbmF0dXJlcworICAgICAgICAg
ICAgICAgICAgICBpZiBmdW5jLmlzX2ltcGxlbWVudGVkKCk6CisgICAgICAgICAgICAgICAgICAg
ICAgICBmdW5jcy5hcHBlbmQoZnVuYykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaW1wbGVtZW50ZWQuYXBwZW5kKGZ1bmMpCisKKworICAgIHdl
YmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZmaXgoZnVuY3MpCisgICAgIyBJbml0aWFsaXpl
IFdlYktpdCBJUEMgZ2VuZXJhdGlvbi4gQ29uc3RydWN0IHR5cGUgbWFwcGluZ3MgZm9yIHRoZSB1
c2VkIEMrKyB0eXBlcyAtPiBJUEMgdHlwZXMuCisgICAgIyBUT0RPOiBuYW1lc3BhY2luZyBpc3N1
ZXMuCisgICAgYWlfdHlwZSA9IGdldF9jcHBfdHlwZSgiQWN0aXZlSW5mbyYiKQorICAgIGFpX3Ry
YW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIikKKyAgICB3ZWJraXRfaXBjX3R5cGVzW2FpX3R5cGVdID0gYWlfdHJhbnNmZXJf
dHlwZQorCisgICAgd2l0aCBvcGVuKHR5cGVzX2lucHV0X2ZuKSBhcyBmOgorICAgICAgICBsaW5l
cyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRp
bChsaW5lcywgIi8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0
eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToK
KyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChs
aW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQu
Iik6CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHN0ZDo6aXNf
c2FtZV92PChcdyspLCAoXHcrKT5cKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2dldF9jcHBfdHlwZShtWzFdKV0gPSBnZXRfY3Bw
X3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJl
Lm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcr
KVwpICYmIHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAg
ICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZSht
WzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAg
ICAgICAgICAgICAgY3BwX2Nhc3RfdGhyb3VnaF90eXBlID0gZ2V0X2NwcF90eXBlKG1bNF0pCisg
ICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190
eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjcHBfY2Fz
dF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0
ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50
ZXJfdGhyb3VnaChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgo
XHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgor
ICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAg
ICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNf
Y2FzdAorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5
cGUsIGNwcF90eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICMgRm9yIGFsbCB0eXBlcyBpbiB0aGUgaW5wdXQgQVBJLCBmb3JtIGNvcnJlc3BvbmRp
bmcgSVBDIHR5cGVzIGFuZCBjb252ZXJzaW9ucy4KKyAgICAjIFRPRE86IHRoaXMgaXMgbm90IGRy
aXZlbiBieSB0aGUgdHlwaW5nLgorICAgIGFsbF90eXBlcyA9IHNldCgpCisgICAgZm9yIGZ1bmMg
aW4gZnVuY3M6CisgICAgICAgYWxsX3R5cGVzLnVwZGF0ZShmdW5jLmFyZ3MudHlwZXMoKSArIFtm
dW5jLnJldHVybl90eXBlXSkKKyAgICAjIFNvcnQgYnkgbGVuIHNvIHRoYXQgdGVtcGxhdGUgYXJn
cyBjb21lIGJlZm9yZSB0ZW1wbGF0ZXMuCisgICAgZm9yIGNwcF90eXBlIGluIHNvcnRlZChhbGxf
dHlwZXMsIGtleT1sYW1iZGEgeDogbGVuKHgudHlwZV9uYW1lKSk6CisgICAgICAgIGlmIGNwcF90
eXBlIGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgCisg
ICAgICAgIGlmIGNwcF90eXBlLmlzX2R5bmFtaWNfc3BhbigpIG9yIGNwcF90eXBlLmlzX3NwYW4o
KToKKyAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5z
ZmVyX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBl
XSA9IHRyYW5zZmVyX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAgaWYgY3BwX3R5
cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKToKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSB3ZWJr
aXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHRyYW5zZmVyX3R5cGUs
IGNwcF90eXBlKV0gPSB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lvbgorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdG9yZV90eXBlID0gd2Via2l0X2lwY19nZXRf
c3Bhbl9zdG9yZV90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNfY29udmVydGVyc1soc3RvcmVfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3Jl
aW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICBlbGlmIGNwcF90eXBlLmlzX3JlZmVy
ZW5jZSgpIG9yIGNwcF90eXBlLmlzX2NvbnN0X3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2Nv
bnRhaW5lcigpOgorICAgICAgICAgICAgdmFsdWVfdHlwZSA9IGNwcF90eXBlLmdldF92YWx1ZV90
eXBlKCkgaWYgbm90IGNwcF90eXBlLmlzX2NvbnRhaW5lcigpIGVsc2UgY3BwX3R5cGUKKyAgICAg
ICAgICAgIGlmIHZhbHVlX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAgICAgICAgY29u
dGFpbmVkX3R5cGUgPSB2YWx1ZV90eXBlLmdldF9jb250YWluZWRfdHlwZSgpCisgICAgICAgICAg
ICAgICAgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbY29udGFp
bmVkX3R5cGVdCisgICAgICAgICAgICAgICAgaWYgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9
PSBjb250YWluZWRfdHlwZToKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tj
cHBfdHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZShmInt2YWx1ZV90eXBlLmdldF9j
b250YWluZXJfbmFtZSgpfTx7c3RyKHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUpfT4iKQorICAg
ICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5
cGUKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBIZXJlIG1pZ2h0IGJlIGNhc2Ugd2hlcmUg
VmVjdG9yPEdDR0xpbnQ+IHdhcyB1c2VkIGluIHRoZSBpbnRlcmZhY2UgYW5kIFZlY3RvcjxpbnQz
Ml90PiBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIElQQyBkZWZpbml0aW9u
LiBUaGVyZSBpcyBubyBzZW5zaWJsZSB3YXkgdG8gZG8gdGhpcyBhdCB0aGUgbW9tZW50LiBXZSBk
byBub3QgY29udmVydCwgcmF0aGVyCisgICAgICAgICAgICAgICAgICAgICMgZXhwZWN0IHRoYXQg
YWxsIHRoZSBpbnZvY2F0aW9ucyBhcmUgdGFrZW4gY2FyZSBvZiB0aGUgZmFjdCB0aGF0IEdDR0xp
bnQgaXMgdGhlIHNhbWUgdHlwZSBhcyBpbnQzMl90LgorICAgICAgICAgICAgICAgICAgICAjIFRo
aXMgd2lsbCBub3QgaG9sZCBmb3IgYWxsIHR5cGVzIHN1Y2ggYXMgR0NHTGJvb2xlYW4uCisgICAg
ICAgICAgICAgICAgICAgICN3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0
cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5
cGVdID0gdmFsdWVfdHlwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2Via2l0X2lwY190
eXBlc1tjcHBfdHlwZV0gPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgCisgICAgIyBU
aGUgaW5wdXQgdG8gdGhlIGdlbmVyYXRvcnMgaXMgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3Rl
LgorICAgICMgUnVuIHRoZSB2YXJpb3VzIGdlbmVyYXRvcnMuCisgICAgZ2VuZXJhdG9ycyA9IFsK
KyAgICAgICAgY29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MsIHVu
aW1wbGVtZW50ZWQpLAorICAgICAgICBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVyYXRvcihm
dW5jcyksCisgICAgICAgIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwK
KyAgICBdCisgICAgZm9yIGcgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgZy5nZW5lcmF0ZSgpCisK
KyAgICBpZiBvcHRpb25zLnZlcmJvc2U6CisgICAgICAgIHByaW50KCJJbXBsZW1lbnRlZDoiKQor
ICAgICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIoaSl9IGZpbmFsXG4iIGZvciBpIGluIGZ1
bmNzKSkKKyAgICAgICAgcHJpbnQoIlVuaW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIu
am9pbihmIiAgICB7c3RyKHUpfSBmaW5hbFxuIiBmb3IgdSBpbiB1bmltcGxlbWVudGVkKSkKKyAg
ICAgICAgcHJpbnQoZiJJbXBsZW1lbnRlZDoge2xlbihmdW5jcyl9LCB1bmltcGxlbWVudGVkOiB7
bGVuKHVuaW1wbGVtZW50ZWQpfSwgdG90YWw6IHtsZW4oZnVuY3MpK2xlbih1bmltcGxlbWVudGVk
KX0iKQorICAgICAgICBwcmludCgiQysrIHR5cGUgbWFwIHRvIFdlYktpdCBJUEMgdHlwZSBtYXA6
IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBp
ZiB0IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0
cih0KX0gLT4ge3N0cih3ZWJraXRfaXBjX3R5cGVzW3RdKX0iKQorICAgICAgICBwcmludCgiQysr
IHR5cGVzIHdpdGhvdXQgV2ViS2l0IElQQyB0eXBlOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNw
cF90eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdCBub3QgaW4gd2Via2l0X2lwY190eXBl
czoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSIpCisgICAgICAgIHByaW50
KCJXZWJLaXQgSVBDIHR5cGUgY29udmVyc2lvbnMiKQorICAgICAgICBmb3IgKGEsIGIpLCBjb252
ZXJ0ZXIgaW4gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLml0ZW1zKCk6CisgICAgICAgICAg
ICBwcmludChmIiAgICB7c3RyKGEpfSAtPiB7c3RyKGIpfSA6IHtjb252ZXJ0ZXIuX19uYW1lX199
IikKKyAgICAgICAgcHJpbnQoIkRvbmUuIikKKyAgICByZXR1cm4gMAorCisKK2lmIF9fbmFtZV9f
ID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9j
ZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4NTMwNTgwMDMzOTBm
ZDc1MzdkYzBjNi4uZGE1NjM4NjI4OWQ2Yzk0ZDRmZmFlY2E4OWFkMmJhOTkzYjEwMTZjOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTcsNiArMzE3LDE0
IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFs
bG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmdsIFsgU2tpcCBdCiBq
cy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9i
LzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5odG1s
IFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleElt
YWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxOTM0
OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRp
b24uaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJn
bC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9i
LzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEt
dGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dl
YmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdl
YmdwdSBbIFNraXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlw
ZXMuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415117</attachid>
            <date>2020-12-01 02:25:11 -0800</date>
            <delta_ts>2020-12-01 03:20:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201122508.patch</filename>
            <type>text/plain</type>
            <size>562731</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhmZWU1ZDU3NzFiNjE1
MzZjYTA2NGRkMGNjZDI3OGM1ZGRlNWY4OC4uZDk4YzQ3NjM4MTFmZTFhNDNkOTk5NjRjMTA4OGZm
YmNhNDRmZDFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGIxNjBhMjUxN2M5MzQ4MWE4N2M2MjI4NGY2ODhkMjMzNDNhYzhhMmYuLmNh
ODE1ZGI0ZDI1Njc0Y2ZmOGZhYjk2YTRhZDU0OTgxZWEyZDgyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTExLTI5ICBBZGFtIE1hemFuZGVyICA8bWF6YW5kZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIERlbnkgbG9ncyBmb3IgYmVuaWduIGZvbnRzZXJ2aWNlc2Qg
ZGFlbW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNi
ODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4OGJkNDA3N2EwYzU0YjMxNTg5NzI1MTMyNjZk
ZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBv
b2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxl
Z2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDQyMDI2MjBlYjFmMGUxNDE3Y2NjZTk5ZTU4MjAwMWE4
OWE3M2E3NmUuLjZlOTdmNmRiZmI2NjUyMjY3OTQ2OWRjY2Y0MTQ0YmRmOTIxMGE0NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0xOTcwLDYgKzE5NzAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRp
bGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAK
K3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJjNzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0Yzdi
MDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQwMGIwZmNlMjQxZWZmYjlkNThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiArMzU3LDE0IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVW
Q1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzg0NTM5YzRkNDgxM2U1ZTY4
ODcyNDE4MTFiYjU0OTcwMDQxYjgxNS4uNTc4ZmYzYmQ4YTk2MTE5ODU4OWZiNTgzYTQ3YmQzYTVi
ZDdiMzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjA1Miw3ICsyMDUyLDcgQEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4
NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3
MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hU
TUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyog
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4
NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThG
NyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIy
OURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8q
IEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUx
IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIyMjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyog
VGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdM
RVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Niw2ICsyMjQ2LDggQEAKIAkJN0FGOUIyMEYxOENG
QjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRU
UmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhp
Y3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5
RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8q
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4
IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMg
LyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNz
RWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjIsOSArMTAyMjQsMTQgQEAKIAkJN0IxMDMzOUEyNTQ5
NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xD
VkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8q
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1
MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAw
MDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVy
YXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRjI0RkFE
MzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElu
dGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI2NjA1LDYgKzI2NjEyLDggQEAKIAkJCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMg
LyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lv
bi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3
QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIx
NzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIz
RDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAtMjY3NzEsNiArMjY3ODAs
OCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNh
dGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBENkExMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQ
bGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyog
R3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJCQkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLywKKwkJCQk3QjZE
QzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVW
Q1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RBNTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhF
VkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2NzgyLDYgKzI2NzkzLDcgQEAKIAkJCQlDREM0
OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNv
Y29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5r
Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExp
bmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZF
MDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQx
QTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMw
RjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLApAQCAtMzEyMjQs
NiArMzEyMzYsNyBAQAogCQkJCTA3OUQwODZCMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdCNzExNkQxRDg5OUU2
MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QjcxMTZG
MUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTRGMEJFMzEyNTcxMkY2RTAwOUU3NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDREM3MzQxNTE5Nzc4OTZEMDA0NkJGQzUgLyogQ0FSaW5nQnVm
ZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFCQUJGNTIzNjhDNkVGMDBGQTQzNDUgLyogQ2Fz
Y2FkZUxldmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JCQjIwMDZDNkVFMDAzNTU5NjUg
LyogQ0JPUkJpbmFyeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjA4MCw2ICszMjA5Myw3IEBACiAJ
CQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAv
KiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgy
M0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQwMDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4
dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQwMTYsNiArMzQwMzAsNyBAQAogCQkJCUNEOEFD
QTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVG
cmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMz
MTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0
eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIg
LyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzUxMjEsNyArMzUxMzYs
NiBAQAogCQkJCUEwRUUwREY4MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVw
dGhUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRGMEJFMzEyNTcxMkY2
RTAwOUU3NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDJmYzkzYWVhZmM5MzkwMzc0YTZlYjNjMjA5
ZWVhNzZhMTk2MzJkYzguLjcxNDg3M2MwYTRjNmIwNjViNmI3YWE1NjRlODFhZTMzZDAzMjcwNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC02NzYsMjEgKzY3NiwxMiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc3JjQnl0
ZQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9W
QUxVRSwgImdldEJ1ZmZlclN1YkRhdGEiLCAiUGFyYW1ldGVycyB3b3VsZCByZWFkIG91dHNpZGUg
dGhlIGJvdW5kcyBvZiB0aGUgc291cmNlIGJ1ZmZlciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAorCiAgICAgaWYgKCFjb3B5TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIC8vIEZJWE1FOiBDb2FsZXNjZSBtdWx0aXBsZSBnZXRCdWZmZXJTdWJEYXRh
KCkgY2FsbHMgdG8gdXNlIGEgc2luZ2xlIG1hcCgpIGNhbGwKLSAgICB2b2lkKiBwdHIgPSBtX2Nv
bnRleHQtPm1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgY2hlY2tlZFNyY0J5dGVPZmZzZXQudW5zYWZl
R2V0KCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oY2hlY2tlZENvcHlMZW5ndGhQdHIudW5z
YWZlR2V0KCkgKiBjaGVja2VkRWxlbWVudFNpemUudW5zYWZlR2V0KCkpLCBHcmFwaGljc0NvbnRl
eHRHTDo6TUFQX1JFQURfQklUKTsKLSAgICBpZiAocHRyKQotICAgICAgICBtZW1jcHkoc3RhdGlj
X2Nhc3Q8Y2hhcio+KGRzdERhdGEtPmJhc2VBZGRyZXNzKCkpICsgZHN0RGF0YS0+Ynl0ZU9mZnNl
dCgpICsgZHN0T2Zmc2V0ICogZWxlbWVudFNpemUsIHB0ciwgY29weUxlbmd0aCAqIGVsZW1lbnRT
aXplKTsKLQotICAgIGlmICghbV9jb250ZXh0LT51bm1hcEJ1ZmZlcih0YXJnZXQpKQotICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04s
ICJnZXRCdWZmZXJTdWJEYXRhIiwgIkZhaWxlZCB3aGlsZSB1bm1hcHBpbmcgYnVmZmVyIik7Ci0j
ZW5kaWYKLSAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwor
ICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHNyY0J5dGVPZmZzZXQsIG1h
a2VHQ0dMU3BhbihzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBk
c3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgY29weUxlbmd0
aCAqIGVsZW1lbnRTaXplKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Ymlu
ZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlciogYnVmZmVyKQpA
QCAtMTcwMSw3ICsxNjkyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYmIGxpc3QKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0ZXhB
dHRyaWJJNHVpdiIsICJubyBhcnJheSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAor
CiAgICAgaW50IHNpemUgPSBsaXN0Lmxlbmd0aCgpOwogICAgIGlmIChzaXplIDwgNCkgewogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYkk0dWl2IiwgImFycmF5IHRvbyBzbWFsbCIpOwpAQCAtMTk2Niw5ICsxOTU3
LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIo
V2ViR0xRdWVyeSYgcXVlcnksIEdDR0xlbnVtIHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFF1ZXJ5
T2JqZWN0dWl2KHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSwgJnJlc3VsdCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29udGV4dC0+Z2V0UXVl
cnlPYmplY3R1aShxdWVyeS5vYmplY3QoKSwgcG5hbWUpKTsKIH0KIAogUmVmUHRyPFdlYkdMU2Ft
cGxlcj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlU2FtcGxlcigpCkBAIC0yMDEzLDcg
KzIwMDIsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKEdDR0x1
aW50IHVuaXQsIFdlYkdMU2FtcGxlciogc2FtcGxlcikKIAogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlmICh1bml0ID49IG1f
Ym91bmRTYW1wbGVycy5zaXplKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJiaW5kU2FtcGxlciIsICJpbnZhbGlkIHRleHR1
cmUgdW5pdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMDU4LDE3ICsyMDQ3LDExIEBAIFdlYkdM
QW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFNhbXBsZXJQYXJhbWV0ZXIoV2ViR0xTYW1w
bGVyJiBzYW1wbGVyLCBHQ0dMCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9N
SU5fRklMVEVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9SOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9TOgotICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOiB7Ci0gICAgICAgIGludCB2YWx1ZSA9IDA7
Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXIub2JqZWN0
KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgorICAgICAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLm9iamVjdCgpLCBwbmFtZSk7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfTE9EOgotICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0xPRDogewotICAgICAgICBmbG9hdCB2YWx1ZSA9
IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXIub2Jq
ZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0xPRDoKKyAgICAgICAgcmV0dXJu
IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUp
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTYW1wbGVyUGFyYW1ldGVyIiwgIkludmFsaWQgcG5hbWUi
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTE3LDcgKzIxMDAsNyBAQCBHQ0dMZW51
bSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3luYyhXZWJHTFN5bmMmIHN5bmMs
IEdDR0xiaXRmaWVsZCBmbAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJjbGllbnRXYWl0U3luYyIsICJ0aW1lb3V0ID4gTUFY
X0NMSUVOVF9XQUlUX1RJTUVPVVRfV0VCR0wiKTsKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dEdMOjpXQUlUX0ZBSUxFRF9XRUJHTDsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZmxhZ3Mg
JiYgZmxhZ3MgIT0gR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfRkxVU0hfQ09NTUFORFNfQklUKSB7
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZB
TFVFLCAiY2xpZW50V2FpdFN5bmMiLCAiaW52YWxpZCBmbGFncyIpOwogICAgICAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwpAQCAtMjE3OCw5ICsyMTYxLDkg
QEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhX
ZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWUKIAogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIWZlZWRiYWNrT2JqZWN0IHx8IGZlZWRiYWNrT2JqZWN0LT5pc0RlbGV0ZWQoKSB8
fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2siLCBmZWVkYmFj
a09iamVjdCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIEFTU0VSVChmZWVkYmFja09i
amVjdCAhPSBtX2RlZmF1bHRUcmFuc2Zvcm1GZWVkYmFjayk7Ci0gICAgCisKICAgICBpZiAoZmVl
ZGJhY2tPYmplY3QtPmlzQWN0aXZlKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2siLCAiYXR0ZW1wdCB0byBkZWxldGUgYW4gYWN0aXZlIHRyYW5zZm9ybSBmZWVkYmFjayBvYmpl
Y3QiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjI0Nyw3ICsyMjMwLDcgQEAgdm9pZCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHByaW1pdGl2
ZU1vZGUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIAorCiAgICAgaWYgKCFWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrUHJpbWl0aXZl
TW9kZShwcmltaXRpdmVNb2RlKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayIsICJpbnZh
bGlkIHRyYW5zZm9ybSBmZWVkYmFjayBwcmltaXRpdmUgbW9kZSIpOwogICAgICAgICByZXR1cm47
CkBAIC0yMjg3LDcgKzIyNzAsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRy
YW5zZm9ybUZlZWRiYWNrKCkKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZW5kVHJhbnNmb3JtRmVlZGJhY2siLCAidHJhbnNm
b3JtIGZlZWRiYWNrIGlzIG5vdCBhY3RpdmUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKKwogICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKIAogICAgIG1fYm91
bmRUcmFuc2Zvcm1GZWVkYmFjay0+c2V0UGF1c2VkKGZhbHNlKTsKQEAgLTIyOTgsNyArMjI4MSw3
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
cyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigidHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyIsICZwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgc3dp
dGNoIChidWZmZXJNb2RlKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U0VQQVJBVEVf
QVRUUklCUzoKICAgICAgICAgaWYgKHZhcnlpbmdzLnNpemUoKSA+IG1fbWF4VHJhbnNmb3JtRmVl
ZGJhY2tTZXBhcmF0ZUF0dHJpYnMpIHsKQEAgLTI0ODQsMjQgKzI0NjcsMjQgQEAgV2ViR0xBbnkg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBw
cm9ncmFtLCBjb25zdAogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5p
Zm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKLSAgICAKICAgICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9UWVBFOgotICAgICAgICBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSwgcmVzdWx0KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6IHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1
bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGVudW0+KHgpOyB9KTsK
LSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6Ci0gICAgICAgIG1fY29u
dGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMs
IHBuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX1NJWkU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CiAgICAgICAg
IHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVp
bnQ+KHgpOyB9KTsKKyAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9C
TE9DS19JTkRFWDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX09GRlNFVDoK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0FSUkFZX1NUUklERToKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX01BVFJJWF9TVFJJREU6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwotICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOgotICAgICAgICBt
X2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRp
Y2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lTX1JPV19NQUpPUjogeworICAgICAgICBh
dXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3Qo
KSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10o
YXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih4KTsgfSk7CisgICAgfQogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtcyIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU2OCw4ICszNTUxLDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEcKIAogICAgIGNsZWFySWZDb21wb3NpdGVkKCk7CiAKLSAgICBHQ0dMc2l6
ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJh
eUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
aW5kZXggMzJhNzE1MDMwODE2NDBmZTA4MTdkODk4NTBjNzcyZGEyMDg2ZTM4YS4uMWI0MWRmOWIw
Yzg1MzZjZDYyNjA4M2UzYWU3NzYwMGVkMWNlOWYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTcx
MCw4ICs3MTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKENhbgogICAgICAgICByZW5kZXJpbmdD
b250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRl
eHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKKyAgICBhdXRvIGNvbnRleHQgPSBHcmFw
aGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpOwogICAgIGlmICgh
Y29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxlbWVudCkgewogICAgICAgICAgICAgY2Fu
dmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsCkBAIC00MzM4LDEwICs0MzM3
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJh
c2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0gICAgR0NHTHNpemVpIGxlbmd0aCA9IDA7
Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAgIEdDR0xzaXplaSByb3dzID0gMDsKLSAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHks
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0
aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7CisgICAgbV9jb250ZXh0LT5yZWFkblBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRh
LCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmIChtX2lzUm9idXN0bmVzc0VY
VFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVhZG5QaXhl
bHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0
aCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4
IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJkNTUuLjg5YTYzZTM2MjE3MTIy
NGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdlYkdMU3luYzo6dXBkYXRlQ2Fj
aGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7Ci0gICAgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19TVEFU
VVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5jU3RhdHVzKTsKKyAgICBtX3N5bmNTdGF0
dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5bmNpKG1fc3luYywgR3JhcGhp
Y3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBpZiAobV9zeW5jU3RhdHVzID09IEdyYXBo
aWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAgICBzY2hlZHVsZUFsbG93Q2FjaGVVcGRh
dGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggMGEwOThkMmRiNDkyMGQ3
M2MyZjEwODE0NWIyMzBiZDkwODRhNjk1Yi4uNzQyZGU0Yzg2ODc0OGQwNTQ5MmQzMWJhNGE5Nzg3
ZWQzZjFhYzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNTI4LDYgKzUyOCwxMyBAQCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVybiBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1
ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKK1JlZlB0cjxHcmFw
aGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIGRpc3BsYXlJRCgp
KTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJRCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsKQEAgLTU0MSw2ICs1NDgsNyBA
QCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1fcGFnZS53aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiAKICNpZiBQTEFURk9STShNQUMp
ICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQorICAgIC8vIFRPRE86IEdQVSBwcm9jZXNz
LiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQgd29yaywgcmV0dXJuIG51bGwgZm9yIG90
aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5
ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEzY2ZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmlu
Z1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQp
IGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2luZG93U2NyZWVu
RGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lZD4pIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAzYTllMWQ2NjkwOTdlNTk1ZDli
NTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAw
ZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTMyNSw2ICszMjUsMTAg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIg
dG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdy
YXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciopID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRleCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJj
YTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2MzMzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2
OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNs
dWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsNiArNjQsMTAgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsK
IAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAvLyBNZXRob2QgZm9yIHJldHJpZXZpbmcg
dGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VD
bGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAppbmRleCBhMjI1
M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUyZmIzLi43YWZiYTZlYzUwODgxOWNjMWVh
YmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVf
RVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJ
TikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KK2lubGlu
ZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbGlmICFQTEFURk9S
TShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQor
aW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0luV2ViUHJvY2VzcygpOworYm9vbCBpc0lu
R1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZiZDFkNDNjMDhmODZkYzNjMThlZDIxNTYw
ZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFmNjRhYTBkZTM4YjNiOTJmODgzODI0NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC05Niw2ICs5NiwxMiBAQCBib29sIGlz
SW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1bmRsZUlzV2ViUHJvY2VzczsKIH0KIAor
Ym9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BV
UHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1By
ZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07CisgICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQ
VVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBzdGF0aWMg
Ym9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2lu
ZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wu
aAppbmRleCAwNmMxMjExMjdlMjJkMTNlNmJlMzg2YjhlYmJhNzZjNjcxMTZhMTNkLi5iZWNlNjU0
YWY5MGM0OThlNjdiYWEyMjhkMmEzYzNjMGI4OWU3YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjY0LDcgKzI2NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxNF9F
WFQgPSAweDhDRUU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hN
RU5UMTVfRVhUID0gMHg4Q0VGOwogCi0gICAgLy8gV2ViR0wgZnVuY3Rpb25zIGluIGZvcm1hdCBn
ZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4K
IAogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBi
ZWhhdmlvciBkaWZmZXJzIGZyb20gdGhlIEdMX0FSQl9yb2J1c3RuZXNzCkBAIC0yNzYsMTAgKzI3
NiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgdmly
dHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNy
Y1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25n
IGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVy
X211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAK
ICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKQEAgLTI5MywxNSArMjkzLDE1IEBA
IHB1YmxpYzoKICAgICAvLyBHTF9FWFRfZGVidWdfbWFya2VyCiAgICAgdmlydHVhbCB2b2lkIGlu
c2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1h
cmtlckVYVCgpID0gMDsKIAogICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJh
d19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlz
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwg
R0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2Ns
aWVudF9tZW1vcnkKICAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBp
eGVscykgPSAwOwpAQCAtMzI5LDcgKzMyOSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRQb2lu
dGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBj
b2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1Bp
eGVsQnVmZmVyT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwpAQCAtMzUyLDcgKzM1
MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHZvaWQqIGRhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGZsb2F0KiBwYXJhbXMp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSA9
IDA7Ci0jZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBpc05WSURJQSgpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNBTUQoKSA9IDA7CkBAIC0zNjQsNiArMzYyLDcgQEAgcHVibGljOgogICAgIC8v
IHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBzaG91bGQgaW1wbGVtZW50IHRoZXNlIGZsYWdz
IG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1Jlc3Ry
aWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CisjZW5kaWYKIAogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CmluZGV4IGRmNGExMTlhMzIwZGFjNmFlYjYzMDZkNGM1MDk1NTE1ODhhMTk3M2UuLjM0ZDU1NmIw
Y2M0YTliYjFhZWE3YTVhOTY4YmM2OTViM2EyZTI3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTI3LDEx
ICsyNywxMyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCiAjaWYgRU5B
QkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpCiAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9i
c2VydmVyLmgiCkBAIC00MDMsNiArNDA1LDE1IEBAIHN0YXRpYyBib29sIHBhY2tQaXhlbHMoY29u
c3QgdWludDhfdCogc291cmNlRGF0YSwgR3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3sKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0w+IHJlc3VsdDsKKyAgICBpZiAoaG9zdFdpbmRvdykKKyAgICAgICAgcmVzdWx0ID0gaG9z
dFdpbmRvdy0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcyk7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUo
YXR0cmlidXRlcywgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogR3JhcGhp
Y3NDb250ZXh0R0w6OkdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRycywgRGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBoaWNzQ29udGV4dEdMKikKICAg
ICA6IG1fYXR0cnMoYXR0cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBjOGUyNzlmMzkzYjZjYTgxMjNmY2VlZjdj
ODliMTI1YzUyZGM2ZWYzLi4wYmFiNmMwNjIxYWVhOTFjZDNlODEzNjNlOWIyNzY4NTlmMjU4MGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKQEAgLTU5LDYgKzU5LDggQEAgY2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0R0xDVjsKICNlbmRpZgogCisKKy8vIEJhc2UgY2xhc3MgZm9yIGdyYXBoaWNz
IGNvbnRleHQgZm9yIGltcGxlbWVudGluZyBXZWJHTCByZW5kZXJpbmcgbW9kZWwuCiBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dEdMPiB7
CiBwdWJsaWM6CiAgICAgLy8gV2ViR0wgMSBjb25zdGFudHMuCkBAIC02NjksNiArNjcxLDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9SRUNUQU5HTEVf
QVJCID0gMHg4NEY1OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9CSU5E
SU5HX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjY7CiAKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKwogICAgIC8vIEF0
dGVtcHQgdG8gZW51bWVyYXRlIGFsbCBwb3NzaWJsZSBuYXRpdmUgaW1hZ2UgZm9ybWF0cyB0bwog
ICAgIC8vIHJlZHVjZSB0aGUgYW1vdW50IG9mIHRlbXBvcmFyeSBhbGxvY2F0aW9ucyBkdXJpbmcg
dGV4dHVyZQogICAgIC8vIHVwbG9hZGluZy4gVGhpcyBlbnVtIG11c3QgYmUgcHVibGljIGJlY2F1
c2UgaXQgaXMgYWNjZXNzZWQKQEAgLTkxMSwxNCArOTE2LDE3IEBAIHB1YmxpYzoKICAgICAgICAg
R0NHTGludCBzaXplOwogICAgIH07CiAKKyAgICAvLyBDcmVhdGVzIGEgR3JhcGhpY3NDb250ZXh0
R0wgaW5zdGFuY2UgdG8gcmVuZGVyIGludG8gb2Zmc2NyZWVuIGRlc3RpbmF0aW9uIGluIGNvbnRl
eHQgb2YgSG9zdFdpbmRvdy4KKyAgICAvLyBIb3N0V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVj
aXNpb24gd2hpY2ggYmFja2VuZCBpcyB0byBiZSB1c2VkLgorICAgIHN0YXRpYyBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBIb3N0V2luZG93Kik7CisKICAgICBHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMsIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhp
Y3NDb250ZXh0R0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5HcmFw
aGljc0NvbnRleHRHTCgpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYg
Y2xpZW50KSB7IG1fY2xpZW50cy5hZGQoJmNsaWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVu
dChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOyB9CiAKLSAgICAv
LyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFu
ZHMuCi0KKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRl
eHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwg
R0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwpAQCAtOTgwLDcgKzk4OCw2
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQs
IEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpID0gMDsKIAogICAg
IHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUpID0gMDsKIApAQCAtMTAyNSwxMCArMTAzMiw2IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKLSAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpID0gMDsKLQogICAgIHZpcnR1YWwgR0NHTHNpemVpcHRyIGdldFZlcnRl
eEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgPSAwOwpA
QCAtMTEwMCw3ICsxMTAzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVt
IHVzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsICBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwpAQCAtMTEyNCw4ICsxMTI4
LDcgQEAgcHVibGljOgogICAgIC8vID09PT09PT09PT0gV2ViR0wgMiBlbnRyeSBwb2ludHMuCiAK
ICAgICB2aXJ0dWFsIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwg
R0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3
cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpID0gMDsKLSAgICB2aXJ0dWFsIEdDR0x2b2lk
KiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSA9IDA7Ci0gICAgdmlydHVhbCBH
Q0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJsaXRG
cmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBH
Q0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgx
LCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7CkBAIC0xMTg3LDcgKzExOTAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgPSAwOwogICAgIHZp
cnR1YWwgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAgICAgLy8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUs
IEdDR0x1aW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0UXVlcnlPYmpl
Y3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAg
dmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7CkBAIC0x
MTk2LDggKzExOTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFy
YW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSA9IDA7CiAgICAg
Ly8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1l
dGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0
KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxh
dGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0g
MDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50
IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNv
bmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVh
biBpc1N5bmMoR0NHTHN5bmMpID0gMDsKQEAgLTEyMDUsNyArMTIwOCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEdDR0xlbnVtIGNsaWVudFdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQg
ZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YWl0U3lu
YyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgPSAwOwog
ICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3luY2l2KEdDR0xz
eW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHZhbHVlKSA9
IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFt
ZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQ
bGF0Zm9ybUdMT2JqZWN0IGlkKSA9IDA7CkBAIC0xMjIyLDcgKzEyMjUsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBzaXplKSA9IDA7CiAgICAgLy8gZ2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1c2UgZ2V0
UGFyYW1ldGVyIGNhbGxzIGFib3ZlLgogICAgIHZpcnR1YWwgVmVjdG9yPEdDR0x1aW50PiBnZXRV
bmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB1bmlmb3JtTmFtZXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9y
bXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlm
b3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSA9IDA7
CisgICAgdmlydHVhbCBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywg
R0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0VW5pZm9ybUJs
b2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1C
bG9ja05hbWUpID0gMDsKICAgICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKQEAg
LTEyMzAsNyArMTIzMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybUJsb2Nr
QmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMp
ID0gMDsKLQorICAgIAogICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KICAgICBHQ0dMZmxvYXQgZ2V0
RmxvYXQoR0NHTGVudW0gcG5hbWUpOwogICAgIEdDR0xib29sZWFuIGdldEJvb2xlYW4oR0NHTGVu
dW0gcG5hbWUpOwpAQCAtMTM5NCw3ICsxMzk3LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUK
ICAgICByZXR1cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlc0dMLmgKaW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4u
M2IwNjRjM2U3NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcg
KzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYg
dW5zaWduZWQgR0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5
cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsK
K3R5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKKworLy8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3Ry
aWN0bHkgbWF0Y2ggdGhlIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8g
aGVhZGVyIGZpbGUgZm9yIGFsbCBwbGF0Zm9ybXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRw
dHI7CiB0eXBlZGVmIGludHB0cl90IEdDR0xzaXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hh
cjsKK3R5cGVkZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dM
aW50NjQ7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBz
dHJ1Y3QgX19HTHN5bmMqIEdDR0xzeW5jOwotdHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBl
ZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBl
ZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsK
ICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xT
cGFuRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRl
bnQ+CiBzdHJ1Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50
Pgogc3RydWN0IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAg
ICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAg
ICAgIDogZGF0YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
c2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4
dGVudF0pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBA
IHN0cnVjdCBHQ0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50
PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwg
VCgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVy
LmRhdGEpCiAgICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJh
eSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihj
b25zdCBzdGQ6OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXku
ZGF0YSgpKQorICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9B
U1NFUlQoZGF0YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3Bl
cmF0b3IqKCkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7
IH0KICAgICBUKiBkYXRhOwpAQCAtNzksNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5h
bWljRXh0ZW50PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAg
ICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEs
NiArMTM3LDExIEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEo
b3RoZXIuZGF0YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkp
CiAgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisg
ICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXpl
KCkgKiBzaXplb2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qg
c2l6ZV90IGJ1ZlNpemU7CiB9OwpAQCAtMTUyLDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNw
YW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
R0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFu
PFQsIE4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitH
Q0dMU3BhbihXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRh
LCBzaXplX3QgY291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzMwZjJmMzA2OGZmMDI5MWFmNWJlNjBhNWM1ZjZlMWVlYjdhNGFmNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAg
ICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzKQoreworICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgp
OworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6flJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKCkgPSBkZWZhdWx0OworCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dEdMIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dEdMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworUGxhdGZvcm1HTE9iamVjdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gMDsKK30KKworRXh0ZW5zaW9uc0dMJiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuICp0aGlzOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250ZXh0VmlzaWJp
bGl0eShib29sKQoreworfQorCitHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB9OworfQorCitib29sIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gY29udGV4dEF0dHJpYnV0ZXMoKS5pc1dlYkdMMjsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhN
RTogVGhlIGNhbGxlciBzaG91bGQgdHJhY2sgdGhpcyBzdGF0ZS4KKyAgICBpZiAobV9sYXllckNv
bXBvc2l0ZWQpCisgICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOworICAgIG1fbGF5
ZXJDb21wb3NpdGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQoreworICAgIG1fbGF5ZXJDb21wb3NpdGVk
ID0gdHJ1ZTsKKyAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBpZiAo
IWF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlcnNUb0F1dG9D
bGVhciA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOworICAgICAgICBpZiAo
YXR0cnMuZGVwdGgpCisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGlj
c0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwp
CisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0NvbnRleHRHTDo6
U1RFTkNJTF9CVUZGRVJfQklUOworICAgIH0KKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlU
b1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmRpZENvbXBvc2l0ZSgpOworfQor
Citib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXllckNvbXBvc2l0ZWQo
KSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xi
aXRmaWVsZCBidWZmZXJzKQoreworICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVzZXJ2
ZURyYXdpbmdCdWZmZXIpCisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gYnVmZmVyczsK
K30KKworR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRC
dWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9D
bGVhcjsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVBy
ZXNlcnZlRHJhd2luZ0J1ZmZlcigpCit7CisgICAgLy8gUmVkZWNsYXJlZCBmb3IgZXhwb3J0IHJl
YXNvbnMuCisgICAgLy8gRklYTUU6IFRoZSB3aG9sZSBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3Zl
ZC4KKyAgICBHcmFwaGljc0NvbnRleHRHTDo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7
Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7
CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQobmFtZSk7CisgICAgICAgIG1fZW5hYmxl
ZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworICAgIH0KK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3
YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZShjb25z
dCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVF
eHRlbnNpb25zKQoreworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5z
aW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVu
c2lvbik7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
c3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworfQorCitQbGF0Zm9ybUxheWVy
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKworfQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Y2U4YTA5MTRkOGU4ZTI5
ZTJkMjgzMTI1MDRjNGViMzIwYjExOWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApA
QCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgV2Vi
R0xMYXllcjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBQTEFURk9STShD
T0NPQSkKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworI2VuZGlm
CisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgcHJveHkgc2lk
ZSBpbXBsZW1lbnRhdGlvbgorLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBwYXJ0cyB0aGF0IGFyZSB1
c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6CisvLyAtIERyYXdpbmcgYnVmZmVy
IHRyYWNraW5nIG1hbmFnZW1lbnQuCisvLyAtIENvbXBvc2l0aW5nIHN1cHBvcnQuCitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSA6IHB1YmxpYyBH
cmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNHTCB7CitwdWJsaWM6CisgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgb3ZlcnJp
ZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMu
CisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5hYmxlZDsKKyAgICBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0IGZpbmFsOworICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBFeHRlbnNp
b25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyAgICB2b2lkIHNldENvbnRleHRWaXNpYmls
aXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIHBv
d2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNH
TEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2Vk
KCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2
b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpIGZpbmFsOworICAgIEdDR0xi
aXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIHZv
aWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOworICAgIHZvaWQgZW5hYmxlUHJlc2VydmVE
cmF3aW5nQnVmZmVyKCkgZmluYWw7CisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5E
QVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsOworI2VuZGlmCisg
ICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3ZlcnJpZGVzLgorICAgIHVzaW5nIEV4dGVuc2lvbnNH
TDo6aXNFbmFibGVkOworICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0
aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAgIHZpcnR1YWwgdm9pZCB3YWl0VW50aWxJbml0aWFs
aXplZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdl
ZCgpID0gMDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2FwQ2hhaW4oKTsKKyNlbmRpZgorCitwcml2YXRlOgor
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
UmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKKyNlbmRpZgorCisgICAgLy8gR3Vh
cmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRl
bnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7CisKKyAg
ICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIgY2xlYXIgdHJhY2tpbmcgc2hvdWxkIGJlIG1vdmVk
IHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworICAg
IEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IHsgMCB9OworfTsKKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9F
eHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggMjgzZGE4MmM2YTYwMmVhNGI1NTdjNjg2
Y2ZkODIzZDA4MWM1NWU0YS4uN2MxNTFmYTI4NTBmMzNjMTQ5YTlkYzgyMjM4MWI4ZmNiZGU5Y2I3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtNDYsMjggKzQ2LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCiAgICAg
OiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fY29udGV4
dChjb250ZXh0KQotICAgICwgbV9pc05WSURJQShmYWxzZSkKLSAgICAsIG1faXNBTUQoZmFsc2Up
Ci0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0gICAgLCBtX2lzSW1hZ2luYXRpb24oZmFsc2UpCi0g
ICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKGZhbHNlKQotICAgICwgbV9y
ZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoZmFsc2UpCiAgICAgLCBtX3VzZUlu
ZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykKIHsKLSAgICAvLyBGSVhNRTogaWRl
YWxseSwgcmVtb3ZlIHRoaXMgaW5pdGlhbGl6YXRpb24gYWx0b2dldGhlci4gQU5HTEUKLSAgICAv
LyBzdWJzdW1lcyB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGdyYXBoaWNzIGRyaXZlciB3b3JrYXJv
dW5kcy4KLSAgICBtX3ZlbmRvciA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihnbDo6R2V0U3RyaW5nKEdMX1ZFTkRPUikpKTsKLSAgICBtX3JlbmRlcmVyID0gU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7
Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2ZW5kb3JDb21wb25lbnRzID0gbV92ZW5kb3IuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnICcpOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRz
LmNvbnRhaW5zKCJudmlkaWEiKSkKLSAgICAgICAgbV9pc05WSURJQSA9IHRydWU7Ci0gICAgaWYg
KHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImF0aSIpIHx8IHZlbmRvckNvbXBvbmVudHMuY29u
dGFpbnMoImFtZCIpKQotICAgICAgICBtX2lzQU1EID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29t
cG9uZW50cy5jb250YWlucygiaW50ZWwiKSkKLSAgICAgICAgbV9pc0ludGVsID0gdHJ1ZTsKLSAg
ICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW1hZ2luYXRpb24iKSkKLSAgICAgICAg
bV9pc0ltYWdpbmF0aW9uID0gdHJ1ZTsKIH0KIAogRXh0ZW5zaW9uc0dMQU5HTEU6On5FeHRlbnNp
b25zR0xBTkdMRSgpID0gZGVmYXVsdDsKQEAgLTEwMyw3ICs4Myw3IEBAIGJvb2wgRXh0ZW5zaW9u
c0dMQU5HTEU6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNv
bnRhaW5zKG5hbWUpOwogfQogCi1pbnQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKQorR0xpbnQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKQogewogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7CiB9
CkBAIC0xMTQsMTAgKzk0LDExIEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAogICAgIGludCBzb3VyY2VMZW5ndGggPSBtX2NvbnRleHQtPmdldFNo
YWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsK
KwogICAgIGlmICghc291cmNlTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
ICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURf
U0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KLSAg
ICBpbnQgcmV0dXJuZWRMZW5ndGggPSAwOworICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAw
OwogICAgIGdsOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VM
ZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkpOwogICAgIGlmICghcmV0dXJuZWRM
ZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtMTQ3LDcgKzEyOCw3IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkK
ICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kw
LCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRz
dFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVy
KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKICAgICAvLyBGSVhNRTogY29uc2lk
ZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE1Niw3ICsxMzcsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9u
ZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZwogICAgIGdsOjpCbGl0RnJhbWVidWZmZXJBTkdMRShz
cmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1h
c2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1w
bGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1
bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMzUsNyArMjE2LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiAgICAgZ2w6OkRy
YXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjQzLDE1ICsyMjQsMTUgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2kKICAgICBnbDo6RHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NH
THNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNv
dW50KTsKKyAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTM1MCw3ICszMzEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtCiAgICAgZ2w6OkdldFZlcnRl
eEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQzMSw3ICs0MTIsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZAog
ICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUocG5hbWUsIGluZGV4LCBidWZTaXpl
LCBsZW5ndGgsIHZhbCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVs
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQog
ewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDM5LDcgKzQyMCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsCiAgICAgZ2w6
OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2
ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CkBAIC00NTYsNTUgKzQzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpCiAgICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1NfRkFNSUxZKQotc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCi17Ci0gICAgLy8g
V2UgY2FuIGFzc3VtZSB0aGlzIGRvZXNuJ3Qgb3ZlcmZsb3cgYmVjYXVzZSB0aGUgY2FsbGluZyBm
dW5jdGlvbnMKLSAgICAvLyB1c2UgY2hlY2tlZCBhcml0aG1ldGljLgotICAgIGludCB0b3RhbEJ5
dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxC
eXRlczsgaSArPSA0KQotICAgICAgICBwaXhlbHNbaSArIDNdID0gMjU1OwotfQotI2VuZGlmCi0K
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
c2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5n
VG9QaXhlbEJ1ZmZlck9iamVjdCkKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3
byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAg
Ly8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVh
ZGluZyBwaXhlbHMuCi0gICAgZ2w6OkZsdXNoKCk7Ci0gICAgYXV0byBhdHRycyA9IG1fY29udGV4
dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9
IG1fY29udGV4dC0+bV9pc0ZvcldlYkdMMiA/IEdyYXBoaWNzQ29udGV4dEdMOjpSRUFEX0ZSQU1F
QlVGRkVSIDogR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSOwotICAgIGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTFN0YXRlJiBzdGF0ZSA9IG1fY29u
dGV4dC0+bV9zdGF0ZTsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgbV9jb250ZXh0
LT5yZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KEludFJlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCkpOwotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBt
X2NvbnRleHQtPm1fZmJvKTsKLSAgICAgICAgZ2w6OkZsdXNoKCk7Ci0gICAgfQotICAgICh2b2lk
KSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgIGdsOjpS
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBkYXRhKTsKLSAgICBHTGVudW0gZXJyb3Ig
PSBnbDo6R2V0RXJyb3IoKTsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5k
UmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pCi0gICAgICAgIGdsOjpCaW5k
RnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZC
Tyk7Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgLy8gQU5HTEUgZGV0ZWN0ZWQgYSBmYWls
dXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNSb2J1c3RBTkdMRSBvcGVyYXRpb24uIFN1cmZhY2Ug
dGhpcyBpbiB0aGUKLSAgICAgICAgLy8gc3ludGhldGljIGVycm9yIGxpc3QsIGFuZCBza2lwIHRo
ZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93LgotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIXJlYWRpbmdUb1BpeGVsQnVm
ZmVyT2JqZWN0ICYmICFhdHRycy5hbHBoYSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdM
OjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpICYmIChzdGF0ZS5ib3VuZFJlYWRGQk8g
PT0gbV9jb250ZXh0LT5tX2ZibyB8fCAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pKSkKLSAgICAgICAgd2lwZUFscGhh
Q2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cio+KGRhdGEpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVy
T2JqZWN0KTsKLSNlbmRpZgotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9y
bWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MTIsNyArNDQ1LDcgQEAgdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxv
Y2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTIwLDcgKzQ1Myw3IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sCiAgICAgZ2w6OkdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBhNzczMWRmZDIwYzVmMDNhMzM1OTAzZmFhNmUzOGZmNzJm
NGIyMzIzLi5jYmY0OThiZDdjMWExYWI5YWE2YjcwZmI1ZDM4YWM0YjkyZmIwMzU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmgKQEAgLTU2LDIxICs1NiwxMiBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJy
aWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92
ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNOVklE
SUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KLSAgICBib29sIGlzSW50ZWwoKSBvdmVycmlkZSB7
IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBib29sIGlzSW1hZ2luYXRpb24oKSBvdmVycmlkZSB7
IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KLSAgICBTdHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25F
bXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11
bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUo
KSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6
ZTsgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiAgICAgLy8g
R0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RB
TkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZv
aWQgKnBpeGVscykgb3ZlcnJpZGU7CkBAIC05Nyw3ICs4OCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBH
Q0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmpl
Y3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTEzMCwxOCArMTIwLDggQEAgcHJpdmF0ZToK
ICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAg
ICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwogCi0gICAgYm9vbCBtX2lzTlZJ
RElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1faXNJbnRlbDsKLSAgICBib29sIG1f
aXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRp
b247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsKLQog
ICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKIAotICAgIFN0cmluZyBt
X3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKLQogICAgIC8vIFdoZXRoZXIgdGhlIFdl
YkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBo
YXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDEyN2EzYjhkYmEzYzNmNDRj
ZDc2NWRkOGZjNzExY2RkODc4ZGU5YTQuLjFkNjA0YjcxZDQ4MTRmNTk3YzJjMmZjODllZGM5NjQ4
ZGMxM2M3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC00NDMsMzIg
KzQ0Myw1MyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRl
bnNpb25zKCkKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQor
eworICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZGF0YS5kYXRhLCBmYWxz
ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgcmVh
ZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHQ0dMdm9pZCo+KG9mZnNldCks
IHRydWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsc0lt
cGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dM
dm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKIHsKLSAgICAvLyBG
SVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBjYWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlz
IGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBwcmV2aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxk
IGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBn
bEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCisgICAgLy8g
YWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGlu
ZyBwaXhlbHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7CiAgICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBtX2lzRm9yV2ViR0wy
ID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRH
TDo6RlJBTUVCVUZGRVI7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5k
UmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKKyAgICBp
ZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxl
RkJPKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4
LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVi
dWZmZXJUYXJnZXQsIG1fZmJvKTsKICAgICAgICAgZ2w6OkZsdXNoKCk7CiAgICAgfQotICAgIGds
OjpSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7Ci0g
ICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRp
c2FtcGxlRkJPKQorICAgIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgIGds
OjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBkYXRhKTsKKyAgICBHTGVudW0gZXJy
b3IgPSBnbDo6R2V0RXJyb3IoKTsKKyAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICBnbDo6QmluZEZyYW1lYnVm
ZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX211bHRpc2FtcGxlRkJPKTsKIAorICAgIGlmIChlcnJv
cikgeworICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFk
blBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFjZSB0aGlzIGluIHRoZQorICAgICAg
ICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4
dXAgYmVsb3cuCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBpZiAoIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJH
QkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFw
aGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKG1fc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9t
dWx0aXNhbXBsZUZCTykpKQorICAgIGlmICghcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYg
IWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9y
bWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRl
eHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2ZibyB8fCAo
YXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJP
KSkpCiAgICAgICAgIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKHdpZHRoLCBoZWlnaHQsIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihkYXRhKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAjZW5kaWYKIH0KIAotCiAvLyBUaGUgY29u
dGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8g
dXNlIEFOR0xFLgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCkBAIC04OTgs
MjAgKzkxOSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsCiAgICAgZ2w6OkJ1ZmZlclN1YkRh
dGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nl
c3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGdsOjpNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgbGVuZ3Ro
LCBhY2Nlc3MpOwotfQotCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5t
YXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAgIHJldHVybiBnbDo6VW5tYXBCdWZm
ZXIodGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIEdDR0x2b2lkKiBwdHIgPSBnbDo6TWFw
QnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgR3JhcGhpY3NDb250ZXh0
R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisgICAgICAgIHJldHVybjsKKyAgICBt
ZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7CisgICAgaWYgKCFnbDo6VW5tYXBC
dWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVU
YXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NH
THNpemVpcHRyIHNpemUpCkBAIC0xMDA4LDE0ICsxMDI1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsCiAgICAgY29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VT
aXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNl
dCksIDApKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5p
Zm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1
bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQor
VmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0
KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQorICAgICAgICByZXR1
cm4gcmVzdWx0OwogCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9y
bUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCBwYXJhbXMuZGF0
YSgpKTsKKyAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNl
cy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3VsdC5kYXRhKCkpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKQEAgLTIxMDEsMjIgKzIx
MTksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiBnbDo6R2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0
cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZh
bHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhB
dHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwg
dmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7Ci19Ci0KIEdDR0xzaXplaXB0ciBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpA
QCAtMjM5MiwxMiArMjM5NCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRR
dWVyeShHQ0dMZW51bSB0YXJnZXQpCiAgICAgZ2w6OkVuZFF1ZXJ5KHRhcmdldCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHBhcmFtcykKK0dDR0x1aW50IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSkKIHsKKyAgICBHQ0dMdWludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2KGlkLCBw
bmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGdsOjpHZXRRdWVyeU9i
amVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKIC8vIFRyYW5zZm9ybSBGZWVkYmFjayBGdW5jdGlvbnMKQEAgLTI4
MzksMjAgKzI4NDIsMjQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBh
cmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4KICAgICBnbDo6U2FtcGxl
clBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGZsb2F0IHZhbHVlID0gMC5mOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyLCBw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShz
YW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkK
K0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2
YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2
KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3lu
YyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKQEAgLTI4OTUsMTIgKzI5
MDIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6d2FpdFN5bmMoR0NHTHN5bmMg
c3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAgICBnbDo6V2FpdFN5bmMoc3luYywg
ZmxhZ3MsIHRpbWVvdXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
eW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNp
KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAw
OwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFN5bmNpdihzeW5jLCBwbmFtZSwgYnVmU2l6
ZSwgbnVsbHB0ciwgdmFsdWUpOworICAgIGdsOjpHZXRTeW5jaXYoc3luYywgcG5hbWUsIDEsIG51
bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzM1
OTdmNDc1M2QwYmVjMWQwMmU3ZDVmY2ZkYzY0M2E5ODNjODhkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgorCisj
aWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjp+
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4oKSA9IGRlZmF1bHQ7CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45OWU4OGMyZjk5YjFjYWE1ODExN2M3MzkxMWE1MWI2N2RkZTYzMmJj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApAQCAtMCwwICsxLDczIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiBQTEFU
Rk9STShDT0NPQSkKKworI2luY2x1ZGUgIklPU3VyZmFjZS5oIgorI2luY2x1ZGUgPG1lbW9yeT4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBbiBpbnRlcmZhY2UgZm9yIGltcGxlbWVudGlu
ZyBmcm9udCBidWZmZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKKy8vIGNoYWlu
IG9mIElPU3VyZmFjZXMuCisvLyBUaGUgaW1wbGVtZW50b3Igd2lsbCBvd24gdGhlIElPU3VyZmFj
ZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KKy8vIFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0
YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2lsbCByZWNlaXZlIHRoZSBtZXRhZGF0YQorLy8gYmFj
ayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJlZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xp
ZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5CisvLyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJm
YWNlIGl0c2VsZiBmb3IgcmV1c2UuCisvLyBFeGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMg
dG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBhcyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5CisvLyB3
aGVuIHRoZSBkaXNwbGF5IGNsaWVudCBpcyBkb25lIHdpdGggdGhlIElPU3VyZmFjZSBkaXNwbGF5
LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1c2luZworLy8gdGhlIGV4aXN0aW5nIGJpbmRpbmcg
b2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVyIHJlY3ljbGUgbG9naWMuCitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4oKTsKKyAgICBz
dHJ1Y3QgQnVmZmVyIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFj
ZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KKyAgICAgICAgdm9pZCogaGFuZGxl
IHsgbnVsbHB0ciB9OyAvLyBQcm9kdWNlciBzcGVjaWZpYyBtZXRhZGF0YSBoYW5kbGUgKHN1Y2gg
YXMgRUdMU3VyZmFjZSkuCisgICAgfTsKKyAgICAvLyBSZXR1cm5zIHRoZSBtZXRhZGF0YSBoYW5k
bGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgorICAgIC8vIENsaWVudCBtYXkgcmVj
aWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hpcCBvZiB0aGUgY29udGVudHMgc3VyZmFjZSwgaW4g
Y2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhlCisgICAgLy8gdGltZSBvZiB0aGUgY2FsbC4KKyAg
ICAvLyBSZXR1cm5zIGVpdGhlcjoKKyAgICAvLyAtIEVtcHR5IGJ1ZmZlciBpZiBubyBidWZmZXIg
aGFzIGJlZW4gc3VibWl0dGVkLgorICAgIC8vIC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBh
bmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRsZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBh
dmFpbGFibGUKKyAgICAvLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCisgICAg
Ly8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCisgICAgdmlydHVhbCBCdWZmZXIgcmVjeWNsZUJ1ZmZl
cigpID0gMDsKKworICAgIC8vIFByZXBhcmVzIHRoZSB0YXJnZXQgZm9yIGRpc3BsYXkgd2l0aCBh
IGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAg
b2YgdGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KKyAgICB2aXJ0dWFsIHZv
aWQgcHJlc2VudChCdWZmZXIpID0gMDsKKworICAgIC8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5k
IHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KKyAg
ICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3VibWl0dGVkLCByZWN5Y2xl
QnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGluZworICAgIC8vIHRoaXMu
CisgICAgdmlydHVhbCB2b2lkKiBkZXRhY2hDbGllbnQoKSA9IDA7Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggMmUxYzc5
OWU4Mjg1M2IzMjBiOGNlZGRkNGE2ZmU1ZTUwNGE5ZDg5Yy4uNzdjYTIwMGJkN2ZmZWZlZDM5OGY5
MTJhNzlkNDI1MTM0NmJmN2QyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbXBv
cnQgImNvbmZpZy5oIgpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJFeHRlbnNpb25zR0xB
TkdMRS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtODEsNyArODIsNyBAQCBzdGF0aWMgRUdMRGlzcGxheSBJ
bml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CiAgICAg
RUdMaW50IG1pbm9yVmVyc2lvbiA9IDA7CiAgICAgRUdMRGlzcGxheSBkaXNwbGF5OwotICAgIGJv
b2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIWlzSW5XZWJQ
cm9jZXNzKCk7CisgICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1
cHBvcnQgPSAhKGlzSW5XZWJQcm9jZXNzKCkgfHwgaXNJbkdQVVByb2Nlc3MoKSk7CiAgICAgaWYg
KHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCkgewogICAgICAgICAv
LyBGb3IgV0sxIHR5cGUgQVBJcyB3ZSBuZWVkIHRvIHNldCAidm9sYXRpbGUgcGxhdGZvcm0gY29u
dGV4dCIgZm9yIHNwZWNpZmljCiAgICAgICAgIC8vIEFQSXMsIHNpbmNlIGNsaWVudCBjb2RlIHdp
bGwgYmUgYWJsZSB0byBvdmVycmlkZSB0aGUgdGhyZWFkLWdsb2JhbCBjb250ZXh0CkBAIC0xMzQs
NyArMTM1LDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0
dHJzLCBob3N0V2luZG93LCBkZXN0aW5hdGlvbikpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TChhdHRycywgaG9zdFdpbmRvdywgbnVsbHB0ciwgbnVsbHB0cikpOwogCiAgICAgaWYgKCFjb250
ZXh0LT5tX2NvbnRleHRPYmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ3LDEzICsx
NDgsMTggQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKIFJlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCkKIHsKICAgICBhdXRvIGhvc3RXaW5kb3cgPSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5ob3N0V2luZG93Rm9y
Q29udGV4dCgmc2hhcmVkQ29udGV4dCk7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5l
dyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVz
KCksIGhvc3RXaW5kb3csIHNoYXJlZENvbnRleHQuZGVzdGluYXRpb24oKSwgJnNoYXJlZENvbnRl
eHQpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgJnNo
YXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdpbmRv
dyk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAorUmVmPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzLCBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbiYgc3dhcENoYWluKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBudWxscHRyLCBudWxscHRyLCAmc3dhcENoYWlu
KSk7Cit9CisKICNpZiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3Vs
ZCBiZSBqdXN0IGVuYWJsZWQgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5ND4uCiAKIHN0YXRpYyB2b2lk
IHNldEdQVUJ5UmVnaXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9y
bWF0T2JqIHBpeGVsRm9ybWF0T2JqLCBJT1JlZ2lzdHJ5R1BVSUQgcHJlZmVycmVkR1BVSUQpCkBA
IC0yMDQsOCArMjEwLDggQEAgc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRl
eHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWwKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKIAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0w6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCkKLSAgICA6IEdyYXBoaWNzQ29udGV4
dEdMKGF0dHJzLCBkZXN0aW5hdGlvbiwgc2hhcmVkQ29udGV4dCkKK0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBzaGFyZWRDb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dh
cENoYWluKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIERlc3RpbmF0aW9uOjpPZmZz
Y3JlZW4sIHNoYXJlZENvbnRleHQpCiB7CiAgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJzLmlzV2Vi
R0wyOwogCkBAIC0yOTMsMjYgKzI5OSwyOCBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAg
IGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICBnbDo6RW5hYmxlKEdyYXBoaWNzQ29udGV4dEdM
OjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKKyAgICBWZWN0b3I8QVNDSUlMaXRl
cmFsLCA0PiByZXF1aXJlZEV4dGVuc2lvbnM7CisgICAgaWYgKG1faXNGb3JXZWJHTDIpIHsKKyAg
ICAgICAgLy8gRm9yIFdlYkdMIDIuMCBvY2NsdXNpb24gcXVlcmllcyB0byB3b3JrLgorICAgICAg
ICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xl
YW4iX3MpOworICAgIH0KICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKLQogICAg
IGlmICghbmVlZHNFQUdMT25NYWMoKSkgewotICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIqIHJlcXVpcmVkRXh0ZW5zaW9uc1tdID0gewotICAgICAgICAgICAgIkdMX0FOR0xFX3Rl
eHR1cmVfcmVjdGFuZ2xlIiwgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAg
ICAgICAgICAiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiwgLy8gRm9yIGNyZWF0aW5n
IHRoZSBFR0wgc3VyZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KLSAgICAgICAgfTsKLQotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocmVxdWlyZWRFeHRlbnNp
b25zKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMocmVxdWly
ZWRFeHRlbnNpb25zW2ldKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3Npbmcg
cmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAvLyBGb3IgSU9TdXJmYWNl
LWJhY2tlZCB0ZXh0dXJlcy4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xf
QU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3MpOworICAgICAgICAvLyBGb3IgY3JlYXRpbmcgdGhl
IEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lv
bnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiX3MpOworICAgIH0KIAot
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHJlcXVpcmVkRXh0ZW5zaW9uc1tp
XSk7CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAg
ICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAgaWYgKCFleHRl
bnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgIExPRyhXZWJHTCwgIk1p
c3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIGV4dGVuc2lvbi5jaGFyYWN0ZXJzKCkpOwor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJl
RW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBJ
dCdzIHVuY2xlYXIgaWYgTUFDQ0FUQUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3RlcHMgYXMgd2Vs
bCwgYnV0IHRoYXQKICAgICAvLyB3b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNjcmVlbk1hYyBj
b2RlIHRvIGJlIGV4cG9zZWQgdG8gQ2F0YWx5c3QgdG9vLgpAQCAtMzMxLDEzICszMzksMTcgQEAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBh
dHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJp
bmcgdmFsaWRhdGlvbi4KIAotICAgIC8vIENyZWF0ZSB0aGUgV2ViR0xMYXllcgotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtb
V2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBp
eGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7CisgICAgaWYgKHN3YXBDaGFp
bikKKyAgICAgICAgbV9zd2FwQ2hhaW4gPSBzd2FwQ2hhaW47CisgICAgZWxzZSB7CisgICAgICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICAgICAgbV93ZWJHTExheWVyID0g
YWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRy
cy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOwogI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsK
KyAgICAgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CiAjZW5k
aWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKKyAgICAgICAgbV9zd2FwQ2hhaW4gPSAmW21fd2ViR0xMYXllciBzd2FwQ2hh
aW5dOworICAgIH0KIAogICAgIC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdpbGwgYmUgdXNl
ZCBmb3IgdGhlIGZyYW1lYnVmZmVyLgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gSU9TdXJm
YWNlVGV4dHVyZVRhcmdldCgpOwpAQCAtNDA2LDEzICs0MTgsMTIgQEAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6On5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpCiAgICAgICAgIGlmIChtX3ByZXNl
cnZlRHJhd2luZ0J1ZmZlckZCTykKICAgICAgICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMo
MSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKTsKICAgICB9Ci0gICAgaWYgKG1fZGlzcGxh
eUJ1ZmZlclBidWZmZXIpCisgICAgaWYgKG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpIHsKICAgICAg
ICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
cik7Ci0gICAgaWYgKG1fd2ViR0xMYXllcikgewotICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVy
ID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICAgICAgYXV0byByZWN5Y2xlZEJ1
ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAgICAgIGlmIChyZWN5Y2xl
ZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5
T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOwotICAgICAgICBhdXRvIGNvbnRlbnRzSGFuZGxl
ID0gW21fd2ViR0xMYXllciBkZXRhY2hDbGllbnRdOworICAgICAgICBhdXRvIGNvbnRlbnRzSGFu
ZGxlID0gbV9zd2FwQ2hhaW4tPmRldGFjaENsaWVudCgpOwogICAgICAgICBpZiAoY29udGVudHNI
YW5kbGUpCiAgICAgICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBjb250
ZW50c0hhbmRsZSk7CiAgICAgfQpAQCAtNTc1LDExICs1ODYsMTYgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKICAgICAgICAgbV9k
aXNwbGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOwogICAgIH0KICAgICAvLyBSZXNl
dCB0aGUgZnV0dXJlIHJlY3ljbGVkIGJ1ZmZlciBub3csIGJlY2F1c2UgaXQgbW9zdCBsaWtlbHkg
d2lsbCBub3QgYmUgcmV1c2FibGUgYXQgdGhlIHRpbWUgaXQgd2lsbCBiZSByZXVzZWQuCi0gICAg
YXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAg
YXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAg
aWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1f
ZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxlKTsKICAgICByZWN5Y2xlZEJ1ZmZlci5z
dXJmYWNlLnJlc2V0KCk7CisgICAgcmV0dXJuIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKCk7Cit9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5k
QmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKK3sKKyAgICBBU1NFUlQoIWdldEludGVybmFsRnJh
bWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsKICAgICBhdXRvIGJhY2tpbmcgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBXZWJDb3JlOjpz
UkdCQ29sb3JTcGFjZVJlZigpKTsKICAgICBpZiAoIWJhY2tpbmcpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTYzNyw3ICs2NTMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjph
bGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdAogICAgIC8vIGZvciBPcGVuR0wgdG8gZGVjaWRl
IHdoaWNoIEdQVSBpcyBjb25uZWN0ZWQgdG8gYSBkaXNwbGF5IChvbmxpbmUvb2ZmbGluZSkuCiAg
ICAgLy8gT3BlbkdMIHdpbGwgdGhlbiBjb25zaWRlciBhbGwgR1BVcywgb3IgcmVuZGVyZXJzLCBh
cyBvZmZsaW5lLCB3aGljaCBtZWFucwogICAgIC8vIGFsbCBvZmZsaW5lIHJlbmRlcmVycyBuZWVk
IHRvIGJlIGNvbnNpZGVyZWQgd2hlbiBmaW5kaW5nIGEgcGl4ZWwgZm9ybWF0LgotICAgIC8vIElu
IFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kb3dTZXJ2ZXIgY29ubmVj
dGlvbiwgYW5kCisgICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBh
IFdpbmR3U2VydmVyIGNvbm5lY3Rpb24sIGFuZAogICAgIC8vIG1fZGlzcGxheU1hc2sgd2lsbCBu
b3QgYmUgc2V0IGluIHRoaXMgY2FzZS4KICAgICBpZiAocHJpbWFyeU9wZW5HTERpc3BsYXlNYXNr
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjQ2LDEyICs2NjIsMTIgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKICAgICAv
LyBhbmQgTUFDL01BQ0NBVEFMWVNUIGFuZCBPUEVOR0wvT1BFTkdMRVMuCiAgICAgcmV0dXJuIHRy
dWU7CiAjZW5kaWYKLSAgICAgICAgCisKICNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wp
CiAgICAgaWYgKGhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYKLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNjgzLDEwICs2OTks
MTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQog
ICAgIC8vIFRoZSBJT1N1cmZhY2Ugd2lsbCBiZSB1c2VkIGZyb20gb3RoZXIgZ3JhcGhpY3Mgc3Vi
c3lzdGVtLCBzbyBmbHVzaCBHTCBjb21tYW5kcy4KICAgICBnbDo6Rmx1c2goKTsKIAotICAgIGF1
dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgIGF1
dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogCiAgICAg
RUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIs
IEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgW21fd2ViR0xMYXllciBwcmVwYXJlRm9yRGlzcGxheVdp
dGhDb250ZW50czoge1dURk1vdmUobV9kaXNwbGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1
ZmZlclBidWZmZXJ9XTsKKyAgICBtX3N3YXBDaGFpbi0+cHJlc2VudCh7IFdURk1vdmUobV9kaXNw
bGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgfSk7CiAgICAgbV9kaXNw
bGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOwogCiAgICAgYm9vbCBoYXNOZXdCYWNr
aW5nID0gZmFsc2U7CkBAIC03MDAsNyArNzE2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogCiAgICAgLy8gRXJyb3Igd2lsbCBiZSBoYW5kbGVk
IGJ5IG5leHQgY2FsbCB0byBtYWtlQ29udGV4dEN1cnJlbnQoKSB3aGljaCB3aWxsIG5vdGljZSBs
YWNrIG9mIGRpc3BsYXkgYnVmZmVyLgogICAgIGlmICghaGFzTmV3QmFja2luZykKLSAgICAgICAg
cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgICAgIGFsbG9jYXRlQW5kQmluZERp
c3BsYXlCdWZmZXJCYWNraW5nKCk7CiAKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYzQxNDAxNWI3YjBmMzRiYjI4YmUzNDU1MDljNzQyOWUzMWRhYTNjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShD
T0NPQSkKKworI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIK
KyNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICBhdXRvIGF0dHJzID0gY29u
dGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAg
ICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRy
cy5hbHBoYV0pOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1l
OkAiV2ViR0wgTGF5ZXIiXTsKKyNlbmRpZgorICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
K30KKworCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViR0xMYXllci5nZXQoKTsK
K30KKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzQ29u
dGV4dEdMQ1YqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjphc0NWKCkKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbiYgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dh
cENoYWluKCkKK3sKKyAgICByZXR1cm4gW21fd2ViR0xMYXllciBzd2FwQ2hhaW5dOworfQorCit9
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIuaAppbmRleCAxNGIwMWU3MDVmMjA1MzAxYzdjOTdjZjY2ZTcxYTA4YmJmNDFl
NzA1Li43ZmU4OGEyZmY0Y2UwZjU1OWQ1OWRjMWNkOTUyYTNhN2VhODgwOTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCkBA
IC0yMyw1MiArMjMsMjIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiSU9TdXJm
YWNlLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgog
I2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxtZW1vcnk+CiAjaW1w
b3J0IDx3dGYvTmFrZWRQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IFdlYkdM
TGF5ZXJCdWZmZXIgewotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1
cmZhY2U7IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCi0gICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0
ciB9OyAvLyBDbGllbnQgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1cmZh
Y2UpLgotfTsKLX0KLQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogLy8g
QSBsYXllciBjbGFzcyBpbXBsZW1lbnRpbmcgZnJvbnQgYnVmZmVyIG1hbmFnZW1lbnQgb2YgYSAz
LWJ1ZmZlcmluZyBzd2FwCiAvLyBjaGFpbiBvZiBJT1N1cmZhY2VzLgotLy8gVGhlIGxheWVyIHdp
bGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMgZm9yIGRpc3BsYXkuCi0vLyBUaGUgY2xpZW50
IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJT1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0
aGUgbWV0YWRhdGEKLS8vIGJhY2sgb25jZSB0aGUgSU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXll
ZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90IG5lY2Nlc3NhcmlseQotLy8gYmUgYWJsZSB0
byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYgZm9yIHJldXNlLgotLy8gRXhhbXBsZSB1c2Ug
b2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xTdXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFk
YXRhLiBUaGlzIHdheQotLy8gd2hlbiB0aGUgV2ViR0xMYXllciBpcyBkb25lIHdpdGggdGhlIElP
U3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1c2luZwotLy8gdGhlIGV4
aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVyIHJlY3ljbGUgbG9naWMu
CiBAaW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBDQUxheWVyCiAKIC0gKGlkKWluaXRXaXRoRGV2aWNl
UGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbClj
b250ZW50c09wYXF1ZTsKIAogLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xv
clNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZTsKIAotLy8gUmV0dXJucyB0aGUgbWV0
YWRhdGEgaGFuZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCBt
YXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hpcCBvZiB0aGUgY29udGVudHMgc3VyZmFj
ZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhlCi0vLyB0aW1lIG9mIHRoZSBjYWxsLgot
Ly8gUmV0dXJucyBlaXRoZXI6Ci0vLyAtIEVtcHR5IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJl
ZW4gc3VibWl0dGVkLgotLy8gLSBCdWZmZXIgd2l0aCBlbXB0eSBzdXJmYWNlIGFuZCBub24tZW1w
dHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBidWZmZXIgd2FzIGF2YWlsYWJsZQot
Ly8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4gdXNlLgotLy8gLSBTdXJmYWNlIGFuZCBo
YW5kbGUuCi0tIChXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKXJlY3ljbGVCdWZmZXI7Ci0KLS8v
IFByZXBhcmVzIHRoZSBsYXllciBmb3IgZGlzcGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgot
Ly8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlwIG9mIHRoZSBJT1N1cmZhY2Ugc3VyZmFj
ZSBpbiB0aGUgYGJ1ZmZlcmAuCi0tICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRz
OihXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKWJ1ZmZlcjsKLQotLy8gRGV0YWNoZXMgdGhlIGNs
aWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFu
ZGxlLgotLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVj
eWNsZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKLS8vIHRoaXMu
Ci0tICh2b2lkKilkZXRhY2hDbGllbnQ7CistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbjsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQppbmRleCBjOGY0
ZTc5ZjczMTJlYWE2YWIwNDQ2ODA4M2VhOGQwYzhiZWZhM2JjLi4xNjhmZDVmNmM4NDIzN2JkZjhh
YjljYmJjYTY0MDczOTUwNWM5MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0zMiwxMyArMzIsMzkgQEAK
ICNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgi
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLSNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgorCitjbGFzcyBXZWJHTExheWVy
U3dhcENoYWluIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJHTExheWVyU3dhcENoYWlu
KFdlYkdMTGF5ZXIqIGxheWVyKSAgOiBtX2xheWVyKGxheWVyKSB7IH07CisgICAgfldlYkdMTGF5
ZXJTd2FwQ2hhaW4oKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZl
cikgb3ZlcnJpZGU7CisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgeworICAgICAgICAgICAgaWYgKG1f
c3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQorICAgICAgICAgICAgICAgIG1fc3BhcmVC
dWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9zcGFy
ZUJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdm9p
ZCogZGV0YWNoQ2xpZW50KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zcGFy
ZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gbV9kaXNwbGF5QnVmZmVy
LmhhbmRsZTsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxh
eVN1cmZhY2UoKSB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZS5nZXQoKTsgfQorcHJp
dmF0ZToKKyAgICBCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOworICAgIEJ1ZmZlciBtX3NwYXJlQnVm
ZmVyOworICAgIFdlYkdMTGF5ZXIqIGNvbnN0IG1fbGF5ZXI7Cit9OwogCiBAaW1wbGVtZW50YXRp
b24gV2ViR0xMYXllciB7Ci0gICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfY29udGVudHNC
dWZmZXI7Ci0gICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfc3BhcmVCdWZmZXI7Ci0KICAg
ICBCT09MIF9wcmVwYXJlZEZvckRpc3BsYXk7CisgICAgT3B0aW9uYWw8V2ViR0xMYXllclN3YXBD
aGFpbj4gX3N3YXBDaGFpbjsKIH0KIAogLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihm
bG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVl
CkBAIC00Nyw2ICs3Myw3IEBACiAgICAgc2VsZi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRl
bnRpdHk7CiAgICAgc2VsZi5jb250ZW50c09wYXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwogICAgIHNl
bGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVsUmF0aW87CisgICAgX3N3YXBDaGFpbi5lbXBs
YWNlKHNlbGYpOwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC03MywzMCArMTAwLDIxIEBACiAg
ICAgVU5VU0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogICAgIHJldHVybiBudWxscHRyOwogfQotCi0t
IChXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKSByZWN5Y2xlQnVmZmVyCistIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbgogewotICAgIGlm
IChfc3BhcmVCdWZmZXIuc3VyZmFjZSkgewotICAgICAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZh
Y2UtPmlzSW5Vc2UoKSkKLSAgICAgICAgICAgIF9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7
Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKF9zcGFyZUJ1ZmZlcik7Ci0gICAgfQotICAgIHJldHVy
biB7IH07CisgICAgcmV0dXJuIF9zd2FwQ2hhaW4udmFsdWUoKTsKIH0KIAotLSAodm9pZClwcmVw
YXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgYnVm
ZmVyCistICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5CiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZm
ZXIuc3VyZmFjZSk7Ci0gICAgX3NwYXJlQnVmZmVyID0gV1RGTW92ZShfY29udGVudHNCdWZmZXIp
OwotICAgIF9jb250ZW50c0J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBbc2VsZiBzZXRO
ZWVkc0Rpc3BsYXldOwogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBZRVM7CiB9CiAKIC0gKHZv
aWQpZGlzcGxheQogewotICAgIGlmIChfY29udGVudHNCdWZmZXIuc3VyZmFjZSAmJiBfcHJlcGFy
ZWRGb3JEaXNwbGF5KSB7Ci0gICAgICAgIHNlbGYuY29udGVudHMgPSBfY29udGVudHNCdWZmZXIu
c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCk7CisgICAgaWYgKF9zd2FwQ2hhaW4tPmRpc3BsYXlT
dXJmYWNlKCkgJiYgX3ByZXBhcmVkRm9yRGlzcGxheSkgeworICAgICAgICBzZWxmLmNvbnRlbnRz
ID0gX3N3YXBDaGFpbi0+ZGlzcGxheVN1cmZhY2UoKS0+YXNMYXllckNvbnRlbnRzKCk7CiAgICAg
ICAgIFtzZWxmIHJlbG9hZFZhbHVlRm9yS2V5UGF0aDpAImNvbnRlbnRzIl07CiAgICAgfQogICAg
IGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZv
ckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKQEAgLTEwNiwxMyArMTI0LDE0IEBACiAgICAg
X3ByZXBhcmVkRm9yRGlzcGxheSA9IE5POwogfQogCi0tICh2b2lkKikgZGV0YWNoQ2xpZW50CitA
ZW5kCisKK3ZvaWQgV2ViR0xMYXllclN3YXBDaGFpbjo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQog
ewotICAgIEFTU0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIHZvaWQqIHJlc3VsdCA9
IF9jb250ZW50c0J1ZmZlci5oYW5kbGU7Ci0gICAgX2NvbnRlbnRzQnVmZmVyLmhhbmRsZSA9IG51
bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3Vy
ZmFjZSk7CisgICAgbV9zcGFyZUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKKyAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgW21fbGF5ZXIgcHJlcGFy
ZUZvckRpc3BsYXldOwogfQotQGVuZAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4
NTUyZjFlNDZhMWQzNzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIuLjk5YWQ5MTY1MjU5MTg3M2UwZTgz
ZmU4Nzg5MjVlY2EyMzNhMWExYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdl
QnVmZmVyLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVm
ZmVyLmgiCiAjaW1wb3J0ICJTb3VyY2VHcmFwaGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lD
b250ZXh0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDdlYzgxY2Y0YWU1Nzcy
Y2FlOTcyODhiYzgwZTM2NTY0NmQ2MjdjN2IuLmU3MDc0MDU1OThlMzJlYjIwZjE4Y2IzMTNiMTU3
Y2I0ZWMwYjY2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNp
b25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJs
aXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNy
Y1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNp
Z25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xP
cGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcg
c3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxv
bmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZm
ZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uCiAgICAgOjpnbEJsaXRG
cmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBk
c3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodW5zaWduZWQgbG9uZyB0
YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1h
dCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0y
MjIsNyArMjIyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdCdWZmZXJzRVhUKEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjM3LDcgKzIzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAjZW5kaWYKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBl
LCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUzLDcg
KzI1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5oCmluZGV4IDQ5NjI4OWNlYTBlNmEwOWQ2ZGI3MzFmODY4YjU0OTkzYTQ0NDQ5
YTguLmU0ZDM1NWRlYTIwZThhNmViZWEwOWMyMGUwNTEwMWNhOTI0MjdlMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkV4
dGVuc2lvbnNHTE9wZW5HTCgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAg
dm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwg
bG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZ
MSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAg
IHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBz
cmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9u
ZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3Zl
cnJpZGU7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKQEAgLTUyLDkgKzUyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcG9wR3JvdXBNYXJr
ZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291
bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIGJv
b2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2MWZiYTc3OGY4ZmI0
Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYi4uYmE3Mjk5ZGIyZjA0MTljM2Y4Y2E0ZjQxZWY2YjVhN2Vi
NGNhNzRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTM2
Niw3ICszNjYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZS
b2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMcwogICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICosIGJvb2wpCit2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpICosIEdDR0xzaXpl
aSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTFNwYW48R0NHTHZvaWQ+LCBib29sKQogewogICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0
NGNlZTRhMjJkOGZiMjhjNjQuLjhhY2I5YzgzNzRmOWFjZGNjNjBmMzExYTQ4MTAxYWFlZjE5OThj
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTkzLDcgKzkzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNv
bHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1
ZmZlck9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKGlu
dCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKICAgICB2
b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkx
NDI3YmFjZWZjYmI4YWMzLi40MjcwMTVlYTc5MWQ4Zjc4NDYxMTc1OGNlYmNlYzUxNzYwZDExY2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMiArMTAwLDEyIEBA
IHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TEVTOjpibGl0RnJhbWVidWZmZXIobG9uZyAvKiBzcmNYMCAqLywgbG9uZyAvKiBzcmNZMCAqLywg
bG9uZyAvKiBzcmNYMSAqLywgbG9uZyAvKiBzcmNZMSAqLywgbG9uZyAvKiBkc3RYMCAqLywgbG9u
ZyAvKiBkc3RZMCAqLywgbG9uZyAvKiBkc3RYMSAqLywgbG9uZyAvKiBkc3RZMSAqLywgdW5zaWdu
ZWQgbG9uZyAvKiBtYXNrICovLCB1bnNpZ25lZCBsb25nIC8qIGZpbHRlciAqLykKK3ZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKGxvbmcgLyogc3JjWDAgKi8s
IGxvbmcgLyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8sIGxvbmcgLyogc3JjWTEgKi8sIGxv
bmcgLyogZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxvbmcgLyogZHN0WDEgKi8sIGxvbmcg
LyogZHN0WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAqLywgdW5zaWduZWQgbG9uZyAvKiBm
aWx0ZXIgKi8pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3Jt
YXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0
blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
Cit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewogICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
QEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xEcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAg
IGlmICghbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjc3LDcgKzI3
Nyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsCiAgICAgbV9nbERyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0
YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRp
dmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAo
IW1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oCmluZGV4IDAxN2E0NWI3Mzk4ZDA5OTJlZDE0NzY3ZjA3NjdlMDRiNDY0MTYyODMuLjY2
NDc5NWJkYThiODU1MjI1MmFkOTY2ZDY0Y2RlOGE2NWM0MDhhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5oCkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lv
bjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNy
Y1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25n
IGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9y
bWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBs
b25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgx
LCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcg
aW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KSBvdmVycmlkZTsKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CkBAIC04
Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5l
c3MgLSByZXNldAogICAgIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGMyNTViMGMxMmY0ZmNiZmE0
NmRiMDJkNTVjODBiNGNiNzdkMTdiNzAuLjAyNzI4Zjg5Nzg4ZTBiODVlZDEyNmY1Zjk4MWY1YzFk
NjBkZmZkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC01OCw2ICs1
OCw5IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NM
QVNTIFdlYkdMTGF5ZXI7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKK30KICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAog
I2lmIFVTRShOSUNPU0lBKQpAQCAtODYsNyArODksNyBAQCB0eXBlZGVmIFdURjo6SGFzaE1hcDxD
U3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFtZUhhc2g7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMUHJpdmF0ZTsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwg
OiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVz
dGluYXRpb246Ok9mZnNjcmVlbik7CkBAIC05NCw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNy
ZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCk7CisgICAg
c3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vzcyhj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbiYpOworCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0T2JqOyB9
CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgp
KTsgfQpAQCAtMTkxLDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0dHJp
YkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5m
byYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3RpdmVV
bmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3Rp
dmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xP
YmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50
LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAgdm9p
ZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVl
KSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBAIC0yMTksOCArMjI0LDYgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5pZm9y
bXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdl
dFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5h
bDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTIzNiw3ICsyMzksOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAg
ICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykg
ZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAg
IHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYg
dmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CkBAIC0yNTQsNyArMjU4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAgICAgdm9pZCBjb21w
cmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAK
QEAgLTMxNywxMiArMzIxLDEwIEBAIHB1YmxpYzoKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQg
YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVz
YWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBidWZm
ZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25z
dCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7Ci0g
ICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNC
eXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1
aW50IGxlbmd0aCk7CiAjZW5kaWYKICAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQs
IEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKIAotICAg
IHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwotICAgIEdD
R0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9pZCBn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdD
R0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEs
IEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0
WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOwogICAgIHZvaWQg
ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2ht
ZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5
ZXIpIGZpbmFsOwpAQCAtMzg0LDcgKzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFF1ZXJ5
KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICAgICAvLyBnZXRRdWVyeVBh
cmFtZXRlcgotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVy
eSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTHVpbnQg
Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKICAg
ICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKQEAg
LTM5Myw4ICszOTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5h
bDsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CiAgICAgLy8gZ2V0U2FtcGxl
clBhcmFtZXRlcgotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAg
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2Ft
cGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdDR0xzeW5jIGZlbmNlU3lu
YyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CiAgICAgR0NH
TGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jKSBmaW5hbDsKQEAgLTQwMyw3ICs0MDUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dM
aW50NjQgdGltZW91dCkgZmluYWw7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgogICAgIC8vIEZJ
WE1FIC0gdGhpcyBjYW4gYmUgaW1wbGVtZW50ZWQgYXQgdGhlIFdlYkdMIGxldmVsIGlmIHdlIHNp
Z25hbCB0aGUgV2ViR0xTeW5jIG9iamVjdC4KLSAgICB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkgZmluYWw7
CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwog
CiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwog
ICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmlu
YWw7CkBAIC00MjAsNyArNDIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVy
LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogICAgIC8vIGdl
dEluZGV4ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KICAgICBW
ZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmluYWw7Ci0gICAgdm9pZCBn
ZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxH
Q0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+
JiBwYXJhbXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1J
bmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMdWludCBnZXRVbmlmb3Jt
QmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9y
bUJsb2NrTmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVy
CkBAIC00MjksMTEgKzQzMSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCi0jaWYgIVVT
RShBTkdMRSkKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zm
c2V0KTsKLSNlbmRpZgotCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAKICAgICB2b2lkIHBhaW50
VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7
CkBAIC01MTUsNyArNTEyLDExIEBAIHB1YmxpYzoKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQogCiBw
cml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4qID0gbnVsbHB0cik7CisjZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0
aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNo
YXJlZENvbnRleHQgPSBudWxscHRyKTsKKyNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkg
YWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4K
ICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0
ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KQEAgLTUyNyw3ICs1MjgsOSBA
QCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0
aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2
b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIAorCisgICAgdm9pZCByZWFkblBpeGVsc0lt
cGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dM
dm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CisKICAgICAvLyBE
aWQgdGhlIG1vc3QgcmVjZW50IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4g
YWNjZXB0YWJsZSBzdGF0ZT8KICAgICB2b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKQEAgLTU0OCwx
MCArNTUxLDEzIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBhbGxv
d09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdDsKICAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZygpOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmco
KTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qIG1fc3dhcENo
YWluIHsgbnVsbHB0ciB9OworICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgb25j
ZSB0aGUgY29udGV4dCBkcmF3cyB0byBhIGltYWdlIGJ1ZmZlci4gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNzkgLgogICAgIFJldGFpblB0cjxXZWJHTExh
eWVyPiBtX3dlYkdMTGF5ZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBtX2NvbnRl
eHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkg
bV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwpAQCAtNTc5LDcgKzU4NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChlbnVtIEFOR0xFU2hhZGVy
U3ltYm9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc3lt
Ym9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8IHN5bWJvbFR5cGUgPT0g
U0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9M
X1RZUEVfVkFSWUlORyk7CkBAIC02NzIsNyArNjc4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB1
c2luZyBCb3VuZFRleHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAgICAgICAgc3Rk
OjpwYWlyPEdDR0x1aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6OkludEhhc2g8R0NH
TGVudW0+LCAKKyAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sCiAgICAgICAgICAg
ICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwKICAgICAgICAg
ICAgIFdURjo6UGFpckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+
PgogICAgICAgICA+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggYmM0NGNkNTc3ODg2NzIwMzlhZWE0ZjU5OTk2ZTRkOTRlMWMxYTBmZS4uZmEy
ODdmNjAzZmQyODlhODM3Yjc2ZTE1NTNlYmJkYTNkYzcyMjNkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yMjc4LDE5ICsyMjc4LDE5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5k
cmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBn
ZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
IHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9u
cygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQs
IHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvcihp
bmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBIQVZFKE9QRU5HTF80KSAmJiBFTkFCTEUo
V0VCR0wyKQpAQCAtMjMzNSwxMyArMjMzNSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0ciwKIH0K
ICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBk
c3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xpbnRwdHIs
IEdDR0xTcGFuPEdMdm9pZD4pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY0J5dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAg
ICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKIH0K
IAogI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCkBAIC0yNzEyLDcgKzI3
MDcsNyBAQCBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVy
eShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYQogICAgIHJldHVybiAwOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2Jq
ZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5
LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocXVlcnkpOwogICAgIFVOVVNF
RF9QQVJBTShwbmFtZSk7CkBAIC0yNzU2LDE4ICsyNzUxLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVuCiAgICAgVU5VU0VEX1BBUkFNKHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAg
IFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1
cm4gMC5mOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQorCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogR0NHTHN5bmMgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRm
aWVsZCBmbGFncykKQEAgLTI4MDYsMTIgKzI4MDIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dM
aW4KICAgICBVTlVTRURfUEFSQU0odGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN5bmMpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGJ1ZlNpemUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9
CiAKIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKCkKQEAgLTI4OTQsMTEgKzI4OTAsMTMgQEAgVmVjdG9yPEdDR0x1aW50PiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVj
dCBwcm8KICNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0g
cG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiBy
ZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogCi0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5p
Zm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCBwYXJhbXMu
ZGF0YSgpKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5k
aWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3VsdC5kYXRhKCkp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcAppbmRleCAyM2Q3NGZhODBkNzA3OTFiZTYwMGRmNThlNzU2MTczMzk2YWE1NTA1
Li5iZjdjNjg2ZjAxZTcyMzIzNTQ4NjEzNTczYzkxZjdlYWYyYjQ0YzU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
ICAgICAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3
ZSBoYXZlIGl0LgogICAgICAgICAgICAgaWYgKHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZm
ZXIpIHsKICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZG
RVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50
LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5E
RVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhl
aWdodCk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkKICAgICAgICAg
ICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBH
TF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZm
ZXIpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKQpAQCAtMTM4LDEyICsx
MzgsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYg
KGF0dHJpYnV0ZXMuc3RlbmNpbCkgewogICAgICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRl
cmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRF
UkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVY
OCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5E
RVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xC
aW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0gICAgICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdM
X1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBU
SF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVO
VCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA2Mjg0NDUzMjUwMzM1MTA3ZmQ1NDk4
MjIzMmI4YjllYWVjOGU2OGNiLi45ZjgzMTdiMThkNTNiN2IzYzE2NjY5YTRjNTExOTkzZWFmMzdj
Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsNyBAQCBzZXQoV2ViS2l0X01F
U1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
CiAgICAgR1BVUHJvY2Vzcy9HUFVQcm9jZXNzCiAKKyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMCiAgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kCiAKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyCkBAIC0yMTgsNiArMjE5LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxF
UwogCiAgICAgV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24KIAorICAgIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkKICAgICBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKIAogICAgIFdl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGVkYjZjYTU5NzlkMmY0
ZGVmOGIyYjJlNzczZjlkNjlhZTc4NmU3ZTkuLjRhNjdkZjhlZGMzYjRmNDg5MTg3NzAyZWZiZjA0
MWIzZDM0YTkxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKQEAgLTIwLDYgKzIwLDcgQEAgJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9tb2RlbHMucHkKICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikv
eHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNz
YWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KQEAgLTEzMSw2ICsxMzIsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hl
L1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2Ny
ZWVuTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4
IDc1Njc5ZjU1ZjVhZTM5OWI1ZWFmNDc3ZjE4OTMyNTZiYzI0ODg0NGQuLjdjZDNkYmNjYTM1MGM2
ZTM4MTRjMzQwYzM5M2M5NjNlZGJiOTgxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTc1LDYgKzE3NSwxMiBAQCAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDM3NzAxYjAxYzNjMWEyYzMwMGUxZGQyZDcy
ZTZiODUyMzdmNDI0YjUuLjk3NmIxYTVhM2U1YzBkMzExNWQ0NDUwYzkwODYxNTcxOWU2ZGVjZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE3MSw2ICsxNzEsNyBAQCBNRVNTQUdF
X1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbiBc
CiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwK
KwlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IFwK
IAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKIAlXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXApAQCAtMjI3LDYgKzIyOCw3IEBAIE1FU1NBR0Vf
UkVDRUlWRVJTID0gXAogCVBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2VzcyBcCiAJR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKIAlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgXAorCUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgXAogCUdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKIAlH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwK
IAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1h
bmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDBlMmU4ODMyYjFlMjBmMWUwZjMxOWQ1ZDlmMjVkNzJj
ZTFiZjczYWQuLjQ0YjlmNjNlMTRjNTBiNzQxOTkzZDZmMzVhNWE5NWY1YWZkODBhNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTY0LDYgKzY0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgogI2luY2x1ZGUgIlJl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCkBAIC0yOTAsNiArMjk0LDIxIEBAIHZvaWQg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQog
CisjaWYgRU5BQkxFKFdFQkdMKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNYXAuZW5zdXJlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgWyZdKCkgeworICAg
ICAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAq
dGhpcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9KTsKKyAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGJv
b2wgZm91bmQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKK30K
KyNlbmRpZgogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJ
bmZvKCkKIHsKICAgICBncHVQcm9jZXNzKCkubm93UGxheWluZ01hbmFnZXIoKS5jbGVhck5vd1Bs
YXlpbmdJbmZvQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDI2NzhkYmM0ZTVkMzY1ZmFkMjhl
OGI0ODI3ODYzNzYyYTNjNDU3OGQuLjVhZWRmYmI0ZDJjYWM3Yjc2NjBmZjA3MzYwOWQzNzdjNjAx
NTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlck1hcC5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvbklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29y
ZS9MaWJXZWJSVENFbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5aW5nTWFu
YWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KQEAgLTM5LDYg
KzQwLDExIEBACiAjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVUHJvY2VzczsK
QEAgLTU0LDYgKzYwLDcgQEAgY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiBjbGFz
cyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5OwogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKK2NsYXNzIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3Rl
QXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKQEAgLTExOSw2ICsxMjYsMTEgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgY3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisjZW5kaWYKKwogICAgIHZvaWQgY2xlYXJOb3dQ
bGF5aW5nSW5mbygpOwogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1Bs
YXlpbmdBcHBsaWNhdGlvbiwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CiAKQEAgLTE4MCw3
ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRN
YXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4+OwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwOwotCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHVz
aW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+Owor
ICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXA7CisjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5OwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDUxOTRmYjRmNjA4NWQ2MjRkNTk4M2Y2MjUy
YzM2NWViMzI3MWYzNDQuLjlkNTRlMTY0NTk1YjBhMzYxZGZlNGM3NWJmZjQwMThhODU3NTljOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSwxMCBAQAogbWVzc2Fn
ZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAg
ICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVu
ZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIENyZWF0ZUdy
YXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQorICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdM
KFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKKyNlbmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCiAgICAgdm9p
ZCBTZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBzdHJ1
Y3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8gbm93UGxheWluZ0luZm8pCiAjaWYgVVNFKEFVRElP
X1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTIzMTBkNGFl
ZTAwNmI5Zjk0MGFmYTljNDM4YzFhY2M5NWUzYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApA
QCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRS
aWdodC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKK30K
KworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICA6IG1f
Y29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRy
aWJ1dGVzLCAqdGhpcykpCisgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdl
YWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCisgICAgLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgaWYgKGF1
dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LnRvVUludDY0KCksICp0aGlzKTsKKyAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7Cisg
ICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRl
eHRHTDo6RVhURU5TSU9OUyk7CisgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1f
Y29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRVFVRVNUQUJMRV9FWFRFTlNJ
T05TX0FOR0xFKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpXYXNDcmVhdGVkKGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAg
ICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQo
KSk7Cit9CisKK0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBudWxscHRyOworfQorCit1aW50NjRf
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2
NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaWRDb21wb3NpdGUoKQor
eworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNM
b3N0KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRl
eHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZl
ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJu
IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQoreworICAgIEFTU0VSVCghbV9kaXNwbGF5QnVm
ZmVyLnN1cmZhY2UpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKK30K
Kwordm9pZCogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRldGFjaENsaWVudCgpCit7CisgICAg
cmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9kaXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUoaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCit7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkKKyAgICAgICAgbV9j
b250ZXh0LT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOworICAgIGVsc2UKKyAgICAgICAgZm9yY2VD
b250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJl
Rm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5
KCk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXIuc3Vy
ZmFjZSk7CisgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgaWYgKGRpc3BsYXlCdWZm
ZXIpCisgICAgICAgIHNlbmRSaWdodCA9IGRpc3BsYXlCdWZmZXItPmNyZWF0ZVNlbmRSaWdodCgp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYg
ZXh0ZW5zaW9uKQoreworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoZXh0ZW5zaW9uKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bm90aWZ5
TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBtX2NvbnRleHQtPm1hcmtDb250ZXh0Q2hhbmdl
ZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFiZjA1NzIxMDFkOWJjMGYwOWY3ZGE5NGM5NGU1MzJiYTdmN2Mz
MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wp
CisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBHUFUgcHJvY2VzcyBzaWRl
IGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZXMgYWJvdXQgR3JhcGhpY3ND
b250ZXh0R0wgY2FsbHMKKy8vIGFuZCBpc3N1ZXMgcmVhbCBHcmFwaGljc0NvbnRleHRHTCBjYWxs
cyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCisvLyBUaGUgaW1wbGVtZW50YXRpb24g
aXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdw
dXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBmaW5hbAorICAgIDogcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgorICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50CisgICAg
LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkgZmluYWw7CisKKyAgICBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3Zl
cnJpZGVzLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKwor
ICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlk
Q29tcG9zaXRlKCkgZmluYWw7CisgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCkgZmluYWw7Cisg
ICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0
Q2hhbmdlZE5vdGlmaWNhdGlvbigpIGZpbmFsOworCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgorICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkg
ZmluYWw7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgZmluYWw7CisgICAgdm9pZCogZGV0YWNo
Q2xpZW50KCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2
b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQm
Jik+JiYpOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJik7CisgICAg
dm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cisg
ICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyOworICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgbV9k
aXNwbGF5QnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYTcxNTI0
ZDQwODE5YmEwMzEwY2I0MjAxMzYwNzU2Njg3ODY4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwyOTQgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJl
Rm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3Vz
CisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxh
eSgpIC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdl
ZCgpCisKKyAgICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHZvaWQgU3lu
dGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50
aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRl
cih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgdm9pZCBCaW5kQXR0cmli
TG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyBuYW1lKQorICAg
IHZvaWQgQmluZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9p
ZCBCaW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZv
aWQgQmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAg
dm9pZCBCaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9p
ZCBCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFs
cGhhKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgQmxl
bmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkK
KyAgICB2b2lkIEJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQor
ICAgIHZvaWQgQmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RS
R0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB2b2lkIENoZWNr
RnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHZvaWQg
Q2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBo
YSkKKyAgICB2b2lkIENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgdm9pZCBDbGVhclN0ZW5j
aWwoaW50MzJfdCBzKQorICAgIHZvaWQgQ29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBi
b29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgdm9pZCBDb21waWxlU2hhZGVyKHVpbnQzMl90IGFy
ZzApCisgICAgdm9pZCBDb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHZvaWQgQ29weVRl
eFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZz
ZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlRnJhbWVidWZmZXIoKSAtPiAo
dWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVQcm9ncmFt
KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRl
UmVuZGVyYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQ3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRleHR1cmUoKSAtPiAodWludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDdWxsRmFjZSh1aW50MzJfdCBtb2RlKQor
ICAgIHZvaWQgRGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVGcmFt
ZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBh
cmcwKQorICAgIHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBEZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVRleHR1cmUodWlu
dDMyX3QgYXJnMCkKKyAgICB2b2lkIERlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHZvaWQg
RGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB2b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZs
b2F0IHpGYXIpCisgICAgdm9pZCBEZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3Qg
YXJnMSkKKyAgICB2b2lkIERpc2FibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRHJhd0FycmF5cyh1aW50
MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHZvaWQgRHJhd0Vs
ZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCkKKyAgICB2b2lkIEVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIEZpbmlzaCgpCisg
ICAgdm9pZCBGbHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgdWludDMyX3QgYXJnMykKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJf
dCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90IG1vZGUp
CisgICAgdm9pZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRB
Y3RpdmVBdHRyaWIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJl
dHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1
aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBdHRyaWJM
b2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0U3RyaW5nKHVpbnQzMl90IG5hbWUpIC0+IChTdHJpbmcgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2
NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZh
bHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0aSh1aW50MzJfdCBw
bmFtZSwgdWludDMyX3QgaW5kZXgpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0Qm9vbGVh
bnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZl
cmVuY2U8Ym9vbD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50
LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3Qg
cG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRl
clR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3QsIDI+IHJhbmdlLCBHQ0dMaW50IHByZWNpc2lvbikgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBHZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVp
bnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4g
KElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
R2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90
IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3Qg
bG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVp
bnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgcG5hbWUpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgSXNCdWZm
ZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBJc0VuYWJsZWQodWludDMyX3QgY2FwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIElzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1Byb2dyYW0odWludDMyX3QgYXJnMCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZl
cih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIElzU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgSXNUZXh0dXJlKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgTGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgdm9p
ZCBMaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgUGl4ZWxTdG9yZWkodWludDMy
X3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZh
Y3RvciwgZmxvYXQgdW5pdHMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0
KQorICAgIHZvaWQgU2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3Ry
aW5nIGFyZzEpCisgICAgdm9pZCBTdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJl
ZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3Qg
ZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9p
ZCBTdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0
ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQz
Ml90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFN0ZW5j
aWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWls
LCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBV
bmlmb3JtMWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB2b2lkIFVuaWZvcm0xZnYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lk
IFVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgdm9pZCBVbmlmb3Jt
MWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAg
ICB2b2lkIFVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAg
IHZvaWQgVW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiB2KQorICAgIHZvaWQgVW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwg
aW50MzJfdCB5KQorICAgIHZvaWQgVW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2Nh
dGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0zZnYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVu
aWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6
KQorICAgIHZvaWQgVW5pZm9ybTNpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFVuaWZvcm00ZnYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVu
aWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6
LCBpbnQzMl90IHcpCisgICAgdm9pZCBVbmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50
MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBV
bmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVzZVByb2dyYW0odWludDMyX3Qg
YXJnMCkKKyAgICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQg
VmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZh
bHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBm
bG9hdCB5KQorICAgIHZvaWQgVmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCAyPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1
aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYjNmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4g
dmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWlu
dDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2
b2lkIFZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWlu
dDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHZvaWQgVmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0
LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlckRhdGExKHVp
bnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhLCB1aW50MzJf
dCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRf
dCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIFJl
YWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNpemUp
IC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB2b2lkIFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlMkQxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJE
MCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJf
dCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAg
ICB2b2lkIFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMy
X3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9p
ZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJf
dCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3
RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9p
ZCBDcmVhdGVWZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJ
c1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBD
b3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdl
dCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFy
ZzQpCisgICAgdm9pZCBHZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qg
b2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNy
Y1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90
IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50
MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVM
YXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1
cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgdm9pZCBJbnZhbGlkYXRlRnJh
bWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBh
dHRhY2htZW50cykKKyAgICB2b2lkIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90
IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBS
ZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3Rv
cmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3Jh
Z2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAg
dm9pZCBUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRl
cHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlM0QxKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVy
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMy
X3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBU
ZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlM0QwKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJf
dCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lk
IENvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJf
dCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwg
dWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3Qg
ZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIEdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5n
IG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5p
Zm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB2b2lkIFVuaWZvcm0y
dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHZvaWQg
VW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVp
bnQzMl90IHYyKQorICAgIHZvaWQgVW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJf
dCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB2b2lkIFVu
aWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTN1aXYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVu
aWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBV
bmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYo
aW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9p
ZCBVbmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgz
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwg
ND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB2b2lkIFZl
cnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBp
bmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWlu
dDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIENsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVz
KQorICAgIHZvaWQgQ2xlYXJCdWZmZXJ1aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdi
dWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENs
ZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZmkodWludDMy
X3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5j
aWwpCisgICAgdm9pZCBDcmVhdGVRdWVyeSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQg
SXNRdWVyeSh1aW50MzJfdCBxdWVyeSkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBCZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisg
ICAgdm9pZCBFbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50
MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgQ3JlYXRlU2FtcGxlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIERlbGV0ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIElzU2Ft
cGxlcih1aW50MzJfdCBzYW1wbGVyKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEJpbmRTYW1wbGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisg
ICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFt
ZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNh
bXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIEdldFNhbXBsZXJQ
YXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50
MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBGZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJf
dCBmbGFncykgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SXNTeW5jKHVpbnQ2NF90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgRGVsZXRlU3luYyh1aW50NjRfdCBhcmcwKQorICAgIHZvaWQgQ2xpZW50V2FpdFN5
bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2
NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgdm9pZCBHZXRT
eW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHZvaWQgSXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50
MzJfdCBpZCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5k
VHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB2b2lk
IEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2b2lk
IEVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1
ZmZlck1vZGUpCisgICAgdm9pZCBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVk
YmFjaygpCisgICAgdm9pZCBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBCaW5k
QnVmZmVyQmFzZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZm
ZXIpCisgICAgdm9pZCBCaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBp
bmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisg
ICAgdm9pZCBHZXRVbmlmb3JtSW5kaWNlcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5n
PiB1bmlmb3JtTmFtZXMpIC0+IChWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9y
PHVpbnQzMl90PiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUpIC0+IChWZWN0b3I8aW50
MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJ
bmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJs
b2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkgLT4g
KFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0Jp
bmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQz
Ml90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3Qg
cG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+IHBhcmFtcykgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRG
cmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3Jj
WDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3Qg
ZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAg
ICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFy
cmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90
IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZl
cnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZv
aWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUG9wR3JvdXBNYXJr
ZXJFWFQoKQorICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4gYnVmcykKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBt
b2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAg
ICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQp
CisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQz
Ml90IGRpdmlzb3IpCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0
ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmZmU4YzFmYzdhZmExNzJm
MWJiOWM3MzQyNjc1YzVkZmU2ZTE3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5l
cmF0ZWQuaApAQCAtMCwwICsxLDExODMgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxl
IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisgICAg
dm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOworICAgIH0KKyAgICB2b2lkIHN5bnRoZXNp
emVHTEVycm9yKHVpbnQzMl90IGVycm9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAgfQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhl
dGljRXJyb3JMaXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBhY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hhZGVy
KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgfQorICAgIHZvaWQgYmlu
ZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcmJiBu
YW1lKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJnMCwg
aW5kZXgsIG5hbWUpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRh
cmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1l
YnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4
dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRD
b2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBo
YSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2b2lk
IGJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxw
aGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2Rl
UkdCLCBtb2RlQWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBzZmFj
dG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1
bmMoc2ZhY3RvciwgZGZhY3Rvcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUo
dWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50
MzJfdCBkc3RBbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJh
dGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZvaWQg
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNrKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9pZCBj
bGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCBj
bGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0
ZW5jaWwocyk7CisgICAgfQorICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVu
LCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbG9y
TWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4oYWxwaGEpKTsKKyAgICB9CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVpbnQz
Ml90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7
CisgICAgfQorICAgIHZvaWQgY29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisgICAgfQorICAgIHZvaWQgY29weVRl
eFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZz
ZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdM
T2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Y3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVGcmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRm
b3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFkZXIo
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgY3JlYXRlVGV4dHVyZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0
dXJlKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBjdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jdWxsRmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMyX3Qg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOworICAg
IH0KKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lk
IGRlbGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZGVsZXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIo
dWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVm
ZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAg
IHZvaWQgZGVsZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kZWxldGVUZXh0dXJlKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1aW50
MzJfdCBmdW5jKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7Cisg
ICAgfQorICAgIHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVwdGhNYXNrKHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAgfQor
ICAgIHZvaWQgZGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQg
ZGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBk
aXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShj
YXApOworICAgIH0KKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBp
bmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMy
X3QgZmlyc3QsIGludDMyX3QgY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdB
cnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHMo
dWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQs
IHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lk
IGVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShj
YXApOworICAgIH0KKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGlu
ZGV4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShp
bmRleCk7CisgICAgfQorICAgIHZvaWQgZmluaXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+ZmluaXNoKCk7CisgICAgfQorICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5mbHVzaCgpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVm
ZmVydGFyZ2V0LCB1aW50MzJfdCBhcmczKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgYXJnMyk7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90
IGFyZzMsIGludDMyX3QgbGV2ZWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7
CisgICAgfQorICAgIHZvaWQgZnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmZyb250RmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0ZU1p
cG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdlbmVyYXRl
TWlwbWFwKHRhcmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQzMl90
IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFy
ZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcy
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1
aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVm
ZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmcodWlu
dDMyX3QgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nh
c3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYo
cG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVl
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1
aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0
b3I8R0NHTGludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIGdldEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2
NCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dEludGVnZXI2NChwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGludDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1
aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50
NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyNjRpKHBuYW1lLCBpbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19j
YXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbWko
dWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJv
Z3JhbWkocHJvZ3JhbSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2
NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNl
PGJvb2w+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dM
Ym9vbGVhbiwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8
Ym9vbCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdl
dEVycm9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFcnJvcigpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1
aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzApOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFy
Z2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoYXJnMCwgcG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xv
Zyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwg
dWludDMyX3QgcHJlY2lzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3QsIDI+LCBpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIHN0ZDo6YXJyYXk8R0NHTGludCwgMj4gcmFuZ2UgeyB9OworICAgICAgICBH
Q0dMaW50IHByZWNpc2lvbiA9IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24p
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Qs
IDI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNpemUo
KSksIHByZWNpc2lvbik7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQzMl90
IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
Z2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9n
cmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0
PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5k
YXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYodWlu
dDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0
YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQz
Ml90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0
VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2
YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1
aW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAg
ICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcm
JiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTHNpemVpcHRyIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBt
b2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAg
fQorICAgIHZvaWQgaXNCdWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFu
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNC
dWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNhcCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+aXNFbmFibGVkKGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNG
cmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVy
KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5pc1Byb2dyYW0oYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNSZW5k
ZXJidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIo
YXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+aXNTaGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJl
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAg
ICB9CisgICAgdm9pZCBsaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+bGluZVdpZHRoKGFyZzApOworICAgIH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQz
Ml90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzApOwor
ICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFt
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOwor
ICAgIH0KKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsK
KyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdl
KGZsb2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Ft
cGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsKKyAg
ICB9CisgICAgdm9pZCBzY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMyX3Qg
YXJnMCwgU3RyaW5nJiYgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291
cmNlKGFyZzAsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1
bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxG
dW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVp
bnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJh
dGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFzayh1
aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayhtYXNr
KTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVp
bnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJh
dGUoZmFjZSwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZhaWws
IHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+c3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNp
bE9wU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWws
IHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBh
cmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFt
ZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0p
OworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFm
KGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0xZihsb2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0xaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZs
b2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2Nh
dGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlv
biwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgp
KSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlv
biwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGlu
dDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2ko
bG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHosIGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlv
biwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9j
YXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm1NYXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2Up
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5k
YXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2
KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFs
dWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2
b2lkIHZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT52YWxpZGF0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
MWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYjFmKGluZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYo
dWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dM
U3BhbjwxPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkp
KSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0
IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGlu
ZGV4LCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4
LCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYo
dWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dM
U3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkp
KSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwg
aW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3Ry
aWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihu
b3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAg
ICB9CisgICAgdm9pZCB2aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgs
IHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90
IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFy
ZzEpLCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2UpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpLCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQ2NF90IG9mZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCByZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRh
dGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFy
LCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9j
b250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRh
dGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCByZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMy
X3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1h
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZv
aWQgdGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxz
LmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
MSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJf
dCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNv
bXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVp
bnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VT
aXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBk
cmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3Qg
Y291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3
QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9Cisg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50
LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90
IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3Io
aW5kZXgsIGRpdmlzb3IpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhB
cnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0
ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFy
ZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAg
IHZvaWQgYmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJpbmRWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVy
U3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0
X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRl
VGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8
R0NHTGludHB0cj4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWlu
dDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRh
dGFTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIGRhdGEpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBi
bGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNY
MSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBk
c3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNY
MSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAg
IH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCBsYXllcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0KKyAg
ICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQz
Ml90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cywg
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRz
LmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAg
IH0KKyAgICB2b2lkIHJlYWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5yZWFkQnVmZmVyKHNyYyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQs
IHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9p
ZCB0ZXhTdG9yYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT50ZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9y
bWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+
KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1h
Z2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9y
bWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJf
dCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1
YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJf
dCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwg
dWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1
YkltYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQs
IGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50
MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdl
M0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBi
b3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGlt
YWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1h
dCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQs
IGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJh
Z0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpKGlu
dDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtMXVpKGxvY2F0aW9uLCB2MCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQz
Ml90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVp
bnQzMl90IHYyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9u
LCB2MCwgdjEsIHYyKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9jYXRp
b24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYy
LCB2Myk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihs
b2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aXYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNw
b3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJh
bnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgyeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGlu
dDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3Qg
eSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRl
eEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0
cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiYm
IHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRl
eCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVl
cy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBp
bmRleCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwg
dyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAg
ICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUs
IHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBl
LCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIGRyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50
MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQs
IGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAg
IH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYg
YnVmcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGlu
dDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVlcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZm
ZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMu
ZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2
KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZm
ZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgY2xlYXJCdWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBk
ZXB0aCwgc3RlbmNpbCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAgfQor
ICAgIHZvaWQgaXNRdWVyeSh1aW50MzJfdCBxdWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNRdWVy
eShxdWVyeSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRh
cmdldCwgcXVlcnkpOworICAgIH0KKyAgICB2b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9CisgICAg
dm9pZCBnZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1aW50
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5jcmVhdGVTYW1wbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90IHNh
bXBsZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7
CisgICAgfQorICAgIHZvaWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmlzU2FtcGxlcihzYW1wbGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rh
dGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxl
cih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVy
UGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJh
bSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwg
cG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50MzJf
dCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAg
fQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMy
X3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwg
cG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3Qg
cG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgZmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTHN5bmMgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5mZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0
cl90PihyZXR1cm5WYWx1ZSkpKTsKKyAgICB9CisgICAgdm9pZCBpc1N5bmModWludDY0X3QgYXJn
MCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0
YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5
bmModWludDY0X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3luYyhy
ZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsK
KyAgICB9CisgICAgdm9pZCBjbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBm
bGFncywgdWludDY0X3QgdGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRTeW5j
KHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSks
IGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMdWludDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1aW50
NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT53YWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0aW1l
b3V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3Qg
cG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3lu
Yz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNmb3Jt
RmVlZGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2soKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgfQorICAgIHZv
aWQgaXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFu
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNU
cmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19j
YXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZl
ZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAgdm9p
ZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7
CisgICAgfQorICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2
YXJ5aW5ncywgdWludDMyX3QgYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7
CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7
IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dy
YW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcmcy
KSk7CisgICAgfQorICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9p
ZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJhc2Uo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIp
OworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGluZGV4LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJn
NCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5k
ZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8
R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGljZXMo
dWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1
bmlmb3JtTmFtZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3Jh
bSwgVmVjdG9yPHVpbnQzMl90PiYmIHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
LCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgo
dWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgdW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlm
b3JtQmxvY2tJbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRp
bmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90
IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1C
bG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRp
bmcpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0
X3QgcGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMaW50LCA0PiBwYXJhbXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBh
cmFtcy5kYXRhKCkpLCBwYXJhbXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gw
LCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRz
dFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJf
dCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5ibGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZ
MSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAg
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZl
cnRleEFycmF5T0VTKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5j
cmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRl
eEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMy
X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlP
RVMoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVy
dGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2VydEV2
ZW50TWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9p
ZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9Cisg
ICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtlckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdC
dWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50
MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3Vu
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAg
IHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBj
b3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4o
b2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgs
IGRpdmlzb3IpOworICAgIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21hYy9HUFVQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQ
cm9jZXNzTWFjLm1tCmluZGV4IGI3YmI2M2IyOWFkODAyMTcyZGYyN2ExMjg5NWJiMTk5OGZhNGI2
YjAuLjI0YzQzN2NhYWU3ZjhmOWE5YWZmOTI3MDNlZmNmOWRhMDMxZTRjNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KQEAgLTMyLDggKzMyLDgg
QEAKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQg
IldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Cisj
aW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNl
c1NQSS5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsOSArNDQs
MTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB2b2lkIEdQVVByb2Nlc3M6OmluaXRpYWxp
emVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
KQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIDAK
ICAgICAvLyBIYXZpbmcgYSB3aW5kb3cgc2VydmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNz
IHdvdWxkIHJlc3VsdCBpbiBzcGluIGxvZ3MgKDxyZGFyOi8vcHJvYmxlbS8xMzIzOTExOT4pLgot
ICAgIE9TU3RhdHVzIGVycm9yID0gU2V0QXBwbGljYXRpb25Jc0RhZW1vbih0cnVlKTsKLSAgICBB
U1NFUlRfVU5VU0VEKGVycm9yLCBlcnJvciA9PSBub0Vycik7CisgICAgYXV0byByZXR2YWwgPSBD
R1NTZXREZW55V2luZG93U2VydmVyQ29ubmVjdGlvbnModHJ1ZSk7CisgICAgUkVMRUFTRV9BU1NF
UlQocmV0dmFsID09IGtDR0Vycm9yU3VjY2Vzcyk7CisgICAgQ0dTU2h1dGRvd25TZXJ2ZXJDb25u
ZWN0aW9ucygpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2Vi
S2l0LkdQVVByb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5h
cHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgppbmRleCBkYjA2ZTUzNGY3ZjUxZDJlYmQwMzgy
NWY1ODI0NWY4NDk2ZjhiMTc5Li5lZDEwMGIzNmVkNmY0NmQ0YWFmNjM1NDQ3Nzg4MmFiNzkzYTEx
YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgpAQCAtMjA3LDYgKzIwNyw3IEBACiAg
ICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkFBUEwsKERpc3BsYXlQaXBlfE9wZW5DTGRpc2Fi
bGVkfElPR3JhcGhpY3NfTEVSKHxfUmVnVGFnXzF8X1JlZ1RhZ18wfF9CdXN5XzIpfGFsaWFzLXBv
bGljeXxib290LWRpc3BsYXl8ZGlzcGxheS1hbGlhc3xtdXgtc3dpdGNoLXN0YXRlfG5kcnYtZGV2
fHByaW1hcnktZGlzcGxheXxzbG90LW5hbWUpIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXgg
IyJeQVRZLChjYml0c3xmYl8obGluZWJ5dGVzfG9mZnNldHxzaXplKXxpbnRyZXYpIikKICAgICAo
aW9raXQtcHJvcGVydHkgIkFUWSxEZXZpY2VOYW1lIikgOzsgTmVlZGVkIGJ5IE1ldGFsIGNvbXBp
bGVycworICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEVGSURpc3BsYXkiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiQVRZLEZhbWlseU5hbWUiKSA7OyBEaXR0bwogICAgIChpb2tpdC1wcm9wZXJ0eSAi
QVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkJhY2tsaWdodEhhbmRsZSIpCkBA
IC0yMTcsNiArMjE4LDkgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIkNhcHNMb2NrRGVsYXkiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiQ2FzZVNlbnNpdGl2ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJDb25maWdTdGF0ZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExhbmVzIikKKyAgICAoaW9r
aXQtcHJvcGVydHkgIkRQTGlua0JpdCIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtSYXRl
IikKICAgICAoaW9raXQtcHJvcGVydHkgIkRlc2NyaXB0aW9uIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIkRldmVsb3BtZW50IikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeRGV2aWNlKCBD
aGFyYWN0ZXJpc3RpY3N8RXFJRCkiKQpAQCAtMjI5LDEwICsyMzMsMTcgQEAKICAgICAoaW9raXQt
cHJvcGVydHkgIkZhbWlseSBJRCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JjZVN1cHBvcnRl
ZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JtYXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkg
IkZyYW1lYnVmZmVyRW5hYmxlZCIpCisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlclN0
YXJ0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVQ29uZmlndXJhdGlvblZhcmlhYmxlIikK
KyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURDQ0Rpc3BsYXlhYmxlIikKKyAgICAoaW9raXQtcHJv
cGVydHkgIkdQVURlYnVnTnVsbENsaWVudE1hc2siKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR3B1
RGVidWdQb2xpY3kiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVUmF3Q291bnRlckJ1bmRsZU5h
bWUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVUmF3Q291bnRlclBsdWdpbkNsYXNzTmFtZSIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJIRVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIkhJRFBvaW50ZXJBY2NlbGVyYXRpb25UeXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkh3
Q3R4Q2FjaGVVcGRhdGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0FjY2VsKERp
c3BsYXlQaXBlQ2FwYWJpbGl0aWVzfEluZGV4fFR5cGVzfFJldmlzaW9uKSIpCiAgICAgKGlva2l0
LXByb3BlcnR5LXJlZ2V4ICMiXklPKENsYXNzfE1hdGNoQ2F0ZWdvcnl8TmFtZU1hdGNoKSIpCiAg
ICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPQXVkaW9Db250cm9sKENoYW5uZWxJRHxJRHxT
dWJUeXBlfFVzYWdlfFZhbHVlKSIpCkBAIC0yODIsNiArMjkzLDggQEAKICAgICAoaW9raXQtcHJv
cGVydHkgIklPUGFyZW50TWF0Y2giKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT1BD
SSgoQ2xhc3N8UHJpbWFyeXxQcm9wZXJ0eXwpTWF0Y2h8RXhwcmVzcyhDYXBhYmlsaXRpZXN8TGlu
ayhTdGF0dXN8Q2FwYWJpbGl0aWVzKSl8TVNJTW9kZXxSZXNvdXJjZWR8VHVubmVsbGVkKSIpCiAg
ICAgKGlva2l0LXByb3BlcnR5ICJJT1BNSXNQb3dlck1hbmFnZWQiKQorICAgIChpb2tpdC1wcm9w
ZXJ0eSAiSU9QZXJzb25hbGl0eVB1Ymxpc2hlciIpCisKICAgICAoaW9raXQtcHJvcGVydHktcmVn
ZXggIyJeSU9QbGF0Zm9ybShTZXJpYWxOdW1iZXJ8VVVJRCkiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiSU9Qb3dlck1hbmFnZW1lbnQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qcm9iZVNjb3Jl
IikKQEAgLTMxNyw2ICszMzAsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiUHJvdG9jb2wgQ2hh
cmFjdGVyaXN0aWNzIikKICAgICAoaW9raXQtcHJvcGVydHkgIlJlbW92YWJsZSIpCiAgICAgKGlv
a2l0LXByb3BlcnR5LXJlZ2V4ICMiXlJlc2V0T24oTG9ja3xVbmxvY2spTXMiKQorICAgIChpb2tp
dC1wcm9wZXJ0eSAiU1dJUF9wcm9wZXJ0aWVzIikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhZmVF
amVjdFJlcXVlc3RlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTYW1wbGVSYXRlcyIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJTZXJpYWwgTnVtYmVyIikKQEAgLTMzOCw2ICszNTIsNyBAQAogICAg
IChpb2tpdC1wcm9wZXJ0eSAiYXR0YWNoZWQtZ3B1LWNvbnRyb2wtcGF0aCIpCiAgICAgKGlva2l0
LXByb3BlcnR5LXJlZ2V4ICMiXmF1ZGlvLShjb2RlYy1pbmZvfGRldmljZS1tdmFsdWV8ZGV2aWNl
LW52YWx1ZXxzZWxlY3RvcikiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXYtc2lnbmFsLXR5cGUi
KQorICAgIChpb2tpdC1wcm9wZXJ0eSAiYmFja2xpZ2h0LVBXTS1mcmVxIikKICAgICAoaW9raXQt
cHJvcGVydHkgImJjZFZlcnNpb24iKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oYm9h
cmR8ZGV2aWNlfHJldmlzaW9ufHN1YnN5c3RlbXx2ZW5kb3IpLWlkIikKICAgICAoaW9raXQtcHJv
cGVydHkgImJvb3QtZ2FtbWEtcmVzdG9yZWQiKQpAQCAtMzUwLDYgKzM2NSwxMSBAQAogICAgIChp
b2tpdC1wcm9wZXJ0eSAiY29ubmVjdG9yLXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdl
eCAjIl4oZGV2aWNlfHJldmlzaW9ufHN1YnN5c3RlbS12ZW5kb3J8dG91Y2gtc2l6ZSktaWQiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiZGV2aWNlX3R5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAi
ZGlzcGxheS1icGMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1jb25uZWN0LWZsYWdz
IikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktbGluay1jb21wb25lbnQtYml0cyIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXBpeGVsLWNvbXBvbmVudC1iaXRzIikKKyAgICAo
aW9raXQtcHJvcGVydHkgImRpc3BsYXktdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJkcG0i
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZXJyb3JkYiIpIDs7IE5lZWRlZCBmb3IgT3BlbkdMIG9u
IG9sZGVyIGhhcmR3YXJlCiAgICAgKGlva2l0LXByb3BlcnR5ICJmaWxldmF1bHQtaW1hZ2UiKSA7
OyBOZWVkZWQgYnkgTGF1bmNoU2VydmljZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggNmE1YzY3MjVjYWE5YmRi
ODY3YWI4NmI4YzU3ZjM2ZGUyYzg5NmRjZi4uYmU3ZjUyMjBiZTliODVmODY4YTVmODM3ZWZlZDY2
ZGRmOTVmMjk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTM5LDEwICszOSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlTGVn
YWN5Q0RNUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggNDdmNWQyZjI3MGZh
NWRlNGZhZGUxNTE0NDQyMTExNzk0ZWQzNmQyOC4uMmM1ZTdkZTdkMmU3NTY5NjBhM2YzZWM4NzZj
OGI4MjVjNmU0NWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBhOThjZmE0YzlmODAyMzE5MDRmOGVmMGVh
YTkzNjIyOWFmYTk3NTk4Li5mZWM2NWNmNjJiNjY3NGI4MzAwYzUwY2Q0MzM0MTVlOTE1MTE0NDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAppbmRleCBkODliODAzZjZhYmY0MWM4
ZTllZGRlNDE0Mjc2OTMyODI2ZDFiMzM4Li4wODFlYjMxODBkMDIxNjRiNWFhM2Q1NDgwNmY3MmM3
ZWRjMGNiMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaApAQCAtMjcsMTUgKzI3LDE2IEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvUG9saWN5Q2hlY2tlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlv
bjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCA2YmZiZmFmYjIwNDQ3ODMwZDczMGMzOGM1NWQ5
MTYwMjJjMjNkMzE2Li4wNmUzMDllNGQ1N2VhMDQ3ZjVlZDgyOTAyNThiMTljYmNkYTYxOTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVNvdXJjZVByb3h5LmgKQEAgLTM4LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAppbmRleCAyNDVjZjQwZGZjNmZj
NzI0MTc0OTljOTk2ZWVhOTVmMGEzYThkNjlhLi44NjgyY2Q3OTVhNWY1NDRhYmI3OGU3YzFiODU4
N2I5Njg4M2Y5NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IDM5MGMwY2UxYzI3YjYwOGRjOTdhYWZhNTE4NjM2MTg4
MGMzYWY0ZDMuLmMzMzc4MzMzYzAyNjY2ZGE2MWFiYWM2NDk0NzAyMTIxZGI1ZTg2YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oCkBAIC0yNyw5ICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisK
ICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBA
IC0zOCw3ICs0MCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFz
cyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5oCmluZGV4IDM2MDMxMGI3ZDEyMWQyODZkOGQxNjFmMTgzYWJkMGU3NDViODM1
MzMuLjg0M2JiMDZmN2I1NmM2ZTNjZmJlZTc5YTdlNDI4MWVmZWU4ZjlhNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
LmgKQEAgLTI4LDE0ICsyOCwxNSBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggZjhhYmMxZjQwNWZjMTQ2OTQ3NWI0
ZDkwYmFkM2Q1M2NhMGY4MDE0ZS4uNjFjNDcwOGFlOTZkYmNhYTU2OTgwOWVlMTk5NWJlODE2YTkx
ZmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VC
UlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW1wb3J0
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRD
Q29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCA3ODhjNWYwMGMwMmY0ZjE0OGZl
ZWNjZDM4ZDEwNjgxOGIwZDdlOTYxLi4zYWI0ZTRiMWNmMWMxNDEyMzBjMTNlNDU3NmM1ZWQ2ZTZl
ZmMyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAgLTM2LDcgKzM3LDYgQEAKIAog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29j
b2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggN2E2MzM2MzQ3YzAw
N2U5N2I3M2I1NDM3NzQ5MTY4MzhkNjQwMzdkYS4uMWFhNTNjYzJmYjc3YmFmOWUzMjY1MDcyMTA4
MDlmZDc2Y2ZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
dXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2Ev
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTI2LDcgKzI2LDYgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgi
CiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9y
dCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZjZlZDgxMWY1MzQyZmU0ODU1NTE3NmY4OWQ1
MTQ1NzU2MmM2NjU4NS4uMGJjZDU2NzNjOTM0NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJjMjczMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgpAQCAt
MzksMTAgKzQwLDYgQEAgT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uOwogT0JK
Q19DTEFTUyBXS0N1c3RvbVByb3RvY29sOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKLX0gLy8gbmFtZXNwYWNlIElQQwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMTEy
LDQgKzEwOSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
CmluZGV4IGRkYmU0ZWVkZDQ0MWRmODdjNTVhZDMzMGYwNDJjY2RjZmFkZmI5MGIuLjY1MWZmMjU0
ZjkwNWMxNmE5MGNiNDgyYzk3NzNkNGFjNzQyOTRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTI5LDcgKzI5LDYg
QEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVz
c2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZC5oCmluZGV4IDM4YWYzNTA4MDc0NjQyOTNiOTVmZmFmMDU5ZmRlYzM2OTAxNzcyNzQu
LjkzZjAzYTgyNTVmMWFlNzE3MzgzYzAwMjkwYTI0ZjkxY2E3YzY1ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRNb25pdG9yLmgiCkBAIC00NCwxMCArNDUsNiBAQCBPQkpDX0NMQVNTIE5T
UHJvZ3Jlc3M7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKICNlbmRpZgog
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMz
Y2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4uNzI2ZGQ5OTBiYWZkNDM5NGI1YWZjMDMyYTFjZjIwZjE4
NDljNDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAxNjVmMWM3MjY3OGZhNTAu
Ljk4MGEwNmY3ODM5ZGJkNWU5ZjlkNTA0NTQwOWEzM2Q3N2IxYzAzODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1h
cC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgpAQCAtNDksNyArNTAsNiBAQCBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAK
aW5kZXggNDQ5YjEzZDhlMDdiMmNkMDQyYzRiYTM2MzZhYjc5M2QzN2IxYzNmNC4uYzc3ODg4MTFm
MDMyZDU4ZjhiNTI3NzM2ZTFkMjI3ODQxMGY5MTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2LDcgKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5l
bC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNs
dWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDMxOTY0MTkwZDE0MWQ1NDlkYTBiYWYy
ZGM4YmYyOTdiNGU1ODFlODkuLjA0MzRiZjg4MDlhN2ViM2VjYzE4ZThmNjUwY2MwMjc4YWU2ZWI1
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KQEAgLTQwLDcg
KzQxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBD
b25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNWI0ODljYzUzOGY3YzA3MTUxMDEwNmM1OGY1
YzA5NGVjOWE4ZTFiOC4uNDhjODgzYmZjMGZjN2Q1MDFjOGE0YTRlNzY4NGNjYzMzZTM4YzE0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5oCmluZGV4IDUyZWMzOTI2OTAyMThlZGU2NjhkNTVlNjM4ZDhl
MTc1MDJmZDZlZTUuLjczNDI5YTAyNzkwNmI0MTZhMzhjMGM2YjM5NDZhMGRiOWZiMjA2ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CkBAIC0z
Nyw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBE
ZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkMzNjYmZmMTA4OWNjMTA1
ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi5kMzdkNzgwNjk4M2JiYTU0N2NhMGY5MjM1ZWI0YmY2
YjczMTU2NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgpAQCAtNDMsNyArNDQsNiBAQCBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRU
YXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAppbmRl
eCBkYjU3OTVkZDIxN2Y0NWFkNWY2N2UzMGI3OTFmOTJlMjc2YzAyOTg2Li45NjFlNDY0NTliZTc3
MTc3ZTI2MDVlN2Q4NjUyYWRhODAyMDk3YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlNvY2tldFRhc2suaApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgIldlYlNv
Y2tldFRhc2tTb3VwLmgiCiAjZWxzZQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7Ci19CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAppbmRleCBkYWM2
OTM1MDdlYjNlZmNlYTZkMTA5NDgwMWJjMDFiMzZmZTI2MzlkLi5lNjgyNmU0N2U4Mzk1OTQwMjhh
ZjhmNGFlZDIzOTJiNGIwNWQyZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKQEAgLTI3LDE1ICsyNywxMiBA
QAogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s7CiAKLW5hbWVz
cGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFz
a0NvY29hLm1tCmluZGV4IDg1NTM0ODc0NDA0Y2UyYmFhNDRhZTY1NjU0N2QzNzIyNTMzMmVhYjgu
LjkwYmM0MDliZmZiNzBhMGVlOWU3MzU4YjM4Njc1OTdkMjlmMjRlMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29h
Lm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQp
CiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29j
b2EuaCIKICNpbXBvcnQgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKaW5kZXggNDVmYzY2OWQ3NjZhNzYxYzVk
NzczZGM5NWYwNTQxYTM4ZTM2ZjhlMy4uYTNlNzAxNGI1ZDhlYzA5NzM4ZmZhN2Q1NjY0NTQ1MDEw
ZjA1MzQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIKIAotI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1Nv
dXAuaAppbmRleCBlNDIxYjllMWM3MTMxODQzNGY2NDg3ZjVmY2I1YTZhODdiZDczOTE5Li4wODg5
MjM5NTlmZTQ2MGZmMmJiYTRjOGMwODM5OTgwNjU3YmYzNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAtMjUs
MTQgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1NvY2tl
dENoYW5uZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
CmluZGV4IGUwMGEwY2NkZmE1ODc1YzAyOGM1MDUyMzExNDE3MjhlZTk1YjQzOTIuLmUzOGJjMWM2
MGFmNmRjZjAzNjk2NWFhNzhhYWRiZDZkOGQ0YjYyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgog
I2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtNTMsNiArNTQsNDgg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIgewogICAg
IH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1
bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKKyAgICB1c2luZyBBcnJheVJl
ZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5
UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNl
LnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQorICAgIHN0YXRpYyBPcHRp
b25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsK
KyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VU
eXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVk
TGVuZ3RoUmVmZXJlbmNlKEV4dGVudCAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAg
IGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSks
IEV4dGVudCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50Pj4g
eworICAgIHVzaW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5
UmVmZXJlbmNlRHluYW1pY0V4dGVudD47CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCisgICAg
eworICAgICAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZl
cmVuY2Uuc2l6ZSgpKSk7CisgICAgICAgIGlmICghYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBh
cnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KKyAg
ICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7Cisg
ICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVm
ZXJlbmNlKHNpemUgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgICAgICBpZiAoIWRhdGEp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gQXJyYXlS
ZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHNpemUpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8VD4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uU2V0PFQ+JiBvcHRpb25TZXQpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2QzMmJiNDU3YTViODg1ZjNkNTY2ODdlNzlmMTVjM2EyNjcxYmU2NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKQEAgLTAsMCAr
MSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitpbmxpbmUgY29u
c3RleHByIHNpemVfdCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEV4
dGVudCA9IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4KK2NsYXNzIEFycmF5UmVmZXJlbmNl
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlPFQsIGFycmF5
UmVmZXJlbmNlRHluYW1pY0V4dGVudD4geworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkg
PSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNp
emUpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAg
eworICAgIH0KKworICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJy
YXlSZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAg
ICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQorICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6
ZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
bV9zaXplOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQor
ICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAg
IH0KKworICAgIFZlY3RvcjxUPiB2ZWN0b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9y
PFQ+IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7CisKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVCogbV9k
YXRhIHsgfTsKKyAgICBzaXplX3QgbV9zaXplIHsgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVuY2UgeworcHVibGljOgorICAg
IEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3Qg
VCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgeworICAg
ICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUgPT0gRXh0ZW50KTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKKyAgICAgICAgOiBtX2RhdGEodmVj
dG9yLmRhdGEoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2ZWN0b3Iuc2l6ZSgpID09IEV4dGVu
dCk7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFFeHRlbnQ7IH0KKworICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IEV4dGVudDsgfQorCisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBtX2RhdGE7CisgICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgewor
ICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICBpZiAoIWlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBFeHRlbnQpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBtX2RhdGEgeyB9OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorQXJyYXlSZWZlcmVu
Y2UoY29uc3QgV1RGOjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JikgLT4gQXJyYXlSZWZlcmVu
Y2U8VD47CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5oCmluZGV4IGVjM2QxNGFlOGYzZWMyNDcwNTQ3NjNjYWVlOTA5Y2MyYzg3NWY1ZDgu
LmJiZDdhYmNiNGNkYzYwNDM4MmIxMDY1ZTMzMjM4NDQ5YzZhYzU5NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTIyNywxMCArMjI3LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwogCiAg
ICAgdm9pZCBwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7Ci0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNS
ZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEID0gMCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+ID0geyB9KTsgLy8gVGhyZWFkLXNhZmUu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0p
OyAvLyBUaHJlYWQtc2FmZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9u
bHkuCisgICAgLy8gU3luYyBzZW5kZXJzIHNob3VsZCBjaGVjayB0aGUgU2VuZFN5bmNSZXN1bHQg
Zm9yIHRydWUvZmFsc2UgaW4gY2FzZSB0aGV5IG5lZWQgdG8ga25vdyBpZiB0aGUgcmVzdWx0IHdh
cyByZWFsbHkgcmVjZWl2ZWQuCisgICAgLy8gU3luYyBzZW5kZXJzIHNob3VsZCBob2xkIG9uIHRv
IHRoZSBTZW5kU3luY1Jlc3VsdCBpbiBjYXNlIHRoZXkgcmVmZXJlbmNlIHRoZSBjb250ZW50cyBv
ZiB0aGUgcmVwbHkgdmlhIERhdGFSZWZlcmVyZW5jZSAvIEFycmF5UmVmZXJlbmNlLgorICAgIHVz
aW5nIFNlbmRTeW5jUmVzdWx0ID0gc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3
YWl0Rm9yT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgCiAgICAgLy8g
VGhyZWFkLXNhZmUuCkBAIC0yNDksNyArMjUxLDcgQEAgcHVibGljOgogCiAgICAgLy8gTWFpbiB0
aHJlYWQgb25seS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJv
b2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVj
dElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6
aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7
IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8
VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50
NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC01NTEsNyArNTUzLDcg
QEAgdm9pZCBtb3ZlVHVwbGUoc3RkOjp0dXBsZTxBLi4uPiYmIGEsIHN0ZDo6dHVwbGU8Qi4uLj4m
IGIpCiAgICAgVHVwbGVNb3ZlcjxzaXplb2YuLi4oQSksIHN0ZDo6dHVwbGU8QS4uLj4sIHN0ZDo6
dHVwbGU8Qi4uLj4+Ojptb3ZlKFdURk1vdmUoYSksIGIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQordGVtcGxhdGU8dHlwZW5h
bWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVDo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVj
dGVkKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NzAsMTUg
KzU3MiwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmCiAgICAgLy8gTm93IHNlbmQgdGhlIG1l
c3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVwbHkuCiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVu
Y29kZXIpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIGlmICghcmVwbHlEZWNvZGVy
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBE
ZWNvZGUgdGhlIHJlcGx5LgogICAgIE9wdGlvbmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRz
PiByZXBseUFyZ3VtZW50czsKICAgICAqcmVwbHlEZWNvZGVyID4+IHJlcGx5QXJndW1lbnRzOwog
ICAgIGlmICghcmVwbHlBcmd1bWVudHMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICBtb3ZlVHVwbGUoV1RGTW92ZSgqcmVwbHlBcmd1bWVudHMpLCByZXBs
eSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHJlcGx5RGVjb2RlcjsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNl
dDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIy
NWZkYTdiZWQyZmU4YzQwNDliNTU4NzA3OWZkMWUxNjM1NGY0ZmEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGF0YVJlZmVyZW5jZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLQot
I2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSBJ
UEMgewotCi12b2lkIERhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAotewotICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoKnRoaXMpOwot
fQotCi1ib29sIERhdGFSZWZlcmVuY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhUmVm
ZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewotICAgIHJldHVybiBkZWNvZGVyLmRlY29kZVZhcmlh
YmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFSZWZlcmVuY2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaAppbmRleCAzNDUw
YzMxYjczZGRiNmFhNWVkY2UyYWY4MDAyOTg4N2M3OThlMjA1Li5kYmIzZDY5MjdmMzQxYzVhYTkz
ZmMxMDczY2IwNzU2ZTNjYmEzN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0
YVJlZmVyZW5jZS5oCkBAIC0yNSw1NCArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKIAogbmFtZXNw
YWNlIElQQyB7CiAKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotICAgIAotY2xhc3Mg
RGF0YVJlZmVyZW5jZSB7Ci1wdWJsaWM6Ci0gICAgRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsK
LQotICAgIERhdGFSZWZlcmVuY2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0g
ICAgICAgIDogbV9kYXRhKGRhdGEpCi0gICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgewotICAg
IH0KLQotICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBEYXRhUmVmZXJl
bmNlKGNvbnN0IFZlY3Rvcjx1aW50OF90LCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKLSAgICAg
ICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKLSAgICAgICAgLCBtX3NpemUodmVjdG9yLnNpemUo
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1f
c2l6ZTsgfQotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAg
ICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgCi0gICAgeyAKLSAgICAgICAgaWYgKGlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9kYXRh
OyAKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9k
YXRhLCBtX3NpemUpOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIERhdGFSZWZlcmVuY2UmKTsKLQotcHJpdmF0ZToKLSAgICBj
b25zdCB1aW50OF90KiBtX2RhdGEgeyBudWxscHRyIH07Ci0gICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKLX07Cit1c2luZyBEYXRhUmVmZXJlbmNlID0gQXJyYXlSZWZlcmVuY2U8dWludDhfdCwgYXJy
YXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDc4YTQ2MzhlYjczMDViZmQxOTEwODcw
NjhkMzBiY2RiOGRmZTgyYWUuLjJjYjc5YjczMWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRj
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xODYsMjAgKzE4
NiwxNSBAQCBib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIERlY29kZXI6OmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UpCitjb25zdCB1aW50OF90KiBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0
aFJlZmVyZW5jZShzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKIHsKLSAgICB1aW50NjRf
dCBzaXplOwotICAgIGlmICghZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCi0gICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKDEsIHNpemUpKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKGFsaWdubWVudCwgc2l6ZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IG1f
YnVmZmVyUG9zOwogICAgIG1fYnVmZmVyUG9zICs9IHNpemU7CiAKLSAgICBkYXRhUmVmZXJlbmNl
ID0gRGF0YVJlZmVyZW5jZShkYXRhLCBzaXplKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZGF0YTsKIH0KIAogYm9vbCBEZWNvZGVyOjpyZW1vdmVBdHRhY2htZW50KEF0dGFjaG1lbnQm
IGF0dGFjaG1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggYjcyZGQ4
YWNlMjc3M2RiMzU1OWUzNjZkZDk1MjRmMjM0MWU1NWUwNi4uMzQ0Y2U2ODgyZmM5MDk4NGIyZmE1
N2JmOWM0OGI5NjUwZTBmZjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApA
QCAtNDAsNyArNDAsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIGNsYXNzIEltcG9ydGFuY2VBc3NlcnRpb247CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkgOiB1aW50OF90OwpAQCAtNzgsOCArNzcsOSBAQCBwdWJsaWM6CiAKICAgICBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90
LCBzaXplX3QgYWxpZ25tZW50KTsKIAotICAgIC8vIFRoZSBkYXRhIGluIHRoZSBkYXRhIHJlZmVy
ZW5jZSBoZXJlIHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1
bWVudERlY29kZXIgb2JqZWN0LgotICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVZh
cmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmKTsKKyAgICAvLyBUaGUgZGF0YSBp
biB0aGUgcmV0dXJuZWQgcG9pbnRlciBoZXJlIHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxp
ZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgorICAgIC8vIFJldHVybnMgbnVs
bHB0ciBvbiBmYWlsdXJlLgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBjb25zdCB1aW50OF90KiBk
ZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0
aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShUJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Vu
Y29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXgg
ZmQ0MDkwNzc0YjJiYzJhNzYyOWI5YzAyZGM1NTRjNGNkYzk4ZjVjYi4uZTgzYTNlNGFmZjQyYTU3
NTUwNWRjOGYwNzMxN2ExYzFhYzE5ZGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJFbmNvZGVyLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxhbGdv
cml0aG0+CkBAIC0xNDEsNyArMTQyLDcgQEAgdm9pZCBFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyhz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gb3JpZ2luYWwpCiAKICAgICBvcmlnaW5hbC0+c2V0U2hv
dWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hX
aGVuV2FpdGluZ0ZvclN5bmNSZXBseTo6WWVzKTsKIAotICAgIGVuY29kZVZhcmlhYmxlTGVuZ3Ro
Qnl0ZUFycmF5KERhdGFSZWZlcmVuY2Uob3JpZ2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5hbC0+YnVm
ZmVyU2l6ZSgpKSk7CisgICAgKnRoaXMgPDwgRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVy
KCksIG9yaWdpbmFsLT5idWZmZXJTaXplKCkpOwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0
dGFjaG1lbnRzID0gb3JpZ2luYWwtPnJlbGVhc2VBdHRhY2htZW50cygpOwogICAgIHJlc2VydmUo
YXR0YWNobWVudHMuc2l6ZSgpKTsKQEAgLTIxNiwxMiArMjE3LDYgQEAgdm9pZCBFbmNvZGVyOjpl
bmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNp
emVfdCBhbGkKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNv
ZGVyOjplbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlKQotewotICAgIGVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGF0YVJl
ZmVyZW5jZS5zaXplKCkpKTsKLSAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoZGF0YVJlZmVyZW5j
ZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpLCAxKTsKLX0KLQogdm9pZCBFbmNvZGVyOjph
ZGRBdHRhY2htZW50KEF0dGFjaG1lbnQmJiBhdHRhY2htZW50KQogewogICAgIG1fYXR0YWNobWVu
dHMuYXBwZW5kKFdURk1vdmUoYXR0YWNobWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5oCmluZGV4IDBlY2Y1NDFmNzc4NTg1MzZmMWZjZmE4MzZiNzZmMjQ4MmU0YzlhMTEuLmVh
NjE5NjdiZTFlYmNiZDhiNmZiYmFhOGI4NWFmNDE4ZThkNTBjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9FbmNvZGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7
CiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERp
c3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNjIsNyArNjEsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCB3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rl
cj4pOwogCiAgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKLSAgICB2b2lkIGVuY29kZVZhcmlhYmxlTGVu
Z3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZlcmVuY2UmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlICYmICFzdGQ6Omlz
X2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZl
cmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICB2b2lkIGVuY29kZShUJiYgdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA3ZmQxODNh
NTZhZTk4YjA2NjQ1ZmY3NTE0OGFjMjk4M2M1MmU0YWViLi40MTI5ZDRlMmI0OWQ1YzhmYzQxYTJk
NjU0YWRjZDg5ZTg2YzYzN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApA
QCAtOTYsNyArOTcsNiBAQCBzdHJ1Y3QgQ29kaW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJl
bW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB0ZW1w
bGF0ZTw+IHN0cnVjdCBDb2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
PiB7CiAgICAgdXNpbmcgVHlwZSA9IERhdGFSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggNDZlMjFkOGQ5MzZmMmQ4YjUxNjdiMjQ5Zjg4
MTExNmZmZWI3ZDRiOS4uNzc0NjFkNTU1YjcyOTJjMjBlYmY1MTRhMzAyZDFkYzZlNzc3MDExZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNTQsOSAr
NTQsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwg
ZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIHVzaW5n
IFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCks
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNl
bmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJl
cGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKIApAQCAtNjQsNyAr
NjUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBi
b29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgp
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBT
ZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiBy
ZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6
aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7
IH0pCiAgICAgewogICAgICAgICBBU1NFUlQobWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSk7CiAK
QEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhV
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxU
PiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBP
cHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBzZW5kU3luYzxVPihzdGQ6OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURk1v
dmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0
aW9ucyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcAppbmRleCA3YTNjYjMzODc2MzZkY2FmY2VhY2VhZDkxYjg2MzliN2JhNzYzNmM2
Li41MDBmODM5ZGZhYWU5Mjk3ZjRkYzYzZGM2NjMwNTg3N2IyMmRmMmY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIK
IAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCkBAIC00OCw3ICs0
OSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiBPcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YSkpCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcAppbmRleCAyZjcyODVhYzBiNGJkNmRlMTFkZmViOWZlMzI4ZjAxYzk5OTk1MGEw
Li5lOTZkZmIxZmJmODkxY2Q0YTBjNzc0ZTg1YzkwNzg3NThhNmZlODI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwCmluZGV4IDg1MmVmNDNlMDA4NjMx
YzlmYWZhODIzMGM5MTljMTdhOWQ0YTI5YjYuLjIxNjExMzljMzAxNGYwZWFmYjNkYzQ3Yzg1ZGE0
MTkwYTJiYTA2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmlu
Z1JlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVm
ZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUg
IkVuY29kZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOGIzNzQwZjRiMTAxYWQ5MGY1MGVkNTdjODUwYjkw
MzBmY2M0MzBjMi4uNGIyMGM4NWFjNTM2MjM2NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5QT2JqZWN0UHJv
eHkuaCIKICNpbmNsdWRlICJOUFJlbW90ZU9iamVjdE1hcC5oIgogI2luY2x1ZGUgIk5QUnVudGlt
ZVV0aWxpdGllcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IGFkNGZjZDlkOGNjZjQyZjEyZWU0ODhlMDEzNDZjNjE5
YTcwMWI4ZDIuLmM3YTcwNTNjYmQyNmQyMDQ1NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzcsMTAgKzM4LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi1uYW1lc3BhY2UgSVBDIHsK
LSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDU3M2VkM2Q4ZWU5YmJmNDEwMzE2OGU3OWEwNTdmOWRiZGI5Yjg2OTUuLjY3
MzI0NGE2N2UwOTlmZmI3MTgwN2Q1NTUwYzQ1NGYzNjMxZGIxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjAzLDYgKzIwMyw3IEBAIGRlZiBmb3J3YXJk
X2RlY2xhcmF0aW9uc19mb3JfbmFtZXNwYWNlKG5hbWVzcGFjZSwga2luZF9hbmRfdHlwZXMpOgog
CiBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVy
biBmcm96ZW5zZXQoWworICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ01h
Y2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBA
IC0yMTQsNiArMjE1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJywKICAgICAgICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLApAQCAtMjQzLDYgKzI0NSw3
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6RG93bmxvYWRJRCcsCiAgICAgICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcics
CisgICAgICAgICdXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6Okxh
eWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3Rv
Y29sSUQnLApAQCAtNTMwLDYgKzUzMyw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRl
bXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYv
T3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2Rl
cnMuaCInXX0sCiAgICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+
J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAg
ICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRf
Y29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpB
cnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1
bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgfQogCiAg
ICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9QPHRlbXBsYXRlX25hbWU+Lis/KTwoP1A8cGFyYW1ldGVy
X3N0cmluZz4uKyk+JywgdGVtcGxhdGVfc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURh
dGEuY3BwCmluZGV4IDYxMzQzYmQ5NDEwNmI2ZTc4OWY4M2JjMjVkZTc5ZjdhNjA0MDkzY2MuLmM3
ODIzMTZmMzA1N2EzY2FmOWQzZTIwNzdjODEzMjU1M2U2OTc1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJRGF0YS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJBUElEYXRhLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0F1eGlsaWFyeVByb2Nlc3MuaAppbmRleCA3YmEyMDdhYmIwYWNjYzhhNTcwZjVjNjYzZjQ2
Y2FhMjRhODI2ZDkxLi4zMWZkN2QwM2ZhZmUwMzk1ODc5NTJhNjM3OGQxYTljOGZmMmY3OTE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNEYWVtb24oKTsK
ICAgICB2b2lkIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwogICAgIHZvaWQgc2V0UU9TKGludCBs
YXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFPUyk7CiAjZW5kaWYKQEAgLTE4NCw0ICsxODMsMyBA
QCBzdHJ1Y3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOWMyNmRiNGU5YTlmNmJhNzJlNDgyMGJiNDA2YzJj
ZmJkZTExM2U5Yi4uZGEzNzM0Yzg0ZDY1NGQ4ZDAzY2E3OTI1ZjdiZDc1OTkxM2JjMzRhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0z
MjIxLDQgKzMyMjEsODIgQEAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBX
VEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5hbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFu
dGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOwor
ICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJp
YnV0ZXMuc2hhcmVSZXNvdXJjZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wy
OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8
PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LmluaXRpYWxQb3dlclByZWZlcmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIg
PDwgYXR0cmlidXRlcy54ckNvbXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMu
c3RlbmNpbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBo
YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9y
UGVyZm9ybWFuY2VDYXZlYXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5z
aGFyZVJlc291cmNlcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25z
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZl
cmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOwor
fQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3Rp
dmVJbmZvLm5hbWU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2Rl
ciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGFjdGl2ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5z
aXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5m
bzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1NWUy
MTFlMTdjNGJlZGVmMTcwNWQ2Li4xZGFlOTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2ZTlm
YzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtNzEsNiArNzEsMTMgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJB
cnJheVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIx
MCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0
aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlczsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0
IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNvcmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbj4gewogfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBz
dGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewog
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsK
K307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUwODYz
NjVkYmY3N2ZhOThlNDFjMWM3NGEzZTdlMjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdiMDQ4
YTNkZWM2Y2Y4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwg
c2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1l
ZGlhSW5HUFVQcm9jZXNzOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3Vs
ZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRF
bmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVy
OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAgT3B0
aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXgg
ZDkxZTQ2MDM4ZjMwOWI1MTMwYmZkZTU4ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1YmY0
ZjkyY2YwNmZlNWUxMTIwNWE0YjUxMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0lu
R1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nl
c3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFs
c2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BV
UHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29k
ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2Ug
fTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDliZDhhODE3NTQ5ZjU4ZmUzODNkNzI1ZGE2
NjNmM2JjNTRjYTBkNzQuLjc3ZTliNGQ1Y2M3NTJmYmNkYjZiNjVmOWFkYzI2MDE5NTZjYTE0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnNDRi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVy
c1NvdXAuY3BwCmluZGV4IDFkODRlMmZlMjY4ZjM0NjBlYjI5NzVjNDJiYTk1ZDE0ZjFkMjM1Y2Yu
LmZhMjY4ZDU4NGEwZmM4ZGY4N2EyMWZhNDU2MDc3YjhjNWQ0MmI4NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNw
cApAQCAtODEsNyArODEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENlcnRpZmljYXRlSQogICAgIC8vIEVuY29k
ZSBzdGFydGluZyBmcm9tIHRoZSByb290IGNlcnRpZmljYXRlLgogICAgIGZvciAoc2l6ZV90IGkg
PSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgR0J5
dGVBcnJheSogY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdFtpIC0gMV0uZ2V0KCk7
Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoSVBDOjpEYXRh
UmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKSk7CisgICAgICAg
IGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZp
Y2F0ZS0+bGVuKTsKICAgICB9CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
Q2VydGlmaWNhdGVJbmZvJiBjCiAgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRpZmlj
YXRlOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjaGFpbkxlbmd0aDsgaSsrKSB7CiAg
ICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjZXJ0aWZpY2F0
ZURhdGFSZWZlcmVuY2UpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRl
RGF0YVJlZmVyZW5jZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgR0J5
dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyhjZXJ0aWZp
Y2F0ZURhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI3Nyw0ICsyNzcsMyBAQCBPcHRpb25hbDxT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+ICBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdQogI2VuZGlmCiAKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDkxN2YwMWJlMWM5
ZjhjYWEyYWJmN2YwZjg5MGY4OTVhM2YyZWY4Ni4uNTBjZGUxMmFmYTNhYTdmNzhjMjc5ZWM4ZmI4
MTk3NDRiNmZiMWVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApAQCAtMTM3LDcgKzEzOCw2IEBAIFBsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIEBu
by11bmlmeQogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwIEBuby11bmlmeQogUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwIEBuby11bmlmeQotUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2Uu
Y3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZv
cm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5j
cHAgQG5vLXVuaWZ5CkBAIC02OTMsMyArNjkzLDUgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKIFdlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisKK1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDk5NTE4MDczMjgwZTljOTVhMmIyNWYwMGJjOGJmYjM4ODc2MjEyNDEuLjEzZmE3MTVl
Nzk2ZmM4NTkyMzE0YjNmZTdmMGQ0ZWE5YWVkODk4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTYzLDYgKzYzLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Q29jb2EubW0KIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5LmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0K
IAorCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKIAogUGxhdGZvcm0vY2xhc3NpZmllci9jb2Nv
YS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcApAQCAtNTczLDYgKzU3
NCw4IEBAIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCiBXZWJQcm9jZXNzL0Vu
dHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0K
IAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9j
b2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjg1LDYgKzY4OCw3IEBA
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNw
cAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCAy
ZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNkLi43MzdiNjI1ODE5ODY2YTBl
Y2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
IAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2Ug
QVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA0ZjM5OGI1MzBmNjA4NTc1Yzk2
N2I4M2M3NGZhMmY0MzI4ZjZjZTNiLi44Y2E5N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4NTYw
M2E4YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaApAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQcm9jZXNzVGhy
b3R0bGVyJiB0aHJvdHRsZXIoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29s
IHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6
OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOworICAgIHVzaW5nIFNlbmRTeW5j
UmVzdWx0ID0gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9z
LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsK
IAogICAgIGVudW0gY2xhc3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBi
b29sIHsgTm8sIFllcyB9OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZv
aWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0g
MCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Ro
cm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olll
cyk7CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0
eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9u
SUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRT
eW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4g
c2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9u
SUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC0xNjMs
MTIgKzE2NCwxMiBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2Fn
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiAKLWJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRp
b25zKQorQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpTZW5kU3luY1Jlc3VsdCBBdXhpbGlhcnlQcm9j
ZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6
OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQo
VTo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAogICAgIGlmICghbV9jb25uZWN0aW9u
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBUcmFj
ZVNjb3BlIHNjb3BlKFN5bmNNZXNzYWdlU3RhcnQsIFN5bmNNZXNzYWdlRW5kKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZy
YW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4
IDgyM2MyMDJhODU2YTAxMzZkZDllYTc1OWYwZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhm
NGZiNGY4NzM0ZDdiZmQ2MDhkMjAzODgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
U3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
IAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDog
cHVibGljIE5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2Fk
U3RhdGU6Ok9ic2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCmluZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZi
YmJhNDJmYzkwY2VjMzU3N2YuLjEyOGEzOTc3ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElE
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KQEAgLTM1LDEwICszNiw2IEBACiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7
CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0YTEw
ZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQzZmE5MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVk
NjViNTdlZDBjODAxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAs
MTAgKzgxLDYgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRk
NDVmMTJlZGUzNGEwZjc4Y2EwYTYuLjI0OGU1M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVk
YWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMx
LDcgKzMxLDYgQEAKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKLSNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDEyOWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1
NmQzY2NjYjIuLmE0ZDhkN2NkODA0ZTY1NjBkYWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxkU2hhcmVkLmgiCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC00OCwxMCArNDksNiBAQCBjbGFzcyBVc2VyU2Ny
aXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNlY3VyaXR5
T3JpZ2luRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDZlZDFjNjljMDhmYzU1OWZlMmEzZjNiOTM5NTBlYTgyOGQ2MGQ0YmYuLmNlYzczZDEzZDA5
OGQ3MTMxODQ4YWZiNTkzZWYwNzI0MTAyMThlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNTgsNyArNTgsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJl
YU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNzkyNyw2ICs3
OTI2LDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlv
blBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRS
ZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JD
YW52YXNSZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01J
bkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdF
bmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBw
cmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9IHBy
ZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvcldlYkdMRW5hYmxlZCgpOworI2VuZGlmCisKICAg
ICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURl
Y29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxFKFZQOSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAg
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURl
Y29kZXJFbmFibGVkKCkgJiYgKCFXZWJDb3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVy
ZW5jZXMoKS52cDlTV0RlY29kZXJFbmFibGVkT25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3
MTFmOTFiMmU1Li40MzdhYjc1MGIzNWFiMTYzYjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0No
aWxkRnJhbWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAi
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIw
Myw3ICsyMDQsNiBAQCBlbnVtIGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90Owog
fQogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVy
OwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1
Y2U2NWU5ZDJkNTY1YjNmMTI1ZjM0NTdhMjU2ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMy
ZTZhMTk5NzdkYjYxYmFiNjEzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
CmluZGV4IGQ0NDJiNjJiNTIyNTg3ZjkwZmE2ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2
ODhhMjY4MjE5NDFmZjdhNDE4ZjRkZjVhOTc1YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM4LDEwICszOCw2IEBAIG5hbWVzcGFjZSBBUEkg
ewogY2xhc3MgRnJhbWVJbmZvOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjQ2MTFiZDFkM2YzMmM1MjYzMTU1MWYzOTZlMWY4NDA0
MGU0ODhiZC4uOThiOGQxYTQ3MGZkMmY0YzU3NzUwZjMzZjYyNDI4MDBhOTQ0OTY4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02OTgs
NyArNjk4LDYgQEAKIAkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2
MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJB
NzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBB
dHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDky
QTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUg
LyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAv
KiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5
MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVu
Y29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJl
Y2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICov
OyB9OwpAQCAtMTMwMyw2ICsxMzAyLDcgQEAKIAkJN0FGQkQzNjMyMUU1MEYzOTAwNURCQUNCIC8q
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1
REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJB
Q0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJE
MzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0Ig
LyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMg
LyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICov
OyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdp
bkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNF
MUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJ
RGljdGlvbmFyeS5oICovOyB9OwpAQCAtMjcxOSw3ICsyNzE5LDYgQEAKIAkJMUFDNUZGQzExNzRC
RkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3Rh
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3
MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYWdlTG9hZFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdE
MTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0
ZWN0aW9uRGlzYWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0Rl
dGVjdGlvbkRpc2FibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFD
MUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzY4LDYgKzQzNjcsMTYgQEAKIAkJ
N0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaDsgcGF0aCA9IENsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZE
MjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBl
cnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUy
MUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
MURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZB
MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xG
dW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JF
NzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQbHVnaW5JbmZvcm1hdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjUxLDExICs2NjYwLDExIEBACiAJ
CQkJMUFFRkQyNzgxMUQxNkM4MTAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXIuaCAqLywKIAkJCQkx
QTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2RlcnMuY3BwICovLAogCQkJCTFB
RUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oICovLAorCQkJCTdCMURC
MjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovLAogCQkJCUJDRUU5NjZB
MTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLywKIAkJCQlCQ0VFOTY2QjExMkZB
RjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oICovLAogCQkJCUJDMDMyREEyMTBGNDM3RDEwMDU4
QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAqLywKIAkJCQlCQzAzMkRBMzEwRjQzN0QxMDA1OEMxNUEg
LyogQ29ubmVjdGlvbi5oICovLAotCQkJCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRh
UmVmZXJlbmNlLmNwcCAqLywKIAkJCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJl
ZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNw
cCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5oICovLApAQCAt
ODMyNSwxMSArODMzNCwxNiBAQAogCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2Nv
YSAqLywKIAkJCQlGNDA5NENCQTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJI
YW5kbGUuY3BwICovLAogCQkJCUY0MDk0Q0I5MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlz
dFdyaXRlckhhbmRsZS5oICovLAorCQkJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3ODhG
MDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCiAJ
CQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdE
Mzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKKwkJCQk3QjkwNDE2
NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8s
CisJCQkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaCAqLywKKwkJCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QkU3MjY1NzI1NzRGNjcyMDBF
ODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5j
cHAgKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCkBAIC04MzQ3LDYgKzgzNjEsMTAgQEAK
IAkJCQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUu
Y3BwICovLAogCQkJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJl
bW90ZUltYWdlQnVmZmVyLmggKi8sCisJCQkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLywKKwkJCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLywKKwkJCQk3QjkwNDE2ODI1NEFGRUE3
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8sCisJCQkJ
N0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rp
b25zR2VuZXJhdGVkLmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90
ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAogCQkJCTU1MDY0MEEzMjQwNzFBNjEwMEFBRTA0NSAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggKi8sCkBAIC0xMTE2Myw2ICsxMTE4MSw3IEBACiAJ
CQkJMUFFRkQyRjcxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUFGMEM0QTEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3NUM0NEEyMUFBMzE3MTAwMDAzN0QwIC8qIEFyZ3VtZW50
Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZC
QyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1RTc3MjgxODNERDZG
NjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFGQTYzNEYy
MzRGN0M2NDAwRkZBODY0IC8qIEFzeW5jUmV2YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0VFOTY2RDExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMzIzMSw3ICsxMzI1MCw2IEBACiAJCQkJMkQ5MkE3ODUyMTJCNkFCMTAwRjQ5M0ZEIC8q
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdE
MjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTJE
OTJBNzdFMjEyQjZBNzEwMEY0OTNGRCAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5REFBMzhDMjRDQkExQTgwMDc5M0Q3NSAvKiBEZWZhdWx0V2ViQnJvd3NlckNo
ZWNrcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMEM1NkZFMjI5RjFERUEwMEJEMzNFNyAvKiBE
ZXZpY2VNYW5hZ2VtZW50U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
aAppbmRleCBmOTJkYTZhNDdmN2UyNGYzODM5OWFhMzY5OGEyMTI5MGQzNjFkNGE2Li5jOWRjNjgy
Yjg3NTQ5YjgyNTBkYjIyYjJhMWNlMjE1NTUwMDBjZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBA
IC0zNiwxMCArMzYsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBheW1lbnRDb29yZGluYXRvcjsK
IGNsYXNzIFBheW1lbnRDb250YWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDJjMGRmNWI5ZjU0OTY4NDdlZDY2OTEw
YmYyZjM5YjJjZGM2MGNhMDIuLjViZThiOTk3NTIwYzRhZDdmMWI0NDA3YWU3MjA0Yzg0YTk5ODg3
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTM1LDEwICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE3OTE4ZTRiNTBjOWI3Y2Y1YjJlNzliMDc3ZDAzNTIx
MmM2MTI2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworZW51bSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJUeXBlIHsg
fTsKK3VzaW5nIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM0YTA2ZmIwMDc2YWNkM2ZkMzJiM2E0YjZiMDlkNjhkMDI3YmI1ODgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoYXR0cmlidXRlcykpOwor
fQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCisgICAgOiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKK3sKKyAgICBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAg
ICBtZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRy
cywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKK30KKworUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQoreworICAg
IElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZl
ck1hcCgpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRo
aXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVh
c2VHcmFwaGljc0NvbnRleHRHTChtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHBsYXRmb3JtU3dhcENoYWluKCkucmVjeWNsZUJ1ZmZl
cigpOworI2VuZGlmCit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAm
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBt
X2N1cnJlbnRXaWR0aCA9IHdpZHRoOworICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKK3sKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQ7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9y
RGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JE
aXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6
Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdC
Q29sb3JTcGFjZVJlZigpKTsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikgeworICAgICAgICBhdXRv
JiBzYyA9IHBsYXRmb3JtU3dhcENoYWluKCk7CisgICAgICAgIHNjLnJlY3ljbGVCdWZmZXIoKTsK
KyAgICAgICAgc2MucHJlc2VudCh7IFdURk1vdmUoZGlzcGxheUJ1ZmZlciksIG51bGxwdHIgfSk7
CisgICAgfQorI2Vsc2UKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyNlbmRpZgorICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVk
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbiksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJWE1F
OiBDdXJyZW50bHkgbm90IGltcGxlbWVudGVkIGJlY2F1c2UgaXQncyBub3QgY2xlYXIgdGhpcyBp
cyB0aGUgcmlnaHQgd2F5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5MzQ5CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChTdHJpbmcmJiBhdmFp
bGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQoreworICAgIGlm
IChtX2RpZEluaXRpYWxpemUpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6YXRpb24gdGltZWQgb3V0
IGJlZm9yZSwgc28gbG9zZSB0aGUgY29udGV4dCBub3cuCisgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbml0aWFsaXplKGF2YWlsYWJsZUV4dGVuc2lvbnMs
IHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCgpCit7CisgICAgZm9y
IChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50
LT5mb3JjZUNvbnRleHRMb3N0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzQ2hhbmdlZCgpCit7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0
b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90
aWZpY2F0aW9uKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2Fp
dFVudGlsSW5pdGlhbGl6ZWQoKQoreworICAgIGlmIChtX2RpZEluaXRpYWxpemUpCisgICAgICAg
IHJldHVybjsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7
CisgICAgaWYgKGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkPihtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRX
YWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQorICAgICAgICByZXR1cm47CisgICAgLy8gVGlt
ZWQgb3V0LCBzbyByZXBvcnQgaW5pdGlhbGl6ZWQgd2l0aCBkdW1teSBkYXRhLiBXZSBzaG91bGQg
bG9zZSB0aGUgY29udGV4dC4KKyAgICB3YXNDcmVhdGVkKCIiLCAiIik7CisgICAgLy8gRklYTUU6
IE5lZWQgdG8gbWFyayB0aGUgY29udGV4dCBhcyBsb3N0LCBidXQgaXQncyBub3Qgc2FmZSB0byBm
b3JjZSBsb3N0IGluIHRoaXMgY2FsbCBzdGFjay4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNDgyNzQ2YTMyYzQ5ODM0NDRmOGJkMWRmY2VkNjk3MTczMDQ5YjU3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTAsMCArMSw0MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
TWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgor
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBXZWIgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0
aW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGludGVyZmFjZS4gVGhlIGltcGxlbWVudGF0aW9uCisv
LyBjb252ZXJ0cyB0aGUgaW50ZXJmYWNlIHRvIGEgc2VxdWVuY2Ugb2YgSVBDIG1lc3NhZ2VzIGFu
ZCBzZW5kcyB0aGUgbWVzc2FnZXMgdG8KKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIEdQ
VSBwcm9jZXNzLgorLy8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5
IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSBmaW5hbAorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+CisgICAgLCBwdWJsaWMg
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIH5SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KCkgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIg
b3ZlcnJpZGVzLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CisKKyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVy
cmlkZXMuCisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7Cisg
ICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOworICAgIHVzaW5nIFdlYkNvcmU6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7CisgICAgdm9pZCBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKKyAgICB2
b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgc2ltdWxhdGVD
b250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpIGZpbmFsOworCisg
ICAgLy8gRnVuY3Rpb25zIHdpdGggYSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlz
dCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorICAgIHZvaWQgc2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsOworICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3Io
R0NHTGVudW0gZXJyb3IpIGZpbmFsOworICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCkgZmluYWw7CisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUp
IGZpbmFsOworICAgIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
UGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpIGZpbmFsOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
bmFtZSkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kUmVu
ZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsK
KyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBh
cmcxKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFt
cGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAg
dm9pZCBibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgYmxlbmRF
cXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkgZmlu
YWw7CisgICAgdm9pZCBibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3Rv
cikgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdD
R0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBmaW5h
bDsKKyAgICBHQ0dMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkg
ZmluYWw7CisgICAgdm9pZCBjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykgZmluYWw7CisgICAgdm9p
ZCBjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBm
IGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQgY2xlYXJEZXB0aChHQ0dM
Y2xhbXBmIGRlcHRoKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyU3RlbmNpbChHQ0dMaW50IHMpIGZp
bmFsOworICAgIHZvaWQgY29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3Jl
ZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhhKSBmaW5hbDsKKyAgICB2b2lk
IGNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGNv
cHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVmZmVy
KCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZpbmFs
OworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUHJvZ3JhbSgpIGZpbmFsOworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlUmVuZGVyYnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVUZXh0dXJlKCkgZmluYWw7CisgICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51bSBt
b2RlKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgdm9pZCBkZXB0aEZ1bmMoR0NHTGVudW0gZnVuYykgZmluYWw7CisgICAgdm9pZCBkZXB0
aE1hc2soR0NHTGJvb2xlYW4gZmxhZykgZmluYWw7CisgICAgdm9pZCBkZXB0aFJhbmdlKEdDR0xj
bGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikgZmluYWw7CisgICAgdm9pZCBkZXRhY2hTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOwor
ICAgIHZvaWQgZGlzYWJsZShHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJh
eXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50KSBmaW5hbDsK
KyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZShH
Q0dMZW51bSBjYXApIGZpbmFsOworICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NH
THVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgZmluaXNoKCkgZmluYWw7CisgICAgdm9pZCBm
bHVzaCgpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMykgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1
cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczLCBHQ0dMaW50IGxldmVsKSBmaW5hbDsKKyAgICB2
b2lkIGZyb250RmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdlbmVyYXRlTWlw
bWFwKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikg
ZmluYWw7CisgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAgIEdDR0xpbnQg
Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5h
bWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVt
IG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludDY0IGdl
dEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludDY0IGdldEludGVn
ZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICBHQ0dMaW50
IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpIGZp
bmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xi
b29sZWFuPiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKKyAg
ICBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3Ry
aW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
R0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xv
ZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdD
R0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pIGZpbmFsOworICAg
IFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICBHQ0dMZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1l
KSBmaW5hbDsKKyAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBoaW50KEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNCdWZmZXIoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0VuYWJsZWQoR0NH
TGVudW0gY2FwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNQcm9ncmFtKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNSZW5kZXJidWZmZXIoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NoYWRlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVGV4dHVyZShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgbGluZVdpZHRoKEdDR0xmbG9hdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmtQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkgZmluYWw7CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xm
bG9hdCB1bml0cykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZh
bHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpIGZpbmFsOworICAgIHZvaWQgc2Npc3NvcihHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsK
KyAgICB2b2lkIHNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGludCBy
ZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShH
Q0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykg
ZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2
b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykgZmlu
YWw7CisgICAgdm9pZCBzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdD
R0xlbnVtIHpwYXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVt
IGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmlu
YWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGlu
dCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2l2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpIGZpbmFsOworICAg
IHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVy
dGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NH
TGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpIGZpbmFs
OworICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBz
aXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3Ry
aWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB2aWV3cG9ydChHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsK
KyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwg
R0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7
CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRu
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+
IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAg
dm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBm
aW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJy
YXkoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFk
VGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dM
aW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVm
ZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxH
Q0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1
ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBs
YXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgZmlu
YWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpIGZpbmFsOworICAgIHZvaWQgaW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3Jj
KSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0b3Jh
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZv
aWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1
YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFnRGF0YUxvY2F0aW9uKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0xdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjApIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQg
djEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWlu
dCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00
dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2
MiwgR0NHTHVpbnQgdjMpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50
IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQg
ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50
IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGlu
dCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpIGZpbmFsOworICAg
IHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJC
dWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJmaShHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50
IHN0ZW5jaWwpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBmaW5h
bDsKKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOwor
ICAgIEdDR0xib29sZWFuIGlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7Cisg
ICAgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVy
eSkgZmluYWw7CisgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAg
IFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0
IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVh
dGVTYW1wbGVyKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlcikgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTYW1wbGVyKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9pZCBiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0
LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFt
ZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBw
YXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIEdD
R0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xz
eW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmlu
YWw7CisgICAgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIHZv
aWQgZGVsZXRlU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBjbGllbnRX
YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGlt
ZW91dCkgZmluYWw7CisgICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0Zmll
bGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFN5bmNp
KEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVh
biBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIHZv
aWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBpZCkgZmluYWw7CisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHBy
aW1pdGl2ZU1vZGUpIGZpbmFsOworICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5h
bDsKKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1v
ZGUpIGZpbmFsOworICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFs
OworICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgcmVz
dW1lVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNlKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyKSBm
aW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0cikgZmluYWw7CisgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFt
ZXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2Vz
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5k
ZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05h
bWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5h
bDsKKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGlu
dD4gcGFyYW1zKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdD
R0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAs
IEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVs
ZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBpbnNlcnRFdmVudE1h
cmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcHVzaEdyb3VwTWFy
a2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwb3BHcm91cE1hcmtl
ckVYVCgpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOworICAg
IHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBm
aW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBm
aW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSBmaW5hbDsKKyAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xib29sZWFuKiBkYXRhKSBmaW5hbDsgLy8gTk9MSU5UCisgICAgdm9pZCBnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSBmaW5hbDsK
KyAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xF
Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgZmluYWw7
CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpIGZpbmFsOworICAg
IC8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK3By
b3RlY3RlZDoKKyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlk
ZXMuCisgICAgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpIGZpbmFsOworCitwcml2YXRlOgor
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQgd2FzQ3JlYXRlZChTdHJp
bmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKTsK
KyAgICB2b2lkIHdhc0xvc3QoKTsKKyAgICB2b2lkIHdhc0NoYW5nZWQoKTsKKworICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJik7CisgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxzZSB9OworICAgIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciB7
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworfTsKKworLy8gVGhl
IEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBp
cyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0Lgorc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWVfdjxHQ0dMZW51bSwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0xib29sZWFuKSA9PSBzaXplb2YoYm9vbCkpOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVf
djxHQ0dMYml0ZmllbGQsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92
PEdDR0xieXRlLCBpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVi
eXRlLCB1aW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xzaG9ydCwg
aW50MTZfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdXNob3J0LCB1aW50
MTZfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMaW50LCBpbnQzMl90Pik7
CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xzaXplaSwgaW50MzJfdD4pOworc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWludCwgdWludDMyX3Q+KTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGZsb2F0LCBmbG9hdD4pOworc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWVfdjxHQ0dMaGFsZmZsb2F0LCB1aW50MTZfdD4pOworc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWVfdjxHQ0dMY2xhbXBmLCBmbG9hdD4pOworc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWVfdjxHQ0dMdm9pZCwgdm9pZD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxQ
bGF0Zm9ybUdMT2JqZWN0LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGlu
dHB0cikgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMc2l6
ZWlwdHIpID09IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHZv
aWRwdHIpID09IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGNo
YXIpID09IHNpemVvZih1aW50OF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMaW50NjQp
ID09IHNpemVvZihpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMdWludDY0KSA9
PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xzeW5jKSA9PSBz
aXplb2YodWludDY0X3QpICYmIHNpemVvZihHQ0dMc3luYykgPT0gc2l6ZW9mKGludHB0cl90KSk7
CisvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyYjMyYjJiYzEw
MTBlZjhlY2QwYWY1Nzc3YWJkNGZhMDhhM2M5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVk
IHsKKyAgICB2b2lkIFdhc0NyZWF0ZWQoU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmlu
ZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCisgICAgdm9pZCBXYXNMb3N0KCkKKyAgICB2b2lkIFdh
c0NoYW5nZWQoKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNH
ZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMTRhNDQzMTU2MjExY2M3MTg1MTM3MzM4Y2FjYzdjZTUwMzU3OTVjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMCwwICsxLDE2NDcgQEAK
Ky8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2Vi
Z2wuIERvIG5vdCBlZGl0LgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1c0No
ZWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jv
b2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0
dXJlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVUZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkF0dGFjaFNoYWRlcihwcm9ncmFtLCBz
aGFkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFy
ZzAsIGluZGV4LCBuYW1lKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJn
MSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEZy
YW1lYnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwg
YXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5k
Q29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwg
R0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24obW9kZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9k
ZUFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3Rvciwg
ZGZhY3RvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNS
R0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1
bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xl
YXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVl
LCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhclN0ZW5jaWwoR0NHTGludCBzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb2xv
ck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1
ZSwgR0NHTGJvb2xlYW4gYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvbG9yTWFzayhzdGF0aWNfY2FzdDxib29sPihyZWQpLCBzdGF0aWNfY2Fz
dDxib29sPihncmVlbiksIHN0YXRpY19jYXN0PGJvb2w+KGJsdWUpLCBzdGF0aWNfY2FzdDxib29s
PihhbHBoYSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bXBpbGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCit7
CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFt
ZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1l
YnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZm
ZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZm
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkKK3sK
KyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1
cmUoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUZyYW1lYnVmZmVyKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVBy
b2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZWxldGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0
aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJvb2w+KGZsYWcpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aFJhbmdl
KHpOZWFyLCB6RmFyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUoR0NHTGVudW0gY2Fw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUo
Y2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGlu
ZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2goKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGaW5pc2goKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZsdXNoKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Rmx1c2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVy
YnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVu
dCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2
ZWwpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1l
YnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZl
bCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJ
bmZvJiBhcmcyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dy
YW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVV
bmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1l
dGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFN0cmluZyhHQ0dMZW51bSBuYW1lKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmlu
ZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFs
dWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXpl
b2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7
CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXpl
b2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDY0X3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4o
cmV0dXJuVmFsdWUpOworfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCit7CisgICAg
aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWko
cHJvZ3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFBy
b2dyYW1pOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xib29sZWFuPiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVl
UmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnY6OlJlcGx5KHZhbHVlUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRS
ZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFs
dWUuYnVmU2l6ZSAqIHNpemVvZihib29sKSk7CisgICAgCit9CisKK0dDR0xlbnVtIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJy
b3I6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFy
Z2V0LCBhdHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJv
Z3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmkoYXJnMCwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmlu
ZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBH
Q0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQoreworICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4gcmFuZ2VSZXBseTsKKyAgICBpbnQzMl90IHBy
ZWNpc2lvblJlcGx5ID0geyB9OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNo
YWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9u
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNl
bmRSZXN1bHQpIHsKKyAgICAgICAgbWVtY3B5KHJhbmdlLmRhdGEsIHJhbmdlUmVwbHkuZGF0YSgp
LCByYW5nZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgaWYgKHByZWNpc2lv
bikKKyAgICAgICAgICAgICpwcmVjaXNpb24gPSBwcmVjaXNpb25SZXBseTsKKyAgICB9Cit9CisK
K1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNv
dXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJT
b3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGZsb2F0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4
UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1l
dGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sK
KyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQp
CisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1j
cHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2Yo
aW50MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1
ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50MzJf
dCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlv
bjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc2l6ZWlwdHIgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0
dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xz
aXplaXB0cj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50KHRhcmdldCwgbW9kZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQorewor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0J1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5h
YmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVi
dWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0Zy
YW1lYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJh
bWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1By
b2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1By
b2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFt
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRl
cmJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRl
cmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFk
ZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXI6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RleHR1cmUoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlua1Byb2dyYW0o
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQo
R0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZl
clN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZl
cnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBs
ZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNv
dXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgYXJnMSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2hhZGVyU291cmNlKGFyZzAs
IGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGlu
dCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xp
bnQgcmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFzayhtYXNrKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQg
bWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3Rl
bmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcChH
Q0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcChmYWlsLCB6ZmFp
bCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFj
ZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBhcmF0
ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJpKHRhcmdldCwg
cG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWZ2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWkoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMWkobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWl2KGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9u
LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4
LCBHQ0dMaW50IHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaXYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxv
Y2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwg
di5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtNGl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRh
KSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9z
ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJv
Z3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxp
ZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWYWxpZGF0ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFm
KGluZGV4LCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmKGlu
ZGV4LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0
ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIz
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWIzZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmdihpbmRleCwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5k
YXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYlBvaW50
ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xl
YW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYlBv
aW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PGJvb2w+KG5vcm1hbGl6ZWQpLCBz
dHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZp
ZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZp
ZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAodGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJTdWJEYXRh
KHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMw
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFSZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5i
dWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRh
dGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJE
MCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBp
bWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3Nl
ZFRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNp
emUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJ
bnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0lu
c3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCks
IHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KCkKK3sKKyAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhB
cnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheShhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQs
IEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIg
d3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0
ZVRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRS
ZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEu
YnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQg
c3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xp
bnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNr
LCBHQ0dMZW51bSBmaWx0ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0
WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXll
cikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5
ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFy
Z2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSwgeCwgeSwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZEJ1ZmZl
cihzcmMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0
b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxl
dmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBw
aXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDEodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QwKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWln
aHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdl
M0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdl
M0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRh
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlv
bjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWko
bG9jYXRpb24sIHYwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlv
biwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVp
bnQgdjEsIEdDR0x1aW50IHYyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYx
LCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aXYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJp
eDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRp
KEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50
IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRl
eEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
eCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwg
eSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSVBvaW50ZXIo
aW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVp
bnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZm
ZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwg
YnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1
ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVm
ZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcnVpdihi
dWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBk
cmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmdihidWZmZXIs
IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIs
IGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQ
bGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVF1ZXJ5
KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVy
eShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1F1ZXJ5KHF1ZXJ5KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1
ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFyZ2V0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeSh0YXJnZXQsIHBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1l
KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKCkKK3sKKyAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1w
bGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNT
YW1wbGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2Ft
cGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNhbXBsZXIoR0NH
THVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1l
LCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNh
bXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworR0NHTGZsb2F0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJh
bWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
ZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFy
YW1ldGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTHN5bmMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKEdDR0xlbnVt
IGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQoreworICAgIHVpbnQ2NF90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkZlbmNlU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5
bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpOworfQorCitHQ0dMYm9vbGVh
biBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMoR0NHTHN5bmMgYXJnMCkKK3sK
KyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1
cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRl
U3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9j
YXN0PGludHB0cl90PihhcmcwKSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRTeW5j
KEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50
NjRfdD4odGltZW91dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dD
R0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2koR0NHTHN5bmMgYXJn
MCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhp
ZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdM
T2JqZWN0IGlkKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlk
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNr
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFy
Z2V0LCBpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVt
IHByaW1pdGl2ZU1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQoreworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHBy
b2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFu
c2Zvcm1GZWVkYmFja1Zhcnlpbmc6OlJlcGx5KGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRm
b3JtR0xPYmplY3QgYnVmZmVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRy
IGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJp
bmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK1ZlY3RvcjxHQ0dMdWludD4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKQoreworICAgIFZlY3Rvcjx1aW50MzJf
dD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1ZlY3RvcjxHQ0dMaW50PiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtcyhw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9j
a0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxv
Y2tOYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgo
cHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1C
bG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2Nr
QmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQorewor
ICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zUmVwbHk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUs
IHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdjo6UmVwbHkocGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNw
eShwYXJhbXMuZGF0YSwgcGFyYW1zUmVwbHkuZGF0YSgpLCBwYXJhbXMuYnVmU2l6ZSAqIHNpemVv
ZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCit7CisgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVm
ZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEs
IGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
UGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFy
cmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxl
dGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNW
ZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1ZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
VmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2Vy
RVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCgpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnNF
WFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZp
cnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
R0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1j
b3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5PTElOVAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMdWludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXgg
YWVmODNlMjU4ODg5YTViZTgyNjdhNjhiMWM2OWZlYzVhMzRlMDM4Ni4uNmE0YWRmNWQ2ZDM0YTdj
NjkxYmZmMDBlZWNlMDFmYzdhYTg5NDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cApAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBi
b29sLCBib29sKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3Jt
R0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVt
LCBib29sLCBib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDk1YzgzNmU2OTUwNDFk
OTdkMjU5MDM2ZmQ3M2RmZjVjNDZiOGZmOTEuLmM4YzU4MjkwNTBhNTI1OGY5ZDkzMTk3NmI5NWYw
NWU1OTdhNTZiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQ
VVByb2Nlc3MoKQogCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGll
bnQoKnRoaXMpOwotICAgIGJvb2wgZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmRTeW5jKAorICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmRTeW5jKAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhhcmR3
YXJlU2FtcGxlUmF0ZSgpKSwKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklEKSwg
MCk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
IHN0cmVhbUZvcm1hdDsKICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFt
Rm9ybWF0KTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1i
ZXJPZkZyYW1lcyk7Ci0gICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlv
QnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9TZXNzaW9uLmNwcAppbmRleCA5YTkxODJlMDYzNTllYjY5NTRkY2Q5MWJkMTUw
MDQyMjJlMzY0ODYxLi43MDA5MjMyMjgzMzgwNGE1NGU2YTZiMGE1OWNjM2E4MjQxY2QzOWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb1Nlc3Npb24uY3BwCkBAIC0yOSw5ICsyOSwxMSBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgVVNFKEFVRElPX1NFU1NJT04pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIkdQVVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKaW5kZXggYjhmNDVhNmQ1YmI0ZGI0NjA5ODgw
MTI0M2JiNWU5MzE3YjFlM2UyYi4uNjViOGZkMGQ3NzM0N2U5MzhiNTY0NTgyMjZiNzhkYTQzYzk3
ODkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKQEAg
LTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIgogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKaW5kZXggZTU5ZTFiMDZiNDQ3ZTVkODBj
YTYxMDUyYzZjN2EzMmM0YmExNDJlNi4uODE5NDA5MGM5MzNiMmYxMWE2NDYwYWIzYzE3NzJkMzc2
MTYzNzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaApAQCAt
MjcsNiArMjcsOSBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
LmNwcAppbmRleCAwZGI4NWFlOWJkMjQxZWJhMWJkYTRlNjIyNDQwZjYzMjhlMWQ4YTBiLi4yOTdl
ZWJkYTE5MTg5ZGZlMGNmZTZjMWVkNzY5YWFjYjlkNmQ5MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckNvcHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggYjlhMDFiMDYy
NWUzYjdjN2YwMTE4NGE4M2MzNmU1NDkxMjJmMDlhOC4uMTUxNzJjOWY2MjEwYmY0Zjk1ZTBjNmFh
NzkzNmM2MjJlYThkOTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKQEAgLTQ0LDcg
KzQ0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29k
ZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQ
cml2YXRlUmVtb3RlLmgKaW5kZXggYjdjZWRiN2U4Mzk0Zjk5YmE5Y2ZiMGEyYWMyYTk3ODExYjNj
NDE4Zi4uNzcwMmQxYjcwMmQxMjE2MmUxOWFiOWE2ZGFhNGM1OTc1MTg2MmYyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQ
cml2YXRlUmVtb3RlLmgKQEAgLTMzLDEwICszMyw2IEBACiAjaW5jbHVkZSAiVHJhY2tQcml2YXRl
UmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZS5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZEdlbmVyaWNDdWU7CiBjbGFzcyBJU09XZWJW
VFRDdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCAwYzZmNzNkMDcxNDRiNTYyNjc2OTM2N2M5ZjJhM2E0
MDE3ZWFkZTgwLi4xNjhlZjQzNWRkZTU2MTRkMzBmM2JlMjg2NzBhNDdhZWQ2MTZkZTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJM
aWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc1Byb3h5
TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmgKaW5kZXggNzM5YTQ5NmVmNDk0Y2I0YTYxODU2NmZmYzY0ZDRh
MjY0YTc0ZTlkMC4uNGJlYWUwNjIzMTdiYTI2YTYwNjgzZjFmNDUxMjMzZWIxMDczYWE3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9S
TShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0VuY29k
ZXJJZGVudGlmaWVyLmgiCkBAIC00Myw3ICs0NCw2IEBAIHVzaW5nIENWUGl4ZWxCdWZmZXJQb29s
UmVmID0gc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaAppbmRleCAyZGFkMjAzODQyZjBlNTUzZmUzYjQ2MjQ0MWVlOTRmYTI2
NDkzYTExLi5jMjhjZTdmMmUxN2U4OWE4ZTUxODZhNzcwNmEyZThhNDRmNmI3ZTM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5k
bGVCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50
VHlwZXMuaD4KQEAgLTU0LDcgKzU1LDYgQEAgY2xhc3MgRGF0YTsKIG5hbWVzcGFjZSBJUEMgewog
Y2xhc3MgRGVjb2RlcjsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2MSw0ICsxNjEsMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMzA2
NGU5YzRhZmNjMmNmZjU0YTMyNWUyNTMxZWQwNTIyYTAwMTM5My4uYjk3OTQ2NTllYWJkMTg0YjM4
OWMwNmQxMzJmOGM0MmY4MDUyM2NjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM0LDEw
ICszNCw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwot
fQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg2NTcxMWIzNjZjMjhkZjQ4NGI0Y2RjMDdh
YTNmY2YzZGNlYmYyZjYuLjY5NDg5NmM5OTdhNDk0MGRiYWIyZGE3NjU3ODIwYTI3OGFmMWRjNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggNTgzZTM3
OWM4OWVjZmE5NTMwYjBhYmZhMWM2OWZlYTlkNTM5NjZmYi4uN2UxZDQ5OTQ3MTVmODg0OWNlOGJm
ZTVlYzM0NTVkNDczNzc4MDBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291
cmNlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtMzYsNyArMzcs
NiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggOTRlZjBkMWZjZTJlNjAxZGY0NDljZmY4NTM5ZmJkMTY0NzkzZWJlMi4uZmY2OWY1NjA5ZTU3
N2NhYzc3N2YwNGFmYTc0YWYyMTA3NDg2NGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2LDcgKzI2LDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAK
LSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAppbmRl
eCBmNTM0NzgzNDdlNzc1ZGYzN2VhOTc2MzRjMjMzMDkzMmI0YTE0ZDI4Li5hZDdmZjE4N2RiYjQz
NTNiOWVkM2JjNTdjNWJhMmM0YWE0ZThjZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtTZW5kUXVldWUuaD4KQEAgLTM4LDcgKzM5LDYgQEAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmluZGV4IGFmMjQyY2QyYjU5NWFj
NGE0NDg0Mjk3YmU1ZDVjZmUxOGQ0OGYzMjQuLjdkMDA3MzY5YjljY2U4NWI4ZjA1NDU3ZDY2NmQx
ZTQ0NTFiOTZjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3
b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKaW5kZXggZGQwODIwMTA3MTJiOWY1ZGI5ZmVi
ZDg4ZGE2NjliNmRmNjFkMGYyOS4uYjQzY2IyZWZhZDFlMTAxZWUyNjViOTNkZGU5YjA2MTI3MzZh
MDk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0U3RyZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtSGFuZGxl
Lmg+CkBAIC0zMyw3ICszNCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247
CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCmluZGV4IGNiNDhlMDU3MzQ4YTJlODY2YjA5MWZmNWFj
ODcyNjA1Y2ExOTJkZDUuLjMyM2YyNWVlOGZkODFiMDI2MzBkMmYyNTlhMWFmYjg4NGI0Y2Y1ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDU29ja2V0LmgKQEAgLTM1LDcgKzM1LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7
CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaAppbmRleCBlYTUzNTk2MDEwOWZlZTZkYzQ4MDVjZjY4OTEyNzk4ZWU5YWI2ZjAzLi40MGI0
YzhmMjEyOWNmMTIzM2ExYjMxYjg1MTI3ZTdhN2U5ZTNkN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC02MCwxMCArNjAsNiBA
QCBPQkpDX0NMQVNTIFBERlNlbGVjdGlvbjsKIE9CSkNfQ0xBU1MgV0tQREZQbHVnaW5BY2Nlc3Np
YmlsaXR5T2JqZWN0OwogT0JKQ19DTEFTUyBXS1BERkxheWVyQ29udHJvbGxlckRlbGVnYXRlOwog
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCAzMzQ3NjRhY2UyYThjNDM4NTg4YjMxOTgwNjJmMzY1YTM2NmU4YmRh
Li41YjI3MzJmMmM0ZTRjNDgzZWJmODQwODdhOGMyNjM0ZTlkNTQ5MjM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtMTA4LDYgKzEwOCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CkBAIC05MTIsNiArOTE2LDIyIEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIFJlCiAgICAgcmV0dXJuIG1fcGFnZS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKKwor
UmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
UGxhdGZvcm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QKK3sKKyAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdM
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIFVOVVNFRF9WQVJJQUJMRShob3N0V2lu
ZG93RGlzcGxheUlEKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICByZXR1cm4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGF0dHJpYnV0ZXMpOworI2Vsc2UKKyAgICByZXR1
cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KEZyYW1lJiwgR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZWMx
NGZkYjE2YzgxY2MxMjcwNmNmY2I1OWU5OWYyY2QzMzc2MGRjOC4uMTIxNWY5MmEwMzE5NTgwYTBk
ZGQ5MjEwNTEzZGQyZDVkMzA1MDUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQzLDcgKzI0
MywxMSBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFJlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1E
aXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAjZW5kaWYKKyNlbmRp
ZgorCiAKICAgICBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29tcG9zaXRpbmdUcmln
Z2VycygpIGNvbnN0IGZpbmFsCiAgICAgewpAQCAtNDAzLDYgKzQwNyw3IEBAIHByaXZhdGU6CiAK
ICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFy
IHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNWZXJ0aWNh
bFNjcm9sbGJhciB7IGZhbHNlIH07CisKICAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNjMDU0ZTgz
NDhlMDkyYzA5NDcwNzdmZGUxZWU5Mzk1NDQ2YzFmMTEuLjg3NjBlODMyNGU4NWVjOWNjNWFlODg5
ZTk5NzkzNTNkMjBkODY3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC00MjIsNiArNDIyLDkgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQog
ICAgICwgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3Vs
ZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB9CiAgICAgLCBtX3Nob3VsZFJlbmRlckRPTUluR1BV
UHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIH0KICAgICAs
IG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRQbGF5TWVk
aWFJbkdQVVByb2Nlc3MgfQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICAsIG1fc2hvdWxkUmVuZGVy
V2ViR0xJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9j
ZXNzfQorI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgICwgbV9uZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBwYXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2Vy
UHJpdmFjeVF1aXJrcyB9CiAjZW5kaWYKQEAgLTcyNSw3ICs3MjgsNiBAQCBXZWJQYWdlOjpXZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCiAgICAgaWYgKFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIqIG1hbmFnZXIgPSB3
ZWJQcm9jZXNzLnN1cHBsZW1lbnQ8V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcj4oKSkKICAgICAg
ICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobWFuYWdl
ci0+bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KCkpOwogI2VuZGlmCi0gICAgCiAgICAgaWYgKHBh
cmFtZXRlcnMudmlld1NjYWxlRmFjdG9yICE9IDEpCiAgICAgICAgIHNjYWxlVmlldyhwYXJhbWV0
ZXJzLnZpZXdTY2FsZUZhY3Rvcik7CiAKQEAgLTM3OTMsNiArMzc5NSw5IEBAIHZvaWQgV2ViUGFn
ZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRl
cmluZyhtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhtX3Nob3VsZFJlbmRl
ckRPTUluR1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BV
UHJvY2Vzc0Zvck1lZGlhKG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzKTsKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0Zv
cldlYkdMKG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpOworI2VuZGlmCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCkBAIC02OTkwLDYgKzY5OTUsNyBAQCB2b2lk
IFdlYlBhZ2U6OnN5bmNocm9uaXplQ09SU0Rpc2FibGluZ1BhdHRlcm5zV2l0aE5ldHdvcmtQcm9j
ZXNzKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtX2lkZW50aWZpZXIsIG1fY29y
c0Rpc2FibGluZ1BhdHRlcm5zKSwgMCk7CiB9CiAKKwogI2lmIEVOQUJMRShNRURJQV9VU0FHRSkK
IHZvaWQgV2ViUGFnZTo6YWRkTWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9uKE1lZGlhU2Vzc2lvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25z
dCBVUkwmIHBhZ2VVUkwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggZTdmOGMwYTNiNjA0ZTdhYTE1N2M3NDAyMzFlNTU1NzQ5ZDRlZjdjNy4uMjEx
MGEzMmY2NzBmMDBmYTI0NGZlNmY5ZDc5NWE2ZGRmNjBkMTcwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJDb250ZW50
QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIK
ICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTE2MCw3ICsxNjEsNiBAQCBjbGFzcyBBcnJh
eTsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTEy
NTcsNyArMTI1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmNXaXRo
RGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAg
IHsKICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9ja2VkT25TeW5jaHJvbm91c1JlcGxpZXMoKTsK
ICAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkp
LCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9y
bVByb2Nlc3NXaWxsU3VzcGVuZCk7CkBAIC0xODI2LDYgKzE4MjYsOSBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9z
aG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkK
KyAgICBib29sIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2Vu
ZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJvb2wgbV9uZWVkc0luQXBw
QnJvd3NlclByaXZhY3lRdWlya3MgeyBmYWxzZSB9OwogI2VuZGlmCkBAIC0yMTgzLDQgKzIxODYs
MyBAQCBpbmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3Rh
dGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBjbwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IGU1NzVmY2EwMTlmNmIxMmE4ZjRkYWU1Y2IxZDY4MmRhNGU0MzZlYjku
Ljg0ZTI4NDExY2ZkZGQ5MWY5YTVkNDdjMjFkNzFlOWRiNmQ3YzYzNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC01MTcs
NyArNTE3LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXli
b2FyZEV2ZW50JiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBJbnRlcnByZXQgdGhlIGV2ZW50IGlt
bWVkaWF0ZWx5IHVwb24gcmVjZWl2aW5nIGl0IGluIFVJIHByb2Nlc3MsIHdpdGhvdXQgc2VuZGlu
ZyB0byBXZWJQcm9jZXNzIGZpcnN0LgogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7
Ci0gICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJw
cmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKSwgcGxhdGZv
cm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCisgICAgYXV0
byBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZl
bnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+
dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCiAgICAgICAgIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50OjpSZXBseShldmVudFdhc0hhbmRsZWQp
LCBtX2lkZW50aWZpZXIpOwogICAgIHJldHVybiBzZW5kUmVzdWx0ICYmIGV2ZW50V2FzSGFuZGxl
ZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBmMmYyMjgy
MmM3YjIyM2ZjYTU5Zjk1NTczZDExZGM5OWIxMDM0ODExLi41ODJlZTc1ZDk5YTc0MjQyNTRhMzlk
YWIyMDZmODQ2MTczNGFkOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xOTQyLDYgKzE5NDIsMjAgQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1v
dGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CiB9CisKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIFdlYlByb2Nlc3M6OnNldFVz
ZUdQVVByb2Nlc3NGb3JXZWJHTChib29sIHVzZUdQVVByb2Nlc3NGb3JXZWJHTCkKK3sKKyAgICBt
X3VzZUdQVVByb2Nlc3NGb3JXZWJHTCA9IHVzZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworYm9v
bCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQorCisjZW5kaWYKKwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
aW5kZXggZTljNDdkYjRjNDQ3YzBmNGFiNjI3YzA5NGI1ZjY4ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0
MmIxODMyNzY0YzRkODUzNzkwOTBiMmNiY2E3M2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCkBAIC0zNDcsNiArMzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVz
ZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9j
ZXNzRm9yTWVkaWEoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3Io
V2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQg
c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wpOworICAgIGJvb2wgc2hvdWxkVXNlUmVtb3Rl
UmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdDsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VlA5KQpAQCAtNjg3LDYgKzY5MSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nl
c3NGb3JDYW52YXNSZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNz
Rm9yRE9NUmVuZGVyaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1l
ZGlhIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3VzZUdQVVByb2Nl
c3NGb3JXZWJHTCB7IGZhbHNlIH07CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNDY2
NGJhYWM5YzQyNGM1NmM4NmE5MjYwN2E0MmM1NjIwNzY5MDUzLi45YzJlM2E5M2VmZjI5OGNlZjY4
ZWNlNjM2OWE0YjZhNWRiYTI2MjRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMTItMDEgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIHJl
bW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUgcHJvY2Vzcy4KKyAgICAg
ICAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDIGFuZCBpcyBpbmNv
bXBsZXRlLgorCisgICAgICAgIEFkZCB0aGUgY29kZSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgdGhl
IGltcGxlbWVudGF0aW9uLiBDdXJyZW50bHkKKyAgICAgICAgdGhlIGdlbmVyYXRvciBnZW5lcmF0
ZXMgYSBXZWJLaXQgSVBDIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFRoZSBpbnB1dCBkZWZp
bml0aW9uIHRvIHRoZSBnZW5lcmF0b3IgaXMgdGhlIHByb3h5IGltcGxlbWVudGF0aW9uCisgICAg
ICAgIGhlYWRlciBmaWxlcy4KKyAgICAgICAgVGhlIG91dHB1dCBvZiB0aGUgZ2VuZXJhdG9yIGlz
CisgICAgICAgICAgIC0gV2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZmlsZQorICAgICAg
ICAgICAtIE1lc3NhZ2Ugc2VuZGVyIGNvZGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHJlY2VpdmVy
IGFuZCBwYXlsb2FkIGludm9jYXRpb24gY29kZQorCisgICAgICAgIFRoZSBnZW5lcmF0b3IgY29u
dmVydHMgR3JhcGhpY3NDb250ZXh0R0wgR0NHTCAtcHJlZml4ZWQgdHlwZXMgdG8KKyAgICAgICAg
c2l6ZWQgSVBDIHR5cGVzLgorCisgICAgICAgIFRoZSBnZW5lcmF0b3IgaXMgaW52b2tlZCBkdXJp
bmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIHN0b3JlZCBp
biB0aGUgcmVwb3NpdG9yeS4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bDogQWRkZWQuCisKIDIwMjAtMTEtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIG5ldyBkaXNwbGF5IGxpc3QgbWV0YSBjb21tYW5k
cyBpbiBwcmVwYXJhdGlvbiBmb3Igd2Via2l0Lm9yZy9iLzIxOTA5MQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1n
cHVwLXdlYmdsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZGMwZTNiYjQzZDU0MTA1ZThjN2E0MDM5MjMzM2E2NzA3
NWFjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2Vi
Z2wKQEAgLTAsMCArMSwxMDMwIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rp
bmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBUaGlzIHNjcmlwdCBnZW5l
cmF0ZXMgdGhlIHNvdXJjZSBmaWxlcyBmb3IgV2ViR0wgR1BVIHByb2Nlc3MgSVBDLgorIworIyBw
eXRob24zIC1tIGJsYWNrIC1sIDE1MCBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
KyMgcHl0aG9uMyAtbSBteXB5IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIwor
aW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZW51bQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQor
aW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCisKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0
LCBEaWN0LCBJdGVyYWJsZSwgQ2FsbGFibGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0
b3IsIEl0ZXJhdG9yLCBDb3VudGVyCisKK3Jvb3RfZGlyID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVf
XykucGFyZW50IC8gIi4uIiAvICIuLiIpLnJlc29sdmUoKQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9
IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNz
IiAvICJFeHRlbnNpb25zR0wuaCIKKworZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsKKyAgICByb290
X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFw
aGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorXQordHlwZXNfaW5wdXRf
Zm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BV
IiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisKK3Rl
bXBsYXRlX3ByZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisiIiIKK2NvbnRleHRfZnVuY3Rp
b25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8g
ImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
IgorY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUK
KyAgICArICIiIi8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUg
c2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9u
cy4KKyNwcmFnbWEgb25jZQore30KKworIiIiCispCitjb250ZXh0X21lc3NhZ2VzX2ZuID0gcm9v
dF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAv
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiIKK2NvbnRleHRfbWVzc2FnZXNf
dGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIiNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBh
cmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25v
dXMKKyNlbmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNw
bGF5KCkgLT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFu
Z2VkKCkKK3t9Cit9fQorCisjZW5kaWYKKworIiIiCispCisKK2NvbnRleHRfcHJveHlfZnVuY3Rp
b25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8g
IkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwIgorY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisg
ICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHt7Cit7fQorCit9
fQorCisjZW5kaWYKKworIiIiCispCisKKworZGVmIHdyaXRlX2ZpbGUoZm4sIG5ld19jb250ZW50
cyk6CisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBp
ZiBmLnJlYWQoKSA9PSBuZXdfY29udGVudHM6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAg
ZXhjZXB0OgorICAgICAgICBwYXNzCisgICAgd2l0aCBvcGVuKGZuLCAidyIpIGFzIGY6CisgICAg
ICAgIGYud3JpdGUobmV3X2NvbnRlbnRzKQorCitjbGFzcyBjcHBfdHlwZShvYmplY3QpOgorICAg
IHR5cGVfbmFtZTogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3Ry
KToKKyAgICAgICAgc2VsZi50eXBlX25hbWUgPSB0eXBlX25hbWUKKworICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2hhc2hf
XyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi50eXBlX25hbWUpCisKKyAgICBkZWYg
X19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVm
IF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSA9PSBv
dGhlci50eXBlX25hbWUKKworICAgIGRlZiBpc192b2lkKHNlbGYpIC0+IGJvb2w6CisgICAgICAg
IHJldHVybiBzZWxmLnR5cGVfbmFtZSBpbiBbInZvaWQiLCAiR0NHTHZvaWQiLCAiY29uc3Qgdm9p
ZCIsICJjb25zdCBHQ0dMdm9pZCJdCisKKyAgICBkZWYgaXNfY29uc3Qoc2VsZikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoImNvbnN0ICIpCisKKyAg
ICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19wb2ludGVyKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZikgLT4g
Ym9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3JlZmVy
ZW5jZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBnZXRf
dmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gc2VsZgorCisg
ICAgZGVmIGdldF9kZWNheV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIGlmIHNl
bGYuaXNfY29uc3QoKToKKyAgICAgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBl
X25hbWVbNjpdKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9ydmFsdWVfdHlw
ZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYu
dHlwZV9uYW1lICsgIiYmIikKKworICAgIGRlZiBnZXRfcG9pbnRlcl90eXBlKHNlbGYpIC0+ICdj
cHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAi
KiIpCisKK2NsYXNzIGNwcF90eXBlX2NvbnRhaW5lcihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY29udGFpbmVyX25hbWUgOiBzdHIsIGNvbnRhaW5l
ZF90eXBlIDogY3BwX3R5cGUsIGFyaXR5IDogT3B0aW9uYWxbaW50XSA9IE5vbmUpOgorICAgICAg
ICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY29udGFp
bmVyX25hbWUgPSBjb250YWluZXJfbmFtZQorICAgICAgICBzZWxmLmNvbnRhaW5lZF90eXBlID0g
Y29udGFpbmVkX3R5cGUKKyAgICAgICAgc2VsZi5hcml0eSA9IGFyaXR5CisgICAgZGVmIGlzX2Nv
bnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBpc19z
cGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09
ICJHQ0dMU3BhbiIKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJp
dHkgaXMgTm9uZQorICAgIGRlZiBnZXRfY29udGFpbmVyX25hbWUoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lCisgICAgZGVmIGdldF9hcml0eShzZWxmKSAtPiBPcHRp
b25hbFtpbnRdOgorICAgICAgICByZXR1cm4gc2VsZi5hcml0eQorICAgIGRlZiBnZXRfY29udGFp
bmVkX3R5cGUoc2VsZikgLT4gY3BwX3R5cGU6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5l
ZF90eXBlCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAg
ICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZS5pc19jb25zdCgpCisKK2RlZiBjcmVhdGVf
Y3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVf
Y29udGFpbmVyXToKKyAgICBtID0gcmUubWF0Y2gociIoW1x3Ol0rKTwoLispPiQiLCB0eXBlX25h
bWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgY29udGFpbmVyX25h
bWUgPSBtWzFdCisgICAgdGVtcGxhdGVzID0gbVsyXQorICAgIGFyaXR5ID0gTm9uZQorICAgIG0g
PSByZS5tYXRjaChyIihbXixdKyksXHMqKFxkKykiLCB0ZW1wbGF0ZXMpCisgICAgaWYgbToKKyAg
ICAgICAgdGVtcGxhdGVzID0gbVsxXQorICAgICAgICBhcml0eSA9IGludChtWzJdKQorICAgIHJl
dHVybiBjcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lLCBjb250YWluZXJfbmFtZSwgZ2V0X2Nw
cF90eXBlKHRlbXBsYXRlcyksIGFyaXR5KQorCitjbGFzcyBjcHBfdHlwZV9mdW5jdGlvbihjcHBf
dHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgcmV0dXJuX3Zh
bHVlX3R5cGUgOiBjcHBfdHlwZSwgYXJndW1lbnRfdHlwZXMgOiBMaXN0W2NwcF90eXBlXSk6Cisg
ICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5y
ZXR1cm5fdmFsdWVfdHlwZSAgPSByZXR1cm5fdmFsdWVfdHlwZQorICAgICAgICBzZWxmLmFyZ3Vt
ZW50X3R5cGVzID0gYXJndW1lbnRfdHlwZXMKKworZGVmIGNwcF9zcGxpdF9hcmdzX3NwZWNzKGFy
Z3Nfc3BlYyA6IHN0cikgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAgIyBodHRwczovL3N0YWNrb3Zl
cmZsb3cuY29tL3F1ZXN0aW9ucy8zMzUyNzI0NS9weXRob24tc3BsaXQtYnktY29tbWEtc2tpcHBp
bmctdGhlLWNvbnRlbnQtaW5zaWRlLXBhcmVudGhlc2VzCisgICAgY29tbWEgPSByIiwoPyEoPzpb
XjxdKlw8W14+XSpcPikqW148Pl0qXD4pIgorICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW2Euc3Ry
aXAoKSBmb3IgYSBpbiByZS5zcGxpdChjb21tYSwgYXJnc19zcGVjLnN0cmlwKCkpXSkKKyAgICAK
K2RlZiBjcmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25h
bFtjcHBfdHlwZV9mdW5jdGlvbl06CisgICAgbSA9IHJlLm1hdGNoKHInKC4qKVwoKC4qKVwpJywg
dHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVy
bl92YWx1ZV90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgYXJnc190eXBlcyA9IFtnZXRf
Y3BwX3R5cGUoYSkgZm9yIGEgaW4gY3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsyXSldCisgICAgcmV0
dXJuIGNwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSwgcmV0dXJuX3ZhbHVlX3R5cGUsIGFyZ3Nf
dHlwZXMpCisgICAgICAgIAorIyBQb2ludGVyIG9yIHJlZmVyZXJlbmNlCitjbGFzcyBjcHBfdHlw
ZV9pbmRpcmVjdChjcHBfdHlwZSk6CisgICAgY2F0ZWdvcnkgOiBzdHIKKyAgICB2YWx1ZV90eXBl
IDogY3BwX3R5cGUKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3Ry
LCBjYXRlZ29yeSA6IHN0ciwgdmFsdWVfdHlwZSA6IGNwcF90eXBlKToKKyAgICAgICAgY3BwX3R5
cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNhdGVnb3J5ID0gY2F0
ZWdvcnkKKyAgICAgICAgc2VsZi52YWx1ZV90eXBlID0gdmFsdWVfdHlwZQorCisgICAgZGVmIGlz
X2NvbnN0X3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcq
JyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAg
IGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVn
b3J5ID09ICcmJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBub3Qgc2VsZi5pc19j
b25zdCgpCisgICAgZGVmIGlzX3J2YWx1ZV9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLmNhdGVnb3J5ID09ICcmJicKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLnZhbHVlX3R5cGUKKworZGVmIGNyZWF0ZV9jcHBfdHlwZV9pbmRp
cmVjdCh0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2luZGlyZWN0XToKKyAg
ICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBt
OgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiYkIiwgdHlwZV9uYW1lKSAKKyAgICBpZiBt
OgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnJiYnLCBnZXRf
Y3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYkIiwgdHlwZV9u
YW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiQiLCB0eXBl
X25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVf
bmFtZSwgJyYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3Qg
KC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNo
KHIiKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5
cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnKicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICByZXR1
cm4gTm9uZQorCisKK2NsYXNzIGNwcF9leHByKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUK
KyAgICBleHByOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwg
ZXhwcjogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLmV4cHIg
PSBleHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhw
cgorCisKK0NwcEV4cHJDb252ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwg
Y3BwX2V4cHJdCisKKworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJv
dWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwg
Y3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21f
cG9pbnRlcihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAg
ICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9
PihyZWludGVycHJldF9jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0p
KSIpCisgICAgcmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcgorCitkZWYg
Y3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBl
IDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06
CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIs
IHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5
cGUsIGYicmVpbnRlcnByZXRfY2FzdDx7dHlwZS50eXBlX25hbWV9PihzdGF0aWNfY2FzdDx7c3Ry
KGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBfcmVp
bnRlcnByZXRfY2FzdF90b19wb2ludGVyCisKK2RlZiBjcHBfc3RhdGljX2Nhc3QoZXhwcjogY3Bw
X2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIo
dHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9Pih7c3RyKGV4cHIpfSkiKQorCisK
K2RlZiBjcHBfaW1wbGljaXRfY2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+
IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBzdHIoZXhwcikpCisKKworZGVm
IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5
cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVy
X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAg
IHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8e2Vs
ZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6
ZSgpKSIpCisKK2RlZiB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9j
YXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikg
LT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWlu
ZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBm
IntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qge2VsZW1lbnRfcG9pbnRlcl90eXBl
fT4oe3N0cihleHByKX0uZGF0YSksIHtzdHIoZXhwcil9LmJ1ZlNpemUpIikKKworZGVmIGNwcF9t
b3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhw
cihleHByLnR5cGUuZ2V0X3J2YWx1ZV90eXBlKCksIGYiV1RGTW92ZSh7c3RyKGV4cHIpfSkiKQor
CisKK2NwcF90eXBlczogRGljdFtzdHIsIGNwcF90eXBlXSA9IHt9CisKK2NwcF90eXBlX2NvbnN0
cnVjdG9ycyA6IExpc3RbQ2FsbGFibGVbW3N0cl0sIE9wdGlvbmFsW2NwcF90eXBlXV1dID0gWwor
ICAgIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbiwKKyAgICBjcmVhdGVfY3BwX3R5cGVfY29udGFp
bmVyLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdAorXQorCitkZWYgZ2V0X2NwcF90eXBl
KHR5cGVfbmFtZTogc3RyKToKKyAgICByID0gY3BwX3R5cGVzLmdldCh0eXBlX25hbWUsIE5vbmUp
CisgICAgaWYgcjoKKyAgICAgICAgcmV0dXJuIHIKKyAgICBmb3IgdHlwZV9jb25zdHIgaW4gY3Bw
X3R5cGVfY29uc3RydWN0b3JzOgorICAgICAgICByID0gdHlwZV9jb25zdHIodHlwZV9uYW1lKQor
ICAgICAgICBpZiByOgorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBub3QgcjoKKyAgICAgICAg
ciA9IGNwcF90eXBlKHR5cGVfbmFtZSkKKyAgICBjcHBfdHlwZXNbdHlwZV9uYW1lXSA9IHIKKyAg
ICByZXR1cm4gcgorCisKK2NsYXNzIGNwcF9hcmcob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAg
ICB0eXBlOiBjcHBfdHlwZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBl
LCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYudHlw
ZSA9IHR5cGUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9IHt9
Ii5mb3JtYXQoc2VsZi50eXBlLCBzZWxmLm5hbWUpCisKKworY2xhc3MgY3BwX2RlY2wob2JqZWN0
KToKKyAgICB0eXBlOiBjcHBfdHlwZQorICAgIG5hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0
eXBlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgor
ICAgICAgICByZXR1cm4gZiJ7c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5hbWV9IgorCisKK2NsYXNz
IGNwcF9hcmdfbGlzdChvYmplY3QpOgorICAgIGFyZ3M6IExpc3RbY3BwX2FyZ10KKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgc2VsZi5hcmdz
ID0gYXJncworCisgICAgZGVmIG5hbWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2lu
KGEubmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhwcnMoc2VsZik6CisgICAg
ICAgIHJldHVybiBbY3BwX2V4cHIoYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10K
KworICAgIGRlZiBkZWNscyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZGVjbChhLnR5cGUs
IGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIHR5cGVzKHNlbGYpOgorICAg
ICAgICByZXR1cm4gW2EudHlwZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgX19zdHJf
XyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihzdHIoYSkgZm9yIGEgaW4gc2VsZi5h
cmdzKQorCisKK2NsYXNzIGNwcF9mdW5jKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJn
czogY3BwX2FyZ19saXN0CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgaXNfZXh0ZW5z
aW9uOiBib29sCisgICAgb3ZlcmxvYWRfc3VmZml4OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0
LCBpc19leHRlbnNpb246IGJvb2wpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAg
IHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdz
CisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYu
b3ZlcmxvYWRfc3VmZml4ID0gIiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gZiJ7c2VsZi5yZXR1cm5fdHlwZX0ge3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSki
CisKKyAgICBkZWYgZ2V0X2FyZ3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBUdXBsZVtMaXN0W2NwcF9h
cmddLCBMaXN0W2NwcF9hcmddXToKKyAgICAgICAgaW5fYXJncyA9IFtdCisgICAgICAgIG91dF9h
cmdzID0gW10KKyAgICAgICAgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6CisgICAgICAgICAgICAj
Zm10OiBvZmYKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCkgb3IgXAorICAgICAg
ICAgICAgICAgIGEudHlwZS5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgICAgICBvdXRfYXJn
cyArPSBbYV0KKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2Nv
bnRhaW5lcikgYW5kICgoKGEudHlwZS5pc19zcGFuKCkgb3IgYS50eXBlLmlzX2R5bmFtaWNfc3Bh
bigpKSBhbmQgbm90IGEudHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpKSk6Cisg
ICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIGluX2FyZ3MgKz0gW2FdCisgICAgICAgICAgICAjZm10OiBvbgorICAgICAgICBy
ZXR1cm4gaW5fYXJncywgb3V0X2FyZ3MKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZF90eXBlKHNl
bGYsIHR5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgdHlwZS5pc19jb25zdF9wb2ludGVyKCk6
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRl
ZiBpc19pbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyIgaW4gYS50eXBlLnR5cGVfbmFtZSBm
b3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgICNpZiAiR0NHTHN5bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1lOgorICAgICAg
ICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkoYS5uYW1lID09ICJidWZTaXplIiBm
b3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAg
ICAgaWYgYW55KGEudHlwZS5pc19wb2ludGVyKCkgYW5kIGEudHlwZS5nZXRfdmFsdWVfdHlwZSgp
LmlzX3ZvaWQoKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgaWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoYS50eXBl
KSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgaWYgc2VsZi5yZXR1cm5fdHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLnJl
dHVybl90eXBlKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1
ZQorCisKK3dlYmtpdF9pcGNfdHlwZXM6IERpY3RbY3BwX3R5cGUsIGNwcF90eXBlXSA9IHt9CisK
K3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyczogRGljdFtUdXBsZVtjcHBfdHlwZSwgY3BwX3R5
cGVdLCBDcHBFeHByQ29udmVydGVyXSA9IHt9CisKKworZGVmIHdlYmtpdF9pcGNfY29udmVydF9l
eHByKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgIiIi
IENvbnZlcnRzIGBleHByYCBvZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlwZWAgIiIiCisgICAgY29u
dmVydCA9IHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5nZXQoKGV4cHIudHlwZSwgdHlwZSks
IE5vbmUpCisgICAgaWYgbm90IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4cHIudHlwZSA9PSB0eXBl
OgorICAgICAgICAgICAgcmV0dXJuIGV4cHIKKyAgICAgICAgY29udmVydCA9IGNwcF9pbXBsaWNp
dF9jYXN0CisgICAgcmV0dXJuIGNvbnZlcnQoZXhwciwgdHlwZSkKKworCitkZWYgd2Via2l0X2lw
Y19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNw
cF90eXBlOgorICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0
X2RlY2F5X3R5cGUoKQorICAgIGFyaXR5ID0gdHlwZS5nZXRfYXJpdHkoKQorICAgIHdlYmtpdF9p
cGNfZWxlbWVudF90eXBlID0gd2Via2l0X2lwY190eXBlc1tlbGVtZW50X3R5cGVdIGlmIG5vdCBl
bGVtZW50X3R5cGUuaXNfdm9pZCgpIGVsc2UgZ2V0X2NwcF90eXBlKCd1aW50OF90JykKKyAgICBp
ZiBhcml0eSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6
QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9LCB7YXJpdHl9PiIp
CisgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJr
aXRfaXBjX2VsZW1lbnRfdHlwZSl9PiIpCisKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl9z
dG9yZV90eXBlKHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxl
bWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisg
ICAgaWYgZWxlbWVudF90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgZWxlbWVudF90eXBlID0gZ2V0
X2NwcF90eXBlKCdHQ0dMY2hhcicpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAg
ICAgICAgaW5saW5lX2NhcGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiBlbGVtZW50X3R5cGUudHlw
ZV9uYW1lIGVsc2UgNAorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiVmVjdG9yPHtzdHIo
ZWxlbWVudF90eXBlKX0sIHtzdHIoaW5saW5lX2NhcGFjaXR5KX0+IikKKyAgICByZXR1cm4gZ2V0
X2NwcF90eXBlKGYic3RkOjphcnJheTx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKHR5cGUuZ2V0
X2FyaXR5KCkpfT4iKQorCitkZWYgd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24o
ZXhwciA6IGNwcF9leHByLCB0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoK
KyAgICBwb2ludGVyX2Nhc3RfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3Bv
aW50ZXJfdHlwZSgpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgcmV0
dXJuIGNwcF9leHByKHR5cGUsIGYibWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihw
b2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXpl
KCkpIikKKworICAgIGFzc2VydCh0eXBlLmlzX3NwYW4oKSkKKyAgICByZXR1cm4gY3BwX2V4cHIo
dHlwZSwgZiJtYWtlR0NHTFNwYW48e3N0cih0eXBlLmdldF9hcml0eSgpKX0+KHJlaW50ZXJwcmV0
X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpKSIpCisK
KyMgU2VlIG1lc3NhZ2VzLnB5IGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlCit3ZWJraXRfaXBjX2J1
aWx0aW5fdHlwZXMgPSBzZXQoCisgICAgWyJ1aW50OF90IiwgInVpbnQxNl90IiwgInVpbnQzMl90
IiwgInVpbnQ2NF90IiwgImludDhfdCIsICJpbnQxNl90IiwgImludDMyX3QiLCAiaW50NjRfdCIs
ICJib29sIiwgImZsb2F0IiwgImRvdWJsZSIgImJvb2wiXQorKQorCisKK2RlZiB3ZWJraXRfaXBj
X2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfdHlwZToK
KyAgICBpZiB0eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAg
ICAgIHJldHVybiB0eXBlCisgICAgcmV0dXJuIHR5cGUuZ2V0X3J2YWx1ZV90eXBlKCkKKworCitk
ZWYgd2Via2l0X2lwY19tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAg
IGlmIGV4cHIudHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAg
ICAgICByZXR1cm4gZXhwcgorICAgIHJldHVybiBjcHBfbW92ZV9leHByKGV4cHIpCisKKworZGVm
IHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYzogY3BwX2Z1bmMpOgorICAgIHJldHVybiBmdW5jLm5h
bWVbMF0uY2FwaXRhbGl6ZSgpICsgZnVuYy5uYW1lWzE6XSArIGZ1bmMub3ZlcmxvYWRfc3VmZml4
CisKKworY2xhc3Mgd2Via2l0X2lwY19tc2cob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBp
bl9hcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBvdXRfYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSB3
ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmMpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gZnVu
Yy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgaXBjX2luX2FyZ3MgPSBbY3BwX2FyZyh3
ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSkgZm9yIGEgaW4gaW5fYXJnc10KKyAgICAg
ICAgaXBjX291dF9hcmdzID0gW10KKyAgICAgICAgaWYgbm90IGZ1bmMucmV0dXJuX3R5cGUuaXNf
dm9pZCgpOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNf
dHlwZXNbZnVuYy5yZXR1cm5fdHlwZV0sICJyZXR1cm5WYWx1ZSIpXQorICAgICAgICBmb3IgYSBp
biBvdXRfYXJnczoKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRf
aXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSldCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfZHlu
YW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgaXBjX2luX2FyZ3MgKz0gW2NwcF9hcmcoZ2V0
X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpXQorICAgICAgICBzZWxmLmlu
X2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX2luX2FyZ3MpCisgICAgICAgIHNlbGYub3V0X2FyZ3Mg
PSBjcHBfYXJnX2xpc3QoaXBjX291dF9hcmdzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6Cisg
ICAgICAgIGlmIGxlbihzZWxmLm91dF9hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGYi
XG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSAtPiAoe3N0cihzZWxm
Lm91dF9hcmdzKX0pIFN5bmNocm9ub3VzIgorICAgICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtz
ZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3Bw
X3Byb3h5X2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBtc2dfbmFtZTogc3RyCisg
ICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBw
cmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAg
cG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICByZXR1cm5fc3RtdHM6IExpc3Rbc3RyXQor
ICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBfZXhw
cl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAg
ICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYubXNnX25hbWUgPSB3ZWJr
aXRfaXBjX21zZ19uYW1lKGNwcF9mdW5jKQorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY3Bw
X2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAg
ICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0g
W10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnJldHVy
bl9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91
dF9leHBycyA9IFtdCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2Fy
Z3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1
bmMucmV0dXJuX3R5cGUpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmdzKGluX2FyZ3MpCisg
ICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJncyhvdXRfYXJncykKKyAgICAgICAgc2VsZi5wcm9j
ZXNzX2NhbGwoKQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgaW5fZXhw
cnMgPSAiLCAiLmpvaW4oW3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkKKyAgICAgICAg
b3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9leHBycykKKyAg
ICAgICAgaXNfYXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9l
eHBycykgPT0gMAorICAgICAgICBpZiBpc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9z
dG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbmRfcmVzdWx0ID0gIiIKKyAgICAgICAgICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0bXRz
OiAKKyAgICAgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRSZXN1bHQgPSAiCisg
ICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbCisgICAgICAgICAgICAgICAg
ICAgICJpZiAoc2VuZFJlc3VsdCkiICsgKCIgeyIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRz
KSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAgICBdICsgWyIgICAgIiArIHMgZm9yIHMgaW4g
c2VsZi5wb3N0X2NhbGxfc3RtdHNdICsgWworICAgICAgICAgICAgICAgICAgICAoIn0iIGlmIGxl
bihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmIntzZW5k
X3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxm
Lm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOyIsCisgICAgICAgICAgICBdCisKKworICAgIGRlZiBwcm9jZXNz
X2luX2FyZ3Moc2VsZiwgaW5fYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBpIGlu
IGluX2FyZ3M6CisgICAgICAgICAgICBpZiBpLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAg
ICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihp
LnR5cGUsIGkubmFtZSksIHdlYmtpdF9pcGNfdHlwZXNbaS50eXBlXSldCisKKyAgICBkZWYgcHJv
Y2Vzc19vdXRfYXJncyhzZWxmLCBvdXRfYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZv
ciBvIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaWYgby50eXBlLmlzX3BvaW50ZXIoKToKKyAg
ICAgICAgICAgICAgICB2YWx1ZV90eXBlID0gby50eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAg
ICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3ZhbHVl
X3R5cGVdCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY192YWx1ZV90eXBl
LCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMg
Kz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAg
ICAgICBlID0gY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5v
dXRfZXhwcnMgKz0gW2VdCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0g
WworICAgICAgICAgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgICAgICAgICAgZiJp
ZiAoe28ubmFtZX0pIiwKKyAgICAgICAgICAgICAgICAgICAgZiIgICAgKntvLm5hbWV9ID0ge3dl
YmtpdF9pcGNfY29udmVydF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCisgICAgICAgICAgICAgICAg
ICAgICNmbXQ6IG9uCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxpZiBvLnR5cGUu
aXNfc3BhbigpOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNf
dHlwZXNbby50eXBlXQorICAgICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9p
cGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICB2ID0gY3BwX2Fy
Zyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAg
ICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUp
XQorICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJzaXpl
X3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2Nh
bGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgICAgICBmIm1lbWNweSh7by5uYW1lfS5kYXRh
LCB7di5uYW1lfS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXplb2Yoe3N0cih3ZWJraXRf
aXBjX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkpfSkpOyIKKyAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBf
ZXhwcihvLnR5cGUsIG8ubmFtZSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2Vs
ZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9p
ZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1
cm5fdHlwZQorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVy
bl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKGlwY19yZXR1cm5f
dHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7
cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07
Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbcmV0dXJuX3ZhbHVlX2V4cHJdICsgc2VsZi5v
dXRfZXhwcnMKKyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbZiJyZXR1cm4ge3N0cih3ZWJr
aXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgcmV0dXJuX3R5cGUpKX07Il0K
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIg
aWYgIl8iIGluIHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4g
ICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRzICsg
c2VsZi5wb3N0X2NhbGxfc3RtdHMgKyBzZWxmLnJldHVybl9zdG10cykKKyAgICAgICAgcmV0dXJu
IGYiIiJcbntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH0KK3t7e2JvZHl9Cit9fSIi
IgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKG9iamVjdCk6Cisg
ICAgbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2Fy
Z19saXN0CisgICAgYm9keTogTGlzdFtzdHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3Bw
X2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorCisg
ICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBz
ZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYuYm9keSA9IFsibm90SW1wbGVt
ZW50ZWQoKTsiXQorICAgICAgICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlwZS50eXBlX25hbWUgIT0g
InZvaWQiOgorICAgICAgICAgICAgc2VsZi5ib2R5ICs9IFsicmV0dXJuIHsgfTsiXQorCisgICAg
ZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIg
aW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICJcbntcbiAgICAiICsgIlxuICAg
ICIuam9pbihzZWxmLmJvZHkpICsgIlxufSIKKyAgICAgICAgcmV0dXJuIGYiXG57c3RyKHNlbGYu
cmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7
c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9e2JvZHl9IgorCisKK2NsYXNzIGNvbnRleHRfcHJveHlf
Y3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExp
c3Rbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbF0KKyAgICB1bmltcGxzOiBMaXN0W3dlYmtpdF9p
cGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNz
OiBJdGVyYWJsZVtjcHBfZnVuY10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6
CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChmKSBmb3Ig
ZiBpbiBmdW5jc10KKyAgICAgICAgc2VsZi51bmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5
X3BsYWNlaG9sZGVyKGYpIGZvciBmIGluIHVuaW1wbGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1
bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4g
c2VsZi5pbXBscyArIHNlbGYudW5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAg
ICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX2Zu
LAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNl
bGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3Bw
X2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAg
ICBpc19leHRlbnNpb246IGJvb2wKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAg
Y2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAg
ICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJd
CisgICAgcmV0dXJuX3ZhbHVlX2V4cHI6IE9wdGlvbmFsW2NwcF9leHByXQorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNw
cF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSBjcHBfZnVuYy5vdmVy
bG9hZF9zdWZmaXgKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtdKQorICAgICAg
ICBzZWxmLmlzX2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgorICAgICAgICBzZWxm
LnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAg
ICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10K
KyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9l
eHByID0gTm9uZQorCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMu
cmV0dXJuX3R5cGUpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2Fy
Z3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3Mu
YXJncywgc2V0KGluX2FyZ3MpLCBzZXQob3V0X2FyZ3MpKQorICAgICAgICBzZWxmLnByb2Nlc3Nf
Y2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBleHQgPSAiZ2V0
RXh0ZW5zaW9ucygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgorCisgICAgICAgIGlu
X2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQorICAgICAg
ICBpc19hc3luYyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAorCisgICAgICAgIGNhbGxfZXhw
ciA9IGYibV9jb250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBp
ZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10
cyArPSBbZiJ7Y2FsbF9leHByfTsiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5j
YWxsX3N0bXRzICs9IFtmIntzdHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxfZXhw
cn07Il0KKyAgICAgICAgaWYgbm90IGlzX2FzeW5jOgorICAgICAgICAgICAgb3V0X2V4cHJzID0g
IiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNl
bGYucG9zdF9jYWxsX3N0bXRzICs9IFtmImNvbXBsZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9KTsi
XQorCisgICAgZGVmIHByb2Nlc3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddLCBpbl9h
cmdzOiBTZXRbY3BwX2FyZ10sIG91dF9hcmdzOiBTZXRbY3BwX2FyZ10pOgorICAgICAgICBmb3Ig
YSBpbiBhcmdzOgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGlmIGEgaW4gaW5fYXJnczoK
KyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJnKGEpCisgICAgICAgIGlmIHNl
bGYub3V0X2V4cHJzOgorICAgICAgICAgICAgb3V0X2FyZ19kZWNscyA9ICIsICIuam9pbihmIntz
dHIoZS50eXBlKX0iIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5h
cmdzLmFyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh7b3V0X2FyZ19kZWNsc30pPiYmIiksICJjb21wbGV0aW9uSGFuZGxlciIpXQorCisgICAgZGVm
IHByb2Nlc3NfaW5fYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBzZWxmLmFyZ3MuYXJn
cyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdlYmtp
dF9pcGNfdHlwZXNbYS50eXBlXSksIGEubmFtZSldCisgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0g
W3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBl
XSwgYS5uYW1lKSwgYS50eXBlKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmcoc2VsZiwgYTog
Y3BwX2FyZyk6CisgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICB2
YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAg
ICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodmFsdWVfYXJnLnR5cGUpfSB7
c3RyKHZhbHVlX2FyZy5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBy
cyArPSBbY3BwX2V4cHIoYS50eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9IildCisgICAgICAgICAg
ICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAg
ICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1tlLnR5cGVdCisgICAg
ICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Vi
a2l0X2lwY192YWx1ZV90eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFu
KCk6CisgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRh
aW5lcikpCisgICAgICAgICAgICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50
NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpCisgICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBb
c2l6ZV9hcmddCisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0
X3NwYW5fc3RvcmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9j
YWxsX3N0bXRzICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1l
KX0oc3RhdGljX2Nhc3Q8c2l6ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsiXQorICAgICAgICAgICAg
c2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIGYie3N0b3JlX2FyZy5u
YW1lfSIpXQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1th
LnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0
X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lw
Y190eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgYXNz
ZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAg
c3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBl
KSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0
b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAgICAg
ICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5h
bWUpXQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5
cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4
cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190
eXBlKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBhLnR5cGUuaXNfcmVmZXJl
bmNlKCkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50
eXBlXQorICAgICAgICAgICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5
cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c2Vs
Zi5ucyh2YWx1ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAg
ICAgICAgICAgZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAg
ICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2VdCisgICAgICAgICAgICBzZWxmLm91dF9leHBy
cyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Vi
a2l0X2lwY190eXBlKSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0
dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgor
ICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNf
dHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIo
cmV0dXJuX3R5cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMg
Kz0gW2Yie3JldHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9
IHt7IH19OyJdCisgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhw
cih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgaXBjX3JldHVybl90
eXBlKSldCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSByZXR1cm5fdmFsdWVfZXhw
cgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4g
ICAgICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10
cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIiAgICB2b2lkIHtz
ZWxmLm5hbWV9e3NlbGYub3ZlcmxvYWRfc3VmZml4fSh7c3RyKHNlbGYuYXJncyl9KQorICAgIHt7
e2JvZHl9CisgICAgfX0iIiIKKworICAgIGRlZiBucyhzZWxmLCB0eXBlOiBjcHBfdHlwZSk6Cisg
ICAgICAgICMgVE9ETzogbmFtZXNwYWNlIGluZm8gaXMgbm90IHN0b3JlZCBpbiBuYW1lcy4KKyAg
ICAgICAgaWYgdHlwZS50eXBlX25hbWUgPT0gIkFjdGl2ZUluZm8iOgorICAgICAgICAgICAgcmV0
dXJuICJXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6IiArIHN0cih0eXBlKQorICAgICAgICBy
ZXR1cm4gc3RyKHR5cGUpCisKK2RlZiB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4
KGZ1bmNzIDogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICBjb3VudHMgPSBjb2xsZWN0aW9ucy5D
b3VudGVyKGYubmFtZSBmb3IgZiBpbiBmdW5jcykKKyAgICBzdWZmaXhlcyA6IENvdW50ZXJbc3Ry
XSA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoKQorICAgIGZvciBmIGluIGZ1bmNzOgorICAgICAgICBp
ZiBjb3VudHNbZi5uYW1lXSA+IDE6CisgICAgICAgICAgICBmLm92ZXJsb2FkX3N1ZmZpeCA9IHN0
cihzdWZmaXhlc1tmLm5hbWVdKQorICAgICAgICAgICAgc3VmZml4ZXMudXBkYXRlKFtmLm5hbWVd
KQorCisKK2NsYXNzIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6Cisg
ICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3Iu
IgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX2ltcGxdCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMg
PSBbd2Via2l0X2lwY19jcHBfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRlZiBnZXRf
ZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBp
biBzZWxmLmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9m
aWxlKAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250
ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAg
ICAgICApCisKKworY2xhc3MgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0
KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgV2ViS2l0IElQQyBtZXNzYWdlIGRlZmlu
aXRpb24gZ2VuZXJhdG9yLiIKKyAgICBtc2dzOiBMaXN0W3dlYmtpdF9pcGNfbXNnXQorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBz
ZWxmLm1zZ3MgPSBbd2Via2l0X2lwY19tc2coZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYg
Z2V0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIuam9pbihzdHIobSkgZm9yIG0g
aW4gc2VsZi5tc2dzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9m
aWxlKGNvbnRleHRfbWVzc2FnZXNfZm4sIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUuZm9ybWF0
KHNlbGYuZ2V0X21lc3NhZ2VzKCkpKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYzog
c3RyLCBhcmdfaW5kZXg6IGludCk6CisgICAgciA9IGFyZ19zcGVjLnJzcGxpdCgiICIsIDEpCisg
ICAgbmFtZSA9ICIiCisgICAgdHlwZSA9IE5vbmUKKyAgICBpZiBsZW4ocikgPiAxIGFuZCByWzBd
ICE9ICJjb25zdCI6CisgICAgICAgIG5hbWUgPSByWzFdLnN0cmlwKCkKKyAgICAgICAgdHlwZSA9
IGdldF9jcHBfdHlwZShyWzBdKQorICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSAiYXJne30iLmZv
cm1hdChhcmdfaW5kZXgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoYXJnX3NwZWMpCisg
ICAgcmV0dXJuIGNwcF9hcmcodHlwZSwgbmFtZSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmdfbGlz
dChhcmdzX3NwZWNzOiBJdGVyYWJsZVtzdHJdKToKKyAgICByZXR1cm4gY3BwX2FyZ19saXN0KFtj
cmVhdGVfY3BwX2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9yIGksIGUgaW4gZW51bWVy
YXRlKGFyZ3Nfc3BlY3MpXSkKKworCitkZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0
dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJdLCBpc19leHRlbnNpb246IGJvb2wp
OgorICAgIHJldHVybiBjcHBfZnVuYyhuYW1lPW5hbWUsIHJldHVybl90eXBlPWdldF9jcHBfdHlw
ZShyZXR1cm5fc3BlYyksIGFyZ3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzKSwgaXNf
ZXh0ZW5zaW9uPWlzX2V4dGVuc2lvbikKKworCitkZWYgcmVhZF9saW5lc191bnRpbChsaW5lcyA6
IEl0ZXJhYmxlW3N0cl0sIG1hdGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jbc3RyLCBOb25lLCBOb25l
XToKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgaWYgcmUubWF0Y2gobWF0Y2gsIGxp
bmUuc3RyaXAoKSk6CisgICAgICAgICAgICBicmVhaworICAgICAgICB5aWVsZCBsaW5lCisKK2Rl
ZiBtYWluKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoInVzYWdlOiAl
cHJvZyBbb3B0aW9uc10iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlByaW50IHNvbWUgZGVidWcgaW5mbyBmcm9tIHRoZSBn
ZW5lcmF0b3Igc2NyaXB0IikKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisg
ICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBw
cm9jZXNzIHRvIEdQVSBwcm9jZXNzLgorCisgICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBo
ZWFkZXIgaXMgcmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlv
bgorICAgICMgd2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9y
IGlzIG5vdCBhbiBleHRlbnNpb24gZnVuY3Rpb24uCisgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMg
OiBTZXRbc3RyXSA9IHNldCgpCisgICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFz
IGY6CisgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBtID0g
cmUubWF0Y2gociIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQor
ICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5j
KAorICAgICAgICAgICAgICAgICAgICBuYW1lPW1bMl0sCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0
X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVl
LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJl
cy51cGRhdGUoW3N0cihmdW5jKV0pCisgICAgZnVuY3MgPSBbXQorICAgIHVuaW1wbGVtZW50ZWQg
PSBbXQorICAgIGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgorICAgICAgICB3aXRoIG9w
ZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAg
ICAgICAgICAgIGZvciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBGdW5jdGlvbnMg
d2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAg
ICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxp
c3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAg
ICBtID0gcmUubWF0Y2gociJccyooXFMrKVxzKyhcdyspXCgoLiopXCkgZmluYWw7IiwgbGluZSkK
KyAgICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWUgPSBt
WzJdCisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMoCisgICAgICAg
ICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNw
cF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXh0
ZW5zaW9uPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAg
IGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCisg
ICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQorICAgICAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICAgICAgdW5pbXBsZW1lbnRlZC5hcHBlbmQoZnVuYykKKwor
CisgICAgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcykKKyAgICAjIElu
aXRpYWxpemUgV2ViS2l0IElQQyBnZW5lcmF0aW9uLiBDb25zdHJ1Y3QgdHlwZSBtYXBwaW5ncyBm
b3IgdGhlIHVzZWQgQysrIHR5cGVzIC0+IElQQyB0eXBlcy4KKyAgICAjIFRPRE86IG5hbWVzcGFj
aW5nIGlzc3Vlcy4KKyAgICBhaV90eXBlID0gZ2V0X2NwcF90eXBlKCJBY3RpdmVJbmZvJiIpCisg
ICAgYWlfdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZSgiV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OkFjdGl2ZUluZm8iKQorICAgIHdlYmtpdF9pcGNfdHlwZXNbYWlfdHlwZV0gPSBhaV90
cmFuc2Zlcl90eXBlCisKKyAgICB3aXRoIG9wZW4odHlwZXNfaW5wdXRfZm4pIGFzIGY6CisgICAg
ICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAgICAgICBmb3IgXyBpbiByZWFkX2xp
bmVzX3VudGlsKGxpbmVzLCAiLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJL
aXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2Ny
aXB0LiIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVz
X3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmds
IHNjcmlwdC4iKToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwo
c3RkOjppc19zYW1lX3Y8KFx3KyksIChcdyspPlwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBt
OgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2NwcF90eXBlKG1bMV0pXSA9
IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAg
ICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA9PSBzaXpl
b2ZcKChcdyspXCkgJiYgc2l6ZW9mXCgoXHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxp
bmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2Nw
cF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsy
XSkKKyAgICAgICAgICAgICAgICBjcHBfY2FzdF90aHJvdWdoX3R5cGUgPSBnZXRfY3BwX3R5cGUo
bVs0XSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190
eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlw
ZSwgaXBjX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdo
KGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVz
X2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3Rf
dG9fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChz
aXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAg
IGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAg
ICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3Bw
X3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJz
WyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgIyBGb3IgYWxsIHR5cGVzIGluIHRoZSBpbnB1dCBBUEksIGZvcm0gY29y
cmVzcG9uZGluZyBJUEMgdHlwZXMgYW5kIGNvbnZlcnNpb25zLgorICAgICMgVE9ETzogdGhpcyBp
cyBub3QgZHJpdmVuIGJ5IHRoZSB0eXBpbmcuCisgICAgYWxsX3R5cGVzID0gc2V0KCkKKyAgICBm
b3IgZnVuYyBpbiBmdW5jczoKKyAgICAgICBhbGxfdHlwZXMudXBkYXRlKGZ1bmMuYXJncy50eXBl
cygpICsgW2Z1bmMucmV0dXJuX3R5cGVdKQorICAgICMgU29ydCBieSBsZW4gc28gdGhhdCB0ZW1w
bGF0ZSBhcmdzIGNvbWUgYmVmb3JlIHRlbXBsYXRlcy4KKyAgICBmb3IgY3BwX3R5cGUgaW4gc29y
dGVkKGFsbF90eXBlcywga2V5PWxhbWJkYSB4OiBsZW4oeC50eXBlX25hbWUpKToKKyAgICAgICAg
aWYgY3BwX3R5cGUgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAKKyAgICAgICAgaWYgY3BwX3R5cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3BwX3R5cGUu
aXNfc3BhbigpOgorICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3Nw
YW5fdHJhbnNmZXJfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNb
Y3BwX3R5cGVdID0gdHJhbnNmZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICBp
ZiBjcHBfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpOgorICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUp
XSA9IHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVy
c2lvbgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1sodHJhbnNm
ZXJfdHlwZSwgY3BwX3R5cGUpXSA9IHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9u
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgPSB3ZWJraXRf
aXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc19jb252ZXJ0ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBf
YXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgIGVsaWYgY3BwX3R5cGUu
aXNfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29uc3RfcmVmZXJlbmNlKCkgb3IgY3BwX3R5
cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAgICB2YWx1ZV90eXBlID0gY3BwX3R5cGUuZ2V0
X3ZhbHVlX3R5cGUoKSBpZiBub3QgY3BwX3R5cGUuaXNfY29udGFpbmVyKCkgZWxzZSBjcHBfdHlw
ZQorICAgICAgICAgICAgaWYgdmFsdWVfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAg
ICAgICBjb250YWluZWRfdHlwZSA9IHZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID0gd2Via2l0X2lwY190eXBl
c1tjb250YWluZWRfdHlwZV0KKyAgICAgICAgICAgICAgICBpZiB3ZWJraXRfaXBjX2NvbnRhaW5l
ZF90eXBlID09IGNvbnRhaW5lZF90eXBlOgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBj
X3R5cGVzW2NwcF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKGYie3ZhbHVlX3R5
cGUuZ2V0X2NvbnRhaW5lcl9uYW1lKCl9PHtzdHIod2Via2l0X2lwY19jb250YWluZWRfdHlwZSl9
PiIpCisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJh
bnNmZXJfdHlwZQorICAgICAgICAgICAgICAgICAgICAjIFRPRE86IEhlcmUgbWlnaHQgYmUgY2Fz
ZSB3aGVyZSBWZWN0b3I8R0NHTGludD4gd2FzIHVzZWQgaW4gdGhlIGludGVyZmFjZSBhbmQgVmVj
dG9yPGludDMyX3Q+IGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgSVBDIGRl
ZmluaXRpb24uIFRoZXJlIGlzIG5vIHNlbnNpYmxlIHdheSB0byBkbyB0aGlzIGF0IHRoZSBtb21l
bnQuIFdlIGRvIG5vdCBjb252ZXJ0LCByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgIyBleHBl
Y3QgdGhhdCBhbGwgdGhlIGludm9jYXRpb25zIGFyZSB0YWtlbiBjYXJlIG9mIHRoZSBmYWN0IHRo
YXQgR0NHTGludCBpcyB0aGUgc2FtZSB0eXBlIGFzIGludDMyX3QuCisgICAgICAgICAgICAgICAg
ICAgICMgVGhpcyB3aWxsIG5vdCBob2xkIGZvciBhbGwgdHlwZXMgc3VjaCBhcyBHQ0dMYm9vbGVh
bi4KKyAgICAgICAgICAgICAgICAgICAgI3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3Bw
X3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZl
cnNpb24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c1tjcHBfdHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAK
KyAgICAjIFRoZSBpbnB1dCB0byB0aGUgZ2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0aW9ucyB0
byByZW1vdGUuCisgICAgIyBSdW4gdGhlIHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBnZW5lcmF0
b3JzID0gWworICAgICAgICBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihm
dW5jcywgdW5pbXBsZW1lbnRlZCksCisgICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2Vu
ZXJhdG9yKGZ1bmNzKSwKKyAgICAgICAgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Io
ZnVuY3MpLAorICAgIF0KKyAgICBmb3IgZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBnLmdlbmVy
YXRlKCkKKworICAgIGlmIG9wdGlvbnMudmVyYm9zZToKKyAgICAgICAgcHJpbnQoIkltcGxlbWVu
dGVkOiIpCisgICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAge3N0cihpKX0gZmluYWxcbiIgZm9y
IGkgaW4gZnVuY3MpKQorICAgICAgICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgICAgICBw
cmludCgiIi5qb2luKGYiICAgIHtzdHIodSl9IGZpbmFsXG4iIGZvciB1IGluIHVuaW1wbGVtZW50
ZWQpKQorICAgICAgICBwcmludChmIkltcGxlbWVudGVkOiB7bGVuKGZ1bmNzKX0sIHVuaW1wbGVt
ZW50ZWQ6IHtsZW4odW5pbXBsZW1lbnRlZCl9LCB0b3RhbDoge2xlbihmdW5jcykrbGVuKHVuaW1w
bGVtZW50ZWQpfSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZSBtYXAgdG8gV2ViS2l0IElQQyB0
eXBlIG1hcDoiKQorICAgICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAg
ICAgICAgIGlmIHQgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChm
IiAgICB7c3RyKHQpfSAtPiB7c3RyKHdlYmtpdF9pcGNfdHlwZXNbdF0pfSIpCisgICAgICAgIHBy
aW50KCJDKysgdHlwZXMgd2l0aG91dCBXZWJLaXQgSVBDIHR5cGU6IikKKyAgICAgICAgZm9yIF8s
IHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0IG5vdCBpbiB3ZWJraXRf
aXBjX3R5cGVzOgorICAgICAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IikKKyAgICAg
ICAgcHJpbnQoIldlYktpdCBJUEMgdHlwZSBjb252ZXJzaW9ucyIpCisgICAgICAgIGZvciAoYSwg
YiksIGNvbnZlcnRlciBpbiB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuaXRlbXMoKToKKyAg
ICAgICAgICAgIHByaW50KGYiICAgIHtzdHIoYSl9IC0+IHtzdHIoYil9IDoge2NvbnZlcnRlci5f
X25hbWVfX30iKQorICAgICAgICBwcmludCgiRG9uZS4iKQorICAgIHJldHVybiAwCisKKworaWYg
X19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGQz
ODViY2Q1MGZmODI1MTJlNTZiMTk2MDhkYmQzODE2Mjk3YjQ2OC4uODg1ZWY3NzA4M2IzNzdhZjlh
YWQ1YjI4Mjc1MTdjMjYwZGViMzBhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTEyLTAx
ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2
MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRl
eHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMg
dXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0
aGUgbWlzc2luZyBmdW5jdGlvbmFsaXR5LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxlIHRo
ZSB0ZXN0cyB0aGF0IGFjdHVhbGx5IHBhc3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBiZWZvcmUg
dGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAyMC0xMS0yOSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBHYXJkZW5pbmcgV2ViR0wgZmFpbHVyZXMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGEyMjUyOGZhMWIyNjc4NzMxODUz
MDU4MDAzMzkwZmQ3NTM3ZGMwYzYuLmRhNTYzODYyODlkNmM5NGQ0ZmZhZWNhODlhZDJiYTk5M2Ix
MDE2YzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzE3
LDYgKzMxNywxNCBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90
ZS1pbWFnZS1hbGxvd2VkLXdpdGgtY3JlZGVudGlhbHMuaHRtbAogaHR0cC90ZXN0cy93ZWJnbCBb
IFNraXAgXQoganMvc2hhcmVkLWFycmF5LWJ1ZmZlci13ZWJnbC5odG1sIFsgU2tpcCBdCiAKK3dl
YmtpdC5vcmcvYi8yMTgxODQgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFkt
ZmFsc2UuaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93
ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS10cnVlLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5v
cmcvYi8yMTkzNDkgZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC11cGRhdGUtb24tZGlzcGxheS1j
b25maWd1cmF0aW9uLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9j
YW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwgWyBUaW1lb3V0IF0KK3dl
YmtpdC5vcmcvYi8yMTkzNTEgZmFzdC9jYW52YXMvd2ViZ2wvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBb
IEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9wcmVtdWx0
aXBseWFscGhhLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxOTM1MiBmYXN0
L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1cmUuaHRtbCBbIEZhaWx1
cmUgXQorCiB3ZWJncHUgWyBTa2lwIF0KIAogYWNjZXNzaWJpbGl0eS9wcmVzcy13b3Jrcy1vbi1j
b250cm9sLXR5cGVzLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415121</attachid>
            <date>2020-12-01 03:20:23 -0800</date>
            <delta_ts>2020-12-01 03:36:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201132020.patch</filename>
            <type>text/plain</type>
            <size>560676</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4
OGJkNDA3N2EwYzU0YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQxYTM1
Y2MwMDhhZWE2OWZmZjJjZDkxZDAyMzJlZmEwNzFlN2VkNTQuLjk4MTE1ZTE1Yjc2MzQ5NjFhYzM5
MGRiMjNkNTMwYjczZDI1ZDUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJj
Nzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQw
MGIwZmNlMjQxZWZmYjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiAr
MzU3LDE0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyMmVkNmNjMjRlNmU2Njg4NjBmNzRjYzllZGQ4NGIzZDlkZGMzMC4uOTUzMWI0
OTI3MWQwZDQwMWFkODIyNzkxZjg0ZWZkODY1N2Q2NmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2
RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07
CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsK
IAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIy
Mjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2
RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5
NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Niw2
ICsyMjQ2LDggQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkz
NkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjMsOSAr
MTAyMjUsMTQgQEAKIAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEw
MzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4
MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcy
NTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5pZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjEzLDYgKzI2NjIwLDggQEAKIAkJ
CQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJ
CQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQx
ODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJ
N0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2Ft
cGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9T
YW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovLApAQCAtMjY3NzksNiArMjY3ODgsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5
RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBE
NkExMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlC
Mjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJ
CQkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBF
MDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1
OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RB
NTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2
NzkwLDYgKzI2ODAxLDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZC
RDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYx
NkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2Vy
LmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwICovLApAQCAtMzIwODksNiArMzIxMDEsNyBAQAogCQkJCTdCMTAzMzlFMjU0
OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUz
QyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0MDI1LDYgKzM0MDM4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBF
Q0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAw
MTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIy
RkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVv
U2FtcGxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVj
NzE3NDU5N2YwNmUwZTUwOWU3OGZhYS4uMmY4Y2JmMDg3MDUwYzVmMDg2ODBmMmVkOTdkMWYzMDg4
NjYxYTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3NywyMSArNjc3LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZl
clN1YkRhdGEoKSBjYWxscyB0byB1c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0
ciA9IG1fY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNl
dC51bnNhZmVHZXQoKSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0
aFB0ci51bnNhZmVHZXQoKSAqIGNoZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBo
aWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNw
eShzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5i
eXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICog
ZWxlbWVudFNpemUpOwotCi0gICAgaWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkp
Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgImdldEJ1ZmZlclN1YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZm
ZXIiKTsKLSNlbmRpZgotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCk7CisgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9m
ZnNldCwgbWFrZUdDR0xTcGFuKHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVz
cygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBj
b3B5TGVuZ3RoICogZWxlbWVudFNpemUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIpCkBAIC0xNzAyLDcgKzE2OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxpc3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xOTY3
LDkgKzE5NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0
LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8
V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAg
LTIwMTQsNyArMjAwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBs
ZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQogCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHVu
aXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJpbmRTYW1wbGVyIiwgImludmFs
aWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNTksMTcgKzIwNDgsMTEg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAgICAgICAgaW50IHZh
bHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0
IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2Ft
cGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLm9iamVjdCgp
LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxp
ZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMTgsNyArMjEwMSw3IEBA
IEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdMU3lu
YyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNsaWVudFdhaXRTeW5jIiwgInRpbWVv
dXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIpOwogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19GTFVTSF9DT01NQU5E
U19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZhbGlkIGZsYWdzIik7CiAgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CkBAIC0yMTc5LDkg
KzIxNjIsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVs
ZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIs
IGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQVNTRVJUKGZl
ZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAKKwogICAg
IGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRi
YWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjQ4LDcgKzIyMzEsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tQ
cmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiZWdpblRyYW5zZm9ybUZlZWRiYWNr
IiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1pdGl2ZSBtb2RlIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIyODgsNyArMjI3MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRUcmFuc2Zvcm1GZWVkYmFjayIs
ICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwogCiAg
ICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVzZWQoZmFsc2UpOwpAQCAtMjI5OSw3
ICsyMjgyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28KIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJ0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpT
RVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWluZ3Muc2l6ZSgpID4gbV9tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAtMjQ4NSwyNCArMjQ2OCwyNCBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPEdDR0xpbnQ+IHJl
c3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3aXRjaCAocG5hbWUp
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
VFlQRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
eCk7IH0pOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRToKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TklGT1JNX0JMT0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
T0ZGU0VUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQVJSQVlfU1RSSURF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklYX1NUUklERToKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlm
b3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dCk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOiB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgpOyB9KTsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDggKzM1NTUsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoQ2xlYXJDYWxs
ZXJPdGhlcik7CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+
cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmUwM2E4OWZjNjk1M2QyMDAwODJmMjQ5NTQ5
NzYzYmUwNWE5NjE5NS4uYTQ0OTk0ZTBlZDcwMjBkMzQzMWE4ZTBjMjBiZDc1MGU4YzA3NDEwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTczMiw4ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxl
bWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENv
bnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9y
RXZlbnQsCkBAIC00Mzk1LDEwICs0Mzk0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAg
ICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0g
ICAgR0NHTHNpemVpIGxlbmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAg
IEdDR0xzaXplaSByb3dzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFk
blBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7
CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQog
ICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQy
ODI4ZjJkNTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIFdlYkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7
Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFw
aGljc0NvbnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5j
U3RhdHVzKTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldFN5bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBp
ZiAobV9zeW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAg
ICBzY2hlZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjli
ODZiYzMxODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cApAQCAtNTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3Nl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVO
QUJMRShXRUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KGF0dHJpYnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJ
RCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5
SUQoKTsKQEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1f
cGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZh
bCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQor
ICAgIC8vIFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQg
d29yaywgcmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlz
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3
NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEz
Y2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRp
b25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCAzYTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0
OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJ
RCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxw
dHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVy
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRl
eCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2Mz
MzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdp
bmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFs
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAv
LyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAg
ICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qg
PSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUy
ZmIzLi43YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAt
MzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9j
ZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0lu
V2ViUHJvY2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1By
b2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZi
ZDFkNDNjMDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFm
NjRhYTBkZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBA
IC05Niw2ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1
bmRsZUlzV2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3Rh
dGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07Cisg
ICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQ
cm9jZXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9
IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4
NjczNDQ3NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wu
aApAQCAtMjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3No
YWRlcl9jb21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NU
QVRVU19LSFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9l
eHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3Ig
ZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8g
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6
CiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3Vw
TWFya2VyRVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
KSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVy
cwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVt
b3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0g
MDsKQEAgLTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzQU1EKCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11
c3QgYmUgYXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNo
IGNvbmZpZ3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBk
ZjRhMTE5YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIx
YWVhN2E1YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQ
SElDU19DT05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAi
Rm9ybWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5o
IgpAQCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6
OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBy
ZXN1bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ct
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0
ZXMsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4
dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0
dHJzKGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1
MmRjNmVmMy4uYmE3MmIzMWFkNjU4NWI0YTliYjVkNmFkZWZjMWJmMTNkZjVmM2JhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0
IGZvciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGlj
OgogICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGlj
OgogICAgICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFw
aGljc0NvbnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRp
b24gaW4gY29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZm
ZWN0IHRoZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGlj
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2Ny
ZWVuLCBHcmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZp
cnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGll
bnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQg
cmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7
IH0KIAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCB1bmRlcnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZv
aWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05
ODAsNyArOTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXpl
aSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykg
PSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0
dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlw
dHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBt
b2RlKSA9IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0x
MTI0LDggKzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5
IHBvaW50cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1
YWwgR0NHTHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAg
ICB2aXJ0dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xp
bnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdD
R0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBm
aWx0ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9
IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9
IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
ID0gMDsKQEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
ID0gMDsKICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNh
bXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJm
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMo
R0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFs
IEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdD
R0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1l
b3V0KSA9IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRT
eW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdD
R0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVy
IC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NH
THVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dM
dWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgdW5pZm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykgPSAwOwotCisgICAgCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdD
R0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBwbmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9v
bGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0xMzk0LDcgKzEzOTQsNiBAQCBpbmxpbmUgR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdQogICAgIHJldHVybiB2YWx1ZVswXTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCA4NWMyOWE0YjZlNTYxMTBkYzdiZDc0N2FlMzM5ODdj
MzQwMzc1ZGYxLi4zYjA2NGMzZTc2OGVjYzRiZjAyYjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+
CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NCwxMyArNDYsMTcg
QEAgdHlwZWRlZiB1bnNpZ25lZCBHQ0dMdWludDsKIHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0Owog
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQ0dMaGFsZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dM
Y2xhbXBmOwordHlwZWRlZiBjaGFyIEdDR0xjaGFyOwordHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMq
IEdDR0xzeW5jOwordHlwZWRlZiB2b2lkIEdDR0x2b2lkOworCisvLyBUaGVzZSBHQ0dMIHR5cGVz
IGRvIG5vdCBzdHJpY3RseSBtYXRjaCB0aGUgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wg
RVMgMi4wCisvLyBoZWFkZXIgZmlsZSBmb3IgYWxsIHBsYXRmb3Jtcy4KIHR5cGVkZWYgaW50cHRy
X3QgR0NHTGludHB0cjsKIHR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRyOwotdHlwZWRlZiBj
aGFyIEdDR0xjaGFyOwordHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIHR5cGVkZWYgbG9u
ZyBsb25nIEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7
Ci10eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Ci10eXBlZGVmIHZvaWQgR0NHTHZv
aWQ7CiAKIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIApAQCAtNTgsMTMgKzY0
LDE3IEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5zaWdu
ZWQgR0x1aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPgoraW5saW5lIGNvbnN0ZXhwciBz
aXplX3QgZ2NHTFNwYW5EeW5hbWljRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGdjR0xTcGFu
RHluYW1pY0V4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQq
IGFycmF5KQorICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3Qgc2l6ZSA9IEV4
dGVudCkKICAgICAgICAgOiBkYXRhKGFycmF5KQotICAgIHsgfQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQogICAgIEdDR0xTcGFuKFQg
KCZhcnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQpAQCAtNzIs
NiArODIsMTIgQEAgc3RydWN0IEdDR0xTcGFuIHsKICAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3Bh
bjxVLCBFeHRlbnQ+JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxl
X3Y8VSgqKVtdLCBUKCopW10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQogICAgICAgICA6
IGRhdGEob3RoZXIuZGF0YSkKICAgICB7IH0KKyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIEV4
dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQorICAg
IEdDR0xTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0K
ICAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJl
dHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC03OSw3ICs5NSw3IEBAIHN0cnVjdCBHQ0dM
U3BhbiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxULCBn
Y0dMU3BhbkR5bmFtaWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1
ZlNpemVfKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXpl
XykKQEAgLTEyMSw2ICsxMzcsMTEgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CiAgICAg
ICAgIDogZGF0YShvdGhlci5kYXRhKQogICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAq
IHNpemVvZihVKSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+
JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXpl
KGFycmF5LnNpemUoKSAqIHNpemVvZihVKSkKKyAgICB7IH0KICAgICBHQ0dMdm9pZCogZGF0YTsK
ICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CkBAIC0xNTIsOCArMTczLDExIEBAIHN0cnVj
dCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+CiBHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1HQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+OwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+Jikg
LT4gR0NHTFNwYW48VCwgTj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdD
R0xTcGFuPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdDR0xT
cGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzBmMmYzMDY4ZmYwMjkxYWY1YmU2MGE1YzVmNmUxZWVi
N2E0YWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgcGxhdGZvcm1J
bml0aWFsaXplKCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CisKK1BsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVRleHR1
cmUoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitFeHRlbnNpb25zR0wmIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENv
bnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAor
eworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQorewor
ICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlm
IChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7
CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXll
ckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7Cisg
ICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFy
IHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0
cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAgIGZvciAoYXV0byogY2xp
ZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlkQ29tcG9z
aXRlKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRv
Q2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7CisgICAgaWYgKCFjb250ZXh0QXR0cmlidXRl
cygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
PSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZv
ciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3Vs
ZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVk
KCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkpIHsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKKyAgICAg
ICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7CisgICAgfQorfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0
aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFp
bGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5h
ZGQoZXh0ZW5zaW9uKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK1Bs
YXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZThh
MDkxNGQ4ZThlMjllMmQyODMxMjUwNGM0ZWIzMjBiMTE5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JK
Q19DTEFTUyBXZWJHTExheWVyOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW47CisjZW5kaWYKKworLy8gQSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRz
IHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJh
d2luZyBidWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9y
dC4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
IDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
IG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAg
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Qg
ZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwor
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7
CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmlu
YWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBlbmFi
bGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7
CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCisgICAgdXNpbmcg
RXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRV
bnRpbEluaXRpYWxpemVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisK
KyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxT
dHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5z
aW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91
bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0g
ZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9
OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAyODNkYTgyYzZhNjAy
ZWE0YjU1N2M2ODZjZmQ4MjNkMDgxYzU1ZTRhLi43YzE1MWZhMjg1MGYzM2MxNDlhOWRjODIyMzgx
YjhmY2JkZTljYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00NiwyOCArNDYsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0
cmluZykKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9p
c0FNRChmYWxzZSkKLSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlv
bihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2Up
Ci0gICAgLCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKICAg
ICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8v
IEZJWE1FOiBpZGVhbGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBB
TkdMRQotICAgIC8vIHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJp
dmVyIHdvcmthcm91bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9S
RU5ERVJFUikpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3Zl
bmRvci5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRv
ckNvbXBvbmVudHMuY29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29t
cG9uZW50cy5jb250YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlm
ICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwg
PSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIp
KQotICAgICAgICBtX2lzSW1hZ2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdM
RTo6fkV4dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDcgKzgzLDcgQEAgYm9v
bCBFeHRlbnNpb25zR0xBTkdMRTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCitHTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpO
T19FUlJPUjsKIH0KQEAgLTExNCwxMCArOTQsMTEgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29u
dGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5H
VEhfQU5HTEUpOworCiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xf
VFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1p
bmF0aW9uLgotICAgIGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0NHTGludCByZXR1cm5l
ZExlbmd0aCA9IDA7CiAgICAgZ2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFk
ZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYg
KCFyZXR1cm5lZExlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xNDcs
NyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4
dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAs
IGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0
WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQg
bG9uZyBmaWx0ZXIpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIC8vIEZJ
WE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUuCiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTU2
LDcgKzEzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nCiAgICAgZ2w6OkJsaXRGcmFtZWJ1
ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgx
LCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNSw3ICsyMTYsNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykK
ICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDMsMTUgKzIyNCwxNSBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaQogICAg
IGdsOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOworICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihvZmZzZXQpLCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzUwLDcgKzMzMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBn
bDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQxMiw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kCiAgICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC00MzksNyArNDIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGwKICAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDM3LDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2kKICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykK
LXsKLSAgICAvLyBXZSBjYW4gYXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRo
ZSBjYWxsaW5nIGZ1bmN0aW9ucwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAg
aW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19
Ci0jZW5kaWYKLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJl
bW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwg
aS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25l
IGJlZm9yZSByZWFkaW5nIHBpeGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJz
ID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVm
ZmVyVGFyZ2V0ID0gbV9jb250ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6
OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9jb250ZXh0LT5tX3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAg
ICBtX2NvbnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZm
ZXJUYXJnZXQsIG1fY29udGV4dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9
Ci0gICAgKHZvaWQpIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7
Ci0gICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdM
ZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYg
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAg
ICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211
bHRpc2FtcGxlRkJPKTsKLQotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRl
Y3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlv
bi4gU3VyZmFjZSB0aGlzIGluIHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwg
YW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGlu
Z1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAm
JiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oZGF0YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
Cit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0NDUsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAs
NyArNDUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNm
YWE2ZTM4ZmY3MmY0YjIzMjMuLmNiZjQ5OGJkN2MxYTFhYjlhYTZiNzBmYjVkMzhhYzRiOTJmYjAz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25n
IHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBs
b25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcg
ZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBs
b25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAg
Ym9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29s
IGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3Io
KSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdElu
RnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkg
KmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMjAsOCBA
QCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBi
b29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwot
ICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplOwotCiAgICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0g
ICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hl
dGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBl
eHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JB
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNi
OGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNC4uMWQ2MDRiNzFkNDgxNGY1OTdjMmMy
ZmM4OWVkYzk2NDhkYzEzYzc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
QEAgLTQ0MywzMiArNDQzLDUzIEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YS5idWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRh
LmRhdGEsIGZhbHNlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lk
Kj4ob2Zmc2V0KSwgdHJ1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQog
ewotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRy
aXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBj
YWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92
ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5l
LiwKKyAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJl
Zm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1f
aXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2Fy
eShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAg
ICB9Ci0gICAgZ2w6OlJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhKTsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCk7CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAg
IEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMg
JiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJp
bmcgdGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4g
dGhlCisgICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEg
Y2hhbm5lbCBmaXh1cCBiZWxvdy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0
eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3Vu
ZFJlYWRGQk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdy
YXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVs
dGlzYW1wbGVGQk8pKSkKICAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgs
IGhlaWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0K
IC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3cs
IHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bikKQEAgLTg5OCwyMCArOTE5LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6
QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwog
fQogCi12b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJp
dGZpZWxkIGFjY2VzcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zm
c2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGds
OjpVbm1hcEJ1ZmZlcih0YXJnZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0
ciA9IGdsOjpNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFw
aGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0
dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAo
IWdsOjpVbm1hcEJ1ZmZlcih0YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dM
ZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRl
T2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKQEAgLTEwMDgsMTQgKzEwMjUsMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwKICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2
b2lkKj4ob2Zmc2V0KSwgMCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxH
Q0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+
JiBwYXJhbXMpCitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dM
aW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3Jh
bSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9n
cmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUs
IHBhcmFtcy5kYXRhKCkpOworICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0
LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAt
MjEwMSwyMiArMjExOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGds
OjpHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwg
bnVsbHB0ciwgdmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5k
ZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NH
THNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCkBAIC0yMzkyLDEyICsyMzk0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmpl
Y3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6
OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0
aW9ucwpAQCAtMjgzOSwyMCArMjg0MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAg
IGdsOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xm
bG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFs
dWUgPSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2
KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAt
Mjg5NSwxMiArMjkwMiwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3lu
YyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0
U3luYyhzeW5jLCBmbGFncywgdGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBu
YW1lLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3MzU5N2Y0NzUzZDBiZWMxZDAyZTdkNWZjZmRjNjQzYTk4M2M4OGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgiCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09D
T0EpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW46On5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpID0gZGVmYXVs
dDsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZTg4YzJmOTliMWNhYTU4MTE3YzczOTExYTUx
YjY3ZGRlNjMyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
R0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFjZSBmb3Ig
aW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dh
cAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxsIG93biB0
aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0
YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFk
YXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2
ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8gb2J0YWlu
IHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9mIHRoZSBt
ZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhp
cyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJm
YWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUgZXhpc3Rp
bmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgorICAgICAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIFByb2R1Y2VyIHNwZWNpZmljIG1ldGFkYXRhIGhh
bmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KKyAgICB9OworICAgIC8vIFJldHVybnMgdGhlIG1l
dGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xp
ZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250ZW50cyBz
dXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAvLyB0aW1lIG9mIHRo
ZSBjYWxsLgorICAgIC8vIFJldHVybnMgZWl0aGVyOgorICAgIC8vIC0gRW1wdHkgYnVmZmVyIGlm
IG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCisgICAgLy8gLSBCdWZmZXIgd2l0aCBlbXB0
eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBi
dWZmZXIgd2FzIGF2YWlsYWJsZQorICAgIC8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGlu
IHVzZS4KKyAgICAvLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KKyAgICB2aXJ0dWFsIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgPSAwOworCisgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlz
cGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgorICAgIC8vIENsaWVudCB0cmFuc2ZlcnMgdGhl
IG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgorICAg
IHZpcnR1YWwgdm9pZCBwcmVzZW50KEJ1ZmZlcikgPSAwOworCisgICAgLy8gRGV0YWNoZXMgdGhl
IGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEg
aGFuZGxlLgorICAgIC8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0
ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCisg
ICAgLy8gdGhpcy4KKyAgICB2aXJ0dWFsIHZvaWQqIGRldGFjaENsaWVudCgpID0gMDsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpp
bmRleCAyZTFjNzk5ZTgyODUzYjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi43N2NhMjAwYmQ3
ZmZlZmVkMzk4ZjkxMmE3OWQ0MjUxMzQ2YmY3ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkV4
dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJIb3N0
V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0YXRpYyBF
R0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
ID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5IGRpc3Bs
YXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQg
PSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRp
bGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJvY2Vzcygp
KTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0KSB7
CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xhdGlsZSBw
bGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2luY2UgY2xp
ZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFsIGNvbnRl
eHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgIGlmIChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55
Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7CiAKICAg
ICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8gaG9zdFdp
bmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhv
c3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlvbigpLCAm
c2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0
V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LnB0cigp
LCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9j
ZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51bGxwdHIs
ICZzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJv
YmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAog
c3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwg
Q0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJy
ZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5
SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGlu
YXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0KQotICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3RpbmF0aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGlu
YXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0g
YXR0cnMuaXNXZWJHTDI7CiAKQEAgLTI5MywyNiArMjk5LDI4IEBAIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0CiAgICAgaWYgKG1faXNGb3JXZWJHTDIpCiAgICAgICAgIGdsOjpFbmFibGUoR3JhcGhp
Y3NDb250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAorICAgIFZlY3Rv
cjxBU0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBpZiAobV9pc0Zvcldl
YkdMMikgeworICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdv
cmsuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25f
cXVlcnlfYm9vbGVhbiJfcyk7CisgICAgfQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9u
cygpOwotCiAgICAgaWYgKCFuZWVkc0VBR0xPbk1hYygpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogcmVxdWlyZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAgICAgICAi
R0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiLCAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0
dXJlcy4KLSAgICAgICAgICAgICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLCAvLyBG
b3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgotICAgICAgICB9
OwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChyZXF1
aXJlZEV4dGVuc2lvbnMpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBw
b3J0cyhyZXF1aXJlZEV4dGVuc2lvbnNbaV0pKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdM
LCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgcmVxdWlyZWRFeHRlbnNpb25zW2ld
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIC8vIEZv
ciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMu
YXBwZW5kKCJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSJfcyk7CisgICAgICAgIC8vIEZvciBj
cmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCisgICAgICAgIHJlcXVp
cmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJfcyk7
CisgICAgfQogCi0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRF
eHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAg
ICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9H
KFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJh
Y3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5z
aW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ly8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUNDQVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBz
dGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8vIHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3Jt
U2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0byBDYXRhbHlzdCB0b28uCkBAIC0zMzEsMTMg
KzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBj
aGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0gICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVy
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fd2ViR0xMYXllciA9
IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0
cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyAgICBp
ZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsKKyAgICBlbHNl
IHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgICAgICBtX3dl
YkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhh
XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJH
TCBMYXllciJdOworICAgICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5
ZXIiXTsKICNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3N3YXBDaGFpbiA9ICZbbV93ZWJHTExh
eWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQg
d2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAgR0xlbnVtIHRleHR1cmVUYXJn
ZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBAIC00MDYsMTMgKzQxOCwxMiBAQCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKCkKICAgICAgICAg
aWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQogICAgICAgICAgICAgZ2w6OkRlbGV0ZUZy
YW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pOwogICAgIH0KLSAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
cikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlC
dWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExheWVyKSB7Ci0gICAgICAgIGF1dG8gcmVj
eWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgICAgICBhdXRv
IHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICAgICAg
aWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFj
ZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7Ci0gICAgICAgIGF1dG8gY29u
dGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFjaENsaWVudF07CisgICAgICAgIGF1dG8g
Y29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0YWNoQ2xpZW50KCk7CiAgICAgICAgIGlm
IChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3Bs
YXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBAIC01NzUsMTEgKzU4NiwxNiBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQog
ICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQog
ICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQgYnVmZmVyIG5vdywgYmVjYXVzZSBpdCBt
b3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBhdCB0aGUgdGltZSBpdCB3aWxsIGJlIHJl
dXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVm
ZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZm
ZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICBFR0xfRGVzdHJv
eVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOwogICAgIHJlY3lj
bGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQoreworICAgIEFTU0VSVCghZ2V0
SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAgIGF1dG8gYmFja2luZyA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCks
IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0CiAgICAgLy8gZm9yIE9wZW5H
TCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkgKG9ubGluZS9v
ZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVuIGNvbnNpZGVyIGFsbCBHUFVzLCBvciBy
ZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5zCiAgICAgLy8gYWxsIG9mZmxpbmUgcmVu
ZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQu
Ci0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmRvd1Nl
cnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxs
IHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCiAgICAgLy8gbV9kaXNwbGF5
TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNlLgogICAgIGlmIChwcmltYXJ5T3BlbkdM
RGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NDYsMTIgKzY2MiwxMiBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBj
b25zdAogICAgIC8vIGFuZCBNQUMvTUFDQ0FUQUxZU1QgYW5kIE9QRU5HTC9PUEVOR0xFUy4KICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICAKKwogI2lmIEhBVkUoQVBQTEVfR1JBUEhJ
Q1NfQ09OVFJPTCkKICAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02
ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9y
RGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJvbSBvdGhlciBn
cmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGdsOjpGbHVzaCgp
OwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZl
cl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVy
KCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVm
ZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVyIHByZXBhcmVG
b3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwg
bV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVzZW50KHsgV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB9KTsK
ICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAKICAgICBib29s
IGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBFcnJvciB3aWxs
IGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgpIHdoaWNoIHdp
bGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNOZXdCYWNraW5n
KQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAgICAgYWxsb2Nh
dGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0NTUwOWM3NDI5
ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYm
IFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIGF1dG8g
YXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10g
aW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNP
cGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBbbV93ZWJHTExh
eWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJHTExh
eWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
R3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFz
Q1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVyIHN3YXBDaGFp
bl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFjN2M5N2NmNjZl
NzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3ZWE4ODA5NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1w
b3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPG1l
bW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1z
dHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2b2lkKiBoYW5k
bGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5kbGUgKHN1Y2gg
YXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdl
bWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFjZXMuCi0vLyBU
aGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KLS8v
IFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2ls
bCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJl
ZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5Ci0v
LyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCi0vLyBF
eGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBh
cyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVyIGlzIGRvbmUg
d2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5n
Ci0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVj
eWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAogLSAoaWQpaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBz
aG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwogCi0vLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgot
Ly8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250
ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8vIHRpbWUgb2Yg
dGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1
ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2Ug
YW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMg
YXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCi0vLyAtIFN1
cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpcmVjeWNsZUJ1
ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50
cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3Vy
ZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlX
aXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwotCi0vLyBEZXRh
Y2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBt
ZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3Vi
bWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGlu
ZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1t
CmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMuLjE2OGZkNWY2
Yzg0MjM3YmRmOGFiOWNiYmNhNjQwNzM5NTA1YzkyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMjAsNyArMjAs
NyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKQEAgLTMyLDEz
ICszMiwzOSBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bUNBTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisKK2NsYXNz
IFdlYkdMTGF5ZXJTd2FwQ2hhaW4gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkdMTGF5
ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKKyAg
ICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyAgICB2b2lkIHBy
ZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7CisgICAgICAg
ICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCisgICAgICAgICAgICAg
ICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShtX3NwYXJlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgICAgICB2b2lkKiByZXN1bHQgPSBtX2Rp
c3BsYXlCdWZmZXIuaGFuZGxlOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgV2ViQ29yZTo6SU9TdXJm
YWNlKiBkaXNwbGF5U3VyZmFjZSgpIHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlLmdl
dCgpOyB9Citwcml2YXRlOgorICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CisgICAgQnVmZmVy
IG1fc3BhcmVCdWZmZXI7CisgICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsKK307CiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
IF9jb250ZW50c0J1ZmZlcjsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyIF9zcGFyZUJ1
ZmZlcjsKLQogICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsKKyAgICBPcHRpb25hbDxXZWJH
TExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0aERldmljZVBp
eGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29u
dGVudHNPcGFxdWUKQEAgLTQ3LDYgKzczLDcgQEAKICAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJh
bnNmb3JtM0RJZGVudGl0eTsKICAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFx
dWU7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBfc3dh
cENoYWluLmVtcGxhY2Uoc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTczLDMwICsx
MDAsMjEgQEAKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9Ci0KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIHJlY3ljbGVCdWZmZXIKKy0g
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWlu
CiB7Ci0gICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgIGlmIChfc3BhcmVC
dWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAgICAgICAgX3NwYXJlQnVmZmVyLnN1cmZh
Y2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoX3NwYXJlQnVmZmVyKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gX3N3YXBDaGFpbi52YWx1ZSgpOwogfQogCi0t
ICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVy
QnVmZmVyKSBidWZmZXIKKy0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKIHsKLSAgICBBU1NFUlQo
IV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBfc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKF9jb250
ZW50c0J1ZmZlcik7Ci0gICAgX2NvbnRlbnRzQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAg
IFtzZWxmIHNldE5lZWRzRGlzcGxheV07CiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IFlFUzsK
IH0KIAogLSAodm9pZClkaXNwbGF5CiB7Ci0gICAgaWYgKF9jb250ZW50c0J1ZmZlci5zdXJmYWNl
ICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50cyA9IF9jb250
ZW50c0J1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKTsKKyAgICBpZiAoX3N3YXBDaGFp
bi0+ZGlzcGxheVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7CisgICAgICAgIHNl
bGYuY29udGVudHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xheWVyQ29udGVu
dHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29udGVudHMiXTsK
ICAgICB9CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZv
cm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMTA2LDEzICsxMjQs
MTQgQEAKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLS0gKHZvaWQqKSBkZXRh
Y2hDbGllbnQKK0BlbmQKKwordm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KEJ1ZmZl
ciBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgdm9p
ZCogcmVzdWx0ID0gX2NvbnRlbnRzQnVmZmVyLmhhbmRsZTsKLSAgICBfY29udGVudHNCdWZmZXIu
aGFuZGxlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEFTU0VSVCghbV9zcGFy
ZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX3NwYXJlQnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlC
dWZmZXIpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICBbbV9s
YXllciBwcmVwYXJlRm9yRGlzcGxheV07CiB9Ci1AZW5kCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0K
aW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4uOTlhZDkxNjUy
NTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lt
cG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNpbXBvcnQgPENv
cmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggN2Vj
ODFjZjRhZTU3NzJjYWU5NzI4OGJjODBlMzY1NjQ2ZDYyN2M3Yi4uZTcwNzQwNTU5OGUzMmViMjBm
MThjYjMxM2IxNTdjYjRlYzBiNjY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIEV4dGVuc2lvbnNHTE9wZW5H
TDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3Jj
WDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcg
ZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUobG9uZyBzcmNYMCwgbG9uZyBz
cmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9u
ZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZp
bHRlcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJs
aXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb24KICAg
ICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RY
MCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9y
bWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGlu
dGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1
ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiAjZW5kaWYKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHMKICNlbmRp
ZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEcKICNlbmRpZgogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4Njhi
NTQ5OTNhNDQ0NDlhOC4uZTRkMzU1ZGVhMjBlOGE2ZWJlYTA5YzIwZTA1MTAxY2E5MjQyN2UzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0
aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBs
b25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgx
LCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBv
dmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShsb25nIHNyY1gwLCBsb25nIHNy
Y1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25n
IGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmls
dGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVk
IGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0KSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJy
YXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QpIG92ZXJyaWRlOwpAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhU
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0M2I1MTYx
ZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2YzQ4M2ViLi5iYTcyOTlkYjJmMDQxOWMzZjhjYTRm
NDFlZjZiNWE3ZWI0Y2E3NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzCiAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKiwgYm9vbCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWkg
KiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMU3BhbjxHQ0dMdm9pZD4sIGJvb2wpCiB7
CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggYmZlNDUyMTU0M2Zm
NGIyNzIxMzdmMzQ0Y2VlNGEyMmQ4ZmIyOGM2NC4uOGFjYjljODM3NGY5YWNkY2M2MGYzMTFhNDgx
MDFhYWVmMTk5OGNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAt
OTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwg
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRp
bmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzUm9i
dXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRu
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDM2YzNlZjM4Zjk4Yjk5
YWYwMTE1MDY5OTE0MjdiYWNlZmNiYjhhYzMuLjQyNzAxNWVhNzkxZDhmNzg0NjExNzU4Y2ViY2Vj
NTE3NjBkMTFjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMTAwLDEy
ICsxMDAsMTIgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFyZ2UKICAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIC8qIHNyY1gwICovLCBsb25nIC8q
IHNyY1kwICovLCBsb25nIC8qIHNyY1gxICovLCBsb25nIC8qIHNyY1kxICovLCBsb25nIC8qIGRz
dFgwICovLCBsb25nIC8qIGRzdFkwICovLCBsb25nIC8qIGRzdFgxICovLCBsb25nIC8qIGRzdFkx
ICovLCB1bnNpZ25lZCBsb25nIC8qIG1hc2sgKi8sIHVuc2lnbmVkIGxvbmcgLyogZmlsdGVyICov
KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyQU5HTEUobG9uZyAv
KiBzcmNYMCAqLywgbG9uZyAvKiBzcmNZMCAqLywgbG9uZyAvKiBzcmNYMSAqLywgbG9uZyAvKiBz
cmNZMSAqLywgbG9uZyAvKiBkc3RYMCAqLywgbG9uZyAvKiBkc3RZMCAqLywgbG9uZyAvKiBkc3RY
MSAqLywgbG9uZyAvKiBkc3RZMSAqLywgdW5zaWduZWQgbG9uZyAvKiBtYXNrICovLCB1bnNpZ25l
ZCBsb25nIC8qIGZpbHRlciAqLykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
Cit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGVBTkdMRSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNp
Z25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTAogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHCiAg
ICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1j
b3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291
bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpIHsKICAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBA
IC0yNzcsNyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwKICAgICBtX2dsRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQpOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVy
dGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQog
ewogICAgIGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSkgewogICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1YjczOThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0
NjQxNjI4My4uNjY0Nzk1YmRhOGI4NTUyMjUyYWQ5NjZkNjRjZGU4YTY1YzQwOGFmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogCiAgICAg
Ly8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3Jj
WTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcg
ZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0
ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcg
aW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKGxvbmcgc3JjWDAsIGxv
bmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAs
IGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u
ZyBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5z
aWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQg
bG9uZyBoZWlnaHQpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVy
cmlkZTsKQEAgLTg3LDkgKzg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgYmluZFZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9u
ZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBF
WFQgUm9idXN0bmVzcyAtIHJlc2V0CiAgICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYzI1NWIw
YzEyZjRmY2JmYTQ2ZGIwMmQ1NWM4MGI0Y2I3N2QxN2I3MC4uMDI3MjhmODk3ODhlMGI4NWVkMTI2
ZjVmOTgxZjVjMWQ2MGRmZmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgK
QEAgLTU4LDYgKzU4LDkgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgQ0FMYXll
cjsKIE9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworfQogI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQogCiAjaWYgVVNFKE5JQ09TSUEpCkBAIC04Niw3ICs4OSw3IEBAIHR5cGVkZWYgV1RG
OjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKIAogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09SRV9FWFBP
UlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0
R0wKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGlu
YXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKTsKQEAgLTk0LDYgKzk3LDggQEAgcHVibGlj
OgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4gY3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250
ZXh0KTsKKyAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVGb3JH
UFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJik7CisKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nv
bnRleHRPYmo7IH0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fdGV4dHVyZTsgfQogICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdM
TGF5ZXIuZ2V0KCkpOyB9CkBAIC0xOTEsNyArMTk2LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0
QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4
LCBBY3RpdmVJbmZvJik7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSBmaW5hbDsKICAgICBib29s
IGdldEFjdGl2ZVVuaWZvcm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
aW5kZXgsIEFjdGl2ZUluZm8mKTsKLSAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwg
UGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgZmluYWw7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNo
YWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xz
aXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpOwogICAgIEdDR0xpbnQgZ2V0
QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5h
bDsKICAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9v
bGVhbj4gdmFsdWUpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKQEAgLTIxOSw4ICsyMjQsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgdm9p
ZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZv
cm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0
dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4g
dmFsdWUpIGZpbmFsOwogICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIHZvaWQgaGludChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwpAQCAtMjM2LDcgKzIzOSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFt
KSBmaW5hbDsKICAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZs
b2F0IHVuaXRzKSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2Uo
R0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKQEAgLTI1NCw3ICsy
NTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKICAgICB2b2lkIHRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKICAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsgCisgICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAg
ICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBmaW5hbDsKIApAQCAtMzE3LDEyICszMjEsMTAgQEAgcHVibGljOgogI2lmICFVU0UoQU5HTEUp
CiAgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCogZGF0YSwg
R0NHTGVudW0gdXNhZ2UsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsKICAg
ICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIGRzdEJ5dGVP
ZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
bGVuZ3RoKTsKLSAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9m
ZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsKICNlbmRpZgogICAgIHZvaWQgY29weUJ1ZmZlclN1YkRh
dGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIg
cmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZp
bmFsOwogCi0gICAgdm9pZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgZmlu
YWw7Ci0gICAgR0NHTGJvb2xlYW4gdW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsK
KyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBibGl0RnJh
bWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NH
TGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwg
R0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7
CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwg
R0NHTGludCBsYXllcikgZmluYWw7CkBAIC0zODQsNyArMzg2LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0
IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIC8v
IGdldFF1ZXJ5UGFyYW1ldGVyCi0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdM
T2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSBmaW5hbDsKKyAg
ICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigp
IGZpbmFsOwogICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
IGZpbmFsOwpAQCAtMzkzLDggKzM5NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQg
cGFyYW0pIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKICAgICAv
LyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxh
dGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xm
bG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgR0NHTHN5
bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKSBmaW5h
bDsKICAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMpIGZpbmFsOwpAQCAtNDAzLDcgKzQw
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQg
ZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKICAgICAvLyBnZXRTeW5jUGFyYW1ldGVy
CiAgICAgLy8gRklYTUUgLSB0aGlzIGNhbiBiZSBpbXBsZW1lbnRlZCBhdCB0aGUgV2ViR0wgbGV2
ZWwgaWYgd2Ugc2lnbmFsIHRoZSBXZWJHTFN5bmMgb2JqZWN0LgotICAgIHZvaWQgZ2V0U3luY2l2
KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZh
bHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
KCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2Jq
ZWN0IGlkKSBmaW5hbDsKQEAgLTQyMCw3ICs0MjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBiaW5k
QnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9i
amVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7
CiAgICAgLy8gZ2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1c2UgZ2V0UGFyYW1ldGVyIGNhbGxzIGFi
b3ZlLgogICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBmaW5hbDsK
LSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0
b3I8R0NHTGludD4mIHBhcmFtcykgZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2
ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50
PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdDR0x1aW50
IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3Ry
aW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsKICAgICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxv
Y2tQYXJhbWV0ZXIKQEAgLTQyOSwxMSArNDMxLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7
CiAKLSNpZiAhVVNFKEFOR0xFKQotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKLSAgICB2b2lkIHJlYWRQaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dM
dWludCBkc3RPZmZzZXQpOwotI2VuZGlmCi0KICAgICAvLyBIZWxwZXIgbWV0aG9kcy4KIAogICAg
IHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29u
c3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGlj
c0NvbnRleHQmKTsKQEAgLTUxNSw3ICs1MTIsMTEgQEAgcHVibGljOgogI2VuZGlmIC8vICFVU0Uo
QU5HTEUpCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRyLCBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogPSBudWxscHRyKTsKKyNlbHNlCiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93
KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOworI2VuZGlmCiAKICAgICAvLyBDYWxs
ZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNh
bGwgT3BlbkdMLgogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBv
aW50cyBvZiBFeHRlbnNpb25zR0wgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgpAQCAtNTI3
LDcgKzUyOCw5IEBAIHByaXZhdGU6CiAgICAgLy8gaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCB2
YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0gICAgCisKKyAgICB2b2lkIHJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsK
KwogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhl
IEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwogICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsK
IApAQCAtNTQ4LDEwICs1NTEsMTMgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURp
c3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVm
ZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07CisgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUg
cmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRyYXdzIHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWlu
UHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxscHRyIH07CkBAIC01NzksNyArNTg1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICwgaXNWYWxpZChmYWxzZSkKICAgICAgICAgewogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwKGVudW0g
QU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUgfHwgc3lt
Ym9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBlID09IFNI
QURFUl9TWU1CT0xfVFlQRV9WQVJZSU5HKTsKQEAgLTY3Miw3ICs2NzgsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIHVzaW5nIEJvdW5kVGV4dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0sCiAgICAg
ICAgICAgICBzdGQ6OnBhaXI8R0NHTHVpbnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAgIFdURjo6
SW50SGFzaDxHQ0dMZW51bT4sIAorICAgICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwK
ICAgICAgICAgICAgIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+
LAogICAgICAgICAgICAgV1RGOjpQYWlySGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czxHQ0dMdWludD4+CiAgICAgICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4ODY3MjAzOWFlYTRmNTk5OTZlNGQ5NGUx
YzFhMGZlLi5mYTI4N2Y2MDNmZDI4OWE4MzdiNzZlMTU1M2ViYmRhM2RjNzIyM2QwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTIyNzgsMTkg
KzIyNzgsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVj
dChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEcKIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0
ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVu
dHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBn
ZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewotICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRy
aWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKIH0KIAogI2lmIEhBVkUoT1BFTkdMXzQp
ICYmIEVOQUJMRShXRUJHTDIpCkBAIC0yMzM1LDEzICsyMzM1LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
aW50cHRyLAogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNv
bnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwg
R0NHTGludHB0ciwgR0NHTFNwYW48R0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjQnl0ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRz
dERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShs
ZW5ndGgpOwogfQogCiAjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKQEAg
LTI3MTIsNyArMjcwNyw3IEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgcmV0dXJuIDA7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KFBs
YXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xP
YmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7
CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKQEAgLTI3NTYsMTggKzI3NTEsMTkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW4KICAgICBVTlVTRURfUEFSQU0ocGFyYW0pOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9h
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc2Ft
cGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUp
OworICAgIHJldHVybiAwLmY7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUpCisKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBu
YW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBHQ0dM
c3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlv
biwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjgwNiwxMiArMjgwMiwxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQg
ZmxhZ3MsIEdDR0xpbgogICAgIFVOVVNFRF9QQVJBTSh0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAg
ICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICBy
ZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAtMjg5NCwxMSArMjg5MCwxMyBAQCBWZWN0b3I8
R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0
Zm9ybUdMT2JqZWN0IHBybwogI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2Vz
LCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCiB7CisgICAgVmVjdG9y
PEdDR0xpbnQ+IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwogICAgIEFTU0VSVChw
cm9ncmFtKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5h
bWUsIHBhcmFtcy5kYXRhKCkpOworICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0s
IHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVz
dWx0LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDIzZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYx
NzMzOTZhYTU1MDUuLmJmN2M2ODZmMDFlNzIzMjM1NDg2MTM1NzNjOTFmN2VhZjJiNDRjNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEzMCw3ICsxMzAs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRT
aXplJiBzaXplKQogICAgICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVy
ZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgICAgICBpZiAoc3VwcG9ydFBhY2tlZERlcHRo
U3RlbmNpbEJ1ZmZlcikgewogICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdM
X1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgICAgIGV4
dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwg
c2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2ls
KQogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpCkBA
IC0xMzgsMTIgKzEzOCwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBl
RkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7CiAgICAgICAgICAgICAgICAgICAgIDo6
Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKLSAg
ICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgsIHdpZHRo
LCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NU
RU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgOjpnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1F
TlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpIHsKICAgICAgICAgICAgICAg
ICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVy
KTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09NUE9ORU5U
MTYsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291
bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAg
ICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBU
SF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDYyODQ0NTMyNTAz
MzUxMDdmZDU0OTgyMjMyYjhiOWVhZWM4ZTY4Y2IuLjlmODMxN2IxOGQ1M2I3YjNjMTY2NjlhNGM1
MTE5OTNlYWYzN2M3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTIzLDYgKzEyMyw3IEBAIHNl
dChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MKICAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAorICAgIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIKQEAgLTIxOCw2ICsyMTksNyBAQCBzZXQoV2ViS2l0X01FU1NB
R0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbgog
CisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Qg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZWRi
NmNhNTk3OWQyZjRkZWY4YjJiMmU3NzNmOWQ2OWFlNzg2ZTdlOS4uNGE2N2RmOGVkYzNiNGY0ODkx
ODc3MDJlZmJmMDQxYjNkMzRhOTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiArMjAsNyBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMTMxLDYgKzEzMiw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVu
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5t
ZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKaW5kZXggNzU2NzlmNTVmNWFlMzk5YjVlYWY0NzdmMTg5MzI1NmJjMjQ4ODQ0ZC4uN2Nk
M2RiY2NhMzUwYzZlMzgxNGMzNDBjMzkzYzk2M2VkYmI5ODExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNzUsNiArMTc1LDEyIEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMzc3MDFiMDFjM2MxYTJj
MzAwZTFkZDJkNzJlNmI4NTIzN2Y0MjRiNS4uOTc2YjFhNWEzZTVjMGQzMTE1ZDQ0NTBjOTA4NjE1
NzE5ZTZkZWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTcxLDYgKzE3MSw3
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAogCVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MgXAogCVdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAogCVdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCkBAIC0yMjcsNiArMjI4LDcg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzIFwK
IAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAogCUdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCisJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMGUyZTg4MzJiMWUyMGYxZTBmMzE5
ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2UxNGM1MGI3NDE5OTNkNmYzNWE1YTk1ZjVhZmQ4
MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiArNjQsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdMKQor
I2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisjZW5kaWYKKwogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCiAj
aW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKQEAgLTI5MCw2ICsyOTQs
MjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFj
a2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBm
b3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBb
Jl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0
dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0pOwor
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisK
K3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdM
KEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
Cit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAucmVtb3Zl
KGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwg
Zm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFy
Tm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQbGF5aW5nTWFuYWdlcigp
LmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMjY3OGRiYzRl
NWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4ZC4uNWFlZGZiYjRkMmNhYzdiNzY2MGZmMDcz
NjA5ZDM3N2M2MDE1ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisKICNpbmNs
dWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
d1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgpAQCAtMzksNiArNDAsMTEgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBH
UFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworY2xh
c3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIHN0
cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwpAQCAtMTE5LDYgKzEyNiwxMSBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlR3JhcGhpY3ND
b250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAgICAgdm9p
ZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29s
IHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYmKTsK
IApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7Ci0KKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTE5NGZiNGY2MDg1ZDYy
NGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1NGUxNjQ1OTViMGEzNjFkZmU0Yzc1YmZmNDAx
OGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDEw
IEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hN
ZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICAgICB2b2lk
IFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZv
aWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9pZCBSZWxlYXNlR3JhcGhp
Y3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJbmZv
KCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5mbykKICNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc0NDYzNzAzZWRmYThhZDc1MDhlMjcyMGI5YzM3OWUzNjFjNWQ3MGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgorI2luY2x1ZGUgPHd0
Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KQorICAgIDogbV9jb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQ
cm9jZXNzKGF0dHJpYnV0ZXMsICp0aGlzKSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sK
KyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+
bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIG1fY29udGV4dC0+YWRkQ2xpZW50
KCp0aGlzKTsKKyAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEVY
VEVOU0lPTlMpOworICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQt
PmdldFN0cmluZyhSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGV4dGVuc2lvbnMs
IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgp
Cit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7Cit9CisKK0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdl
dCgpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAg
ICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAg
IHJldHVybiBudWxscHRyOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpkaWRDb21wb3NpdGUoKQoreworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNMb3N0KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNv
bnRleHQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFu
Z2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cmVjeWNsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlc2VudChCdWZmZXIgYnVmZmVy
KQoreworICAgIEFTU0VSVCghbV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIG1fZGlzcGxh
eUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKK30KKwordm9pZCogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmRldGFjaENsaWVudCgpCit7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9kaXNw
bGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OnJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCit7CisgICAgaWYg
KHdpZHRoICYmIGhlaWdodCkKKyAgICAgICAgbV9jb250ZXh0LT5yZXNoYXBlKHdpZHRoLCBoZWln
aHQpOworICAgIGVsc2UKKyAgICAgICAgZm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVy
ID0gV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7CisgICAgTWFjaFNlbmRSaWdodCBz
ZW5kUmlnaHQ7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpCisgICAgICAgIHNlbmRSaWdodCA9IGRp
c3BsYXlCdWZmZXItPmNyZWF0ZVNlbmRSaWdodCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoc2VuZFJpZ2h0KSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYgZXh0ZW5zaW9uKQoreworICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9uKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAg
ICBtX2NvbnRleHQtPm1hcmtDb250ZXh0Q2hhbmdlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiZjA1NzIx
MDFkOWJjMGYwOWY3ZGE5NGM5NGU1MzJiYTdmN2MzMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApA
QCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorCisjaW5jbHVkZSA8
V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmln
aHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOworCisvLyBHUFUgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVj
ZWl2ZXMgbWVzc2FnZXMgYWJvdXQgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMKKy8vIGFuZCBpc3N1
ZXMgcmVhbCBHcmFwaGljc0NvbnRleHRHTCBjYWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVz
c2FnZXMuCisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVu
bmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBmaW5hbAorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAg
ICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6Q2xpZW50CisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKCkgZmluYWw7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisK
KyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgorICAgIElQQzo6Q29ubmVjdGlv
biogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmluYWw7CisgICAgdm9p
ZCBmb3JjZUNvbnRleHRMb3N0KCkgZmluYWw7CisgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpIGZp
bmFsOworICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpIGZpbmFs
OworCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVz
LgorICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgZmluYWw7CisgICAgdm9pZCBwcmVzZW50KEJ1
ZmZlcikgZmluYWw7CisgICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgZmluYWw7CisKKyAgICAvLyBN
ZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpOworICAgIHZvaWQgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChTdHJpbmcmJik7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5n
ZWQoKTsKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOworICAgIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYTcxNTI0ZDQwODE5YmEwMzEwY2I0MjAxMzYwNzU2Njg3
ODY4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOTQgQEAK
Ky8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2Vi
Z2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsK
KyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJp
Z2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisjZW5k
aWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAg
ICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisKKyAgICB2b2lkIFNldEZhaWxOZXh0
R1BVU3RhdHVzQ2hlY2soKQorICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJy
b3IpCisgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3Qg
dGV4dHVyZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJf
dCBzaGFkZXIpCisgICAgdm9pZCBCaW5kQXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWlu
dDMyX3QgaW5kZXgsIFN0cmluZyBuYW1lKQorICAgIHZvaWQgQmluZEJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kRnJhbWVidWZmZXIodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFJlbmRlcmJ1ZmZlcih1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kVGV4dHVyZSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxv
YXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHZvaWQgQmxlbmRFcXVhdGlv
bih1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90
IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAgICB2b2lkIEJsZW5kRnVuYyh1aW50MzJf
dCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHZvaWQgQmxlbmRGdW5jU2VwYXJhdGUo
dWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50
MzJfdCBkc3RBbHBoYSkKKyAgICB2b2lkIENoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3Qg
dGFyZ2V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBD
bGVhcih1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0
IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIENsZWFyRGVwdGgoZmxv
YXQgZGVwdGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHZvaWQgQ29s
b3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAg
dm9pZCBDb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5VGV4SW1hZ2Uy
RCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0
LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgYm9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQg
Q3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQ3JlYXRlRnJhbWVidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDcmVhdGVQcm9ncmFtKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUmVuZGVyYnVmZmVyKCkgLT4gKHVpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2hhZGVyKHVpbnQzMl90
IGFyZzApIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENy
ZWF0ZVRleHR1cmUoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBDdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgRGVsZXRlQnVmZmVyKHVpbnQz
Ml90IGFyZzApCisgICAgdm9pZCBEZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUmVuZGVy
YnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVTaGFkZXIodWludDMyX3QgYXJn
MCkKKyAgICB2b2lkIERlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlcHRo
RnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHZvaWQgRGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB2
b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgdm9pZCBEZXRhY2hT
aGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIERpc2FibGUodWlu
dDMyX3QgY2FwKQorICAgIHZvaWQgRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGlu
ZGV4KQorICAgIHZvaWQgRHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBp
bnQzMl90IGNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMy
X3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEVuYWJs
ZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJf
dCBpbmRleCkKKyAgICB2b2lkIEZpbmlzaCgpCisgICAgdm9pZCBGbHVzaCgpCisgICAgdm9pZCBG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1l
bnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB2b2lk
IEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVu
dCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAg
IHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBHZW5lcmF0ZU1pcG1hcCh1
aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRBY3RpdmVBdHRyaWIodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0
aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0
dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJp
bmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U3RyaW5nKHVpbnQz
Ml90IG5hbWUpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdl
cnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjQo
dWludDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgpIC0+IChp
bnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbWkodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90
IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRQcm9ncmFtSW5mb0xvZyh1
aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNo
YWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcw
KSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5
cGUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlLCBHQ0dMaW50IHBy
ZWNpc2lvbikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBh
cmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4
UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9j
YXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dy
YW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3Jt
dWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6
ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAt
PiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFZlcnRleEF0
dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50NjRfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEhpbnQodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBtb2RlKQorICAgIHZvaWQgSXNCdWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0VuYWJsZWQodWludDMyX3QgY2Fw
KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzRnJhbWVidWZm
ZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBJc1Byb2dyYW0odWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU2hhZGVyKHVpbnQzMl90IGFyZzAp
IC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNUZXh0dXJlKHVp
bnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
TGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgdm9pZCBMaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcw
KQorICAgIHZvaWQgUGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisg
ICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgdm9p
ZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2FtcGxlQ292
ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHZvaWQgU2Npc3NvcihpbnQzMl90
IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBT
aGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nIGFyZzEpCisgICAgdm9pZCBTdGVuY2ls
RnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lk
IFN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJf
dCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFzayh1aW50MzJfdCBtYXNr
KQorICAgIHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBt
YXNrKQorICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1
aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2Us
IHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lk
IFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFy
YW0pCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5h
bWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBVbmlmb3JtMWYoaW50MzJfdCBsb2NhdGlvbiwg
ZmxvYXQgeCkKKyAgICB2b2lkIFVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9u
LCBpbnQzMl90IHgpCisgICAgdm9pZCBVbmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm0yZihpbnQzMl90IGxv
Y2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVW5pZm9ybTJmdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9ybTJp
KGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHZvaWQgVW5pZm9y
bTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisg
ICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeikKKyAgICB2b2lkIFVuaWZvcm0zZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBp
bnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZvaWQgVW5pZm9ybTNpdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBV
bmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxv
YXQgdykKKyAgICB2b2lkIFVuaWZvcm00ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBp
bnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBVbmlm
b3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikK
KyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1h
dHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkK
KyAgICB2b2lkIFVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZhbGlkYXRlUHJv
Z3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmVydGV4QXR0cmliMWYodWludDMyX3QgaW5k
ZXgsIGZsb2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJp
YjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVmVydGV4QXR0
cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiB2YWx1
ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNmdih1aW50MzJfdCBpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0
cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcp
CisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYlBvaW50ZXIodWlu
dDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVk
LCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVmlld3BvcnQoaW50
MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZv
aWQgQnVmZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1
c2FnZSkKKyAgICB2b2lkIEJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PiBkYXRhLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlclN1
YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIFJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleEltYWdlMkQw
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVs
cykKKyAgICB2b2lkIFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleFN1YkltYWdlMkQxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQz
Ml90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJE
MCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3Qg
aW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBD
b21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQg
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3Qg
eW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwg
aW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdBcnJheXNJ
bnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50
MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3Qg
bW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQz
Ml90IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5k
ZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheSgpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFy
cmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAp
IC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFy
cmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCBy
ZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWlu
dDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBHZXRCdWZmZXJTdWJE
YXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSkg
LT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90
IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQz
Ml90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIp
CisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
bGF5ZXIpCisgICAgdm9pZCBJbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cykKKyAgICB2b2lkIEludmFs
aWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBSZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAg
ICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgdm9pZCBUZXhJbWFnZTNEMCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBp
eGVscykKKyAgICB2b2lkIFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1YkltYWdlM0QwKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3Qg
ZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRo
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIENvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ29t
cHJlc3NlZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIs
IGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29t
cHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50
MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEdldEZyYWdEYXRhTG9j
YXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1
aW50MzJfdCB2MCkKKyAgICB2b2lkIFVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMy
X3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHZvaWQgVW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9u
LCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAgIHZvaWQgVW5pZm9y
bTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90
IHYyLCB1aW50MzJfdCB2MykKKyAgICB2b2lkIFVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtMnVp
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQor
ICAgIHZvaWQgVW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0
cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEp
CisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3Jt
TWF0cml4NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M3g0ZnYoaW50MzJf
dCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRh
dGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0
cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBWZXJ0
ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90
IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4
QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMy
X3QgeiwgdWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJf
dCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd1Jh
bmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwg
aW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQg
RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lk
IENsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJ1aXYo
dWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlcykK
KyAgICB2b2lkIENsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZm
ZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgdm9pZCBDcmVhdGVRdWVyeSgp
IC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVF1
ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgSXNRdWVyeSh1aW50MzJfdCBxdWVyeSkgLT4g
KGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCZWdpblF1ZXJ5KHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBFbmRRdWVyeSh1aW50MzJfdCB0
YXJnZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1l
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRRdWVy
eU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2FtcGxlcigpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVNhbXBsZXIodWlu
dDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIElzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKSAtPiAo
Ym9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRTYW1wbGVyKHVpbnQz
Ml90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyaSh1
aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lk
IFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9h
dCBwYXJhbSkKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIs
IHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBGZW5jZVN5
bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncykgLT4gKHVpbnQ2NF90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTeW5jKHVpbnQ2NF90IGFyZzApIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlU3luYyh1aW50NjRf
dCBhcmcwKQorICAgIHZvaWQgQ2xpZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3Qg
ZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBp
bnQ2NF90IHRpbWVvdXQpCisgICAgdm9pZCBHZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJf
dCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBD
cmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAg
IHZvaWQgSXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkgLT4gKGJvb2wgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWlu
dDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAg
ICB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9y
PFN0cmluZz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgdm9pZCBHZXRUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91
cworICAgIHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBSZXN1bWVUcmFu
c2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBCaW5kQnVmZmVyQmFzZSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAgdm9pZCBCaW5kQnVmZmVyUmFu
Z2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50
NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBHZXRVbmlmb3JtSW5kaWNlcyh1
aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB1bmlmb3JtTmFtZXMpIC0+IChWZWN0b3I8
dWludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5p
Zm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90PiB1bmlmb3JtSW5kaWNlcywg
dWludDMyX3QgcG5hbWUpIC0+IChWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJp
bmcgdW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1
aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisg
ICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJf
dCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUp
IC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3Jj
WDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3Qg
ZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQz
Ml90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9p
ZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzAp
CisgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCkg
LT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEluc2VydEV2ZW50
TWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmlu
ZyBhcmcwKQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHZvaWQgRHJhd0J1ZmZl
cnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIERyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90
IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZp
c29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCit9CisKKyNlbmRpZgor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlmZmU4YzFmYzdhZmExNzJmMWJiOWM3MzQyNjc1YzVkZmU2ZTE3NmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMCwwICsxLDExODMgQEAK
Ky8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2Vi
Z2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUg
cHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVt
ZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0No
ZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVj
aygpOworICAgIH0KKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAg
fQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29s
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRl
eHR1cmUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7
CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hhZGVyKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90
IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0s
IHNoYWRlcik7CisgICAgfQorICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFy
ZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcmJiBuYW1lKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpOworICAgIH0KKyAgICB2
b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZv
aWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAg
fQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFy
ZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBh
cmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwg
YXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVu
LCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymxl
bmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRF
cXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVx
dWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50
MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIH0KKyAg
ICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3Rvcik7CisgICAg
fQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBk
c3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhh
LCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50
MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRh
cmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
bGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQg
Z3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICB9CisgICAgdm9pZCBj
bGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckRl
cHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwocyk7CisgICAgfQorICAgIHZvaWQg
Y29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oYWxwaGEpKTsKKyAgICB9
CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weVRleElt
YWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGJvcmRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleEltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJv
cmRlcik7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVC
dWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVG
cmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVQcm9ncmFt
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
UmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVGV4dHVyZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjdWxsRmFjZSh1aW50MzJfdCBt
b2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jdWxsRmFjZShtb2RlKTsKKyAgICB9Cisg
ICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1l
YnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0odWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9
CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lk
IGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVGV4dHVyZSh1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKGFyZzApOwor
ICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CisgICAgfQorICAgIHZvaWQgZGVwdGhNYXNrKGJv
b2wgZmxhZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAgfQorICAgIHZvaWQgZGVwdGhSYW5nZShmbG9hdCB6
TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6
TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAs
IHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihh
cmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOworICAgIH0KKyAgICB2b2lkIGRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBk
cmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsK
KyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRw
dHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGVuYWJsZSh1aW50MzJfdCBjYXApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOworICAgIH0KKyAgICB2b2lkIGVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZmlu
aXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZmluaXNoKCk7CisgICAgfQorICAgIHZv
aWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mbHVzaCgpOworICAgIH0KKyAg
ICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
YXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1aW50MzJfdCBhcmczKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQs
IGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyk7CisgICAgfQorICAgIHZvaWQg
ZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50
LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGludDMyX3QgbGV2ZWwpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNo
bWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7CisgICAgfQorICAgIHZvaWQgZnJvbnRGYWNl
KHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyb250RmFjZShtb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CisgICAgfQorICAg
IHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRB
Y3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0
aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFy
ZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bShwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9pZCBnZXRBdHRyaWJMb2NhdGlv
bih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEF0dHJp
YkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcmko
dGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmcodWludDMyX3QgbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBT
dHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gdmFsdWUoc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEo
KSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NCh1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5k
ZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
cG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0
Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMYm9vbGVhbiwgND4gdmFsdWUoc3RhdGljX2Nh
c3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRCb29sZWFu
dihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVm
ZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KHZhbHVlLmRhdGEoKSksIHZhbHVl
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEVycm9yKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVu
dW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRFcnJvcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50
LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJpKHVp
bnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmko
YXJnMCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNp
b25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+LCBpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0ZDo6YXJyYXk8R0NH
TGludCwgMj4gcmFuZ2UgeyB9OworICAgICAgICBHQ0dMaW50IHByZWNpc2lvbiA9IHsgfTsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJl
Y2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJf
dCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNpemUoKSksIHByZWNpc2lvbik7CisgICAgfQorICAg
IHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5n
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
U2hhZGVyU291cmNlKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50
NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdD
R0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2Nh
dGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXpl
KSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFt
LCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxz
aXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYo
cHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZh
bHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1M
b2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50
MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHNpemVpcHRyIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VmVy
dGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGhp
bnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAgfQorICAgIHZvaWQgaXNCdWZmZXIodWludDMy
X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNCdWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAg
IHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNhcCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNFbmFibGVk
KGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1Byb2dyYW0oYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
aXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTaGFkZXIoYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBsaW5lV2lkdGgoZmxv
YXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGluZVdpZHRoKGFyZzApOworICAg
IH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmVp
KHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHBvbHlnb25PZmZz
ZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZm
ZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5k
ZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwor
ICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsKKyAgICB9CisgICAgdm9pZCBzY2lzc29yKGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9Cisg
ICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nJiYgYXJnMSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFyZzAsIGFyZzEpOworICAgIH0KKyAg
ICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBt
YXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1h
c2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwg
dWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsK
KyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2ls
TWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CisgICAgfQorICAg
IHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6
cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6
cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUodWludDMyX3QgZmFjZSwg
dWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBh
c3MpOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBh
cmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFt
ZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJh
bSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlvbiwgeCk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYu
ZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWkoaW50MzJfdCBs
b2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWko
bG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xaXYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwg
di5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwg
aW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0y
aShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJpdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZs
b2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaShp
bnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmKGludDMyX3QgbG9j
YXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24s
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgp
KSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGkoaW50MzJfdCBsb2NhdGlv
biwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihpbnQz
Ml90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4m
JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbSh1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52YWxpZGF0ZVByb2dyYW0oYXJnMCk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKKyAgICB9CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIy
ZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2YodWlu
dDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIz
ZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliNGYodWlu
dDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBl
LCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5
cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB2aWV3cG9ydChpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0K
KyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWlu
dDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0
LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzEpLCB1c2FnZSk7CisgICAgfQorICAgIHZv
aWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1
ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpLCB1c2FnZSk7CisgICAgfQorICAgIHZv
aWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgp
KSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBpeGVsczAoaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVf
dD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBp
eGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBi
b3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lk
Kj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJ
bWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UyRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVy
LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQx
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBp
bWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29t
cHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQp
KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMy
X3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0
LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5j
ZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRp
dmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0
ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVmVy
dGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJv
b2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5KHVpbnQz
Ml90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRWZXJ0ZXhBcnJheShhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0
LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3Jp
dGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlC
dWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4od3JpdGVPZmZzZXQpLCBz
dGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRCdWZm
ZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRh
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hhciwg
ND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1fY29u
dGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCksIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNY
MCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBk
c3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMy
X3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGl0
RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0
WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3Qg
dGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0
dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZl
cih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNo
bWVudHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0
YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0
YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZh
bGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUo
KSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHJlYWRCdWZmZXIodWlu
dDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkQnVmZmVyKHNyYyk7Cisg
ICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdl
MkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9
CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlM0QodGFy
Z2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAg
fQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlw
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1Yklt
YWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0
KSk7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6
b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwor
ICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VT
aXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50
MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qw
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90
IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zm
c2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9n
cmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYWdEYXRhTG9jYXRpb24o
cHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpKGxvY2F0aW9uLCB2MCk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwg
dWludDMyX3QgdjEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRp
b24sIHYwLCB2MSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9u
LCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2
MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbiwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aXYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlv
biwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihpbnQzMl90IGxvY2F0aW9uLCBi
b29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNw
b3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJh
bnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKHVpbnQz
Ml90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwg
dyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3Qg
eSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Qs
IDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVp
dihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQq
Pih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVy
KHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3Ry
aWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xp
bnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKHVpbnQz
Ml90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
TGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xl
YXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBk
cmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRh
KCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJmdih1aW50
MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZnYoYnVm
ZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0
IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCk7CisgICAgfQorICAg
IHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUXVlcnko
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAgfQorICAgIHZvaWQgaXNRdWVyeSh1aW50MzJfdCBx
dWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNRdWVyeShxdWVyeSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpOworICAgIH0KKyAgICB2
b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRRdWVyeSh0
YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90
IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVTYW1wbGVy
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgaXNTYW1wbGVy
KHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2FtcGxlcihzYW1wbGVyKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBz
YW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kU2FtcGxlcih1bml0LCBzYW1w
bGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVy
LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwg
ZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJm
KHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGZs
b2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZmVuY2VTeW5jKHVpbnQzMl90IGNv
bmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHN5bmMgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5mZW5jZVN5bmMoY29u
ZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpKTsKKyAgICB9
CisgICAgdm9pZCBpc1N5bmModWludDY0X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTeW5j
KHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5bmModWludDY0X3QgYXJnMCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGllbnRXYWl0
U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgdGltZW91dCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+
KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMdWlu
dDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywg
aW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT53YWl0U3luYyhyZWlu
dGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFn
cywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0aW1lb3V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0
U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFy
ZzApKSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayhpZCk7CisgICAgfQorICAgIHZvaWQgaXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50
MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgaWQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUcmFuc2Zvcm1GZWVkYmFj
ayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVp
bnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJlZ2luVHJh
bnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7CisgICAgfQorICAgIHZvaWQgZW5kVHJhbnNm
b3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVk
YmFjaygpOworICAgIH0KKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMy
X3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVyTW9k
ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhw
cm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZv
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgcGF1c2VU
cmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBhdXNlVHJhbnNm
b3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7Cisg
ICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBp
bmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVm
ZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZm
ZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIs
IHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAg
fQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0
cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQz
Ml90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dM
dWludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0
QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90PiYmIHVuaWZv
cm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYg
dW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1CbG9ja0luZGV4
KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMy
X3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAgIH0KKyAgICB2b2lkIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9j
a0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiBwYXJhbXMoc3RhdGljX2Nh
c3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRhKCkpLCBwYXJhbXMuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBibGl0
RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNy
Y1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90
IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5ibGl0RnJhbWVidWZmZXJB
TkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0
WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5T0VTKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29s
ZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyYmIGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1h
cmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5n
JiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hH
cm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtl
ckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBp
bnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwg
Y291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0
X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQz
Ml90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpOworICAgIH0KKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCmluZGV4IGI3YmI2M2Iy
OWFkODAyMTcyZGYyN2ExMjg5NWJiMTk5OGZhNGI2YjAuLjI0YzQzN2NhYWU3ZjhmOWE5YWZmOTI3
MDNlZmNmOWRhMDMxZTRjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
YWMvR1BVUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQ
VVByb2Nlc3NNYWMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIlNhbmRib3hJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgot
I2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lzZXhpdHMu
aD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsOSArNDQsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB2b2lkIEdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIDAKICAgICAvLyBIYXZpbmcgYSB3aW5kb3cgc2Vy
dmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNzIHdvdWxkIHJlc3VsdCBpbiBzcGluIGxvZ3Mg
KDxyZGFyOi8vcHJvYmxlbS8xMzIzOTExOT4pLgotICAgIE9TU3RhdHVzIGVycm9yID0gU2V0QXBw
bGljYXRpb25Jc0RhZW1vbih0cnVlKTsKLSAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBlcnJvciA9
PSBub0Vycik7CisgICAgYXV0byByZXR2YWwgPSBDR1NTZXREZW55V2luZG93U2VydmVyQ29ubmVj
dGlvbnModHJ1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmV0dmFsID09IGtDR0Vycm9yU3VjY2Vz
cyk7CisgICAgQ0dTU2h1dGRvd25TZXJ2ZXJDb25uZWN0aW9ucygpOworI2VuZGlmCiAjZW5kaWYK
IAogICAgIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5p
bgppbmRleCBkYjA2ZTUzNGY3ZjUxZDJlYmQwMzgyNWY1ODI0NWY4NDk2ZjhiMTc5Li5lZDEwMGIz
NmVkNmY0NmQ0YWFmNjM1NDQ3Nzg4MmFiNzkzYTExYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vz
cy5zYi5pbgpAQCAtMjA3LDYgKzIwNyw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMi
XkFBUEwsKERpc3BsYXlQaXBlfE9wZW5DTGRpc2FibGVkfElPR3JhcGhpY3NfTEVSKHxfUmVnVGFn
XzF8X1JlZ1RhZ18wfF9CdXN5XzIpfGFsaWFzLXBvbGljeXxib290LWRpc3BsYXl8ZGlzcGxheS1h
bGlhc3xtdXgtc3dpdGNoLXN0YXRlfG5kcnYtZGV2fHByaW1hcnktZGlzcGxheXxzbG90LW5hbWUp
IikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeQVRZLChjYml0c3xmYl8obGluZWJ5dGVz
fG9mZnNldHxzaXplKXxpbnRyZXYpIikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxEZXZpY2VO
YW1lIikgOzsgTmVlZGVkIGJ5IE1ldGFsIGNvbXBpbGVycworICAgIChpb2tpdC1wcm9wZXJ0eSAi
QVRZLEVGSURpc3BsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEZhbWlseU5hbWUiKSA7
OyBEaXR0bwogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQt
cHJvcGVydHkgIkJhY2tsaWdodEhhbmRsZSIpCkBAIC0yMTcsNiArMjE4LDkgQEAKICAgICAoaW9r
aXQtcHJvcGVydHkgIkNhcHNMb2NrRGVsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ2FzZVNl
bnNpdGl2ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJDb25maWdTdGF0ZSIpCisgICAgKGlva2l0
LXByb3BlcnR5ICJEUExhbmVzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua0JpdCIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtSYXRlIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRl
c2NyaXB0aW9uIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRldmVsb3BtZW50IikKICAgICAoaW9r
aXQtcHJvcGVydHktcmVnZXggIyJeRGV2aWNlKCBDaGFyYWN0ZXJpc3RpY3N8RXFJRCkiKQpAQCAt
MjI5LDEwICsyMzMsMTcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIkZhbWlseSBJRCIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJGb3JjZVN1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJG
b3JtYXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVyRW5hYmxlZCIpCisgICAg
KGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlclN0YXJ0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiR1BVQ29uZmlndXJhdGlvblZhcmlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURD
Q0Rpc3BsYXlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURlYnVnTnVsbENsaWVudE1h
c2siKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR3B1RGVidWdQb2xpY3kiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiR1BVUmF3Q291bnRlckJ1bmRsZU5hbWUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAi
R1BVUmF3Q291bnRlclBsdWdpbkNsYXNzTmFtZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJIRVZD
U3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkhJRFBvaW50ZXJBY2NlbGVyYXRpb25U
eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkh3Q3R4Q2FjaGVVcGRhdGUiKQogICAgIChpb2tp
dC1wcm9wZXJ0eS1yZWdleCAjIl5JT0FjY2VsKERpc3BsYXlQaXBlQ2FwYWJpbGl0aWVzfEluZGV4
fFR5cGVzfFJldmlzaW9uKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPKENsYXNz
fE1hdGNoQ2F0ZWdvcnl8TmFtZU1hdGNoKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMi
XklPQXVkaW9Db250cm9sKENoYW5uZWxJRHxJRHxTdWJUeXBlfFVzYWdlfFZhbHVlKSIpCkBAIC0y
ODIsNiArMjkzLDggQEAKICAgICAoaW9raXQtcHJvcGVydHkgIklPUGFyZW50TWF0Y2giKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT1BDSSgoQ2xhc3N8UHJpbWFyeXxQcm9wZXJ0eXwp
TWF0Y2h8RXhwcmVzcyhDYXBhYmlsaXRpZXN8TGluayhTdGF0dXN8Q2FwYWJpbGl0aWVzKSl8TVNJ
TW9kZXxSZXNvdXJjZWR8VHVubmVsbGVkKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1BNSXNQ
b3dlck1hbmFnZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QZXJzb25hbGl0eVB1Ymxpc2hl
ciIpCisKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9QbGF0Zm9ybShTZXJpYWxOdW1i
ZXJ8VVVJRCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qb3dlck1hbmFnZW1lbnQiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiSU9Qcm9iZVNjb3JlIikKQEAgLTMxNyw2ICszMzAsNyBAQAogICAg
IChpb2tpdC1wcm9wZXJ0eSAiUHJvdG9jb2wgQ2hhcmFjdGVyaXN0aWNzIikKICAgICAoaW9raXQt
cHJvcGVydHkgIlJlbW92YWJsZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXlJlc2V0
T24oTG9ja3xVbmxvY2spTXMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiU1dJUF9wcm9wZXJ0aWVz
IikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhZmVFamVjdFJlcXVlc3RlZCIpCiAgICAgKGlva2l0
LXByb3BlcnR5ICJTYW1wbGVSYXRlcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTZXJpYWwgTnVt
YmVyIikKQEAgLTMzOCw2ICszNTIsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXR0YWNoZWQt
Z3B1LWNvbnRyb2wtcGF0aCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXmF1ZGlvLShj
b2RlYy1pbmZvfGRldmljZS1tdmFsdWV8ZGV2aWNlLW52YWx1ZXxzZWxlY3RvcikiKQogICAgIChp
b2tpdC1wcm9wZXJ0eSAiYXYtc2lnbmFsLXR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiYmFj
a2xpZ2h0LVBXTS1mcmVxIikKICAgICAoaW9raXQtcHJvcGVydHkgImJjZFZlcnNpb24iKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oYm9hcmR8ZGV2aWNlfHJldmlzaW9ufHN1YnN5c3Rl
bXx2ZW5kb3IpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImJvb3QtZ2FtbWEtcmVzdG9yZWQi
KQpAQCAtMzUwLDYgKzM2NSwxMSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiY29ubmVjdG9yLXR5
cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oZGV2aWNlfHJldmlzaW9ufHN1YnN5
c3RlbS12ZW5kb3J8dG91Y2gtc2l6ZSktaWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZGV2aWNl
X3R5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1icGMiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiZGlzcGxheS1jb25uZWN0LWZsYWdzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRp
c3BsYXktbGluay1jb21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5
LXBpeGVsLWNvbXBvbmVudC1iaXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktdHlw
ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJkcG0iKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZXJy
b3JkYiIpIDs7IE5lZWRlZCBmb3IgT3BlbkdMIG9uIG9sZGVyIGhhcmR3YXJlCiAgICAgKGlva2l0
LXByb3BlcnR5ICJmaWxldmF1bHQtaW1hZ2UiKSA7OyBOZWVkZWQgYnkgTGF1bmNoU2VydmljZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5LmgKaW5kZXggNmE1YzY3MjVjYWE5YmRiODY3YWI4NmI4YzU3ZjM2ZGUyYzg5NmRjZi4u
YmU3ZjUyMjBiZTliODVmODY4YTVmODM3ZWZlZDY2ZGRmOTVmMjk0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAg
LTM5LDEwICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5jcHAKaW5kZXggNDdmNWQyZjI3MGZhNWRlNGZhZGUxNTE0NDQyMTExNzk0ZWQzNmQy
OC4uMmM1ZTdkZTdkMmU3NTY5NjBhM2YzZWM4NzZjOGI4MjVjNmU0NWI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApp
bmRleCBhOThjZmE0YzlmODAyMzE5MDRmOGVmMGVhYTkzNjIyOWFmYTk3NTk4Li5mZWM2NWNmNjJi
NjY3NGI4MzAwYzUwY2Q0MzM0MTVlOTE1MTE0NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5j
cHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuaAppbmRleCBkODliODAzZjZhYmY0MWM4ZTllZGRlNDE0Mjc2OTMyODI2ZDFiMzM4Li4w
ODFlYjMxODBkMDIxNjRiNWFhM2Q1NDgwNmY3MmM3ZWRjMGNiMWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuaApAQCAtMjcsMTUgKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUg
PFdlYkNvcmUvUG9saWN5Q2hlY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRl
eCA2YmZiZmFmYjIwNDQ3ODMwZDczMGMzOGM1NWQ5MTYwMjJjMjNkMzE2Li4wNmUzMDllNGQ1N2Vh
MDQ3ZjVlZDgyOTAyNThiMTljYmNkYTYxOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTM4LDcgKzM4
LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5LmNwcAppbmRleCAyNDVjZjQwZGZjNmZjNzI0MTc0OTljOTk2ZWVhOTVmMGEzYThkNjlh
Li44NjgyY2Q3OTVhNWY1NDRhYmI3OGU3YzFiODU4N2I5Njg4M2Y5NDk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IDM5
MGMwY2UxYzI3YjYwOGRjOTdhYWZhNTE4NjM2MTg4MGMzYWY0ZDMuLmMzMzc4MzMzYzAyNjY2ZGE2
MWFiYWM2NDk0NzAyMTIxZGI1ZTg2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC0yNyw5ICsyNywx
MSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQog
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1
ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0zOCw3ICs0MCw2IEBACiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IDM2MDMxMGI3
ZDEyMWQyODZkOGQxNjFmMTgzYWJkMGU3NDViODM1MzMuLjg0M2JiMDZmN2I1NmM2ZTNjZmJlZTc5
YTdlNDI4MWVmZWU4ZjlhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTI4LDE0ICsyOCwxNSBAQAogI2lm
IFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2Rlcklk
ZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5o
PgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bW0KaW5kZXggZjhhYmMxZjQwNWZjMTQ2OTQ3NWI0ZDkwYmFkM2Q1M2NhMGY4MDE0ZS4uNjFjNDcw
OGFlOTZkYmNhYTU2OTgwOWVlMTk5NWJlODE2YTkxZmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0y
OCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuaAppbmRleCA3ODhjNWYwMGMwMmY0ZjE0OGZlZWNjZDM4ZDEwNjgxOGIwZDdlOTYxLi4zYWI0
ZTRiMWNmMWMxNDEyMzBjMTNlNDU3NmM1ZWQ2ZTZlZmMyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRN
ZW1vcnkuaCIKQEAgLTM2LDcgKzM3LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29h
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ29jb2EubW0KaW5kZXggN2E2MzM2MzQ3YzAwN2U5N2I3M2I1NDM3NzQ5MTY4MzhkNjQwMzdk
YS4uMWFhNTNjYzJmYjc3YmFmOWUzMjY1MDcyMTA4MDlmZDc2Y2ZiYmYyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q29jb2EubW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24u
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5k
ZXggZjZlZDgxMWY1MzQyZmU0ODU1NTE3NmY4OWQ1MTQ1NzU2MmM2NjU4NS4uMGJjZDU2NzNjOTM0
NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJjMjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9t
UHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgpAQCAtMzksMTAgKzQwLDYgQEAgT0JKQ19DTEFTUyBO
U1VSTFNlc3Npb25Db25maWd1cmF0aW9uOwogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sOwog
I2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0gLy8gbmFt
ZXNwYWNlIElQQwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMTEyLDQgKzEwOSwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmluZGV4IGRkYmU0ZWVkZDQ0MWRmODdjNTVh
ZDMzMGYwNDJjY2RjZmFkZmI5MGIuLjY1MWZmMjU0ZjkwNWMxNmE5MGNiNDgyYzk3NzNkNGFjNzQy
OTRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZE1vbml0b3Iu
aCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDM4YWYzNTA4MDc0
NjQyOTNiOTVmZmFmMDU5ZmRlYzM2OTAxNzcyNzQuLjkzZjAzYTgyNTVmMWFlNzE3MzgzYzAwMjkw
YTI0ZjkxY2E3YzY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNb25pdG9yLmgiCkBA
IC00NCwxMCArNDUsNiBAQCBPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7CiBPQkpDX0NMQVNTIE5TVVJM
U2Vzc2lvbkRvd25sb2FkVGFzazsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4uNzI2
ZGQ5OTBiYWZkNDM5NGI1YWZjMDMyYTFjZjIwZjE4NDljNDlhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
RG93bmxvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMz
ZTc4OWUyMjQ2YzA1YjAxNjVmMWM3MjY3OGZhNTAuLjk4MGEwNmY3ODM5ZGJkNWU5ZjlkNTA0NTQw
OWEzM2Q3N2IxYzAzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRh
VGFzay5oIgpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNDQ5YjEzZDhlMDdiMmNkMDQyYzRi
YTM2MzZhYjc5M2QzN2IxYzNmNC4uYzc3ODg4MTFmMDMyZDU4ZjhiNTI3NzM2ZTFkMjI3ODQxMGY5
MTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5o
CmluZGV4IDMxOTY0MTkwZDE0MWQ1NDlkYTBiYWYyZGM4YmYyOTdiNGU1ODFlODkuLjA0MzRiZjg4
MDlhN2ViM2VjYzE4ZThmNjUwY2MwMjc4YWU2ZWI1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvVGltZXIuaD4KQEAgLTQwLDcgKzQxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5k
ZXggNWI0ODljYzUzOGY3YzA3MTUxMDEwNmM1OGY1YzA5NGVjOWE4ZTFiOC4uNDhjODgzYmZjMGZj
N2Q1MDFjOGE0YTRlNzY4NGNjYzMzZTM4YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgog
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCmluZGV4
IDUyZWMzOTI2OTAyMThlZGU2NjhkNTVlNjM4ZDhlMTc1MDJmZDZlZTUuLjczNDI5YTAyNzkwNmI0
MTZhMzhjMGM2YjM5NDZhMGRiOWZiMjA2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CkBAIC0zNyw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaAppbmRleCBkMzNjYmZmMTA4OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi5k
MzdkNzgwNjk4M2JiYTU0N2NhMGY5MjM1ZWI0YmY2YjczMTU2NWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5o
PgpAQCAtNDMsNyArNDQsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVj
b2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAppbmRleCBkYjU3OTVkZDIxN2Y0NWFkNWY2N2UzMGI3
OTFmOTJlMjc2YzAyOTg2Li45NjFlNDY0NTliZTc3MTc3ZTI2MDVlN2Q4NjUyYWRhODAyMDk3YjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApAQCAt
MzEsOSArMzEsNiBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAjZWxzZQogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dl
YlNvY2tldFRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9X
ZWJTb2NrZXRUYXNrQ29jb2EuaAppbmRleCBkYWM2OTM1MDdlYjNlZmNlYTZkMTA5NDgwMWJjMDFi
MzZmZTI2MzlkLi5lNjgyNmU0N2U4Mzk1OTQwMjhhZjhmNGFlZDIzOTJiNGIwNWQyZjVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0
VGFza0NvY29hLmgKQEAgLTI3LDE1ICsyNywxMiBAQAogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05f
V0VCU09DS0VUKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIE5TVVJM
U2Vzc2lvbldlYlNvY2tldFRhc2s7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNs
YXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCmluZGV4IDg1NTM0ODc0NDA0
Y2UyYmFhNDRhZTY1NjU0N2QzNzIyNTMzMmVhYjguLjkwYmM0MDliZmZiNzBhMGVlOWU3MzU4YjM4
Njc1OTdkMjlmMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
ZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIk5ldHdvcmtTb2Nr
ZXRDaGFubmVsLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291
cC5jcHAKaW5kZXggNDVmYzY2OWQ3NjZhNzYxYzVkNzczZGM5NWYwNTQxYTM4ZTM2ZjhlMy4uYTNl
NzAxNGI1ZDhlYzA5NzM4ZmZhN2Q1NjY0NTQ1MDEwZjA1MzQwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
VGFza1NvdXAuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBlNDIxYjllMWM3MTMxODQz
NGY2NDg3ZjVmY2I1YTZhODdiZDczOTE5Li4wODg5MjM5NTlmZTQ2MGZmMmJiYTRjOGMwODM5OTgw
NjU3YmYzNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAtMjUsMTQgKzI1LDExIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGUwMGEwY2NkZmE1ODc1YzAyOGM1
MDUyMzExNDE3MjhlZTk1YjQzOTIuLmUzOGJjMWM2MGFmNmRjZjAzNjk2NWFhNzhhYWRiZDZkOGQ0
YjYyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNs
dWRlIDx1dGlsaXR5PgpAQCAtNTMsNiArNTQsNDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIgewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQs
IEV4dGVudD4+IHsKKyAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5j
ZTxULCBFeHRlbnQ+OworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAg
aWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVm
ZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25v
ZihUKSk7CisgICAgfQorICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAg
ICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKEV4dGVudCAqIHNp
emVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIEV4dGVudCk7CisgICAgfQorfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwg
YXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5UmVmZXJlbmNl
VHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJl
bmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBlbmNvZGVyLmVuY29kZShz
dGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKSk7CisgICAgICAgIGlm
ICghYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXpl
b2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZl
cmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHVpbnQ2
NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICBy
ZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEg
PSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemUgKiBzaXplb2YoVCksIGFs
aWdub2YoVCkpOworICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKKyAgICB9Cit9
OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8
VD4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0
aW9uU2V0PFQ+JiBvcHRpb25TZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FycmF5UmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzMmJiNDU3YTViODg1ZjNkNTY2ODdlNzlm
MTVjM2EyNjcxYmU2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FycmF5UmVmZXJlbmNlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBJUEMgeworCitpbmxpbmUgY29uc3RleHByIHNpemVfdCBhcnJheVJlZmVyZW5j
ZUR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGFycmF5UmVmZXJlbmNlRHluYW1p
Y0V4dGVudD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4gewor
cHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZl
cmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRhdGEp
CisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlIDxz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgp
KQorICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6ZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9CisKKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIFZlY3RvcjxUPiB2ZWN0b3Io
KSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgY29uc3QgVCogbV9kYXRhIHsgfTsKKyAgICBzaXplX3QgbV9zaXpl
IHsgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PgorY2xhc3Mg
QXJyYXlSZWZlcmVuY2UgeworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0
OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAg
ICAgIDogbV9kYXRhKGRhdGEpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNp
emUgPT0gRXh0ZW50KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4m
IHZlY3RvcikKKyAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKKyAgICB7CisgICAgICAg
IEFTU0VSVCh2ZWN0b3Iuc2l6ZSgpID09IEV4dGVudCk7CisgICAgfQorCisgICAgY29uc3RleHBy
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFFeHRlbnQ7IH0KKworICAgIGNvbnN0ZXhw
ciBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEV4dGVudDsgfQorCisgICAgY29uc3QgVCog
ZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgVmVj
dG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0Owor
ICAgICAgICBpZiAoIWlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRh
LCBFeHRlbnQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBjb25zdCBUKiBtX2RhdGEgeyB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5PgorQXJyYXlSZWZlcmVuY2UoY29uc3QgV1RGOjpWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHk+JikgLT4gQXJyYXlSZWZlcmVuY2U8VD47CisKK30gLy8gbmFtZXNwYWNlIElQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGVjM2QxNGFlOGYz
ZWMyNDcwNTQ3NjNjYWVlOTA5Y2MyYzg3NWY1ZDguLmJiZDdhYmNiNGNkYzYwNDM4MmIxMDY1ZTMz
MjM4NDQ5YzZhYzU5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
QEAgLTIyNywxMCArMjI3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtDdXJyZW50bHlEaXNw
YXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwogCiAgICAgdm9pZCBwb3N0Q29ubmVjdGlvbkRpZENs
b3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBs
ZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PFNlbmRP
cHRpb24+ID0geyB9KTsgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOyAvLyBUaHJlYWQtc2FmZS4KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBT
ZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0
aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCisgICAgLy8gU3luYyBzZW5kZXJzIHNo
b3VsZCBjaGVjayB0aGUgU2VuZFN5bmNSZXN1bHQgZm9yIHRydWUvZmFsc2UgaW4gY2FzZSB0aGV5
IG5lZWQgdG8ga25vdyBpZiB0aGUgcmVzdWx0IHdhcyByZWFsbHkgcmVjZWl2ZWQuCisgICAgLy8g
U3luYyBzZW5kZXJzIHNob3VsZCBob2xkIG9uIHRvIHRoZSBTZW5kU3luY1Jlc3VsdCBpbiBjYXNl
IHRoZXkgcmVmZXJlbmNlIHRoZSBjb250ZW50cyBvZiB0aGUgcmVwbHkgdmlhIERhdGFSZWZlcmVy
ZW5jZSAvIEFycmF5UmVmZXJlbmNlLgorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgp
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1h
aW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5k
RGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVv
dXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7IC8vIE1h
aW4gdGhyZWFkIG9ubHkuCiAgICAgCiAgICAgLy8gVGhyZWFkLXNhZmUuCkBAIC0yNDksNyArMjUx
LDcgQEAgcHVibGljOgogCiAgICAgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRT
eW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2Vu
ZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50
aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAg
ICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRp
b25zKTsKICAgICB9CkBAIC01NTEsNyArNTUzLDcgQEAgdm9pZCBtb3ZlVHVwbGUoc3RkOjp0dXBs
ZTxBLi4uPiYmIGEsIHN0ZDo6dHVwbGU8Qi4uLj4mIGIpCiAgICAgVHVwbGVNb3ZlcjxzaXplb2Yu
Li4oQSksIHN0ZDo6dHVwbGU8QS4uLj4sIHN0ZDo6dHVwbGU8Qi4uLj4+Ojptb3ZlKFdURk1vdmUo
YSksIGIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRT
eW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9u
U2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NF
UlQoVDo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKICAgICBSRUxFQVNFX0FTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CkBAIC01NzAsMTUgKzU3MiwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmCiAgICAgLy8gTm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVwbHku
CiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVz
c2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBzZW5kU3luY09w
dGlvbnMpOwogICAgIGlmICghcmVwbHlEZWNvZGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBEZWNvZGUgdGhlIHJlcGx5LgogICAgIE9wdGlv
bmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3VtZW50czsKICAgICAqcmVw
bHlEZWNvZGVyID4+IHJlcGx5QXJndW1lbnRzOwogICAgIGlmICghcmVwbHlBcmd1bWVudHMpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBtb3ZlVHVwbGUo
V1RGTW92ZSgqcmVwbHlBcmd1bWVudHMpLCByZXBseSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIHJlcGx5RGVjb2RlcjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25u
ZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0
aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVu
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNWZkYTdiZWQyZmU4YzQwNDliNTU4NzA3OWZk
MWUxNjM1NGY0ZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNs
dWRlICJFbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSBJUEMgewotCi12b2lkIERhdGFSZWZlcmVuY2U6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIuZW5jb2RlVmFy
aWFibGVMZW5ndGhCeXRlQXJyYXkoKnRoaXMpOwotfQotCi1ib29sIERhdGFSZWZlcmVuY2U6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewot
ICAgIHJldHVybiBkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFSZWZl
cmVuY2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RhdGFSZWZlcmVuY2UuaAppbmRleCAzNDUwYzMxYjczZGRiNmFhNWVkY2UyYWY4MDAyOTg4
N2M3OThlMjA1Li5kYmIzZDY5MjdmMzQxYzVhYTkzZmMxMDczY2IwNzU2ZTNjYmEzN2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw1NCArMjUs
MTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSAiQXJyYXlSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERlY29kZXI7
Ci1jbGFzcyBFbmNvZGVyOwotICAgIAotY2xhc3MgRGF0YVJlZmVyZW5jZSB7Ci1wdWJsaWM6Ci0g
ICAgRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIERhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEpCi0gICAg
ICAgICwgbV9zaXplKHNpemUpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KLSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0IFZlY3Rvcjx1aW50OF90LCBp
bmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKLSAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkK
LSAgICAgICAgLCBtX3NpemUodmVjdG9yLnNpemUoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQotCi0gICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3QgCi0gICAgeyAKLSAgICAgICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICByZXR1cm4gbV9kYXRhOyAKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1
bHQ7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBtX3NpemUpOwotCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIERhdGFS
ZWZlcmVuY2UmKTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCB1aW50OF90KiBtX2RhdGEgeyBudWxs
cHRyIH07Ci0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLX07Cit1c2luZyBEYXRhUmVmZXJlbmNl
ID0gQXJyYXlSZWZlcmVuY2U8dWludDhfdCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsK
IAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CmluZGV4IDc4YTQ2MzhlYjczMDViZmQxOTEwODcwNjhkMzBiY2RiOGRmZTgyYWUuLjJjYjc5Yjcz
MWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCkBAIC0xODYsMjAgKzE4NiwxNSBAQCBib29sIERlY29kZXI6OmRlY29k
ZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdu
bWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERlY29kZXI6OmRlY29kZVZhcmlhYmxl
TGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCitjb25zdCB1aW50
OF90KiBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplX3Qgc2l6ZSwgc2l6
ZV90IGFsaWdubWVudCkKIHsKLSAgICB1aW50NjRfdCBzaXplOwotICAgIGlmICghZGVjb2RlKHNp
emUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKCFhbGlnbkJ1ZmZlclBv
c2l0aW9uKDEsIHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFhbGlnbkJ1
ZmZlclBvc2l0aW9uKGFsaWdubWVudCwgc2l6ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IG1fYnVmZmVyUG9zOwogICAgIG1fYnVmZmVyUG9z
ICs9IHNpemU7CiAKLSAgICBkYXRhUmVmZXJlbmNlID0gRGF0YVJlZmVyZW5jZShkYXRhLCBzaXpl
KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAogYm9vbCBEZWNvZGVy
OjpyZW1vdmVBdHRhY2htZW50KEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggYjcyZGQ4YWNlMjc3M2RiMzU1OWUzNjZkZDk1MjRmMjM0
MWU1NWUwNi4uMzQ0Y2U2ODgyZmM5MDk4NGIyZmE1N2JmOWM0OGI5NjUwZTBmZjc0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtNDAsNyArNDAsNiBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEltcG9ydGFuY2VBc3NlcnRp
b247CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNzgsOCArNzcs
OSBAQCBwdWJsaWM6CiAKICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExl
bmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIAotICAg
IC8vIFRoZSBkYXRhIGluIHRoZSBkYXRhIHJlZmVyZW5jZSBoZXJlIHdpbGwgb25seSBiZSB2YWxp
ZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgotICAgIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFS
ZWZlcmVuY2UmKTsKKyAgICAvLyBUaGUgZGF0YSBpbiB0aGUgcmV0dXJuZWQgcG9pbnRlciBoZXJl
IHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29k
ZXIgb2JqZWN0LgorICAgIC8vIFJldHVybnMgbnVsbHB0ciBvbiBmYWlsdXJlLgorICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBjb25zdCB1aW50OF90KiBkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShz
aXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgog
ICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShUJiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggZmQ0MDkwNzc0YjJiYzJhNzYyOWI5YzAyZGM1
NTRjNGNkYzk4ZjVjYi4uZTgzYTNlNGFmZjQyYTU3NTUwNWRjOGYwNzMxN2ExYzFhYzE5ZGVhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKKyNpbmNsdWRlICJB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0xNDEsNyArMTQyLDcgQEAg
dm9pZCBFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gb3Jp
Z2luYWwpCiAKICAgICBvcmlnaW5hbC0+c2V0U2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTo6WWVz
KTsKIAotICAgIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2Uob3Jp
Z2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKSk7CisgICAgKnRoaXMgPDwg
RGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJTaXplKCkp
OwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gb3JpZ2luYWwtPnJlbGVh
c2VBdHRhY2htZW50cygpOwogICAgIHJlc2VydmUoYXR0YWNobWVudHMuc2l6ZSgpKTsKQEAgLTIx
NiwxMiArMjE3LDYgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGkKICAgICBtZW1jcHkoYnVmZmVy
LCBkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVWYXJpYWJsZUxlbmd0aEJ5
dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewotICAgIGVuY29k
ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGF0YVJlZmVyZW5jZS5zaXplKCkpKTsKLSAgICBlbmNv
ZGVGaXhlZExlbmd0aERhdGEoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6
ZSgpLCAxKTsKLX0KLQogdm9pZCBFbmNvZGVyOjphZGRBdHRhY2htZW50KEF0dGFjaG1lbnQmJiBh
dHRhY2htZW50KQogewogICAgIG1fYXR0YWNobWVudHMuYXBwZW5kKFdURk1vdmUoYXR0YWNobWVu
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IDBlY2Y1NDFmNzc4NTg1
MzZmMWZjZmE4MzZiNzZmMjQ4MmU0YzlhMTEuLmVhNjE5NjdiZTFlYmNiZDhiNmZiYmFhOGI4NWFm
NDE4ZThkNTBjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAgLTM2LDcg
KzM2LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBlbnVt
IGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDog
dWludDE2X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkgOiB1aW50OF90OwpAQCAtNjIsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cmFwRm9y
VGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCiAgICAgdm9pZCBlbmNvZGVGaXhl
ZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50
KTsKLSAgICB2b2lkIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZl
cmVuY2UmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0
ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZV90PFQ+Pj46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KICAgICB2b2lkIGVuY29kZShUJiYgdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaAppbmRleCA3ZmQxODNhNTZhZTk4YjA2NjQ1ZmY3NTE0OGFjMjk4M2M1
MmU0YWViLi40MTI5ZDRlMmI0OWQ1YzhmYzQxYTJkNjU0YWRjZDg5ZTg2YzYzN2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtOTYsNyArOTcsNiBAQCBzdHJ1Y3QgQ29k
aW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RpbmdUeXBlPGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7CiAgICAgdXNpbmcgVHlwZSA9IERhdGFS
ZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
U2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5k
ZXggNDZlMjFkOGQ5MzZmMmQ4YjUxNjdiMjQ5Zjg4MTExNmZmZWI3ZDRiOS4uNzc0NjFkNTU1Yjcy
OTJjMjBlYmY1MTRhMzAyZDFkYzZlNzc3MDExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNTQsOSArNTQsMTAgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBz
ZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlv
bjo6U2VuZFN5bmNSZXN1bHQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wg
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMg
dGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNv
bmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cyA9IHsgfSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2Fn
ZSBpcyBub3Qgc3luYyEiKTsKIApAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0
eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRz
IHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRT
eW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBBU1NFUlQo
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSk7CiAKQEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBz
ZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRl
bnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZp
bml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkK
KyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVw
bHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3luYzxVPihz
dGQ6OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA3YTNjYjMzODc2
MzZkY2FmY2VhY2VhZDkxYjg2MzliN2JhNzYzNmM2Li41MDBmODM5ZGZhYWU5Mjk3ZjRkYzYzZGM2
NjMwNTg3N2IyMmRmMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNp
bmNsdWRlICJFbmNvZGVyLmgiCkBAIC00OCw3ICs0OSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ29w
eTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiBPcHRpb25hbDxTaGFyZWRCdWZmZXJD
b3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoZGF0YSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAppbmRleCAyZjcyODVhYzBi
NGJkNmRlMTFkZmViOWZlMzI4ZjAxYzk5OTk1MGEwLi5lOTZkZmIxZmJmODkxY2Q0YTBjNzc0ZTg1
YzkwNzg3NThhNmZlODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIK
IAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBu
YW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmluZ1JlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZl
cmVuY2UuY3BwCmluZGV4IDg1MmVmNDNlMDA4NjMxYzlmYWZhODIzMGM5MTljMTdhOWQ0YTI5YjYu
LjIxNjExMzljMzAxNGYwZWFmYjNkYzQ3Yzg1ZGE0MTkwYTJiYTA2NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogCisj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXgg
OGIzNzQwZjRiMTAxYWQ5MGY1MGVkNTdjODUwYjkwMzBmY2M0MzBjMi4uNGIyMGM4NWFjNTM2MjM2
NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAK
IAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk5QT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJOUFJlbW90ZU9i
amVjdE1hcC5oIgogI2luY2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IGFk
NGZjZDlkOGNjZjQyZjEyZWU0ODhlMDEzNDZjNjE5YTcwMWI4ZDIuLmM3YTcwNTNjYmQyNmQyMDQ1
NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAi
UGx1Z2luQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzcs
MTAgKzM4LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDU3M2VkM2Q4ZWU5YmJm
NDEwMzE2OGU3OWEwNTdmOWRiZGI5Yjg2OTUuLjY3MzI0NGE2N2UwOTlmZmI3MTgwN2Q1NTUwYzQ1
NGYzNjMxZGIxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMjAzLDYgKzIwMyw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfbmFtZXNwYWNl
KG5hbWVzcGFjZSwga2luZF9hbmRfdHlwZXMpOgogCiBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVf
Zm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVybiBmcm96ZW5zZXQoWworICAgICAgICAnSVBD
OjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVk
aWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC0yMTQsNiArMjE1LDcgQEAgZGVmIHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRv
Y3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXInLAorICAgICAgICAnV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJywKICAgICAgICAgJ1dlYkNvcmU6Okxp
YldlYlJUQ1NvY2tldElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXll
cklkZW50aWZpZXInLApAQCAtMjQzLDYgKzI0NSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9i
ZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCiAgICAgICAgICdX
ZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAg
ICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQnLApAQCAtNTMwLDYgKzUzMyw3IEBA
IGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdP
cHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9j
b2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0b3In
OiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJz
JzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRl
cnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50
Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6
IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJn
dW1lbnRDb2RlcnMuaCInXX0sCiAgICAgfQogCiAgICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9QPHRl
bXBsYXRlX25hbWU+Lis/KTwoP1A8cGFyYW1ldGVyX3N0cmluZz4uKyk+JywgdGVtcGxhdGVfc3Ry
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCmluZGV4IDYxMzQzYmQ5NDEwNmI2
ZTc4OWY4M2JjMjVkZTc5ZjdhNjA0MDkzY2MuLmM3ODIzMTZmMzA1N2EzY2FmOWQzZTIwNzdjODEz
MjU1M2U2OTc1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElEYXRhLmgiCiAKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRl
ICJFbmNvZGVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFy
eVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAppbmRl
eCA3YmEyMDdhYmIwYWNjYzhhNTcwZjVjNjYzZjQ2Y2FhMjRhODI2ZDkxLi4zMWZkN2QwM2ZhZmUw
Mzk1ODc5NTJhNjM3OGQxYTljOGZmMmY3OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxp
YXJ5UHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2
b2lkIHNldEFwcGxpY2F0aW9uSXNEYWVtb24oKTsKICAgICB2b2lkIGxhdW5jaFNlcnZpY2VzQ2hl
Y2tJbigpOwogICAgIHZvaWQgc2V0UU9TKGludCBsYXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFP
Uyk7CiAjZW5kaWYKQEAgLTE4NCw0ICsxODMsMyBAQCBzdHJ1Y3QgQXV4aWxpYXJ5UHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
OWMyNmRiNGU5YTlmNmJhNzJlNDgyMGJiNDA2YzJjZmJkZTExM2U5Yi4uZGEzNzM0Yzg0ZDY1NGQ4
ZDAzY2E3OTI1ZjdiZDc1OTkxM2JjMzRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMjIxLDQgKzMyMjEsODIgQEAgT3B0aW9uYWw8
UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBXVEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbHBoYTsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7
CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFudGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5w
cmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJZk1h
am9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnBvd2VyUHJl
ZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXM7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRl
cy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0
aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2U7Cisj
aWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy54ckNvbXBhdGlibGU7
CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBo
YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3RlbmNpbCkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlh
cykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2lu
Z0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcykpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmlz
V2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRp
bykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNl
bmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mIGFjdGl2
ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLm5hbWU7CisgICAgZW5jb2RlciA8
PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9CisK
K09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8ubmFt
ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5zaXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5mbzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1NWUyMTFlMTdjNGJlZGVmMTcwNWQ2Li4xZGFlOTY5
NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2ZTlmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzEsNiArNzEsMTMgQEAKICNpbmNsdWRl
ICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBlc0dM
Lmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFz
cyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIxMCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8
U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczsKKyNlbmRpZgorCiBuYW1l
c3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNvcmQ7
CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogfTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IGRlY29kZShEZWNvZGVyJik7
Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAg
LTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZT4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93
ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJl
bmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJl
bmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUwODYzNjVkYmY3N2ZhOThlNDFjMWM3NGEzZTdlMjUu
LmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdiMDQ4YTNkZWM2Y2Y4NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTgs
NiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFz
SW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNz
OwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzOworI2lmIEVOQUJM
RShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzOwor
I2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29k
ZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nl
c3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJHTCkKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVBy
b2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZDkxZTQ2MDM4ZjMwOWI1MTMwYmZkZTU4ZGZm
NGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1YmY0ZjkyY2YwNmZlNWUxMTIwNWE0YjUxMTJiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAg
Ym9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hv
dWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisg
ICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYK
ICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hv
dWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmlu
ZGV4IDliZDhhODE3NTQ5ZjU4ZmUzODNkNzI1ZGE2NjNmM2JjNTRjYTBkNzQuLjc3ZTliNGQ1Y2M3
NTJmYmNkYjZiNjVmOWFkYzI2MDE5NTZjYTE0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgogCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCmluZGV4IDFkODRlMmZlMjY4
ZjM0NjBlYjI5NzVjNDJiYTk1ZDE0ZjFkMjM1Y2YuLmZhMjY4ZDU4NGEwZmM4ZGY4N2EyMWZhNDU2
MDc3YjhjNWQ0MmI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291
cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IENlcnRpZmljYXRlSQogICAgIC8vIEVuY29kZSBzdGFydGluZyBmcm9tIHRoZSByb290IGNl
cnRpZmljYXRlLgogICAgIGZvciAoc2l6ZV90IGkgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5zaXpl
KCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGUgPSBjZXJ0
aWZpY2F0ZXNEYXRhTGlzdFtpIC0gMV0uZ2V0KCk7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlVmFy
aWFibGVMZW5ndGhCeXRlQXJyYXkoSVBDOjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRh
LCBjZXJ0aWZpY2F0ZS0+bGVuKSk7CisgICAgICAgIGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJl
bmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKTsKICAgICB9CiAKICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3Jz
KCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUlu
Zm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2VydGlmaWNhdGVJbmZvJiBjCiAgICAgR1Jl
ZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlOwogICAgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBjaGFpbkxlbmd0aDsgaSsrKSB7CiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBj
ZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJp
YWJsZUxlbmd0aEJ5dGVBcnJheShjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2UpKQorICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0g
Z19ieXRlX2FycmF5X3NpemVkX25ldyhjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsK
QEAgLTI3Nyw0ICsyNzcsMyBAQCBPcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFs
dWU+ICBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdQogI2VuZGlmCiAKIH0K
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggMDkxN2YwMWJlMWM5ZjhjYWEyYWJmN2YwZjg5MGY4OTVhM2YyZWY4
Ni4uNTBjZGUxMmFmYTNhYTdmNzhjMjc5ZWM4ZmI4MTk3NDRiNmZiMWVhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC0yNiw2ICsyNiw3IEBAIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAK
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApAQCAt
MTM3LDcgKzEzOCw2IEBAIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgQG5vLXVuaWZ5CiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0F0dGFj
aG1lbnQuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIEBuby11bmlm
eQotUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlm
eQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAgQG5vLXVuaWZ5CkBAIC02OTMsMyArNjkz
LDUgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKIFdlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuY3BwCisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJl
Y2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDk5NTE4MDczMjgwZTljOTVhMmIy
NWYwMGJjOGJmYjM4ODc2MjEyNDEuLjEzZmE3MTVlNzk2ZmM4NTkyMzE0YjNmZTdmMGQ0ZWE5YWVk
ODk4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTYzLDYgKzYzLDcgQEAgR1BVUHJvY2Vz
cy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KIEdQVVByb2Nlc3Mv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KIAorCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5j
cHAKIAogUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllckNvY29hLmNwcApAQCAtNTczLDYgKzU3NCw4IEBAIFdlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCiBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9X
ZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVy
LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGVDb2NvYS5tbQpAQCAtNjg1LDYgKzY4OCw3IEBAIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCAyZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVm
NWY4MzkzNmIwZDNkLi43MzdiNjI1ODE5ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGll
bnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdD
bGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaAppbmRleCA0ZjM5OGI1MzBmNjA4NTc1Yzk2N2I4M2M3NGZhMmY0MzI4ZjZjZTNiLi44Y2E5
N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4NTYwM2E4YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTMsNyArNTMsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSA9IDA7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0g
eyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pOworICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBDOjpDb25uZWN0aW9uOjpT
ZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkU3Rh
cnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwg
QyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3Rh
cnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CkBAIC02NSw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAg
ICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBP
YmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywg
T3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAg
ICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVv
dXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMg
PSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2Vu
ZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC0xNjMsMTIgKzE2NCwxMiBAQCBib29sIEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
T3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKLWJvb2wgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBs
eSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8SVBD
OjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpTZW5kU3luY1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNz
YWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVj
dGVkKTsKIAogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICBUcmFjZVNjb3BlIHNjb3BlKFN5bmNNZXNzYWdlU3Rh
cnQsIFN5bmNNZXNzYWdlRW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1l
U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDgyM2MyMDJhODU2YTAxMzZkZDllYTc1OWYw
ZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhmNGZiNGY4NzM0ZDdiZmQ2MDhkMjAzODgwNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNz
aW9uLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3ViRnJhbWVT
T0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIE5hdmlnYXRpb25TT0F1dGhvcml6
YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2FkU3RhdGU6Ok9ic2VydmVyIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5o
CmluZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZiYmJhNDJmYzkwY2VjMzU3N2YuLjEyOGEzOTc3
ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM1LDEwICszNiw2IEBACiBPQkpD
X0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0YTEwZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQzZmE5
MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVkNjViNTdlZDBjODAxM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4
dC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAsMTAgKzgxLDYgQEAgY2xhc3MgT3BlblBhbmVs
UGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENv
bG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
Y3BwCmluZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRkNDVmMTJlZGUzNGEwZjc4Y2EwYTYuLjI0OGU1
M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVkYWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBUElT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5j
bHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiTmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDEy
OWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1NmQzY2NjYjIuLmE0ZDhkN2NkODA0ZTY1NjBk
YWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQ29udGVudFdvcmxkU2hhcmVkLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBA
IC00OCwxMCArNDksNiBAQCBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7
CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZlZDFjNjljMDhmYzU1OWZlMmEzZjNi
OTM5NTBlYTgyOGQ2MGQ0YmYuLmNlYzczZDEzZDA5OGQ3MTMxODQ4YWZiNTkzZWYwNzI0MTAyMThl
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTgsNyAr
NTgsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JN
YW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJh
d2luZ0FyZWFQcm94eS5oIgpAQCAtNzkyNyw2ICs3OTI2LDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgPSBw
cmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFibGVkKCk7CiAg
ICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygp
LnVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5z
aG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NG
b3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcGFyYW1ldGVycy5zaG91
bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zv
cldlYkdMRW5hYmxlZCgpOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQ
OURlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxF
KFZQOSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlT
V0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkgJiYgKCFXZWJDb3Jl
OjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0RlY29kZXJFbmFibGVk
T25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2
NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3MTFmOTFiMmU1Li40MzdhYjc1MGIzNWFiMTYz
YjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCiAjaW5jbHVkZSAiQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKICNp
bmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIwMyw3ICsyMDQsNiBAQCBlbnVtIGNsYXNzIElu
c3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7
CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1Y2U2NWU5ZDJkNTY1YjNmMTI1ZjM0NTdhMjU2
ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMyZTZhMTk5NzdkYjYxYmFiNjEzMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMxLDEw
ICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGQ0NDJiNjJiNTIyNTg3ZjkwZmE2
ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2ODhhMjY4MjE5NDFmZjdhNDE4ZjRkZjVhOTc1
YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAg
LTM4LDEwICszOCw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwogfQogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzUy
OGY0NzFmNDYzZGY2YzExMzBhM2ZiODM3NzZiZjFiMmFiZWY5NC4uMGI3NjlmMDM1NGViNGYwMzJk
MjIwOWVjNzliOGZlMjE5ZWZkODg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02OTgsNyArNjk4LDYgQEAKIAkJMkQ5MkE3N0IyMTJC
NkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1
bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRh
Y2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5
MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8q
IENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0
YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07
CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1
QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVu
Y29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4
MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRG
NSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtMTMwMyw2ICsxMzAyLDcgQEAK
IAkJN0FGQkQzNjMyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FG
QkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
ICovOyB9OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJz
aXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9
OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAw
MDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBD
MkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5
NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1
QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZB
RTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtMjcx
OSw3ICsyNzE5LDYgQEAKIAkJMUFDNUZGQzExNzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nl
c3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1Mzc5
MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlTG9hZFN0YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVm
ZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFSZWZl
cmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3RTE4M0JFNTBG
MDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1
QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0
ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00MzY5LDYgKzQzNjgsMTYgQEAKIAkJN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDsgcGF0aCA9
IENsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0
ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3Rl
bmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBB
cnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJl
ZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1
MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMy
RDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMkExQzhDRDk1RjAw
QzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUy
IC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02NjUzLDExICs2NjYyLDExIEBACiAJCQkJMUFFRkQyNzgxMUQxNkM4MTAwODIxOUQz
IC8qIEFyZ3VtZW50Q29kZXIuaCAqLywKIAkJCQkxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyog
QXJndW1lbnRDb2RlcnMuY3BwICovLAogCQkJCTFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBB
cmd1bWVudENvZGVycy5oICovLAorCQkJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJh
eVJlZmVyZW5jZS5oICovLAogCQkJCUJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2ht
ZW50LmNwcCAqLywKIAkJCQlCQ0VFOTY2QjExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5o
ICovLAogCQkJCUJDMDMyREEyMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAqLywK
IAkJCQlCQzAzMkRBMzEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5oICovLAotCQkJCTFB
Qzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkxQUM3
NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlE
MTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0Qx
MDA1OEMxNUEgLyogRGVjb2Rlci5oICovLApAQCAtODMyNywxMSArODMzNiwxNiBAQAogCQkJCTcy
N0E3RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKIAkJCQlGNDA5NENCQTI1NTMwNDdF
MDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwICovLAogCQkJCUY0MDk0Q0I5
MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oICovLAorCQkJCTdC
NjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAq
LywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMx
IC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4
MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5o
ICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCAqLywKKwkJCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8sCisJCQkJN0I5MDQxNjYyNTRBRkRFQjAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLywKKwkJCQk3QjkwNDE2NzI1
NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5p
biAqLywKKwkJCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVF
NjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDA5RDI0
MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJ
CQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmggKi8sCkBAIC04MzQ5LDYgKzgzNjMsMTAgQEAKIAkJCQlGNDA5NENCQzI1NTMwNEFGMDAzRDcz
RTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICovLAogCQkJCUY0MDk0Q0JCMjU1MzA0
QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQz
MjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCisJCQkJ
N0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAq
LywKKwkJCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuaCAqLywKKwkJCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW4gKi8sCisJCQkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8sCiAJCQkJNTVB
RDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUw
NjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAog
CQkJCTU1MDY0MEEzMjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgg
Ki8sCkBAIC0xMTE2NSw2ICsxMTE4Myw3IEBACiAJCQkJMUFFRkQyRjcxMUQxODA3QjAwODIxOUQz
IC8qIEFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMEM0QTEyQjE2MzM0
MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3NUM0
NEEyMUFBMzE3MTAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJzICov
LAorCQkJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUFGQTYzNEYyMzRGN0M2NDAwRkZBODY0IC8qIEFzeW5jUmV2
YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VFOTY2RDExMkZBRjU3MDA2QkNDMjQg
LyogQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzIzMyw3ICsxMzI1Miw2IEBACiAJ
CQkJMkQ5MkE3ODUyMTJCNkFCMTAwRjQ5M0ZEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMw
MEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTJEOTJBNzdFMjEyQjZBNzEwMEY0OTNGRCAvKiBE
YXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdGMjEyQjZBNzEwMEY0
OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5REFBMzhDMjRDQkExQTgw
MDc5M0Q3NSAvKiBEZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJEMEM1NkZFMjI5RjFERUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAppbmRleCBmOTJkYTZhNDdmN2UyNGYzODM5
OWFhMzY5OGEyMTI5MGQzNjFkNGE2Li5jOWRjNjgyYjg3NTQ5YjgyNTBkYjIyYjJhMWNlMjE1NTUw
MDBjZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBAIC0zNiwxMCArMzYsNiBAQAogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi1uYW1l
c3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFBheW1lbnRDb29yZGluYXRvcjsKIGNsYXNzIFBheW1lbnRDb250YWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDJjMGRmNWI5ZjU0OTY4NDdlZDY2OTEwYmYyZjM5YjJjZGM2MGNhMDIuLjViZThiOTk3
NTIwYzRhZDdmMWI0NDA3YWU3MjA0Yzg0YTk5ODg3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM1LDEwICszNSw2
IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5h
Z2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE3
OTE4ZTRiNTBjOWI3Y2Y1YjJlNzliMDc3ZDAzNTIxMmM2MTI2NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
VHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0YTA2ZmIwMDc2YWNkM2Zk
MzJiM2E0YjZiMDlkNjhkMDI3YmI1ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoYXR0cmlidXRlcykpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cnMpCisgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZShhdHRycykKK3sKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2Vp
dmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0
KCksICp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpLCAwKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoKQoreworICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBt
ZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1lc3NhZ2VSZWNlaXZl
ck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHBs
YXRmb3JtU3dhcENoYWluKCkucmVjeWNsZUJ1ZmZlcigpOworI2VuZGlmCit9CisKK0lQQzo6Q29u
bmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50
NjQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOworICAg
IG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBy
ZXBhcmVGb3JEaXNwbGF5KCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VuZFJp
Z2h0IGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQ7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVy
U2VuZFJpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1
dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBpZiAo
ZGlzcGxheUJ1ZmZlcikgeworICAgICAgICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dhcENoYWluKCk7
CisgICAgICAgIHNjLnJlY3ljbGVCdWZmZXIoKTsKKyAgICAgICAgc2MucHJlc2VudCh7IFdURk1v
dmUoZGlzcGxheUJ1ZmZlciksIG51bGxwdHIgfSk7CisgICAgfQorI2Vsc2UKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJl
cGx5KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyNlbmRpZgorICAg
IG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRl
bnNpb25FbmFibGVkKGV4dGVuc2lvbiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNpbXVsYXRlQ29u
dGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgbm90IGltcGxlbWVudGVk
IGJlY2F1c2UgaXQncyBub3QgY2xlYXIgdGhpcyBpcyB0aGUgcmlnaHQgd2F5LiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MzQ5CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzQ3JlYXRlZChTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiBy
ZXF1ZXN0ZWRFeHRlbnNpb25zKQoreworICAgIGlmIChtX2RpZEluaXRpYWxpemUpIHsKKyAgICAg
ICAgLy8gSW5pdGlhbGl6YXRpb24gdGltZWQgb3V0IGJlZm9yZSwgc28gbG9zZSB0aGUgY29udGV4
dCBub3cuCisgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
bml0aWFsaXplKGF2YWlsYWJsZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAg
IG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6d2FzTG9zdCgpCit7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0
b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5mb3JjZUNvbnRleHRMb3N0KCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ2hhbmdlZCgpCit7CisgICAg
Zm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xp
ZW50LT5kaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFVudGlsSW5pdGlhbGl6ZWQoKQoreworICAg
IGlmIChtX2RpZEluaXRpYWxpemUpCisgICAgICAgIHJldHVybjsKKyAgICBSZWY8SVBDOjpDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CisgICAgaWYgKGNvbm5lY3Rpb24tPndhaXRG
b3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpXYXNDcmVhdGVkPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcywg
SVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMp
KQorICAgICAgICByZXR1cm47CisgICAgLy8gVGltZWQgb3V0LCBzbyByZXBvcnQgaW5pdGlhbGl6
ZWQgd2l0aCBkdW1teSBkYXRhLiBXZSBzaG91bGQgbG9zZSB0aGUgY29udGV4dC4KKyAgICB3YXND
cmVhdGVkKCIiLCAiIik7CisgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFyayB0aGUgY29udGV4dCBh
cyBsb3N0LCBidXQgaXQncyBub3Qgc2FmZSB0byBmb3JjZSBsb3N0IGluIHRoaXMgY2FsbCBzdGFj
ay4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDgyNzQ2YTMyYzQ5ODM0NDRmOGJk
MWRmY2VkNjk3MTczMDQ5YjU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTAs
MCArMSw0MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKwor
I2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisv
LyBXZWIgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGlu
dGVyZmFjZS4gVGhlIGltcGxlbWVudGF0aW9uCisvLyBjb252ZXJ0cyB0aGUgaW50ZXJmYWNlIHRv
IGEgc2VxdWVuY2Ugb2YgSVBDIG1lc3NhZ2VzIGFuZCBzZW5kcyB0aGUgbWVzc2FnZXMgdG8KKy8v
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIEdQVSBwcm9jZXNzLgorLy8gVGhlIGltcGxlbWVu
dGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBmaW5h
bAorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk+CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkgZmluYWw7
CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgorICAgIElQQzo6Q29ubmVj
dGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRf
dCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCisgICAgdm9pZCByZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgp
IGZpbmFsOworICAgIHVzaW5nIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjppc0VuYWJsZWQ7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOworICAgIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAg
IHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIq
KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0ltYWdlRGF0YSgpIGZpbmFsOworCisgICAgLy8gRnVuY3Rpb25zIHdpdGggYSBnZW5l
cmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LgorICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFs
OworICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOworICAg
IGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgZmluYWw7CisgICAgdm9pZCBh
Y3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpIGZpbmFsOworICAgIHZvaWQgYXR0YWNoU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpIGZp
bmFsOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwg
R0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCBiaW5k
QnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5k
Q29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwg
R0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDR0xlbnVt
IG1vZGUpIGZpbmFsOworICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1v
ZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1bmMoR0NH
TGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1
bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3Jj
QWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBjaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9pZCBjbGVhcihHQ0dM
Yml0ZmllbGQgbWFzaykgZmluYWw7CisgICAgdm9pZCBjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVk
LCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZp
bmFsOworICAgIHZvaWQgY2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKSBmaW5hbDsKKyAgICB2
b2lkIGNsZWFyU3RlbmNpbChHQ0dMaW50IHMpIGZpbmFsOworICAgIHZvaWQgY29sb3JNYXNrKEdD
R0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xi
b29sZWFuIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
KSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlUHJvZ3JhbSgpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUmVuZGVyYnVm
ZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTaGFkZXIoR0NHTGVudW0g
YXJnMCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUZXh0dXJlKCkgZmluYWw7
CisgICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0
ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlRnJh
bWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVBy
b2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVJlbmRl
cmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVUZXh0dXJl
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZXB0aEZ1bmMoR0NHTGVu
dW0gZnVuYykgZmluYWw7CisgICAgdm9pZCBkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykgZmlu
YWw7CisgICAgdm9pZCBkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZh
cikgZmluYWw7CisgICAgdm9pZCBkZXRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZShHQ0dMZW51bSBj
YXApIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGlu
ZGV4KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZShHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIHZv
aWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZv
aWQgZmluaXNoKCkgZmluYWw7CisgICAgdm9pZCBmbHVzaCgpIGZpbmFsOworICAgIHZvaWQgZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykgZmlu
YWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcz
LCBHQ0dMaW50IGxldmVsKSBmaW5hbDsKKyAgICB2b2lkIGZyb250RmFjZShHQ0dMZW51bSBtb2Rl
KSBmaW5hbDsKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7
CisgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgYm9vbCBnZXRBY3RpdmVV
bmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUlu
Zm8mIGFyZzIpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsK
KyAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0
RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsK
KyAgICB2b2lkIGdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2
YWx1ZSkgZmluYWw7CisgICAgR0NHTGludDY0IGdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CisgICAgR0NHTGludDY0IGdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1
aW50IGluZGV4KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYo
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CisgICAg
R0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0xlbnVtIHBuYW1lKSBmaW5h
bDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5
cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBH
Q0dMaW50KiBwcmVjaXNpb24pIGZpbmFsOworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0VGV4UGFyYW1ldGVy
ZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdl
dFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVu
aWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4g
dmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMc2l6ZWlwdHIg
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmlu
YWw7CisgICAgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7
CisgICAgR0NHTGJvb2xlYW4gaXNCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICBHQ0dMYm9vbGVhbiBpc0VuYWJsZWQoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICBHQ0dM
Ym9vbGVhbiBpc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICBHQ0dMYm9vbGVhbiBpc1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIEdDR0xib29sZWFuIGlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgbGluZVdpZHRoKEdDR0xmbG9hdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmtQ
cm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwaXhlbFN0b3Jl
aShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBwb2x5Z29u
T2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykgZmluYWw7CisgICAgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9p
ZCBzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpIGZp
bmFsOworICAgIHZvaWQgc2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHNoYWRlclNvdXJjZShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc3RlbmNp
bEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOwor
ICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5j
LCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFz
ayhHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NH
TGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3AoR0NH
TGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKKyAgICB2
b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xl
bnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJm
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7
CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHkpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQg
eikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRmKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZh
bHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsK
KyAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2
b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZv
aWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0LCAxPiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4g
dmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAz
PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliUG9p
bnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9v
bGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAg
IHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVh
ZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZp
bmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOworICAgIFBs
YXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXkoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0
ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xl
YW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQg
YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBj
b3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdl
dCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAg
dm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NH
TGludCBsZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJh
bWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNo
bWVudHMpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAg
ICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKSBmaW5hbDsKKyAgICB2
b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAg
R0NHTGludCBnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHVpbnQgdjApIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJ1aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50
IHYyKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVp
bnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTN1
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZv
aWQgdmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdD
R0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2
YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGlu
dHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0g
bW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVy
cyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1
ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2
YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpIGZpbmFs
OworICAgIHZvaWQgY2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpIGZpbmFsOworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KFBs
YXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUXVlcnkoUGxh
dGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVt
IHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAgdm9pZCBlbmRRdWVy
eShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0
UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmlu
YWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgR0NH
TGJvb2xlYW4gaXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAg
dm9pZCBiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
IGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBH
Q0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25k
aXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTeW5j
KEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU3luYyhHQ0dMc3luYyBhcmcw
KSBmaW5hbDsKKyAgICBHQ0dMZW51bSBjbGllbnRXYWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkgZmluYWw7CisgICAgdm9pZCB3YWl0
U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0
KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFN5bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2Jq
ZWN0IGlkKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRm
b3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdD
R0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBiZWdp
blRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpIGZpbmFsOworICAgIHZv
aWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2V0VHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
aW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1G
ZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5h
bDsKKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXJS
YW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1
ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0cikgZmluYWw7CisgICAgVmVjdG9y
PEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dM
aW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZl
Y3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7Cisg
ICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZp
bmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBp
c1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBi
aW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBTdHJp
bmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzAp
IGZpbmFsOworICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpIGZpbmFsOworICAgIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCByZWFk
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50
ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclBh
cmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBm
aW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCog
cGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxv
YXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVu
dW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJv
b2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSBmaW5h
bDsgLy8gTk9MSU5UCisgICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogdmFsKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRR
dWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIC8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK3Byb3RlY3RlZDoKKyAgICAvLyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCisgICAgdm9pZCB3YWl0VW50aWxJbml0
aWFsaXplZCgpIGZpbmFsOworCitwcml2YXRlOgorICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2Vp
dmVkLgorICAgIHZvaWQgd2FzQ3JlYXRlZChTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBT
dHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICB2b2lkIHdhc0xvc3QoKTsKKyAgICB2
b2lkIHdhc0NoYW5nZWQoKTsKKworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgYm9vbCBtX2Rp
ZEluaXRpYWxpemUgeyBmYWxzZSB9OworICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciB7IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSB9OworfTsKKworLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2lu
ZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2Vi
Z2wgc2NyaXB0Lgorc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMZW51bSwgdWludDMy
X3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xib29sZWFuKSA9PSBzaXplb2YoYm9vbCkp
Oworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMYml0ZmllbGQsIHVpbnQzMl90Pik7
CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xieXRlLCBpbnQ4X3Q+KTsKK3N0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVieXRlLCB1aW50OF90Pik7CitzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xzaG9ydCwgaW50MTZfdD4pOworc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWVfdjxHQ0dMdXNob3J0LCB1aW50MTZfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWVfdjxHQ0dMaW50LCBpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZV92PEdDR0xzaXplaSwgaW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxH
Q0dMdWludCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGZs
b2F0LCBmbG9hdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMaGFsZmZsb2F0
LCB1aW50MTZfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMY2xhbXBmLCBm
bG9hdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdm9pZCwgdm9pZD4pOwor
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxQbGF0Zm9ybUdMT2JqZWN0LCB1aW50MzJfdD4p
Oworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludHB0cikgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7
CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMc2l6ZWlwdHIpID09IHNpemVvZih1aW50NjRfdCkp
Oworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHZvaWRwdHIpID09IHNpemVvZih1aW50NjRfdCkp
Oworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGNoYXIpID09IHNpemVvZih1aW50OF90KSk7Citz
dGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMaW50NjQpID09IHNpemVvZihpbnQ2NF90KSk7CitzdGF0
aWNfYXNzZXJ0KHNpemVvZihHQ0dMdWludDY0KSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRp
Y19hc3NlcnQoc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YodWludDY0X3QpICYmIHNpemVvZihH
Q0dMc3luYykgPT0gc2l6ZW9mKGludHB0cl90KSk7CisvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWYyYjMyYjJiYzEwMTBlZjhlY2QwYWY1Nzc3YWJkNGZhMDhhM2M5
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMx
IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFdhc0NyZWF0ZWQoU3Ry
aW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCisg
ICAgdm9pZCBXYXNMb3N0KCkKKyAgICB2b2lkIFdhc0NoYW5nZWQoKTsKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVu
Y3Rpb25zR2VuZXJhdGVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTRhNDQzMTU2MjExY2M3MTg1MTM3MzM4
Y2FjYzdjZTUwMzU3OTVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2Vu
ZXJhdGVkLmNwcApAQCAtMCwwICsxLDE2NDcgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMg
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0
R1BVU3RhdHVzQ2hlY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50
aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkKK3sKKyAgICBib29sIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0OjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVUZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1H
TE9iamVjdCBzaGFkZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZm
ZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJnMSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1H
TE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
VGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0
LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xj
bGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRDb2xvcihyZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uKEdDR0xlbnVt
IG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJs
ZW5kRXF1YXRpb24obW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUo
R0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFscGhhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJH
QiwgbW9kZUFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9y
LCBHQ0dMZW51bSBkZmFjdG9yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3RvciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
bGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVu
dW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwg
c3JjQWxwaGEsIGRzdEFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNr
RnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXIoR0NHTGJpdGZpZWxk
IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNs
ZWFyKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NH
TGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckNvbG9yKHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1w
ZiBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhclN0ZW5jaWwoR0NHTGludCBz
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0
ZW5jaWwocyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dM
Ym9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbG9yTWFzayhzdGF0
aWNfY2FzdDxib29sPihyZWQpLCBzdGF0aWNfY2FzdDxib29sPihncmVlbiksIHN0YXRpY19jYXN0
PGJvb2w+KGJsdWUpLCBzdGF0aWNfY2FzdDxib29sPihhbHBoYSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBpbGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVC
dWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9n
cmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVj
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmUoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UoR0NHTGVudW0g
bW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Vs
bEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVCdWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRl
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTaGFk
ZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlVGV4dHVyZShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5j
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1
bmMoZnVuYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0
YXRpY19jYXN0PGJvb2w+KGZsYWcpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoUmFuZ2UoR0NHTGNs
YW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aFJhbmdlKHpOZWFyLCB6RmFyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0
YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBj
YXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2Fi
bGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWlu
dCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJh
eXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzKG1vZGUs
IGZpcnN0LCBjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRz
KG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjplbmFibGUoR0NHTGVudW0gY2FwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpmaW5pc2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpGaW5pc2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Rmx1c2goKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVy
dGFyZ2V0LCBhcmczKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0
YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpmcm9udEZh
Y2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAo
R0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
QXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUlu
Zm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFt
LCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0
cmliOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK2Jvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwg
YXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9u
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJp
KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1
ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0cmluZyhHQ0dMZW51bSBuYW1lKQorewor
ICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGbG9hdHYoR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUu
YnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpS
ZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBs
eS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1
ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpS
ZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBs
eS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgIAorfQorCitH
Q0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMaW50
NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQgaW5kZXgpCit7CisgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVn
ZXI2NGkocG5hbWUsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRJbnRlZ2VyNjRpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5W
YWx1ZSk7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJv
Z3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVh
bnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkKK3sKKyAgICBJ
UEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFu
dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0Qm9vbGVhbnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1
ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihib29sKSk7
CisgICAgCit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVy
cm9yKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3I6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNo
bWVudCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNoYWRlcmkoYXJnMCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFNoYWRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworU3Ry
aW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2coUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9M
b2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5m
b0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJU
eXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwg
R0NHTGludCogcHJlY2lzaW9uKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwg
Mj4gcmFuZ2VSZXBseTsKKyAgICBpbnQzMl90IHByZWNpc2lvblJlcGx5ID0geyB9OworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1h
dDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9uUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWVtY3B5
KHJhbmdlLmRhdGEsIHJhbmdlUmVwbHkuZGF0YSgpLCByYW5nZS5idWZTaXplICogc2l6ZW9mKGlu
dDMyX3QpKTsKKyAgICAgICAgaWYgKHByZWNpc2lvbikKKyAgICAgICAgICAgICpwcmVjaXNpb24g
PSBwcmVjaXNpb25SZXBseTsKKyAgICB9Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworR0NHTGZsb2F0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9h
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRh
LCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAg
IAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1pdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBs
eTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBs
eSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5k
YXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgIAorfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUp
Cit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVl
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNl
bmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwg
dmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitHQ0dMc2l6ZWlwdHIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVy
dGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1
aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmV0dXJuVmFsdWUpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpIaW50KHRhcmdldCwgbW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZl
cihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcjo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dD
R0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZChHQ0dMZW51
bSBjYXApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5hYmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQor
eworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojps
aW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmtQcm9n
cmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6TGlua1Byb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhl
bFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0
IHVuaXRzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
b2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFnZShHQ0dM
Y2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2Fz
dDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAs
IGNvbnN0IFN0cmluZyYgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U2hhZGVyU291cmNlKGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3Rl
bmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1
bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xl
bnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1Nl
cGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFz
ayhHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTdGVuY2lsTWFzayhtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2Vw
YXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNr
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFp
bCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0g
emZhaWwsIEdDR0xlbnVtIHpwYXNzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3Mp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWkobG9j
YXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmZ2
KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
MmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwg
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0yaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgs
IEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtM2Z2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xp
bnQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3Qq
Pih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxv
YXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGZ2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGko
bG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYu
ZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9z
ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0
PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dy
YW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
YWxpZGF0ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZihHQ0dM
dWludCBpbmRleCwgR0NHTGZsb2F0IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmKGluZGV4LCB4KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
LCAxPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZmxvYXQgeCwgR0NHTGZsb2F0IHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
LCAyPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQsIDM+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0
YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZihHQ0dM
dWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZs
b2F0IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1
ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRl
eEF0dHJpYjRmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQg
c2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0
cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0
YXRpY19jYXN0PGJvb2w+KG5vcm1hbGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0
ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
YXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCksIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0
YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEu
ZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsK
KyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDEodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhT
dWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRl
eFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50
LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWJEaXZpc29yKGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVZlcnRleEFycmF5KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRl
eEFycmF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4
QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZl
cnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dD
R0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXkoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZm
ZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dM
aW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBh
cmc0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4g
ZGF0YSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRh
LmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7
CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1l
YnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xp
bnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdD
R0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihz
cmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1h
c2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBh
dHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGF0dGFjaG1lbnRzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0
YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRh
Y2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEp
LCBhdHRhY2htZW50cy5idWZTaXplKSwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZEJ1ZmZlcihzcmMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNh
bXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdl
M0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFN1YkltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxz
LmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJl
c3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2Vk
VGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWkobG9jYXRpb24sIHYwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYx
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
MnVpKGxvY2F0aW9uLCB2MCwgdjEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0
aW9uLCB2MCwgdjEsIHYyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00
dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRh
dGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0ydWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTN1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9z
ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1N
YXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDRmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
TWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0
cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwg
dyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFs
dWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
STR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwg
R0NHTHVpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQs
IDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Qs
IDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVl
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWlu
dCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBH
Q0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1Jhbmdl
RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMo
bW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
PiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJf
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2
YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZl
cmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSks
IHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3Rl
bmNpbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xl
YXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVF1ZXJ5KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVy
eShxdWVyeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xl
YW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0
IHF1ZXJ5KQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5KHF1ZXJ5KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RW5kUXVlcnkodGFyZ2V0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRRdWVyeSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMdWlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3Jt
R0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
cikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJh
bWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQg
cGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNh
bXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
YW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGZsb2F0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVy
UGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1l
dGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHN5bmMgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZs
YWdzKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxh
Z3MpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYzo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90Pihy
ZXR1cm5WYWx1ZSkpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1N5bmMoR0NHTHN5bmMgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5j
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYzo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTeW5jKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVs
ZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xpZW50V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0
aW1lb3V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpX
YWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
YXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZW91dCkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U3luY2koR0NHTHN5bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTeW5jaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQ
bGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9y
bUZlZWRiYWNrKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9y
bUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2socHJpbWl0aXZlTW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFRyYW5z
Zm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmdz
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdz
LCBHQ0dMZW51bSBidWZmZXJNb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdz
LCBidWZmZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
ZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBh
cmcyKQoreworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc6OlJlcGx5
KGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhdXNlVHJhbnNm
b3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJCYXNlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0
YXJnZXQsIGluZGV4LCBidWZmZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdlKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4
LCBidWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1ZlY3Rv
cjxHQ0dMdWludD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUluZGlj
ZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9y
bU5hbWVzKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5k
aWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K1ZlY3RvcjxHQ0dMaW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4g
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1z
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKK3sKKyAgICBTdHJpbmcgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxv
Y2tOYW1lOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tC
aW5kaW5nKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxv
Y2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1
aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4gcGFyYW1zUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9n
cmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdjo6UmVwbHko
cGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweShwYXJhbXMuZGF0YSwgcGFyYW1zUmVwbHku
ZGF0YSgpLCBwYXJhbXMuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK0dD
R0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwg
R0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RY
MCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZp
ZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNY
MSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
dGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5n
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW5zZXJ0RXZlbnRN
YXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb3BHcm91cE1h
cmtlckVYVCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVChHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1j
b3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5h
bGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdD
R0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRW
ZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5P
TElOVAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHZhbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9i
amVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggYWVmODNlMjU4ODg5YTViZTgyNjdhNjhiMWM2
OWZlYzVhMzRlMDM4Ni4uNmE0YWRmNWQ2ZDM0YTdjNjkxYmZmMDBlZWNlMDFmYzdhYTg5NDAyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFw
aGljc0NvbnRleHQmLCBjb25zCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKQorYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50
LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuY3BwCmluZGV4IDk1YzgzNmU2OTUwNDFkOTdkMjU5MDM2ZmQ3M2RmZjVjNDZiOGZmOTEu
LmM4YzU4MjkwNTBhNTI1OGY5ZDkzMTk3NmI5NWYwNWU1OTdhNTZiMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogCiAgICAgYXV0byYgY29u
bmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwotICAgIGJvb2wgZGlkU3Vj
Y2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRTeW5jKAorICAgIGF1dG8gZGlkU3Vj
Y2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRTeW5jKAogICAgICAgICBNZXNzYWdl
czo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24o
bV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwKICAgICAgICAg
TWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklEKSwgMCk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAg
ICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKICAgICBnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKICAgICBtX3JpbmdCdWZmZXIt
PmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7Ci0gICAgbV9hdWRpb0J1
ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsK
KyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZm
ZXJMaXN0PihzdHJlYW1Gb3JtYXQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nv
dXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKaW5kZXggYjhmNDVhNmQ1YmI0ZGI0NjA5ODgwMTI0M2Ji
NWU5MzE3YjFlM2UyYi4uNjViOGZkMGQ3NzM0N2U5MzhiNTY0NTgyMjZiNzhkYTQzYzk3ODkxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKQEAgLTI2LDcg
KzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJj
ZVByb3ZpZGVyTWFuYWdlci5oIgogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKaW5kZXggZTU5ZTFiMDZiNDQ3ZTVkODBjYTYxMDUy
YzZjN2EzMmM0YmExNDJlNi4uODE5NDA5MGM5MzNiMmYxMWE2NDYwYWIzYzE3NzJkMzc2MTYzNzEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaApAQCAtMjcsNiAr
MjcsOSBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApp
bmRleCAwZGI4NWFlOWJkMjQxZWJhMWJkYTRlNjIyNDQwZjYzMjhlMWQ4YTBiLi4yOTdlZWJkYTE5
MTg5ZGZlMGNmZTZjMWVkNzY5YWFjYjlkNmQ5MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckNvcHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggYjlhMDFiMDYyNWUzYjdj
N2YwMTE4NGE4M2MzNmU1NDkxMjJmMDlhOC4uMTUxNzJjOWY2MjEwYmY0Zjk1ZTBjNmFhNzkzNmM2
MjJlYThkOTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKQEAgLTQ0LDcgKzQ0LDYg
QEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRl
UmVtb3RlLmgKaW5kZXggYjdjZWRiN2U4Mzk0Zjk5YmE5Y2ZiMGEyYWMyYTk3ODExYjNjNDE4Zi4u
NzcwMmQxYjcwMmQxMjE2MmUxOWFiOWE2ZGFhNGM1OTc1MTg2MmYyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRl
UmVtb3RlLmgKQEAgLTMzLDEwICszMyw2IEBACiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZEdlbmVyaWNDdWU7CiBjbGFzcyBJU09XZWJWVFRDdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmNwcAppbmRleCAwYzZmNzNkMDcxNDRiNTYyNjc2OTM2N2M5ZjJhM2E0MDE3ZWFk
ZTgwLi4xNjhlZjQzNWRkZTU2MTRkMzBmM2JlMjg2NzBhNDdhZWQ2MTZkZTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJMaWJXZWJS
VENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2Fn
ZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmgKaW5kZXggNzM5YTQ5NmVmNDk0Y2I0YTYxODU2NmZmYzY0ZDRhMjY0YTc0
ZTlkMC4uNGJlYWUwNjIzMTdiYTI2YTYwNjgzZjFmNDUxMjMzZWIxMDczYWE3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVu
dGlmaWVyLmgiCkBAIC00Myw3ICs0NCw2IEBAIHVzaW5nIENWUGl4ZWxCdWZmZXJQb29sUmVmID0g
c3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAppbmRleCAyZGFkMjAzODQyZjBlNTUzZmUzYjQ2MjQ0MWVlOTRmYTI2NDkzYTEx
Li5jMjhjZTdmMmUxN2U4OWE4ZTUxODZhNzcwNmEyZThhNDRmNmI3ZTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVCdW5k
bGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VHlwZXMu
aD4KQEAgLTU0LDcgKzU1LDYgQEAgY2xhc3MgRGF0YTsKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
RGVjb2RlcjsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2MSw0ICsxNjEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMzA2NGU5YzRh
ZmNjMmNmZjU0YTMyNWUyNTMxZWQwNTIyYTAwMTM5My4uYjk3OTQ2NTllYWJkMTg0YjM4OWMwNmQx
MzJmOGM0MmY4MDUyM2NjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM0LDEwICszNCw2
IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg2NTcxMWIzNjZjMjhkZjQ4NGI0Y2RjMDdhYTNmY2Yz
ZGNlYmYyZjYuLjY5NDg5NmM5OTdhNDk0MGRiYWIyZGE3NjU3ODIwYTI3OGFmMWRjNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJSZXNvdXJjZUxvYWRlci5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggNTgzZTM3OWM4OWVj
ZmE5NTMwYjBhYmZhMWM2OWZlYTlkNTM5NjZmYi4uN2UxZDQ5OTQ3MTVmODg0OWNlOGJmZTVlYzM0
NTVkNDczNzc4MDBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtMzYsNyArMzcsNiBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTRl
ZjBkMWZjZTJlNjAxZGY0NDljZmY4NTM5ZmJkMTY0NzkzZWJlMi4uZmY2OWY1NjA5ZTU3N2NhYzc3
N2YwNGFmYTc0YWYyMTA3NDg2NGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAKLSNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBmNTM0
NzgzNDdlNzc1ZGYzN2VhOTc2MzRjMjMzMDkzMmI0YTE0ZDI4Li5hZDdmZjE4N2RiYjQzNTNiOWVk
M2JjNTdjNWJhMmM0YWE0ZThjZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtTZW5kUXVldWUuaD4KQEAgLTM4LDcgKzM5LDYgQEAKIG5hbWVzcGFjZSBJUEMgewog
Y2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmluZGV4IGFmMjQyY2QyYjU5NWFjNGE0NDg0
Mjk3YmU1ZDVjZmUxOGQ0OGYzMjQuLjdkMDA3MzY5YjljY2U4NWI4ZjA1NDU3ZDY2NmQxZTQ0NTFi
OTZjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0U3RyZWFtLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29j
a2V0U3RyZWFtTWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKaW5kZXggZGQwODIwMTA3MTJiOWY1ZGI5ZmViZDg4ZGE2
NjliNmRmNjFkMGYyOS4uYjQzY2IyZWZhZDFlMTAxZWUyNjViOTNkZGU5YjA2MTI3MzZhMDk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtSGFuZGxlLmg+CkBA
IC0zMyw3ICszNCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFz
cyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1NvY2tldC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1NvY2tldC5oCmluZGV4IGNiNDhlMDU3MzQ4YTJlODY2YjA5MWZmNWFjODcyNjA1
Y2ExOTJkZDUuLjMyM2YyNWVlOGZkODFiMDI2MzBkMmYyNTlhMWFmYjg4NGI0Y2Y1ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDU29ja2V0LmgKQEAgLTM1LDcgKzM1LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApp
bmRleCBlYTUzNTk2MDEwOWZlZTZkYzQ4MDVjZjY4OTEyNzk4ZWU5YWI2ZjAzLi40MGI0YzhmMjEy
OWNmMTIzM2ExYjMxYjg1MTI3ZTdhN2U5ZTNkN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC02MCwxMCArNjAsNiBAQCBPQkpD
X0NMQVNTIFBERlNlbGVjdGlvbjsKIE9CSkNfQ0xBU1MgV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5
T2JqZWN0OwogT0JKQ19DTEFTUyBXS1BERkxheWVyQ29udHJvbGxlckRlbGVnYXRlOwogCi1uYW1l
c3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCAzMzQ3NjRhY2UyYThjNDM4NTg4YjMxOTgwNjJmMzY1YTM2NmU4YmRhLi41YjI3
MzJmMmM0ZTRjNDgzZWJmODQwODdhOGMyNjM0ZTlkNTQ5MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtMTA4LDYgKzEwOCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CkBAIC05MTIsNiArOTE2LDIyIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJl
CiAgICAgcmV0dXJuIG1fcGFnZS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5j
cmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKKworUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUGxhdGZv
cm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QKK3sKKyAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIFVOVVNFRF9WQVJJQUJMRShob3N0V2luZG93RGlz
cGxheUlEKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlKGF0dHJpYnV0ZXMpOworI2Vsc2UKKyAgICByZXR1cm4gbnVs
bHB0cjsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1l
JiwgR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZWMxNGZkYjE2
YzgxY2MxMjcwNmNmY2I1OWU5OWYyY2QzMzc2MGRjOC4uMTIxNWY5MmEwMzE5NTgwYTBkZGQ5MjEw
NTEzZGQyZDVkMzA1MDUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQzLDcgKzI0MywxMSBA
QCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZv
cm1hdCkgY29uc3QgZmluYWw7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFJlZlB0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5
SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAjZW5kaWYKKyNlbmRpZgorCiAK
ICAgICBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2Vycygp
IGNvbnN0IGZpbmFsCiAgICAgewpAQCAtNDAzLDYgKzQwNyw3IEBAIHByaXZhdGU6CiAKICAgICBt
dXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHsgZmFs
c2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9s
bGJhciB7IGZhbHNlIH07CisKICAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY2NDIxNDc3YTU2Y2Vl
MWI0NTlhYjFiNzBkOGRjYWQ5ZDNkYWZjMzQuLmQ0NjMzZGRiNmNjNjQ5ODAzYjkyNDU3NTYyNWJm
YTUyOGMxN2Q0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC00MjIsNiArNDIyLDkgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwg
bV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyB9CiAgICAgLCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2Vz
cyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hv
dWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQ
VVByb2Nlc3MgfQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICAsIG1fc2hvdWxkUmVuZGVyV2ViR0xJ
bkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzfQor
I2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgICwgbV9uZWVkc0luQXBw
QnJvd3NlclByaXZhY3lRdWlya3MgeyBwYXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFj
eVF1aXJrcyB9CiAjZW5kaWYKQEAgLTcyNSw3ICs3MjgsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgaWYgKFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIqIG1hbmFnZXIgPSB3ZWJQcm9j
ZXNzLnN1cHBsZW1lbnQ8V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcj4oKSkKICAgICAgICAgbV9w
YWdlLT5zZXR0aW5ncygpLnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobWFuYWdlci0+bWVk
aWFLZXlTdG9yYWdlRGlyZWN0b3J5KCkpOwogI2VuZGlmCi0gICAgCiAgICAgaWYgKHBhcmFtZXRl
cnMudmlld1NjYWxlRmFjdG9yICE9IDEpCiAgICAgICAgIHNjYWxlVmlldyhwYXJhbWV0ZXJzLnZp
ZXdTY2FsZUZhY3Rvcik7CiAKQEAgLTM3OTMsNiArMzc5NSw5IEBAIHZvaWQgV2ViUGFnZTo6dXBk
YXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyht
X3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhtX3Nob3VsZFJlbmRlckRPTUlu
R1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vz
c0Zvck1lZGlhKG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzKTsKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdM
KG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpOworI2VuZGlmCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShJUENfVEVTVElOR19BUEkpCkBAIC02OTkwLDYgKzY5OTUsNyBAQCB2b2lkIFdlYlBh
Z2U6OnN5bmNocm9uaXplQ09SU0Rpc2FibGluZ1BhdHRlcm5zV2l0aE5ldHdvcmtQcm9jZXNzKCkK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtX2lkZW50aWZpZXIsIG1fY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zKSwgMCk7CiB9CiAKKwogI2lmIEVOQUJMRShNRURJQV9VU0FHRSkKIHZvaWQg
V2ViUGFnZTo6YWRkTWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9uKE1lZGlhU2Vzc2lvbklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBVUkwm
IHBhZ2VVUkwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggZTdmOGMwYTNiNjA0ZTdhYTE1N2M3NDAyMzFlNTU1NzQ5ZDRlZjdjNy4uMjExMGEzMmY2
NzBmMDBmYTI0NGZlNmY5ZDc5NWE2ZGRmNjBkMTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJp
bmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKICNpbmNs
dWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTE2MCw3ICsxNjEsNiBAQCBjbGFzcyBBcnJheTsKIAog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTEyNTcsNyAr
MTI1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci0gICAgYm9vbCBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmNXaXRoRGVsYXll
ZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKICAg
ICAgICAgY2FuY2VsR2VzdHVyZXNCbG9ja2VkT25TeW5jaHJvbm91c1JlcGxpZXMoKTsKICAgICAg
ICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBTZWNv
bmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nl
c3NXaWxsU3VzcGVuZCk7CkBAIC0xODI2LDYgKzE4MjYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9z
aG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRQ
bGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBi
b29sIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJvb2wgbV9uZWVkc0luQXBwQnJvd3Nl
clByaXZhY3lRdWlya3MgeyBmYWxzZSB9OwogI2VuZGlmCkBAIC0yMTgzLDQgKzIxODYsMyBAQCBp
bmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29u
c3QgV2ViQ29yZTo6RnJhbWUmKSBjbwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IGU1NzVmY2EwMTlmNmIxMmE4ZjRkYWU1Y2IxZDY4MmRhNGU0MzZlYjkuLjg0ZTI4
NDExY2ZkZGQ5MWY5YTVkNDdjMjFkNzFlOWRiNmQ3YzYzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC01MTcsNyArNTE3
LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2
ZW50JiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBJbnRlcnByZXQgdGhlIGV2ZW50IGltbWVkaWF0
ZWx5IHVwb24gcmVjZWl2aW5nIGl0IGluIFVJIHByb2Nlc3MsIHdpdGhvdXQgc2VuZGluZyB0byBX
ZWJQcm9jZXNzIGZpcnN0LgogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7Ci0gICAg
Ym9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5
RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKSwgcGxhdGZvcm1FdmVu
dC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCisgICAgYXV0byBzZW5k
UmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRp
dG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgp
ID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkludGVycHJldEtleUV2ZW50OjpSZXBseShldmVudFdhc0hhbmRsZWQpLCBtX2lk
ZW50aWZpZXIpOwogICAgIHJldHVybiBzZW5kUmVzdWx0ICYmIGV2ZW50V2FzSGFuZGxlZDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBmMmYyMjgyMmM3YjIy
M2ZjYTU5Zjk1NTczZDExZGM5OWIxMDM0ODExLi41ODJlZTc1ZDk5YTc0MjQyNTRhMzlkYWIyMDZm
ODQ2MTczNGFkOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0xOTQyLDYgKzE5NDIsMjAgQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CisKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVBy
b2Nlc3NGb3JXZWJHTChib29sIHVzZUdQVVByb2Nlc3NGb3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQ
VVByb2Nlc3NGb3JXZWJHTCA9IHVzZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworYm9vbCBXZWJQ
cm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQorCisjZW5kaWYKKwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
ZTljNDdkYjRjNDQ3YzBmNGFiNjI3YzA5NGI1ZjY4ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMy
NzY0YzRkODUzNzkwOTBiMmNiY2E3M2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC0zNDcsNiArMzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUdQVVBy
b2Nlc3NGb3JET01SZW5kZXJpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9y
TWVkaWEoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29y
ZTo6UmVuZGVyaW5nUHVycG9zZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgc2V0VXNl
R1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wpOworICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVy
aW5nRm9yV2ViR0woKSBjb25zdDsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpA
QCAtNjg3LDYgKzY5MSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JD
YW52YXNSZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yRE9N
UmVuZGVyaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsg
ZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JX
ZWJHTCB7IGZhbHNlIH07CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMjIyN2I3YjVl
NDZjMjQ0NGQ4OWRiNzQ1ZTc2MmE5MGM0ODUzZDkyLi5mZTM5YjAzZDlhNWE0OGFmNDE3NGJjZTY5
YWNmYjdhNzc2ZmNiZTU1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIHJlbW90ZSB2
ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUgcHJvY2Vzcy4KKyAgICAgICAgQ3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDIGFuZCBpcyBpbmNvbXBsZXRl
LgorCisgICAgICAgIEFkZCB0aGUgY29kZSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgdGhlIGltcGxl
bWVudGF0aW9uLiBDdXJyZW50bHkKKyAgICAgICAgdGhlIGdlbmVyYXRvciBnZW5lcmF0ZXMgYSBX
ZWJLaXQgSVBDIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFRoZSBpbnB1dCBkZWZpbml0aW9u
IHRvIHRoZSBnZW5lcmF0b3IgaXMgdGhlIHByb3h5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGhl
YWRlciBmaWxlcy4KKyAgICAgICAgVGhlIG91dHB1dCBvZiB0aGUgZ2VuZXJhdG9yIGlzCisgICAg
ICAgICAgIC0gV2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZmlsZQorICAgICAgICAgICAt
IE1lc3NhZ2Ugc2VuZGVyIGNvZGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHJlY2VpdmVyIGFuZCBw
YXlsb2FkIGludm9jYXRpb24gY29kZQorCisgICAgICAgIFRoZSBnZW5lcmF0b3IgY29udmVydHMg
R3JhcGhpY3NDb250ZXh0R0wgR0NHTCAtcHJlZml4ZWQgdHlwZXMgdG8KKyAgICAgICAgc2l6ZWQg
SVBDIHR5cGVzLgorCisgICAgICAgIFRoZSBnZW5lcmF0b3IgaXMgaW52b2tlZCBkdXJpbmcgZGV2
ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIHN0b3JlZCBpbiB0aGUg
cmVwb3NpdG9yeS4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDogQWRk
ZWQuCisKIDIwMjAtMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkYWJsZS93cml0YWJsZSB0byBSVENSdHBTRnJhbWVU
cmFuc2Zvcm0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBi
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGRjMGUzYmI0
M2Q1NDEwNWU4YzdhNDAzOTIzMzNhNjcwNzVhYzNiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC0wLDAgKzEsMTAzMCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uMworIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBzb3VyY2UgZmlsZXMgZm9yIFdlYkdM
IEdQVSBwcm9jZXNzIElQQy4KKyMKKyMgcHl0aG9uMyAtbSBibGFjayAtbCAxNTAgVG9vbHMvU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisjIHB5dGhvbjMgLW0gbXlweSBUb29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGVudW0KK2lt
cG9ydCBwYXRobGliCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBjb2xsZWN0aW9ucwor
Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgRGljdCwgSXRlcmFibGUsIENhbGxhYmxlLCBUdXBs
ZSwgU2V0LCBPcHRpb25hbCwgR2VuZXJhdG9yLCBJdGVyYXRvciwgQ291bnRlcgorCityb290X2Rp
ciA9IChwYXRobGliLlBhdGgoX19maWxlX18pLnBhcmVudCAvICIuLiIgLyAiLi4iKS5yZXNvbHZl
KCkKK2V4dGVuc2lvbnNfaW5wdXRfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYkNvcmUi
IC8gInBsYXRmb3JtIiAvICJncmFwaGljcyIgLyAiRXh0ZW5zaW9uc0dMLmgiCisKK2Z1bmN0aW9u
c19pbnB1dF9mbnMgPSBbCisgICAgcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldl
YlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaCIKK10KK3R5cGVzX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJL
aXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaCIKKworCit0ZW1wbGF0ZV9wcmVhbWJsZSA9ICIiIi8qIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisv
LyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBl
ZGl0LgorIiIiCitjb250ZXh0X2Z1bmN0aW9uc19mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAi
V2ViS2l0IiAvICJHUFVQcm9jZXNzIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIKK2NvbnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlID0g
KAorICAgIHRlbXBsYXRlX3ByZWFtYmxlCisgICAgKyAiIiIvLyBUaGlzIGZpbGUgc2hvdWxkIGJl
IGluY2x1ZGVkIGluIHRoZSBwcml2YXRlIHNlY3Rpb24gb2YgdGhlCisvLyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBpbXBsZW1lbnRhdGlvbnMuCisjcHJhZ21hIG9uY2UKK3t9CisKKyIiIgorKQor
Y29udGV4dF9tZXNzYWdlc19mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJH
UFVQcm9jZXNzIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW4iCitjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0gKAorICAgIHRlbXBsYXRlX3ByZWFt
YmxlCisgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisK
K21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQge3sKKyAg
ICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0
IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0Ep
CisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYK
KyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2
b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7fQorfX0KKworI2VuZGlmCisKKyIiIgor
KQorCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAi
V2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCIKK2NvbnRleHRfcHJveHlf
ZnVuY3Rpb25zX3RlbXBsYXRlID0gKAorICAgIHRlbXBsYXRlX3ByZWFtYmxlCisgICAgKyAiIiIK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFt
ZXNwYWNlIFdlYktpdCB7ewore30KKworfX0KKworI2VuZGlmCisKKyIiIgorKQorCisKK2RlZiB3
cml0ZV9maWxlKGZuLCBuZXdfY29udGVudHMpOgorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVu
KGZuKSBhcyBmOgorICAgICAgICAgICAgaWYgZi5yZWFkKCkgPT0gbmV3X2NvbnRlbnRzOgorICAg
ICAgICAgICAgICAgIHJldHVybgorICAgIGV4Y2VwdDoKKyAgICAgICAgcGFzcworICAgIHdpdGgg
b3BlbihmbiwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKG5ld19jb250ZW50cykKKworY2xh
c3MgY3BwX3R5cGUob2JqZWN0KToKKyAgICB0eXBlX25hbWU6IHN0cgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0cik6CisgICAgICAgIHNlbGYudHlwZV9uYW1lID0gdHlw
ZV9uYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlw
ZV9uYW1lCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKHNl
bGYudHlwZV9uYW1lKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBy
ZXR1cm4gc2VsZi50eXBlX25hbWUgPT0gb3RoZXIudHlwZV9uYW1lCisKKyAgICBkZWYgaXNfdm9p
ZChzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUgaW4gWyJ2b2lk
IiwgIkdDR0x2b2lkIiwgImNvbnN0IHZvaWQiLCAiY29uc3QgR0NHTHZvaWQiXQorCisgICAgZGVm
IGlzX2NvbnN0KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZS5z
dGFydHN3aXRoKCJjb25zdCAiKQorCisgICAgZGVmIGlzX2NvbnRhaW5lcihzZWxmKSAtPiBib29s
OgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfc3Bhbihz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19keW5hbWlj
X3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNf
cG9pbnRlcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBp
c19jb25zdF9wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisg
ICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoK
KyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXRfZGVjYXlfdHlwZShzZWxmKSAtPiAn
Y3BwX3R5cGUnOgorICAgICAgICBpZiBzZWxmLmlzX2NvbnN0KCk6CisgICAgICAgICAgICByZXR1
cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lWzY6XSkKKyAgICAgICAgcmV0dXJuIHNlbGYK
KworICAgIGRlZiBnZXRfcnZhbHVlX3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAg
cmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFtZSArICImJiIpCisKKyAgICBkZWYgZ2V0
X3BvaW50ZXJfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2Nw
cF90eXBlKHNlbGYudHlwZV9uYW1lICsgIioiKQorCitjbGFzcyBjcHBfdHlwZV9jb250YWluZXIo
Y3BwX3R5cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIGNvbnRh
aW5lcl9uYW1lIDogc3RyLCBjb250YWluZWRfdHlwZSA6IGNwcF90eXBlLCBhcml0eSA6IE9wdGlv
bmFsW2ludF0gPSBOb25lKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9u
YW1lKQorICAgICAgICBzZWxmLmNvbnRhaW5lcl9uYW1lID0gY29udGFpbmVyX25hbWUKKyAgICAg
ICAgc2VsZi5jb250YWluZWRfdHlwZSA9IGNvbnRhaW5lZF90eXBlCisgICAgICAgIHNlbGYuYXJp
dHkgPSBhcml0eQorICAgIGRlZiBpc19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIFRydWUKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iCisgICAgZGVmIGlzX2R5bmFtaWNf
c3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9
PSAiR0NHTFNwYW4iIGFuZCBzZWxmLmFyaXR5IGlzIE5vbmUKKyAgICBkZWYgZ2V0X2NvbnRhaW5l
cl9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZQorICAgIGRl
ZiBnZXRfYXJpdHkoc2VsZikgLT4gT3B0aW9uYWxbaW50XToKKyAgICAgICAgcmV0dXJuIHNlbGYu
YXJpdHkKKyAgICBkZWYgZ2V0X2NvbnRhaW5lZF90eXBlKHNlbGYpIC0+IGNwcF90eXBlOgorICAg
ICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZQorICAgIGRlZiBpc19vdXRwdXRfYnVmZmVy
X3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVkX3R5cGUu
aXNfY29uc3QoKQorCitkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUgOiBz
dHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CisgICAgbSA9IHJlLm1hdGNoKHIi
KFtcdzpdKyk8KC4rKT4kIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1
cm4gTm9uZQorICAgIGNvbnRhaW5lcl9uYW1lID0gbVsxXQorICAgIHRlbXBsYXRlcyA9IG1bMl0K
KyAgICBhcml0eSA9IE5vbmUKKyAgICBtID0gcmUubWF0Y2gociIoW14sXSspLFxzKihcZCspIiwg
dGVtcGxhdGVzKQorICAgIGlmIG06CisgICAgICAgIHRlbXBsYXRlcyA9IG1bMV0KKyAgICAgICAg
YXJpdHkgPSBpbnQobVsyXSkKKyAgICByZXR1cm4gY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFt
ZSwgY29udGFpbmVyX25hbWUsIGdldF9jcHBfdHlwZSh0ZW1wbGF0ZXMpLCBhcml0eSkKKworY2xh
c3MgY3BwX3R5cGVfZnVuY3Rpb24oY3BwX3R5cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
eXBlX25hbWUgOiBzdHIsIHJldHVybl92YWx1ZV90eXBlIDogY3BwX3R5cGUsIGFyZ3VtZW50X3R5
cGVzIDogTGlzdFtjcHBfdHlwZV0pOgorICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0
eXBlX25hbWUpCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX3R5cGUgID0gcmV0dXJuX3ZhbHVl
X3R5cGUKKyAgICAgICAgc2VsZi5hcmd1bWVudF90eXBlcyA9IGFyZ3VtZW50X3R5cGVzCisKK2Rl
ZiBjcHBfc3BsaXRfYXJnc19zcGVjcyhhcmdzX3NwZWMgOiBzdHIpIC0+IEl0ZXJhdG9yW3N0cl06
CisgICAgICMgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzM1MjcyNDUvcHl0
aG9uLXNwbGl0LWJ5LWNvbW1hLXNraXBwaW5nLXRoZS1jb250ZW50LWluc2lkZS1wYXJlbnRoZXNl
cworICAgIGNvbW1hID0gciIsKD8hKD86W148XSpcPFtePl0qXD4pKltePD5dKlw+KSIKKyAgICBy
ZXR1cm4gZmlsdGVyKE5vbmUsIFthLnN0cmlwKCkgZm9yIGEgaW4gcmUuc3BsaXQoY29tbWEsIGFy
Z3Nfc3BlYy5zdHJpcCgpKV0pCisgICAgCitkZWYgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uKHR5
cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfZnVuY3Rpb25dOgorICAgIG0gPSBy
ZS5tYXRjaChyJyguKilcKCguKilcKScsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm5fdmFsdWVfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFd
KQorICAgIGFyZ3NfdHlwZXMgPSBbZ2V0X2NwcF90eXBlKGEpIGZvciBhIGluIGNwcF9zcGxpdF9h
cmdzX3NwZWNzKG1bMl0pXQorICAgIHJldHVybiBjcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUs
IHJldHVybl92YWx1ZV90eXBlLCBhcmdzX3R5cGVzKQorICAgICAgICAKKyMgUG9pbnRlciBvciBy
ZWZlcmVyZW5jZQorY2xhc3MgY3BwX3R5cGVfaW5kaXJlY3QoY3BwX3R5cGUpOgorICAgIGNhdGVn
b3J5IDogc3RyCisgICAgdmFsdWVfdHlwZSA6IGNwcF90eXBlCisgICAgCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY2F0ZWdvcnkgOiBzdHIsIHZhbHVlX3R5cGUgOiBj
cHBfdHlwZSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAg
ICAgICAgc2VsZi5jYXRlZ29yeSA9IGNhdGVnb3J5CisgICAgICAgIHNlbGYudmFsdWVfdHlwZSA9
IHZhbHVlX3R5cGUKKworICAgIGRlZiBpc19jb25zdF9wb2ludGVyKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBp
c19wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5k
IG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfY29uc3RfcmVmZXJlbmNlKHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicgYW5kIHNlbGYuaXNfY29uc3QoKQor
ICAgIGRlZiBpc19yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5
ID09ICcmJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19ydmFsdWVfcmVmZXJl
bmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJiYnCisgICAgZGVm
IGdldF92YWx1ZV90eXBlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZV90eXBlCisK
K2RlZiBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25h
bFtjcHBfdHlwZV9pbmRpcmVjdF06CisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYmJCIs
IHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYm
JCIsIHR5cGVfbmFtZSkgCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGly
ZWN0KHR5cGVfbmFtZSwgJyYmJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRj
aChyImNvbnN0ICguKykmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9
IHJlLm1hdGNoKHIiKC4rKSYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAgIHJldHVy
biBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcmJywgZ2V0X2NwcF90eXBlKG1bMV0pKQor
ICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKylcKiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90
IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKylcKiQiLCB0eXBlX25hbWUpCisgICAgaWYg
bToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyonLCBnZXRf
Y3BwX3R5cGUobVsxXSkpCisgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBjcHBfZXhwcihvYmpl
Y3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgZXhwcjogc3RyCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIGV4cHI6IHN0cik6CisgICAgICAgIHNlbGYudHlwZSA9
IHR5cGUKKyAgICAgICAgc2VsZi5leHByID0gZXhwcgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLmV4cHIKKworCitDcHBFeHByQ29udmVydGVyID0gQ2FsbGFi
bGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHByXQorCisKK2RlZiBjcHBfcmVpbnRlcnBy
ZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjYXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBl
KSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdOgorICAgIGRlZiBj
cHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNw
cF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYic3Rh
dGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4ocmVpbnRlcnByZXRfY2FzdDx7c3RyKGNhc3RfdGhy
b3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRf
Y2FzdF9mcm9tX3BvaW50ZXIKKworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXJf
dGhyb3VnaChjYXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4
cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdOgorICAgIGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90
b19wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6Cisg
ICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInJlaW50ZXJwcmV0X2Nhc3Q8e3R5cGUudHlw
ZV9uYW1lfT4oc3RhdGljX2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIp
fSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcgorCitkZWYg
Y3BwX3N0YXRpY19jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4
cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9u
YW1lfT4oe3N0cihleHByKX0pIikKKworCitkZWYgY3BwX2ltcGxpY2l0X2Nhc3QoZXhwcjogY3Bw
X2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIo
dHlwZSwgc3RyKGV4cHIpKQorCisKK2RlZiBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252
ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9l
eHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUo
KS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5
cGUpfShyZWludGVycHJldF9jYXN0PHtlbGVtZW50X3BvaW50ZXJfdHlwZX0+KHtzdHIoZXhwcil9
LmRhdGEoKSksIHtzdHIoZXhwcil9LnNpemUoKSkiKQorCitkZWYgd2Via2l0X2lwY19zcGFuX3Ry
YW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0
eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRl
cl90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAg
ICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfShyZWludGVycHJldF9jYXN0PGNv
bnN0IHtlbGVtZW50X3BvaW50ZXJfdHlwZX0+KHtzdHIoZXhwcil9LmRhdGEpLCB7c3RyKGV4cHIp
fS5idWZTaXplKSIpCisKK2RlZiBjcHBfbW92ZV9leHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBf
ZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIoZXhwci50eXBlLmdldF9ydmFsdWVfdHlwZSgpLCBm
IldURk1vdmUoe3N0cihleHByKX0pIikKKworCitjcHBfdHlwZXM6IERpY3Rbc3RyLCBjcHBfdHlw
ZV0gPSB7fQorCitjcHBfdHlwZV9jb25zdHJ1Y3RvcnMgOiBMaXN0W0NhbGxhYmxlW1tzdHJdLCBP
cHRpb25hbFtjcHBfdHlwZV1dXSA9IFsKKyAgICBjcmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24sCisg
ICAgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lciwKKyAgICBjcmVhdGVfY3BwX3R5cGVfaW5kaXJl
Y3QKK10KKworZGVmIGdldF9jcHBfdHlwZSh0eXBlX25hbWU6IHN0cik6CisgICAgciA9IGNwcF90
eXBlcy5nZXQodHlwZV9uYW1lLCBOb25lKQorICAgIGlmIHI6CisgICAgICAgIHJldHVybiByCisg
ICAgZm9yIHR5cGVfY29uc3RyIGluIGNwcF90eXBlX2NvbnN0cnVjdG9yczoKKyAgICAgICAgciA9
IHR5cGVfY29uc3RyKHR5cGVfbmFtZSkKKyAgICAgICAgaWYgcjoKKyAgICAgICAgICAgIGJyZWFr
CisgICAgaWYgbm90IHI6CisgICAgICAgIHIgPSBjcHBfdHlwZSh0eXBlX25hbWUpCisgICAgY3Bw
X3R5cGVzW3R5cGVfbmFtZV0gPSByCisgICAgcmV0dXJuIHIKKworCitjbGFzcyBjcHBfYXJnKG9i
amVjdCk6CisgICAgbmFtZTogc3RyCisgICAgdHlwZTogY3BwX3R5cGUKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFtZTogc3RyKToKKyAgICAgICAgc2VsZi5uYW1l
ID0gbmFtZQorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuICJ7fSB7fSIuZm9ybWF0KHNlbGYudHlwZSwgc2VsZi5uYW1lKQor
CisKK2NsYXNzIGNwcF9kZWNsKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBuYW1l
OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFtZTogc3Ry
KToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisK
KyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGYie3N0cihzZWxmLnR5cGUp
fSB7c2VsZi5uYW1lfSIKKworCitjbGFzcyBjcHBfYXJnX2xpc3Qob2JqZWN0KToKKyAgICBhcmdz
OiBMaXN0W2NwcF9hcmddCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYXJnczogTGlzdFtjcHBf
YXJnXSk6CisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKworICAgIGRlZiBuYW1lcyhzZWxmKToK
KyAgICAgICAgcmV0dXJuICIsICIuam9pbihhLm5hbWUgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisg
ICAgZGVmIGV4cHJzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2NwcF9leHByKGEudHlwZSwgYS5u
YW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgZGVjbHMoc2VsZik6CisgICAgICAg
IHJldHVybiBbY3BwX2RlY2woYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10KKwor
ICAgIGRlZiB0eXBlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFthLnR5cGUgZm9yIGEgaW4gc2Vs
Zi5hcmdzXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAiLCAiLmpv
aW4oc3RyKGEpIGZvciBhIGluIHNlbGYuYXJncykKKworCitjbGFzcyBjcHBfZnVuYyhvYmplY3Qp
OgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorICAgIHJldHVybl90eXBl
OiBjcHBfdHlwZQorICAgIGlzX2V4dGVuc2lvbjogYm9vbAorICAgIG92ZXJsb2FkX3N1ZmZpeDog
c3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZTogc3RyLCByZXR1cm5fdHlwZTogY3Bw
X3R5cGUsIGFyZ3M6IGNwcF9hcmdfbGlzdCwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAgICAgICAg
c2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUK
KyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlz
X2V4dGVuc2lvbgorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9ICIiCisKKyAgICBkZWYg
X19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGYie3NlbGYucmV0dXJuX3R5cGV9IHtzZWxm
Lm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pIgorCisgICAgZGVmIGdldF9hcmdzX2NhdGVnb3JpZXMo
c2VsZikgLT4gVHVwbGVbTGlzdFtjcHBfYXJnXSwgTGlzdFtjcHBfYXJnXV06CisgICAgICAgIGlu
X2FyZ3MgPSBbXQorICAgICAgICBvdXRfYXJncyA9IFtdCisgICAgICAgIGZvciBhIGluIHNlbGYu
YXJncy5hcmdzOgorICAgICAgICAgICAgI2ZtdDogb2ZmCisgICAgICAgICAgICBpZiBhLnR5cGUu
aXNfcG9pbnRlcigpIG9yIFwKKyAgICAgICAgICAgICAgICBhLnR5cGUuaXNfcmVmZXJlbmNlKCk6
CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbGlmIGlzaW5z
dGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpIGFuZCAoKChhLnR5cGUuaXNfc3Bhbigp
IG9yIGEudHlwZS5pc19keW5hbWljX3NwYW4oKSkgYW5kIG5vdCBhLnR5cGUuZ2V0X2NvbnRhaW5l
ZF90eXBlKCkuaXNfY29uc3QoKSkpOgorICAgICAgICAgICAgICAgIG91dF9hcmdzICs9IFthXQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbl9hcmdzICs9IFthXQorICAgICAg
ICAgICAgI2ZtdDogb24KKyAgICAgICAgcmV0dXJuIGluX2FyZ3MsIG91dF9hcmdzCisKKyAgICBk
ZWYgaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlm
IHR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgaXNfaW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAg
ICMiIGluIGEudHlwZS50eXBlX25hbWUgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAg
ICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICAjaWYgIkdDR0xzeW5jIiBpbiBzZWxmLnJldHVy
bl90eXBlLnR5cGVfbmFtZToKKyAgICAgICAgIyAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYg
YW55KGEubmFtZSA9PSAiYnVmU2l6ZSIgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLnR5cGUuaXNfcG9pbnRlcigpIGFu
ZCBhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKS5pc192b2lkKCkgZm9yIGEgaW4gc2VsZi5hcmdzLmFy
Z3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShub3Qgc2VsZi5p
c19pbXBsZW1lbnRlZF90eXBlKGEudHlwZSkgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYucmV0dXJuX3R5cGUuaXNfcG9p
bnRlcigpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG5vdCBzZWxmLmlz
X2ltcGxlbWVudGVkX3R5cGUoc2VsZi5yZXR1cm5fdHlwZSk6CisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworCit3ZWJraXRfaXBjX3R5cGVzOiBEaWN0W2Nw
cF90eXBlLCBjcHBfdHlwZV0gPSB7fQorCit3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnM6IERp
Y3RbVHVwbGVbY3BwX3R5cGUsIGNwcF90eXBlXSwgQ3BwRXhwckNvbnZlcnRlcl0gPSB7fQorCisK
K2RlZiB3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5
cGUpIC0+IGNwcF9leHByOgorICAgICIiIiBDb252ZXJ0cyBgZXhwcmAgb2YgdHlwZSBvZiBgc2Vs
ZmAgdG8gYHR5cGVgICIiIgorICAgIGNvbnZlcnQgPSB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRl
cnMuZ2V0KChleHByLnR5cGUsIHR5cGUpLCBOb25lKQorICAgIGlmIG5vdCBjb252ZXJ0OgorICAg
ICAgICBpZiBleHByLnR5cGUgPT0gdHlwZToKKyAgICAgICAgICAgIHJldHVybiBleHByCisgICAg
ICAgIGNvbnZlcnQgPSBjcHBfaW1wbGljaXRfY2FzdAorICAgIHJldHVybiBjb252ZXJ0KGV4cHIs
IHR5cGUpCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNmZXJfdHlwZSh0eXBlIDog
Y3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlwZToKKyAgICBlbGVtZW50X3R5cGUgPSB0eXBl
LmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNheV90eXBlKCkKKyAgICBhcml0eSA9IHR5cGUu
Z2V0X2FyaXR5KCkKKyAgICB3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSA9IHdlYmtpdF9pcGNfdHlw
ZXNbZWxlbWVudF90eXBlXSBpZiBub3QgZWxlbWVudF90eXBlLmlzX3ZvaWQoKSBlbHNlIGdldF9j
cHBfdHlwZSgndWludDhfdCcpCisgICAgaWYgYXJpdHkgaXMgbm90IE5vbmU6CisgICAgICAgIHJl
dHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19l
bGVtZW50X3R5cGUpfSwge2FyaXR5fT4iKQorICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6
OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50X3R5cGUpfT4iKQorCisKKwor
ZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZSh0eXBlOiBjcHBfdHlwZV9jb250YWlu
ZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90
eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGlmIGVsZW1lbnRfdHlwZS5pc192b2lkKCk6Cisg
ICAgICAgIGVsZW1lbnRfdHlwZSA9IGdldF9jcHBfdHlwZSgnR0NHTGNoYXInKQorICAgIGlmIHR5
cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgIGlubGluZV9jYXBhY2l0eSA9IDE2IGlmICJm
bG9hdCIgaW4gZWxlbWVudF90eXBlLnR5cGVfbmFtZSBlbHNlIDQKKyAgICAgICAgcmV0dXJuIGdl
dF9jcHBfdHlwZShmIlZlY3Rvcjx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKGlubGluZV9jYXBh
Y2l0eSl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmInN0ZDo6YXJyYXk8e3N0cihlbGVt
ZW50X3R5cGUpfSwge3N0cih0eXBlLmdldF9hcml0eSgpKX0+IikKKworZGVmIHdlYmtpdF9pcGNf
bWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uKGV4cHIgOiBjcHBfZXhwciwgdHlwZSA6IGNwcF90eXBl
X2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgcG9pbnRlcl9jYXN0X3R5cGUgPSB0eXBlLmdl
dF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIGlmIHR5cGUuaXNfZHlu
YW1pY19zcGFuKCk6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PHtzdHIocG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0u
ZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisKKyAgICBhc3NlcnQodHlwZS5pc19zcGFu
KCkpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYibWFrZUdDR0xTcGFuPHtzdHIodHlwZS5n
ZXRfYXJpdHkoKSl9PihyZWludGVycHJldF9jYXN0PHtzdHIocG9pbnRlcl9jYXN0X3R5cGUpfT4o
e3N0cihleHByKX0uZGF0YSgpKSkiKQorCisjIFNlZSBtZXNzYWdlcy5weSBmdW5jdGlvbl9wYXJh
bWV0ZXJfdHlwZQord2Via2l0X2lwY19idWlsdGluX3R5cGVzID0gc2V0KAorICAgIFsidWludDhf
dCIsICJ1aW50MTZfdCIsICJ1aW50MzJfdCIsICJ1aW50NjRfdCIsICJpbnQ4X3QiLCAiaW50MTZf
dCIsICJpbnQzMl90IiwgImludDY0X3QiLCAiYm9vbCIsICJmbG9hdCIsICJkb3VibGUiICJib29s
Il0KKykKKworCitkZWYgd2Via2l0X2lwY19nZXRfbWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh0eXBl
OiBjcHBfdHlwZSkgLT4gY3BwX3R5cGU6CisgICAgaWYgdHlwZS50eXBlX25hbWUgaW4gd2Via2l0
X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1cm4gdHlwZQorICAgIHJldHVybiB0eXBl
LmdldF9ydmFsdWVfdHlwZSgpCisKKworZGVmIHdlYmtpdF9pcGNfbW92ZV9leHByKGV4cHI6IGNw
cF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICBpZiBleHByLnR5cGUudHlwZV9uYW1lIGluIHdlYmtp
dF9pcGNfYnVpbHRpbl90eXBlczoKKyAgICAgICAgcmV0dXJuIGV4cHIKKyAgICByZXR1cm4gY3Bw
X21vdmVfZXhwcihleHByKQorCisKK2RlZiB3ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmM6IGNwcF9m
dW5jKToKKyAgICByZXR1cm4gZnVuYy5uYW1lWzBdLmNhcGl0YWxpemUoKSArIGZ1bmMubmFtZVsx
Ol0gKyBmdW5jLm92ZXJsb2FkX3N1ZmZpeAorCisKK2NsYXNzIHdlYmtpdF9pcGNfbXNnKG9iamVj
dCk6CisgICAgbmFtZTogc3RyCisgICAgaW5fYXJnczogY3BwX2FyZ19saXN0CisgICAgb3V0X2Fy
Z3M6IGNwcF9hcmdfbGlzdAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmM6IGNwcF9mdW5j
KToKKyAgICAgICAgc2VsZi5uYW1lID0gd2Via2l0X2lwY19tc2dfbmFtZShmdW5jKQorICAgICAg
ICBpbl9hcmdzLCBvdXRfYXJncyA9IGZ1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAg
IGlwY19pbl9hcmdzID0gW2NwcF9hcmcod2Via2l0X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUp
IGZvciBhIGluIGluX2FyZ3NdCisgICAgICAgIGlwY19vdXRfYXJncyA9IFtdCisgICAgICAgIGlm
IG5vdCBmdW5jLnJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgICAgIGlwY19vdXRfYXJn
cyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2Z1bmMucmV0dXJuX3R5cGVdLCAicmV0dXJu
VmFsdWUiKV0KKyAgICAgICAgZm9yIGEgaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpcGNfb3V0
X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUpXQorICAg
ICAgICAgICAgaWYgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgIGlw
Y19pbl9hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZSgidWludDY0X3QiKSwgZiJ7YS5uYW1l
fVNpemUiKV0KKyAgICAgICAgc2VsZi5pbl9hcmdzID0gY3BwX2FyZ19saXN0KGlwY19pbl9hcmdz
KQorICAgICAgICBzZWxmLm91dF9hcmdzID0gY3BwX2FyZ19saXN0KGlwY19vdXRfYXJncykKKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZi5vdXRfYXJncy5hcmdz
KToKKyAgICAgICAgICAgIHJldHVybiBmIlxuICAgIHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxm
LmluX2FyZ3MpfSkgLT4gKHtzdHIoc2VsZi5vdXRfYXJncyl9KSBTeW5jaHJvbm91cyIKKyAgICAg
ICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSIK
KworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6CisgICAgbmFtZTog
c3RyCisgICAgbXNnX25hbWU6IHN0cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFy
Z3M6IGNwcF9hcmdfbGlzdAorCisgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNh
bGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAg
cmV0dXJuX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAg
ICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3Bw
X2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorICAg
ICAgICBzZWxmLm1zZ19uYW1lID0gd2Via2l0X2lwY19tc2dfbmFtZShjcHBfZnVuYykKKyAgICAg
ICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90eXBlCisgICAgICAgIHNlbGYu
YXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCisg
ICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRz
ID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4
cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBpbl9hcmdzLCBv
dXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBzZWxmLnBy
b2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVybl90eXBlKQorICAgICAgICBzZWxmLnBy
b2Nlc3NfaW5fYXJncyhpbl9hcmdzKQorICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2FyZ3Mob3V0
X2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19jYWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2Nh
bGwoc2VsZik6CisgICAgICAgIGluX2V4cHJzID0gIiwgIi5qb2luKFtzdHIoaSkgZm9yIGkgaW4g
c2VsZi5pbl9leHByc10pCisgICAgICAgIG91dF9leHBycyA9ICIsICIuam9pbihzdHIobykgZm9y
IG8gaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgIGlzX2FzeW5jID0gc2VsZi5yZXR1cm5fdHlw
ZS5pc192b2lkKCkgYW5kIGxlbihvdXRfZXhwcnMpID09IDAKKyAgICAgICAgaWYgaXNfYXN5bmM6
CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgIGYic2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5f
ZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOyIsCisgICAgICAgICAgICBd
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICIiCisgICAgICAgICAg
ICBpZiBzZWxmLnBvc3RfY2FsbF9zdG10czogCisgICAgICAgICAgICAgICAgc2VuZF9yZXN1bHQg
PSAiYXV0byBzZW5kUmVzdWx0ID0gIgorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0
bXRzID0gWworICAgICAgICAgICAgICAgICAgICAiaWYgKHNlbmRSZXN1bHQpIiArICgiIHsiIGlm
IGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAg
XSArIFsiICAgICIgKyBzIGZvciBzIGluIHNlbGYucG9zdF9jYWxsX3N0bXRzXSArIFsKKyAgICAg
ICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2VsZi5wb3N0X2NhbGxfc3RtdHMpID4gMSBlbHNl
ICIiKQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBb
CisgICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9OjpSZXBseSh7b3V0X2V4
cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsiLAorICAgICAgICAg
ICAgXQorCisKKyAgICBkZWYgcHJvY2Vzc19pbl9hcmdzKHNlbGYsIGluX2FyZ3M6IExpc3RbY3Bw
X2FyZ10pOgorICAgICAgICBmb3IgaSBpbiBpbl9hcmdzOgorICAgICAgICAgICAgaWYgaS50eXBl
LmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbd2Via2l0X2lw
Y19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoaS50eXBlLCBpLm5hbWUpLCB3ZWJraXRfaXBjX3R5cGVz
W2kudHlwZV0pXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0X2FyZ3Moc2VsZiwgb3V0X2FyZ3M6IExp
c3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgbyBpbiBvdXRfYXJnczoKKyAgICAgICAgICAgIGlm
IG8udHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICAgICAgdmFsdWVfdHlwZSA9IG8udHlw
ZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBl
ID0gd2Via2l0X2lwY190eXBlc1t2YWx1ZV90eXBlXQorICAgICAgICAgICAgICAgIHYgPSBjcHBf
YXJnKHdlYmtpdF9pcGNfdmFsdWVfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAgICAgICAg
ICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUp
fSA9IHt7IH19OyJdCisgICAgICAgICAgICAgICAgZSA9IGNwcF9leHByKHYudHlwZSwgdi5uYW1l
KQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtlXQorICAgICAgICAgICAgICAg
IHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICAgICAgI2ZtdDogb2Zm
CisgICAgICAgICAgICAgICAgICAgIGYiaWYgKHtvLm5hbWV9KSIsCisgICAgICAgICAgICAgICAg
ICAgIGYiICAgICp7by5uYW1lfSA9IHt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB2YWx1ZV90
eXBlKX07IgorICAgICAgICAgICAgICAgICAgICAjZm10OiBvbgorICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIGVsaWYgby50eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28udHlwZV0KKyAgICAgICAgICAgICAgICBh
c3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisg
ICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY190eXBlLCBvLm5hbWUgKyAiUmVw
bHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5
cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0g
W2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KKyAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNf
ZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2Nw
cF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYie28ubmFtZX0uYnVmU2l6ZSIpXQorICAg
ICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICAg
ICAgZiJtZW1jcHkoe28ubmFtZX0uZGF0YSwge3YubmFtZX0uZGF0YSgpLCB7by5uYW1lfS5idWZT
aXplICogc2l6ZW9mKHtzdHIod2Via2l0X2lwY190eXBlLmdldF9jb250YWluZWRfdHlwZSgpKX0p
KTsiCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIoby50eXBlLCBvLm5hbWUpXQorCisgICAgZGVm
IHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90eXBlOiBjcHBfdHlwZSk6CisgICAg
ICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAg
ICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAgICAgaXBjX3JldHVybl90eXBl
ID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4
cHIgPSBjcHBfZXhwcihpcGNfcmV0dXJuX3R5cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNl
bGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5f
dmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAgICAgIHNlbGYub3V0X2V4cHJzID0gW3Jl
dHVybl92YWx1ZV9leHByXSArIHNlbGYub3V0X2V4cHJzCisgICAgICAgIHNlbGYucmV0dXJuX3N0
bXRzID0gW2YicmV0dXJuIHtzdHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVl
X2V4cHIsIHJldHVybl90eXBlKSl9OyJdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAg
ICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAg
ICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9z
dG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzICsgc2VsZi5yZXR1
cm5fc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIiXG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9
KXtub2xpbnR9Cit7e3tib2R5fQorfX0iIiIKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94
eV9wbGFjZWhvbGRlcihvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIHJldHVybl90eXBlOiBj
cHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorICAgIGJvZHk6IExpc3Rbc3RyXQorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYu
bmFtZSA9IGNwcF9mdW5jLm5hbWUKKworICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1
bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAgICAg
ICBzZWxmLmJvZHkgPSBbIm5vdEltcGxlbWVudGVkKCk7Il0KKyAgICAgICAgaWYgY3BwX2Z1bmMu
cmV0dXJuX3R5cGUudHlwZV9uYW1lICE9ICJ2b2lkIjoKKyAgICAgICAgICAgIHNlbGYuYm9keSAr
PSBbInJldHVybiB7IH07Il0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xp
bnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJv
ZHkgPSAiXG57XG4gICAgIiArICJcbiAgICAiLmpvaW4oc2VsZi5ib2R5KSArICJcbn0iCisgICAg
ICAgIHJldHVybiBmIlxue3N0cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fXtib2R5fSIK
KworCitjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3Qp
OgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IEMrKyBpbXBsZW1lbnRhdGlvbiBn
ZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGxdCisg
ICAgdW5pbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcl0KKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdLCB1bmltcGxlbWVu
dGVkOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dlYmtpdF9p
cGNfY3BwX3Byb3h5X2ltcGwoZikgZm9yIGYgaW4gZnVuY3NdCisgICAgICAgIHNlbGYudW5pbXBs
cyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcihmKSBmb3IgZiBpbiB1bmltcGxl
bWVudGVkXQorCisgICAgZGVmIGdldF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAi
XG4iLmpvaW4oc3RyKGkpIGZvciBpIGluIHNlbGYuaW1wbHMgKyBzZWxmLnVuaW1wbHMpCisKKyAg
ICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdyaXRlX2ZpbGUoCisgICAgICAgICAgICBj
b250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiwKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVu
Y3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5jdGlvbnMoKSksCisgICAgICAgICkK
KworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBsKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisg
ICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgaXNfZXh0ZW5zaW9uOiBib29sCisgICAgcHJlX2Nh
bGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3Rf
Y2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAg
b3V0X2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIHJldHVybl92YWx1ZV9leHByOiBPcHRpb25h
bFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMp
OgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYub3Zlcmxv
YWRfc3VmZml4ID0gY3BwX2Z1bmMub3ZlcmxvYWRfc3VmZml4CisgICAgICAgIHNlbGYuYXJncyA9
IGNwcF9hcmdfbGlzdChbXSkKKyAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBjcHBfZnVuYy5p
c19leHRlbnNpb24KKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNl
bGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAg
ICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAgICAgIHNlbGYub3V0X2V4cHJzID0gW10KKyAg
ICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IE5vbmUKKworICAgICAgICBzZWxmLnByb2Nl
c3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVybl90eXBlKQorICAgICAgICBpbl9hcmdzLCBv
dXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBzZWxmLnBy
b2Nlc3NfYXJncyhjcHBfZnVuYy5hcmdzLmFyZ3MsIHNldChpbl9hcmdzKSwgc2V0KG91dF9hcmdz
KSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChz
ZWxmKToKKyAgICAgICAgZXh0ID0gImdldEV4dGVuc2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5z
aW9uIGVsc2UgIiIKKworICAgICAgICBpbl9leHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUg
aW4gc2VsZi5pbl9leHBycykKKyAgICAgICAgaXNfYXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMp
ID09IDAKKworICAgICAgICBjYWxsX2V4cHIgPSBmIm1fY29udGV4dC0+e2V4dH17c2VsZi5uYW1l
fSh7aW5fZXhwcnN9KSIKKyAgICAgICAgaWYgbm90IHNlbGYucmV0dXJuX3ZhbHVlX2V4cHI6Cisg
ICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yie2NhbGxfZXhwcn07Il0KKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7c3RyKHNlbGYucmV0dXJu
X3ZhbHVlX2V4cHIpfSA9IHtjYWxsX2V4cHJ9OyJdCisgICAgICAgIGlmIG5vdCBpc19hc3luYzoK
KyAgICAgICAgICAgIG91dF9leHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5v
dXRfZXhwcnMpCisgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbZiJjb21wbGV0
aW9uSGFuZGxlcih7b3V0X2V4cHJzfSk7Il0KKworICAgIGRlZiBwcm9jZXNzX2FyZ3Moc2VsZiwg
YXJnczogTGlzdFtjcHBfYXJnXSwgaW5fYXJnczogU2V0W2NwcF9hcmddLCBvdXRfYXJnczogU2V0
W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGEgaW4gYXJnczoKKyAgICAgICAgICAgIGlmIGEudHlw
ZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAg
ICAgICAgICBpZiBhIGluIGluX2FyZ3M6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2lu
X2FyZyhhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Nf
b3V0X2FyZyhhKQorICAgICAgICBpZiBzZWxmLm91dF9leHByczoKKyAgICAgICAgICAgIG91dF9h
cmdfZGVjbHMgPSAiLCAiLmpvaW4oZiJ7c3RyKGUudHlwZSl9IiBmb3IgZSBpbiBzZWxmLm91dF9l
eHBycykKKyAgICAgICAgICAgIHNlbGYuYXJncy5hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlw
ZShmIkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoe291dF9hcmdfZGVjbHN9KT4mJiIpLCAiY29tcGxl
dGlvbkhhbmRsZXIiKV0KKworICAgIGRlZiBwcm9jZXNzX2luX2FyZyhzZWxmLCBhOiBjcHBfYXJn
KToKKyAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY19nZXRfbWVz
c2FnZV9mb3J3YXJkZXJfdHlwZSh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0pLCBhLm5hbWUpXQor
ICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhw
cih3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSksIGEudHlwZSldCisKKyAgICBkZWYg
cHJvY2Vzc19vdXRfYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBpZiBhLnR5cGUuaXNf
cG9pbnRlcigpOgorICAgICAgICAgICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3Zh
bHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBb
ZiJ7c3RyKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9ID0ge3sgfX07Il0K
KyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGEudHlwZSwgZiIme3ZhbHVl
X2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2
YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtp
dF9pcGNfdHlwZXNbZS50eXBlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtp
dF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSldCisgICAgICAgIGVs
aWYgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFu
Y2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgc2l6ZV9hcmcgPSBj
cHBfYXJnKGdldF9jcHBfdHlwZSgidWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUiKQorICAgICAg
ICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW3NpemVfYXJnXQorICAgICAgICAgICAgc3RvcmVfYXJn
ID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1l
KQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50
eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9KHN0YXRpY19jYXN0PHNpemVfdD4oe2EubmFtZX1T
aXplKSwgMCk7Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3Jl
X2FyZy50eXBlLCBmIntzdG9yZV9hcmcubmFtZX0iKV0KKyAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhw
cnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKHN0b3JlX2FyZy50eXBlLCBz
dG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlz
X3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVf
Y29udGFpbmVyKSkKKyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9hcmcod2Via2l0X2lwY19n
ZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJl
X2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5h
bWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3Rv
cmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKV0KKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMg
Kz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9y
ZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBhc3NlcnQgYS50eXBlLmlzX3JlZmVyZW5jZSgpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHZhbHVlX2FyZyA9IGNw
cF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYu
cHJlX2NhbGxfc3RtdHMgKz0gW2Yie3NlbGYubnModmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVl
X2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcu
dHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtlXQor
ICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfbW92ZV9leHByKHdlYmtp
dF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9pcGNfdHlwZSkpXQorCisgICAgZGVmIHByb2Nl
c3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlm
IHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpcGNf
cmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBlXQorICAgICAgICByZXR1
cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKHJldHVybl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAg
ICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7
cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9fTsiXQorICAgICAgICBzZWxmLm91dF9leHBy
cyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIocmV0dXJu
X3ZhbHVlX2V4cHIsIGlwY19yZXR1cm5fdHlwZSkpXQorICAgICAgICBzZWxmLnJldHVybl92YWx1
ZV9leHByID0gcmV0dXJuX3ZhbHVlX2V4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAg
ICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgICAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBzZWxmLnBvc3RfY2FsbF9zdG10cykKKyAgICAg
ICAgcmV0dXJuIGYiIiIgICAgdm9pZCB7c2VsZi5uYW1lfXtzZWxmLm92ZXJsb2FkX3N1ZmZpeH0o
e3N0cihzZWxmLmFyZ3MpfSkKKyAgICB7e3tib2R5fQorICAgIH19IiIiCisKKyAgICBkZWYgbnMo
c2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICAjIFRPRE86IG5hbWVzcGFjZSBpbmZvIGlz
IG5vdCBzdG9yZWQgaW4gbmFtZXMuCisgICAgICAgIGlmIHR5cGUudHlwZV9uYW1lID09ICJBY3Rp
dmVJbmZvIjoKKyAgICAgICAgICAgIHJldHVybiAiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OiIgKyBzdHIodHlwZSkKKyAgICAgICAgcmV0dXJuIHN0cih0eXBlKQorCitkZWYgd2Via2l0X2lw
Y19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcyA6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6Cisg
ICAgY291bnRzID0gY29sbGVjdGlvbnMuQ291bnRlcihmLm5hbWUgZm9yIGYgaW4gZnVuY3MpCisg
ICAgc3VmZml4ZXMgOiBDb3VudGVyW3N0cl0gPSBjb2xsZWN0aW9ucy5Db3VudGVyKCkKKyAgICBm
b3IgZiBpbiBmdW5jczoKKyAgICAgICAgaWYgY291bnRzW2YubmFtZV0gPiAxOgorICAgICAgICAg
ICAgZi5vdmVybG9hZF9zdWZmaXggPSBzdHIoc3VmZml4ZXNbZi5uYW1lXSkKKyAgICAgICAgICAg
IHN1ZmZpeGVzLnVwZGF0ZShbZi5uYW1lXSkKKworCitjbGFzcyBjb250ZXh0X2NwcF93ZWJraXRf
aXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBDKysg
aW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBpbXBsczogTGlzdFt3ZWJraXRfaXBjX2Nw
cF9pbXBsXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVu
Y10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX2ltcGwoZikgZm9yIGYg
aW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJu
ICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBscykKKworICAgIGRlZiBnZW5lcmF0
ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfZnVuY3Rp
b25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNl
bGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIGNvbnRleHRfbXNnX3dl
YmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGdlbmVyYXRvci4iCisgICAgbXNnczogTGlz
dFt3ZWJraXRfaXBjX21zZ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFi
bGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5tc2dzID0gW3dlYmtpdF9pcGNfbXNnKGYpIGZv
ciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdldF9tZXNzYWdlcyhzZWxmKToKKyAgICAgICAgcmV0
dXJuICIiLmpvaW4oc3RyKG0pIGZvciBtIGluIHNlbGYubXNncykKKworICAgIGRlZiBnZW5lcmF0
ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZShjb250ZXh0X21lc3NhZ2VzX2ZuLCBjb250ZXh0
X21lc3NhZ2VzX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9tZXNzYWdlcygpKSkKKworCitkZWYg
Y3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM6IHN0ciwgYXJnX2luZGV4OiBpbnQpOgorICAgIHIgPSBh
cmdfc3BlYy5yc3BsaXQoIiAiLCAxKQorICAgIG5hbWUgPSAiIgorICAgIHR5cGUgPSBOb25lCisg
ICAgaWYgbGVuKHIpID4gMSBhbmQgclswXSAhPSAiY29uc3QiOgorICAgICAgICBuYW1lID0gclsx
XS5zdHJpcCgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoclswXSkKKyAgICBlbHNlOgor
ICAgICAgICBuYW1lID0gImFyZ3t9Ii5mb3JtYXQoYXJnX2luZGV4KQorICAgICAgICB0eXBlID0g
Z2V0X2NwcF90eXBlKGFyZ19zcGVjKQorICAgIHJldHVybiBjcHBfYXJnKHR5cGUsIG5hbWUpCisK
KworZGVmIGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjczogSXRlcmFibGVbc3RyXSk6Cisg
ICAgcmV0dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM9ZSwgYXJnX2lu
ZGV4PWkpIGZvciBpLCBlIGluIGVudW1lcmF0ZShhcmdzX3NwZWNzKV0pCisKKworZGVmIGNyZWF0
ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rb
c3RyXSwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAgICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1l
LCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBf
YXJnX2xpc3QoYXJnc19zcGVjcyksIGlzX2V4dGVuc2lvbj1pc19leHRlbnNpb24pCisKKworZGVm
IHJlYWRfbGluZXNfdW50aWwobGluZXMgOiBJdGVyYWJsZVtzdHJdLCBtYXRjaCA6IHN0cikgLT4g
R2VuZXJhdG9yW3N0ciwgTm9uZSwgTm9uZV06CisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAg
ICAgIGlmIHJlLm1hdGNoKG1hdGNoLCBsaW5lLnN0cmlwKCkpOgorICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgeWllbGQgbGluZQorCitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNl
LkFyZ3VtZW50UGFyc2VyKCJ1c2FnZTogJXByb2cgW29wdGlvbnNdIikKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJQcmludCBz
b21lIGRlYnVnIGluZm8gZnJvbSB0aGUgZ2VuZXJhdG9yIHNjcmlwdCIpCisgICAgb3B0aW9ucyA9
IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgICMgQ29uc3RydWN0IHRoZSBsaXN0IG9mIGZ1bmN0
aW9ucyB0byByZW1vdGUgZnJvbSB3ZWIgcHJvY2VzcyB0byBHUFUgcHJvY2Vzcy4KKworICAgICMg
RklYTUU6IFVudGlsIGV4dGVuc2lvbnMgaGVhZGVyIGlzIHJlbW92ZWQsIHdlIG5lZWQgdG8gY29t
cGxpY2F0ZSB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAjIHdpdGggdGhlIGRpc3RpbmN0aW9uIG9m
IHdoZXRoZXIgYSBmdW5jdGlvbiBpcyBvciBpcyBub3QgYW4gZXh0ZW5zaW9uIGZ1bmN0aW9uLgor
ICAgIGV4dGVuc2lvbl9zaWduYXR1cmVzIDogU2V0W3N0cl0gPSBzZXQoKQorICAgIHdpdGggb3Bl
bihleHRlbnNpb25zX2lucHV0X2ZuKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRs
aW5lcygpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLip2aXJ0dWFsIChcUyspXHMrKFx3
KylcKCguKilcKSA9IDA7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAg
ICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAgICAgICAgICAgICAgICAgICAgbmFtZT1tWzJd
LAorICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3BlYz1tWzFdLAorICAgICAgICAgICAgICAg
ICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAg
ICAgICAgICBpc19leHRlbnNpb249VHJ1ZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMudXBkYXRlKFtzdHIoZnVuYyldKQorICAgIGZ1bmNz
ID0gW10KKyAgICB1bmltcGxlbWVudGVkID0gW10KKyAgICBmb3IgZm4gaW4gZnVuY3Rpb25zX2lu
cHV0X2ZuczoKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgbGluZXMg
PSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3Vu
dGlsKGxpbmVzLCAiLy8gRnVuY3Rpb25zIHdpdGggYSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24u
IFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAg
ICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191
bnRpbChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBz
Y3JpcHQuIik6CisgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiXHMqKFxTKylccysoXHcr
KVwoKC4qKVwpIGZpbmFsOyIsIGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAg
ICAgICAgICAgICAgZnVuY19uYW1lID0gbVsyXQorICAgICAgICAgICAgICAgICAgICBmdW5jID0g
Y3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdW5jX25hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3BlYz1tWzFdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgICAgICBmdW5jLmlzX2V4dGVuc2lvbiA9IHN0cihmdW5jKSBp
biBleHRlbnNpb25fc2lnbmF0dXJlcworICAgICAgICAgICAgICAgICAgICBpZiBmdW5jLmlzX2lt
cGxlbWVudGVkKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoZnVuYykK
KyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaW1w
bGVtZW50ZWQuYXBwZW5kKGZ1bmMpCisKKworICAgIHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9h
ZF9zdWZmaXgoZnVuY3MpCisgICAgIyBJbml0aWFsaXplIFdlYktpdCBJUEMgZ2VuZXJhdGlvbi4g
Q29uc3RydWN0IHR5cGUgbWFwcGluZ3MgZm9yIHRoZSB1c2VkIEMrKyB0eXBlcyAtPiBJUEMgdHlw
ZXMuCisgICAgIyBUT0RPOiBuYW1lc3BhY2luZyBpc3N1ZXMuCisgICAgYWlfdHlwZSA9IGdldF9j
cHBfdHlwZSgiQWN0aXZlSW5mbyYiKQorICAgIGFpX3RyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5
cGUoIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIikKKyAgICB3ZWJraXRf
aXBjX3R5cGVzW2FpX3R5cGVdID0gYWlfdHJhbnNmZXJfdHlwZQorCisgICAgd2l0aCBvcGVuKHR5
cGVzX2lucHV0X2ZuKSBhcyBmOgorICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkK
KyAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIFRoZSBHQ0dMIHR5
cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBi
eSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAg
ICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVz
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICBtID0gcmUu
bWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHN0ZDo6aXNfc2FtZV92PChcdyspLCAoXHcrKT5cKTsi
LCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGVzW2dldF9jcHBfdHlwZShtWzFdKV0gPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0
XChzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpICYmIHNpemVvZlwoKFx3KylcKSA9
PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAg
ICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlw
Y190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY3BwX2Nhc3RfdGhy
b3VnaF90eXBlID0gZ2V0X2NwcF90eXBlKG1bNF0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lw
Y190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRf
Y2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUp
XSA9IGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXJfdGhyb3VnaChjcHBfY2FzdF90aHJv
dWdoX3R5cGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG0gPSByZS5t
YXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpID09IHNpemVvZlwoKFx3Kylc
KVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBl
ID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3Bw
X3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9
IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhj
cHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIHdl
YmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfc3Rh
dGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICMgRm9yIGFsbCB0eXBlcyBp
biB0aGUgaW5wdXQgQVBJLCBmb3JtIGNvcnJlc3BvbmRpbmcgSVBDIHR5cGVzIGFuZCBjb252ZXJz
aW9ucy4KKyAgICAjIFRPRE86IHRoaXMgaXMgbm90IGRyaXZlbiBieSB0aGUgdHlwaW5nLgorICAg
IGFsbF90eXBlcyA9IHNldCgpCisgICAgZm9yIGZ1bmMgaW4gZnVuY3M6CisgICAgICAgYWxsX3R5
cGVzLnVwZGF0ZShmdW5jLmFyZ3MudHlwZXMoKSArIFtmdW5jLnJldHVybl90eXBlXSkKKyAgICAj
IFNvcnQgYnkgbGVuIHNvIHRoYXQgdGVtcGxhdGUgYXJncyBjb21lIGJlZm9yZSB0ZW1wbGF0ZXMu
CisgICAgZm9yIGNwcF90eXBlIGluIHNvcnRlZChhbGxfdHlwZXMsIGtleT1sYW1iZGEgeDogbGVu
KHgudHlwZV9uYW1lKSk6CisgICAgICAgIGlmIGNwcF90eXBlIGluIHdlYmtpdF9pcGNfdHlwZXM6
CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgCisgICAgICAgIGlmIGNwcF90eXBlLmlzX2R5
bmFtaWNfc3BhbigpIG9yIGNwcF90eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgIHRyYW5zZmVy
X3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5zZmVyX3R5cGUoY3BwX3R5cGUpCisgICAg
ICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5cGUuZ2V0X3Zh
bHVlX3R5cGUoKQorICAgICAgICAgICAgaWYgY3BwX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCku
aXNfY29uc3QoKToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNb
KGNwcF90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlw
ZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBj
X3R5cGVzX2NvbnZlcnRlcnNbKHRyYW5zZmVyX3R5cGUsIGNwcF90eXBlKV0gPSB3ZWJraXRfaXBj
X21ha2VfZ2NnbHNwYW5fY29udmVyc2lvbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBzdG9yZV90eXBlID0gd2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGNwcF90eXBl
KQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soc3RvcmVfdHlw
ZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lv
bgorICAgICAgICBlbGlmIGNwcF90eXBlLmlzX3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2Nv
bnN0X3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAg
dmFsdWVfdHlwZSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkgaWYgbm90IGNwcF90eXBlLmlz
X2NvbnRhaW5lcigpIGVsc2UgY3BwX3R5cGUKKyAgICAgICAgICAgIGlmIHZhbHVlX3R5cGUuaXNf
Y29udGFpbmVyKCk6CisgICAgICAgICAgICAgICAgY29udGFpbmVkX3R5cGUgPSB2YWx1ZV90eXBl
LmdldF9jb250YWluZWRfdHlwZSgpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY19jb250YWlu
ZWRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbY29udGFpbmVkX3R5cGVdCisgICAgICAgICAgICAg
ICAgaWYgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9PSBjb250YWluZWRfdHlwZToKKyAgICAg
ICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB2YWx1ZV90eXBlCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9
IGdldF9jcHBfdHlwZShmInt2YWx1ZV90eXBlLmdldF9jb250YWluZXJfbmFtZSgpfTx7c3RyKHdl
YmtpdF9pcGNfY29udGFpbmVkX3R5cGUpfT4iKQorICAgICAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGVzW2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5cGUKKyAgICAgICAgICAgICAgICAgICAg
IyBUT0RPOiBIZXJlIG1pZ2h0IGJlIGNhc2Ugd2hlcmUgVmVjdG9yPEdDR0xpbnQ+IHdhcyB1c2Vk
IGluIHRoZSBpbnRlcmZhY2UgYW5kIFZlY3RvcjxpbnQzMl90PiBpcyB1c2VkCisgICAgICAgICAg
ICAgICAgICAgICMgaW4gdGhlIElQQyBkZWZpbml0aW9uLiBUaGVyZSBpcyBubyBzZW5zaWJsZSB3
YXkgdG8gZG8gdGhpcyBhdCB0aGUgbW9tZW50LiBXZSBkbyBub3QgY29udmVydCwgcmF0aGVyCisg
ICAgICAgICAgICAgICAgICAgICMgZXhwZWN0IHRoYXQgYWxsIHRoZSBpbnZvY2F0aW9ucyBhcmUg
dGFrZW4gY2FyZSBvZiB0aGUgZmFjdCB0aGF0IEdDR0xpbnQgaXMgdGhlIHNhbWUgdHlwZSBhcyBp
bnQzMl90LgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgd2lsbCBub3QgaG9sZCBmb3IgYWxs
IHR5cGVzIHN1Y2ggYXMgR0NHTGJvb2xlYW4uCisgICAgICAgICAgICAgICAgICAgICN3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJy
YXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBjcHBfdHlw
ZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgCisgICAgIyBUaGUgaW5wdXQgdG8gdGhlIGdlbmVyYXRv
cnMgaXMgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3RlLgorICAgICMgUnVuIHRoZSB2YXJpb3Vz
IGdlbmVyYXRvcnMuCisgICAgZ2VuZXJhdG9ycyA9IFsKKyAgICAgICAgY29udGV4dF9wcm94eV9j
cHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MsIHVuaW1wbGVtZW50ZWQpLAorICAgICAgICBj
b250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcyksCisgICAgICAgIGNvbnRleHRf
Y3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAgICBdCisgICAgZm9yIGcgaW4gZ2Vu
ZXJhdG9yczoKKyAgICAgICAgZy5nZW5lcmF0ZSgpCisKKyAgICBpZiBvcHRpb25zLnZlcmJvc2U6
CisgICAgICAgIHByaW50KCJJbXBsZW1lbnRlZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYi
ICAgIHtzdHIoaSl9IGZpbmFsXG4iIGZvciBpIGluIGZ1bmNzKSkKKyAgICAgICAgcHJpbnQoIlVu
aW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIuam9pbihmIiAgICB7c3RyKHUpfSBmaW5h
bFxuIiBmb3IgdSBpbiB1bmltcGxlbWVudGVkKSkKKyAgICAgICAgcHJpbnQoZiJJbXBsZW1lbnRl
ZDoge2xlbihmdW5jcyl9LCB1bmltcGxlbWVudGVkOiB7bGVuKHVuaW1wbGVtZW50ZWQpfSwgdG90
YWw6IHtsZW4oZnVuY3MpK2xlbih1bmltcGxlbWVudGVkKX0iKQorICAgICAgICBwcmludCgiQysr
IHR5cGUgbWFwIHRvIFdlYktpdCBJUEMgdHlwZSBtYXA6IikKKyAgICAgICAgZm9yIF8sIHQgaW4g
Y3BwX3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0IGluIHdlYmtpdF9pcGNfdHlwZXM6
CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cih0KX0gLT4ge3N0cih3ZWJraXRfaXBj
X3R5cGVzW3RdKX0iKQorICAgICAgICBwcmludCgiQysrIHR5cGVzIHdpdGhvdXQgV2ViS2l0IElQ
QyB0eXBlOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAg
ICAgICAgaWYgdCBub3QgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmlu
dChmIiAgICB7c3RyKHQpfSIpCisgICAgICAgIHByaW50KCJXZWJLaXQgSVBDIHR5cGUgY29udmVy
c2lvbnMiKQorICAgICAgICBmb3IgKGEsIGIpLCBjb252ZXJ0ZXIgaW4gd2Via2l0X2lwY190eXBl
c19jb252ZXJ0ZXJzLml0ZW1zKCk6CisgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKGEpfSAt
PiB7c3RyKGIpfSA6IHtjb252ZXJ0ZXIuX19uYW1lX199IikKKyAgICAgICAgcHJpbnQoIkRvbmUu
IikKKyAgICByZXR1cm4gMAorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lz
LmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ4YjkzOGZhMTFmODE1ZDM3ZWU4MDM3N2ZkNjRiMGJjNzNk
YzgxNDAuLjc2MTZhN2I3MDExY2RkMWZmN2I5ODZmNmQyMzJiMTMxNDk2YmNlOWIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAyMC0xMi0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3Rl
IHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBD
dXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgQWRk
cyB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgdGhlIG1pc3NpbmcgZnVuY3Rpb25hbGl0eS4gRG9lcyBu
b3QgeWV0CisgICAgICAgIGVuYWJsZSB0aGUgdGVzdHMgdGhhdCBhY3R1YWxseSBwYXNzIGJ1dCB3
aGljaCB3ZXJlIHNraXBwZWQgYmVmb3JlIHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKwor
ICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMTItMDEgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciByZWFkYWJsZS93cml0YWJsZSB0byBSVENSdHBTRnJhbWVUcmFuc2Zvcm0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9n
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGEyMjUyOGZhMWIyNjc4NzMxODUzMDU4
MDAzMzkwZmQ3NTM3ZGMwYzYuLmRhNTYzODYyODlkNmM5NGQ0ZmZhZWNhODlhZDJiYTk5M2IxMDE2
YzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzE3LDYg
KzMxNywxNCBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1p
bWFnZS1hbGxvd2VkLXdpdGgtY3JlZGVudGlhbHMuaHRtbAogaHR0cC90ZXN0cy93ZWJnbCBbIFNr
aXAgXQoganMvc2hhcmVkLWFycmF5LWJ1ZmZlci13ZWJnbC5odG1sIFsgU2tpcCBdCiAKK3dlYmtp
dC5vcmcvYi8yMTgxODQgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFktZmFs
c2UuaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJn
bC90ZXhJbWFnZTJELW1zZS1mbGlwWS10cnVlLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcv
Yi8yMTkzNDkgZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC11cGRhdGUtb24tZGlzcGxheS1jb25m
aWd1cmF0aW9uLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9jYW52
YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtp
dC5vcmcvYi8yMTkzNTEgZmFzdC9jYW52YXMvd2ViZ2wvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9wcmVtdWx0aXBs
eWFscGhhLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxOTM1MiBmYXN0L2Nh
bnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1cmUuaHRtbCBbIEZhaWx1cmUg
XQorCiB3ZWJncHUgWyBTa2lwIF0KIAogYWNjZXNzaWJpbGl0eS9wcmVzcy13b3Jrcy1vbi1jb250
cm9sLXR5cGVzLmh0bWwgWyBTa2lwIF0K
</data>
<flag name="commit-queue"
          id="432225"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415122</attachid>
            <date>2020-12-01 03:33:51 -0800</date>
            <delta_ts>2020-12-01 03:49:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201133348.patch</filename>
            <type>text/plain</type>
            <size>564355</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4
OGJkNDA3N2EwYzU0YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQxYTM1
Y2MwMDhhZWE2OWZmZjJjZDkxZDAyMzJlZmEwNzFlN2VkNTQuLjk4MTE1ZTE1Yjc2MzQ5NjFhYzM5
MGRiMjNkNTMwYjczZDI1ZDUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJj
Nzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQw
MGIwZmNlMjQxZWZmYjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiAr
MzU3LDE0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyMmVkNmNjMjRlNmU2Njg4NjBmNzRjYzllZGQ4NGIzZDlkZGMzMC4uOTUzMWI0
OTI3MWQwZDQwMWFkODIyNzkxZjg0ZWZkODY1N2Q2NmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2
RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07
CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsK
IAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIy
Mjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2
RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5
NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Niw2
ICsyMjQ2LDggQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkz
NkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjMsOSAr
MTAyMjUsMTQgQEAKIAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEw
MzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4
MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcy
NTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5pZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjEzLDYgKzI2NjIwLDggQEAKIAkJ
CQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJ
CQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQx
ODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJ
N0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2Ft
cGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9T
YW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovLApAQCAtMjY3NzksNiArMjY3ODgsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5
RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBE
NkExMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlC
Mjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJ
CQkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBF
MDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1
OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RB
NTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2
NzkwLDYgKzI2ODAxLDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZC
RDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYx
NkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2Vy
LmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwICovLApAQCAtMzIwODksNiArMzIxMDEsNyBAQAogCQkJCTdCMTAzMzlFMjU0
OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUz
QyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0MDI1LDYgKzM0MDM4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBF
Q0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAw
MTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIy
RkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVv
U2FtcGxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVj
NzE3NDU5N2YwNmUwZTUwOWU3OGZhYS4uMmY4Y2JmMDg3MDUwYzVmMDg2ODBmMmVkOTdkMWYzMDg4
NjYxYTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3NywyMSArNjc3LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZl
clN1YkRhdGEoKSBjYWxscyB0byB1c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0
ciA9IG1fY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNl
dC51bnNhZmVHZXQoKSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0
aFB0ci51bnNhZmVHZXQoKSAqIGNoZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBo
aWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNw
eShzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5i
eXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICog
ZWxlbWVudFNpemUpOwotCi0gICAgaWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkp
Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgImdldEJ1ZmZlclN1YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZm
ZXIiKTsKLSNlbmRpZgotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCk7CisgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9m
ZnNldCwgbWFrZUdDR0xTcGFuKHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVz
cygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBj
b3B5TGVuZ3RoICogZWxlbWVudFNpemUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIpCkBAIC0xNzAyLDcgKzE2OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxpc3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xOTY3
LDkgKzE5NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0
LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8
V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAg
LTIwMTQsNyArMjAwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBs
ZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQogCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHVu
aXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJpbmRTYW1wbGVyIiwgImludmFs
aWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNTksMTcgKzIwNDgsMTEg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAgICAgICAgaW50IHZh
bHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0
IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2Ft
cGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLm9iamVjdCgp
LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxp
ZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMTgsNyArMjEwMSw3IEBA
IEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdMU3lu
YyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNsaWVudFdhaXRTeW5jIiwgInRpbWVv
dXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIpOwogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19GTFVTSF9DT01NQU5E
U19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZhbGlkIGZsYWdzIik7CiAgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CkBAIC0yMTc5LDkg
KzIxNjIsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVs
ZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIs
IGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQVNTRVJUKGZl
ZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAKKwogICAg
IGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRi
YWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjQ4LDcgKzIyMzEsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tQ
cmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiZWdpblRyYW5zZm9ybUZlZWRiYWNr
IiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1pdGl2ZSBtb2RlIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIyODgsNyArMjI3MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRUcmFuc2Zvcm1GZWVkYmFjayIs
ICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwogCiAg
ICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVzZWQoZmFsc2UpOwpAQCAtMjI5OSw3
ICsyMjgyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28KIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJ0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpT
RVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWluZ3Muc2l6ZSgpID4gbV9tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAtMjQ4NSwyNCArMjQ2OCwyNCBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPEdDR0xpbnQ+IHJl
c3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3aXRjaCAocG5hbWUp
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
VFlQRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
eCk7IH0pOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRToKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TklGT1JNX0JMT0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
T0ZGU0VUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQVJSQVlfU1RSSURF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklYX1NUUklERToKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlm
b3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dCk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOiB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgpOyB9KTsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDggKzM1NTUsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoQ2xlYXJDYWxs
ZXJPdGhlcik7CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+
cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmUwM2E4OWZjNjk1M2QyMDAwODJmMjQ5NTQ5
NzYzYmUwNWE5NjE5NS4uYTQ0OTk0ZTBlZDcwMjBkMzQzMWE4ZTBjMjBiZDc1MGU4YzA3NDEwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTczMiw4ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxl
bWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENv
bnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9y
RXZlbnQsCkBAIC00Mzk1LDEwICs0Mzk0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAg
ICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0g
ICAgR0NHTHNpemVpIGxlbmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAg
IEdDR0xzaXplaSByb3dzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFk
blBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7
CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQog
ICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQy
ODI4ZjJkNTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIFdlYkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7
Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFw
aGljc0NvbnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5j
U3RhdHVzKTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldFN5bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBp
ZiAobV9zeW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAg
ICBzY2hlZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjli
ODZiYzMxODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cApAQCAtNTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3Nl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVO
QUJMRShXRUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KGF0dHJpYnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJ
RCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5
SUQoKTsKQEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1f
cGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZh
bCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQor
ICAgIC8vIFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQg
d29yaywgcmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlz
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3
NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEz
Y2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRp
b25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCAzYTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0
OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJ
RCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxw
dHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVy
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRl
eCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2Mz
MzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdp
bmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFs
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAv
LyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAg
ICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qg
PSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUy
ZmIzLi43YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAt
MzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9j
ZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0lu
V2ViUHJvY2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1By
b2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZi
ZDFkNDNjMDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFm
NjRhYTBkZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBA
IC05Niw2ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1
bmRsZUlzV2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3Rh
dGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07Cisg
ICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQ
cm9jZXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9
IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4
NjczNDQ3NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wu
aApAQCAtMjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3No
YWRlcl9jb21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NU
QVRVU19LSFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9l
eHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3Ig
ZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8g
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6
CiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3Vw
TWFya2VyRVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
KSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVy
cwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVt
b3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0g
MDsKQEAgLTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzQU1EKCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11
c3QgYmUgYXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNo
IGNvbmZpZ3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBk
ZjRhMTE5YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIx
YWVhN2E1YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQ
SElDU19DT05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAi
Rm9ybWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5o
IgpAQCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6
OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBy
ZXN1bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ct
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0
ZXMsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4
dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0
dHJzKGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1
MmRjNmVmMy4uYmE3MmIzMWFkNjU4NWI0YTliYjVkNmFkZWZjMWJmMTNkZjVmM2JhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0
IGZvciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGlj
OgogICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGlj
OgogICAgICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFw
aGljc0NvbnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRp
b24gaW4gY29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZm
ZWN0IHRoZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGlj
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2Ny
ZWVuLCBHcmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZp
cnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGll
bnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQg
cmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7
IH0KIAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCB1bmRlcnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZv
aWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05
ODAsNyArOTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXpl
aSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykg
PSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0
dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlw
dHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBt
b2RlKSA9IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0x
MTI0LDggKzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5
IHBvaW50cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1
YWwgR0NHTHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAg
ICB2aXJ0dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xp
bnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdD
R0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBm
aWx0ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9
IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9
IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
ID0gMDsKQEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
ID0gMDsKICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNh
bXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJm
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMo
R0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFs
IEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdD
R0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1l
b3V0KSA9IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRT
eW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdD
R0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVy
IC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NH
THVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dM
dWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgdW5pZm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykgPSAwOwotCisgICAgCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdD
R0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBwbmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9v
bGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0xMzk0LDcgKzEzOTQsNiBAQCBpbmxpbmUgR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdQogICAgIHJldHVybiB2YWx1ZVswXTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCA4NWMyOWE0YjZlNTYxMTBkYzdiZDc0N2FlMzM5ODdj
MzQwMzc1ZGYxLi4zYjA2NGMzZTc2OGVjYzRiZjAyYjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+
CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NCwxMyArNDYsMTcg
QEAgdHlwZWRlZiB1bnNpZ25lZCBHQ0dMdWludDsKIHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0Owog
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQ0dMaGFsZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dM
Y2xhbXBmOwordHlwZWRlZiBjaGFyIEdDR0xjaGFyOwordHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMq
IEdDR0xzeW5jOwordHlwZWRlZiB2b2lkIEdDR0x2b2lkOworCisvLyBUaGVzZSBHQ0dMIHR5cGVz
IGRvIG5vdCBzdHJpY3RseSBtYXRjaCB0aGUgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wg
RVMgMi4wCisvLyBoZWFkZXIgZmlsZSBmb3IgYWxsIHBsYXRmb3Jtcy4KIHR5cGVkZWYgaW50cHRy
X3QgR0NHTGludHB0cjsKIHR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRyOwotdHlwZWRlZiBj
aGFyIEdDR0xjaGFyOwordHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIHR5cGVkZWYgbG9u
ZyBsb25nIEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7
Ci10eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Ci10eXBlZGVmIHZvaWQgR0NHTHZv
aWQ7CiAKIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIApAQCAtNTgsMTMgKzY0
LDE3IEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5zaWdu
ZWQgR0x1aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPgoraW5saW5lIGNvbnN0ZXhwciBz
aXplX3QgZ2NHTFNwYW5EeW5hbWljRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGdjR0xTcGFu
RHluYW1pY0V4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQq
IGFycmF5KQorICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3Qgc2l6ZSA9IEV4
dGVudCkKICAgICAgICAgOiBkYXRhKGFycmF5KQotICAgIHsgfQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQogICAgIEdDR0xTcGFuKFQg
KCZhcnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQpAQCAtNzIs
NiArODIsMTIgQEAgc3RydWN0IEdDR0xTcGFuIHsKICAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3Bh
bjxVLCBFeHRlbnQ+JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxl
X3Y8VSgqKVtdLCBUKCopW10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQogICAgICAgICA6
IGRhdGEob3RoZXIuZGF0YSkKICAgICB7IH0KKyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIEV4
dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQorICAg
IEdDR0xTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0K
ICAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJl
dHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC03OSw3ICs5NSw3IEBAIHN0cnVjdCBHQ0dM
U3BhbiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxULCBn
Y0dMU3BhbkR5bmFtaWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1
ZlNpemVfKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXpl
XykKQEAgLTEyMSw2ICsxMzcsMTEgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CiAgICAg
ICAgIDogZGF0YShvdGhlci5kYXRhKQogICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAq
IHNpemVvZihVKSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+
JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXpl
KGFycmF5LnNpemUoKSAqIHNpemVvZihVKSkKKyAgICB7IH0KICAgICBHQ0dMdm9pZCogZGF0YTsK
ICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CkBAIC0xNTIsOCArMTczLDExIEBAIHN0cnVj
dCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+CiBHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1HQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+OwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+Jikg
LT4gR0NHTFNwYW48VCwgTj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdD
R0xTcGFuPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdDR0xT
cGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzBmMmYzMDY4ZmYwMjkxYWY1YmU2MGE1YzVmNmUxZWVi
N2E0YWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgcGxhdGZvcm1J
bml0aWFsaXplKCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CisKK1BsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVRleHR1
cmUoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitFeHRlbnNpb25zR0wmIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENv
bnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAor
eworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQorewor
ICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlm
IChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7
CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXll
ckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7Cisg
ICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFy
IHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0
cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAgIGZvciAoYXV0byogY2xp
ZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlkQ29tcG9z
aXRlKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRv
Q2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7CisgICAgaWYgKCFjb250ZXh0QXR0cmlidXRl
cygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
PSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZv
ciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3Vs
ZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVk
KCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkpIHsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKKyAgICAg
ICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7CisgICAgfQorfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0
aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFp
bGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5h
ZGQoZXh0ZW5zaW9uKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK1Bs
YXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZThh
MDkxNGQ4ZThlMjllMmQyODMxMjUwNGM0ZWIzMjBiMTE5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JK
Q19DTEFTUyBXZWJHTExheWVyOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW47CisjZW5kaWYKKworLy8gQSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRz
IHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJh
d2luZyBidWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9y
dC4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
IDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
IG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAg
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Qg
ZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwor
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7
CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmlu
YWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBlbmFi
bGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7
CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCisgICAgdXNpbmcg
RXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRV
bnRpbEluaXRpYWxpemVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisK
KyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxT
dHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5z
aW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91
bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0g
ZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9
OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAyODNkYTgyYzZhNjAy
ZWE0YjU1N2M2ODZjZmQ4MjNkMDgxYzU1ZTRhLi43YzE1MWZhMjg1MGYzM2MxNDlhOWRjODIyMzgx
YjhmY2JkZTljYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00NiwyOCArNDYsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0
cmluZykKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9p
c0FNRChmYWxzZSkKLSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlv
bihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2Up
Ci0gICAgLCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKICAg
ICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8v
IEZJWE1FOiBpZGVhbGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBB
TkdMRQotICAgIC8vIHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJp
dmVyIHdvcmthcm91bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9S
RU5ERVJFUikpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3Zl
bmRvci5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRv
ckNvbXBvbmVudHMuY29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29t
cG9uZW50cy5jb250YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlm
ICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwg
PSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIp
KQotICAgICAgICBtX2lzSW1hZ2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdM
RTo6fkV4dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDcgKzgzLDcgQEAgYm9v
bCBFeHRlbnNpb25zR0xBTkdMRTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCitHTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpO
T19FUlJPUjsKIH0KQEAgLTExNCwxMCArOTQsMTEgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29u
dGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5H
VEhfQU5HTEUpOworCiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xf
VFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1p
bmF0aW9uLgotICAgIGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0NHTGludCByZXR1cm5l
ZExlbmd0aCA9IDA7CiAgICAgZ2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFk
ZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYg
KCFyZXR1cm5lZExlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xNDcs
NyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4
dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAs
IGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0
WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQg
bG9uZyBmaWx0ZXIpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIC8vIEZJ
WE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUuCiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTU2
LDcgKzEzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nCiAgICAgZ2w6OkJsaXRGcmFtZWJ1
ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgx
LCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNSw3ICsyMTYsNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykK
ICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDMsMTUgKzIyNCwxNSBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaQogICAg
IGdsOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOworICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihvZmZzZXQpLCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzUwLDcgKzMzMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBn
bDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQxMiw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kCiAgICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC00MzksNyArNDIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGwKICAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDM3LDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2kKICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykK
LXsKLSAgICAvLyBXZSBjYW4gYXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRo
ZSBjYWxsaW5nIGZ1bmN0aW9ucwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAg
aW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19
Ci0jZW5kaWYKLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJl
bW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwg
aS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25l
IGJlZm9yZSByZWFkaW5nIHBpeGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJz
ID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVm
ZmVyVGFyZ2V0ID0gbV9jb250ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6
OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9jb250ZXh0LT5tX3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAg
ICBtX2NvbnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZm
ZXJUYXJnZXQsIG1fY29udGV4dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9
Ci0gICAgKHZvaWQpIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7
Ci0gICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdM
ZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYg
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAg
ICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211
bHRpc2FtcGxlRkJPKTsKLQotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRl
Y3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlv
bi4gU3VyZmFjZSB0aGlzIGluIHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwg
YW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGlu
Z1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAm
JiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oZGF0YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
Cit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0NDUsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAs
NyArNDUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNm
YWE2ZTM4ZmY3MmY0YjIzMjMuLmNiZjQ5OGJkN2MxYTFhYjlhYTZiNzBmYjVkMzhhYzRiOTJmYjAz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25n
IHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBs
b25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcg
ZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBs
b25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAg
Ym9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29s
IGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3Io
KSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdElu
RnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkg
KmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMjAsOCBA
QCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBi
b29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwot
ICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplOwotCiAgICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0g
ICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hl
dGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBl
eHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JB
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNi
OGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNC4uMWQ2MDRiNzFkNDgxNGY1OTdjMmMy
ZmM4OWVkYzk2NDhkYzEzYzc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
QEAgLTQ0MywzMiArNDQzLDUzIEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YS5idWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRh
LmRhdGEsIGZhbHNlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lk
Kj4ob2Zmc2V0KSwgdHJ1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQog
ewotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRy
aXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBj
YWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92
ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5l
LiwKKyAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJl
Zm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1f
aXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2Fy
eShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAg
ICB9Ci0gICAgZ2w6OlJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhKTsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCk7CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAg
IEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMg
JiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJp
bmcgdGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4g
dGhlCisgICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEg
Y2hhbm5lbCBmaXh1cCBiZWxvdy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0
eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3Vu
ZFJlYWRGQk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdy
YXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVs
dGlzYW1wbGVGQk8pKSkKICAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgs
IGhlaWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0K
IC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3cs
IHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bikKQEAgLTg5OCwyMCArOTE5LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6
QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwog
fQogCi12b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJp
dGZpZWxkIGFjY2VzcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zm
c2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGds
OjpVbm1hcEJ1ZmZlcih0YXJnZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0
ciA9IGdsOjpNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFw
aGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0
dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAo
IWdsOjpVbm1hcEJ1ZmZlcih0YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dM
ZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRl
T2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKQEAgLTEwMDgsMTQgKzEwMjUsMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwKICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2
b2lkKj4ob2Zmc2V0KSwgMCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxH
Q0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+
JiBwYXJhbXMpCitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dM
aW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3Jh
bSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9n
cmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUs
IHBhcmFtcy5kYXRhKCkpOworICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0
LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAt
MjEwMSwyMiArMjExOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGds
OjpHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwg
bnVsbHB0ciwgdmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5k
ZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NH
THNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCkBAIC0yMzkyLDEyICsyMzk0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmpl
Y3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6
OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0
aW9ucwpAQCAtMjgzOSwyMCArMjg0MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAg
IGdsOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xm
bG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFs
dWUgPSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2
KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAt
Mjg5NSwxMiArMjkwMiwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3lu
YyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0
U3luYyhzeW5jLCBmbGFncywgdGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBu
YW1lLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3MzU5N2Y0NzUzZDBiZWMxZDAyZTdkNWZjZmRjNjQzYTk4M2M4OGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgiCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09D
T0EpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW46On5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpID0gZGVmYXVs
dDsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZTg4YzJmOTliMWNhYTU4MTE3YzczOTExYTUx
YjY3ZGRlNjMyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
R0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFjZSBmb3Ig
aW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dh
cAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxsIG93biB0
aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0
YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFk
YXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2
ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8gb2J0YWlu
IHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9mIHRoZSBt
ZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhp
cyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJm
YWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUgZXhpc3Rp
bmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgorICAgICAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIFByb2R1Y2VyIHNwZWNpZmljIG1ldGFkYXRhIGhh
bmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KKyAgICB9OworICAgIC8vIFJldHVybnMgdGhlIG1l
dGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xp
ZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250ZW50cyBz
dXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAvLyB0aW1lIG9mIHRo
ZSBjYWxsLgorICAgIC8vIFJldHVybnMgZWl0aGVyOgorICAgIC8vIC0gRW1wdHkgYnVmZmVyIGlm
IG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCisgICAgLy8gLSBCdWZmZXIgd2l0aCBlbXB0
eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBi
dWZmZXIgd2FzIGF2YWlsYWJsZQorICAgIC8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGlu
IHVzZS4KKyAgICAvLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KKyAgICB2aXJ0dWFsIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgPSAwOworCisgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlz
cGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgorICAgIC8vIENsaWVudCB0cmFuc2ZlcnMgdGhl
IG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgorICAg
IHZpcnR1YWwgdm9pZCBwcmVzZW50KEJ1ZmZlcikgPSAwOworCisgICAgLy8gRGV0YWNoZXMgdGhl
IGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEg
aGFuZGxlLgorICAgIC8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0
ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCisg
ICAgLy8gdGhpcy4KKyAgICB2aXJ0dWFsIHZvaWQqIGRldGFjaENsaWVudCgpID0gMDsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpp
bmRleCAyZTFjNzk5ZTgyODUzYjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi43N2NhMjAwYmQ3
ZmZlZmVkMzk4ZjkxMmE3OWQ0MjUxMzQ2YmY3ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkV4
dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJIb3N0
V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0YXRpYyBF
R0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
ID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5IGRpc3Bs
YXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQg
PSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRp
bGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJvY2Vzcygp
KTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0KSB7
CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xhdGlsZSBw
bGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2luY2UgY2xp
ZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFsIGNvbnRl
eHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgIGlmIChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55
Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7CiAKICAg
ICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8gaG9zdFdp
bmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhv
c3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlvbigpLCAm
c2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0
V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LnB0cigp
LCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9j
ZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51bGxwdHIs
ICZzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJv
YmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAog
c3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwg
Q0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJy
ZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5
SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGlu
YXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0KQotICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3RpbmF0aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGlu
YXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0g
YXR0cnMuaXNXZWJHTDI7CiAKQEAgLTI5MywyNiArMjk5LDI4IEBAIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0CiAgICAgaWYgKG1faXNGb3JXZWJHTDIpCiAgICAgICAgIGdsOjpFbmFibGUoR3JhcGhp
Y3NDb250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAorICAgIFZlY3Rv
cjxBU0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBpZiAobV9pc0Zvcldl
YkdMMikgeworICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdv
cmsuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25f
cXVlcnlfYm9vbGVhbiJfcyk7CisgICAgfQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9u
cygpOwotCiAgICAgaWYgKCFuZWVkc0VBR0xPbk1hYygpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogcmVxdWlyZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAgICAgICAi
R0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiLCAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0
dXJlcy4KLSAgICAgICAgICAgICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLCAvLyBG
b3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgotICAgICAgICB9
OwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChyZXF1
aXJlZEV4dGVuc2lvbnMpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBw
b3J0cyhyZXF1aXJlZEV4dGVuc2lvbnNbaV0pKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdM
LCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgcmVxdWlyZWRFeHRlbnNpb25zW2ld
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIC8vIEZv
ciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMu
YXBwZW5kKCJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSJfcyk7CisgICAgICAgIC8vIEZvciBj
cmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCisgICAgICAgIHJlcXVp
cmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJfcyk7
CisgICAgfQogCi0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRF
eHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAg
ICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9H
KFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJh
Y3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5z
aW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ly8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUNDQVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBz
dGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8vIHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3Jt
U2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0byBDYXRhbHlzdCB0b28uCkBAIC0zMzEsMTMg
KzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBj
aGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0gICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVy
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fd2ViR0xMYXllciA9
IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0
cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyAgICBp
ZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsKKyAgICBlbHNl
IHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgICAgICBtX3dl
YkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhh
XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJH
TCBMYXllciJdOworICAgICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5
ZXIiXTsKICNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3N3YXBDaGFpbiA9ICZbbV93ZWJHTExh
eWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQg
d2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAgR0xlbnVtIHRleHR1cmVUYXJn
ZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBAIC00MDYsMTMgKzQxOCwxMiBAQCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKCkKICAgICAgICAg
aWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQogICAgICAgICAgICAgZ2w6OkRlbGV0ZUZy
YW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pOwogICAgIH0KLSAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
cikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlC
dWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExheWVyKSB7Ci0gICAgICAgIGF1dG8gcmVj
eWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgICAgICBhdXRv
IHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICAgICAg
aWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFj
ZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7Ci0gICAgICAgIGF1dG8gY29u
dGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFjaENsaWVudF07CisgICAgICAgIGF1dG8g
Y29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0YWNoQ2xpZW50KCk7CiAgICAgICAgIGlm
IChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3Bs
YXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBAIC01NzUsMTEgKzU4NiwxNiBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQog
ICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQog
ICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQgYnVmZmVyIG5vdywgYmVjYXVzZSBpdCBt
b3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBhdCB0aGUgdGltZSBpdCB3aWxsIGJlIHJl
dXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVm
ZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZm
ZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICBFR0xfRGVzdHJv
eVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOwogICAgIHJlY3lj
bGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQoreworICAgIEFTU0VSVCghZ2V0
SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAgIGF1dG8gYmFja2luZyA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCks
IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0CiAgICAgLy8gZm9yIE9wZW5H
TCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkgKG9ubGluZS9v
ZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVuIGNvbnNpZGVyIGFsbCBHUFVzLCBvciBy
ZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5zCiAgICAgLy8gYWxsIG9mZmxpbmUgcmVu
ZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQu
Ci0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmRvd1Nl
cnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxs
IHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCiAgICAgLy8gbV9kaXNwbGF5
TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNlLgogICAgIGlmIChwcmltYXJ5T3BlbkdM
RGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NDYsMTIgKzY2MiwxMiBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBj
b25zdAogICAgIC8vIGFuZCBNQUMvTUFDQ0FUQUxZU1QgYW5kIE9QRU5HTC9PUEVOR0xFUy4KICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICAKKwogI2lmIEhBVkUoQVBQTEVfR1JBUEhJ
Q1NfQ09OVFJPTCkKICAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02
ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9y
RGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJvbSBvdGhlciBn
cmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGdsOjpGbHVzaCgp
OwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZl
cl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVy
KCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVm
ZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVyIHByZXBhcmVG
b3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwg
bV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVzZW50KHsgV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB9KTsK
ICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAKICAgICBib29s
IGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBFcnJvciB3aWxs
IGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgpIHdoaWNoIHdp
bGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNOZXdCYWNraW5n
KQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAgICAgYWxsb2Nh
dGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0NTUwOWM3NDI5
ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYm
IFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIGF1dG8g
YXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10g
aW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNP
cGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBbbV93ZWJHTExh
eWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJHTExh
eWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
R3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFz
Q1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVyIHN3YXBDaGFp
bl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFjN2M5N2NmNjZl
NzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3ZWE4ODA5NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1w
b3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPG1l
bW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1z
dHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2b2lkKiBoYW5k
bGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5kbGUgKHN1Y2gg
YXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdl
bWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFjZXMuCi0vLyBU
aGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KLS8v
IFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2ls
bCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJl
ZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5Ci0v
LyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCi0vLyBF
eGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBh
cyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVyIGlzIGRvbmUg
d2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5n
Ci0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVj
eWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAogLSAoaWQpaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBz
aG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwogCi0vLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgot
Ly8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250
ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8vIHRpbWUgb2Yg
dGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1
ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2Ug
YW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMg
YXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCi0vLyAtIFN1
cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpcmVjeWNsZUJ1
ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50
cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3Vy
ZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlX
aXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwotCi0vLyBEZXRh
Y2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBt
ZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3Vi
bWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGlu
ZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1t
CmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMuLjE2OGZkNWY2
Yzg0MjM3YmRmOGFiOWNiYmNhNjQwNzM5NTA1YzkyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMjAsNyArMjAs
NyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKQEAgLTMyLDEz
ICszMiwzOSBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bUNBTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisKK2NsYXNz
IFdlYkdMTGF5ZXJTd2FwQ2hhaW4gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkdMTGF5
ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKKyAg
ICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyAgICB2b2lkIHBy
ZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7CisgICAgICAg
ICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCisgICAgICAgICAgICAg
ICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShtX3NwYXJlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgICAgICB2b2lkKiByZXN1bHQgPSBtX2Rp
c3BsYXlCdWZmZXIuaGFuZGxlOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgV2ViQ29yZTo6SU9TdXJm
YWNlKiBkaXNwbGF5U3VyZmFjZSgpIHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlLmdl
dCgpOyB9Citwcml2YXRlOgorICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CisgICAgQnVmZmVy
IG1fc3BhcmVCdWZmZXI7CisgICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsKK307CiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
IF9jb250ZW50c0J1ZmZlcjsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyIF9zcGFyZUJ1
ZmZlcjsKLQogICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsKKyAgICBPcHRpb25hbDxXZWJH
TExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0aERldmljZVBp
eGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29u
dGVudHNPcGFxdWUKQEAgLTQ3LDYgKzczLDcgQEAKICAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJh
bnNmb3JtM0RJZGVudGl0eTsKICAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFx
dWU7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBfc3dh
cENoYWluLmVtcGxhY2Uoc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTczLDMwICsx
MDAsMjEgQEAKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9Ci0KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIHJlY3ljbGVCdWZmZXIKKy0g
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWlu
CiB7Ci0gICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgIGlmIChfc3BhcmVC
dWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAgICAgICAgX3NwYXJlQnVmZmVyLnN1cmZh
Y2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoX3NwYXJlQnVmZmVyKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gX3N3YXBDaGFpbi52YWx1ZSgpOwogfQogCi0t
ICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVy
QnVmZmVyKSBidWZmZXIKKy0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKIHsKLSAgICBBU1NFUlQo
IV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBfc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKF9jb250
ZW50c0J1ZmZlcik7Ci0gICAgX2NvbnRlbnRzQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAg
IFtzZWxmIHNldE5lZWRzRGlzcGxheV07CiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IFlFUzsK
IH0KIAogLSAodm9pZClkaXNwbGF5CiB7Ci0gICAgaWYgKF9jb250ZW50c0J1ZmZlci5zdXJmYWNl
ICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50cyA9IF9jb250
ZW50c0J1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKTsKKyAgICBpZiAoX3N3YXBDaGFp
bi0+ZGlzcGxheVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7CisgICAgICAgIHNl
bGYuY29udGVudHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xheWVyQ29udGVu
dHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29udGVudHMiXTsK
ICAgICB9CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZv
cm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMTA2LDEzICsxMjQs
MTQgQEAKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLS0gKHZvaWQqKSBkZXRh
Y2hDbGllbnQKK0BlbmQKKwordm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KEJ1ZmZl
ciBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgdm9p
ZCogcmVzdWx0ID0gX2NvbnRlbnRzQnVmZmVyLmhhbmRsZTsKLSAgICBfY29udGVudHNCdWZmZXIu
aGFuZGxlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEFTU0VSVCghbV9zcGFy
ZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX3NwYXJlQnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlC
dWZmZXIpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICBbbV9s
YXllciBwcmVwYXJlRm9yRGlzcGxheV07CiB9Ci1AZW5kCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0K
aW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4uOTlhZDkxNjUy
NTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lt
cG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNpbXBvcnQgPENv
cmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggN2Vj
ODFjZjRhZTU3NzJjYWU5NzI4OGJjODBlMzY1NjQ2ZDYyN2M3Yi4uZTcwNzQwNTU5OGUzMmViMjBm
MThjYjMxM2IxNTdjYjRlYzBiNjY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIEV4dGVuc2lvbnNHTE9wZW5H
TDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3Jj
WDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcg
ZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUobG9uZyBzcmNYMCwgbG9uZyBz
cmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9u
ZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZp
bHRlcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJs
aXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb24KICAg
ICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RY
MCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9y
bWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGlu
dGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1
ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiAjZW5kaWYKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHMKICNlbmRp
ZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEcKICNlbmRpZgogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4Njhi
NTQ5OTNhNDQ0NDlhOC4uZTRkMzU1ZGVhMjBlOGE2ZWJlYTA5YzIwZTA1MTAxY2E5MjQyN2UzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0
aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBs
b25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgx
LCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBv
dmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShsb25nIHNyY1gwLCBsb25nIHNy
Y1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25n
IGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmls
dGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVk
IGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0KSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJy
YXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QpIG92ZXJyaWRlOwpAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhU
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0M2I1MTYx
ZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2YzQ4M2ViLi5iYTcyOTlkYjJmMDQxOWMzZjhjYTRm
NDFlZjZiNWE3ZWI0Y2E3NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzCiAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKiwgYm9vbCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwg
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWkg
KiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMU3BhbjxHQ0dMdm9pZD4sIGJvb2wpCiB7
CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggYmZlNDUyMTU0M2Zm
NGIyNzIxMzdmMzQ0Y2VlNGEyMmQ4ZmIyOGM2NC4uNmEzYTM5ZmUzYTFiYTViZDI1OTc3MTU4OTQ3
NTYxY2NhZDVhZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAt
OTMsNyArOTMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwg
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRp
bmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMzLi4w
Mzg1YjNjYTM4Y2JiNzYxMGU5OWQ5M2ZmMjNhZmJlMWExYzU2NTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMiArMTAwLDEyIEBAIHZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25n
IHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZm
ZXIobG9uZyAvKiBzcmNYMCAqLywgbG9uZyAvKiBzcmNZMCAqLywgbG9uZyAvKiBzcmNYMSAqLywg
bG9uZyAvKiBzcmNZMSAqLywgbG9uZyAvKiBkc3RYMCAqLywgbG9uZyAvKiBkc3RZMCAqLywgbG9u
ZyAvKiBkc3RYMSAqLywgbG9uZyAvKiBkc3RZMSAqLywgdW5zaWduZWQgbG9uZyAvKiBtYXNrICov
LCB1bnNpZ25lZCBsb25nIC8qIGZpbHRlciAqLykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQs
IEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xiaXRmaWVsZCwgR0NHTGVu
dW0pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVu
c2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTAogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpk
cmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHCiAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBm
aXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQs
IEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwKICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUs
IHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkp
LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRy
aWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1YjczOThkMDk5
MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4My4uMzE0NmZlNmNjZmUwYzc5YjgwMWIyMzQ4ZmU0Yjc3
OTQ0MWVhMzAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDggKzc1LDgg
QEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNFbmFi
bGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxv
bmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAs
IGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywg
dW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBs
ZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFO
R0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQg
c3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xp
bnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpIG92ZXJyaWRlOwpAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBi
aW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
cmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlk
ZTsKIAogICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gcmVzZXQKICAgICBpbnQgZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAppbmRleCBjMjU1YjBjMTJmNGZjYmZhNDZkYjAyZDU1YzgwYjRjYjc3ZDE3YjcwLi4wMjcyOGY4
OTc4OGUwYjg1ZWQxMjZmNWY5ODFmNWMxZDYwZGZmZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaApAQCAtNTgsNiArNTgsOSBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JK
Q19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFTUyBXZWJHTExheWVyOworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47Cit9CiAjZW5k
aWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICNpZiBVU0UoTklDT1NJQSkKQEAgLTg2LDcgKzg5LDcg
QEAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5hbWVIYXNo
OwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTFByaXZhdGU7CiAKLWNsYXNzIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBH
cmFwaGljc0NvbnRleHRHTAogewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4pOwpAQCAtOTQsNiAr
OTcsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wmIHNoYXJlZENvbnRleHQpOworICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IGNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKTsKKwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fY29udGV4dE9iajsgfQogICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1U
ZXh0dXJlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAgICAgQ0FMYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FM
YXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KQEAgLTE5MSw3ICsxOTYsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKICAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpIGZp
bmFsOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwotICAgIHZvaWQgZ2V0QXR0YWNoZWRT
aGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dM
c2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSBmaW5hbDsKKyAgICB2b2lk
IGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBt
YXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycyk7CiAg
ICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJp
bmcmIG5hbWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRCdWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwpAQCAtMjE5
LDggKzIyNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBm
aW5hbDsKICAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsOwogICAgIEdD
R0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYg
bmFtZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOwotICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0
dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAg
dm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7CkBAIC0yMzYs
NyArMjM5LDggQEAgcHVibGljOgogICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQgcGFyYW0pIGZpbmFsOwogICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQg
ZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpIGZpbmFsOwogCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkgZmluYWw7CisgICAgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCiAgICAgdm9pZCBy
ZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAgdm9pZCBz
YW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpIGZpbmFs
OwpAQCAtMjU0LDcgKzI1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwog
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOyAKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOwogCkBAIC0zMTcsMTIgKzMyMSwxMCBAQCBwdWJsaWM6CiAj
aWYgIVVTRShBTkdMRSkKICAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25z
dCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBsZW5ndGgpOwogICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBsZW5ndGgpOwotICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwg
R0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwogI2VuZGlmCiAgICAgdm9pZCBj
b3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdl
dCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgc2l6ZSkgZmluYWw7CiAKLSAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0Zmll
bGQgYWNjZXNzKSBmaW5hbDsKLSAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAKICAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKQEAgLTM4NCw3ICszODYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFBs
YXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CiAgICAgLy8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFs
dWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVTYW1wbGVyKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikgZmluYWw7CkBAIC0zOTMsOCArMzk1LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
IGZpbmFsOwogICAgIC8vIGdldFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmlu
YWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAKICAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0Zmll
bGQgZmxhZ3MpIGZpbmFsOwogICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgZmluYWw7
CkBAIC00MDMsNyArNDA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAgIC8vIGdl
dFN5bmNQYXJhbWV0ZXIKICAgICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGF0
IHRoZSBXZWJHTCBsZXZlbCBpZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3QuCi0gICAg
dm9pZCBnZXRTeW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTGludCAqdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOwpAQCAtNDIwLDcgKzQyMiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0
ciBzaXplKSBmaW5hbDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBnZXRQYXJh
bWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNl
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3Jt
TmFtZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVu
dW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NH
TGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwog
CiAgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOwogICAgIC8vIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcgpAQCAtNDI5LDExICs0MzEsNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4g
cGFyYW1zKSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwotICAgIHZv
aWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCk7Ci0jZW5kaWYKLQogICAgIC8vIEhlbHBlciBt
ZXRob2RzLgogCiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlt
YWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZh
c1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwpAQCAtNTE1LDcgKzUxMiwxMSBAQCBwdWJsaWM6CiAj
ZW5kaWYgLy8gIVVTRShBTkdMRSkKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxw
dHIsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxwdHIpOworI2Vs
c2UKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMsIEhvc3RXaW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CisjZW5kaWYK
IAogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0
IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBw
dWJsaWMgZW50cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBP
cGVuR0wuCkBAIC01MjcsNyArNTI4LDkgQEAgcHJpdmF0ZToKICAgICAvLyBpbXBsZW1lbnRhdGlv
bi4KICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKLSAgICAK
KworICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOworCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJh
dGlvbiBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9pZCBjaGVj
a0dQVVN0YXR1cygpOwogCkBAIC01NDgsMTAgKzU1MSwxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAg
Ym9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGFsbG9jYXRlQW5k
QmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJh
Y2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluKiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKKyAgICAvLyBUT0RPOiB0
aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gYSBpbWFnZSBi
dWZmZXIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTc5
IC4KICAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKQEAgLTU3
OSw3ICs1ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBpc1ZhbGlkKGZhbHNlKQogICAg
ICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgU2hhZGVyU3ltYm9sTWFwJiBz
eW1ib2xNYXAoZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX0FU
VFJJQlVURSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNIHx8IHN5
bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1ZBUllJTkcpOwpAQCAtNjcyLDcgKzY3OCw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgdXNpbmcgQm91bmRUZXh0dXJlTWFwID0gSGFzaE1hcDxH
Q0dMZW51bSwKICAgICAgICAgICAgIHN0ZDo6cGFpcjxHQ0dMdWludCwgR0NHTGVudW0+LAotICAg
ICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwgCisgICAgICAgICAgICBXVEY6OkludEhh
c2g8R0NHTGVudW0+LAogICAgICAgICAgICAgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czxHQ0dMdWludD4sCiAgICAgICAgICAgICBXVEY6OlBhaXJIYXNoVHJhaXRzPFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj4KICAgICAgICAgPjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3
ZWRmMWY0ZTY4ODEzZjZiOS4uNjI5ODAzODhiNjUyNDc5Y2NiNDMzMWMyNWZmZWViYjY2YzZjYjU0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTQz
MSw3ICs0MzEsNyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRF
eHRlbnNpb25zKCkKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgYXV0byBhdHRy
cyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250
ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0K
LSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRh
dGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgZGF0YS5kYXRhKTsKICAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRE
cmF3RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJF
WFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGJj
NDRjZDU3Nzg4NjcyMDM5YWVhNGY1OTk5NmU0ZDk0ZTFjMWEwZmUuLmY0ZmUwMDlkNDVjYWRkMjhk
YmI3N2VmOTVhY2NiNTAyODNlMWNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjAyOSwyMiArMjAyOSw2IEBAIEdDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFw
cGVkTmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5h
bWUsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRW
ZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVl
LmRhdGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIyNzgsMTkgKzIyNjIsMTkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEcKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0Fy
cmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJh
eXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVu
c2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpOwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwg
Y291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNv
dW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZp
c29yKQogewotICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBk
aXZpc29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGlu
ZGV4LCBkaXZpc29yKTsKIH0KIAogI2lmIEhBVkUoT1BFTkdMXzQpICYmIEVOQUJMRShXRUJHTDIp
CkBAIC0yMzM1LDEzICsyMzE5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29w
eUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMaW50cHRyLAogfQogI2VuZGlm
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEs
IEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTFNw
YW48R0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjQnl0ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShkc3RPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwogfQogCiAjaWYg
SEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKQEAgLTI3MTIsNyArMjY5MSw3IEBA
IFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVl
cnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xl
bnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAgICAgVU5VU0VEX1BBUkFN
KHBuYW1lKTsKQEAgLTI3NTYsMTggKzI3MzUsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4K
ICAgICBVTlVTRURfUEFSQU0ocGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VE
X1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwLmY7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCisKIHsKICAgICBVTlVT
RURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURf
UEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZs
YWdzKQpAQCAtMjgwNiwxMiArMjc4NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAg
IFVOVVNFRF9QQVJBTSh0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFS
QU0oc3luYyk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAgICBVTlVTRURfUEFSQU0oYnVm
U2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxh
dGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soKQpAQCAtMjg5NCwxMSArMjg3NCwxMyBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHBybwog
I2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwg
VmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCiB7CisgICAgVmVjdG9yPEdDR0xpbnQ+IHJlc3VsdCh1
bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAKLSAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5k
aWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkp
OworICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNp
emUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiB1bmlmb3JtQmxvY2tOYW1lKQpAQCAtMjk0Myw3ICsyOTI1LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dM
dWludCwgR0MKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewogICAgIFVOVVNFRF9QQVJB
TSh4KTsKICAgICBVTlVTRURfUEFSQU0oeSk7CkBAIC0yOTU0LDE4ICsyOTM2LDYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQotewotICAg
IFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9y
bWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdERhdGEp
OwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHBhcmFtcykKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMjNkNzRmYTgwZDcwNzkxYmU2MDBkZjU4ZTc1
NjE3MzM5NmFhNTUwNS4uYTIyMTgwYjRiZjRjZTEwZjE4NTIxMjQwMTFlODhhNDQyNzNiNDFlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtNDAsNyArNDAs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRh
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01OCw3ICs1OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQogCi0g
ICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRh
KTsKKyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGRhdGEuZGF0YSk7CiAKICAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5i
b3VuZERyYXdGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CkBAIC0xMzAsNyArMTMwLDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKICAgICAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUg
d2Uga25vdyB3ZSBoYXZlIGl0LgogICAgICAgICAgICAgaWYgKHN1cHBvcnRQYWNrZWREZXB0aFN0
ZW5jaWxCdWZmZXIpIHsKICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9S
RU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRl
bnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNh
bXBsZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CisgICAg
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywg
d2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkK
ICAgICAgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0
ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKQpAQCAt
MTM4LDEyICsxMzgsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZC
T3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkgewogICAgICAgICAgICAgICAgICAgICA6Omds
QmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVO
Q0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7CiAgICAgICAgICAgICAgICAg
ICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7
Ci0gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50
LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAg
ICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhf
QVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA2Mjg0NDUzMjUwMzM1
MTA3ZmQ1NDk4MjIzMmI4YjllYWVjOGU2OGNiLi45ZjgzMTdiMThkNTNiN2IzYzE2NjY5YTRjNTEx
OTkzZWFmMzdjNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsNyBAQCBzZXQo
V2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzCiAgICAgR1BVUHJvY2Vzcy9HUFVQcm9jZXNzCiAKKyAgICBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMCiAgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyCkBAIC0yMTgsNiArMjE5LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdF
U19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24KIAor
ICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkK
ICAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkK
IAogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGVkYjZj
YTU5NzlkMmY0ZGVmOGIyYjJlNzczZjlkNjlhZTc4NmU3ZTkuLjRhNjdkZjhlZGMzYjRmNDg5MTg3
NzAyZWZiZjA0MWIzZDM0YTkxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTIwLDYgKzIwLDcgQEAgJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS9tb2RlbHMucHkKICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTEzMSw2ICsxMzIsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVz
c2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CmluZGV4IDc1Njc5ZjU1ZjVhZTM5OWI1ZWFmNDc3ZjE4OTMyNTZiYzI0ODg0NGQuLjdjZDNk
YmNjYTM1MGM2ZTM4MTRjMzQwYzM5M2M5NjNlZGJiOTgxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTc1LDYgKzE3NSwxMiBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94
eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDM3NzAxYjAxYzNjMWEyYzMw
MGUxZGQyZDcyZTZiODUyMzdmNDI0YjUuLjk3NmIxYTVhM2U1YzBkMzExNWQ0NDUwYzkwODYxNTcx
OWU2ZGVjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE3MSw2ICsxNzEsNyBA
QCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5IFwKKwlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKIAlXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKIAlXZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXApAQCAtMjI3LDYgKzIyOCw3IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2VzcyBcCiAJ
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKIAlHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAorCUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgXAogCUdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5IFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDBlMmU4ODMyYjFlMjBmMWUwZjMxOWQ1
ZDlmMjVkNzJjZTFiZjczYWQuLjQ0YjlmNjNlMTRjNTBiNzQxOTkzZDZmMzVhNWE5NWY1YWZkODBh
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY0LDYgKzY0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHTCkKKyNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCkBAIC0yOTAsNiArMjk0LDIx
IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tl
bmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91
bmQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNYXAuZW5zdXJlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgWyZd
KCkgeworICAgICAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRy
aWJ1dGVzLCAqdGhpcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9KTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2
b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQor
eworICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLnJlbW92ZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZv
dW5kKTsKK30KKyNlbmRpZgogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5v
d1BsYXlpbmdJbmZvKCkKIHsKICAgICBncHVQcm9jZXNzKCkubm93UGxheWluZ01hbmFnZXIoKS5j
bGVhck5vd1BsYXlpbmdJbmZvQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDI2NzhkYmM0ZTVk
MzY1ZmFkMjhlOGI0ODI3ODYzNzYyYTNjNDU3OGQuLjVhZWRmYmI0ZDJjYWM3Yjc2NjBmZjA3MzYw
OWQzNzdjNjAxNTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvbklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorCiAjaW5jbHVk
ZSA8V2ViQ29yZS9MaWJXZWJSVENFbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQ
bGF5aW5nTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4K
QEAgLTM5LDYgKzQwLDExIEBACiAjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BV
UHJvY2VzczsKQEAgLTU0LDYgKzYwLDcgQEAgY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5OwogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKK2NsYXNz
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1
Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKQEAgLTExOSw2ICsxMjYsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgY3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29u
dGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisjZW5kaWYKKwogICAgIHZvaWQg
Y2xlYXJOb3dQbGF5aW5nSW5mbygpOwogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBz
ZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CiAK
QEAgLTE4MCw3ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4+OwogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwOwotCisjaWYgRU5BQkxFKFdFQkdM
KQorICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTD4+OworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwIG1fcmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXA7CisjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDUxOTRmYjRmNjA4NWQ2MjRk
NTk4M2Y2MjUyYzM2NWViMzI3MWYzNDQuLjlkNTRlMTY0NTk1YjBhMzYxZGZlNGM3NWJmZjQwMThh
ODU3NTljOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSwxMCBA
QAogbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVz
c2FnZSB7CiAgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAgICAgdm9pZCBS
ZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
IHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lk
IENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNz
Q29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikKKyNlbmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygp
CiAgICAgdm9pZCBTZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0
aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8gbm93UGxheWluZ0luZm8pCiAjaWYg
VVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZTk3MGU1ZDg4NzA1MTZhZDEzNWI3NjVjZGE0NTdmNDI1M2FjMDJkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDx3dGYv
TWFjaFNlbmRSaWdodC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1
dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikK
KyAgICA6IG1fY29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJv
Y2VzcyhhdHRyaWJ1dGVzLCAqdGhpcykpCisgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCisgICAgLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7Cisg
ICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBtX2NvbnRleHQtPmFkZENsaWVudCgq
dGhpcyk7CisgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFw
aGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7CisgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5z
aW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhU
RU5TSU9OU19BTkdMRSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6V2FzQ3JlYXRlZChleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQoreworICAgIGlmIChhdXRvKiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQor
ICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworfQorCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKK30KKworSVBDOjpDb25uZWN0aW9u
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICByZXR1cm4gJmdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordWlu
dDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9V
SW50NjQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRl
KCkKK3sKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Zm9yY2VDb250ZXh0TG9z
dCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
V2FzTG9zdCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hD
b250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpC
dWZmZXIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVCdWZmZXIoKQoreworICAgIHJl
dHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fZGlzcGxh
eUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
Cit9CisKK3ZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQoKQorewor
ICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUsIG51bGxwdHIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAg
IG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGZv
cmNlQ29udGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJl
cGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9yRGlz
cGxheSgpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVy
LnN1cmZhY2UpOworICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIGlmIChkaXNwbGF5
QnVmZmVyKQorICAgICAgICBzZW5kUmlnaHQgPSBkaXNwbGF5QnVmZmVyLT5jcmVhdGVTZW5kUmln
aHQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCkpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmlu
ZyYmIGV4dGVuc2lvbikKK3sKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgbV9jb250ZXh0LT5tYXJrQ29udGV4dENo
YW5nZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmYwNTcyMTAxZDliYzBmMDlmN2RhOTRjOTRlNTMyYmE3
ZjdjMzA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dMLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFt
ZXNwYWNlIFdURiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8gR1BVIHByb2Nlc3Mg
c2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzCisvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wg
Y2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgorLy8gVGhlIGltcGxlbWVudGF0
aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgZmluYWwKKyAgICA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyAgICAsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudAor
ICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIGZpbmFsOworCisgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
IG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4K
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7
CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lk
IGRpZENvbXBvc2l0ZSgpIGZpbmFsOworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFs
OworICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29u
dGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBmaW5hbDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluIG92ZXJyaWRlcy4KKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZl
cigpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIGZpbmFsOworICAgIHZvaWQqIGRl
dGFjaENsaWVudCgpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisg
ICAgdm9pZCByZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKKyAgICB2b2lk
IHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJp
Z2h0JiYpPiYmKTsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOwor
ICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisKKyNpbmNsdWRlICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKKworICAgIFJl
ZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworICAgIFdlYWtQ
dHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcjsKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVy
IG1fZGlzcGxheUJ1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWE3
MTUyNGQ0MDgxOWJhMDMxMGNiNDIwMTM2MDc1NjY4Nzg2ODU3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjk0IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJv
bm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRp
c3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNp
b25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKQorCisgICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB2b2lk
IFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQorICAgIHZvaWQgTW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBBY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgdm9pZCBBdHRhY2hT
aGFkZXIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qgc2hhZGVyKQorICAgIHZvaWQgQmluZEF0
dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcgbmFtZSkK
KyAgICB2b2lkIEJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAg
IHZvaWQgQmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAg
ICB2b2lkIEJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQor
ICAgIHZvaWQgQmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAg
IHZvaWQgQmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9h
dCBhbHBoYSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB2b2lk
IEJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxw
aGEpCisgICAgdm9pZCBCbGVuZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3Rv
cikKKyAgICB2b2lkIEJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3Qg
ZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgdm9pZCBD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQzMl90IHRhcmdldCkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ2xlYXIodWludDMyX3QgbWFzaykKKyAgICB2
b2lkIENsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQg
YWxwaGEpCisgICAgdm9pZCBDbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHZvaWQgQ2xlYXJT
dGVuY2lsKGludDMyX3QgcykKKyAgICB2b2lkIENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVl
biwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHZvaWQgQ29tcGlsZVNoYWRlcih1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgQ29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB2b2lkIENv
cHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZUJ1ZmZlcigpIC0+ICh1aW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZUZyYW1lYnVmZmVyKCkg
LT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUHJv
Z3JhbSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENy
ZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIENyZWF0ZVNoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVUZXh0dXJlKCkgLT4gKHVpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3VsbEZhY2UodWludDMyX3QgbW9k
ZSkKKyAgICB2b2lkIERlbGV0ZUJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRl
RnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVByb2dyYW0odWludDMy
X3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVJlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgRGVsZXRlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVUZXh0dXJl
KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB2
b2lkIERlcHRoTWFzayhib29sIGZsYWcpCisgICAgdm9pZCBEZXB0aFJhbmdlKGZsb2F0IHpOZWFy
LCBmbG9hdCB6RmFyKQorICAgIHZvaWQgRGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQz
Ml90IGFyZzEpCisgICAgdm9pZCBEaXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIERpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIERyYXdBcnJheXMo
dWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB2b2lkIERy
YXdFbGVtZW50cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1
aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBFbmFibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQg
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBGaW5pc2go
KQorICAgIHZvaWQgRmx1c2goKQorICAgIHZvaWQgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0
YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWlu
dDMyX3QgYXJnMywgaW50MzJfdCBsZXZlbCkKKyAgICB2b2lkIEZyb250RmFjZSh1aW50MzJfdCBt
b2RlKQorICAgIHZvaWQgR2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQg
R2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9v
bCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJn
MikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QXR0
cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFN0cmluZyh1aW50MzJfdCBuYW1lKSAtPiAoU3RyaW5nIHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1
aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRf
dCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0KHVpbnQzMl90IHBuYW1lKSAtPiAoaW50NjRf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEludGVnZXI2NGkodWludDMy
X3QgcG5hbWUsIHVpbnQzMl90IGluZGV4KSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFByb2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBu
YW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJv
b2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5
UmVmZXJlbmNlPGJvb2w+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNo
bWVudCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQz
Ml90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBz
aGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNpb25UeXBlKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90LCAyPiByYW5nZSwgR0NHTGludCBwcmVjaXNpb24pIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAt
PiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1m
dih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUp
IC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFVuaWZvcm1pdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50
NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQz
Ml90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1Mb2NhdGlv
bih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IHBuYW1lKSAtPiAodWludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBIaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB2b2lkIElz
QnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgSXNFbmFibGVkKHVpbnQzMl90IGNhcCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBJc0ZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29s
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNQcm9ncmFtKHVpbnQzMl90IGFy
ZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNSZW5kZXJi
dWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBJc1NoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIElzVGV4dHVyZSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIExpbmVXaWR0aChmbG9hdCBhcmcwKQorICAg
IHZvaWQgTGlua1Byb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFBpeGVsU3RvcmVpKHVp
bnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgUG9seWdvbk9mZnNldChmbG9h
dCBmYWN0b3IsIGZsb2F0IHVuaXRzKQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIFNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGlu
dmVydCkKKyAgICB2b2lkIFNjaXNzb3IoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAs
IFN0cmluZyBhcmcxKQorICAgIHZvaWQgU3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJf
dCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQz
Ml90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAg
IHZvaWQgU3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2Vw
YXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1
aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBT
dGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6
ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZv
aWQgVW5pZm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3Jt
MWZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAg
dm9pZCBVbmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHZvaWQgVW5p
Zm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYp
CisgICAgdm9pZCBVbmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkK
KyAgICB2b2lkIFVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90
IHgsIGludDMyX3QgeSkKKyAgICB2b2lkIFVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTNmKGludDMyX3Qg
bG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBVbmlmb3JtM2Z2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9p
ZCBVbmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3QgeikKKyAgICB2b2lkIFVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24s
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3JtNGZ2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9p
ZCBVbmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVW5pZm9ybTRpdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MmZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVc2VQcm9ncmFtKHVpbnQz
Ml90IGFyZzApCisgICAgdm9pZCBWYWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2
b2lkIFZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHZvaWQgVmVy
dGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAx
PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQg
eCwgZmxvYXQgeSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmli
M2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQs
IDM+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGZ2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiB2YWx1ZXMpCisg
ICAgdm9pZCBWZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUs
IHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB2b2lkIFZpZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIEJ1ZmZlckRhdGEwKHVpbnQzMl90IHRh
cmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJEYXRh
MSh1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSwgdWlu
dDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWlu
dDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9p
ZCBSZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgUmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgdm9pZCBUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTJEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVGV4U3ViSW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMp
CisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNp
emUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBp
bnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAg
IHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGlu
dDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQg
RHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQz
Ml90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAg
IHZvaWQgQ3JlYXRlVmVydGV4QXJyYXkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgSXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgQ29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVU
YXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRf
dCBhcmc0KQorICAgIHZvaWQgR2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2
NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJf
dCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50
MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwg
dWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0
ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxheWVyKQorICAgIHZvaWQgSW52YWxpZGF0
ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gYXR0YWNobWVudHMpCisgICAgdm9pZCBJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMy
X3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cywgaW50
MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZv
aWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRl
eFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhT
dG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQor
ICAgIHZvaWQgVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTNE
MSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJv
cmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgdm9pZCBUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZv
aWQgVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UzRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zm
c2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGlu
dDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAg
dm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zm
c2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBHZXRGcmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0
cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IFVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlm
b3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2
b2lkIFVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
LCB1aW50MzJfdCB2MikKKyAgICB2b2lkIFVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWlu
dDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9p
ZCBVbmlmb3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm0zdWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9p
ZCBVbmlmb3JtNHVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4
NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAg
IHZvaWQgVW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJp
eDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWJJNGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3QsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgdm9p
ZCBWZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliSVBvaW50ZXIodWludDMy
X3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVp
bnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUs
IHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1
ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZh
bHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBk
cmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZXMpCisgICAgdm9p
ZCBDbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVp
bnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBz
dGVuY2lsKQorICAgIHZvaWQgQ3JlYXRlUXVlcnkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB2
b2lkIElzUXVlcnkodWludDMyX3QgcXVlcnkpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgQmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5
KQorICAgIHZvaWQgRW5kUXVlcnkodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0UXVlcnko
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwg
dWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIENyZWF0ZVNhbXBsZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBEZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJ
c1NhbXBsZXIodWludDMyX3Qgc2FtcGxlcikgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBCaW5kU2FtcGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVy
KQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3Qg
cG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJf
dCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBHZXRTYW1w
bGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmko
dWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgRmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWlu
dDMyX3QgZmxhZ3MpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIElzU3luYyh1aW50NjRfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIERlbGV0ZVN5bmModWludDY0X3QgYXJnMCkKKyAgICB2b2lkIENsaWVudFdh
aXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0KSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBXYWl0U3luYyh1
aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHZvaWQg
R2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB2b2lkIElzVHJhbnNmb3JtRmVlZGJhY2so
dWludDMyX3QgaWQpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
QmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAg
dm9pZCBCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAg
dm9pZCBFbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHZhcnlpbmdzLCB1aW50MzJf
dCBidWZmZXJNb2RlKQorICAgIHZvaWQgR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQz
Ml90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3Jt
RmVlZGJhY2soKQorICAgIHZvaWQgUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQg
QmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
YnVmZmVyKQorICAgIHZvaWQgQmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0
KQorICAgIHZvaWQgR2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0
cmluZz4gdW5pZm9ybU5hbWVzKSAtPiAoVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZl
Y3Rvcjx1aW50MzJfdD4gdW5pZm9ybUluZGljZXMsIHVpbnQzMl90IHBuYW1lKSAtPiAoVmVjdG9y
PGludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUJs
b2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgp
IC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3JtQmxv
Y2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1
aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJs
b2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQz
Ml90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBC
bGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90
IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQz
Ml90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIp
CisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0
ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJp
bmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBJbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAg
ICB2b2lkIFB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFBvcEdyb3Vw
TWFya2VyRVhUKCkKKyAgICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMy
X3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQp
CisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNv
dW50KQorICAgIHZvaWQgVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1
aW50MzJfdCBkaXZpc29yKQorfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZmZlOGMxZmM3YWZh
MTcyZjFiYjljNzM0MjY3NWM1ZGZlNmUxNzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmgKQEAgLTAsMCArMSwxMTgzIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMg
ZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8v
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQor
ICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAgICB9CisgICAgdm9pZCBzeW50
aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgIH0KKyAgICB2b2lkIG1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNo
YWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lk
IGJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5n
JiYgbmFtZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKGFy
ZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZl
cih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRSZW5kZXJidWZm
ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmlu
ZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJs
ZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvbihtb2RlKTsKKyAgICB9CisgICAg
dm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9k
ZUFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUo
bW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmModWludDMyX3Qg
c2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymxl
bmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFy
YXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwg
dWludDMyX3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1Nl
cGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgIH0KKyAgICB2
b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY2xlYXIodWludDMyX3QgbWFz
aykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFzayk7CisgICAgfQorICAgIHZv
aWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBh
bHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7CisgICAgfQorICAgIHZv
aWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xl
YXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBn
cmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
b2xvck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlZCksIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihibHVlKSwgc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAgIHZvaWQgY29tcGlsZVNoYWRlcih1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGFy
ZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworICAgIH0KKyAgICB2b2lkIGNv
cHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhl
aWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZv
cm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVidWZmZXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVByb2dyYW0oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUmVuZGVyYnVmZmVyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2hh
ZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRl
cihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
VGV4dHVyZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVpbnQz
Ml90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihhcmcwKTsK
KyAgICB9CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVJlbmRl
cmJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTaGFkZXIodWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGFyZzApOworICAgIH0K
KyAgICB2b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aEZ1bmMo
dWludDMyX3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMp
OworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZsYWcpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oZmxhZykpOworICAg
IH0KKyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpOworICAgIH0KKyAgICB2
b2lkIGRldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZv
aWQgZGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2Fi
bGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMy
X3QgaW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBp
bnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
cmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1l
bnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNv
dW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCBlbmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFi
bGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJf
dCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRl
cmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0
YXJnZXQsIGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50
MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFt
ZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2
ZWwpOworICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2VuZXJh
dGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZW5l
cmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYih1aW50
MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4
LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUo
YXJnMikpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYg
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdl
dEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3RyaW5n
KHVpbnQzMl90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRp
Y19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0Rmxv
YXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFt
ZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
VmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
aW50NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyNjQocG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2
NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dy
YW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1
aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVy
ZW5jZTxib29sPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPihyZWludGVycHJldF9j
YXN0PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRFcnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50
LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbUluZm9M
b2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhhcmcw
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7
CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGFyZzAsIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlcklu
Zm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5
cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiwgaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBzdGQ6OmFycmF5PEdDR0xpbnQsIDI+IHJhbmdlIHsgfTsKKyAgICAg
ICAgR0NHTGludCBwcmVjaXNpb24gPSB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLCAmcHJlY2lz
aW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90LCAyPihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihyYW5nZS5kYXRhKCkpLCByYW5nZS5z
aXplKCkpLCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlclNvdXJjZSh1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShhcmcwKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFy
YW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtZnYodWludDMyX3Qg
cHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNf
Y2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZv
cm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFs
dWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2
KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1
ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQt
PmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0
X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMdWludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3Ry
aW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOwor
ICAgIH0KKyAgICB2b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9v
bGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmlzQnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxi
b29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBj
YXAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRW5hYmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGlzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1
ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4o
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlz
UmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVm
ZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4
dHVyZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBw
YXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFt
KTsKKyAgICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5p
dHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0
cyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3Zl
cmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7
CisgICAgfQorICAgIHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3Io
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQz
Ml90IGFyZzAsIFN0cmluZyYmIGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNoYWRl
clNvdXJjZShhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuYyh1aW50MzJf
dCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVu
Y2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVm
LCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuY1Nl
cGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1h
c2sodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2so
bWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNl
LCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFza1Nl
cGFyYXRlKGZhY2UsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcCh1aW50MzJfdCBm
YWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHN0
ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpm
YWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9w
U2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBh
cmFtKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRl
eFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtMWYobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZnYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9u
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkp
LCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYo
bG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb24sIHgsIHkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNmKGludDMyX3QgbG9j
YXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTNmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2l2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9j
YXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZnYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRp
KGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNw
b3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFs
dWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJp
eDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSks
IHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVzZVByb2dyYW0odWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShhcmcwKTsKKyAgICB9Cisg
ICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
MWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiYmIHZhbHVl
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtl
R0NHTFNwYW48MT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0
YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBm
bG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIy
ZihpbmRleCwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVpbnQzMl90
IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiYmIHZhbHVlcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihp
bmRleCwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVpbnQzMl90
IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiYmIHZhbHVlcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
NGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiYmIHZhbHVl
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtl
R0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0
YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5k
ZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90
IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7
CisgICAgfQorICAgIHZvaWQgdmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52aWV3cG9y
dCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMCh1aW50
MzJfdCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRy
PihhcmcxKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGExKHVpbnQzMl90IHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEsIHVpbnQzMl90IHVzYWdl
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodWludDMyX3Qg
dGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgcmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRf
dCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dM
Y2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAg
IG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlYWRu
UGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAg
ICB2b2lkIHRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBp
eGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1h
Z2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0
KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRl
eFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQz
Ml90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAg
fQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50
MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZp
c29yKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
VmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheSh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weUJ1
ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVp
bnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3
cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ocmVhZE9mZnNldCksIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihh
cmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBWZWN0b3I8R0NHTGNoYXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90
PihkYXRhU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFy
Z2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgYmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qg
c3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMy
X3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsK
KyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgbGF5ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICB9
CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRzKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1l
bnRzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1
aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVu
dHMsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdl
dCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2ht
ZW50cy5kYXRhKCkpLCBhdHRhY2htZW50cy5zaXplKCkpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICB9CisgICAgdm9pZCByZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFy
Z2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAg
IHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QwKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVy
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZv
aWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRl
eEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGlu
dDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4
ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvcHlU
ZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJ
bWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVy
LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBm
b3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYg
ZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9y
bWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNp
emUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGdl
dEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWko
aW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
LCB1aW50MzJfdCB2MikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2Nh
dGlvbiwgdjAsIHYxLCB2Mik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aShpbnQzMl90IGxv
Y2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2
MykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1
aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0z
dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aXYobG9jYXRpb24sIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3Nl
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgy
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3Qg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRh
dGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwgaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRl
eEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwg
ND4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYo
aW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2
YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkodWludDMy
X3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHks
IHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBz
aXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwg
dHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9Cisg
ICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBzdGFydCwg
dWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0
YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzKG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2YWx1
ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3
YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFs
dWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZl
cnVpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdi
dWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSksIHZh
bHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1
ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgZGVwdGgsIHN0ZW5jaWwpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVRdWVyeSh1aW50MzJfdCBx
dWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUXVlcnkocXVlcnkpOworICAg
IH0KKyAgICB2b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
UXVlcnkocXVlcnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJlZ2luUXVlcnkodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5RdWVy
eSh0YXJnZXQsIHF1ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBlbmRRdWVyeSh1aW50MzJfdCB0YXJn
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldCk7CisgICAgfQor
ICAgIHZvaWQgZ2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeU9i
amVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
dWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNhbXBsZXIoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2FtcGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2FtcGxlcih1aW50MzJf
dCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTYW1wbGVyKHNhbXBs
ZXIpOworICAgIH0KKyAgICB2b2lkIGlzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFNh
bXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3Qg
cGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBs
ZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYodWlu
dDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwor
ICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBs
ZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAg
IH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIs
IHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZsYWdzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xzeW5jIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4ocmV0dXJuVmFsdWUpKSk7CisgICAgfQorICAgIHZvaWQgaXNTeW5jKHVpbnQ2NF90
IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5j
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBkZWxl
dGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVN5
bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzAp
KSk7CisgICAgfQorICAgIHZvaWQgY2xpZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMy
X3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jbGllbnRXYWl0
U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTHVpbnQ2ND4odGltZW91dCkpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgd2FpdFN5bmMo
dWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+d2FpdFN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4o
dGltZW91dCkpOworICAgIH0KKyAgICB2b2lkIGdldFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN5bmNpKHJlaW50ZXJwcmV0X2Nhc3Q8R0NH
THN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgIH0KKyAg
ICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9v
bGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmlzVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRUcmFuc2Zv
cm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCk7CisgICAgfQorICAg
IHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1v
ZGUpOworICAgIH0KKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCB0
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+
JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1v
ZGUpOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFy
ZzIgeyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhw
cm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
YXJnMikpOworICAgIH0KKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAg
IHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJC
YXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVm
ZmVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90
IGFyZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQs
IGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHN0YXRpY19j
YXN0PEdDR0xzaXplaXB0cj4oYXJnNCkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1JbmRp
Y2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdW5pZm9ybU5hbWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQ+IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUluZGljZXMocHJvZ3Jh
bSwgdW5pZm9ybU5hbWVzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHBy
b2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4mJiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0lu
ZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrSW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tC
aW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50
MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tC
aW5kaW5nKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0
b3I8R0NHTGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDAp
OworICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3Qq
PihwYXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBz
cmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJf
dCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWlu
dDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwg
c3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0K
KyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVh
dGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWxldGVW
ZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFy
cmF5T0VTKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmlu
ZFZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpbnNl
cnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAg
IHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7CisgICAg
fQorICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQoKTsKKyAgICB9CisgICAgdm9pZCBk
cmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwg
YnVmcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
dWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmlt
Y291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0K
KyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMy
X3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291
bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTHZvaWRw
dHI+KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGlu
ZGV4LCBkaXZpc29yKTsKKyAgICB9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMv
R1BVUHJvY2Vzc01hYy5tbQppbmRleCBiN2JiNjNiMjlhZDgwMjE3MmRmMjdhMTI4OTViYjE5OThm
YTRiNmIwLi4yNGM0MzdjYWFlN2Y4ZjlhOWFmZjkyNzAzZWZjZjlkYTAzMWU0YzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCkBAIC0zMiw4ICsz
Miw4IEBACiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1w
b3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5o
PgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2Vy
dmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1wb3J0IDx3dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDkg
KzQ0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdm9pZCBHUFVQcm9jZXNzOjppbml0
aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJikKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyNp
ZiAwCiAgICAgLy8gSGF2aW5nIGEgd2luZG93IHNlcnZlciBjb25uZWN0aW9uIGluIHRoaXMgcHJv
Y2VzcyB3b3VsZCByZXN1bHQgaW4gc3BpbiBsb2dzICg8cmRhcjovL3Byb2JsZW0vMTMyMzkxMTk+
KS4KLSAgICBPU1N0YXR1cyBlcnJvciA9IFNldEFwcGxpY2F0aW9uSXNEYWVtb24odHJ1ZSk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChlcnJvciwgZXJyb3IgPT0gbm9FcnIpOworICAgIGF1dG8gcmV0dmFs
ID0gQ0dTU2V0RGVueVdpbmRvd1NlcnZlckNvbm5lY3Rpb25zKHRydWUpOworICAgIFJFTEVBU0Vf
QVNTRVJUKHJldHZhbCA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAgIENHU1NodXRkb3duU2VydmVy
Q29ubmVjdGlvbnMoKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBsYXVuY2hTZXJ2aWNlc0NoZWNr
SW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KaW5kZXggZGIwNmU1MzRmN2Y1MWQyZWJk
MDM4MjVmNTgyNDVmODQ5NmY4YjE3OS4uZWQxMDBiMzZlZDZmNDZkNGFhZjYzNTQ0Nzc4ODJhYjc5
M2ExMWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBw
bGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KQEAgLTIwNyw2ICsyMDcsNyBA
QAogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5BQVBMLChEaXNwbGF5UGlwZXxPcGVuQ0xk
aXNhYmxlZHxJT0dyYXBoaWNzX0xFUih8X1JlZ1RhZ18xfF9SZWdUYWdfMHxfQnVzeV8yKXxhbGlh
cy1wb2xpY3l8Ym9vdC1kaXNwbGF5fGRpc3BsYXktYWxpYXN8bXV4LXN3aXRjaC1zdGF0ZXxuZHJ2
LWRldnxwcmltYXJ5LWRpc3BsYXl8c2xvdC1uYW1lKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXkFUWSwoY2JpdHN8ZmJfKGxpbmVieXRlc3xvZmZzZXR8c2l6ZSl8aW50cmV2KSIpCiAg
ICAgKGlva2l0LXByb3BlcnR5ICJBVFksRGV2aWNlTmFtZSIpIDs7IE5lZWRlZCBieSBNZXRhbCBj
b21waWxlcnMKKyAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxFRklEaXNwbGF5IikKICAgICAoaW9r
aXQtcHJvcGVydHkgIkFUWSxGYW1pbHlOYW1lIikgOzsgRGl0dG8KICAgICAoaW9raXQtcHJvcGVy
dHkgIkFWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJCYWNrbGlnaHRIYW5kbGUi
KQpAQCAtMjE3LDYgKzIxOCw5IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJDYXBzTG9ja0RlbGF5
IikKICAgICAoaW9raXQtcHJvcGVydHkgIkNhc2VTZW5zaXRpdmUiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiQ29uZmlnU3RhdGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRFBMYW5lcyIpCisgICAg
KGlva2l0LXByb3BlcnR5ICJEUExpbmtCaXQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRFBMaW5r
UmF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXNjcmlwdGlvbiIpCiAgICAgKGlva2l0LXBy
b3BlcnR5ICJEZXZlbG9wbWVudCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkRldmlj
ZSggQ2hhcmFjdGVyaXN0aWNzfEVxSUQpIikKQEAgLTIyOSwxMCArMjMzLDE3IEBACiAgICAgKGlv
a2l0LXByb3BlcnR5ICJGYW1pbHkgSUQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9yY2VTdXBw
b3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9ybWF0cyIpCisgICAgKGlva2l0LXByb3Bl
cnR5ICJGcmFtZWJ1ZmZlckVuYWJsZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRnJhbWVidWZm
ZXJTdGFydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkdQVUNvbmZpZ3VyYXRpb25WYXJpYWJs
ZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEQ0NEaXNwbGF5YWJsZSIpCisgICAgKGlva2l0
LXByb3BlcnR5ICJHUFVEZWJ1Z051bGxDbGllbnRNYXNrIikKICAgICAoaW9raXQtcHJvcGVydHkg
IkdwdURlYnVnUG9saWN5IikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0NvdW50ZXJCdW5k
bGVOYW1lIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0NvdW50ZXJQbHVnaW5DbGFzc05h
bWUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSEVWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXBy
b3BlcnR5ICJISURQb2ludGVyQWNjZWxlcmF0aW9uVHlwZSIpCisgICAgKGlva2l0LXByb3BlcnR5
ICJId0N0eENhY2hlVXBkYXRlIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9BY2Nl
bChEaXNwbGF5UGlwZUNhcGFiaWxpdGllc3xJbmRleHxUeXBlc3xSZXZpc2lvbikiKQogICAgIChp
b2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JTyhDbGFzc3xNYXRjaENhdGVnb3J5fE5hbWVNYXRjaCki
KQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0F1ZGlvQ29udHJvbChDaGFubmVsSUR8
SUR8U3ViVHlwZXxVc2FnZXxWYWx1ZSkiKQpAQCAtMjgyLDYgKzI5Myw4IEBACiAgICAgKGlva2l0
LXByb3BlcnR5ICJJT1BhcmVudE1hdGNoIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJe
SU9QQ0koKENsYXNzfFByaW1hcnl8UHJvcGVydHl8KU1hdGNofEV4cHJlc3MoQ2FwYWJpbGl0aWVz
fExpbmsoU3RhdHVzfENhcGFiaWxpdGllcykpfE1TSU1vZGV8UmVzb3VyY2VkfFR1bm5lbGxlZCki
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QTUlzUG93ZXJNYW5hZ2VkIikKKyAgICAoaW9raXQt
cHJvcGVydHkgIklPUGVyc29uYWxpdHlQdWJsaXNoZXIiKQorCiAgICAgKGlva2l0LXByb3BlcnR5
LXJlZ2V4ICMiXklPUGxhdGZvcm0oU2VyaWFsTnVtYmVyfFVVSUQpIikKICAgICAoaW9raXQtcHJv
cGVydHkgIklPUG93ZXJNYW5hZ2VtZW50IikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUHJvYmVT
Y29yZSIpCkBAIC0zMTcsNiArMzMwLDcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIlByb3RvY29s
IENoYXJhY3RlcmlzdGljcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJSZW1vdmFibGUiKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5SZXNldE9uKExvY2t8VW5sb2NrKU1zIikKKyAgICAo
aW9raXQtcHJvcGVydHkgIlNXSVBfcHJvcGVydGllcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJT
YWZlRWplY3RSZXF1ZXN0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2FtcGxlUmF0ZXMiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiU2VyaWFsIE51bWJlciIpCkBAIC0zMzgsNiArMzUyLDcgQEAK
ICAgICAoaW9raXQtcHJvcGVydHkgImF0dGFjaGVkLWdwdS1jb250cm9sLXBhdGgiKQogICAgIChp
b2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5hdWRpby0oY29kZWMtaW5mb3xkZXZpY2UtbXZhbHVlfGRl
dmljZS1udmFsdWV8c2VsZWN0b3IpIikKICAgICAoaW9raXQtcHJvcGVydHkgImF2LXNpZ25hbC10
eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgImJhY2tsaWdodC1QV00tZnJlcSIpCiAgICAgKGlv
a2l0LXByb3BlcnR5ICJiY2RWZXJzaW9uIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJe
KGJvYXJkfGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW18dmVuZG9yKS1pZCIpCiAgICAgKGlva2l0
LXByb3BlcnR5ICJib290LWdhbW1hLXJlc3RvcmVkIikKQEAgLTM1MCw2ICszNjUsMTEgQEAKICAg
ICAoaW9raXQtcHJvcGVydHkgImNvbm5lY3Rvci10eXBlIikKICAgICAoaW9raXQtcHJvcGVydHkt
cmVnZXggIyJeKGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW0tdmVuZG9yfHRvdWNoLXNpemUpLWlk
IikKICAgICAoaW9raXQtcHJvcGVydHkgImRldmljZV90eXBlIikKKyAgICAoaW9raXQtcHJvcGVy
dHkgImRpc3BsYXktYnBjIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktY29ubmVjdC1m
bGFncyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWxpbmstY29tcG9uZW50LWJpdHMi
KQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1waXhlbC1jb21wb25lbnQtYml0cyIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
ZHBtIikKICAgICAoaW9raXQtcHJvcGVydHkgImVycm9yZGIiKSA7OyBOZWVkZWQgZm9yIE9wZW5H
TCBvbiBvbGRlciBoYXJkd2FyZQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZmlsZXZhdWx0LWltYWdl
IikgOzsgTmVlZGVkIGJ5IExhdW5jaFNlcnZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IDZhNWM2NzI1Y2Fh
OWJkYjg2N2FiODZiOGM1N2YzNmRlMmM4OTZkY2YuLmJlN2Y1MjIwYmU5Yjg1Zjg2OGE1ZjgzN2Vm
ZWQ2NmRkZjk1ZjI5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zOSwxMCArMzksNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90
ZUxlZ2FjeUNETVByb3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDQ3ZjVkMmYy
NzBmYTVkZTRmYWRlMTUxNDQ0MjExMTc5NGVkMzZkMjguLjJjNWU3ZGU3ZDJlNzU2OTYwYTNmM2Vj
ODc2YzhiODI1YzZlNDViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNE
TS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKaW5kZXggYTk4Y2ZhNGM5ZjgwMjMxOTA0Zjhl
ZjBlYWE5MzYyMjlhZmE5NzU5OC4uZmVjNjVjZjYyYjY2NzRiODMwMGM1MGNkNDMzNDE1ZTkxNTEx
NDQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKaW5kZXggZDg5YjgwM2Y2YWJm
NDFjOGU5ZWRkZTQxNDI3NjkzMjgyNmQxYjMzOC4uMDgxZWIzMTgwZDAyMTY0YjVhYTNkNTQ4MDZm
NzJjN2VkYzBjYjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKQEAgLTI3LDE1ICsyNywxNiBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL1BvbGljeUNoZWNrZXIuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhU291cmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKaW5kZXggNmJmYmZhZmIyMDQ0NzgzMGQ3MzBjMzhj
NTVkOTE2MDIyYzIzZDMxNi4uMDZlMzA5ZTRkNTdlYTA0N2Y1ZWQ4MjkwMjU4YjE5Y2JjZGE2MTky
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
U291cmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5oCkBAIC0zOCw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKaW5kZXggMjQ1Y2Y0MGRm
YzZmYzcyNDE3NDk5Yzk5NmVlYTk1ZjBhM2E4ZDY5YS4uODY4MmNkNzk1YTVmNTQ0YWJiNzhlN2Mx
Yjg1ODdiOTY4ODNmOTQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlU291cmNlQnVmZmVyUHJveHkuaAppbmRleCAzOTBjMGNlMWMyN2I2MDhkYzk3YWFmYTUxODYz
NjE4ODBjM2FmNGQzLi5jMzM3ODMzM2MwMjY2NmRhNjFhYmFjNjQ5NDcwMjEyMWRiNWU4NmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVm
ZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuaApAQCAtMjcsOSArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5o
IgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgpAQCAtMzgsNyArNDAsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaAppbmRleCAzNjAzMTBiN2QxMjFkMjg2ZDhkMTYxZjE4M2FiZDBlNzQ1
YjgzNTMzLi44NDNiYjA2ZjdiNTZjNmUzY2ZiZWU3OWE3ZTQyODFlZmVlOGY5YTc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5oCkBAIC0yOCwxNCArMjgsMTUgQEAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9S
TShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGY4YWJjMWY0MDVmYzE0Njk0
NzViNGQ5MGJhZDNkNTNjYTBmODAxNGUuLjYxYzQ3MDhhZTk2ZGJjYWE1Njk4MDllZTE5OTViZTgx
NmE5MWZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNFKExJ
QldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2lt
cG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIkxpYldl
YlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5kZXggNzg4YzVmMDBjMDJmNGYx
NDhmZWVjY2QzOGQxMDY4MThiMGQ3ZTk2MS4uM2FiNGU0YjFjZjFjMTQxMjMwYzEzZTQ1NzZjNWVk
NmU2ZWZjMmVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC0zNiw3ICszNyw2IEBA
CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCmluZGV4IDdhNjMzNjM0
N2MwMDdlOTdiNzNiNTQzNzc0OTE2ODM4ZDY0MDM3ZGEuLjFhYTUzY2MyZmI3N2JhZjllMzI2NTA3
MjEwODA5ZmQ3NmNmYmJmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0Nv
Y29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ci5oIgogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKICNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCmluZGV4IGY2ZWQ4MTFmNTM0MmZlNDg1NTUxNzZm
ODlkNTE0NTc1NjJjNjY1ODUuLjBiY2Q1NjczYzkzNDZhZGExMWQ2NTZjM2FkZDUxYmU0ZWRiYzI3
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIK
QEAgLTM5LDEwICs0MCw2IEBAIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbjsK
IE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbDsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19IC8vIG5hbWVzcGFjZSBJUEMKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAg
LTExMiw0ICsxMDksMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCBkZGJlNGVlZGQ0NDFkZjg3YzU1YWQzMzBmMDQyY2NkY2ZhZGZiOTBiLi42NTFm
ZjI1NGY5MDVjMTZhOTBjYjQ4MmM5NzczZDRhYzc0Mjk0ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNb25pdG9yLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuaAppbmRleCAzOGFmMzUwODA3NDY0MjkzYjk1ZmZhZjA1OWZkZWMzNjkwMTc3
Mjc0Li45M2YwM2E4MjU1ZjFhZTcxNzM4M2MwMDI5MGEyNGY5MWNhN2M2NTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgog
I2luY2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgpAQCAtNDQsMTAgKzQ1LDYgQEAgT0JKQ19DTEFT
UyBOU1Byb2dyZXNzOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7CiAjZW5k
aWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2MzQwZjI3YzE2
MDVjM2NkNzRiYzY5MDdiN2Q5MWI0N2I3NjIuLjcyNmRkOTkwYmFmZDQzOTRiNWFmYzAzMmExY2Yy
MGYxODQ5YzQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogCi0jaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuaAppbmRleCAyY2QxNjFiMGFjM2U3ODllMjI0NmMwNWIwMTY1ZjFjNzI2Nzhm
YTUwLi45ODBhMDZmNzgzOWRiZDVlOWY5ZDUwNDU0MDlhMzNkNzdiMWMwMzg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKQEAgLTQ5LDcgKzUwLDYgQEAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDQ0OWIxM2Q4ZTA3YjJjZDA0MmM0YmEzNjM2YWI3OTNkMzdiMWMzZjQuLmM3Nzg4
ODExZjAzMmQ1OGY4YjUyNzczNmUxZDIyNzg0MTBmOTEzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENo
YW5uZWwuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAppbmRleCAzMTk2NDE5MGQxNDFkNTQ5ZGEw
YmFmMmRjOGJmMjk3YjRlNTgxZTg5Li4wNDM0YmY4ODA5YTdlYjNlY2MxOGU4ZjY1MGNjMDI3OGFl
NmViNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CkBAIC00
MCw3ICs0MSw2IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDViNDg5Y2M1MzhmN2MwNzE1MTAxMDZj
NThmNWMwOTRlYzlhOGUxYjguLjQ4Yzg4M2JmYzBmYzdkNTAxYzhhNGE0ZTc2ODRjY2MzM2UzOGMx
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW0uaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUg
IldlYlNvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAppbmRleCA1MmVjMzkyNjkwMjE4ZWRlNjY4ZDU1ZTYz
OGQ4ZTE3NTAyZmQ2ZWU1Li43MzQyOWEwMjc5MDZiNDE2YTM4YzBjNmIzOTQ2YTBkYjlmYjIwNmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1FcnJvci5oPgpA
QCAtMzcsNyArMzgsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xh
c3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggZDMzY2JmZjEwODlj
YzEwNWRkMWEwMGJlYmZkZjYxZDMzYzdmNjZiZC4uZDM3ZDc4MDY5ODNiYmE1NDdjYTBmOTIzNWVi
NGJmNmI3MzE1NjVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KQEAgLTQzLDcgKzQ0LDYgQEAgY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVy
ZW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29j
a2V0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgK
aW5kZXggZGI1Nzk1ZGQyMTdmNDVhZDVmNjdlMzBiNzkxZjkyZTI3NmMwMjk4Ni4uOTYxZTQ2NDU5
YmU3NzE3N2UyNjA1ZTdkODY1MmFkYTgwMjA5N2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKQEAgLTMxLDkgKzMxLDYgQEAKICNpbmNsdWRlICJX
ZWJTb2NrZXRUYXNrU291cC5oIgogI2Vsc2UKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKaW5kZXgg
ZGFjNjkzNTA3ZWIzZWZjZWE2ZDEwOTQ4MDFiYzAxYjM2ZmUyNjM5ZC4uZTY4MjZlNDdlODM5NTk0
MDI4YWY4ZjRhZWQyMzkyYjRiMDVkMmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCkBAIC0yNywxNSArMjcs
MTIgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNrOwogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgTmV0d29ya1Nlc3Npb247CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRU
YXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5tbQppbmRleCA4NTUzNDg3NDQwNGNlMmJhYTQ0YWU2NTY1NDdkMzcyMjUzMzJl
YWI4Li45MGJjNDA5YmZmYjcwYTBlZTllNzM1OGIzODY3NTk3ZDI5ZjI0ZTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tD
b2NvYS5tbQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09D
S0VUKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lv
bkNvY29hLmgiCiAjaW1wb3J0ICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogI2ltcG9ydCA8Rm91
bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCmluZGV4IDQ1ZmM2NjlkNzY2YTc2
MWM1ZDc3M2RjOTVmMDU0MWEzOGUzNmY4ZTMuLmEzZTcwMTRiNWQ4ZWMwOTczOGZmYTdkNTY2NDU0
NTAxMGYwNTM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAKLSNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUFBhcnNlcnMuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRh
c2tTb3VwLmgKaW5kZXggZTQyMWI5ZTFjNzEzMTg0MzRmNjQ4N2Y1ZmNiNWE2YTg3YmQ3MzkxOS4u
MDg4OTIzOTU5ZmU0NjBmZjJiYmE0YzhjMDgzOTk4MDY1N2JmMzQ4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKQEAg
LTI1LDE0ICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtT
b2NrZXRDaGFubmVsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAppbmRleCBlMDBhMGNjZGZhNTg3NWMwMjhjNTA1MjMxMTQxNzI4ZWU5NWI0MzkyLi5lMzhi
YzFjNjBhZjZkY2YwMzY5NjVhYTc4YWFkYmQ2ZDhkNGI2MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIu
aCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTUzLDYgKzU0
LDQ4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVyIHsK
ICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+PiB7CisgICAgdXNpbmcgQXJy
YXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50PjsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBh
cnJheVJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIGlmICghRXh0ZW50KQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVy
ZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KKyAgICBzdGF0aWMg
T3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICB7CisgICAgICAgIGlmICghRXh0ZW50KQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJl
bmNlVHlwZSgpOworICAgICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aFJlZmVyZW5jZShFeHRlbnQgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAg
ICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRh
dGEpLCBFeHRlbnQpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBB
cmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVu
dD4+IHsKKyAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBh
cnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQor
ICAgIHsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5
UmVmZXJlbmNlLnNpemUoKSkpOworICAgICAgICBpZiAoIWFycmF5UmVmZXJlbmNlLnNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgp
KSwgYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9
CisgICAgc3RhdGljIE9wdGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgeworICAgICAgICB1aW50NjRfdCBzaXplOworICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZSgp
OworICAgICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aFJlZmVyZW5jZShzaXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICAgICAgaWYgKCFk
YXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFy
cmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRhKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzaXplKSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8T3B0aW9uU2V0PFQ+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNl
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNkMzJiYjQ1N2E1Yjg4NWYzZDU2Njg3ZTc5ZjE1YzNhMjY3MWJlNjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCkBAIC0w
LDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxsaW1p
dHM+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSVBDIHsKKworaW5saW5l
IGNvbnN0ZXhwciBzaXplX3QgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50ID0gc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVf
dCBFeHRlbnQgPSBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVy
ZW5jZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZTxULCBh
cnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+IHsKK3B1YmxpYzoKKyAgICBBcnJheVJlZmVyZW5j
ZSgpID0gZGVmYXVsdDsKKworICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFQqIGRhdGEsIHNpemVf
dCBzaXplKQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgICAgICAsIG1fc2l6ZShzaXplKQor
ICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAg
IEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikK
KyAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKKyAgICAgICAgLCBtX3NpemUodmVjdG9y
LnNpemUoKSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIW1fc2l6ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsK
KyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxUPiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBtX3NpemUpOwor
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQq
IG1fZGF0YSB7IH07CisgICAgc2l6ZV90IG1fc2l6ZSB7IH07Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlIHsKK3B1YmxpYzoK
KyAgICBBcnJheVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIEFycmF5UmVmZXJlbmNlKGNv
bnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBBcnJheVJlZmVyZW5jZShj
b25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCisgICAgICAgIDogbV9kYXRh
KHZlY3Rvci5kYXRhKCkpCisgICAgeworICAgICAgICBBU1NFUlQodmVjdG9yLnNpemUoKSA9PSBF
eHRlbnQpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhRXh0ZW50OyB9CisKKyAgICBjb25zdGV4cHIgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBFeHRlbnQ7IH0KKworICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIFZlY3RvcjxUPiB2ZWN0b3IoKSBjb25zdAorICAg
IHsKKyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKKyAgICAgICAgaWYgKCFpc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgRXh0ZW50KTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVCogbV9kYXRhIHsgfTsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KK0FycmF5UmVm
ZXJlbmNlKGNvbnN0IFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEFycmF5UmVm
ZXJlbmNlPFQ+OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAppbmRleCBlYzNkMTRhZThmM2VjMjQ3MDU0NzYzY2FlZTkwOWNjMmM4NzVm
NWQ4Li5iYmQ3YWJjYjRjZGM2MDQzODJiMTA2NWUzMzIzODQ0OWM2YWM1OTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0yMjcsMTAgKzIyNywxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKTsK
IAogICAgIHZvaWQgcG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgp
OwotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4gdm9pZCBzZW5kV2l0aEFz
eW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVz
dGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxTZW5kT3B0aW9uPiA9IHsgfSk7IC8vIFRocmVhZC1z
YWZlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0g
eyB9KTsgLy8gVGhyZWFkLXNhZmUuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9u
U2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVh
ZCBvbmx5LgorICAgIC8vIFN5bmMgc2VuZGVycyBzaG91bGQgY2hlY2sgdGhlIFNlbmRTeW5jUmVz
dWx0IGZvciB0cnVlL2ZhbHNlIGluIGNhc2UgdGhleSBuZWVkIHRvIGtub3cgaWYgdGhlIHJlc3Vs
dCB3YXMgcmVhbGx5IHJlY2VpdmVkLgorICAgIC8vIFN5bmMgc2VuZGVycyBzaG91bGQgaG9sZCBv
biB0byB0aGUgU2VuZFN5bmNSZXN1bHQgaW4gY2FzZSB0aGV5IHJlZmVyZW5jZSB0aGUgY29udGVu
dHMgb2YgdGhlIHJlcGx5IHZpYSBEYXRhUmVmZXJlcmVuY2UgLyBBcnJheVJlZmVyZW5jZS4KKyAg
ICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPjsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlv
bj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIAogICAg
IC8vIFRocmVhZC1zYWZlLgpAQCAtMjQ5LDcgKzI1MSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1h
aW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAg
ICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBP
YmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29u
ZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25z
ID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmRT
eW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpAQCAtNTUxLDcgKzU1
Myw3IEBAIHZvaWQgbW92ZVR1cGxlKHN0ZDo6dHVwbGU8QS4uLj4mJiBhLCBzdGQ6OnR1cGxlPEIu
Li4+JiBiKQogICAgIFR1cGxlTW92ZXI8c2l6ZW9mLi4uKEEpLCBzdGQ6OnR1cGxlPEEuLi4+LCBz
dGQ6OnR1cGxlPEIuLi4+Pjo6bW92ZShXVEZNb3ZlKGEpLCBiKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IENvbm5lY3Rpb246OnNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zKQogewogICAgIENPTVBJTEVfQVNTRVJUKFQ6OmlzU3luYywgU3luY01lc3NhZ2VF
eHBlY3RlZCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTcw
LDE1ICs1NzIsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJgogICAgIC8vIE5vdyBzZW5kIHRo
ZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92
ZShlbmNvZGVyKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICBpZiAoIXJlcGx5RGVj
b2RlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
Ly8gRGVjb2RlIHRoZSByZXBseS4KICAgICBPcHRpb25hbDx0eXBlbmFtZSBUOjpSZXBseUFyZ3Vt
ZW50cz4gcmVwbHlBcmd1bWVudHM7CiAgICAgKnJlcGx5RGVjb2RlciA+PiByZXBseUFyZ3VtZW50
czsKICAgICBpZiAoIXJlcGx5QXJndW1lbnRzKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgbW92ZVR1cGxlKFdURk1vdmUoKnJlcGx5QXJndW1lbnRzKSwg
cmVwbHkpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiByZXBseURlY29kZXI7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyMjVmZGE3YmVkMmZlOGM0MDQ5YjU1ODcwNzlmZDFlMTYzNTRmNGZhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RhdGFSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
Ci0KLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgotCi1uYW1lc3Bh
Y2UgSVBDIHsKLQotdm9pZCBEYXRhUmVmZXJlbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKLXsKLSAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KCp0aGlz
KTsKLX0KLQotYm9vbCBEYXRhUmVmZXJlbmNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKLXsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVW
YXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVmZXJlbmNlKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJl
bmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKaW5kZXgg
MzQ1MGMzMWI3M2RkYjZhYTVlZGNlMmFmODAwMjk4ODdjNzk4ZTIwNS4uZGJiM2Q2OTI3ZjM0MWM1
YWE5M2ZjMTA3M2NiMDc1NmUzY2JhMzdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RhdGFSZWZlcmVuY2UuaApAQCAtMjUsNTQgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAKIG5h
bWVzcGFjZSBJUEMgewogCi1jbGFzcyBEZWNvZGVyOwotY2xhc3MgRW5jb2RlcjsKLSAgICAKLWNs
YXNzIERhdGFSZWZlcmVuY2UgewotcHVibGljOgotICAgIERhdGFSZWZlcmVuY2UoKSA9IGRlZmF1
bHQ7Ci0KLSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAgICAgICAsIG1fc2l6ZShzaXplKQotICAgIHsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAgRGF0YVJl
ZmVyZW5jZShjb25zdCBWZWN0b3I8dWludDhfdCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCi0g
ICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCi0gICAgICAgICwgbV9zaXplKHZlY3Rvci5z
aXplKCkpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX3NpemU7IH0KLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IAotICAgIHsgCi0gICAgICAgIGlmIChp
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1f
ZGF0YTsgCi0gICAgfQotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcigpIGNvbnN0Ci0gICAg
ewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgICAgICByZXN1bHQuYXBwZW5k
KG1fZGF0YSwgbV9zaXplKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBEYXRhUmVmZXJlbmNlJik7Ci0KLXByaXZhdGU6Ci0g
ICAgY29uc3QgdWludDhfdCogbV9kYXRhIHsgbnVsbHB0ciB9OwotICAgIHNpemVfdCBtX3NpemUg
eyAwIH07Ci19OwordXNpbmcgRGF0YVJlZmVyZW5jZSA9IEFycmF5UmVmZXJlbmNlPHVpbnQ4X3Qs
IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA3OGE0NjM4ZWI3MzA1YmZkMTkx
MDg3MDY4ZDMwYmNkYjhkZmU4MmFlLi4yY2I3OWI3MzFjOGQzNTFhMmQwNTk0NjM2MmM1YWI4YmJh
ZGJkYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtMTg2LDIw
ICsxODYsMTUgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBEZWNvZGVyOjpkZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJl
bmNlJiBkYXRhUmVmZXJlbmNlKQorY29uc3QgdWludDhfdCogRGVjb2Rlcjo6ZGVjb2RlRml4ZWRM
ZW5ndGhSZWZlcmVuY2Uoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCiB7Ci0gICAgdWlu
dDY0X3Qgc2l6ZTsKLSAgICBpZiAoIWRlY29kZShzaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbigxLCBzaXplKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbihhbGlnbm1lbnQsIHNp
emUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEg
PSBtX2J1ZmZlclBvczsKICAgICBtX2J1ZmZlclBvcyArPSBzaXplOwogCi0gICAgZGF0YVJlZmVy
ZW5jZSA9IERhdGFSZWZlcmVuY2UoZGF0YSwgc2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGRhdGE7CiB9CiAKIGJvb2wgRGVjb2Rlcjo6cmVtb3ZlQXR0YWNobWVudChBdHRhY2ht
ZW50JiBhdHRhY2htZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IGI3
MmRkOGFjZTI3NzNkYjM1NTllMzY2ZGQ5NTI0ZjIzNDFlNTVlMDYuLjM0NGNlNjg4MmZjOTA5ODRi
MmZhNTdiZjljNDhiOTY1MGUwZmY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmgKQEAgLTQwLDcgKzQwLDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CiBjbGFzcyBJbXBvcnRhbmNlQXNzZXJ0aW9uOwogZW51bSBjbGFzcyBNZXNzYWdlRmxh
Z3MgOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5IDogdWludDhfdDsKQEAgLTc4LDggKzc3LDkgQEAgcHVibGljOgogCiAgICAgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKLSAgICAvLyBUaGUgZGF0YSBpbiB0aGUgZGF0YSBy
ZWZlcmVuY2UgaGVyZSB3aWxsIG9ubHkgYmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUg
QXJndW1lbnREZWNvZGVyIG9iamVjdC4KLSAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlJik7CisgICAgLy8gVGhlIGRh
dGEgaW4gdGhlIHJldHVybmVkIHBvaW50ZXIgaGVyZSB3aWxsIG9ubHkgYmUgdmFsaWQgZm9yIHRo
ZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNvZGVyIG9iamVjdC4KKyAgICAvLyBSZXR1cm5z
IG51bGxwdHIgb24gZmFpbHVyZS4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gY29uc3QgdWludDhf
dCogZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0
aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoVCYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCmlu
ZGV4IGZkNDA5MDc3NGIyYmMyYTc2MjliOWMwMmRjNTU0YzRjZGM5OGY1Y2IuLmU4M2EzZTRhZmY0
MmE1NzU1MDVkYzhmMDczMTdhMWMxYWMxOWRlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0VuY29kZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgpAQCAtMTQxLDcgKzE0Miw3IEBAIHZvaWQgRW5jb2Rlcjo6d3JhcEZvclRlc3Rp
bmcoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IG9yaWdpbmFsKQogCiAgICAgb3JpZ2luYWwtPnNl
dFNob3VsZERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5KFNob3VsZERpc3Bh
dGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk6Olllcyk7CiAKLSAgICBlbmNvZGVWYXJpYWJsZUxl
bmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlKG9yaWdpbmFsLT5idWZmZXIoKSwgb3JpZ2luYWwt
PmJ1ZmZlclNpemUoKSkpOworICAgICp0aGlzIDw8IERhdGFSZWZlcmVuY2Uob3JpZ2luYWwtPmJ1
ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKTsKIAogICAgIFZlY3RvcjxBdHRhY2htZW50
PiBhdHRhY2htZW50cyA9IG9yaWdpbmFsLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKICAgICByZXNl
cnZlKGF0dGFjaG1lbnRzLnNpemUoKSk7CkBAIC0yMTYsMTIgKzIxNyw2IEBAIHZvaWQgRW5jb2Rl
cjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
LCBzaXplX3QgYWxpCiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQg
RW5jb2Rlcjo6ZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKLXsKLSAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGRh
dGFSZWZlcmVuY2Uuc2l6ZSgpKSk7Ci0gICAgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGFSZWZl
cmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgMSk7Ci19Ci0KIHZvaWQgRW5jb2Rl
cjo6YWRkQXR0YWNobWVudChBdHRhY2htZW50JiYgYXR0YWNobWVudCkKIHsKICAgICBtX2F0dGFj
aG1lbnRzLmFwcGVuZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0VuY29kZXIuaAppbmRleCAwZWNmNTQxZjc3ODU4NTM2ZjFmY2ZhODM2Yjc2ZjI0ODJlNGM5YTEx
Li5lYTYxOTY3YmUxZWJjYmQ4YjZmYmJhYThiODVhZjQxOGU4ZDUwY2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC0zNiw3ICszNiw2IEBACiAKIG5hbWVzcGFjZSBJUEMg
ewogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwogZW51bSBjbGFzcyBNZXNzYWdlRmxhZ3MgOiB1aW50
OF90OwogZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBTaG91
bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdDsKQEAgLTYyLDcgKzYx
LDYgQEAgcHVibGljOgogICAgIHZvaWQgd3JhcEZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPEVu
Y29kZXI+KTsKIAogICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7Ci0gICAgdm9pZCBlbmNvZGVWYXJpYWJs
ZUxlbmd0aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZSAmJiAhc3Rk
Ojppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVf
cmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgdm9pZCBlbmNvZGUoVCYm
IHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXggN2Zk
MTgzYTU2YWU5OGIwNjY0NWZmNzUxNDhhYzI5ODNjNTJlNGFlYi4uNDEyOWQ0ZTJiNDlkNWM4ZmM0
MWEyZDY1NGFkY2Q4OWU4NmM2MzdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKQEAgLTk2LDcgKzk3LDYgQEAgc3RydWN0IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYgc3Rk
OjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07CiAK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwog
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29kaW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlJj4gewogICAgIHVzaW5nIFR5cGUgPSBEYXRhUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IDQ2ZTIxZDhkOTM2ZjJkOGI1MTY3YjI0
OWY4ODExMTZmZmViN2Q0YjkuLjc3NDYxZDU1NWI3MjkyYzIwZWJmNTE0YTMwMmQxZGM2ZTc3NzAx
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTU0
LDkgKzU0LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kPFU+KG1lc3Nh
Z2UsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2VuZE9wdGlvbnMpOwogICAgIH0KKyAgICB1
c2luZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0
eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAg
ICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0
PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBz
dGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgbm90IHN5bmMhIik7CiAKQEAgLTY0
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0g
ICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisg
ICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29u
ZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25z
ID0geyB9KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkp
OwogCkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVLCB0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFU6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5j
T3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5
bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZp
ZXI8VD4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHko
KSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAg
ewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VT4oc3RkOjpmb3J3YXJkPFU+KG1lc3NhZ2UpLCBX
VEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3lu
Y09wdGlvbnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKaW5kZXggN2EzY2IzMzg3NjM2ZGNhZmNlYWNlYWQ5MWI4NjM5YjdiYTc2
MzZjNi4uNTAwZjgzOWRmYWFlOTI5N2Y0ZGM2M2RjNjYzMDU4NzdiMjJkZjJmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpAQCAtNDgs
NyArNDksNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogT3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGEpKQorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5jcHAKaW5kZXggMmY3Mjg1YWMwYjRiZDZkZTExZGZlYjlmZTMyOGYwMWM5OTk5
NTBhMC4uZTk2ZGZiMWZiZjg5MWNkNGEwYzc3NGU4NWM5MDc4NzU4YTZmZTgyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcAppbmRleCA4NTJlZjQzZTAw
ODYzMWM5ZmFmYTgyMzBjOTE5YzE3YTlkNGEyOWI2Li4yMTYxMTM5YzMwMTRmMGVhZmIzZGM0N2M4
NWRhNDE5MGEyYmEwNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJpbmdSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmlu
Z1JlZmVyZW5jZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNs
dWRlICJFbmNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDhiMzc0MGY0YjEwMWFkOTBmNTBlZDU3Yzg1
MGI5MDMwZmNjNDMwYzIuLjRiMjBjODVhYzUzNjIzNjQwM2E4M2VhOTczY2RjY2QxMGZkZjcyZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOUE9iamVj
dFByb3h5LmgiCiAjaW5jbHVkZSAiTlBSZW1vdGVPYmplY3RNYXAuaCIKICNpbmNsdWRlICJOUFJ1
bnRpbWVVdGlsaXRpZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCBhZDRmY2Q5ZDhjY2Y0MmYxMmVlNDg4ZTAxMzQ2
YzYxOWE3MDFiOGQyLi5jN2E3MDUzY2JkMjZkMjA0NTRjMDQyYzZhY2UxNmNiNTI1MzBmNDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKQEAgLTM3LDEwICszOCw2IEBACiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotbmFtZXNwYWNlIElQ
QyB7Ci0gICAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIExheWVySG9zdGluZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCA1NzNlZDNkOGVlOWJiZjQxMDMxNjhlNzlhMDU3ZjlkYmRiOWI4Njk1
Li42NzMyNDRhNjdlMDk5ZmZiNzE4MDdkNTU1MGM0NTRmMzYzMWRiMTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIwMyw2ICsyMDMsNyBAQCBkZWYgZm9y
d2FyZF9kZWNsYXJhdGlvbnNfZm9yX25hbWVzcGFjZShuYW1lc3BhY2UsIGtpbmRfYW5kX3R5cGVz
KToKIAogZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICBy
ZXR1cm4gZnJvemVuc2V0KFsKKyAgICAgICAgJ0lQQzo6RGF0YVJlZmVyZW5jZScsCiAgICAgICAg
ICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcn
LApAQCAtMjE0LDYgKzIxNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcycsCiAgICAgICAgICdXZWJDb3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIn
LAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKQEAgLTI0Myw2ICsy
NDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
ICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAgICAnV2ViS2l0OjpHZW9sb2NhdGlvbklkZW50aWZp
ZXInLAorICAgICAgICAnV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUnLAogICAgICAgICAnV2ViS2l0
OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpMZWdhY3lDdXN0b21Q
cm90b2NvbElEJywKQEAgLTUzMCw2ICs1MzMsNyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVhZGVy
cyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAgICAnT3B0aW9uU2V0JzogeydoZWFkZXJzJzogWyc8
d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50
Q29kZXJzLmgiJ119LAogICAgICAgICAnVmVjdG9yJzogeydoZWFkZXJzJzogWyc8d3RmL1ZlY3Rv
ci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119
LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3Vt
ZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKKyAgICAgICAgJ0lQ
Qzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRlcnMnOiBbJyJBcnJheVJlZmVyZW5jZS5oIiddLCAn
YXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgIH0K
IAogICAgIG1hdGNoID0gcmUubWF0Y2goJyg/UDx0ZW1wbGF0ZV9uYW1lPi4rPyk8KD9QPHBhcmFt
ZXRlcl9zdHJpbmc+LispPicsIHRlbXBsYXRlX3N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElEYXRhLmNwcAppbmRleCA2MTM0M2JkOTQxMDZiNmU3ODlmODNiYzI1ZGU3OWY3YTYwNDA5M2Nj
Li5jNzgyMzE2ZjMwNTdhM2NhZjlkM2UyMDc3YzgxMzI1NTNlNjk3NTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggN2JhMjA3YWJiMGFjY2M4YTU3MGY1YzY2
M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdkMDNmYWZlMDM5NTg3OTUyYTYzNzhkMWE5YzhmZjJmNzkx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtODQsNyArODQs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzRGFlbW9u
KCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsKICAgICB2b2lkIHNldFFPUyhp
bnQgbGF0ZW5jeVFPUywgaW50IHRocm91Z2hwdXRRT1MpOwogI2VuZGlmCkBAIC0xODQsNCArMTgz
LDMgQEAgc3RydWN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBiYjQw
NmMyY2ZiZGUxMTNlOWIuLmRhMzczNGM4NGQ2NTRkOGQwM2NhNzkyNWY3YmQ3NTk5MTNiYzM0YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApA
QCAtMzIyMSw0ICszMjIxLDgyIEBAIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6CiAgICAgcmV0dXJu
IHsgV1RGTW92ZSgqcmVzdWx0KSB9OwogfQogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKK3sKKyAgICBlbmNvZGVyIDw8
IGF0dHJpYnV0ZXMuYWxwaGE7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRlcHRoOworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5zdGVuY2lsOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRl
cy5hbnRpYWxpYXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBo
YTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyOworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2U7CisgICAgZW5jb2RlciA8PCBh
dHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5pc1dl
YkdMMjsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zOworICAgIGVuY29k
ZXIgPDwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvOworICAgIGVuY29kZXIgPDwgYXR0cmli
dXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNlOworI2lmIEVOQUJMRShXRUJYUikKKyAgICBlbmNv
ZGVyIDw8IGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlOworI2VuZGlmCit9CisKK09wdGlvbmFsPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYWxwaGEpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5kZXB0aCkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLnN0ZW5jaWwpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbnRpYWxpYXMpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVk
QWxwaGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5mYWlsSWZN
YWpvclBlcmZvcm1hbmNlQ2F2ZWF0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0
ZXMuc2hhcmVSZXNvdXJjZXMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5pc1dlYkdMMikpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLm5vRXh0ZW5z
aW9ucykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5pbml0aWFsUG93ZXJQ
cmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VC
WFIpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZSkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKyAgICByZXR1cm4gYXR0cmlidXRl
czsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiBhY3RpdmVJbmZvKQoreworICAgIGVuY29kZXIgPDwg
YWN0aXZlSW5mby5uYW1lOworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby50eXBlOworICAgIGVu
Y29kZXIgPDwgYWN0aXZlSW5mby5zaXplOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFjdGl2ZUluZm87CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLm5hbWUpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby50eXBlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUlu
Zm8uc2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGFjdGl2
ZUluZm87Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNGE5MzIxNTkxMzBjYjdiY2Rl
NTVlMjExZTE3YzRiZWRlZjE3MDVkNi4uMWRhZTk2OTVmMzNjMDlkY2Q3YzU4MDM2MDhlMmQ2YWMx
NmU5ZmM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKQEAgLTcxLDYgKzcxLDEzIEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNHdGsuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisjaW5jbHVk
ZSAiQXJyYXlSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdM
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzVHlwZXNHTC5oPgorI2VuZGlmCisKICNpZiBQTEFURk9S
TShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTIwMyw2
ICsyMTAsMTAgQEAgc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YTsKIHVzaW5nIElEQktl
eVBhdGggPSBWYXJpYW50PFN0cmluZywgVmVjdG9yPFN0cmluZz4+OwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKK3N0cnVjdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM7CisjZW5kaWYKKwogbmFtZXNwYWNlIERPTUNhY2hlRW5naW5lIHsKIHN0
cnVjdCBDYWNoZUluZm87CiBzdHJ1Y3QgUmVjb3JkOwpAQCAtODczLDYgKzg4NCwxOSBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24+IHsKIH07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7Cisg
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4g
ZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMDQxLDQgKzEwNjUsMTYgQEAgdGVtcGxh
dGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM+
IHsKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xQb3dlclByZWZlcmVuY2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwKKyAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSwKKyAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCwKKyAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXIsCisgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZQorICAg
ID47Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBjZjEzMWE5MjFl
MDg2MzY1ZGJmNzdmYTk4ZTQxYzFjNzRhM2U3ZTI1Li5hZGQ5NDliYTUwOGQ4ZTgxNDA4N2ZlZGU3
YjA0OGEzZGVjNmNmODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTU4LDYgKzE1OCw5IEBAIHZvaWQgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzczsKICAgICBlbmNvZGVy
IDw8IHNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzczsKICAgICBlbmNvZGVyIDw8IHNob3VsZFBs
YXlNZWRpYUluR1BVUHJvY2VzczsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgZW5jb2RlciA8PCBz
aG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzczsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwgc2hv
dWxkRW5hYmxlVlA5RGVjb2RlcjsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOVNXRGVj
b2RlcjsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBAIC01MTAsNiArNTEzLDEwIEBA
IE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZVZQOURlY29kZXIpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmlu
ZGV4IGQ5MWU0NjAzOGYzMDliNTEzMGJmZGU1OGRmZjRhOWYxODE5NTFkZmQuLmMyMDYxMjMxMTQz
NWJmNGY5MmNmMDZmZTVlMTEyMDVhNGI1MTEyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIyOSw2ICsyMjksOSBAQCBzdHJ1
Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBzaG91bGRSZW5kZXJDYW52
YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUmVuZGVyRE9NSW5HUFVQ
cm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7
IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgc2hvdWxkUmVuZGVyV2ViR0xJ
bkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlE
ZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciB7IGZh
bHNlIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCA5YmQ4YTgxNzU0OWY1OGZlMzgzZDcy
NWRhNjYzZjNiYzU0Y2EwZDc0Li43N2U5YjRkNWNjNzUyZmJjZGI2YjY1ZjlhZGMyNjAxOTU2Y2Ex
NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NG
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENv
ZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRD
b2RlcnNTb3VwLmNwcAppbmRleCAxZDg0ZTJmZTI2OGYzNDYwZWIyOTc1YzQyYmE5NWQxNGYxZDIz
NWNmLi5mYTI2OGQ1ODRhMGZjOGRmODdhMjFmYTQ1NjA3N2I4YzVkNDJiODU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5m
bz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUkKICAgICAvLyBF
bmNvZGUgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCBjZXJ0aWZpY2F0ZS4KICAgICBmb3IgKHNpemVf
dCBpID0gY2VydGlmaWNhdGVzRGF0YUxpc3Quc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAgICAg
IEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlID0gY2VydGlmaWNhdGVzRGF0YUxpc3RbaSAtIDFdLmdl
dCgpOwotICAgICAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KElQQzo6
RGF0YVJlZmVyZW5jZShjZXJ0aWZpY2F0ZS0+ZGF0YSwgY2VydGlmaWNhdGUtPmxlbikpOworICAg
ICAgICBlbmNvZGVyIDw8IElQQzo6RGF0YVJlZmVyZW5jZShjZXJ0aWZpY2F0ZS0+ZGF0YSwgY2Vy
dGlmaWNhdGUtPmxlbik7CiAgICAgfQogCiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oY2VydGlmaWNhdGVJbmZvLnRsc0Vycm9ycygpKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIENlcnRpZmljYXRlSW5mbyYgYwogICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBjZXJ0
aWZpY2F0ZTsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY2hhaW5MZW5ndGg7IGkrKykg
ewogICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlOwot
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY2VydGlm
aWNhdGVEYXRhUmVmZXJlbmNlKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjZXJ0aWZp
Y2F0ZURhdGFSZWZlcmVuY2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAg
IEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0YSA9IGdfYnl0ZV9hcnJheV9zaXplZF9uZXcoY2Vy
dGlmaWNhdGVEYXRhUmVmZXJlbmNlLnNpemUoKSk7CkBAIC0yNzcsNCArMjc3LDMgQEAgT3B0aW9u
YWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3UKICNlbmRpZgogCiB9Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDA5MTdmMDFi
ZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1YTNmMmVmODYuLjUwY2RlMTJhZmEzYWE3Zjc4YzI3OWVj
OGZiODE5NzQ0YjZmYjFlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjYsNiArMjYsNyBAQCBHUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKQEAgLTEzNyw3ICsxMzgsNiBAQCBQbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNw
cCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcCBAbm8tdW5pZnkKIFBsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKLVBsYXRmb3JtL0lQQy9EYXRhUmVmZXJl
bmNlLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBAbm8tdW5pZnkKIFBs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9KU0lQQ0JpbmRp
bmcuY3BwIEBuby11bmlmeQpAQCAtNjkzLDMgKzY5Myw1IEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorCitS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAppbmRleCA5OTUxODA3MzI4MGU5Yzk1YTJiMjVmMDBiYzhiZmIzODg3NjIxMjQxLi4xM2Zh
NzE1ZTc5NmZjODU5MjMxNGIzZmU3ZjBkNGVhOWFlZDg5ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CkBAIC02Myw2ICs2Myw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eUNvY29hLm1tCiBHUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tCiAKKwogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKIFBsYXRmb3JtL2NsYXNzaWZpZXIv
Y29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKQEAgLTU3Myw2
ICs1NzQsOCBAQCBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQogV2ViUHJvY2Vz
cy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50
Lm1tCiAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZC5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KQEAgLTY4NSw2ICs2ODgs
NyBAQCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VSZWNlaXZl
ci5jcHAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKaW5k
ZXggMmZlMzg2MjU5NDYzYmZiMzYyM2ViYmRiNGZlZjVmODM5MzZiMGQzZC4uNzM3YjYyNTgxOTg2
NmEwZWNiNTk5YTIxMzBiMzI5MTNlYWYzOTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKQEAgLTMwLDEwICszMCw2IEBACiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggNGYzOThiNTMwZjYwODU3
NWM5NjdiODNjNzRmYTJmNDMyOGY2Y2UzYi4uOGNhOTdlNmU1OTdiZDcxMTBhMGQ3MzhlMGM0YTdj
ODU2MDNhOGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmgKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUHJvY2Vz
c1Rocm90dGxlciYgdGhyb3R0bGVyKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8
SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBD
OjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKKyAgICB1c2luZyBTZW5k
U3luY1Jlc3VsdCA9IElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9
IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsg
fSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
IDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
PiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9LCBTaG91bGRTdGFydFByb2Nl
c3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
OjpZZXMpOwpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8
VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgcmV0
dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpAQCAt
MTYzLDEyICsxNjQsMTIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1l
c3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDwKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVT4gCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucykKK0F1eGlsaWFyeVByb2Nlc3NQcm94eTo6U2VuZFN5bmNSZXN1bHQgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiBy
ZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8
SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIENPTVBJTEVfQVNT
RVJUKFU6OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKICAgICBpZiAoIW1fY29ubmVj
dGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
VHJhY2VTY29wZSBzY29wZShTeW5jTWVzc2FnZVN0YXJ0LCBTeW5jTWVzc2FnZUVuZCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9T
dWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaApp
bmRleCA4MjNjMjAyYTg1NmEwMTM2ZGQ5ZWE3NTlmMGVjZGViYTQ3ZjRmMzYyLi5iNTc3Y2JkZjhl
MDc4ZjRmYjRmODczNGQ3YmZkNjA4ZDIwMzg4MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCkBAIC0zMiwxMCArMzIsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbiBmaW5h
bCA6IHB1YmxpYyBOYXZpZ2F0aW9uU09BdXRob3JpemF0aW9uU2Vzc2lvbiwgcHVibGljIEZyYW1l
TG9hZFN0YXRlOjpPYnNlcnZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRleCBmZjk4Yjg0ZmE4OWRiZWZkZDY0
NjY2YmJiYTQyZmM5MGNlYzM1NzdmLi4xMjhhMzk3N2U2M2VlNGY0ZWYxZjIwZWFhZWM4NmQwOGVj
YmY1OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9j
b2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CkBAIC0zNSwxMCArMzYsNiBAQAogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sTG9h
ZGVyOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0K
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNGM3MTg3
NGExMGRhOWI1NDFmZWUyODIwODA4YzFlNTBkM2ZhOTJiLi45ZGIzYTUwOWI5MTRjMDkzY2FmMTY5
YTA1ZDY1YjU3ZWQwYzgwMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQREZQbHVnaW5J
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKQEAg
LTgwLDEwICs4MSw2IEBAIGNsYXNzIE9wZW5QYW5lbFBhcmFtZXRlcnM7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCAyNGI2MzNlNDg0ZDJhMzVi
YTc0ZDQ1ZjEyZWRlMzRhMGY3OGNhMGE2Li4yNDhlNTNhMDgzZDE5YTBlZjRkODNjMjNiOGNjZTAw
MzQ1ZGFhYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0Lmgi
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCAxMjlhMzQwZjA4OTY0ZDBmZmEyM2EzNzEwMWEw
OWE4NTZkM2NjY2IyLi5hNGQ4ZDdjZDgwNGU2NTYwZGFiZmRlNjExNGZmMDYyMTFiYWQ0N2MwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbnRlbnRXb3JsZFNoYXJlZC5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtNDgsMTAgKzQ5LDYgQEAgY2xhc3MgVXNl
clNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTZWN1
cml0eU9yaWdpbkRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA2ZWQxYzY5YzA4ZmM1NTlmZTJhM2YzYjkzOTUwZWE4MjhkNjBkNGJmLi5jZWM3M2Qx
M2QwOThkNzEzMTg0OGFmYjU5M2VmMDcyNDEwMjE4ZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU4LDcgKzU4LDYgQEAKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgotI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTc5Mjcs
NiArNzkyNiwxMCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3Jl
YXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hv
dWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNz
Rm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVy
RE9NSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVy
aW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNz
ID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCk7CisjaWYgRU5B
QkxFKFdFQkdMKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3Mg
PSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JXZWJHTEVuYWJsZWQoKTsKKyNlbmRpZgor
CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52
cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52
cDlEZWNvZGVyRW5hYmxlZCgpICYmICghV2ViQ29yZTo6c3lzdGVtSGFzQmF0dGVyeSgpIHx8IHBy
ZWZlcmVuY2VzKCkudnA5U1dEZWNvZGVyRW5hYmxlZE9uQmF0dGVyeSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjQyNDQ2ZjllOWFhNGI1MjExMTQ5MDNiNmYw
YjVmNzExZjkxYjJlNS4uNDM3YWI3NTBiMzVhYjE2M2IyYTU4MGFlODY3MmVkNDYwMTY0NzQwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVk
ZXNDaGlsZEZyYW1lcy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1
ZGUgIkRyYWdDb250cm9sbGVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBA
IC0yMDMsNyArMjA0LDYgQEAgZW51bSBjbGFzcyBJbnNwZWN0b3JUYXJnZXRUeXBlIDogdWludDhf
dDsKIH0KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVj
b2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCBm
NDI0NWNlNjVlOWQyZDU2NWIzZjEyNWYzNDU3YTI1NmZiMzljOWQ0Li5kMjM4YzJhMWE2MDhkYzVh
NDYzMmU2YTE5OTc3ZGI2MWJhYjYxMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5oCkBAIC0zMSwxMCArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAppbmRleCBkNDQyYjYyYjUyMjU4N2Y5MGZhNjg5ZDU2YjIwNjI3NmRlYjQ0ODJiLi44MjVj
ZDAyNjg4YTI2ODIxOTQxZmY3YTQxOGY0ZGY1YTk3NWJhMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zOCwxMCArMzgsNiBAQCBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM1MjhmNDcxZjQ2M2RmNmMxMTMwYTNmYjgzNzc2
YmYxYjJhYmVmOTQuLjBiNzY5ZjAzNTRlYjRmMDMyZDIyMDllYzc5YjhmZTIxOWVmZDg4OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Njk4LDcgKzY5OCw2IEBACiAJCTJEOTJBNzdCMjEyQjZBNzEwMEY0OTNGRCAvKiBBcmd1bWVudENv
ZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2RlcnMuY3BwICovOyB9OwogCQky
RDkyQTc3QzIxMkI2QTcxMDBGNDkzRkQgLyogQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQg
LyogQXR0YWNobWVudC5jcHAgKi87IH07CiAJCTJEOTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDMyREEyMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAqLzsgfTsKLQkJ
MkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDNzUzN0QxODNCRTUwRjAwNzJD
QjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovOyB9OwogCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkz
RkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi87IH07CiAJ
CTJEOTJBNzgwMjEyQjZBNzEwMEY0OTNGRCAvKiBFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlGMTBGNDM3RDEwMDU4QzE1QSAv
KiBFbmNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODEyMTJCNkE3MTAwRjQ5M0ZEIC8qIE1lc3Nh
Z2VSZWNlaXZlck1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTNFRUQwQzE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNw
cCAqLzsgfTsKQEAgLTEzMDMsNiArMTMwMiw3IEBACiAJCTdBRkJEMzYzMjFFNTBGMzkwMDVEQkFD
QiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzYyMjFFNTBGMzkwMDVEQkFDQiAvKiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQzNjcyMUU1MUJB
QjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjUyMUU1MUJBQjAw
NURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovOyB9OwogCQk3
QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNkQyMUU1NDZFMzAwNURC
QUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLzsgfTsKKwkJN0IxREIyNjYyNTY2OENFMTAwMEUy
NkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2Uu
aCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQ
bHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFC
QTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8q
IEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTI3MTksNyArMjcxOSw2IEBACiAJCTFBQzVGRkMx
MTc0QkZEMUIwMDAxNDgzRCAvKiBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxv
YWRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlTG9h
ZFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzUzN0ExODNBOUZE
QjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFnZUxvYWRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUM3
NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YVJlZmVyZW5jZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NUExQTFCMzM2ODI3MDA1Njc0NUIgLyogSGFu
Z0RldGVjdGlvbkRpc2FibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhh
bmdEZXRlY3Rpb25EaXNhYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3
NUExQzFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM2OSw2ICs0MzY4LDE2IEBA
CiAJCTdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHBhdGggPSBDbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZC
RDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJE
MzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjUyNTRBRkRFQTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qjkw
NDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY1MywxMSArNjY2MiwxMSBA
QAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJ
CQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJ
CQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3
QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VF
OTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIx
MTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0Qx
MDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThD
MTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyog
RGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERh
dGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rl
ci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywK
QEAgLTgzMjcsMTEgKzgzMzYsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyog
Y29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyog
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAw
NEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQw
Nzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICov
LAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZv
cm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdE
MDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5
MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
ICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3
MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODM0OSw2ICs4MzYzLDEw
IEBACiAJCQkJRjQwOTRDQkMyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCQjI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuaCAqLywKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZv
cm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAorCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRB
RkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAor
CQkJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oICovLAogCQkJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEEyMjQwNzFBNjEwMEFBRTA0NSAvKiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLywKIAkJCQk1NTA2NDBBMzI0MDcxQTYxMDBBQUUw
NDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICovLApAQCAtMTExNjUsNiArMTExODMsNyBA
QAogCQkJCTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJz
Q0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1
bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAw
RTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgz
REQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2
MzRGMjM0RjdDNjQwMEZGQTg2NCAvKiBBc3luY1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTMyMzMsNyArMTMyNTIsNiBAQAogCQkJCTJEOTJBNzg1MjEyQjZBQjEwMEY0OTNG
RCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDky
QTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0OURBQTM4QzI0Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dz
ZXJDaGVja3MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcg
LyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmgKaW5kZXggZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2OThhMjEyOTBkMzYxZDRhNi4uYzlk
YzY4MmI4NzU0OWI4MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2VjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
aApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0
b3I7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyYzBkZjViOWY1NDk2ODQ3ZWQ2
NjkxMGJmMmYzOWIyY2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5
OTg4NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC0zNSwxMCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBD
IHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2Qw
MzUyMTJjNjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlm
aWVyPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMp
KTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAg
IDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7
CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNz
YWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0wo
YXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sK
KyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KCp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAw
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVC
dWZmZXIoKTsKKyNlbmRpZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7Cisg
ICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lk
dGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFy
ZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJl
Rm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAg
YXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVy
KCk7CisgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRy
IH0pOworICAgIH0KKyNlbHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBG
SVhNRTogQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRo
aXMgaXMgdGhlIHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTM0OQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAg
ICBpZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVk
IG91dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNp
b25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAg
IGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNs
aWVudC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Ondhc0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRv
VmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdl
ZE5vdGlmaWNhdGlvbigpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAg
ICAgICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJy
dXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8v
IFRpbWVkIG91dCwgc28gcmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hv
dWxkIGxvc2UgdGhlIGNvbnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUg
dG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTQ4Mjc0NmEzMmM0OTgzNDQ0ZjhiZDFkZmNlZDY5NzE3MzA0OWI1NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNDEwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1l
bnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlv
bgorLy8gY29udmVydHMgdGhlIGludGVyZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdl
cyBhbmQgc2VuZHMgdGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBp
biBHUFUgcHJvY2Vzcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRl
ZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVi
bGljIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSgpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRl
cy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ug
b3ZlcnJpZGVzLgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFs
OworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3Jl
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQg
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7Cisg
ICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVs
YXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsK
KworICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlz
IGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNl
dEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVy
cm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0
dXJlKSBmaW5hbDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmlu
ZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmlu
YWw7CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dM
Y2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOwor
ICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJs
ZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEp
IGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRm
YWN0b3IpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdC
LCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkg
ZmluYWw7CisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJn
ZXQpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAg
IHZvaWQgY2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNs
YW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgo
R0NHTGNsYW1wZiBkZXB0aCkgZmluYWw7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBz
KSBmaW5hbDsKKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFu
IGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAg
dm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9p
ZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1
ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBm
aW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVu
dW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQg
ZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShH
Q0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNo
U2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5h
bDsKKyAgICB2b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3
QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmlu
YWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFi
bGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZv
aWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0
ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7Cisg
ICAgdm9pZCBmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0
ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmli
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFy
ZzIpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5n
JiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dM
ZW51bSBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2
NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJ
bnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NH
TGludCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1l
KSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7
CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAg
IFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlcklu
Zm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBl
LCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsK
KyAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0
PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7
CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50
IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYg
bmFtZSkgZmluYWw7CisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVk
KEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxv
YXQgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQg
cGFyYW0pIGZpbmFsOworICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBH
Q0dMZmxvYXQgdW5pdHMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1w
ZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xp
bnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJh
dGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1h
c2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7Cisg
ICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2sp
IGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWls
LCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dM
ZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3Mp
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NH
TGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHks
IEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBm
aW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVp
IHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFy
ZzEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZp
bmFsOworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2
b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7Cisg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRl
eEFycmF5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
cmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwg
R0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdl
dEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJh
bWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIp
IGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGlu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVt
IHNyYykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhT
dG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAg
ICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9p
ZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1
YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1
aW50IHYxKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
THVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVp
bnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWlu
dCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVp
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dM
dWludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2
b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dM
dWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNs
ZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmko
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NH
TGludCBzdGVuY2lsKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5h
bDsKKyAgICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFs
OworICAgIHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
cXVlcnkpIGZpbmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9i
amVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlU2FtcGxlcigpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQg
dW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAg
ICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVy
aShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBH
Q0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3Mp
IGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xp
ZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0
IHRpbWVvdXQpIGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJp
dGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRT
eW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRl
VHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJv
b2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51
bSBwcmltaXRpdmVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkg
ZmluYWw7CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZm
ZXJNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBm
aW5hbDsKKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lk
IHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFz
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZl
cikgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWlwdHIpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGlj
ZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9y
bU5hbWVzKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5k
aWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9j
a0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxv
Y2tOYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykg
ZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykgZmluYWw7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMo
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZl
bnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBN
YXJrZXJFWFQoKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXpl
aSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsK
KyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0
TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmlu
YWw7CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RB
TkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2
b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZp
bmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsK
KyAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0Lgor
Citwcm90ZWN0ZWQ6CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3Zl
cnJpZGVzLgorICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQo
U3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9u
cyk7CisgICAgdm9pZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYpOworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAg
ICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8v
IFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdD
R0x1Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hv
cnQsIGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwg
dWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJf
dD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsK
K3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lX3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8UGxhdGZvcm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0xpbnRwdHIpID09IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
THNpemVpcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0x2b2lkcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0xjaGFyKSA9PSBzaXplb2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGlu
dDY0KSA9PSBzaXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2
NCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMc3luYykg
PT0gc2l6ZW9mKHVpbnQ2NF90KSAmJiBzaXplb2YoR0NHTHN5bmMpID09IHNpemVvZihpbnRwdHJf
dCkpOworLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMmIzMmIy
YmMxMDEwZWY4ZWNkMGFmNTc3N2FiZDRmYTA4YTNjOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VC
R0wpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgTm90UmVmQ291
bnRlZCB7CisgICAgdm9pZCBXYXNDcmVhdGVkKFN0cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBT
dHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQorICAgIHZvaWQgV2FzTG9zdCgpCisgICAgdm9p
ZCBXYXNDaGFuZ2VkKCk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzE0YTQ0MzE1NjIxMWNjNzE4NTEzNzMzOGNhY2M3Y2U1MDM1Nzk1YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKQEAgLTAsMCArMSwxNjQ3
IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVw
LXdlYmdsLiBEbyBub3QgZWRpdC4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2V0RmFpbE5leHRHUFVTdGF0
dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJy
b3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5bnRo
ZXNpemVHTEVycm9yKGVycm9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Citib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUoR0NHTGVudW0g
dGV4dHVyZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmF0dGFjaFNoYWRlcihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBdHRhY2hTaGFkZXIocHJvZ3Jh
bSwgc2hhZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2NhdGlv
bihhcmcwLCBpbmRleCwgbmFtZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0
IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJp
bmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0YXJn
ZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
bGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJs
dWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uKG1vZGUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVSR0IsIEdDR0xlbnVt
IG1vZGVBbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNmYWN0
b3IsIGRmYWN0b3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0g
c3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RB
bHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Qmxl
bmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpCit7
CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1
czo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhcihtYXNrKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYg
Ymx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyRGVwdGgoZGVwdGgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXJTdGVuY2lsKEdDR0xpbnQgcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJTdGVuY2lsKHMpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29sZWFu
IGJsdWUsIEdDR0xib29sZWFuIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb2xvck1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4ocmVkKSwgc3RhdGlj
X2Nhc3Q8Ym9vbD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxib29sPihibHVlKSwgc3RhdGljX2Nhc3Q8
Ym9vbD4oYWxwaGEpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxh
dGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIo
KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlRnJhbWVidWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
RnJhbWVidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVG
cmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2Jq
ZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0oKQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVSZW5kZXJidWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVy
YnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVy
YnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzAp
Cit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXIoYXJnMCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVU
ZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVy
ZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkN1bGxGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlQnVmZmVyKGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVGcmFtZWJ1ZmZl
cihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxl
dGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRl
U2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZXB0aEZ1bmMoR0NHTGVudW0gZnVuYykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoTWFzayhzdGF0aWNfY2FzdDxib29sPihmbGFnKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZh
cikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhS
YW5nZSh6TmVhciwgekZhciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFkZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRpc2FibGUoR0NHTGVudW0gY2FwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShp
bmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKEdDR0xlbnVt
IGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5h
YmxlKGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWlu
dCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmluaXNoKCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmluaXNoKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpmbHVzaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJl
bmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0
YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFj
aG1lbnQsIEdDR0xlbnVtIHRleHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczLCBHQ0dMaW50
IGxldmVsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpG
cmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywg
bGV2ZWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyb250RmFjZShtb2RlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdlbmVyYXRlTWlwbWFwKEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2VuZXJhdGVNaXBtYXAodGFy
Z2V0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitib29sIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUsIGFy
ZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0
aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybShw
cm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0
aXZlVW5pZm9ybTo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBh
cmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
dHJpbmcobmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5n
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+
IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAg
ICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICog
c2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVl
KQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2Vydjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAg
ICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICog
c2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludDY0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQ2NF90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0KHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRJbnRlZ2VyNjQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50
NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludDY0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KQorewor
ICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dy
YW1pKHByb2dyYW0sIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRQcm9ncmFtaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMYm9vbGVhbj4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPiB2
YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52OjpSZXBseSh2YWx1
ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChz
ZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCks
IHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoYm9vbCkpOworICAgIAorfQorCitHQ0dMZW51bSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCit7CisgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpKGFyZzAsIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBT
dHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlw
ZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikKK3sKKyAg
ICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlUmVwbHk7CisgICAgaW50MzJf
dCBwcmVjaXNpb25SZXBseSA9IHsgfTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1h
dChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJhbmdlUmVwbHksIHByZWNp
c2lvblJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlm
IChzZW5kUmVzdWx0KSB7CisgICAgICAgIG1lbWNweShyYW5nZS5kYXRhLCByYW5nZVJlcGx5LmRh
dGEoKSwgcmFuZ2UuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgIGlmIChwcmVj
aXNpb24pCisgICAgICAgICAgICAqcHJlY2lzaW9uID0gcHJlY2lzaW9uUmVwbHk7CisgICAgfQor
fQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyU291cmNl
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFk
ZXJTb3VyY2UoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hh
ZGVyU291cmNlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xmbG9hdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0
ZXJmKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFRleFBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBh
cmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VGV4UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
Cit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2OjpSZXBseSh2YWx1ZVJlcGx5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVz
dWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVl
LmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXYo
cHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAg
bWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6
ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHko
dmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YodWlu
dDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcw
LCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9j
YXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHNpemVpcHRyIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0
ZXhBdHRyaWJPZmZzZXQoaW5kZXgsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMc2l6ZWlwdHI+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SGludCh0YXJnZXQsIG1vZGUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc0VuYWJsZWQoR0NHTGVudW0gY2FwKQoreworICAgIGJvb2wgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc0VuYWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c0VuYWJsZWQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0Zy
YW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVy
blZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNQcm9ncmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJv
Z3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUmVuZGVy
YnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNS
ZW5kZXJidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNS
ZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
U2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVy
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJlKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdpZHRoKEdDR0xmbG9hdCBhcmcwKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5lV2lkdGgo
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9n
cmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zm
c2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRz
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJi
dWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4g
aW52ZXJ0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
YW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFk
ZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIGFyZzEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJjZShh
cmcwLCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdD
R0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBH
Q0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1h
c2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2sobWFzayks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1
aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2ls
T3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3AoZmFpbCwg
emZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVt
IGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2Vw
YXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0
ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJn
ZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGZsb2F0IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0xZihsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
MWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmdihsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFp
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZihsb2Nh
dGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xp
bnQgeCwgR0NHTGludCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtMmkobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMml2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
aW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNm
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHop
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0z
Zihsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0
YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdD
R0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwg
dyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0
aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVl
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
TWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUu
ZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVz
ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVc2VQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWIxZihpbmRleCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIy
ZihpbmRleCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dM
ZmxvYXQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVl
cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4
QXR0cmliM2Z2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBH
Q0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwg
eiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1
ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJQ
b2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xi
b29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxib29sPihub3JtYWxpemVk
KSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NHTGVudW0gdXNhZ2UpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGEw
KHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2FnZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyU3Vi
RGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4
ZWxzMCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwOjpSZXBseShkYXRh
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNl
bmRSZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRh
dGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVs
cy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1h
Z2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZz
ZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBy
ZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1h
Z2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJy
YXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVu
dHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpLCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCit7CisgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVy
dGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXko
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50
cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwg
d3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhKHRh
cmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVmU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YTo6UmVwbHkoZGF0
YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChz
ZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBk
YXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dM
aW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBH
Q0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQg
bWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEs
IGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
bGF5ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWws
IGxheWVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZUZyYW1lYnVmZmVy
KHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0
YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSksIHgs
IHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBz
cmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRC
dWZmZXIoc3JjKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2
ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRh
KSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QxKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDEodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2Uz
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJ
bWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFn
RGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0s
IG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9j
YXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
MXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdD
R0x1aW50IHYxLCBHQ0dMdWludCB2MikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2
MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWl2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1
aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0
aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1N
YXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRy
YW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDRm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSks
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
Ykk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NH
TGludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFs
dWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0
ZXhBdHRyaWJJNGl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgs
IHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2lu
dGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdD
R0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0
YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFs
dWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVh
ckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIs
IEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJ1
aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYoYnVm
ZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVm
ZmVyLCBkZXB0aCwgc3RlbmNpbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVR
dWVyeSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRl
UXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUXVlcnkocXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBib29sIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVyeShH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRhcmdldCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnkodGFyZ2V0LCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVlcnks
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVj
dHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVTYW1wbGVyKHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
U2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzU2FtcGxlcihzYW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1NhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVy
KEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxl
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBw
bmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVy
ZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK0dDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVy
UGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJm
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxl
clBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0xzeW5jIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZlbmNlU3luYyhHQ0dM
ZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKK3sKKyAgICB1aW50NjRfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGZW5jZVN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEdD
R0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKTsKK30KKworR0NHTGJv
b2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKEdDR0xzeW5jIGFyZzAp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1N5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGllbnRXYWl0
U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91
dCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwg
R0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0
PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKEdDR0xzeW5j
IGFyZzAsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5j
aShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkp
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2k6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2soaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZv
cm1HTE9iamVjdCBpZCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVkYmFj
ayhpZCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVk
YmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZl
ZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRiYWNr
KHRhcmdldCwgaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dM
ZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQ
bGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGlu
ZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXpl
aXB0ciBhcmc0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCitWZWN0b3I8R0NHTHVpbnQ+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKK3sKKyAgICBWZWN0b3I8dWlu
dDMyX3Q+IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVz
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlczo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitWZWN0b3I8R0NHTGludD4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3Jt
QmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9y
bUJsb2NrTmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0lu
ZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1C
bG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFt
LCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykK
K3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5OworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBu
YW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlVW5pZm9ybUJsb2NraXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBz
aXplb2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRG
cmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRz
dFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
VmVydGV4QXJyYXlPRVMoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4
QXJyYXlPRVMoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0
ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1h
cmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZm
ZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBw
cmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlz
b3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBw
aXhlbHMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZv
cm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbnRlcmZhY2Vp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2Us
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSAvLyBOT0xJTlQKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2Ft
cGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmlu
ZGV4IGFlZjgzZTI1ODg4OWE1YmU4MjY3YTY4YjFjNjlmZWM1YTM0ZTAzODYuLjZhNGFkZjVkNmQz
NGE3YzY5MWJmZjAwZWVjZTAxZmM3YWE4OTQwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51
bSwgYm9vbCwgYm9vbCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0
Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgYm9vbCwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCA5NWM4MzZlNjk1
MDQxZDk3ZDI1OTAzNmZkNzNkZmY1YzQ2YjhmZjkxLi5jOGM1ODI5MDUwYTUyNThmOWQ5MzE5NzZi
OTVmMDVlNTk3YTU2YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKCkKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRk
Q2xpZW50KCp0aGlzKTsKLSAgICBib29sIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kU3luYygKKyAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kU3luYygKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwgc2FtcGxlUmF0ZSgpLCBo
YXJkd2FyZVNhbXBsZVJhdGUoKSksCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25J
RCksIDApOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiBzdHJlYW1Gb3JtYXQ7CiAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0
cmVhbUZvcm1hdCk7CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1f
bnVtYmVyT2ZGcmFtZXMpOwotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJB
dWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCmlu
ZGV4IGI4ZjQ1YTZkNWJiNGRiNDYwOTg4MDEyNDNiYjVlOTMxN2IxZTNlMmIuLjY1YjhmZDBkNzcz
NDdlOTM4YjU2NDU4MjI2Yjc4ZGE0M2M5Nzg5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaCIKIAorI2lu
Y2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5o
CmluZGV4IGU1OWUxYjA2YjQ0N2U1ZDgwY2E2MTA1MmM2YzdhMzJjNGJhMTQyZTYuLjgxOTQwOTBj
OTMzYjJmMTFhNjQ2MGFiM2MxNzcyZDM3NjE2MzcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291
cmNlUHJvdmlkZXJNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRlbnRpZmll
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggMGRiODVhZTliZDI0MWViYTFiZGE0
ZTYyMjQ0MGY2MzI4ZTFkOGEwYi4uMjk3ZWViZGExOTE4OWRmZTBjZmU2YzFlZDc2OWFhY2I5ZDZk
OTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
CisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oCmluZGV4IGI5YTAxYjA2MjVlM2I3YzdmMDExODRhODNjMzZlNTQ5MTIyZjA5YTgu
LjE1MTcyYzlmNjIxMGJmNGY5NWUwYzZhYTc5MzZjNjIyZWE4ZDkzZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5oCkBAIC00NCw3ICs0NCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNz
IENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGI3Y2VkYjdlODM5
NGY5OWJhOWNmYjBhMmFjMmE5NzgxMWIzYzQxOGYuLjc3MDJkMWI3MDJkMTIxNjJlMTlhYjlhNmRh
YTRjNTk3NTE4NjJmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMywxMCArMzMsNiBA
QAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRH
ZW5lcmljQ3VlOwogY2xhc3MgSVNPV2ViVlRUQ3VlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMGM2Zjcz
ZDA3MTQ0YjU2MjY3NjkzNjdjOWYyYTNhNDAxN2VhZGU4MC4uMTY4ZWY0MzVkZGU1NjE0ZDMwZjNi
ZTI4NjcwYTQ3YWVkNjE2ZGUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3ND
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDczOWE0
OTZlZjQ5NGNiNGE2MTg1NjZmZmM2NGQ0YTI2NGE3NGU5ZDAuLjRiZWFlMDYyMzE3YmEyNmE2MDY4
M2YxZjQ1MTIzM2ViMTA3M2FhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
VVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgpAQCAtNDMsNyArNDQsNiBA
QCB1c2luZyBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29s
KjsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggMmRhZDIwMzg0
MmYwZTU1M2ZlM2I0NjI0NDFlZTk0ZmEyNjQ5M2ExMS4uYzI4Y2U3ZjJlMTdlODlhOGU1MTg2YTc3
MDZhMmU4YTQ0ZjZiN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFR5cGVzLmg+CkBAIC01NCw3ICs1NSw2IEBAIGNsYXNz
IERhdGE7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBDb25uZWN0aW9u
OwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjEs
NCArMTYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMwNjRlOWM0YWZjYzJjZmY1NGEzMjVlMjUzMWVkMDUyMmEw
MDEzOTMuLmI5Nzk0NjU5ZWFiZDE4NGIzODljMDZkMTMyZjhjNDJmODA1MjNjYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4
NjU3MTFiMzY2YzI4ZGY0ODRiNGNkYzA3YWEzZmNmM2RjZWJmMmY2Li42OTQ4OTZjOTk3YTQ5NDBk
YmFiMmRhNzY1NzgyMGEyNzhhZjFkYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKIAot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUzOTY2
ZmIuLjdlMWQ0OTk0NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3Mzc3ODAwZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk0ZWYwZDFmY2UyZTYwMWRmNDQ5Y2ZmODUzOWZi
ZDE2NDc5M2ViZTIuLmZmNjlmNTYwOWU1NzdjYWM3NzdmMDRhZmE3NGFmMjEwNzQ4NjRmODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hh
bm5lbE1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZjUzNDc4MzQ3ZTc3NWRmMzdlYTk3NjM0YzIzMzA5
MzJiNGExNGQyOC4uYWQ3ZmYxODdkYmI0MzUzYjllZDNiYzU3YzViYTJjNGFhNGU4Y2ZlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5u
ZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2VuZFF1ZXVlLmg+CkBAIC0z
OCw3ICszOSw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBE
ZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFt
LmNwcAppbmRleCBhZjI0MmNkMmI1OTVhYzRhNDQ4NDI5N2JlNWQ1Y2ZlMThkNDhmMzI0Li43ZDAw
NzM2OWI5Y2NlODViOGYwNTQ1N2Q2NjZkMWU0NDUxYjk2YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTI2LDcg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0u
aCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCmlu
ZGV4IGRkMDgyMDEwNzEyYjlmNWRiOWZlYmQ4OGRhNjY5YjZkZjYxZDBmMjkuLmI0M2NiMmVmYWQx
ZTEwMWVlMjY1YjkzZGRlOWIwNjEyNzM2YTA5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRsZS5oPgpAQCAtMzMsNyArMzQsNiBAQAogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAppbmRleCBj
YjQ4ZTA1NzM0OGEyZTg2NmIwOTFmZjVhYzg3MjYwNWNhMTkyZGQ1Li4zMjNmMjVlZThmZDgxYjAy
NjMwZDJmMjU5YTFhZmI4ODRiNGNmNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCkBAIC0zNSw3ICsz
NSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggZWE1MzU5NjAxMDlmZWU2ZGM0ODA1
Y2Y2ODkxMjc5OGVlOWFiNmYwMy4uNDBiNGM4ZjIxMjljZjEyMzNhMWIzMWI4NTEyN2U3YTdlOWUz
ZDdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaApAQCAtNjAsMTAgKzYwLDYgQEAgT0JKQ19DTEFTUyBQREZTZWxlY3Rpb247CiBPQkpD
X0NMQVNTIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdDsKIE9CSkNfQ0xBU1MgV0tQREZM
YXllckNvbnRyb2xsZXJEZWxlZ2F0ZTsKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBWE9iamVjdENhY2hlOwog
Y2xhc3MgRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMzM0NzY0YWNlMmE4YzQz
ODU4OGIzMTk4MDYyZjM2NWEzNjZlOGJkYS4uNWIyNzMyZjJjNGU0YzQ4M2ViZjg0MDg3YThjMjYz
NGU5ZDU0OTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEwOCw2ICsxMDgsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4K
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtOTEyLDYgKzkx
NiwyMiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZQogICAgIHJldHVybiBtX3BhZ2UuZW5zdXJl
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9
CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNw
bGF5SUQpIGNvbnN0Cit7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoaG9zdFdpbmRvd0Rpc3BsYXlJRCk7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShhdHRy
aWJ1dGVzKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworI2VuZGlm
CisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCmluZGV4IGVjMTRmZGIxNmM4MWNjMTI3MDZjZmNiNTllOTlmMmNkMzM3
NjBkYzguLjEyMTVmOTJhMDMxOTU4MGEwZGRkOTIxMDUxM2RkMmQ1ZDMwNTA1MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKQEAgLTI0Myw3ICsyNDMsMTEgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUs
IFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0IGZpbmFsOworI2lmIEVO
QUJMRShXRUJHTCkKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCisjZW5kaWYKKwogCiAgICAgQ29tcG9zaXRpbmdUcmlnZ2VyRmxh
Z3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBmaW5hbAogICAgIHsKQEAgLTQw
Myw2ICs0MDcsNyBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZy
YW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1f
Y2FjaGVkTWFpbkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXIgeyBmYWxzZSB9OworCiAgICAgV2Vi
UGFnZSYgbV9wYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCBmNjQyMTQ3N2E1NmNlZTFiNDU5YWIxYjcwZDhkY2FkOWQzZGFmYzM0
Li5kNDYzM2RkYjZjYzY0OTgwM2I5MjQ1NzU2MjViZmE1MjhjMTdkNGIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDIyLDYgKzQyMiw5IEBA
IFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQ
cm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgfQogICAg
ICwgbV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRl
ckRPTUluR1BVUHJvY2VzcyB9CiAgICAgLCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7
IHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIH0KKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgLCBtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5z
aG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzc30KKyNlbmRpZgogI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICAsIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgcGFy
YW1ldGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgfQogI2VuZGlmCkBAIC03MjUs
NyArNzI4LDYgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmIChXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyKiBtYW5hZ2VyID0gd2ViUHJvY2Vzcy5zdXBwbGVtZW50PFdlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXI+KCkpCiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KG1hbmFnZXItPm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSgpKTsK
ICNlbmRpZgotICAgIAogICAgIGlmIChwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3RvciAhPSAxKQog
ICAgICAgICBzY2FsZVZpZXcocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IpOwogCkBAIC0zNzkz
LDYgKzM3OTUsOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVz
ZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVBy
b2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JE
T01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShtX3Nob3VsZFBsYXlNZWRp
YUluR1BVUHJvY2Vzcyk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQ
cm9jZXNzKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpA
QCAtNjk5MCw2ICs2OTk1LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJvbml6ZUNPUlNEaXNhYmxp
bmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDT1JTRGlzYWJsaW5nUGF0
dGVybnMobV9pZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyksIDApOwogfQogCisK
ICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNhZ2VNYW5h
Z2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGU3ZjhjMGEzYjYwNGU3YWExNTdj
NzQwMjMxZTU1NTc0OWQ0ZWY3YzcuLjIxMTBhMzJmNjcwZjAwZmEyNDRmZTZmOWQ3OTVhNmRkZjYw
ZDE3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWxsYmFj
a0lELmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBAIC0x
NjAsNyArMTYxLDYgQEAgY2xhc3MgQXJyYXk7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29u
bmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9y
bURhdGFSZWZlcmVuY2U7CiB9CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmNXaXRoRGVs
YXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIFNl
bmRTeW5jUmVzdWx0IHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNlbEdlc3R1cmVzQmxvY2tl
ZE9uU3luY2hyb25vdXNSZXBsaWVzKCk7CiAgICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5k
U3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwpAQCAtMTgyNiw2
ICsxODI2LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQ
cm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNz
IHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFs
c2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3Nob3VsZFJlbmRlcldlYkdMSW5H
UFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKICAgICBib29sIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgZmFsc2UgfTsK
ICNlbmRpZgpAQCAtMjE4Myw0ICsyMTg2LDMgQEAgaW5saW5lIGJvb2wgV2ViUGFnZTo6cGxhdGZv
cm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY28KICNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBlNTc1ZmNhMDE5ZjZiMTJh
OGY0ZGFlNWNiMWQ2ODJkYTRlNDM2ZWI5Li44NGUyODQxMWNmZGRkOTFmOWE1ZDQ3YzIxZDcxZTlk
YjZkN2M2MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtNTE3LDcgKzUxNyw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxl
RWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKICAgICAvLyBGSVhN
RTogSW50ZXJwcmV0IHRoZSBldmVudCBpbW1lZGlhdGVseSB1cG9uIHJlY2VpdmluZyBpdCBpbiBV
SSBwcm9jZXNzLCB3aXRob3V0IHNlbmRpbmcgdG8gV2ViUHJvY2VzcyBmaXJzdC4KICAgICBib29s
IGV2ZW50V2FzSGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgc2VuZFJlc3VsdCA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNob3VsZFBl
cmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkNoYXIpLAorICAgIGF1dG8gc2VuZFJlc3VsdCA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1MYXlv
dXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OkNoYXIpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVu
dDo6UmVwbHkoZXZlbnRXYXNIYW5kbGVkKSwgbV9pZGVudGlmaWVyKTsKICAgICByZXR1cm4gc2Vu
ZFJlc3VsdCAmJiBldmVudFdhc0hhbmRsZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggZjJmMjI4MjJjN2IyMjNmY2E1OWY5NTU3M2QxMWRjOTliMTAzNDgx
MS4uNTgyZWU3NWQ5OWE3NDI0MjU0YTM5ZGFiMjA2Zjg0NjE3MzRhZDlhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk0Miw2ICsxOTQyLDIwIEBAIGJvb2wg
V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJlbmRlcmluZ1B1cnBvc2Ug
cHVycG9zZSkKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCisjaWYgRU5BQkxFKFdFQkdM
KQordm9pZCBXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCB1c2VHUFVQ
cm9jZXNzRm9yV2ViR0wpCit7CisgICAgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgPSB1c2VHUFVQ
cm9jZXNzRm9yV2ViR0w7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVu
ZGVyaW5nRm9yV2ViR0woKSBjb25zdAoreworICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JX
ZWJHTDsKK30KKworI2VuZGlmCisKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU5YzQ3ZGI0YzQ0N2MwZjRhYjYyN2MwOTRi
NWY2OGRiNTY1YTlhNmMuLjFhNTg1YWMxNDJiMTgzMjc2NGM0ZDg1Mzc5MDkwYjJjYmNhNzNjMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzQ3LDYgKzM0NywxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nKGJvb2wp
OwogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wpOwogICAgIGJvb2wgc2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UpOworI2lm
IEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChib29sKTsK
KyAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkgY29uc3Q7CisjZW5k
aWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4Nyw2ICs2OTEsOSBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdM
KQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgeyBmYWxzZSB9OworI2VuZGlmCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMDIyMjdiN2I1ZTQ2YzI0NDRkODlkYjc0NWU3NjJhOTBjNDg1
M2Q5Mi4uZmUzOWIwM2Q5YTVhNDhhZjQxNzRiY2U2OWFjZmI3YTc3NmZjYmU1NSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudHMgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRH
TCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNp
bmcgV2ViS2l0IElQQyBhbmQgaXMgaW5jb21wbGV0ZS4KKworICAgICAgICBBZGQgdGhlIGNvZGUg
Z2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbi4gQ3VycmVudGx5CisgICAg
ICAgIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGVzIGEgV2ViS2l0IElQQyBpbXBsZW1lbnRhdGlvbi4K
KworICAgICAgICBUaGUgaW5wdXQgZGVmaW5pdGlvbiB0byB0aGUgZ2VuZXJhdG9yIGlzIHRoZSBw
cm94eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBoZWFkZXIgZmlsZXMuCisgICAgICAgIFRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRvciBpcworICAgICAgICAgICAtIFdlYktpdCBJUEMgbWVzc2Fn
ZSBkZWZpbml0aW9uIGZpbGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHNlbmRlciBjb2RlCisgICAg
ICAgICAgIC0gTWVzc2FnZSByZWNlaXZlciBhbmQgcGF5bG9hZCBpbnZvY2F0aW9uIGNvZGUKKwor
ICAgICAgICBUaGUgZ2VuZXJhdG9yIGNvbnZlcnRzIEdyYXBoaWNzQ29udGV4dEdMIEdDR0wgLXBy
ZWZpeGVkIHR5cGVzIHRvCisgICAgICAgIHNpemVkIElQQyB0eXBlcy4KKworICAgICAgICBUaGUg
Z2VuZXJhdG9yIGlzIGludm9rZWQgZHVyaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHRoZSByZXN1
bHRzIGFyZQorICAgICAgICBzdG9yZWQgaW4gdGhlIHJlcG9zaXRvcnkuCisKKyAgICAgICAgKiBT
Y3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6IEFkZGVkLgorCiAyMDIwLTEyLTAxICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVh
ZGFibGUvd3JpdGFibGUgdG8gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdw
dXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRkYzBlM2JiNDNkNTQxMDVlOGM3YTQwMzkyMzMzYTY3MDc1
YWMzYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bApAQCAtMCwwICsxLDEwMzAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGlu
ZzogdXRmLTggLSotCisjCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIFRoaXMgc2NyaXB0IGdlbmVy
YXRlcyB0aGUgc291cmNlIGZpbGVzIGZvciBXZWJHTCBHUFUgcHJvY2VzcyBJUEMuCisjCisjIHB5
dGhvbjMgLW0gYmxhY2sgLWwgMTUwIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAor
IyBweXRob24zIC1tIG15cHkgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisjCitp
bXBvcnQgYXJncGFyc2UKK2ltcG9ydCBlbnVtCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHJlCitp
bXBvcnQgc3lzCitpbXBvcnQgY29sbGVjdGlvbnMKKworZnJvbSB0eXBpbmcgaW1wb3J0IExpc3Qs
IERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdlbmVyYXRv
ciwgSXRlcmF0b3IsIENvdW50ZXIKKworcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9fZmlsZV9f
KS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCitleHRlbnNpb25zX2lucHV0X2ZuID0g
cm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3JhcGhpY3Mi
IC8gIkV4dGVuc2lvbnNHTC5oIgorCitmdW5jdGlvbnNfaW5wdXRfZm5zID0gWworICAgIHJvb3Rf
ZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBo
aWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCitdCit0eXBlc19pbnB1dF9m
biA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUi
IC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKwordGVt
cGxhdGVfcHJlYW1ibGUgPSAiIiIvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyIiIgorY29udGV4dF9mdW5jdGlv
bnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAi
Z3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgi
Citjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQor
ICAgICsgIiIiLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBz
ZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25z
LgorI3ByYWdtYSBvbmNlCit7fQorCisiIiIKKykKK2NvbnRleHRfbWVzc2FnZXNfZm4gPSByb290
X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3MiIC8g
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIgorY29udGV4dF9tZXNzYWdlc190
ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFy
ZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91
cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3Bs
YXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25F
bmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5n
ZWQoKQore30KK319CisKKyNlbmRpZgorCisiIiIKKykKKworY29udGV4dF9wcm94eV9mdW5jdGlv
bnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAi
R1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9u
c0dlbmVyYXRlZC5jcHAiCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAg
ICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJLaXQge3sKK3t9CisKK319
CisKKyNlbmRpZgorCisiIiIKKykKKworCitkZWYgd3JpdGVfZmlsZShmbiwgbmV3X2NvbnRlbnRz
KToKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoKKyAgICAgICAgICAgIGlm
IGYucmVhZCgpID09IG5ld19jb250ZW50czoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICBl
eGNlcHQ6CisgICAgICAgIHBhc3MKKyAgICB3aXRoIG9wZW4oZm4sICJ3IikgYXMgZjoKKyAgICAg
ICAgZi53cml0ZShuZXdfY29udGVudHMpCisKK2NsYXNzIGNwcF90eXBlKG9iamVjdCk6CisgICAg
dHlwZV9uYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIp
OgorICAgICAgICBzZWxmLnR5cGVfbmFtZSA9IHR5cGVfbmFtZQorCisgICAgZGVmIF9fc3RyX18o
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9faGFzaF9f
KHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnR5cGVfbmFtZSkKKworICAgIGRlZiBf
X3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBkZWYg
X19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lID09IG90
aGVyLnR5cGVfbmFtZQorCisgICAgZGVmIGlzX3ZvaWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHNlbGYudHlwZV9uYW1lIGluIFsidm9pZCIsICJHQ0dMdm9pZCIsICJjb25zdCB2b2lk
IiwgImNvbnN0IEdDR0x2b2lkIl0KKworICAgIGRlZiBpc19jb25zdChzZWxmKSAtPiBib29sOgor
ICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUuc3RhcnRzd2l0aCgiY29uc3QgIikKKworICAg
IGRlZiBpc19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisK
KyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcG9pbnRlcihzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19yZWZlcmVuY2Uoc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcmVmZXJl
bmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGdldF92
YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAg
ICBkZWYgZ2V0X2RlY2F5X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgaWYgc2Vs
Zi5pc19jb25zdCgpOgorICAgICAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVf
bmFtZVs2Ol0pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgZ2V0X3J2YWx1ZV90eXBl
KHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50
eXBlX25hbWUgKyAiJiYiKQorCisgICAgZGVmIGdldF9wb2ludGVyX3R5cGUoc2VsZikgLT4gJ2Nw
cF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFtZSArICIq
IikKKworY2xhc3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBlKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjb250YWluZXJfbmFtZSA6IHN0ciwgY29udGFpbmVk
X3R5cGUgOiBjcHBfdHlwZSwgYXJpdHkgOiBPcHRpb25hbFtpbnRdID0gTm9uZSk6CisgICAgICAg
IGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5jb250YWlu
ZXJfbmFtZSA9IGNvbnRhaW5lcl9uYW1lCisgICAgICAgIHNlbGYuY29udGFpbmVkX3R5cGUgPSBj
b250YWluZWRfdHlwZQorICAgICAgICBzZWxmLmFyaXR5ID0gYXJpdHkKKyAgICBkZWYgaXNfY29u
dGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgZGVmIGlzX3Nw
YW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUgPT0g
IkdDR0xTcGFuIgorICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUgPT0gIkdDR0xTcGFuIiBhbmQgc2VsZi5hcml0
eSBpcyBOb25lCisgICAgZGVmIGdldF9jb250YWluZXJfbmFtZShzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuY29udGFpbmVyX25hbWUKKyAgICBkZWYgZ2V0X2FyaXR5KHNlbGYpIC0+IE9wdGlv
bmFsW2ludF06CisgICAgICAgIHJldHVybiBzZWxmLmFyaXR5CisgICAgZGVmIGdldF9jb250YWlu
ZWRfdHlwZShzZWxmKSAtPiBjcHBfdHlwZToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVk
X3R5cGUKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlLmlzX2NvbnN0KCkKKworZGVmIGNyZWF0ZV9j
cHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9j
b250YWluZXJdOgorICAgIG0gPSByZS5tYXRjaChyIihbXHc6XSspPCguKyk+JCIsIHR5cGVfbmFt
ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBjb250YWluZXJfbmFt
ZSA9IG1bMV0KKyAgICB0ZW1wbGF0ZXMgPSBtWzJdCisgICAgYXJpdHkgPSBOb25lCisgICAgbSA9
IHJlLm1hdGNoKHIiKFteLF0rKSxccyooXGQrKSIsIHRlbXBsYXRlcykKKyAgICBpZiBtOgorICAg
ICAgICB0ZW1wbGF0ZXMgPSBtWzFdCisgICAgICAgIGFyaXR5ID0gaW50KG1bMl0pCisgICAgcmV0
dXJuIGNwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUsIGNvbnRhaW5lcl9uYW1lLCBnZXRfY3Bw
X3R5cGUodGVtcGxhdGVzKSwgYXJpdHkpCisKK2NsYXNzIGNwcF90eXBlX2Z1bmN0aW9uKGNwcF90
eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCByZXR1cm5fdmFs
dWVfdHlwZSA6IGNwcF90eXBlLCBhcmd1bWVudF90eXBlcyA6IExpc3RbY3BwX3R5cGVdKToKKyAg
ICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLnJl
dHVybl92YWx1ZV90eXBlICA9IHJldHVybl92YWx1ZV90eXBlCisgICAgICAgIHNlbGYuYXJndW1l
bnRfdHlwZXMgPSBhcmd1bWVudF90eXBlcworCitkZWYgY3BwX3NwbGl0X2FyZ3Nfc3BlY3MoYXJn
c19zcGVjIDogc3RyKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAjIGh0dHBzOi8vc3RhY2tvdmVy
Zmxvdy5jb20vcXVlc3Rpb25zLzMzNTI3MjQ1L3B5dGhvbi1zcGxpdC1ieS1jb21tYS1za2lwcGlu
Zy10aGUtY29udGVudC1pbnNpZGUtcGFyZW50aGVzZXMKKyAgICBjb21tYSA9IHIiLCg/ISg/Olte
PF0qXDxbXj5dKlw+KSpbXjw+XSpcPikiCisgICAgcmV0dXJuIGZpbHRlcihOb25lLCBbYS5zdHJp
cCgpIGZvciBhIGluIHJlLnNwbGl0KGNvbW1hLCBhcmdzX3NwZWMuc3RyaXAoKSldKQorICAgIAor
ZGVmIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFs
W2NwcF90eXBlX2Z1bmN0aW9uXToKKyAgICBtID0gcmUubWF0Y2gocicoLiopXCgoLiopXCknLCB0
eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJu
X3ZhbHVlX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICBhcmdzX3R5cGVzID0gW2dldF9j
cHBfdHlwZShhKSBmb3IgYSBpbiBjcHBfc3BsaXRfYXJnc19zcGVjcyhtWzJdKV0KKyAgICByZXR1
cm4gY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lLCByZXR1cm5fdmFsdWVfdHlwZSwgYXJnc190
eXBlcykKKyAgICAgICAgCisjIFBvaW50ZXIgb3IgcmVmZXJlcmVuY2UKK2NsYXNzIGNwcF90eXBl
X2luZGlyZWN0KGNwcF90eXBlKToKKyAgICBjYXRlZ29yeSA6IHN0cgorICAgIHZhbHVlX3R5cGUg
OiBjcHBfdHlwZQorICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIs
IGNhdGVnb3J5IDogc3RyLCB2YWx1ZV90eXBlIDogY3BwX3R5cGUpOgorICAgICAgICBjcHBfdHlw
ZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY2F0ZWdvcnkgPSBjYXRl
Z29yeQorICAgICAgICBzZWxmLnZhbHVlX3R5cGUgPSB2YWx1ZV90eXBlCisKKyAgICBkZWYgaXNf
Y29uc3RfcG9pbnRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyon
IGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBub3Qgc2VsZi5pc19jb25zdCgpCisgICAg
ZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdv
cnkgPT0gJyYnIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicgYW5kIG5vdCBzZWxmLmlzX2Nv
bnN0KCkKKyAgICBkZWYgaXNfcnZhbHVlX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuY2F0ZWdvcnkgPT0gJyYmJworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYudmFsdWVfdHlwZQorCitkZWYgY3JlYXRlX2NwcF90eXBlX2luZGly
ZWN0KHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfaW5kaXJlY3RdOgorICAg
IG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06
CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJiQiLCB0eXBlX25hbWUpIAorICAgIGlmIG06
CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcmJicsIGdldF9j
cHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiQiLCB0eXBlX25h
bWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJCIsIHR5cGVf
bmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9u
YW1lLCAnJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAo
LispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2go
ciIoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlw
ZV9pbmRpcmVjdCh0eXBlX25hbWUsICcqJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIHJldHVy
biBOb25lCisKKworY2xhc3MgY3BwX2V4cHIob2JqZWN0KToKKyAgICB0eXBlOiBjcHBfdHlwZQor
ICAgIGV4cHI6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBl
eHByOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYuZXhwciA9
IGV4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5leHBy
CisKKworQ3BwRXhwckNvbnZlcnRlciA9IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBj
cHBfZXhwcl0KKworCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyX3Rocm91
Z2goY2FzdF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBj
cHBfdHlwZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9w
b2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAg
ICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+
KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIpfSkp
IikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyCisKK2RlZiBj
cHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY2FzdF90aHJvdWdoX3R5cGUg
OiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHByXToK
KyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcihleHByOiBjcHBfZXhwciwg
dHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlw
ZSwgZiJyZWludGVycHJldF9jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHN0YXRpY19jYXN0PHtzdHIo
Y2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0dXJuIGNwcF9yZWlu
dGVycHJldF9jYXN0X3RvX3BvaW50ZXIKKworZGVmIGNwcF9zdGF0aWNfY2FzdChleHByOiBjcHBf
ZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcih0
eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHtzdHIoZXhwcil9KSIpCisKKwor
ZGVmIGNwcF9pbXBsaWNpdF9jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4g
Y3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIHN0cihleHByKSkKKworCitkZWYg
Y3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwgdHlw
ZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJf
dHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAg
cmV0dXJuIGNwcF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDx7ZWxl
bWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXpl
KCkpIikKKworZGVmIHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nh
c3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAt
PiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5l
ZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYi
e3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB7ZWxlbWVudF9wb2ludGVyX3R5cGV9
Pih7c3RyKGV4cHIpfS5kYXRhKSwge3N0cihleHByKX0uYnVmU2l6ZSkiKQorCitkZWYgY3BwX21v
dmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHBy
KGV4cHIudHlwZS5nZXRfcnZhbHVlX3R5cGUoKSwgZiJXVEZNb3ZlKHtzdHIoZXhwcil9KSIpCisK
KworY3BwX3R5cGVzOiBEaWN0W3N0ciwgY3BwX3R5cGVdID0ge30KKworY3BwX3R5cGVfY29uc3Ry
dWN0b3JzIDogTGlzdFtDYWxsYWJsZVtbc3RyXSwgT3B0aW9uYWxbY3BwX3R5cGVdXV0gPSBbCisg
ICAgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9jb250YWlu
ZXIsCisgICAgY3JlYXRlX2NwcF90eXBlX2luZGlyZWN0CitdCisKK2RlZiBnZXRfY3BwX3R5cGUo
dHlwZV9uYW1lOiBzdHIpOgorICAgIHIgPSBjcHBfdHlwZXMuZ2V0KHR5cGVfbmFtZSwgTm9uZSkK
KyAgICBpZiByOgorICAgICAgICByZXR1cm4gcgorICAgIGZvciB0eXBlX2NvbnN0ciBpbiBjcHBf
dHlwZV9jb25zdHJ1Y3RvcnM6CisgICAgICAgIHIgPSB0eXBlX2NvbnN0cih0eXBlX25hbWUpCisg
ICAgICAgIGlmIHI6CisgICAgICAgICAgICBicmVhaworICAgIGlmIG5vdCByOgorICAgICAgICBy
ID0gY3BwX3R5cGUodHlwZV9uYW1lKQorICAgIGNwcF90eXBlc1t0eXBlX25hbWVdID0gcgorICAg
IHJldHVybiByCisKKworY2xhc3MgY3BwX2FyZyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAg
IHR5cGU6IGNwcF90eXBlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUs
IG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi50eXBl
ID0gdHlwZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAie30ge30i
LmZvcm1hdChzZWxmLnR5cGUsIHNlbGYubmFtZSkKKworCitjbGFzcyBjcHBfZGVjbChvYmplY3Qp
OgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgbmFtZTogc3RyCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYudHlwZSA9IHR5
cGUKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiBmIntzdHIoc2VsZi50eXBlKX0ge3NlbGYubmFtZX0iCisKKworY2xhc3Mg
Y3BwX2FyZ19saXN0KG9iamVjdCk6CisgICAgYXJnczogTGlzdFtjcHBfYXJnXQorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBzZWxmLmFyZ3Mg
PSBhcmdzCisKKyAgICBkZWYgbmFtZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiLCAiLmpvaW4o
YS5uYW1lIGZvciBhIGluIHNlbGYuYXJncykKKworICAgIGRlZiBleHBycyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIFtjcHBfZXhwcihhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQor
CisgICAgZGVmIGRlY2xzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2NwcF9kZWNsKGEudHlwZSwg
YS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgdHlwZXMoc2VsZik6CisgICAg
ICAgIHJldHVybiBbYS50eXBlIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKHN0cihhKSBmb3IgYSBpbiBzZWxmLmFy
Z3MpCisKKworY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdz
OiBjcHBfYXJnX2xpc3QKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBpc19leHRlbnNp
b246IGJvb2wKKyAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBjcHBfYXJnX2xpc3Qs
IGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAg
c2VsZi5yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MK
KyAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBpc19leHRlbnNpb24KKyAgICAgICAgc2VsZi5v
dmVybG9hZF9zdWZmaXggPSAiIgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJl
dHVybiBmIntzZWxmLnJldHVybl90eXBlfSB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KSIK
KworICAgIGRlZiBnZXRfYXJnc19jYXRlZ29yaWVzKHNlbGYpIC0+IFR1cGxlW0xpc3RbY3BwX2Fy
Z10sIExpc3RbY3BwX2FyZ11dOgorICAgICAgICBpbl9hcmdzID0gW10KKyAgICAgICAgb3V0X2Fy
Z3MgPSBbXQorICAgICAgICBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJnczoKKyAgICAgICAgICAgICNm
bXQ6IG9mZgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKSBvciBcCisgICAgICAg
ICAgICAgICAgYS50eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAgICAgICAgICAgIG91dF9hcmdz
ICs9IFthXQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29u
dGFpbmVyKSBhbmQgKCgoYS50eXBlLmlzX3NwYW4oKSBvciBhLnR5cGUuaXNfZHluYW1pY19zcGFu
KCkpIGFuZCBub3QgYS50eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCkpKToKKyAg
ICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgaW5fYXJncyArPSBbYV0KKyAgICAgICAgICAgICNmbXQ6IG9uCisgICAgICAgIHJl
dHVybiBpbl9hcmdzLCBvdXRfYXJncworCisgICAgZGVmIGlzX2ltcGxlbWVudGVkX3R5cGUoc2Vs
ZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiB0eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToK
KyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVm
IGlzX2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICAjIiBpbiBhLnR5cGUudHlwZV9uYW1lIGZv
ciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgIyAgICByZXR1cm4gRmFsc2UKKyAgICAg
ICAgI2lmICJHQ0dMc3luYyIgaW4gc2VsZi5yZXR1cm5fdHlwZS50eXBlX25hbWU6CisgICAgICAg
ICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLm5hbWUgPT0gImJ1ZlNpemUiIGZv
ciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg
ICBpZiBhbnkoYS50eXBlLmlzX3BvaW50ZXIoKSBhbmQgYS50eXBlLmdldF92YWx1ZV90eXBlKCku
aXNfdm9pZCgpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICBpZiBhbnkobm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShhLnR5cGUp
IGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg
ICAgICBpZiBzZWxmLnJldHVybl90eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKHNlbGYucmV0
dXJuX3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVl
CisKKword2Via2l0X2lwY190eXBlczogRGljdFtjcHBfdHlwZSwgY3BwX3R5cGVdID0ge30KKwor
d2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzOiBEaWN0W1R1cGxlW2NwcF90eXBlLCBjcHBfdHlw
ZV0sIENwcEV4cHJDb252ZXJ0ZXJdID0ge30KKworCitkZWYgd2Via2l0X2lwY19jb252ZXJ0X2V4
cHIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAiIiIg
Q29udmVydHMgYGV4cHJgIG9mIHR5cGUgb2YgYHNlbGZgIHRvIGB0eXBlYCAiIiIKKyAgICBjb252
ZXJ0ID0gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLmdldCgoZXhwci50eXBlLCB0eXBlKSwg
Tm9uZSkKKyAgICBpZiBub3QgY29udmVydDoKKyAgICAgICAgaWYgZXhwci50eXBlID09IHR5cGU6
CisgICAgICAgICAgICByZXR1cm4gZXhwcgorICAgICAgICBjb252ZXJ0ID0gY3BwX2ltcGxpY2l0
X2Nhc3QKKyAgICByZXR1cm4gY29udmVydChleHByLCB0eXBlKQorCisKK2RlZiB3ZWJraXRfaXBj
X2dldF9zcGFuX3RyYW5zZmVyX3R5cGUodHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3Bw
X3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRf
ZGVjYXlfdHlwZSgpCisgICAgYXJpdHkgPSB0eXBlLmdldF9hcml0eSgpCisgICAgd2Via2l0X2lw
Y19lbGVtZW50X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2VsZW1lbnRfdHlwZV0gaWYgbm90IGVs
ZW1lbnRfdHlwZS5pc192b2lkKCkgZWxzZSBnZXRfY3BwX3R5cGUoJ3VpbnQ4X3QnKQorICAgIGlm
IGFyaXR5IGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpB
cnJheVJlZmVyZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0sIHthcml0eX0+IikK
KyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpBcnJheVJlZmVyZW5jZTx7c3RyKHdlYmtp
dF9pcGNfZWxlbWVudF90eXBlKX0+IikKKworCisKK2RlZiB3ZWJraXRfaXBjX2dldF9zcGFuX3N0
b3JlX3R5cGUodHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlwZToKKyAgICBlbGVt
ZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNheV90eXBlKCkKKyAg
ICBpZiBlbGVtZW50X3R5cGUuaXNfdm9pZCgpOgorICAgICAgICBlbGVtZW50X3R5cGUgPSBnZXRf
Y3BwX3R5cGUoJ0dDR0xjaGFyJykKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAg
ICAgICBpbmxpbmVfY2FwYWNpdHkgPSAxNiBpZiAiZmxvYXQiIGluIGVsZW1lbnRfdHlwZS50eXBl
X25hbWUgZWxzZSA0CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJWZWN0b3I8e3N0cihl
bGVtZW50X3R5cGUpfSwge3N0cihpbmxpbmVfY2FwYWNpdHkpfT4iKQorICAgIHJldHVybiBnZXRf
Y3BwX3R5cGUoZiJzdGQ6OmFycmF5PHtzdHIoZWxlbWVudF90eXBlKX0sIHtzdHIodHlwZS5nZXRf
YXJpdHkoKSl9PiIpCisKK2RlZiB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lvbihl
eHByIDogY3BwX2V4cHIsIHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgor
ICAgIHBvaW50ZXJfY2FzdF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9p
bnRlcl90eXBlKCkKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICByZXR1
cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDx7c3RyKHBv
aW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9LnNpemUo
KSkiKQorCisgICAgYXNzZXJ0KHR5cGUuaXNfc3BhbigpKQorICAgIHJldHVybiBjcHBfZXhwcih0
eXBlLCBmIm1ha2VHQ0dMU3Bhbjx7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4ocmVpbnRlcnByZXRf
Y2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSkpIikKKwor
IyBTZWUgbWVzc2FnZXMucHkgZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUKK3dlYmtpdF9pcGNfYnVp
bHRpbl90eXBlcyA9IHNldCgKKyAgICBbInVpbnQ4X3QiLCAidWludDE2X3QiLCAidWludDMyX3Qi
LCAidWludDY0X3QiLCAiaW50OF90IiwgImludDE2X3QiLCAiaW50MzJfdCIsICJpbnQ2NF90Iiwg
ImJvb2wiLCAiZmxvYXQiLCAiZG91YmxlIiAiYm9vbCJdCispCisKKworZGVmIHdlYmtpdF9pcGNf
Z2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUodHlwZTogY3BwX3R5cGUpIC0+IGNwcF90eXBlOgor
ICAgIGlmIHR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoKKyAgICAg
ICAgcmV0dXJuIHR5cGUKKyAgICByZXR1cm4gdHlwZS5nZXRfcnZhbHVlX3R5cGUoKQorCisKK2Rl
ZiB3ZWJraXRfaXBjX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAg
aWYgZXhwci50eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAg
ICAgIHJldHVybiBleHByCisgICAgcmV0dXJuIGNwcF9tb3ZlX2V4cHIoZXhwcikKKworCitkZWYg
d2Via2l0X2lwY19tc2dfbmFtZShmdW5jOiBjcHBfZnVuYyk6CisgICAgcmV0dXJuIGZ1bmMubmFt
ZVswXS5jYXBpdGFsaXplKCkgKyBmdW5jLm5hbWVbMTpdICsgZnVuYy5vdmVybG9hZF9zdWZmaXgK
KworCitjbGFzcyB3ZWJraXRfaXBjX21zZyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGlu
X2FyZ3M6IGNwcF9hcmdfbGlzdAorICAgIG91dF9hcmdzOiBjcHBfYXJnX2xpc3QKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBmdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IHdl
YmtpdF9pcGNfbXNnX25hbWUoZnVuYykKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBmdW5j
LmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBpcGNfaW5fYXJncyA9IFtjcHBfYXJnKHdl
YmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSBmb3IgYSBpbiBpbl9hcmdzXQorICAgICAg
ICBpcGNfb3V0X2FyZ3MgPSBbXQorICAgICAgICBpZiBub3QgZnVuYy5yZXR1cm5fdHlwZS5pc192
b2lkKCk6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY190
eXBlc1tmdW5jLnJldHVybl90eXBlXSwgInJldHVyblZhbHVlIildCisgICAgICAgIGZvciBhIGlu
IG91dF9hcmdzOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9p
cGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKV0KKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19keW5h
bWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICBpcGNfaW5fYXJncyArPSBbY3BwX2FyZyhnZXRf
Y3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIildCisgICAgICAgIHNlbGYuaW5f
YXJncyA9IGNwcF9hcmdfbGlzdChpcGNfaW5fYXJncykKKyAgICAgICAgc2VsZi5vdXRfYXJncyA9
IGNwcF9hcmdfbGlzdChpcGNfb3V0X2FyZ3MpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAg
ICAgICAgaWYgbGVuKHNlbGYub3V0X2FyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gZiJc
biAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIC0+ICh7c3RyKHNlbGYu
b3V0X2FyZ3MpfSkgU3luY2hyb25vdXMiCisgICAgICAgIHJldHVybiBmIlxuICAgIHZvaWQge3Nl
bGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkiCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBf
cHJveHlfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIG1zZ19uYW1lOiBzdHIKKyAg
ICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKworICAgIHBy
ZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBw
b3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHJldHVybl9zdG10czogTGlzdFtzdHJdCisg
ICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2NwcF9leHBy
XQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAg
IHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5tc2dfbmFtZSA9IHdlYmtp
dF9pcGNfbXNnX25hbWUoY3BwX2Z1bmMpCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBjcHBf
ZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisgICAg
ICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBb
XQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYucmV0dXJu
X3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAgICAgIHNlbGYub3V0
X2V4cHJzID0gW10KKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBfZnVuYy5nZXRfYXJn
c19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1ZShjcHBfZnVu
Yy5yZXR1cm5fdHlwZSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZ3MoaW5fYXJncykKKyAg
ICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmdzKG91dF9hcmdzKQorICAgICAgICBzZWxmLnByb2Nl
c3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBpbl9leHBy
cyA9ICIsICIuam9pbihbc3RyKGkpIGZvciBpIGluIHNlbGYuaW5fZXhwcnNdKQorICAgICAgICBv
dXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIHNlbGYub3V0X2V4cHJzKQorICAg
ICAgICBpc19hc3luYyA9IHNlbGYucmV0dXJuX3R5cGUuaXNfdm9pZCgpIGFuZCBsZW4ob3V0X2V4
cHJzKSA9PSAwCisgICAgICAgIGlmIGlzX2FzeW5jOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0
bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsiLAorICAgICAgICAgICAgXQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2VuZF9yZXN1bHQgPSAiIgorICAgICAgICAgICAgaWYgc2VsZi5wb3N0X2NhbGxfc3RtdHM6
IAorICAgICAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gImF1dG8gc2VuZFJlc3VsdCA9ICIKKyAg
ICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFsKKyAgICAgICAgICAgICAgICAg
ICAgImlmIChzZW5kUmVzdWx0KSIgKyAoIiB7IiBpZiBsZW4oc2VsZi5wb3N0X2NhbGxfc3RtdHMp
ID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0gKyBbIiAgICAiICsgcyBmb3IgcyBpbiBz
ZWxmLnBvc3RfY2FsbF9zdG10c10gKyBbCisgICAgICAgICAgICAgICAgICAgICgifSIgaWYgbGVu
KHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgIGYie3NlbmRf
cmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYu
bXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7IiwKKyAgICAgICAgICAgIF0KKworCisgICAgZGVmIHByb2Nlc3Nf
aW5fYXJncyhzZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGkgaW4g
aW5fYXJnczoKKyAgICAgICAgICAgIGlmIGkudHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAg
ICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKGku
dHlwZSwgaS5uYW1lKSwgd2Via2l0X2lwY190eXBlc1tpLnR5cGVdKV0KKworICAgIGRlZiBwcm9j
ZXNzX291dF9hcmdzKHNlbGYsIG91dF9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgZm9y
IG8gaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpZiBvLnR5cGUuaXNfcG9pbnRlcigpOgorICAg
ICAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBvLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbdmFsdWVf
dHlwZV0KKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3ZhbHVlX3R5cGUs
IG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyAr
PSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAg
ICAgIGUgPSBjcHBfZXhwcih2LnR5cGUsIHYubmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLm91
dF9leHBycyArPSBbZV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBb
CisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAgICAgICAgICAgICBmImlm
ICh7by5uYW1lfSkiLAorICAgICAgICAgICAgICAgICAgICBmIiAgICAqe28ubmFtZX0gPSB7d2Vi
a2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgdmFsdWVfdHlwZSl9OyIKKyAgICAgICAgICAgICAgICAg
ICAgI2ZtdDogb24KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBlbGlmIG8udHlwZS5p
c19zcGFuKCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190
eXBlc1tvLnR5cGVdCisgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uod2Via2l0X2lw
Y190eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJn
KHdlYmtpdF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAgICAgICAgICAgICBzZWxm
LnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAg
ICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYubmFtZSld
CisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUoInNpemVf
dCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2Fs
bF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgIGYibWVtY3B5KHtvLm5hbWV9LmRhdGEs
IHt2Lm5hbWV9LmRhdGEoKSwge28ubmFtZX0uYnVmU2l6ZSAqIHNpemVvZih7c3RyKHdlYmtpdF9p
cGNfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKSl9KSk7IgorICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9l
eHByKG8udHlwZSwgby5uYW1lKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92YWx1ZShzZWxm
LCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlwZS5pc192b2lk
KCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJldHVy
bl90eXBlCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0dXJu
X3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIoaXBjX3JldHVybl90
eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmInty
ZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9fTsi
XQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtyZXR1cm5fdmFsdWVfZXhwcl0gKyBzZWxmLm91
dF9leHBycworICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtmInJldHVybiB7c3RyKHdlYmtp
dF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCByZXR1cm5fdHlwZSkpfTsiXQor
CisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5UIiBp
ZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICIiLmpvaW4oZiJcbiAg
ICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBz
ZWxmLnBvc3RfY2FsbF9zdG10cyArIHNlbGYucmV0dXJuX3N0bXRzKQorICAgICAgICByZXR1cm4g
ZiIiIlxue3N0cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fQore3t7Ym9keX0KK319IiIi
CisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXIob2JqZWN0KToKKyAg
ICBuYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJn
X2xpc3QKKyAgICBib2R5OiBMaXN0W3N0cl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBf
ZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisKKyAg
ICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90eXBlCisgICAgICAgIHNl
bGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5ib2R5ID0gWyJub3RJbXBsZW1l
bnRlZCgpOyJdCisgICAgICAgIGlmIGNwcF9mdW5jLnJldHVybl90eXBlLnR5cGVfbmFtZSAhPSAi
dm9pZCI6CisgICAgICAgICAgICBzZWxmLmJvZHkgKz0gWyJyZXR1cm4geyB9OyJdCisKKyAgICBk
ZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJfIiBp
biBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIlxue1xuICAgICIgKyAiXG4gICAg
Ii5qb2luKHNlbGYuYm9keSkgKyAiXG59IgorICAgICAgICByZXR1cm4gZiJcbntzdHIoc2VsZi5y
ZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxmLm5hbWV9KHtz
dHIoc2VsZi5hcmdzKX0pe25vbGludH17Ym9keX0iCisKKworY2xhc3MgY29udGV4dF9wcm94eV9j
cHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBpbXBsczogTGlz
dFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsXQorICAgIHVuaW1wbHM6IExpc3Rbd2Via2l0X2lw
Y19jcHBfcHJveHlfcGxhY2Vob2xkZXJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6
IEl0ZXJhYmxlW2NwcF9mdW5jXSwgdW5pbXBsZW1lbnRlZDogSXRlcmFibGVbY3BwX2Z1bmNdKToK
KyAgICAgICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKGYpIGZvciBm
IGluIGZ1bmNzXQorICAgICAgICBzZWxmLnVuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlf
cGxhY2Vob2xkZXIoZikgZm9yIGYgaW4gdW5pbXBsZW1lbnRlZF0KKworICAgIGRlZiBnZXRfZnVu
Y3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBz
ZWxmLmltcGxzICsgc2VsZi51bmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAg
ICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfZm4s
CisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2Vs
Zi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBf
aW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorICAg
IGlzX2V4dGVuc2lvbjogYm9vbAorICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBj
YWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAg
IGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBfZXhwcl0K
KyAgICByZXR1cm5fdmFsdWVfZXhwcjogT3B0aW9uYWxbY3BwX2V4cHJdCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3Bw
X2Z1bmMubmFtZQorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNwcF9mdW5jLm92ZXJs
b2FkX3N1ZmZpeAorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3QoW10pCisgICAgICAg
IHNlbGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYu
cHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBbXQorICAgICAg
ICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQor
ICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX2V4
cHIgPSBOb25lCisKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1ZShjcHBfZnVuYy5y
ZXR1cm5fdHlwZSkKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBfZnVuYy5nZXRfYXJn
c19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2FyZ3MoY3BwX2Z1bmMuYXJncy5h
cmdzLCBzZXQoaW5fYXJncyksIHNldChvdXRfYXJncykpCisgICAgICAgIHNlbGYucHJvY2Vzc19j
YWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGV4dCA9ICJnZXRF
eHRlbnNpb25zKCkuIiBpZiBzZWxmLmlzX2V4dGVuc2lvbiBlbHNlICIiCisKKyAgICAgICAgaW5f
ZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYuaW5fZXhwcnMpCisgICAgICAg
IGlzX2FzeW5jID0gbGVuKHNlbGYub3V0X2V4cHJzKSA9PSAwCisKKyAgICAgICAgY2FsbF9leHBy
ID0gZiJtX2NvbnRleHQtPntleHR9e3NlbGYubmFtZX0oe2luX2V4cHJzfSkiCisgICAgICAgIGlm
IG5vdCBzZWxmLnJldHVybl92YWx1ZV9leHByOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRz
ICs9IFtmIntjYWxsX2V4cHJ9OyJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNh
bGxfc3RtdHMgKz0gW2Yie3N0cihzZWxmLnJldHVybl92YWx1ZV9leHByKX0gPSB7Y2FsbF9leHBy
fTsiXQorICAgICAgICBpZiBub3QgaXNfYXN5bmM6CisgICAgICAgICAgICBvdXRfZXhwcnMgPSAi
LCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2Vs
Zi5wb3N0X2NhbGxfc3RtdHMgKz0gW2YiY29tcGxldGlvbkhhbmRsZXIoe291dF9leHByc30pOyJd
CisKKyAgICBkZWYgcHJvY2Vzc19hcmdzKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10sIGluX2Fy
Z3M6IFNldFtjcHBfYXJnXSwgb3V0X2FyZ3M6IFNldFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBh
IGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAg
ICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgaWYgYSBpbiBpbl9hcmdzOgor
ICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmcoYSkKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmcoYSkKKyAgICAgICAgaWYgc2Vs
Zi5vdXRfZXhwcnM6CisgICAgICAgICAgICBvdXRfYXJnX2RlY2xzID0gIiwgIi5qb2luKGYie3N0
cihlLnR5cGUpfSIgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAgICBzZWxmLmFy
Z3MuYXJncyArPSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoZiJDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHtvdXRfYXJnX2RlY2xzfSk+JiYiKSwgImNvbXBsZXRpb25IYW5kbGVyIildCisKKyAgICBkZWYg
cHJvY2Vzc19pbl9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIHNlbGYuYXJncy5hcmdz
ICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUod2Via2l0
X2lwY190eXBlc1thLnR5cGVdKSwgYS5uYW1lKV0KKyAgICAgICAgc2VsZi5pbl9leHBycyArPSBb
d2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIod2Via2l0X2lwY190eXBlc1thLnR5cGVd
LCBhLm5hbWUpLCBhLnR5cGUpXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0X2FyZyhzZWxmLCBhOiBj
cHBfYXJnKToKKyAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgIHZh
bHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEubmFtZSkKKyAgICAg
ICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2YWx1ZV9hcmcudHlwZSl9IHtz
dHIodmFsdWVfYXJnLm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJz
ICs9IFtjcHBfZXhwcihhLnR5cGUsIGYiJnt2YWx1ZV9hcmcubmFtZX0iKV0KKyAgICAgICAgICAg
IGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAgICAgICAg
ICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2UudHlwZV0KKyAgICAg
ICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB3ZWJr
aXRfaXBjX3ZhbHVlX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19keW5hbWljX3NwYW4o
KToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFp
bmVyKSkKKyAgICAgICAgICAgIHNpemVfYXJnID0gY3BwX2FyZyhnZXRfY3BwX3R5cGUoInVpbnQ2
NF90IiksIGYie2EubmFtZX1TaXplIikKKyAgICAgICAgICAgIHNlbGYuYXJncy5hcmdzICs9IFtz
aXplX2FyZ10KKyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9hcmcod2Via2l0X2lwY19nZXRf
c3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUp
fShzdGF0aWNfY2FzdDxzaXplX3Q+KHthLm5hbWV9U2l6ZSksIDApOyJdCisgICAgICAgICAgICBz
ZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgZiJ7c3RvcmVfYXJnLm5h
bWV9IildCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2Eu
dHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRf
ZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJraXRfaXBj
X3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICBhc3Nl
cnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICBz
dG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShhLnR5cGUp
LCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIoc3Rv
cmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAgICAg
IHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFt
ZSldCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlw
ZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhw
cihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJraXRfaXBjX3R5
cGUpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGEudHlwZS5pc19yZWZlcmVu
Y2UoKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5
cGVdCisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlw
ZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzZWxm
Lm5zKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAg
ICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAg
ICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJz
ICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB3ZWJr
aXRfaXBjX3R5cGUpKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92YWx1ZShzZWxmLCByZXR1
cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlwZS5pc192b2lkKCk6Cisg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lwY190
eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhwcihy
ZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyAr
PSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0g
e3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfbW92ZV9leHBy
KHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCBpcGNfcmV0dXJuX3R5
cGUpKV0KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IHJldHVybl92YWx1ZV9leHBy
CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgYm9keSA9ICIiLmpvaW4oZiJcbiAg
ICAgICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRz
ICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIiICAgIHZvaWQge3Nl
bGYubmFtZX17c2VsZi5vdmVybG9hZF9zdWZmaXh9KHtzdHIoc2VsZi5hcmdzKX0pCisgICAge3t7
Ym9keX0KKyAgICB9fSIiIgorCisgICAgZGVmIG5zKHNlbGYsIHR5cGU6IGNwcF90eXBlKToKKyAg
ICAgICAgIyBUT0RPOiBuYW1lc3BhY2UgaW5mbyBpcyBub3Qgc3RvcmVkIGluIG5hbWVzLgorICAg
ICAgICBpZiB0eXBlLnR5cGVfbmFtZSA9PSAiQWN0aXZlSW5mbyI6CisgICAgICAgICAgICByZXR1
cm4gIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjoiICsgc3RyKHR5cGUpCisgICAgICAgIHJl
dHVybiBzdHIodHlwZSkKKworZGVmIHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZmaXgo
ZnVuY3MgOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgIGNvdW50cyA9IGNvbGxlY3Rpb25zLkNv
dW50ZXIoZi5uYW1lIGZvciBmIGluIGZ1bmNzKQorICAgIHN1ZmZpeGVzIDogQ291bnRlcltzdHJd
ID0gY29sbGVjdGlvbnMuQ291bnRlcigpCisgICAgZm9yIGYgaW4gZnVuY3M6CisgICAgICAgIGlm
IGNvdW50c1tmLm5hbWVdID4gMToKKyAgICAgICAgICAgIGYub3ZlcmxvYWRfc3VmZml4ID0gc3Ry
KHN1ZmZpeGVzW2YubmFtZV0pCisgICAgICAgICAgICBzdWZmaXhlcy51cGRhdGUoW2YubmFtZV0p
CisKKworY2xhc3MgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAg
ICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4i
CisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfaW1wbF0KKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5pbXBscyA9
IFt3ZWJraXRfaXBjX2NwcF9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdldF9m
dW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZvciBpIGlu
IHNlbGYuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdyaXRlX2Zp
bGUoCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc19mbiwKKyAgICAgICAgICAgIGNvbnRl
eHRfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5jdGlvbnMoKSksCisgICAg
ICAgICkKKworCitjbGFzcyBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3Qp
OgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBXZWJLaXQgSVBDIG1lc3NhZ2UgZGVmaW5p
dGlvbiBnZW5lcmF0b3IuIgorICAgIG1zZ3M6IExpc3Rbd2Via2l0X2lwY19tc2ddCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNl
bGYubXNncyA9IFt3ZWJraXRfaXBjX21zZyhmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRlZiBn
ZXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiIi5qb2luKHN0cihtKSBmb3IgbSBp
biBzZWxmLm1zZ3MpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdyaXRlX2Zp
bGUoY29udGV4dF9tZXNzYWdlc19mbiwgY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZS5mb3JtYXQo
c2VsZi5nZXRfbWVzc2FnZXMoKSkpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjOiBz
dHIsIGFyZ19pbmRleDogaW50KToKKyAgICByID0gYXJnX3NwZWMucnNwbGl0KCIgIiwgMSkKKyAg
ICBuYW1lID0gIiIKKyAgICB0eXBlID0gTm9uZQorICAgIGlmIGxlbihyKSA+IDEgYW5kIHJbMF0g
IT0gImNvbnN0IjoKKyAgICAgICAgbmFtZSA9IHJbMV0uc3RyaXAoKQorICAgICAgICB0eXBlID0g
Z2V0X2NwcF90eXBlKHJbMF0pCisgICAgZWxzZToKKyAgICAgICAgbmFtZSA9ICJhcmd7fSIuZm9y
bWF0KGFyZ19pbmRleCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShhcmdfc3BlYykKKyAg
ICByZXR1cm4gY3BwX2FyZyh0eXBlLCBuYW1lKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZ19saXN0
KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgorICAgIHJldHVybiBjcHBfYXJnX2xpc3QoW2Ny
ZWF0ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3IgaSwgZSBpbiBlbnVtZXJh
dGUoYXJnc19zcGVjcyldKQorCisKK2RlZiBjcmVhdGVfY3BwX2Z1bmMobmFtZTogc3RyLCByZXR1
cm5fc3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVuc2lvbjogYm9vbCk6
CisgICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBl
KHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpLCBpc19l
eHRlbnNpb249aXNfZXh0ZW5zaW9uKQorCisKK2RlZiByZWFkX2xpbmVzX3VudGlsKGxpbmVzIDog
SXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltzdHIsIE5vbmUsIE5vbmVd
OgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBpZiByZS5tYXRjaChtYXRjaCwgbGlu
ZS5zdHJpcCgpKToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHlpZWxkIGxpbmUKKworZGVm
IG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigidXNhZ2U6ICVw
cm9nIFtvcHRpb25zXSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS12ZXJib3NlIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUHJpbnQgc29tZSBkZWJ1ZyBpbmZvIGZyb20gdGhlIGdl
bmVyYXRvciBzY3JpcHQiKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAg
ICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3RlIGZyb20gd2ViIHBy
b2Nlc3MgdG8gR1BVIHByb2Nlc3MuCisKKyAgICAjIEZJWE1FOiBVbnRpbCBleHRlbnNpb25zIGhl
YWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUgdGhlIGltcGxlbWVudGF0aW9u
CisgICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVyIGEgZnVuY3Rpb24gaXMgb3Ig
aXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4KKyAgICBleHRlbnNpb25fc2lnbmF0dXJlcyA6
IFNldFtzdHJdID0gc2V0KCkKKyAgICB3aXRoIG9wZW4oZXh0ZW5zaW9uc19pbnB1dF9mbikgYXMg
ZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAgICAgIG0gPSBy
ZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkgPSAwOyIsIGxpbmUpCisg
ICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMo
CisgICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBfc3BsaXRf
YXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPVRydWUs
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9zaWduYXR1cmVz
LnVwZGF0ZShbc3RyKGZ1bmMpXSkKKyAgICBmdW5jcyA9IFtdCisgICAgdW5pbXBsZW1lbnRlZCA9
IFtdCisgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6CisgICAgICAgIHdpdGggb3Bl
bihmbikgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAg
ICAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEZ1bmN0aW9ucyB3
aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5l
cmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAg
ICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBFbmQgb2YgbGlz
dCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgICAg
IG0gPSByZS5tYXRjaChyIlxzKihcUyspXHMrKFx3KylcKCguKilcKSBmaW5hbDsiLCBsaW5lKQor
ICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgIGZ1bmNfbmFtZSA9IG1b
Ml0KKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5hbWU9ZnVuY19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3Bw
X3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAgICAgICBpc19leHRl
bnNpb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAg
ZnVuYy5pc19leHRlbnNpb24gPSBzdHIoZnVuYykgaW4gZXh0ZW5zaW9uX3NpZ25hdHVyZXMKKyAg
ICAgICAgICAgICAgICAgICAgaWYgZnVuYy5pc19pbXBsZW1lbnRlZCgpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3MuYXBwZW5kKGZ1bmMpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgICAgICB1bmltcGxlbWVudGVkLmFwcGVuZChmdW5jKQorCisK
KyAgICB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzKQorICAgICMgSW5p
dGlhbGl6ZSBXZWJLaXQgSVBDIGdlbmVyYXRpb24uIENvbnN0cnVjdCB0eXBlIG1hcHBpbmdzIGZv
ciB0aGUgdXNlZCBDKysgdHlwZXMgLT4gSVBDIHR5cGVzLgorICAgICMgVE9ETzogbmFtZXNwYWNp
bmcgaXNzdWVzLgorICAgIGFpX3R5cGUgPSBnZXRfY3BwX3R5cGUoIkFjdGl2ZUluZm8mIikKKyAg
ICBhaV90cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKCJXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyIpCisgICAgd2Via2l0X2lwY190eXBlc1thaV90eXBlXSA9IGFpX3Ry
YW5zZmVyX3R5cGUKKworICAgIHdpdGggb3Blbih0eXBlc19pbnB1dF9mbikgYXMgZjoKKyAgICAg
ICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgIGZvciBfIGluIHJlYWRfbGlu
ZXNfdW50aWwobGluZXMsICIvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktp
dCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3Jp
cHQuIik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGluZXNf
dW50aWwobGluZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wg
c2NyaXB0LiIpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChz
dGQ6OmlzX3NhbWVfdjwoXHcrKSwgKFx3Kyk+XCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06
CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tnZXRfY3BwX3R5cGUobVsxXSldID0g
Z2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpID09IHNpemVv
ZlwoKFx3KylcKSAmJiBzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGlu
ZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3Bw
X3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJd
KQorICAgICAgICAgICAgICAgIGNwcF9jYXN0X3Rocm91Z2hfdHlwZSA9IGdldF9jcHBfdHlwZSht
WzRdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5
cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBl
LCBpcGNfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyX3Rocm91Z2go
Y3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNf
Y29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF90
b19wb2ludGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNp
emVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAg
aWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAg
ICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAg
ICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAg
IHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBf
c3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNb
KGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAjIEZvciBhbGwgdHlwZXMgaW4gdGhlIGlucHV0IEFQSSwgZm9ybSBjb3Jy
ZXNwb25kaW5nIElQQyB0eXBlcyBhbmQgY29udmVyc2lvbnMuCisgICAgIyBUT0RPOiB0aGlzIGlz
IG5vdCBkcml2ZW4gYnkgdGhlIHR5cGluZy4KKyAgICBhbGxfdHlwZXMgPSBzZXQoKQorICAgIGZv
ciBmdW5jIGluIGZ1bmNzOgorICAgICAgIGFsbF90eXBlcy51cGRhdGUoZnVuYy5hcmdzLnR5cGVz
KCkgKyBbZnVuYy5yZXR1cm5fdHlwZV0pCisgICAgIyBTb3J0IGJ5IGxlbiBzbyB0aGF0IHRlbXBs
YXRlIGFyZ3MgY29tZSBiZWZvcmUgdGVtcGxhdGVzLgorICAgIGZvciBjcHBfdHlwZSBpbiBzb3J0
ZWQoYWxsX3R5cGVzLCBrZXk9bGFtYmRhIHg6IGxlbih4LnR5cGVfbmFtZSkpOgorICAgICAgICBp
ZiBjcHBfdHlwZSBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgY29udGludWUKKyAg
ICAgIAorICAgICAgICBpZiBjcHBfdHlwZS5pc19keW5hbWljX3NwYW4oKSBvciBjcHBfdHlwZS5p
c19zcGFuKCk6CisgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gd2Via2l0X2lwY19nZXRfc3Bh
bl90cmFuc2Zlcl90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tj
cHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgIGlm
IGNwcF90eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCk6CisgICAgICAgICAgICAg
ICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlwZSld
ID0gd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJz
aW9uCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyh0cmFuc2Zl
cl90eXBlLCBjcHBfdHlwZSldID0gd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24K
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RvcmVfdHlwZSA9IHdlYmtpdF9p
cGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnNbKHN0b3JlX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IGNwcF9h
cnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgZWxpZiBjcHBfdHlwZS5p
c19yZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5pc19jb25zdF9yZWZlcmVuY2UoKSBvciBjcHBfdHlw
ZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBjcHBfdHlwZS5nZXRf
dmFsdWVfdHlwZSgpIGlmIG5vdCBjcHBfdHlwZS5pc19jb250YWluZXIoKSBlbHNlIGNwcF90eXBl
CisgICAgICAgICAgICBpZiB2YWx1ZV90eXBlLmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAg
ICAgIGNvbnRhaW5lZF90eXBlID0gdmFsdWVfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKQorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W2NvbnRhaW5lZF90eXBlXQorICAgICAgICAgICAgICAgIGlmIHdlYmtpdF9pcGNfY29udGFpbmVk
X3R5cGUgPT0gY29udGFpbmVkX3R5cGU6CisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoZiJ7dmFsdWVfdHlw
ZS5nZXRfY29udGFpbmVyX25hbWUoKX08e3N0cih3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlKX0+
IikKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFu
c2Zlcl90eXBlCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogSGVyZSBtaWdodCBiZSBjYXNl
IHdoZXJlIFZlY3RvcjxHQ0dMaW50PiB3YXMgdXNlZCBpbiB0aGUgaW50ZXJmYWNlIGFuZCBWZWN0
b3I8aW50MzJfdD4gaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBJUEMgZGVm
aW5pdGlvbi4gVGhlcmUgaXMgbm8gc2Vuc2libGUgd2F5IHRvIGRvIHRoaXMgYXQgdGhlIG1vbWVu
dC4gV2UgZG8gbm90IGNvbnZlcnQsIHJhdGhlcgorICAgICAgICAgICAgICAgICAgICAjIGV4cGVj
dCB0aGF0IGFsbCB0aGUgaW52b2NhdGlvbnMgYXJlIHRha2VuIGNhcmUgb2YgdGhlIGZhY3QgdGhh
dCBHQ0dMaW50IGlzIHRoZSBzYW1lIHR5cGUgYXMgaW50MzJfdC4KKyAgICAgICAgICAgICAgICAg
ICAgIyBUaGlzIHdpbGwgbm90IGhvbGQgZm9yIGFsbCB0eXBlcyBzdWNoIGFzIEdDR0xib29sZWFu
LgorICAgICAgICAgICAgICAgICAgICAjd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBf
dHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVy
c2lvbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVz
W2NwcF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgIAor
ICAgICMgVGhlIGlucHV0IHRvIHRoZSBnZW5lcmF0b3JzIGlzIGxpc3Qgb2YgZnVuY3Rpb25zIHRv
IHJlbW90ZS4KKyAgICAjIFJ1biB0aGUgdmFyaW91cyBnZW5lcmF0b3JzLgorICAgIGdlbmVyYXRv
cnMgPSBbCisgICAgICAgIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1
bmNzLCB1bmltcGxlbWVudGVkKSwKKyAgICAgICAgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5l
cmF0b3IoZnVuY3MpLAorICAgICAgICBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihm
dW5jcyksCisgICAgXQorICAgIGZvciBnIGluIGdlbmVyYXRvcnM6CisgICAgICAgIGcuZ2VuZXJh
dGUoKQorCisgICAgaWYgb3B0aW9ucy52ZXJib3NlOgorICAgICAgICBwcmludCgiSW1wbGVtZW50
ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIuam9pbihmIiAgICB7c3RyKGkpfSBmaW5hbFxuIiBmb3Ig
aSBpbiBmdW5jcykpCisgICAgICAgIHByaW50KCJVbmltcGxlbWVudGVkOiIpCisgICAgICAgIHBy
aW50KCIiLmpvaW4oZiIgICAge3N0cih1KX0gZmluYWxcbiIgZm9yIHUgaW4gdW5pbXBsZW1lbnRl
ZCkpCisgICAgICAgIHByaW50KGYiSW1wbGVtZW50ZWQ6IHtsZW4oZnVuY3MpfSwgdW5pbXBsZW1l
bnRlZDoge2xlbih1bmltcGxlbWVudGVkKX0sIHRvdGFsOiB7bGVuKGZ1bmNzKStsZW4odW5pbXBs
ZW1lbnRlZCl9IikKKyAgICAgICAgcHJpbnQoIkMrKyB0eXBlIG1hcCB0byBXZWJLaXQgSVBDIHR5
cGUgbWFwOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAg
ICAgICAgaWYgdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgICAgIHByaW50KGYi
ICAgIHtzdHIodCl9IC0+IHtzdHIod2Via2l0X2lwY190eXBlc1t0XSl9IikKKyAgICAgICAgcHJp
bnQoIkMrKyB0eXBlcyB3aXRob3V0IFdlYktpdCBJUEMgdHlwZToiKQorICAgICAgICBmb3IgXywg
dCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgbm90IGluIHdlYmtpdF9p
cGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cih0KX0iKQorICAgICAg
ICBwcmludCgiV2ViS2l0IElQQyB0eXBlIGNvbnZlcnNpb25zIikKKyAgICAgICAgZm9yIChhLCBi
KSwgY29udmVydGVyIGluIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5pdGVtcygpOgorICAg
ICAgICAgICAgcHJpbnQoZiIgICAge3N0cihhKX0gLT4ge3N0cihiKX0gOiB7Y29udmVydGVyLl9f
bmFtZV9ffSIpCisgICAgICAgIHByaW50KCJEb25lLiIpCisgICAgcmV0dXJuIDAKKworCitpZiBf
X25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0OGI5
MzhmYTExZjgxNWQzN2VlODAzNzdmZDY0YjBiYzczZGM4MTQwLi43NjE2YTdiNzAxMWNkZDFmZjdi
OTg2ZjZkMjMyYjEzMTQ5NmJjZTliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMDEg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYy
NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4
dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1
c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEFkZHMgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHRo
ZSBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkuIERvZXMgbm90IHlldAorICAgICAgICBlbmFibGUgdGhl
IHRlc3RzIHRoYXQgYWN0dWFsbHkgcGFzcyBidXQgd2hpY2ggd2VyZSBza2lwcGVkIGJlZm9yZSB0
aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIwLTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVhZGFibGUvd3JpdGFibGUgdG8gUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBhMjI1MjhmYTFiMjY3ODczMTg1MzA1ODAwMzM5MGZkNzUzN2RjMGM2Li5kYTU2Mzg2
Mjg5ZDZjOTRkNGZmYWVjYTg5YWQyYmE5OTNiMTAxNmM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9j
ZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMxNyw2ICszMTcsMTQgQEAgaHR0cC90ZXN0cy9zZWN1
cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYWxsb3dlZC13aXRoLWNyZWRlbnRp
YWxzLmh0bWwKIGh0dHAvdGVzdHMvd2ViZ2wgWyBTa2lwIF0KIGpzL3NoYXJlZC1hcnJheS1idWZm
ZXItd2ViZ2wuaHRtbCBbIFNraXAgXQogCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFz
L3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLWZhbHNlLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtp
dC5vcmcvYi8yMTgxODQgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFktdHJ1
ZS5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMjE5MzQ5IGZhc3QvY2FudmFzL3dlYmds
L2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5odG1sIFsgVGltZW91dCBd
Cit3ZWJraXQub3JnL2IvMjE5MzQ5IGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsY29udGV4dGNoYW5n
ZWRldmVudC5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFz
L3dlYmdsL2dsLXBpeGVsc3RvcmVpLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTkz
NTEgZmFzdC9jYW52YXMvd2ViZ2wvcHJlbXVsdGlwbHlhbHBoYS10ZXN0Lmh0bWwgWyBGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8yMTkzNTIgZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9u
LXN0YXR1cy1mYWlsdXJlLmh0bWwgWyBGYWlsdXJlIF0KKwogd2ViZ3B1IFsgU2tpcCBdCiAKIGFj
Y2Vzc2liaWxpdHkvcHJlc3Mtd29ya3Mtb24tY29udHJvbC10eXBlcy5odG1sIFsgU2tpcCBdCg==
</data>
<flag name="commit-queue"
          id="432228"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415123</attachid>
            <date>2020-12-01 03:48:10 -0800</date>
            <delta_ts>2020-12-01 03:54:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201134807.patch</filename>
            <type>text/plain</type>
            <size>564347</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4
OGJkNDA3N2EwYzU0YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQxYTM1
Y2MwMDhhZWE2OWZmZjJjZDkxZDAyMzJlZmEwNzFlN2VkNTQuLjk4MTE1ZTE1Yjc2MzQ5NjFhYzM5
MGRiMjNkNTMwYjczZDI1ZDUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJj
Nzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQw
MGIwZmNlMjQxZWZmYjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiAr
MzU3LDE0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyMmVkNmNjMjRlNmU2Njg4NjBmNzRjYzllZGQ4NGIzZDlkZGMzMC4uOTUzMWI0
OTI3MWQwZDQwMWFkODIyNzkxZjg0ZWZkODY1N2Q2NmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2
RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07
CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsK
IAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIy
Mjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2
RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5
NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Niw2
ICsyMjQ2LDggQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkz
NkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjMsOSAr
MTAyMjUsMTQgQEAKIAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEw
MzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4
MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcy
NTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5pZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjEzLDYgKzI2NjIwLDggQEAKIAkJ
CQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJ
CQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQx
ODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJ
N0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2Ft
cGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9T
YW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovLApAQCAtMjY3NzksNiArMjY3ODgsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5
RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBE
NkExMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlC
Mjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJ
CQkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBF
MDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1
OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RB
NTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2
NzkwLDYgKzI2ODAxLDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZC
RDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYx
NkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2Vy
LmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwICovLApAQCAtMzIwODksNiArMzIxMDEsNyBAQAogCQkJCTdCMTAzMzlFMjU0
OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUz
QyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0MDI1LDYgKzM0MDM4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBF
Q0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAw
MTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIy
RkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVv
U2FtcGxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVj
NzE3NDU5N2YwNmUwZTUwOWU3OGZhYS4uMmY4Y2JmMDg3MDUwYzVmMDg2ODBmMmVkOTdkMWYzMDg4
NjYxYTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3NywyMSArNjc3LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZl
clN1YkRhdGEoKSBjYWxscyB0byB1c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0
ciA9IG1fY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNl
dC51bnNhZmVHZXQoKSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0
aFB0ci51bnNhZmVHZXQoKSAqIGNoZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBo
aWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNw
eShzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5i
eXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICog
ZWxlbWVudFNpemUpOwotCi0gICAgaWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkp
Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgImdldEJ1ZmZlclN1YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZm
ZXIiKTsKLSNlbmRpZgotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCk7CisgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9m
ZnNldCwgbWFrZUdDR0xTcGFuKHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVz
cygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBj
b3B5TGVuZ3RoICogZWxlbWVudFNpemUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIpCkBAIC0xNzAyLDcgKzE2OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxpc3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xOTY3
LDkgKzE5NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0
LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8
V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAg
LTIwMTQsNyArMjAwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBs
ZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQogCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHVu
aXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJpbmRTYW1wbGVyIiwgImludmFs
aWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNTksMTcgKzIwNDgsMTEg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAgICAgICAgaW50IHZh
bHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0
IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2Ft
cGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLm9iamVjdCgp
LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxp
ZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMTgsNyArMjEwMSw3IEBA
IEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdMU3lu
YyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNsaWVudFdhaXRTeW5jIiwgInRpbWVv
dXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIpOwogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19GTFVTSF9DT01NQU5E
U19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZhbGlkIGZsYWdzIik7CiAgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CkBAIC0yMTc5LDkg
KzIxNjIsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVs
ZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIs
IGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQVNTRVJUKGZl
ZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAKKwogICAg
IGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRi
YWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjQ4LDcgKzIyMzEsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tQ
cmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiZWdpblRyYW5zZm9ybUZlZWRiYWNr
IiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1pdGl2ZSBtb2RlIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIyODgsNyArMjI3MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRUcmFuc2Zvcm1GZWVkYmFjayIs
ICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwogCiAg
ICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVzZWQoZmFsc2UpOwpAQCAtMjI5OSw3
ICsyMjgyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28KIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJ0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpT
RVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWluZ3Muc2l6ZSgpID4gbV9tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAtMjQ4NSwyNCArMjQ2OCwyNCBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPEdDR0xpbnQ+IHJl
c3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3aXRjaCAocG5hbWUp
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
VFlQRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
eCk7IH0pOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRToKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TklGT1JNX0JMT0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
T0ZGU0VUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQVJSQVlfU1RSSURF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklYX1NUUklERToKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlm
b3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dCk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOiB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgpOyB9KTsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDggKzM1NTUsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoQ2xlYXJDYWxs
ZXJPdGhlcik7CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+
cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmUwM2E4OWZjNjk1M2QyMDAwODJmMjQ5NTQ5
NzYzYmUwNWE5NjE5NS4uYTQ0OTk0ZTBlZDcwMjBkMzQzMWE4ZTBjMjBiZDc1MGU4YzA3NDEwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTczMiw4ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxl
bWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENv
bnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9y
RXZlbnQsCkBAIC00Mzk1LDEwICs0Mzk0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAg
ICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0g
ICAgR0NHTHNpemVpIGxlbmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAg
IEdDR0xzaXplaSByb3dzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFk
blBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7
CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQog
ICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQy
ODI4ZjJkNTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIFdlYkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7
Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFw
aGljc0NvbnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5j
U3RhdHVzKTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldFN5bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBp
ZiAobV9zeW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAg
ICBzY2hlZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjli
ODZiYzMxODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cApAQCAtNTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3Nl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVO
QUJMRShXRUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KGF0dHJpYnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJ
RCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5
SUQoKTsKQEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1f
cGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZh
bCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQor
ICAgIC8vIFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQg
d29yaywgcmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlz
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3
NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEz
Y2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRp
b25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCAzYTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0
OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJ
RCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxw
dHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVy
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRl
eCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2Mz
MzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdp
bmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFs
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAv
LyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAg
ICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qg
PSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUy
ZmIzLi43YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAt
MzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9j
ZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0lu
V2ViUHJvY2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1By
b2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZi
ZDFkNDNjMDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFm
NjRhYTBkZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBA
IC05Niw2ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1
bmRsZUlzV2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3Rh
dGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07Cisg
ICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQ
cm9jZXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9
IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4
NjczNDQ3NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wu
aApAQCAtMjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3No
YWRlcl9jb21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NU
QVRVU19LSFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9l
eHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3Ig
ZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8g
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6
CiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3Vw
TWFya2VyRVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
KSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVy
cwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVt
b3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0g
MDsKQEAgLTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzQU1EKCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11
c3QgYmUgYXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNo
IGNvbmZpZ3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBk
ZjRhMTE5YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIx
YWVhN2E1YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQ
SElDU19DT05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAi
Rm9ybWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5o
IgpAQCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6
OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBy
ZXN1bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ct
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0
ZXMsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4
dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0
dHJzKGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1
MmRjNmVmMy4uYmE3MmIzMWFkNjU4NWI0YTliYjVkNmFkZWZjMWJmMTNkZjVmM2JhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0
IGZvciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGlj
OgogICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGlj
OgogICAgICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFw
aGljc0NvbnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRp
b24gaW4gY29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZm
ZWN0IHRoZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGlj
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2Ny
ZWVuLCBHcmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZp
cnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGll
bnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQg
cmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7
IH0KIAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCB1bmRlcnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZv
aWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05
ODAsNyArOTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXpl
aSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykg
PSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0
dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlw
dHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBt
b2RlKSA9IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0x
MTI0LDggKzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5
IHBvaW50cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1
YWwgR0NHTHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAg
ICB2aXJ0dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xp
bnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdD
R0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBm
aWx0ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9
IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9
IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
ID0gMDsKQEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
ID0gMDsKICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNh
bXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJm
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMo
R0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFs
IEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdD
R0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1l
b3V0KSA9IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRT
eW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdD
R0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVy
IC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NH
THVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dM
dWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgdW5pZm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykgPSAwOwotCisgICAgCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdD
R0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBwbmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9v
bGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0xMzk0LDcgKzEzOTQsNiBAQCBpbmxpbmUgR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdQogICAgIHJldHVybiB2YWx1ZVswXTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCA4NWMyOWE0YjZlNTYxMTBkYzdiZDc0N2FlMzM5ODdj
MzQwMzc1ZGYxLi4zYjA2NGMzZTc2OGVjYzRiZjAyYjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+
CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NCwxMyArNDYsMTcg
QEAgdHlwZWRlZiB1bnNpZ25lZCBHQ0dMdWludDsKIHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0Owog
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQ0dMaGFsZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dM
Y2xhbXBmOwordHlwZWRlZiBjaGFyIEdDR0xjaGFyOwordHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMq
IEdDR0xzeW5jOwordHlwZWRlZiB2b2lkIEdDR0x2b2lkOworCisvLyBUaGVzZSBHQ0dMIHR5cGVz
IGRvIG5vdCBzdHJpY3RseSBtYXRjaCB0aGUgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wg
RVMgMi4wCisvLyBoZWFkZXIgZmlsZSBmb3IgYWxsIHBsYXRmb3Jtcy4KIHR5cGVkZWYgaW50cHRy
X3QgR0NHTGludHB0cjsKIHR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRyOwotdHlwZWRlZiBj
aGFyIEdDR0xjaGFyOwordHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIHR5cGVkZWYgbG9u
ZyBsb25nIEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7
Ci10eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Ci10eXBlZGVmIHZvaWQgR0NHTHZv
aWQ7CiAKIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIApAQCAtNTgsMTMgKzY0
LDE3IEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5zaWdu
ZWQgR0x1aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPgoraW5saW5lIGNvbnN0ZXhwciBz
aXplX3QgZ2NHTFNwYW5EeW5hbWljRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGdjR0xTcGFu
RHluYW1pY0V4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQq
IGFycmF5KQorICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3Qgc2l6ZSA9IEV4
dGVudCkKICAgICAgICAgOiBkYXRhKGFycmF5KQotICAgIHsgfQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQogICAgIEdDR0xTcGFuKFQg
KCZhcnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQpAQCAtNzIs
NiArODIsMTIgQEAgc3RydWN0IEdDR0xTcGFuIHsKICAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3Bh
bjxVLCBFeHRlbnQ+JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxl
X3Y8VSgqKVtdLCBUKCopW10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQogICAgICAgICA6
IGRhdGEob3RoZXIuZGF0YSkKICAgICB7IH0KKyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIEV4
dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQorICAg
IEdDR0xTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0K
ICAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJl
dHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC03OSw3ICs5NSw3IEBAIHN0cnVjdCBHQ0dM
U3BhbiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxULCBn
Y0dMU3BhbkR5bmFtaWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1
ZlNpemVfKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXpl
XykKQEAgLTEyMSw2ICsxMzcsMTEgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CiAgICAg
ICAgIDogZGF0YShvdGhlci5kYXRhKQogICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAq
IHNpemVvZihVKSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+
JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXpl
KGFycmF5LnNpemUoKSAqIHNpemVvZihVKSkKKyAgICB7IH0KICAgICBHQ0dMdm9pZCogZGF0YTsK
ICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CkBAIC0xNTIsOCArMTczLDExIEBAIHN0cnVj
dCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+CiBHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1HQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+OwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+Jikg
LT4gR0NHTFNwYW48VCwgTj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdD
R0xTcGFuPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdDR0xT
cGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzBmMmYzMDY4ZmYwMjkxYWY1YmU2MGE1YzVmNmUxZWVi
N2E0YWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgcGxhdGZvcm1J
bml0aWFsaXplKCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CisKK1BsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVRleHR1
cmUoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitFeHRlbnNpb25zR0wmIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENv
bnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAor
eworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQorewor
ICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlm
IChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7
CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXll
ckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7Cisg
ICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFy
IHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0
cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAgIGZvciAoYXV0byogY2xp
ZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlkQ29tcG9z
aXRlKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRv
Q2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7CisgICAgaWYgKCFjb250ZXh0QXR0cmlidXRl
cygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
PSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZv
ciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3Vs
ZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVk
KCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkpIHsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKKyAgICAg
ICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7CisgICAgfQorfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0
aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFp
bGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5h
ZGQoZXh0ZW5zaW9uKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK1Bs
YXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZThh
MDkxNGQ4ZThlMjllMmQyODMxMjUwNGM0ZWIzMjBiMTE5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JK
Q19DTEFTUyBXZWJHTExheWVyOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW47CisjZW5kaWYKKworLy8gQSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRz
IHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJh
d2luZyBidWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9y
dC4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
IDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
IG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAg
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Qg
ZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwor
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7
CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmlu
YWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBlbmFi
bGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7
CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCisgICAgdXNpbmcg
RXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRV
bnRpbEluaXRpYWxpemVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisK
KyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxT
dHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5z
aW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91
bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0g
ZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9
OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAyODNkYTgyYzZhNjAy
ZWE0YjU1N2M2ODZjZmQ4MjNkMDgxYzU1ZTRhLi43YzE1MWZhMjg1MGYzM2MxNDlhOWRjODIyMzgx
YjhmY2JkZTljYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00NiwyOCArNDYsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0
cmluZykKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9p
c0FNRChmYWxzZSkKLSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlv
bihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2Up
Ci0gICAgLCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKICAg
ICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8v
IEZJWE1FOiBpZGVhbGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBB
TkdMRQotICAgIC8vIHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJp
dmVyIHdvcmthcm91bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9S
RU5ERVJFUikpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3Zl
bmRvci5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRv
ckNvbXBvbmVudHMuY29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29t
cG9uZW50cy5jb250YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlm
ICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwg
PSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIp
KQotICAgICAgICBtX2lzSW1hZ2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdM
RTo6fkV4dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDcgKzgzLDcgQEAgYm9v
bCBFeHRlbnNpb25zR0xBTkdMRTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCitHTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpO
T19FUlJPUjsKIH0KQEAgLTExNCwxMCArOTQsMTEgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29u
dGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5H
VEhfQU5HTEUpOworCiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xf
VFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1p
bmF0aW9uLgotICAgIGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0NHTGludCByZXR1cm5l
ZExlbmd0aCA9IDA7CiAgICAgZ2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFk
ZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYg
KCFyZXR1cm5lZExlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xNDcs
NyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4
dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAs
IGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0
WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQg
bG9uZyBmaWx0ZXIpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIC8vIEZJ
WE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUuCiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTU2
LDcgKzEzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nCiAgICAgZ2w6OkJsaXRGcmFtZWJ1
ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgx
LCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNSw3ICsyMTYsNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykK
ICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDMsMTUgKzIyNCwxNSBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaQogICAg
IGdsOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOworICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihvZmZzZXQpLCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzUwLDcgKzMzMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBn
bDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQxMiw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kCiAgICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC00MzksNyArNDIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGwKICAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDM3LDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2kKICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykK
LXsKLSAgICAvLyBXZSBjYW4gYXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRo
ZSBjYWxsaW5nIGZ1bmN0aW9ucwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAg
aW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19
Ci0jZW5kaWYKLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJl
bW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwg
aS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25l
IGJlZm9yZSByZWFkaW5nIHBpeGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJz
ID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVm
ZmVyVGFyZ2V0ID0gbV9jb250ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6
OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9jb250ZXh0LT5tX3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAg
ICBtX2NvbnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZm
ZXJUYXJnZXQsIG1fY29udGV4dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9
Ci0gICAgKHZvaWQpIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7
Ci0gICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdM
ZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYg
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAg
ICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211
bHRpc2FtcGxlRkJPKTsKLQotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRl
Y3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlv
bi4gU3VyZmFjZSB0aGlzIGluIHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwg
YW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGlu
Z1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAm
JiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oZGF0YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
Cit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0NDUsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAs
NyArNDUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNm
YWE2ZTM4ZmY3MmY0YjIzMjMuLmNiZjQ5OGJkN2MxYTFhYjlhYTZiNzBmYjVkMzhhYzRiOTJmYjAz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25n
IHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBs
b25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcg
ZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBs
b25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAg
Ym9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29s
IGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3Io
KSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdElu
RnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkg
KmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMjAsOCBA
QCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBi
b29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwot
ICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplOwotCiAgICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0g
ICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hl
dGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBl
eHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JB
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNi
OGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNC4uMWQ2MDRiNzFkNDgxNGY1OTdjMmMy
ZmM4OWVkYzk2NDhkYzEzYzc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
QEAgLTQ0MywzMiArNDQzLDUzIEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YS5idWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRh
LmRhdGEsIGZhbHNlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lk
Kj4ob2Zmc2V0KSwgdHJ1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQog
ewotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRy
aXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBj
YWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92
ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5l
LiwKKyAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJl
Zm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1f
aXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2Fy
eShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAg
ICB9Ci0gICAgZ2w6OlJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhKTsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCk7CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAg
IEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMg
JiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJp
bmcgdGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4g
dGhlCisgICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEg
Y2hhbm5lbCBmaXh1cCBiZWxvdy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0
eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3Vu
ZFJlYWRGQk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdy
YXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVs
dGlzYW1wbGVGQk8pKSkKICAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgs
IGhlaWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0K
IC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3cs
IHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bikKQEAgLTg5OCwyMCArOTE5LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6
QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwog
fQogCi12b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJp
dGZpZWxkIGFjY2VzcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zm
c2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGds
OjpVbm1hcEJ1ZmZlcih0YXJnZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0
ciA9IGdsOjpNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFw
aGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0
dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAo
IWdsOjpVbm1hcEJ1ZmZlcih0YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dM
ZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRl
T2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKQEAgLTEwMDgsMTQgKzEwMjUsMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwKICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2
b2lkKj4ob2Zmc2V0KSwgMCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxH
Q0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+
JiBwYXJhbXMpCitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dM
aW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3Jh
bSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9n
cmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUs
IHBhcmFtcy5kYXRhKCkpOworICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0
LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAt
MjEwMSwyMiArMjExOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGds
OjpHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwg
bnVsbHB0ciwgdmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5k
ZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NH
THNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCkBAIC0yMzkyLDEyICsyMzk0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmpl
Y3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6
OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0
aW9ucwpAQCAtMjgzOSwyMCArMjg0MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAg
IGdsOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xm
bG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFs
dWUgPSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2
KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAt
Mjg5NSwxMiArMjkwMiwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3lu
YyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0
U3luYyhzeW5jLCBmbGFncywgdGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBu
YW1lLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3MzU5N2Y0NzUzZDBiZWMxZDAyZTdkNWZjZmRjNjQzYTk4M2M4OGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgiCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09D
T0EpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW46On5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpID0gZGVmYXVs
dDsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZTg4YzJmOTliMWNhYTU4MTE3YzczOTExYTUx
YjY3ZGRlNjMyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
R0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFjZSBmb3Ig
aW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dh
cAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxsIG93biB0
aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0
YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFk
YXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2
ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8gb2J0YWlu
IHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9mIHRoZSBt
ZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhp
cyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJm
YWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUgZXhpc3Rp
bmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgorICAgICAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIFByb2R1Y2VyIHNwZWNpZmljIG1ldGFkYXRhIGhh
bmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KKyAgICB9OworICAgIC8vIFJldHVybnMgdGhlIG1l
dGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xp
ZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250ZW50cyBz
dXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAvLyB0aW1lIG9mIHRo
ZSBjYWxsLgorICAgIC8vIFJldHVybnMgZWl0aGVyOgorICAgIC8vIC0gRW1wdHkgYnVmZmVyIGlm
IG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCisgICAgLy8gLSBCdWZmZXIgd2l0aCBlbXB0
eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBi
dWZmZXIgd2FzIGF2YWlsYWJsZQorICAgIC8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGlu
IHVzZS4KKyAgICAvLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KKyAgICB2aXJ0dWFsIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgPSAwOworCisgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlz
cGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgorICAgIC8vIENsaWVudCB0cmFuc2ZlcnMgdGhl
IG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgorICAg
IHZpcnR1YWwgdm9pZCBwcmVzZW50KEJ1ZmZlcikgPSAwOworCisgICAgLy8gRGV0YWNoZXMgdGhl
IGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEg
aGFuZGxlLgorICAgIC8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0
ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCisg
ICAgLy8gdGhpcy4KKyAgICB2aXJ0dWFsIHZvaWQqIGRldGFjaENsaWVudCgpID0gMDsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpp
bmRleCAyZTFjNzk5ZTgyODUzYjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi43N2NhMjAwYmQ3
ZmZlZmVkMzk4ZjkxMmE3OWQ0MjUxMzQ2YmY3ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkV4
dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJIb3N0
V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0YXRpYyBF
R0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
ID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5IGRpc3Bs
YXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQg
PSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRp
bGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJvY2Vzcygp
KTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0KSB7
CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xhdGlsZSBw
bGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2luY2UgY2xp
ZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFsIGNvbnRl
eHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgIGlmIChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55
Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7CiAKICAg
ICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8gaG9zdFdp
bmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhv
c3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlvbigpLCAm
c2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0
V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LnB0cigp
LCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9j
ZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51bGxwdHIs
ICZzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJv
YmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAog
c3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwg
Q0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJy
ZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5
SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGlu
YXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0KQotICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3RpbmF0aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGlu
YXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0g
YXR0cnMuaXNXZWJHTDI7CiAKQEAgLTI5MywyNiArMjk5LDI4IEBAIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0CiAgICAgaWYgKG1faXNGb3JXZWJHTDIpCiAgICAgICAgIGdsOjpFbmFibGUoR3JhcGhp
Y3NDb250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAorICAgIFZlY3Rv
cjxBU0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBpZiAobV9pc0Zvcldl
YkdMMikgeworICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdv
cmsuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25f
cXVlcnlfYm9vbGVhbiJfcyk7CisgICAgfQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9u
cygpOwotCiAgICAgaWYgKCFuZWVkc0VBR0xPbk1hYygpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogcmVxdWlyZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAgICAgICAi
R0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiLCAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0
dXJlcy4KLSAgICAgICAgICAgICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLCAvLyBG
b3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgotICAgICAgICB9
OwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChyZXF1
aXJlZEV4dGVuc2lvbnMpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBw
b3J0cyhyZXF1aXJlZEV4dGVuc2lvbnNbaV0pKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdM
LCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgcmVxdWlyZWRFeHRlbnNpb25zW2ld
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIC8vIEZv
ciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMu
YXBwZW5kKCJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSJfcyk7CisgICAgICAgIC8vIEZvciBj
cmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCisgICAgICAgIHJlcXVp
cmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJfcyk7
CisgICAgfQogCi0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRF
eHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAg
ICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9H
KFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJh
Y3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5z
aW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ly8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUNDQVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBz
dGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8vIHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3Jt
U2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0byBDYXRhbHlzdCB0b28uCkBAIC0zMzEsMTMg
KzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBj
aGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0gICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVy
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fd2ViR0xMYXllciA9
IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0
cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyAgICBp
ZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsKKyAgICBlbHNl
IHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgICAgICBtX3dl
YkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhh
XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJH
TCBMYXllciJdOworICAgICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5
ZXIiXTsKICNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3N3YXBDaGFpbiA9ICZbbV93ZWJHTExh
eWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQg
d2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAgR0xlbnVtIHRleHR1cmVUYXJn
ZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBAIC00MDYsMTMgKzQxOCwxMiBAQCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKCkKICAgICAgICAg
aWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQogICAgICAgICAgICAgZ2w6OkRlbGV0ZUZy
YW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pOwogICAgIH0KLSAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
cikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlC
dWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExheWVyKSB7Ci0gICAgICAgIGF1dG8gcmVj
eWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgICAgICBhdXRv
IHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICAgICAg
aWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFj
ZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7Ci0gICAgICAgIGF1dG8gY29u
dGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFjaENsaWVudF07CisgICAgICAgIGF1dG8g
Y29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0YWNoQ2xpZW50KCk7CiAgICAgICAgIGlm
IChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3Bs
YXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBAIC01NzUsMTEgKzU4NiwxNiBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQog
ICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQog
ICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQgYnVmZmVyIG5vdywgYmVjYXVzZSBpdCBt
b3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBhdCB0aGUgdGltZSBpdCB3aWxsIGJlIHJl
dXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVm
ZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZm
ZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICBFR0xfRGVzdHJv
eVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOwogICAgIHJlY3lj
bGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQoreworICAgIEFTU0VSVCghZ2V0
SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAgIGF1dG8gYmFja2luZyA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCks
IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0CiAgICAgLy8gZm9yIE9wZW5H
TCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkgKG9ubGluZS9v
ZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVuIGNvbnNpZGVyIGFsbCBHUFVzLCBvciBy
ZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5zCiAgICAgLy8gYWxsIG9mZmxpbmUgcmVu
ZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQu
Ci0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmRvd1Nl
cnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxs
IHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCiAgICAgLy8gbV9kaXNwbGF5
TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNlLgogICAgIGlmIChwcmltYXJ5T3BlbkdM
RGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NDYsMTIgKzY2MiwxMiBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBj
b25zdAogICAgIC8vIGFuZCBNQUMvTUFDQ0FUQUxZU1QgYW5kIE9QRU5HTC9PUEVOR0xFUy4KICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICAKKwogI2lmIEhBVkUoQVBQTEVfR1JBUEhJ
Q1NfQ09OVFJPTCkKICAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02
ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9y
RGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJvbSBvdGhlciBn
cmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGdsOjpGbHVzaCgp
OwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZl
cl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVy
KCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVm
ZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVyIHByZXBhcmVG
b3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwg
bV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVzZW50KHsgV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB9KTsK
ICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAKICAgICBib29s
IGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBFcnJvciB3aWxs
IGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgpIHdoaWNoIHdp
bGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNOZXdCYWNraW5n
KQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAgICAgYWxsb2Nh
dGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0NTUwOWM3NDI5
ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYm
IFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIGF1dG8g
YXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10g
aW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNP
cGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBbbV93ZWJHTExh
eWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJHTExh
eWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
R3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFz
Q1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVyIHN3YXBDaGFp
bl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFjN2M5N2NmNjZl
NzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3ZWE4ODA5NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1w
b3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPG1l
bW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1z
dHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2b2lkKiBoYW5k
bGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5kbGUgKHN1Y2gg
YXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdl
bWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFjZXMuCi0vLyBU
aGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KLS8v
IFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2ls
bCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJl
ZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5Ci0v
LyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCi0vLyBF
eGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBh
cyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVyIGlzIGRvbmUg
d2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5n
Ci0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVj
eWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAogLSAoaWQpaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBz
aG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwogCi0vLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgot
Ly8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250
ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8vIHRpbWUgb2Yg
dGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1
ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2Ug
YW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMg
YXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCi0vLyAtIFN1
cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpcmVjeWNsZUJ1
ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50
cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3Vy
ZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlX
aXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwotCi0vLyBEZXRh
Y2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBt
ZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3Vi
bWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGlu
ZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1t
CmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMuLjE2OGZkNWY2
Yzg0MjM3YmRmOGFiOWNiYmNhNjQwNzM5NTA1YzkyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMjAsNyArMjAs
NyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKQEAgLTMyLDEz
ICszMiwzOSBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bUNBTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisKK2NsYXNz
IFdlYkdMTGF5ZXJTd2FwQ2hhaW4gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkdMTGF5
ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKKyAg
ICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyAgICB2b2lkIHBy
ZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7CisgICAgICAg
ICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCisgICAgICAgICAgICAg
ICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShtX3NwYXJlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgICAgICB2b2lkKiByZXN1bHQgPSBtX2Rp
c3BsYXlCdWZmZXIuaGFuZGxlOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgV2ViQ29yZTo6SU9TdXJm
YWNlKiBkaXNwbGF5U3VyZmFjZSgpIHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlLmdl
dCgpOyB9Citwcml2YXRlOgorICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CisgICAgQnVmZmVy
IG1fc3BhcmVCdWZmZXI7CisgICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsKK307CiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
IF9jb250ZW50c0J1ZmZlcjsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyIF9zcGFyZUJ1
ZmZlcjsKLQogICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsKKyAgICBPcHRpb25hbDxXZWJH
TExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0aERldmljZVBp
eGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29u
dGVudHNPcGFxdWUKQEAgLTQ3LDYgKzczLDcgQEAKICAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJh
bnNmb3JtM0RJZGVudGl0eTsKICAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFx
dWU7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBfc3dh
cENoYWluLmVtcGxhY2Uoc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTczLDMwICsx
MDAsMjEgQEAKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9Ci0KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIHJlY3ljbGVCdWZmZXIKKy0g
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWlu
CiB7Ci0gICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgIGlmIChfc3BhcmVC
dWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAgICAgICAgX3NwYXJlQnVmZmVyLnN1cmZh
Y2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoX3NwYXJlQnVmZmVyKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gX3N3YXBDaGFpbi52YWx1ZSgpOwogfQogCi0t
ICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVy
QnVmZmVyKSBidWZmZXIKKy0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKIHsKLSAgICBBU1NFUlQo
IV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBfc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKF9jb250
ZW50c0J1ZmZlcik7Ci0gICAgX2NvbnRlbnRzQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAg
IFtzZWxmIHNldE5lZWRzRGlzcGxheV07CiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IFlFUzsK
IH0KIAogLSAodm9pZClkaXNwbGF5CiB7Ci0gICAgaWYgKF9jb250ZW50c0J1ZmZlci5zdXJmYWNl
ICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50cyA9IF9jb250
ZW50c0J1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKTsKKyAgICBpZiAoX3N3YXBDaGFp
bi0+ZGlzcGxheVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7CisgICAgICAgIHNl
bGYuY29udGVudHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xheWVyQ29udGVu
dHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29udGVudHMiXTsK
ICAgICB9CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZv
cm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMTA2LDEzICsxMjQs
MTQgQEAKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLS0gKHZvaWQqKSBkZXRh
Y2hDbGllbnQKK0BlbmQKKwordm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KEJ1ZmZl
ciBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgdm9p
ZCogcmVzdWx0ID0gX2NvbnRlbnRzQnVmZmVyLmhhbmRsZTsKLSAgICBfY29udGVudHNCdWZmZXIu
aGFuZGxlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEFTU0VSVCghbV9zcGFy
ZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX3NwYXJlQnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlC
dWZmZXIpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICBbbV9s
YXllciBwcmVwYXJlRm9yRGlzcGxheV07CiB9Ci1AZW5kCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0K
aW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4uOTlhZDkxNjUy
NTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lt
cG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNpbXBvcnQgPENv
cmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggN2Vj
ODFjZjRhZTU3NzJjYWU5NzI4OGJjODBlMzY1NjQ2ZDYyN2M3Yi4uOGJlMTFkNGEyYzczMTRjN2Zj
ZDIyMGZkYjZiZWRiZDU5YjVmNDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIEV4dGVuc2lvbnNHTE9wZW5H
TDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3Jj
WDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcg
ZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NH
TGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwg
R0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxk
IG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBs
b25nIHNyY1gxLCBsb24KICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVy
c0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICNlbmRpZgogfQogCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
aW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMcwogI2VuZGlmCiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTI1Myw3ICsyNTMsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgRwogI2VuZGlmCiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCA0OTYyODljZWEwZTZhMDlkNmRiNzMxZjg2OGI1NDk5
M2E0NDQ0OWE4Li43NDgzNzE4YWU4NzBkYmU1YmI3Y2MxMGZjNzllMTNmZDdhMGE5Nzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5FeHRlbnNpb25zR0xPcGVuR0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2Rz
LgotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcg
c3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxv
bmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxm
b3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQg
c3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xp
bnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNr
LCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
b3ZlcnJpZGU7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKQEAgLTUyLDkgKzUyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcG9wR3JvdXBN
YXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0
dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmlt
Y291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAg
IGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2MWZiYTc3OGY4
ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYi4uYmE3Mjk5ZGIyZjA0MTljM2Y4Y2E0ZjQxZWY2YjVh
N2ViNGNhNzRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAg
LTM2Niw3ICszNjYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMcwogICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICosIGJvb2wpCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NH
THNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpICosIEdDR0xz
aXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTFNwYW48R0NHTHZvaWQ+LCBib29sKQogewogICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNmZjRiMjcyMTM3
ZjM0NGNlZTRhMjJkOGZiMjhjNjQuLjZhM2EzOWZlM2ExYmE1YmQyNTk3NzE1ODk0NzU2MWNjYWQ1
YWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTkzLDcgKzkz
LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkg
KmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAK
aW5kZXggMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMy4uMDM4NWIzY2Ez
OGNiYjc2MTBlOTlkOTNmZjIzYWZiZTFhMWM1NjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQog
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyKGxvbmcg
Lyogc3JjWDAgKi8sIGxvbmcgLyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8sIGxvbmcgLyog
c3JjWTEgKi8sIGxvbmcgLyogZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxvbmcgLyogZHN0
WDEgKi8sIGxvbmcgLyogZHN0WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAqLywgdW5zaWdu
ZWQgbG9uZyAvKiBmaWx0ZXIgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJh
bWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDRwogICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNv
dW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRy
YXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsCiAgICAg
bV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNv
dW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNv
cihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
ZGl2aXNvcikKIHsKICAgICBpZiAoIW1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpIHsKICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDAxN2E0NWI3Mzk4ZDA5OTJlZDE0NzY3
ZjA3NjdlMDRiNDY0MTYyODMuLjMxNDZmZTZjY2ZlMGM3OWI4MDFiMjM0OGZlNGI3Nzk0NDFlYTMw
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC03NSw4ICs3NSw4IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gw
LCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRz
dFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVk
IGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNp
Z25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dM
aW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBH
Q0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkx
LCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lk
KSBvdmVycmlkZTsKQEAgLTg3LDkgKzg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgYmluZFZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJh
d0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
IG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBFWFQgUm9idXN0bmVzcyAtIHJlc2V0CiAgICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXgg
YzI1NWIwYzEyZjRmY2JmYTQ2ZGIwMmQ1NWM4MGI0Y2I3N2QxN2I3MC4uMDI3MjhmODk3ODhlMGI4
NWVkMTI2ZjVmOTgxZjVjMWQ2MGRmZmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKQEAgLTU4LDYgKzU4LDkgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1Mg
Q0FMYXllcjsKIE9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworfQogI2VuZGlmIC8vIFBM
QVRGT1JNKENPQ09BKQogCiAjaWYgVVNFKE5JQ09TSUEpCkBAIC04Niw3ICs4OSw3IEBAIHR5cGVk
ZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKIAogY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3ND
b250ZXh0R0wKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kiwg
RGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKTsKQEAgLTk0LDYgKzk3LDggQEAg
cHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4gY3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFy
ZWRDb250ZXh0KTsKKyAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVh
dGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJik7CisKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2NvbnRleHRPYmo7IH0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGV4dHVyZTsgfQogICAgIENBTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPiht
X3dlYkdMTGF5ZXIuZ2V0KCkpOyB9CkBAIC0xOTEsNyArMTk2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgZ2V0QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IGluZGV4LCBBY3RpdmVJbmZvJik7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSBmaW5hbDsKICAg
ICBib29sIGdldEFjdGl2ZVVuaWZvcm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKLSAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBj
b3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgZmluYWw7CisgICAgdm9pZCBnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQs
IEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpOwogICAgIEdDR0xp
bnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1l
KSBmaW5hbDsKICAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKQEAgLTIxOSw4ICsyMjQs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAg
ICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFZl
cnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpIGZpbmFsOwogICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIHZvaWQgaGlu
dChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwpAQCAtMjM2LDcgKzIzOSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3Rvciwg
R0NHTGZsb2F0IHVuaXRzKSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgcmVuZGVyYnVm
ZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlQ292
ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKQEAgLTI1
NCw3ICsyNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKICAgICB2b2lk
IHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsgCisgICAgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKIApAQCAtMzE3LDEyICszMjEsMTAgQEAgcHVibGljOgogI2lmICFVU0Uo
QU5HTEUpCiAgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCog
ZGF0YSwgR0NHTGVudW0gdXNhZ2UsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3Ro
KTsKICAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIGRz
dEJ5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgbGVuZ3RoKTsKLSAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50
IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsKICNlbmRpZgogICAgIHZvaWQgY29weUJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xp
bnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNp
emUpIGZpbmFsOwogCi0gICAgdm9pZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2Vz
cykgZmluYWw7Ci0gICAgR0NHTGJvb2xlYW4gdW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSBm
aW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBi
bGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNY
MSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBk
c3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikg
ZmluYWw7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7CkBAIC0zODQsNyArMzg2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICBQbGF0Zm9ybUdM
T2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwog
ICAgIC8vIGdldFF1ZXJ5UGFyYW1ldGVyCi0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSBmaW5h
bDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnks
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2Ft
cGxlcigpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIpIGZpbmFsOwpAQCAtMzkzLDggKzM5NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQgcGFyYW0pIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsK
ICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
ZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2
YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAg
IEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAg
R0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdz
KSBmaW5hbDsKICAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMpIGZpbmFsOwpAQCAtNDAz
LDcgKzQwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0
ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKICAgICAvLyBnZXRTeW5jUGFy
YW1ldGVyCiAgICAgLy8gRklYTUUgLSB0aGlzIGNhbiBiZSBpbXBsZW1lbnRlZCBhdCB0aGUgV2Vi
R0wgbGV2ZWwgaWYgd2Ugc2lnbmFsIHRoZSBXZWJHTFN5bmMgb2JqZWN0LgotICAgIHZvaWQgZ2V0
U3luY2l2KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xp
bnQgKnZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9y
bUdMT2JqZWN0IGlkKSBmaW5hbDsKQEAgLTQyMCw3ICs0MjIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZv
cm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkg
ZmluYWw7CiAgICAgLy8gZ2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1c2UgZ2V0UGFyYW1ldGVyIGNh
bGxzIGFib3ZlLgogICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBm
aW5hbDsKLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1l
LCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykgZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdl
dEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdD
R0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdD
R0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsKICAgICAvLyBnZXRBY3RpdmVVbmlm
b3JtQmxvY2tQYXJhbWV0ZXIKQEAgLTQyOSwxMSArNDMxLDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykg
ZmluYWw7CiAKLSNpZiAhVVNFKEFOR0xFKQotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKLSAgICB2b2lkIHJlYWRQ
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRh
LCBHQ0dMdWludCBkc3RPZmZzZXQpOwotI2VuZGlmCi0KICAgICAvLyBIZWxwZXIgbWV0aG9kcy4K
IAogICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVs
cywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBH
cmFwaGljc0NvbnRleHQmKTsKQEAgLTUxNSw3ICs1MTIsMTEgQEAgcHVibGljOgogI2VuZGlmIC8v
ICFVU0UoQU5HTEUpCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93
KiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRyLCBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogPSBudWxscHRyKTsKKyNlbHNlCiAgICAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0
V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOworI2VuZGlmCiAKICAgICAv
LyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVh
bGx5IGNhbGwgT3BlbkdMLgogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVu
dHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgpA
QCAtNTI3LDcgKzUyOCw5IEBAIHByaXZhdGU6CiAgICAgLy8gaW1wbGVtZW50YXRpb24uCiAgICAg
dm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0gICAgCisKKyAgICB2
b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2Jq
ZWN0KTsKKwogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJhd2luZyBvcGVyYXRpb24gbGVh
dmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwogICAgIHZvaWQgY2hlY2tHUFVTdGF0
dXMoKTsKIApAQCAtNTQ4LDEwICs1NTEsMTMgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNw
bGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07CisgICAgLy8gVE9ETzogdGhpcyBzaG91
bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRyYXdzIHRvIGEgaW1hZ2UgYnVmZmVyLiBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE3OSAuCiAgICAg
UmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxscHRyIH07CkBAIC01NzksNyArNTg1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgaXNWYWxpZChmYWxzZSkKICAgICAgICAgewog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFw
KGVudW0gQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUg
fHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBl
ID09IFNIQURFUl9TWU1CT0xfVFlQRV9WQVJZSU5HKTsKQEAgLTY3Miw3ICs2NzgsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHVzaW5nIEJvdW5kVGV4dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0s
CiAgICAgICAgICAgICBzdGQ6OnBhaXI8R0NHTHVpbnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAg
IFdURjo6SW50SGFzaDxHQ0dMZW51bT4sIAorICAgICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xl
bnVtPiwKICAgICAgICAgICAgIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NH
THVpbnQ+LAogICAgICAgICAgICAgV1RGOjpQYWlySGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czxHQ0dMdWludD4+CiAgICAgICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDYzNTZmODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2
ODgxM2Y2YjkuLjYyOTgwMzg4YjY1MjQ3OWNjYjQzMzFjMjVmZmVlYmI2NmM2Y2I1NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC00MzEsNyArNDMx
LDcgQEAgRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cygpCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOwogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLAogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpG
UkFNRUJVRkZFUiwgbV9mYm8pOwogICAgICAgICA6OmdsRmx1c2goKTsKICAgICB9Ci0gICAgOjpn
bFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAg
ICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEu
ZGF0YSk7CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9
PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4
ODY3MjAzOWFlYTRmNTk5OTZlNGQ5NGUxYzFhMGZlLi5mNGZlMDA5ZDQ1Y2FkZDI4ZGJiNzdlZjk1
YWNjYjUwMjgzZTFjZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAKQEAgLTIwMjksMjIgKzIwMjksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
bwogICAgIHJldHVybiA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG1hcHBlZE5hbWUu
dXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGZsb2F0PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1
ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2
YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsK
LX0KLQogR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMjc4LDE5ICsyMjYyLDE5IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFu
Y2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCku
ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsK
ICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
LSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0
eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiAg
ICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsK
LSAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7
CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2
aXNvcik7CiB9CiAKICNpZiBIQVZFKE9QRU5HTF80KSAmJiBFTkFCTEUoV0VCR0wyKQpAQCAtMjMz
NSwxMyArMjMxOSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlCdWZmZXJT
dWJEYXRhKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0ciwKIH0KICNlbmRpZgogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWlu
dCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xpbnRwdHIsIEdDR0xTcGFuPEdMdm9p
ZD4pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0J5
dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
ZHN0T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKIH0KIAogI2lmIEhBVkUoT1BF
TkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCkBAIC0yNzEyLDcgKzI2OTEsNyBAQCBQbGF0Zm9y
bUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFt
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocXVlcnkpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7
CkBAIC0yNzU2LDE4ICsyNzM1LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNh
bXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVuCiAgICAgVU5V
U0VEX1BBUkFNKHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShw
bmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMC5mOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQorCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKQEAg
LTI4MDYsMTIgKzI3ODYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6d2FpdFN5
bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAgICBVTlVTRURf
UEFSQU0odGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2ko
R0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN5bmMp
OwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZlNpemUpOwot
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xP
YmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkK
QEAgLTI4OTQsMTEgKzI4NzQsMTMgQEAgVmVjdG9yPEdDR0x1aW50PiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm8KICNpZiBIQVZF
KE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxH
Q0dMaW50PiYgcGFyYW1zKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUlu
ZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcmVzdWx0Owog
Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6
ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICA6
OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVu
aWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3Jt
QmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9y
bUJsb2NrTmFtZSkKQEAgLTI5NDMsNyArMjkyNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdD
CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKICAgICBVTlVTRURfUEFSQU0oeCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHkpOwpAQCAtMjk1NCwxOCArMjkzNiw2IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKLXsKLSAgICBVTlVTRURf
UEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBV
TlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwCmluZGV4IDIzZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYxNzMzOTZh
YTU1MDUuLmEyMjE4MGI0YmY0Y2UxMGYxODUyMTI0MDExZTg4YTQ0MjczYjQxZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KIAotICAgIDo6Z2xS
ZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAg
OjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmRh
dGEpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwpAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUp
CiAgICAgICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtub3cg
d2UgaGF2ZSBpdC4KICAgICAgICAgICAgIGlmIChzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVm
ZmVyKSB7CiAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVG
RkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5y
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3Vu
dCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVO
REVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBo
ZWlnaHQpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwpCiAgICAgICAg
ICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
R0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVm
ZmVyKTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkKQEAgLTEzOCwxMiAr
MTM4LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVzLnN0ZW5jaWwpIHsKICAgICAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5k
ZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAg
ICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5E
RVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7
CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRF
WDgsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVO
REVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkgewogICAgICAgICAgICAgICAgICAgICA6Omds
QmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotICAgICAg
ICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShH
TF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgs
IGhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQ
VEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6Omds
RnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1F
TlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNjI4NDQ1MzI1MDMzNTEwN2ZkNTQ5
ODIyMzJiOGI5ZWFlYzhlNjhjYi4uOWY4MzE3YjE4ZDUzYjdiM2MxNjY2OWE0YzUxMTk5M2VhZjM3
Yzc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2V0KFdlYktpdF9N
RVNTQUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cwogICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAogICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZAogCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcgpAQCAtMjE4LDYgKzIxOSw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklM
RVMKIAogICAgIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKKyAgICBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAgICAgV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAKICAgICBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlZGI2Y2E1OTc5ZDJm
NGRlZjhiMmIyZTc3M2Y5ZDY5YWU3ODZlN2U5Li40YTY3ZGY4ZWRjM2I0ZjQ4OTE4NzcwMmVmYmYw
NDFiM2QzNGE5MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CkBAIC0yMCw2ICsyMCw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvbW9kZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIp
L3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVz
c2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BV
UHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluCkBAIC0xMzEsNiArMTMyLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNj
cmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmlu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCA3NTY3OWY1NWY1YWUzOTliNWVhZjQ3N2YxODkzMjU2YmMyNDg4NDRkLi43Y2QzZGJjY2EzNTBj
NmUzODE0YzM0MGMzOTNjOTYzZWRiYjk4MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3NSw2ICsxNzUsMTIgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdl
c1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzNzcwMWIwMWMzYzFhMmMzMDBlMWRkMmQ3
MmU2Yjg1MjM3ZjQyNGI1Li45NzZiMWE1YTNlNWMwZDMxMTVkNDQ1MGM5MDg2MTU3MTllNmRlY2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzEsNiArMTcxLDcgQEAgTUVTU0FH
RV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24g
XAogCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBc
CisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBc
CiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKQEAgLTIyNyw2ICsyMjgsNyBAQCBNRVNTQUdF
X1JFQ0VJVkVSUyA9IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAogCUdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eSBcCiAJ
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBc
CiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwZTJlODgzMmIxZTIwZjFlMGYzMTlkNWQ5ZjI1ZDcy
Y2UxYmY3M2FkLi40NGI5ZjYzZTE0YzUwYjc0MTk5M2Q2ZjM1YTVhOTVmNWFmZDgwYTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC02NCw2ICs2NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJS
ZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAtMjkwLDYgKzI5NCwyMSBAQCB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0K
IAorI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKKyAg
ICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywg
KnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfSk7CisgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBi
b29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9
CisjZW5kaWYKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5n
SW5mbygpCiB7CiAgICAgZ3B1UHJvY2VzcygpLm5vd1BsYXlpbmdNYW5hZ2VyKCkuY2xlYXJOb3dQ
bGF5aW5nSW5mb0NsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNjc4ZGJjNGU1ZDM2NWZhZDI4
ZThiNDgyNzg2Mzc2MmEzYzQ1NzhkLi41YWVkZmJiNGQyY2FjN2I3NjYwZmYwNzM2MDlkMzc3YzYw
MTU4NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNv
cmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01h
bmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CkBAIC0zOSw2
ICs0MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7
CkBAIC01NCw2ICs2MCw3IEBAIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xh
c3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eTsKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CitjbGFzcyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90
ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CkBAIC0xMTksNiArMTI2LDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlmCisKICAgICB2b2lkIGNsZWFyTm93
UGxheWluZ0luZm8oKTsKICAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCkBAIC0xODAs
NyArMTkyLDEwIEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFw
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKLQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB1
c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsK
KyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWFwOworI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1MTk0ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1
MmMzNjVlYjMyNzFmMzQ0Li45ZDU0ZTE2NDU5NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5Yzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3Nh
Z2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2Ugewog
ICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcikKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBDcmVhdGVH
cmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRH
TChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZv
aWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3Ry
dWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJ
T19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU5NzBlNWQ4
ODcwNTE2YWQxMzViNzY1Y2RhNDU3ZjQyNTNhYzAyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
QEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8d3RmL01hY2hTZW5k
UmlnaHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSk7Cit9
CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgOiBt
X2NvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0
cmlidXRlcywgKnRoaXMpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VX
ZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGlmIChh
dXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwor
ICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250
ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBt
X2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
K30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAg
ICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3Qo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpwcmVzZW50KEJ1ZmZlciBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2Rpc3BsYXlCdWZmZXIu
c3VyZmFjZSk7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworfQorCit2
b2lkKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KCkKK3sKKyAgICByZXR1
cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlLCBudWxscHRyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKK3sKKyAgICBpZiAod2lkdGggJiYgaGVpZ2h0KQorICAgICAgICBtX2NvbnRl
eHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CisgICAgZWxzZQorICAgICAgICBmb3JjZUNvbnRl
eHRMb3N0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JE
aXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsK
KyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNl
KTsKKyAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikK
KyAgICAgICAgc2VuZFJpZ2h0ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJpZ2h0KCk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJiBleHRl
bnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChl
eHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWJmMDU3MjEwMWQ5YmMwZjA5ZjdkYTk0Yzk0ZTUzMmJhN2Y3YzMwNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBX
VEYgeworY2xhc3MgTWFjaFNlbmRSaWdodDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBwcm9jZXNzIHNpZGUgaW1w
bGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRl
eHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJh
c2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBs
YXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGZpbmFsCisgICAgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisg
ICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQKKyAgICAsIHBy
aXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVi
bGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBmaW5hbDsKKworICAgIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlk
ZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qg
ZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAg
Ly8gR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRDb21w
b3NpdGUoKSBmaW5hbDsKKyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKKyAgICB2
b2lkIHJlY3ljbGVDb250ZXh0KCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFu
Z2VkTm90aWZpY2F0aW9uKCkgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbiBvdmVycmlkZXMuCisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBmaW5h
bDsKKyAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBmaW5hbDsKKyAgICB2b2lkKiBkZXRhY2hDbGll
bnQoKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQg
cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4m
Jik7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmKTsKKyAgICB2b2lk
IG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOworCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9MSU5UCisKKyAgICBSZWY8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsKKyAgICBXZWFrUHRyPEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI7
CisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBtX2Rpc3Bs
YXlCdWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVhNzE1MjRkNDA4
MTliYTAzMTBjYjQyMDEzNjA3NTY2ODc4Njg1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDI5NCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMIE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JE
aXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNl
bmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkg
LT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkK
KworICAgIHZvaWQgU2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgdm9pZCBTeW50aGVz
aXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB2b2lkIE1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
QWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHZvaWQgQXR0YWNoU2hhZGVyKHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB2b2lkIEJpbmRBdHRyaWJMb2Nh
dGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nIG5hbWUpCisgICAgdm9p
ZCBCaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJp
bmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBC
aW5kUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lk
IEJpbmRUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJs
ZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEp
CisgICAgdm9pZCBCbGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBCbGVuZEVx
dWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAg
IHZvaWQgQmxlbmRGdW5jKHVpbnQzMl90IHNmYWN0b3IsIHVpbnQzMl90IGRmYWN0b3IpCisgICAg
dm9pZCBCbGVuZEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwg
dWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90IGRzdEFscGhhKQorICAgIHZvaWQgQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENsZWFyKHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBDbGVh
ckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQor
ICAgIHZvaWQgQ2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB2b2lkIENsZWFyU3RlbmNpbChp
bnQzMl90IHMpCisgICAgdm9pZCBDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wg
Ymx1ZSwgYm9vbCBhbHBoYSkKKyAgICB2b2lkIENvbXBpbGVTaGFkZXIodWludDMyX3QgYXJnMCkK
KyAgICB2b2lkIENvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgdm9pZCBDb3B5VGV4U3Vi
SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwg
aW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVCdWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVGcmFtZWJ1ZmZlcigpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVByb2dyYW0oKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVSZW5k
ZXJidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVGV4dHVyZSgpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAg
dm9pZCBEZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZUZyYW1lYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzAp
CisgICAgdm9pZCBEZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERl
bGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlVGV4dHVyZSh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgRGVwdGhGdW5jKHVpbnQzMl90IGZ1bmMpCisgICAgdm9pZCBEZXB0
aE1hc2soYm9vbCBmbGFnKQorICAgIHZvaWQgRGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQg
ekZhcikKKyAgICB2b2lkIERldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcx
KQorICAgIHZvaWQgRGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBEaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBEcmF3QXJyYXlzKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVu
dHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgRW5hYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRmluaXNoKCkKKyAgICB2
b2lkIEZsdXNoKCkKKyAgICB2b2lkIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1
aW50MzJfdCBhcmczKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFy
ZzMsIGludDMyX3QgbGV2ZWwpCisgICAgdm9pZCBGcm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAg
ICB2b2lkIEdlbmVyYXRlTWlwbWFwKHVpbnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdldEFjdGl2
ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEF0dHJpYkxvY2F0
aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRTdHJpbmcodWludDMyX3QgbmFtZSkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZsb2F0dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3Qg
dmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSkgLT4gKGludDY0X3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjRpKHVpbnQzMl90IHBuYW1l
LCB1aW50MzJfdCBpbmRleCkgLT4gKGludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRQcm9ncmFtaSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBwbmFtZSkgLT4g
KGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCb29sZWFudih1
aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTxib29sPiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVp
bnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFByb2dyYW1JbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFk
ZXJJbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlw
ZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dCwgMj4gcmFuZ2UsIEdDR0xpbnQgcHJlY2lzaW9uKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtZnYodWludDMy
X3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRV
bmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFs
dWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2Nh
dGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtTG9jYXRpb24odWludDMy
X3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBwbmFtZSkgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SGludCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBJc0J1ZmZlcih1
aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IElzRW5hYmxlZCh1aW50MzJfdCBjYXApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgSXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUHJvZ3JhbSh1aW50MzJfdCBhcmcwKSAtPiAo
Ym9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUmVuZGVyYnVmZmVyKHVp
bnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SXNTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBJc1RleHR1cmUodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBMaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB2b2lkIExp
bmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBQaXhlbFN0b3JlaSh1aW50MzJfdCBw
bmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9y
LCBmbG9hdCB1bml0cykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgdm9pZCBTYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisg
ICAgdm9pZCBTY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBTdHJpbmcg
YXJnMSkKKyAgICB2b2lkIFN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1
aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBmYWNl
LCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0
ZW5jaWxNYXNrKHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFza1NlcGFyYXRlKHVp
bnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsT3AodWludDMyX3Qg
ZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHZvaWQgU3RlbmNpbE9w
U2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVp
bnQzMl90IHpwYXNzKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIFRleFBhcmFtZXRlcmkodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFVuaWZv
cm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHZvaWQgVW5pZm9ybTFmdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5p
Zm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB2b2lkIFVuaWZvcm0xaXYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZv
aWQgVW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgdm9p
ZCBVbmlmb3JtMmZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
IHYpCisgICAgdm9pZCBVbmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQz
Ml90IHkpCisgICAgdm9pZCBVbmlmb3JtMml2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zZihpbnQzMl90IGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHZvaWQgVW5pZm9ybTNmdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9y
bTNpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHopCisg
ICAgdm9pZCBVbmlmb3JtM2l2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQgVW5pZm9ybTRmdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9y
bTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGlu
dDMyX3QgdykKKyAgICB2b2lkIFVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJmdihpbnQzMl90
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFs
dWUpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZv
cm1NYXRyaXg0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcw
KQorICAgIHZvaWQgVmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWZXJ0
ZXhBdHRyaWIxZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB2b2lkIFZlcnRleEF0dHJp
YjFmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4gdmFsdWVz
KQorICAgIHZvaWQgVmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0
IHkpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDI+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNmKHVpbnQz
Ml90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHZvaWQgVmVydGV4QXR0
cmliM2Z2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiB2YWx1
ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmdih1aW50MzJf
dCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4gdmFsdWVzKQorICAgIHZvaWQg
VmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJf
dCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBWaWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBCdWZmZXJEYXRhMCh1aW50MzJfdCB0YXJnZXQsIHVp
bnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHZvaWQgQnVmZmVyRGF0YTEodWludDMy
X3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEsIHVpbnQzMl90IHVz
YWdlKQorICAgIHZvaWQgQnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9m
ZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgUmVhZG5Q
aXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4g
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IFJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4SW1hZ2UyRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1YkltYWdlMkQwKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZv
aWQgVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZv
aWQgQ29tcHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBp
bWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENv
bXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZp
cnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVt
ZW50c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0
cmliRGl2aXNvcih1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB2b2lkIENy
ZWF0ZVZlcnRleEFycmF5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIElzVmVy
dGV4QXJyYXkodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBCaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIENvcHlC
dWZmZXJTdWJEYXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1
aW50NjRfdCByZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3QgYXJnNCkK
KyAgICB2b2lkIEdldEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZz
ZXQsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAs
IGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0
WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90
IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB2b2lkIEludmFsaWRhdGVGcmFtZWJ1
ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFj
aG1lbnRzKQorICAgIHZvaWQgSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMsIGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFJlYWRC
dWZmZXIodWludDMyX3Qgc3JjKQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdl
MkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTNE
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB2b2lk
IFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4SW1hZ2UzRDEodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQg
VGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleFN1
YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlM0QodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29t
cHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50
MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHZvaWQgR2V0RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3Jt
MXVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwKQorICAgIHZvaWQgVW5pZm9ybTJ1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgdm9pZCBVbmlm
b3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMy
X3QgdjIpCisgICAgdm9pZCBVbmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYw
LCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHZvaWQgVW5pZm9y
bTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0
YSkKKyAgICB2b2lkIFVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtM3VpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9y
bTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0
YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZv
cm1NYXRyaXgzeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyeDRmdihpbnQz
Ml90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4g
ZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXg0eDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVu
aWZvcm1NYXRyaXgzeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXg0eDNmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4gZGF0YSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwgaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVmVydGV4QXR0
cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiB2
YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpKHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1aW50MzJfdCB3KQorICAgIHZvaWQgVmVydGV4
QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Qs
IDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBEcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJf
dCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PiBidWZzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGlu
dDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZXMpCisg
ICAgdm9pZCBDbGVhckJ1ZmZlcnVpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJC
dWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJmaSh1aW50MzJfdCBi
dWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qgc3RlbmNpbCkK
KyAgICB2b2lkIENyZWF0ZVF1ZXJ5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgRGVsZXRlUXVlcnkodWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBJc1F1
ZXJ5KHVpbnQzMl90IHF1ZXJ5KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB2
b2lkIEVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdldFF1ZXJ5KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90
IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBD
cmVhdGVTYW1wbGVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgRGVsZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgSXNTYW1wbGVy
KHVpbnQzMl90IHNhbXBsZXIpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB2
b2lkIFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBp
bnQzMl90IHBhcmFtKQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxl
ciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHZvaWQgR2V0U2FtcGxlclBhcmFt
ZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90
IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZs
YWdzKSAtPiAodWludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1N5
bmModWludDY0X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBEZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgdm9pZCBDbGllbnRXYWl0U3luYyh1
aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgdGltZW91dCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgV2FpdFN5bmModWludDY0X3Qg
YXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB2b2lkIEdldFN5bmNp
KHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2sodWludDMyX3QgaWQpCisgICAgdm9pZCBJc1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90
IGlkKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRUcmFu
c2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHZvaWQgQmVn
aW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHZvaWQgRW5k
VHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyh1
aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVy
TW9kZSkKKyAgICB2b2lkIEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBwcm9n
cmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBQYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCkKKyAgICB2b2lkIFJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIEJpbmRCdWZm
ZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikK
KyAgICB2b2lkIEJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB2
b2lkIEdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHVu
aWZvcm1OYW1lcykgLT4gKFZlY3Rvcjx1aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3Jtcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8dWlu
dDMyX3Q+IHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSkgLT4gKFZlY3RvcjxpbnQzMl90
PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1CbG9ja0luZGV4
KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyB1bmlmb3JtQmxvY2tOYW1lKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4KSAtPiAoU3Ry
aW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybUJsb2NrQmluZGlu
Zyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrQmluZGluZykKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFt
ZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
cGFyYW1zKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxpdEZyYW1l
YnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwg
aW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RY
MSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZv
aWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZVZlcnRleEFycmF5T0VTKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXlP
RVModWludDMyX3QgYXJnMCkKKyAgICB2b2lkIElzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJn
MCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVmVydGV4
QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgSW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisgICAgdm9pZCBQ
dXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisgICAgdm9pZCBQb3BHcm91cE1hcmtlckVY
VCgpCisgICAgdm9pZCBEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiBidWZzKQorICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUs
IGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZv
aWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAg
ICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSh1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
ZGl2aXNvcikKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZmZThjMWZjN2FmYTE3MmYxYmI5
YzczNDI2NzVjNWRmZTZlMTc2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oCkBAIC0wLDAgKzEsMTE4MyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisvLyBUaGlzIGZpbGUgc2hv
dWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwcml2YXRlIHNlY3Rpb24gb2YgdGhlCisvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBpbXBsZW1lbnRhdGlvbnMuCisjcHJhZ21hIG9uY2UKKyAgICB2b2lk
IHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
ZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCk7CisgICAgfQorICAgIHZvaWQgc3ludGhlc2l6ZUdM
RXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKGVycm9yKTsKKyAgICB9CisgICAgdm9pZCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNF
cnJvckxpc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGFj
dGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICB9CisgICAgdm9pZCBhdHRhY2hTaGFkZXIodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qgc2hhZGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQXR0
cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyYmIG5hbWUp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRl
eCwgbmFtZSk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIodGFyZ2V0
LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZm
ZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymlu
ZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRUZXh0dXJl
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBibGVuZENvbG9y
KGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsK
KyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb24obW9kZSk7CisgICAgfQorICAgIHZvaWQgYmxl
bmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0Is
IG1vZGVBbHBoYSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jKHVpbnQzMl90IHNmYWN0b3Is
IHVpbnQzMl90IGRmYWN0b3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuYyhz
ZmFjdG9yLCBkZmFjdG9yKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZSh1aW50
MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwgdWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90
IGRzdEFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0ZShz
cmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKKyAgICB9CisgICAgdm9pZCBjaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQzMl90IHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51
bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNsZWFyKHVpbnQzMl90IG1hc2spCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmNsZWFyKG1hc2spOworICAgIH0KKyAgICB2b2lkIGNsZWFy
Q29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpOworICAgIH0KKyAgICB2b2lkIGNsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmNsZWFyRGVwdGgoZGVwdGgpOworICAgIH0KKyAgICB2b2lkIGNsZWFy
U3RlbmNpbChpbnQzMl90IHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyU3RlbmNp
bChzKTsKKyAgICB9CisgICAgdm9pZCBjb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJv
b2wgYmx1ZSwgYm9vbCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29sb3JNYXNr
KHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZWQpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
Z3JlZW4pLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oYmx1ZSksIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihhbHBoYSkpOworICAgIH0KKyAgICB2b2lkIGNvbXBpbGVTaGFkZXIodWludDMyX3Qg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihhcmcwKTsKKyAg
ICB9CisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4U3Vi
SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwg
aW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwor
ICAgIH0KKyAgICB2b2lkIGNyZWF0ZUJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVCdWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGNyZWF0ZUZyYW1lYnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1H
TE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVQcm9ncmFtKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmJ1ZmZlcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNoYWRlcih1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBjcmVhdGVUZXh0dXJlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmN1
bGxGYWNlKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcih1aW50MzJfdCBhcmcw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcih1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVSZW5kZXJidWZmZXIo
YXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihhcmcwKTsKKyAgICB9CisgICAgdm9p
ZCBkZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVRleHR1cmUoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVwdGhGdW5jKHVpbnQzMl90
IGZ1bmMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoRnVuYyhmdW5jKTsKKyAgICB9
CisgICAgdm9pZCBkZXB0aE1hc2soYm9vbCBmbGFnKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5kZXB0aE1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGZsYWcpKTsKKyAgICB9CisgICAg
dm9pZCBkZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZXB0aFJhbmdlKHpOZWFyLCB6RmFyKTsKKyAgICB9CisgICAgdm9pZCBkZXRh
Y2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGRpc2Fi
bGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxlKGNhcCk7
CisgICAgfQorICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5k
ZXgpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50MzJfdCBm
aXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0FycmF5
cyhtb2RlLCBmaXJzdCwgY291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50cyh1aW50
MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZW5h
YmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlKGNhcCk7
CisgICAgfQorICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KTsKKyAgICB9CisgICAgdm9pZCBmaW5pc2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5m
aW5pc2goKTsKKyAgICB9CisgICAgdm9pZCBmbHVzaCgpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmZsdXNoKCk7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0
YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBh
cmczKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWludDMyX3QgYXJn
MywgaW50MzJfdCBsZXZlbCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJU
ZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKTsKKyAg
ICB9CisgICAgdm9pZCBmcm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZnJvbnRGYWNlKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFw
KHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2VuZXJhdGVNaXBt
YXAodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVBdHRyaWIodWludDMyX3QgcHJv
Z3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgYXJnMik7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsK
KyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUoYXJnMikpOworICAgIH0KKyAg
ICB2b2lkIGdldEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRCdWZmZXJQ
YXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFN0cmluZyh1aW50MzJf
dCBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN0cmluZyhuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEZs
b2F0dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNfY2FzdDxz
aXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFt
ZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2
NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAg
ICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0SW50ZWdlcjY0KHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0KHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8aW50
NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2VyNjRpKHVpbnQz
Ml90IHBuYW1lLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2
NGkocG5hbWUsIGluZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8
aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtaSh1aW50
MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9ncmFt
aShwcm9ncmFtLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRCb29sZWFudih1aW50MzJfdCBwbmFtZSwgdWludDY0X3Qg
dmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9v
bD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xib29s
ZWFuLCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAg
ICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4ocmVpbnRlcnByZXRfY2FzdDxib29s
Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0RXJy
b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEVycm9yKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMy
X3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1JbmZvTG9nKHVpbnQz
Ml90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2coYXJnMCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
cG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0U2hhZGVyaShhcmcwLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJJbmZvTG9nKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhhcmcwKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50
MzJfdCBwcmVjaXNpb25UeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdCwgMj4sIGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgc3RkOjphcnJheTxHQ0dMaW50LCAyPiByYW5nZSB7IH07CisgICAgICAgIEdDR0xp
bnQgcHJlY2lzaW9uID0geyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZSwgJnByZWNpc2lvbik7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4o
cmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocmFuZ2UuZGF0YSgpKSwgcmFuZ2Uuc2l6ZSgpKSwg
cHJlY2lzaW9uKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJTb3VyY2UodWludDMyX3QgYXJn
MCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2UoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmko
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUZXhQ
YXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KHVpbnQzMl90IHByb2dyYW0s
IGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6
ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEo
KSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1pdih1aW50MzJf
dCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gdmFsdWUoc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlm
b3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3Qq
Pih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlm
b3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVl
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQs
IDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PHVpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMc2l6ZWlwdHIgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoaW5kZXgsIHBuYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgaGludCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IG1vZGUp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmhpbnQodGFyZ2V0LCBtb2RlKTsKKyAgICB9Cisg
ICAgdm9pZCBpc0J1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0J1ZmZl
cihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc0VuYWJsZWQodWludDMyX3QgY2FwLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5pc0VuYWJsZWQoY2FwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc0ZyYW1l
YnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRnJhbWVidWZmZXIoYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNQcm9ncmFtKHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmlzUHJvZ3JhbShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rh
dGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1JlbmRlcmJ1
ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1JlbmRlcmJ1ZmZlcihhcmcw
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFs
dWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1NoYWRlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5pc1NoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1RleHR1cmUodWlu
dDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUZXh0dXJlKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGxpbmVXaWR0aChmbG9hdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5saW5lV2lkdGgoYXJnMCk7CisgICAgfQorICAgIHZvaWQgbGlua1Byb2dyYW0odWludDMyX3Qg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0oYXJnMCk7CisgICAg
fQorICAgIHZvaWQgcGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSk7CisgICAg
fQorICAgIHZvaWQgcG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5wb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpOworICAg
IH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoZmxv
YXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVD
b3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGludmVydCkpOworICAgIH0K
KyAgICB2b2lkIHNjaXNzb3IoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zY2lzc29yKHgsIHksIHdp
ZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcw
LCBTdHJpbmcmJiBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uo
YXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywg
aW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0
ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1bmNT
ZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMy
X3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShm
YWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrKHVpbnQz
Ml90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrKG1hc2spOwor
ICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMy
X3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShm
YWNlLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3AodWludDMyX3QgZmFpbCwgdWlu
dDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
dGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3BT
ZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWlu
dDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcFNlcGFyYXRl
KGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVy
Zih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSk7Cisg
ICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWYoaW50
MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTFmKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWZ2KGludDMyX3QgbG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYg
dikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQg
eCwgZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9u
LCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmZ2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybTJmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtMml2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zZihpbnQzMl90IGxvY2F0aW9uLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtM2YobG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zZnYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTNpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaShsb2Nh
dGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwg
ZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0aW9uLCB4
LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGZ2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVu
aWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6
LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00aShsb2NhdGlv
biwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJh
bnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4o
dmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEo
KSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoaW50
MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9j
YXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1c2VQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQg
dmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnZhbGlkYXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZih1
aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliMWYoaW5kZXgsIHgpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1aW50
MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4mJiB2YWx1ZXMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgbWFrZUdDR0xTcGFu
PDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwg
ZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmYoaW5kZXgs
IHgsIHkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgbWFrZUdDR0xTcGFuPDI+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2YoaW5kZXgsIHgs
IHksIHopOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdih1aW50MzJfdCBpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgbWFrZUdDR0xTcGFuPDM+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeiwgZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGYo
aW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1aW50
MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4mJiB2YWx1ZXMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgbWFrZUdDR0xTcGFu
PDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQz
Ml90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJfdCBzdHJpZGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmli
UG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KG5vcm1h
bGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0K
KyAgICB2b2lkIHZpZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmlld3BvcnQoeCwgeSwg
d2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTAodWludDMyX3QgdGFy
Z2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnMSks
IHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMSh1aW50MzJfdCB0YXJnZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhLCB1aW50MzJfdCB1c2FnZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSks
IHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwg
dWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0
PEdDR0xpbnRwdHI+KG9mZnNldCksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGNoYXIsIDQ+
IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDApOworICAgICAgICBtX2NvbnRl
eHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4o
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIHJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+
KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWlu
dDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0
YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlMkQxKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAg
IH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMy
X3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9p
ZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdB
cnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3Vu
dCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJh
eXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0KKyAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1
aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5
cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcih1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2
aXNvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliRGl2aXNvcihpbmRl
eCwgZGl2aXNvcik7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVmVydGV4QXJyYXkoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5
KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVZlcnRleEFy
cmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+aXNWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmluZFZlcnRleEFycmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJE
YXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1aW50NjRfdCBy
ZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJn
ZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dM
aW50cHRyPih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnNCkpOwor
ICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YVNp
emUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgZGF0YSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGJsaXRG
cmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBp
bnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgx
LCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNyY1gxLCBz
cmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQor
ICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxh
eWVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CisgICAgfQorICAgIHZv
aWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkpLCBhdHRhY2htZW50cy5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMyX3Qg
dGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRzLCBpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0YWNobWVudHMuZGF0
YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQor
ICAgIHZvaWQgcmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnJlYWRCdWZmZXIoc3JjKTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHRl
eFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHRleFN0b3JhZ2UzRCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTNEMCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYg
cGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4
ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTNE
MSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJv
cmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1h
Z2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4U3ViSW1h
Z2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29w
eVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
M0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90
IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UzRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRl
ciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9p
ZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VT
aXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBp
bnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBm
b3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50
MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGcmFnRGF0
YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWkoaW50MzJf
dCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm0xdWkobG9jYXRpb24sIHYwKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMnVpKGludDMyX3Qg
bG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMy
X3QgdjIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWkobG9jYXRpb24sIHYw
LCB2MSwgdjIpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwg
dWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYz
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0xdWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2KGxvY2F0
aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEu
ZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM3VpdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZs
b2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgzeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bv
c2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRh
LmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4
NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgy
eDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwg
ZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoaW50MzJf
dCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYg
ZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0
aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihpbnQzMl90IGxvY2F0aW9u
LCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
NGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+JiYgdmFs
dWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBt
YWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFsdWVzLmRh
dGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1aW50MzJfdCB3KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWlu
dDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0
cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQg
ZHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90
IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5k
LCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQor
ICAgIHZvaWQgZHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBidWZz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycyhtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJf
dCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdmFsdWVzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRh
KCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYodWlu
dDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcnVp
dihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBjbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJmaSh1aW50MzJfdCBidWZmZXIsIGlu
dDMyX3QgZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qgc3RlbmNpbCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRo
LCBzdGVuY2lsKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVRdWVyeShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBs
YXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5jcmVhdGVRdWVyeSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUXVlcnkodWludDMyX3QgcXVlcnkpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVF1ZXJ5KHF1ZXJ5KTsKKyAgICB9CisgICAg
dm9pZCBpc1F1ZXJ5KHVpbnQzMl90IHF1ZXJ5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1F1ZXJ5KHF1
ZXJ5KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgcXVlcnkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJlZ2luUXVlcnkodGFyZ2V0
LCBxdWVyeSk7CisgICAgfQorICAgIHZvaWQgZW5kUXVlcnkodWludDMyX3QgdGFyZ2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRRdWVyeSh0YXJnZXQpOworICAgIH0KKyAgICB2b2lk
IGdldFF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aSh1
aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHVpbnQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRRdWVy
eU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTYW1wbGVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmNyZWF0ZVNhbXBsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxl
cikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2FtcGxlcihzYW1wbGVyKTsKKyAg
ICB9CisgICAgdm9pZCBpc1NhbXBsZXIodWludDMyX3Qgc2FtcGxlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xi
b29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+aXNTYW1wbGVyKHNhbXBsZXIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRTYW1wbGVyKHVp
bnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFt
ZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNh
bXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBw
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBmZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMc3luYyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KHJldHVyblZhbHVlKSkpOworICAgIH0KKyAgICB2b2lkIGlzU3luYyh1aW50NjRfdCBhcmcwLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5pc1N5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU3luYyh1
aW50NjRfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTeW5jKHJlaW50
ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkpOworICAg
IH0KKyAgICB2b2lkIGNsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdz
LCB1aW50NjRfdCB0aW1lb3V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2xpZW50V2FpdFN5bmMocmVp
bnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxh
Z3MsIHN0YXRpY19jYXN0PEdDR0x1aW50NjQ+KHRpbWVvdXQpKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHdhaXRTeW5jKHVpbnQ2NF90
IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPndhaXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0
PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHRpbWVvdXQp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTeW5jaShyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKTsKKyAgICB9CisgICAgdm9pZCBp
c1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1RyYW5z
Zm9ybUZlZWRiYWNrKGlkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8
Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJh
Y2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpOworICAgIH0KKyAgICB2b2lkIGJl
Z2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsKKyAg
ICB9CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgdHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiYmIHZhcnlp
bmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwg
aW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFyZzIpKTsK
KyAgICB9CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVzdW1l
VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlcik7Cisg
ICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
aW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBpbmRleCwg
YnVmZmVyLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dM
c2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtSW5kaWNlcyh1aW50
MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiYmIHVuaWZvcm1OYW1lcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8dWludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZv
cm1OYW1lcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jtcyh1aW50MzJfdCBwcm9ncmFtLCBW
ZWN0b3I8dWludDMyX3Q+JiYgdW5pZm9ybUluZGljZXMsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50
MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiB1bmlmb3JtQmxvY2tOYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0x1aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1C
bG9ja0luZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyh1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgdW5p
Zm9ybUJsb2NrQmluZGluZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybUJsb2Nr
QmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyk7
CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBw
YXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xp
bnQsIDQ+IHBhcmFtcyhzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtc1NpemUpLCAwKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1z
LmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGlu
dDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAs
IGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1h
c2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBk
c3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAgICB9CisgICAgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVmVydGV4
QXJyYXlPRVMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNyZWF0
ZVZlcnRleEFycmF5T0VTKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVsZXRlVmVydGV4QXJy
YXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNWZXJ0ZXhBcnJheU9FUyhh
cmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmJpbmRWZXJ0ZXhB
cnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaW5zZXJ0RXZlbnRN
YXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApOworICAgIH0KKyAgICB2b2lkIHB1
c2hHcm91cE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucHVzaEdyb3VwTWFya2VyRVhUKGFyZzApOworICAgIH0KKyAgICB2
b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnBvcEdyb3VwTWFya2VyRVhUKCk7CisgICAgfQorICAgIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBidWZzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0x2b2lkcHRyPihvZmZz
ZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2
aXNvcik7CisgICAgfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFj
L0dQVVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nl
c3NNYWMubW0KaW5kZXggYjdiYjYzYjI5YWQ4MDIxNzJkZjI3YTEyODk1YmIxOTk4ZmE0YjZiMC4u
MjRjNDM3Y2FhZTdmOGY5YTlhZmY5MjcwM2VmY2Y5ZGEwMzFlNGM0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQpAQCAtMzIsOCArMzIsOCBAQAog
I2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiV0tG
b3VuZGF0aW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBv
cnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L0xhdW5jaFNlcnZpY2VzU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJ
Lmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw5ICs0NCwxMiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHZvaWQgR1BVUHJvY2Vzczo6aW5pdGlhbGl6ZVBy
b2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCiB7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgMAogICAg
IC8vIEhhdmluZyBhIHdpbmRvdyBzZXJ2ZXIgY29ubmVjdGlvbiBpbiB0aGlzIHByb2Nlc3Mgd291
bGQgcmVzdWx0IGluIHNwaW4gbG9ncyAoPHJkYXI6Ly9wcm9ibGVtLzEzMjM5MTE5PikuCi0gICAg
T1NTdGF0dXMgZXJyb3IgPSBTZXRBcHBsaWNhdGlvbklzRGFlbW9uKHRydWUpOwotICAgIEFTU0VS
VF9VTlVTRUQoZXJyb3IsIGVycm9yID09IG5vRXJyKTsKKyAgICBhdXRvIHJldHZhbCA9IENHU1Nl
dERlbnlXaW5kb3dTZXJ2ZXJDb25uZWN0aW9ucyh0cnVlKTsKKyAgICBSRUxFQVNFX0FTU0VSVChy
ZXR2YWwgPT0ga0NHRXJyb3JTdWNjZXNzKTsKKyAgICBDR1NTaHV0ZG93blNlcnZlckNvbm5lY3Rp
b25zKCk7CisjZW5kaWYKICNlbmRpZgogCiAgICAgbGF1bmNoU2VydmljZXNDaGVja0luKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQu
R1BVUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCmluZGV4IGRiMDZlNTM0ZjdmNTFkMmViZDAzODI1ZjU4
MjQ1Zjg0OTZmOGIxNzkuLmVkMTAwYjM2ZWQ2ZjQ2ZDRhYWY2MzU0NDc3ODgyYWI3OTNhMTFiY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktp
dC5HUFVQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29t
LmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCkBAIC0yMDcsNiArMjA3LDcgQEAKICAgICAo
aW9raXQtcHJvcGVydHktcmVnZXggIyJeQUFQTCwoRGlzcGxheVBpcGV8T3BlbkNMZGlzYWJsZWR8
SU9HcmFwaGljc19MRVIofF9SZWdUYWdfMXxfUmVnVGFnXzB8X0J1c3lfMil8YWxpYXMtcG9saWN5
fGJvb3QtZGlzcGxheXxkaXNwbGF5LWFsaWFzfG11eC1zd2l0Y2gtc3RhdGV8bmRydi1kZXZ8cHJp
bWFyeS1kaXNwbGF5fHNsb3QtbmFtZSkiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5B
VFksKGNiaXRzfGZiXyhsaW5lYnl0ZXN8b2Zmc2V0fHNpemUpfGludHJldikiKQogICAgIChpb2tp
dC1wcm9wZXJ0eSAiQVRZLERldmljZU5hbWUiKSA7OyBOZWVkZWQgYnkgTWV0YWwgY29tcGlsZXJz
CisgICAgKGlva2l0LXByb3BlcnR5ICJBVFksRUZJRGlzcGxheSIpCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJBVFksRmFtaWx5TmFtZSIpIDs7IERpdHRvCiAgICAgKGlva2l0LXByb3BlcnR5ICJBVkNT
dXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQmFja2xpZ2h0SGFuZGxlIikKQEAgLTIx
Nyw2ICsyMTgsOSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ2Fwc0xvY2tEZWxheSIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJDYXNlU2Vuc2l0aXZlIikKICAgICAoaW9raXQtcHJvcGVydHkgIkNv
bmZpZ1N0YXRlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGFuZXMiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiRFBMaW5rQml0IikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua1JhdGUiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiRGVzY3JpcHRpb24iKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
RGV2ZWxvcG1lbnQiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5EZXZpY2UoIENoYXJh
Y3RlcmlzdGljc3xFcUlEKSIpCkBAIC0yMjksMTAgKzIzMywxNyBAQAogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiRmFtaWx5IElEIikKICAgICAoaW9raXQtcHJvcGVydHkgIkZvcmNlU3VwcG9ydGVkIikK
ICAgICAoaW9raXQtcHJvcGVydHkgIkZvcm1hdHMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRnJh
bWVidWZmZXJFbmFibGVkIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVyU3RhcnRl
ZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJHUFVDb25maWd1cmF0aW9uVmFyaWFibGUiKQorICAg
IChpb2tpdC1wcm9wZXJ0eSAiR1BVRENDRGlzcGxheWFibGUiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiR1BVRGVidWdOdWxsQ2xpZW50TWFzayIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJHcHVEZWJ1
Z1BvbGljeSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVSYXdDb3VudGVyQnVuZGxlTmFtZSIp
CisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVSYXdDb3VudGVyUGx1Z2luQ2xhc3NOYW1lIikKICAg
ICAoaW9raXQtcHJvcGVydHkgIkhFVkNTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
SElEUG9pbnRlckFjY2VsZXJhdGlvblR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiSHdDdHhD
YWNoZVVwZGF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPQWNjZWwoRGlzcGxh
eVBpcGVDYXBhYmlsaXRpZXN8SW5kZXh8VHlwZXN8UmV2aXNpb24pIikKICAgICAoaW9raXQtcHJv
cGVydHktcmVnZXggIyJeSU8oQ2xhc3N8TWF0Y2hDYXRlZ29yeXxOYW1lTWF0Y2gpIikKICAgICAo
aW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9BdWRpb0NvbnRyb2woQ2hhbm5lbElEfElEfFN1YlR5
cGV8VXNhZ2V8VmFsdWUpIikKQEAgLTI4Miw2ICsyOTMsOCBAQAogICAgIChpb2tpdC1wcm9wZXJ0
eSAiSU9QYXJlbnRNYXRjaCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPUENJKChD
bGFzc3xQcmltYXJ5fFByb3BlcnR5fClNYXRjaHxFeHByZXNzKENhcGFiaWxpdGllc3xMaW5rKFN0
YXR1c3xDYXBhYmlsaXRpZXMpKXxNU0lNb2RlfFJlc291cmNlZHxUdW5uZWxsZWQpIikKICAgICAo
aW9raXQtcHJvcGVydHkgIklPUE1Jc1Bvd2VyTWFuYWdlZCIpCisgICAgKGlva2l0LXByb3BlcnR5
ICJJT1BlcnNvbmFsaXR5UHVibGlzaGVyIikKKwogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAj
Il5JT1BsYXRmb3JtKFNlcmlhbE51bWJlcnxVVUlEKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJ
T1Bvd2VyTWFuYWdlbWVudCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1Byb2JlU2NvcmUiKQpA
QCAtMzE3LDYgKzMzMCw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJQcm90b2NvbCBDaGFyYWN0
ZXJpc3RpY3MiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiUmVtb3ZhYmxlIikKICAgICAoaW9raXQt
cHJvcGVydHktcmVnZXggIyJeUmVzZXRPbihMb2NrfFVubG9jaylNcyIpCisgICAgKGlva2l0LXBy
b3BlcnR5ICJTV0lQX3Byb3BlcnRpZXMiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2FmZUVqZWN0
UmVxdWVzdGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhbXBsZVJhdGVzIikKICAgICAoaW9r
aXQtcHJvcGVydHkgIlNlcmlhbCBOdW1iZXIiKQpAQCAtMzM4LDYgKzM1Miw3IEBACiAgICAgKGlv
a2l0LXByb3BlcnR5ICJhdHRhY2hlZC1ncHUtY29udHJvbC1wYXRoIikKICAgICAoaW9raXQtcHJv
cGVydHktcmVnZXggIyJeYXVkaW8tKGNvZGVjLWluZm98ZGV2aWNlLW12YWx1ZXxkZXZpY2UtbnZh
bHVlfHNlbGVjdG9yKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJhdi1zaWduYWwtdHlwZSIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJiYWNrbGlnaHQtUFdNLWZyZXEiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiYmNkVmVyc2lvbiIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXihib2FyZHxk
ZXZpY2V8cmV2aXNpb258c3Vic3lzdGVtfHZlbmRvciktaWQiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiYm9vdC1nYW1tYS1yZXN0b3JlZCIpCkBAIC0zNTAsNiArMzY1LDExIEBACiAgICAgKGlva2l0
LXByb3BlcnR5ICJjb25uZWN0b3ItdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMi
XihkZXZpY2V8cmV2aXNpb258c3Vic3lzdGVtLXZlbmRvcnx0b3VjaC1zaXplKS1pZCIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJkZXZpY2VfdHlwZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNw
bGF5LWJwYyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWNvbm5lY3QtZmxhZ3MiKQor
ICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1saW5rLWNvbXBvbmVudC1iaXRzIikKKyAgICAo
aW9raXQtcHJvcGVydHkgImRpc3BsYXktcGl4ZWwtY29tcG9uZW50LWJpdHMiKQorICAgIChpb2tp
dC1wcm9wZXJ0eSAiZGlzcGxheS10eXBlIikKICAgICAoaW9raXQtcHJvcGVydHkgImRwbSIpCiAg
ICAgKGlva2l0LXByb3BlcnR5ICJlcnJvcmRiIikgOzsgTmVlZGVkIGZvciBPcGVuR0wgb24gb2xk
ZXIgaGFyZHdhcmUKICAgICAoaW9raXQtcHJvcGVydHkgImZpbGV2YXVsdC1pbWFnZSIpIDs7IE5l
ZWRlZCBieSBMYXVuY2hTZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTliZGI4Njdh
Yjg2YjhjNTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVkNjZkZGY5
NWYyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMZWdhY3lD
RE1Qcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcwZmE1ZGU0
ZmFkZTE1MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4Yjgy
NWM2ZTQ1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4MDIzMTkwNGY4ZWYwZWFhOTM2
MjI5YWZhOTc1OTguLmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4OWI4MDNmNmFiZjQxYzhlOWVk
ZGU0MTQyNzY5MzI4MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1YWEzZDU0ODA2ZjcyYzdlZGMw
Y2IxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywxNSArMjcsMTYgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDZiZmJmYWZiMjA0NDc4MzBkNzMwYzM4YzU1ZDkxNjAy
MmMyM2QzMTYuLjA2ZTMwOWU0ZDU3ZWEwNDdmNWVkODI5MDI1OGIxOWNiY2RhNjE5MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291
cmNlUHJveHkuaApAQCAtMzgsNyArMzgsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IDI0NWNmNDBkZmM2ZmM3MjQx
NzQ5OWM5OTZlZWE5NWYwYTNhOGQ2OWEuLjg2ODJjZDc5NWE1ZjU0NGFiYjc4ZTdjMWI4NTg3Yjk2
ODgzZjk0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
U291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmgKaW5kZXggMzkwYzBjZTFjMjdiNjA4ZGM5N2FhZmE1MTg2MzYxODgwYzNh
ZjRkMy4uYzMzNzgzMzNjMDI2NjZkYTYxYWJhYzY0OTQ3MDIxMjFkYjVlODZjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIKKwogI2lu
Y2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTM4
LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERl
Y29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5LmgKaW5kZXggMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYxODNhYmQwZTc0NWI4MzUzMy4u
ODQzYmIwNmY3YjU2YzZlM2NmYmVlNzlhN2U0MjgxZWZlZThmOWE3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaApA
QCAtMjgsMTQgKzI4LDE1IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmOGFiYzFmNDA1ZmMxNDY5NDc1YjRkOTBi
YWQzZDUzY2EwZjgwMTRlLi42MWM0NzA4YWU5NmRiY2FhNTY5ODA5ZWUxOTk1YmU4MTZhOTFmZjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMp
ICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbXBvcnQgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bXBvcnQgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2Rl
Y3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDc4OGM1ZjAwYzAyZjRmMTQ4ZmVlY2Nk
MzhkMTA2ODE4YjBkN2U5NjEuLjNhYjRlNGIxY2YxYzE0MTIzMGMxM2U0NTc2YzVlZDZlNmVmYzJl
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFW
QVNTRVRXUklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtMzYsNyArMzcsNiBAQAogCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xh
c3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQppbmRleCA3YTYzMzYzNDdjMDA3ZTk3
YjczYjU0Mzc3NDkxNjgzOGQ2NDAzN2RhLi4xYWE1M2NjMmZiNzdiYWY5ZTMyNjUwNzIxMDgwOWZk
NzZjZmJiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKIAot
I2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW1wb3J0IDxG
b3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBmNmVkODExZjUzNDJmZTQ4NTU1MTc2Zjg5ZDUxNDU3
NTYyYzY2NTg1Li4wYmNkNTY3M2M5MzQ2YWRhMTFkNjU2YzNhZGQ1MWJlNGVkYmMyNzMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtMjUs
NiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCkBAIC0zOSwx
MCArNDAsNiBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb247CiBPQkpDX0NM
QVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwotfSAvLyBuYW1lc3BhY2UgSVBDCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC0xMTIsNCAr
MTA5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5k
ZXggZGRiZTRlZWRkNDQxZGY4N2M1NWFkMzMwZjA0MmNjZGNmYWRmYjkwYi4uNjUxZmYyNTRmOTA1
YzE2YTkwY2I0ODJjOTc3M2Q0YWM3NDI5NGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtMjksNyArMjksNiBAQAog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdl
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmgKaW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlmZGVjMzY5MDE3NzI3NC4uOTNm
MDNhODI1NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJEb3dubG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBAIE9CSkNfQ0xBU1MgTlNQcm9n
cmVzczsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCiAKLW5h
bWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0MGYyN2MxNjA1YzNjZDc0
YmM2OTA3YjdkOTFiNDdiNzYyLi43MjZkZDk5MGJhZmQ0Mzk0YjVhZmMwMzJhMWNmMjBmMTg0OWM0
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1MC4uOTgw
YTA2Zjc4MzlkYmQ1ZTlmOWQ1MDQ1NDA5YTMzZDc3YjFjMDM4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFwLmgi
CiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRl
eCA0NDliMTNkOGUwN2IyY2QwNDJjNGJhMzYzNmFiNzkzZDM3YjFjM2Y0Li5jNzc4ODgxMWYwMzJk
NThmOGI1Mjc3MzZlMWQyMjc4NDEwZjkxM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgi
CiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtTZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMzE5NjQxOTBkMTQxZDU0OWRhMGJhZjJkYzhi
ZjI5N2I0ZTU4MWU4OS4uMDQzNGJmODgwOWE3ZWIzZWNjMThlOGY2NTBjYzAyNzhhZTZlYjUxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgpAQCAtNDAsNyArNDEs
NiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA1YjQ4OWNjNTM4ZjdjMDcxNTEwMTA2YzU4ZjVjMDk0
ZWM5YThlMWI4Li40OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2NjMzNlMzhjMTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXRTdHJlYW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNTJlYzM5MjY5MDIxOGVkZTY2OGQ1NWU2MzhkOGUxNzUw
MmZkNmVlNS4uNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5ZmIyMDZmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtRXJyb3IuaD4KQEAgLTM3LDcg
KzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29k
ZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2NiZmYxMDg5Y2MxMDVkZDFh
MDBiZWJmZGY2MWQzM2M3ZjY2YmQuLmQzN2Q3ODA2OTgzYmJhNTQ3Y2EwZjkyMzVlYjRiZjZiNzMx
NTY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CkBAIC00Myw3ICs0NCw2IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IGRi
NTc5NWRkMjE3ZjQ1YWQ1ZjY3ZTMwYjc5MWY5MmUyNzZjMDI5ODYuLjk2MWU0NjQ1OWJlNzcxNzdl
MjYwNWU3ZDg2NTJhZGE4MDIwOTdiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU29ja2V0VGFzay5oCkBAIC0zMSw5ICszMSw2IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0
VGFza1NvdXAuaCIKICNlbHNlCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKLX0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCmluZGV4IGRhYzY5MzUw
N2ViM2VmY2VhNmQxMDk0ODAxYmMwMWIzNmZlMjYzOWQuLmU2ODI2ZTQ3ZTgzOTU5NDAyOGFmOGY0
YWVkMjM5MmI0YjA1ZDJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtMjcsMTUgKzI3LDEyIEBACiAK
ICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzazsKIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EubW0KaW5kZXggODU1MzQ4NzQ0MDRjZTJiYWE0NGFlNjU2NTQ3ZDM3MjI1MzMyZWFiOC4uOTBi
YzQwOWJmZmI3MGEwZWU5ZTczNThiMzg2NzU5N2QyOWYyNGUwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0K
QEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKIAot
I2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5o
IgogI2ltcG9ydCAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24v
TlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0NWZjNjY5ZDc2NmE3NjFjNWQ3NzNk
Yzk1ZjA1NDFhMzhlMzZmOGUzLi5hM2U3MDE0YjVkOGVjMDk3MzhmZmE3ZDU2NjQ1NDUwMTBmMDUz
NDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29j
a2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nv
Y2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5o
CmluZGV4IGU0MjFiOWUxYzcxMzE4NDM0ZjY0ODdmNWZjYjVhNmE4N2JkNzM5MTkuLjA4ODkyMzk1
OWZlNDYwZmYyYmJhNGM4YzA4Mzk5ODA2NTdiZjM0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCkBAIC0yNSwxNCAr
MjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hh
bm5lbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggZTAwYTBjY2RmYTU4NzVjMDI4YzUwNTIzMTE0MTcyOGVlOTViNDM5Mi4uZTM4YmMxYzYwYWY2
ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01Myw2ICs1NCw0OCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1lbnRDb2RlciB7CiAgICAgfQog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5UmVmZXJl
bmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZl
cmVuY2UpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVuY2Uuc2l6
ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9CisgICAgc3RhdGljIE9wdGlvbmFs
PEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAg
ICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUo
KTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICAgICAgaWYg
KCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRhKSwgRXh0
ZW50KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7Cisg
ICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZl
cmVuY2VEeW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAgICB7Cisg
ICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJlZmVyZW5j
ZS5zaXplKCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXplKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5
UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQorICAgIHN0
YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlm
ICghc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUoKTsKKyAgICAg
ICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVu
Y2Uoc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0YSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVy
ZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIHN0YXRpY19jYXN0PHNp
emVfdD4oc2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBB
cmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNldCkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDMy
YmI0NTdhNWI4ODVmM2Q1NjY4N2U3OWYxNWMzYTI2NzFiZTY0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApAQCAtMCwwICsxLDEy
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bGltaXRzPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2lubGluZSBjb25zdGV4
cHIgc2l6ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50
ID0gYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVuY2U7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZl
cmVuY2VEeW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRl
ZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkK
KyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBBcnJheVJl
ZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCisgICAgICAg
IDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwgbV9zaXplKHZlY3Rvci5zaXplKCkp
CisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3Np
emU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAg
Y29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQor
CisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8VD4g
cmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9zaXplKTsKKworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBtX2RhdGEg
eyB9OworICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgQXJy
YXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KKworICAgIHRlbXBs
YXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2ZWN0b3Iu
ZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5zaXplKCkgPT0gRXh0ZW50KTsK
KyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIUV4
dGVudDsgfQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gRXh0
ZW50OyB9CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChp
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1f
ZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7IH07Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitBcnJheVJlZmVyZW5jZShj
b25zdCBXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBBcnJheVJlZmVyZW5jZTxU
PjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgKaW5kZXggZWMzZDE0YWU4ZjNlYzI0NzA1NDc2M2NhZWU5MDljYzJjODc1ZjVkOC4uYmJk
N2FiY2I0Y2RjNjA0MzgyYjEwNjVlMzMyMzg0NDljNmFjNTk3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjI3LDEwICsyMjcsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7CiAKICAgICB2
b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKTsKLQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQgPSAwLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOyAvLyBUaHJlYWQtc2FmZS4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7IC8v
IFRocmVhZC1zYWZlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4K
KyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGNoZWNrIHRoZSBTZW5kU3luY1Jlc3VsdCBmb3Ig
dHJ1ZS9mYWxzZSBpbiBjYXNlIHRoZXkgbmVlZCB0byBrbm93IGlmIHRoZSByZXN1bHQgd2FzIHJl
YWxseSByZWNlaXZlZC4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGhvbGQgb24gdG8gdGhl
IFNlbmRTeW5jUmVzdWx0IGluIGNhc2UgdGhleSByZWZlcmVuY2UgdGhlIGNvbnRlbnRzIG9mIHRo
ZSByZXBseSB2aWEgRGF0YVJlZmVyZXJlbmNlIC8gQXJyYXlSZWZlcmVuY2UuCisgICAgdXNpbmcg
U2VuZFN5bmNSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj47CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRG
b3JPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICAKICAgICAvLyBUaHJl
YWQtc2FmZS4KQEAgLTI0OSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYWluIHRocmVh
ZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgYm9vbCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRl
bnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZp
bml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkK
KyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3luYzxUPihX
VEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTU1MSw3ICs1NTMsNyBAQCB2
b2lkIG1vdmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYgYSwgc3RkOjp0dXBsZTxCLi4uPiYgYikK
ICAgICBUdXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3RkOjp0dXBsZTxBLi4uPiwgc3RkOjp0dXBs
ZTxCLi4uPj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9u
U2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cykKIHsKICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQp
OwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU3MCwxNSArNTcy
LDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICAvLyBOb3cgc2VuZCB0aGUgbWVzc2Fn
ZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVw
bHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUoZW5jb2Rl
ciksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgaWYgKCFyZXBseURlY29kZXIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8vIERlY29k
ZSB0aGUgcmVwbHkuCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJl
cGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7CiAgICAg
aWYgKCFyZXBseUFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4geyB9OwogICAgIG1vdmVUdXBsZShXVEZNb3ZlKCpyZXBseUFyZ3VtZW50cyksIHJlcGx5KTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gcmVwbHlEZWNvZGVyOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdh
aXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EYXRhUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI1ZmRh
N2JlZDJmZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotCi0jaW5j
bHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLQotbmFtZXNwYWNlIElQQyB7
Ci0KLXZvaWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17
Ci0gICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheSgqdGhpcyk7Ci19Ci0K
LWJvb2wgRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERhdGFSZWZlcmVu
Y2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCmluZGV4IDM0NTBjMzFi
NzNkZGI2YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNkNjkyN2YzNDFjNWFhOTNmYzEw
NzNjYjA3NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVm
ZXJlbmNlLmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgogCiBuYW1lc3BhY2Ug
SVBDIHsKIAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0gICAgCi1jbGFzcyBEYXRh
UmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotCi0g
ICAgRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKLSAgICAg
ICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIERhdGFSZWZlcmVuY2Uo
Y29uc3QgVmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQotICAgICAgICA6
IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6ZSgpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXpl
OyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIGNv
bnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAgICAgICBpZiAoaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2RhdGE7IAot
ICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEs
IG1fc2l6ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1wcml2YXRlOgotICAgIGNvbnN0
IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3QgbV9zaXplIHsgMCB9Owot
fTsKK3VzaW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5jZTx1aW50OF90LCBhcnJheVJl
ZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGViNzMwNWJmZDE5MTA4NzA2OGQz
MGJjZGI4ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJjNWFiOGJiYWRiZGM1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAgLTE4NiwyMCArMTg2LDE1
IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
RGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYgZGF0
YVJlZmVyZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoUmVm
ZXJlbmNlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQogewotICAgIHVpbnQ2NF90IHNp
emU7Ci0gICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
LSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxpZ25tZW50LCBzaXplKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gbV9idWZm
ZXJQb3M7CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAgIGRhdGFSZWZlcmVuY2UgPSBE
YXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBk
YXRhOwogfQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1lbnQoQXR0YWNobWVudCYgYXR0
YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCBiNzJkZDhhY2Uy
NzczZGIzNTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4ODJmYzkwOTg0YjJmYTU3YmY5
YzQ4Yjk2NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC00
MCw3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
Y2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWlu
dDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6
IHVpbnQ4X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QsIHNp
emVfdCBhbGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhlIGRhdGEgcmVmZXJlbmNl
IGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50
RGVjb2RlciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVmFyaWFi
bGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAgIC8vIFRoZSBkYXRhIGluIHRo
ZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRp
bWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8gUmV0dXJucyBudWxscHRy
IG9uIGZhaWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0IHVpbnQ4X3QqIGRlY29k
ZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxU
Pjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KFQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRleCBmZDQw
OTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5lODNhM2U0YWZmNDJhNTc1NTA1
ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVu
Y29kZXIuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KQEAgLTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6OndyYXBGb3JUZXN0aW5nKHN0ZDo6
dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9yaWdpbmFsLT5zZXRTaG91bGRE
aXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShTaG91bGREaXNwYXRjaFdoZW5X
YWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRl
QXJyYXkoRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJT
aXplKCkpKTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9yaWdpbmFsLT5idWZmZXIoKSwg
b3JpZ2luYWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNo
bWVudHMgPSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgcmVzZXJ2ZShhdHRh
Y2htZW50cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2b2lkIEVuY29kZXI6OmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90
IGFsaQogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVuY29kZXI6
OmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZlcmVuY2UmIGRhdGFS
ZWZlcmVuY2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihkYXRhUmVmZXJl
bmNlLnNpemUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhUmVmZXJlbmNlLmRh
dGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2b2lkIEVuY29kZXI6OmFkZEF0
dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAgICAgbV9hdHRhY2htZW50cy5h
cHBlbmQoV1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmgKaW5kZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYyNDgyZTRjOWExMS4uZWE2MTk2
N2JlMWViY2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0VuY29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhfdDsKIGVu
dW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0
Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC02Miw3ICs2MSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7
CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5jb2RlVmFyaWFibGVMZW5ndGhC
eXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2Nv
bnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJp
dGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5j
ZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQgZW5jb2RlKFQmJiB0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDdmZDE4M2E1NmFl
OThiMDY2NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUyYjQ5ZDVjOGZjNDFhMmQ2NTRh
ZGNkODllODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC05
Niw3ICs5Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0ZDo6cmVtb3Zl
X2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9OwogCi1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIHRlbXBsYXRl
PD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSY+IHsK
ICAgICB1c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCA0NmUyMWQ4ZDkzNmYyZDhiNTE2N2IyNDlmODgxMTE2
ZmZlYjdkNGI5Li43NzQ2MWQ1NTViNzI5MmMyMGViZjUxNGEzMDJkMWRjNmU3NzcwMTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC01NCw5ICs1NCwx
MCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZDxVPihtZXNzYWdlLCBkZXN0
aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKICAgICB9CisgICAgdXNpbmcgU2Vu
ZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6
UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5
bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHks
IFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgc3RhdGljX2Fz
c2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOwogCkBAIC02NCw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wg
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZp
bml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpKTsKIApAQCAt
NzIsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwg
dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpS
ZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFUmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRl
c3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlv
blNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RGTW92ZShy
ZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25z
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwCmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFiODYzOWI3YmE3NjM2YzYuLjUw
MGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogCisj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKQEAgLTQ4LDcgKzQ5LDcg
QEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhKSkKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuY3BwCmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUzMjhmMDFjOTk5OTUwYTAuLmU5
NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXggODUyZWY0M2UwMDg2MzFjOWZh
ZmE4MjMwYzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBlYWZiM2RjNDdjODVkYTQxOTBh
MmJhMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVm
ZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVu
Y2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U3RyaW5nUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5j
b2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcAppbmRleCA4YjM3NDBmNGIxMDFhZDkwZjUwZWQ1N2M4NTBiOTAzMGZj
YzQzMGMyLi40YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTlBPYmplY3RQcm94eS5o
IgogI2luY2x1ZGUgIk5QUmVtb3RlT2JqZWN0TWFwLmgiCiAjaW5jbHVkZSAiTlBSdW50aW1lVXRp
bGl0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmgKaW5kZXggYWQ0ZmNkOWQ4Y2NmNDJmMTJlZTQ4OGUwMTM0NmM2MTlhNzAx
YjhkMi4uYzdhNzA1M2NiZDI2ZDIwNDU0YzA0MmM2YWNlMTZjYjUyNTMwZjQzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotICAg
IGNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBM
YXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggNTczZWQzZDhlZTliYmY0MTAzMTY4ZTc5YTA1N2Y5ZGJkYjliODY5NS4uNjczMjQ0
YTY3ZTA5OWZmYjcxODA3ZDU1NTBjNDU0ZjM2MzFkYjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDMsNiArMjAzLDcgQEAgZGVmIGZvcndhcmRfZGVj
bGFyYXRpb25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5kX2FuZF90eXBlcyk6CiAKIGRl
ZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJuIGZy
b3plbnNldChbCisgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnTWFjaFNl
bmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKQEAgLTIx
NCw2ICsyMTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgp
OgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMn
LAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDMsNiArMjQ1LDcgQEAg
ZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpE
b3dubG9hZElEJywKICAgICAgICAgJ1dlYktpdDo6R2VvbG9jYXRpb25JZGVudGlmaWVyJywKKyAg
ICAgICAgJ1dlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJ
RCcsCkBAIC01MzAsNiArNTMzLDcgQEAgZGVmIGNsYXNzX3RlbXBsYXRlX2hlYWRlcnModGVtcGxh
dGVfc3RyaW5nKToKICAgICAgICAgJ09wdGlvblNldCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9PcHRp
b25TZXQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5o
IiddfSwKICAgICAgICAgJ1ZlY3Rvcic6IHsnaGVhZGVycyc6IFsnPHd0Zi9WZWN0b3IuaD4nXSwg
J2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAg
ICAgJ3N0ZDo6cGFpcic6IHsnaGVhZGVycyc6IFsnPHV0aWxpdHk+J10sICdhcmd1bWVudF9jb2Rl
cl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdJUEM6OkFycmF5
UmVmZXJlbmNlJzogeydoZWFkZXJzJzogWyciQXJyYXlSZWZlcmVuY2UuaCInXSwgJ2FyZ3VtZW50
X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICB9CiAKICAgICBt
YXRjaCA9IHJlLm1hdGNoKCcoP1A8dGVtcGxhdGVfbmFtZT4uKz8pPCg/UDxwYXJhbWV0ZXJfc3Ry
aW5nPi4rKT4nLCB0ZW1wbGF0ZV9zdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5j
cHAKaW5kZXggNjEzNDNiZDk0MTA2YjZlNzg5ZjgzYmMyNWRlNzlmN2E2MDQwOTNjYy4uYzc4MjMx
NmYzMDU3YTNjYWY5ZDNlMjA3N2M4MTMyNTUzZTY5NzU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElEYXRhLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkFQSURhdGEuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV4aWxpYXJ5UHJvY2Vzcy5oCmluZGV4IDdiYTIwN2FiYjBhY2NjOGE1NzBmNWM2NjNmNDZjYWEy
NGE4MjZkOTEuLjMxZmQ3ZDAzZmFmZTAzOTU4Nzk1MmE2Mzc4ZDFhOWM4ZmYyZjc5MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc0RhZW1vbigpOwogICAg
IHZvaWQgbGF1bmNoU2VydmljZXNDaGVja0luKCk7CiAgICAgdm9pZCBzZXRRT1MoaW50IGxhdGVu
Y3lRT1MsIGludCB0aHJvdWdocHV0UU9TKTsKICNlbmRpZgpAQCAtMTg0LDQgKzE4MywzIEBAIHN0
cnVjdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAppbmRleCA5YzI2ZGI0ZTlhOWY2YmE3MmU0ODIwYmI0MDZjMmNmYmRl
MTEzZTliLi5kYTM3MzRjODRkNjU0ZDhkMDNjYTc5MjVmN2JkNzU5OTEzYmMzNGFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMyMjEs
NCArMzIyMSw4MiBAQCBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj4gQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OgogICAgIHJldHVybiB7IFdURk1v
dmUoKnJlc3VsdCkgfTsKIH0KIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLmFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXB0aDsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMuc3RlbmNpbDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYW50aWFs
aWFzOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGE7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRl
cy5zaGFyZVJlc291cmNlczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaXNXZWJHTDI7Cisg
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9uczsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaW5p
dGlhbFBvd2VyUHJlZmVyZW5jZTsKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgZW5jb2RlciA8PCBh
dHRyaWJ1dGVzLnhyQ29tcGF0aWJsZTsKKyNlbmRpZgorfQorCitPcHRpb25hbDxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLmFscGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGVwdGgpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zdGVu
Y2lsKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJm
b3JtYW5jZUNhdmVhdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnNoYXJl
UmVzb3VyY2VzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaXNXZWJHTDIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5ub0V4dGVuc2lvbnMpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0
cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5j
ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQlhSKQorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy54ckNvbXBhdGlibGUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7Cit9CisK
K3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
bz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyYgYWN0aXZlSW5mbykKK3sKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUlu
Zm8ubmFtZTsKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8udHlwZTsKKyAgICBlbmNvZGVyIDw8
IGFjdGl2ZUluZm8uc2l6ZTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhY3RpdmVJbmZvOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYWN0aXZlSW5mby5uYW1lKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8udHlwZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnNpemUp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBhY3RpdmVJbmZvOwor
fQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDRhOTMyMTU5MTMwY2I3YmNkZTU1ZTIxMWUx
N2M0YmVkZWYxNzA1ZDYuLjFkYWU5Njk1ZjMzYzA5ZGNkN2M1ODAzNjA4ZTJkNmFjMTZlOWZjNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC03
MSw2ICs3MSwxMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkFycmF5
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc1R5cGVzR0wuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC0yMDMsNiArMjEwLDEw
IEBAIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CiB1c2luZyBJREJLZXlQYXRoID0g
VmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCitzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzOworI2VuZGlmCisKIG5hbWVzcGFjZSBET01DYWNoZUVuZ2luZSB7CiBzdHJ1Y3QgQ2Fj
aGVJbmZvOwogc3RydWN0IFJlY29yZDsKQEAgLTg3Myw2ICs4ODQsMTkgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uPiB7CiB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYp
OworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbz4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBD
CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTA0MSw0ICsxMDY1LDE2IEBAIHRlbXBsYXRlIDw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzPiB7CiAKICNl
bmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK3RlbXBs
YXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQ
cmVmZXJlbmNlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UsCisgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQsCisgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyLAorICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UKKyAgICA+OworfTsK
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggY2YxMzFhOTIxZTA4NjM2NWRi
Zjc3ZmE5OGU0MWMxYzc0YTNlN2UyNS4uYWRkOTQ5YmE1MDhkOGU4MTQwODdmZWRlN2IwNDhhM2Rl
YzZjZjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTE1OCw2ICsxNTgsOSBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBzaG91
bGRSZW5kZXJET01JbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBzaG91bGRQbGF5TWVkaWFJ
bkdQVVByb2Nlc3M7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGVuY29kZXIgPDwgc2hvdWxkUmVu
ZGVyV2ViR0xJbkdQVVByb2Nlc3M7CisjZW5kaWYKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJs
ZVZQOURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXI7CiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTEwLDYgKzUxMywxMCBAQCBPcHRpb25h
bDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNo
b3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5z
aG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRF
bmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBkOTFl
NDYwMzhmMzA5YjUxMzBiZmRlNThkZmY0YTlmMTgxOTUxZGZkLi5jMjA2MTIzMTE0MzViZjRmOTJj
ZjA2ZmU1ZTExMjA1YTRiNTExMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMjksNiArMjI5LDkgQEAgc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQ
cm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9
OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9j
ZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciB7
IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIgeyBmYWxzZSB9Owog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggOWJkOGE4MTc1NDlmNThmZTM4M2Q3MjVkYTY2M2Yz
YmM1NGNhMGQ3NC4uNzdlOWI0ZDVjYzc1MmZiY2RiNmI2NWY5YWRjMjYwMTk1NmNhMTQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NG
LmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAKaW5kZXggMWQ4NGUyZmUyNjhmMzQ2MGViMjk3NWM0MmJhOTVkMTRmMWQyMzVjZi4uZmEy
NjhkNTg0YTBmYzhkZjg3YTIxZmE0NTYwNzdiOGM1ZDQyYjg1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2VydGlmaWNhdGVJCiAgICAgLy8gRW5jb2RlIHN0
YXJ0aW5nIGZyb20gdGhlIHJvb3QgY2VydGlmaWNhdGUuCiAgICAgZm9yIChzaXplX3QgaSA9IGNl
cnRpZmljYXRlc0RhdGFMaXN0LnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBHQnl0ZUFy
cmF5KiBjZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0W2kgLSAxXS5nZXQoKTsKLSAg
ICAgICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShJUEM6OkRhdGFSZWZl
cmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pKTsKKyAgICAgICAgZW5j
b2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRl
LT5sZW4pOwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNl
cnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBBcmd1
bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDZXJ0
aWZpY2F0ZUluZm8mIGMKICAgICBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGU7
CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNoYWluTGVuZ3RoOyBpKyspIHsKICAgICAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZTsKLSAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNlcnRpZmljYXRlRGF0
YVJlZmVyZW5jZSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVEYXRh
UmVmZXJlbmNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBHQnl0ZUFy
cmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJyYXlfc2l6ZWRfbmV3KGNlcnRpZmljYXRl
RGF0YVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjc3LDQgKzI3NywzIEBAIE9wdGlvbmFsPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1CiAjZW5kaWYKIAogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwOTE3ZjAxYmUxYzlmOGNh
YTJhYmY3ZjBmODkwZjg5NWEzZjJlZjg2Li41MGNkZTEyYWZhM2FhN2Y3OGMyNzllYzhmYjgxOTc0
NGI2ZmIxZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eU1hbmFnZXIuY3BwCkBAIC0xMzcsNyArMTM4LDYgQEAgUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgQG5vLXVu
aWZ5CiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5Ci1QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAg
QG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9J
UEMvRW5jb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcCBA
bm8tdW5pZnkKQEAgLTY5MywzICs2OTMsNSBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKworUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggOTk1MTgwNzMyODBlOWM5NWEyYjI1ZjAwYmM4YmZiMzg4NzYyMTI0MS4uMTNmYTcxNWU3OTZm
Yzg1OTIzMTRiM2ZlN2YwZDRlYTlhZWQ4OTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
NjMsNiArNjMsNyBAQCBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQogCisK
IFBsYXRmb3JtL2NmL01vZHVsZUNGLmNwcAogCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwCkBAIC01NzMsNiArNTc0LDgg
QEAgV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KIFdlYlByb2Nlc3MvRW50cnlQ
b2ludC9Db2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQogCiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29h
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCkBAIC02ODUsNiArNjg4LDcgQEAgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4IDJmZTM4
NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QuLjczN2I2MjU4MTk4NjZhMGVjYjU5
OWEyMTMwYjMyOTEzZWFmMzk2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBBUEkg
ewogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDRmMzk4YjUzMGY2MDg1NzVjOTY3Yjgz
Yzc0ZmEyZjQzMjhmNmNlM2IuLjhjYTk3ZTZlNTk3YmQ3MTEwYTBkNzM4ZTBjNGE3Yzg1NjAzYThh
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5oCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFByb2Nlc3NUaHJvdHRs
ZXImIHRocm90dGxlcigpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2Vu
ZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2Vu
ZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CisgICAgdXNpbmcgU2VuZFN5bmNSZXN1
bHQgPSBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9w
dGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwogCiAg
ICAgZW51bSBjbGFzcyBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4gdm9pZCBz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmLCBDJiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwLCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiA9IHsgfSwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0
bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsK
QEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNz
YWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5k
U3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50
b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTE2MywxMiAr
MTY0LDEyIEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IAotYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0
eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRz
IHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMp
CitBdXhpbGlhcnlQcm9jZXNzUHJveHk6OlNlbmRTeW5jUmVzdWx0IEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PElQQzo6U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVChVOjpp
c1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFRyYWNlU2Nv
cGUgc2NvcGUoU3luY01lc3NhZ2VTdGFydCwgU3luY01lc3NhZ2VFbmQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVT
T0F1dGhvcml6YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5kZXggODIz
YzIwMmE4NTZhMDEzNmRkOWVhNzU5ZjBlY2RlYmE0N2Y0ZjM2Mi4uYjU3N2NiZGY4ZTA3OGY0ZmI0
Zjg3MzRkN2JmZDYwOGQyMDM4ODA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24gZmluYWwgOiBwdWJs
aWMgTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24sIHB1YmxpYyBGcmFtZUxvYWRTdGF0
ZTo6T2JzZXJ2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5LmgKaW5kZXggZmY5OGI4NGZhODlkYmVmZGQ2NDY2NmJiYmE0
MmZjOTBjZWMzNTc3Zi4uMTI4YTM5NzdlNjNlZTRmNGVmMWYyMGVhYWVjODZkMDhlY2JmNThkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpA
QCAtMzUsMTAgKzM2LDYgQEAKIE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbExvYWRlcjsKICNl
bmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzRjNzE4NzRhMTBkYTli
NTQxZmVlMjgyMDgwOGMxZTUwZDNmYTkyYi4uOWRiM2E1MDliOTE0YzA5M2NhZjE2OWEwNWQ2NWI1
N2VkMGM4MDEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCkBAIC04MCwxMCAr
ODEsNiBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggMjRiNjMzZTQ4NGQyYTM1YmE3NGQ0NWYx
MmVkZTM0YTBmNzhjYTBhNi4uMjQ4ZTUzYTA4M2QxOWEwZWY0ZDgzYzIzYjhjY2UwMDM0NWRhYWIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgotI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRl
bHkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmgKaW5kZXggMTI5YTM0MGYwODk2NGQwZmZhMjNhMzcxMDFhMDlhODU2ZDNj
Y2NiMi4uYTRkOGQ3Y2Q4MDRlNjU2MGRhYmZkZTYxMTRmZjA2MjExYmFkNDdjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb250ZW50V29ybGRTaGFyZWQuaCIKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTQ4LDEwICs0OSw2IEBAIGNsYXNzIFVzZXJTY3JpcHQ7
CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
NmVkMWM2OWMwOGZjNTU5ZmUyYTNmM2I5Mzk1MGVhODI4ZDYwZDRiZi4uY2VjNzNkMTNkMDk4ZDcx
MzE4NDhhZmI1OTNlZjA3MjQxMDIxOGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC01OCw3ICs1OCw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC03OTI3LDYgKzc5MjYs
MTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckNhbnZh
c1JlbmRlcmluZ0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRPTUluR1BV
UHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJs
ZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyA9IHByZWZl
cmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpOworI2lmIEVOQUJMRShXRUJH
TCkKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzID0gcHJlZmVy
ZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCk7CisjZW5kaWYKKwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2Rl
ckVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkKICAgICBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2Rl
ckVuYWJsZWQoKSAmJiAoIVdlYkNvcmU6OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVmZXJlbmNl
cygpLnZwOVNXRGVjb2RlckVuYWJsZWRPbkJhdHRlcnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDY0MjQ0NmY5ZTlhYTRiNTIxMTE0OTAzYjZmMGI1ZjcxMWY5
MWIyZTUuLjQzN2FiNzUwYjM1YWIxNjNiMmE1ODBhZTg2NzJlZDQ2MDE2NDc0MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRG
cmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmFn
Q29udHJvbGxlckFjdGlvbi5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMjAzLDcg
KzIwNCw2IEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7CiB9CiAK
IG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBj
bGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKaW5kZXggZjQyNDVjZTY1
ZTlkMmQ1NjViM2YxMjVmMzQ1N2EyNTZmYjM5YzlkNC4uZDIzOGMyYTFhNjA4ZGM1YTQ2MzJlNmEx
OTk3N2RiNjFiYWI2MTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZUhhbmRsZXIuaApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5k
ZXggZDQ0MmI2MmI1MjI1ODdmOTBmYTY4OWQ1NmIyMDYyNzZkZWI0NDgyYi4uODI1Y2QwMjY4OGEy
NjgyMTk0MWZmN2E0MThmNGRmNWE5NzViYTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzgsMTAgKzM4LDYgQEAgbmFtZXNwYWNlIEFQSSB7CiBj
bGFzcyBGcmFtZUluZm87CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAzNTI4ZjQ3MWY0NjNkZjZjMTEzMGEzZmI4Mzc3NmJmMWIyYWJl
Zjk0Li4wYjc2OWYwMzU0ZWI0ZjAzMmQyMjA5ZWM3OWI4ZmUyMTllZmQ4ODkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY5OCw3ICs2
OTgsNiBAQAogCQkyRDkyQTc3QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJndW1lbnRDb2RlcnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzRDYxMDQx
M0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0My
MTJCNkE3MTAwRjQ5M0ZEIC8qIEF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk2NkExMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFj
aG1lbnQuY3BwICovOyB9OwogCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAz
MkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi87IH07Ci0JCTJEOTJBNzdF
MjEyQjZBNzEwMEY0OTNGRCAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBE
YXRhUmVmZXJlbmNlLmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERl
Y29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4
MDIxMkI2QTcxMDBGNDkzRkQgLyogRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ5RjEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rl
ci5jcHAgKi87IH07CiAJCTJEOTJBNzgxMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdlUmVjZWl2
ZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUEzRUVEMEMxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgKi87IH07
CkBAIC0xMzAzLDYgKzEzMDIsNyBAQAogCQk3QUZCRDM2MzIxRTUwRjM5MDA1REJBQ0IgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi87IH07CiAJCTdBRkJEMzY3MjFFNTFCQUIwMDVEQkFD
QiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQzNkYy
MUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQ
ZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CisJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZCQyAvKiBB
cnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi87IH07
CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRB
MEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0
aW9uYXJ5LmggKi87IH07CkBAIC0yNzE5LDcgKzI3MTksNiBAQAogCQkxQUM1RkZDMTE3NEJGRDFC
MDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUxvYWRTdGF0ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0Ix
NSAvKiBQYWdlTG9hZFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBh
Z2VMb2FkU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFDNzUzN0QxODNC
RTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGF0YVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rp
b25EaXNhYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5nRGV0ZWN0
aW9uRGlzYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVBMUMxQjMz
Njk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNjksNiArNDM2OCwxNiBAQAogCQk3QUZC
RDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5oOyBwYXRoID0gQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkQyMUU1
NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyc2lz
dGVuY3lVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2RTIxRTU0
NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
ZXJzaXN0ZW5jeVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IxREIy
NjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFycmF5UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkEyNTRB
RkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkU3MjY1
NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9u
c0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY2NTMsMTEgKzY2NjIsMTEgQEAKIAkJCQkx
QUVGRDI3ODExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oICovLAogCQkJCTFBM0Q2
MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi8sCiAJCQkJMUFFRkQy
RjYxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggKi8sCisJCQkJN0IxREIyNjUy
NTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8sCiAJCQkJQkNFRTk2NkExMTJG
QUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwICovLAogCQkJCUJDRUU5NjZCMTEyRkFGNTcw
MDZCQ0MyNCAvKiBBdHRhY2htZW50LmggKi8sCiAJCQkJQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVB
IC8qIENvbm5lY3Rpb24uY3BwICovLAogCQkJCUJDMDMyREEzMTBGNDM3RDEwMDU4QzE1QSAvKiBD
b25uZWN0aW9uLmggKi8sCi0JCQkJMUFDNzUzN0QxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZl
cmVuY2UuY3BwICovLAogCQkJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJl
bmNlLmggKi8sCiAJCQkJQkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3BwICov
LAogCQkJCUJDMDMyRDlFMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggKi8sCkBAIC04MzI3
LDExICs4MzM2LDE2IEBACiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICov
LAogCQkJCUY0MDk0Q0JBMjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHAgKi8sCiAJCQkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmggKi8sCisJCQkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4OEYwMDA0
RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywKIAkJCQk3
MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZC
IC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAorCQkJCTdCOTA0MTY1MjU0
QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLywKKwkJ
CQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oICovLAorCQkJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5
OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAq
LywKIAkJCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKQEAgLTgzNDksNiArODM2MywxMCBAQAogCQkJ
CUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAg
Ki8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAorCQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovLAorCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZF
RUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3Qjkw
NDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKQEAgLTExMTY1LDYgKzExMTgzLDcgQEAKIAkJCQkx
QUVGRDJGNzExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQUYwQzRBMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyogQXJndW1lbnRDb2Rl
cnNDb2NvYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8q
IEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyODE4M0RENkY2MDAw
NzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUZBNjM0RjIzNEY3
QzY0MDBGRkE4NjQgLyogQXN5bmNSZXZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTEzMjMzLDcgKzEzMjUyLDYgQEAKIAkJCQkyRDkyQTc4NTIxMkI2QUIxMDBGNDkzRkQgLyogQmxv
YkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0QyMTJC
NkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMkQ5MkE3
N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDlEQUEzOEMyNENCQTFBODAwNzkzRDc1IC8qIERlZmF1bHRXZWJCcm93c2VyQ2hlY2tz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQwQzU2RkUyMjlGMURFQTAwQkQzM0U3IC8qIERldmlj
ZU1hbmFnZW1lbnRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmlu
ZGV4IGY5MmRhNmE0N2Y3ZTI0ZjM4Mzk5YWEzNjk4YTIxMjkwZDM2MWQ0YTYuLmM5ZGM2ODJiODc1
NDliODI1MGRiMjJiMmExY2UyMTU1NTAwMGNlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTM2
LDEwICszNiw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yOwogY2xh
c3MgUGF5bWVudENvbnRhY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMmMwZGY1YjlmNTQ5Njg0N2VkNjY5MTBiZjJm
MzliMmNkYzYwY2EwMi4uNWJlOGI5OTc1MjBjNGFkN2YxYjQ0MDdhZTcyMDRjODRhOTk4ODc0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaApAQCAtMzUsMTAgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYTc5MThlNGI1MGM5YjdjZjViMmU3OWIwNzdkMDM1MjEyYzYx
MjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitlbnVtIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGUgeyB9Owor
dXNpbmcgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQwMjdiYjU4OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShhdHRyaWJ1dGVzKSk7Cit9CisK
K1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQoreworICAgIElQQzo6TWVzc2FnZVJl
Y2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1l
c3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworfQorCitSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCit7CisgICAgSVBD
OjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFw
KCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7
CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVmZmVyKCk7
CisjZW5kaWYKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIG1fY3Vy
cmVudFdpZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWln
aHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlclNlbmRSaWdodDsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNw
bGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3Bs
YXk6OlJlcGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JDb2xv
clNwYWNlUmVmKCkpOworICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgIGF1dG8mIHNj
ID0gcGxhdGZvcm1Td2FwQ2hhaW4oKTsKKyAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOworICAg
ICAgICBzYy5wcmVzZW50KHsgV1RGTW92ZShkaXNwbGF5QnVmZmVyKSwgbnVsbHB0ciB9KTsKKyAg
ICB9CisjZWxzZQorICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworI2VuZGlmCisgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29u
c3QgU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IEN1
cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCdzIG5vdCBjbGVhciB0aGlzIGlzIHRo
ZSByaWdodCB3YXkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkz
NDkKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJs
ZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCit7CisgICAgaWYgKG1f
ZGlkSW5pdGlhbGl6ZSkgeworICAgICAgICAvLyBJbml0aWFsaXphdGlvbiB0aW1lZCBvdXQgYmVm
b3JlLCBzbyBsb3NlIHRoZSBjb250ZXh0IG5vdy4KKyAgICAgICAgd2FzTG9zdCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGluaXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVx
dWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0KCkKK3sKKyAgICBmb3IgKGF1
dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmZv
cmNlQ29udGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDaGFuZ2VkKCkKK3sKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3Rvciht
X2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmlj
YXRpb24oKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50
aWxJbml0aWFsaXplZCgpCit7CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZSkKKyAgICAgICAgcmV0
dXJuOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAg
ICBpZiAoY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQ+KG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRp
bmdJZlN5bmNNZXNzYWdlQXJyaXZlcykpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBUaW1lZCBv
dXQsIHNvIHJlcG9ydCBpbml0aWFsaXplZCB3aXRoIGR1bW15IGRhdGEuIFdlIHNob3VsZCBsb3Nl
IHRoZSBjb250ZXh0LgorICAgIHdhc0NyZWF0ZWQoIiIsICIiKTsKKyAgICAvLyBGSVhNRTogTmVl
ZCB0byBtYXJrIHRoZSBjb250ZXh0IGFzIGxvc3QsIGJ1dCBpdCdzIG5vdCBzYWZlIHRvIGZvcmNl
IGxvc3QgaW4gdGhpcyBjYWxsIHN0YWNrLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU0ODI3NDZhMzJjNDk4MzQ0NGY4YmQxZGZjZWQ2OTcxNzMwNDliNTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaApAQCAtMCwwICsxLDQxMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFdlYiBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgaW50ZXJmYWNlLiBUaGUgaW1wbGVtZW50YXRpb24KKy8vIGNv
bnZlcnRzIHRoZSBpbnRlcmZhY2UgdG8gYSBzZXF1ZW5jZSBvZiBJUEMgbWVzc2FnZXMgYW5kIHNl
bmRzIHRoZSBtZXNzYWdlcyB0bworLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gR1BVIHBy
b2Nlc3MuCisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVu
bmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVy
CisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KKyAgICAsIHB1YmxpYyBXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVy
cmlkZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKKworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRl
cy4KKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsKKyAgICB2
b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgdXNpbmcgV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsKKyAgICB2b2lkIGVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGZpbmFsOworICAgIHZvaWQg
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRl
eHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisKKyAgICAv
LyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlz
IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisgICAgdm9pZCBzZXRGYWlsTmV4
dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dM
ZW51bSBlcnJvcikgZmluYWw7CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgZmlu
YWw7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0
Zm9ybUdMT2JqZWN0IHNoYWRlcikgZmluYWw7CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1l
KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRSZW5kZXJi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAg
IHZvaWQgYmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEp
IGZpbmFsOworICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBn
cmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lk
IGJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBibGVuZEVxdWF0
aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFscGhhKSBmaW5hbDsK
KyAgICB2b2lkIGJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKSBm
aW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVu
dW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpIGZpbmFsOwor
ICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5h
bDsKKyAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIGNs
ZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1
ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjbGVhckRlcHRoKEdDR0xjbGFt
cGYgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdDR0xpbnQgcykgZmluYWw7
CisgICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwg
R0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZpbmFsOworICAgIHZvaWQgY29t
cGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weVRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVCdWZmZXIoKSBm
aW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUZyYW1lYnVmZmVyKCkgZmluYWw7Cisg
ICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQcm9ncmFtKCkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVSZW5kZXJidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVRleHR1cmUoKSBmaW5hbDsKKyAgICB2b2lkIGN1bGxGYWNlKEdDR0xlbnVtIG1vZGUp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoTWFz
ayhHQ0dMYm9vbGVhbiBmbGFnKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0NHTGNsYW1w
ZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAg
dm9pZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5cyhH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpIGZpbmFsOworICAg
IHZvaWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZW5hYmxlKEdDR0xl
bnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWlu
dCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNo
KCkgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBhcmczKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwpIGZpbmFsOworICAgIHZvaWQg
ZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAo
R0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5h
bDsKKyAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgR0NHTGludCBnZXRB
dHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkg
ZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFt
ZSkgZmluYWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50
ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0
aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xl
YW4+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOworICAgIEdD
R0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcg
Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25G
b3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNw
YW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CisgICAgU3Ry
aW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdD
R0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
IGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIHZv
aWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRVbmlm
b3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOworICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0J1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRW5hYmxlZChHQ0dMZW51
bSBjYXApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1Byb2dyYW0oUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBm
aW5hbDsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0
IHVuaXRzKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUs
IEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CisgICAgdm9pZCBzY2lzc29yKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAg
IHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJikg
ZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwg
R0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xl
bnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5h
bDsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQg
c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsK
KyAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVu
dW0genBhc3MpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFj
ZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsK
KyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwg
R0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0
IHopIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUs
IEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAg
IHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dM
ZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAg
ICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0
YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBm
aW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lk
IHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQg
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFs
OworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
ZGl2aXNvcikgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJn
ZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRw
dHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0cikgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJT
dWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2
b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZv
cm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsK
KyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFu
PGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZp
bmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgdGV4U3RvcmFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0
ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBm
aW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
LCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBH
Q0dMdWludCB2MykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
MnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgs
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3
UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5k
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NH
TFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZl
cmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3Rl
bmNpbCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2
b2lkIGJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBm
aW5hbDsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgUGxh
dGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVl
cnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNh
bXBsZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
aShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFt
KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CisgICAgR0NHTGZs
b2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHN5bmMg
ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKSBmaW5hbDsK
KyAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgdm9pZCBk
ZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIEdDR0xlbnVtIGNsaWVudFdhaXRT
eW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0
KSBmaW5hbDsKKyAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBm
bGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NH
THN5bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlz
VHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBi
aW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlk
KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0
aXZlTW9kZSkgZmluYWw7CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwor
ICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkg
ZmluYWw7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7Cisg
ICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCByZXN1bWVU
cmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpIGZpbmFs
OworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
cHRyKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykg
ZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkg
ZmluYWw7CisgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBw
YXJhbXMpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZp
bmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBm
aW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgZmluYWw7
CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2Vy
RVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhU
KCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVt
IG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgdm9p
ZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFs
OworICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1
ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZv
cm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEZy
YW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKKyAgICB2b2lkIGdldE11bHRpc2Ft
cGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpIGZpbmFsOworICAg
IHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xm
bG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1
c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgLy8g
RW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKworcHJvdGVj
dGVkOgorICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4K
KyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
Ly8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVhdGVkKFN0cmluZyYm
IGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAg
IHZvaWQgd2FzTG9zdCgpOworICAgIHZvaWQgd2FzQ2hhbmdlZCgpOworCisgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmKTsKKyAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCisvLyBUaGUgR0NH
TCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVz
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PEdDR0xlbnVtLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGJv
b2xlYW4pID09IHNpemVvZihib29sKSk7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdD
R0xiaXRmaWVsZCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NH
TGJ5dGUsIGludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWJ5dGUs
IHVpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNob3J0LCBpbnQx
Nl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1c2hvcnQsIHVpbnQxNl90
Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xpbnQsIGludDMyX3Q+KTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNpemVpLCBpbnQzMl90Pik7CitzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1aW50LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWVfdjxHQ0dMZmxvYXQsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZV92PEdDR0xoYWxmZmxvYXQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZV92PEdDR0xjbGFtcGYsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZV92PEdDR0x2b2lkLCB2b2lkPik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFBsYXRm
b3JtR0xPYmplY3QsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMaW50cHRy
KSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xzaXplaXB0
cikgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMdm9pZHB0
cikgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMY2hhcikg
PT0gc2l6ZW9mKHVpbnQ4X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnQ2NCkgPT0g
c2l6ZW9mKGludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x1aW50NjQpID09IHNp
emVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMpID09IHNpemVv
Zih1aW50NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRyX3QpKTsKKy8v
IEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJiMmJjMTAxMGVm
OGVjZDBhZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgewor
ICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2FzQ2hh
bmdlZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVy
YXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMx
NGE0NDMxNTYyMTFjYzcxODUxMzczMzhjYWNjN2NlNTAzNTc5NWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NyBAQAorLyog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4g
RG8gbm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2so
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xF
cnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50
aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRl
eHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRl
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBh
cmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJnMCwg
aW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVi
dWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcx
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1H
TE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xv
cihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dM
Y2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxw
aGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5k
RXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFj
dG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwg
R0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuY1Nl
cGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHVp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNv
bG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdD
R0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFz
ayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBH
Q0dMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJv
b2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFs
cGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGls
ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBo
ZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVm
ZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZm
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1Bs
YXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVy
YnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3Jh
bShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRl
eHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFz
ayhHQ0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5l
YXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZm
ZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZm
ZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlm
b3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8m
IGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwg
aW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3Ry
aW5nKEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkK
K3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNw
eSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihm
bG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAg
ICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJ
bnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNw
eSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihp
bnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1
cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAgICBpbnQ2
NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9n
cmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3Jh
bWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJv
b2xlYW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVSZXBs
eTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3Vs
dCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5i
dWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQs
IGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFt
SW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NH
TGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xT
cGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3QgcHJlY2lz
aW9uUmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVy
VHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJh
bmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lzaW9uKQor
ICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30KKworU3Ry
aW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNl
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJj
ZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJn
ZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJh
bWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJp
KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRl
eFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAg
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAg
ICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXpl
ICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQz
Ml90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlv
biwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRh
dGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90KSk7
CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmli
T2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVp
cHRyPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNF
bmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVk
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVi
dWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1
ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3Jh
bShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3Jh
bShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW06OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVm
ZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVm
ZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihh
cmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xi
b29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBh
cmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhl
bFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChHQ0dM
ZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3Rv
cmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292
ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
Y2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNl
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJl
ZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0
ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCBy
ZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNr
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2ls
TWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xl
bnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6
cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBH
Q0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZh
Y2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJn
ZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFt
ZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2
LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
MWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgs
IHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3Qq
Pih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRp
b24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2
YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFt
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRl
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5k
ZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFs
dWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
MmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgs
IHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFs
dWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
M2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHop
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNm
dihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEp
LCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRlcihH
Q0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBu
b3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRl
cihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlk
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmlld3Bv
cnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmlld3Bv
cnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVm
ZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBH
Q0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSks
IHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0
KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNp
emUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJ
bWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSks
IHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdl
U2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJl
c3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3Rh
bmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJp
bWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NH
TGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0
ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3Vs
dCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZT
aXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZ
MCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBk
c3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdD
R0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwg
ZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZl
clRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz
Ml90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNy
YyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRh
cmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFn
ZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVs
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZv
cm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQs
IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
cHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDAo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9m
ZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAg
ICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2Nh
dGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSwgR0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdD
R0x1aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gy
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2Up
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
STRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBH
Q0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6
LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRl
eCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBz
dGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZz
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJp
dihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZl
ciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xm
bG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVw
dGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRm
b3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBs
YXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCit7
CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBs
ZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVy
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWlu
dCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBh
cmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxl
ciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitH
Q0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRl
cmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9h
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0
ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dM
c3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29u
ZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpG
ZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4o
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29sZWFuIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZh
bHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5j
KEdDR0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
R0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NH
THN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7Cisg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90
Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmpl
Y3QgaWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQs
IGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJp
bWl0aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVp
bnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3Jh
bSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVz
ZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVz
dW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1H
TE9iamVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxh
dGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJn
NCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1
ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQor
eworICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5k
ZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05h
bWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9n
cmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitT
dHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5k
aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0
aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
SW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFy
YW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHBh
cmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGlu
dDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZm
ZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dM
aW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBH
Q0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJB
TkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0
WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VT
KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlP
RVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZl
cnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRl
eEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVy
dGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1
c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz
Ml90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3Qs
IGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
dm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1v
ZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWlu
dCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMYm9vbGVhbiogZGF0YSkgLy8gTk9MSU5UCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQq
IHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1
aW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBhZWY4
M2UyNTg4ODlhNWJlODI2N2E2OGIxYzY5ZmVjNWEzNGUwMzg2Li42YTRhZGY1ZDZkMzRhN2M2OTFi
ZmYwMGVlY2UwMWZjN2FhODk0MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBA
IC04MTgsNyArODE4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVj
dCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2ws
IGJvb2wpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9i
amVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJv
b2wsIGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggOTVjODM2ZTY5NTA0MWQ5N2Qy
NTkwMzZmZDczZGZmNWM0NmI4ZmY5MS4uYzhjNTgyOTA1MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5
N2E1NmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtODIsNyAr
ODIsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJv
Y2VzcygpCiAKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgq
dGhpcyk7Ci0gICAgYm9vbCBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoCisgICAgYXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6
Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVT
YW1wbGVSYXRlKCkpLAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsK
IApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpj
b25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3Ry
ZWFtRm9ybWF0OwogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3Jt
YXQpOwogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9m
RnJhbWVzKTsKLSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZm
ZXJMaXN0PihzdHJlYW1Gb3JtYXQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAppbmRleCBiOGY0
NWE2ZDViYjRkYjQ2MDk4ODAxMjQzYmI1ZTkzMTdiMWUzZTJiLi42NWI4ZmQwZDc3MzQ3ZTkzOGI1
NjQ1ODIyNmI3OGRhNDNjOTc4OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaAppbmRleCBl
NTllMWIwNmI0NDdlNWQ4MGNhNjEwNTJjNmM3YTMyYzRiYTE0MmU2Li44MTk0MDkwYzkzM2IyZjEx
YTY0NjBhYjNjMTc3MmQzNzYxNjM3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5n
QnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllcklkZW50aWZpZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb24uY3BwCmluZGV4IDBkYjg1YWU5YmQyNDFlYmExYmRhNGU2MjI0NDBm
NjMyOGUxZDhhMGIuLjI5N2VlYmRhMTkxODlkZmUwY2ZlNmMxZWQ3NjlhYWNiOWQ2ZDkxMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeS5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
aAppbmRleCBiOWEwMWIwNjI1ZTNiN2M3ZjAxMTg0YTgzYzM2ZTU0OTEyMmYwOWE4Li4xNTE3MmM5
ZjYyMTBiZjRmOTVlMGM2YWE3OTM2YzYyMmVhOGQ5M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUuaApAQCAtNDQsNyArNDQsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaAppbmRleCBiN2NlZGI3ZTgzOTRmOTliYTlj
ZmIwYTJhYzJhOTc4MTFiM2M0MThmLi43NzAyZDFiNzAyZDEyMTYyZTE5YWI5YTZkYWE0YzU5NzUx
ODYyZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Rl
eHRUcmFja1ByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNs
dWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5iYW5kR2VuZXJpY0N1
ZTsKIGNsYXNzIElTT1dlYlZUVEN1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDBjNmY3M2QwNzE0NGI1
NjI2NzY5MzY3YzlmMmEzYTQwMTdlYWRlODAuLjE2OGVmNDM1ZGRlNTYxNGQzMGYzYmUyODY3MGE0
N2FlZDYxNmRlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNF
KExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGli
V2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCA3MzlhNDk2ZWY0OTRj
YjRhNjE4NTY2ZmZjNjRkNGEyNjRhNzRlOWQwLi40YmVhZTA2MjMxN2JhMjZhNjA2ODNmMWY0NTEy
MzNlYjEwNzNhYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJX
RUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKQEAgLTQzLDcgKzQ0LDYgQEAgdXNpbmcg
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiAKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBj
bGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDJkYWQyMDM4NDJmMGU1NTNm
ZTNiNDYyNDQxZWU5NGZhMjY0OTNhMTEuLmMyOGNlN2YyZTE3ZTg5YThlNTE4NmE3NzA2YTJlOGE0
NGY2YjdlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJBUElJbmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVXNlckNvbnRlbnRUeXBlcy5oPgpAQCAtNTQsNyArNTUsNiBAQCBjbGFzcyBEYXRhOwog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDQgKzE2MSwz
IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAppbmRleCAzMDY0ZTljNGFmY2MyY2ZmNTRhMzI1ZTI1MzFlZDA1MjJhMDAxMzkzLi5i
OTc5NDY1OWVhYmQxODRiMzg5YzA2ZDEzMmY4YzQyZjgwNTIzY2MyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODY1NzExYjM2
NmMyOGRmNDg0YjRjZGMwN2FhM2ZjZjNkY2ViZjJmNi4uNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2
NTc4MjBhMjc4YWYxZGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCA1ODNlMzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZiLi43ZTFk
NDk5NDcxNWY4ODQ5Y2U4YmZlNWVjMzQ1NWQ0NzM3NzgwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVy
LmgiCkBAIC0zNiw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCA5NGVmMGQxZmNlMmU2MDFkZjQ0OWNmZjg1MzlmYmQxNjQ3OTNl
YmUyLi5mZjY5ZjU2MDllNTc3Y2FjNzc3ZjA0YWZhNzRhZjIxMDc0ODY0Zjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldENoYW5uZWwuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxNZXNz
YWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5oCmluZGV4IGY1MzQ3ODM0N2U3NzVkZjM3ZWE5NzYzNGMyMzMwOTMyYjRhMTRk
MjguLmFkN2ZmMTg3ZGJiNDM1M2I5ZWQzYmM1N2M1YmEyYzRhYTRlOGNmZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1NlbmRRdWV1ZS5oPgpAQCAtMzgsNyArMzks
NiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5k
ZXggYWYyNDJjZDJiNTk1YWM0YTQ0ODQyOTdiZTVkNWNmZTE4ZDQ4ZjMyNC4uN2QwMDczNjliOWNj
ZTg1YjhmMDU0NTdkNjY2ZDFlNDQ1MWI5NmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAKLSNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCBkZDA4
MjAxMDcxMmI5ZjVkYjlmZWJkODhkYTY2OWI2ZGY2MWQwZjI5Li5iNDNjYjJlZmFkMWUxMDFlZTI2
NWI5M2RkZTliMDYxMjczNmEwOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
b2NrZXRTdHJlYW1IYW5kbGUuaD4KQEAgLTMzLDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewog
Y2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKaW5kZXggY2I0OGUwNTcz
NDhhMmU4NjZiMDkxZmY1YWM4NzI2MDVjYTE5MmRkNS4uMzIzZjI1ZWU4ZmQ4MWIwMjYzMGQyZjI1
OWExYWZiODg0YjRjZjVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaApAQCAtMzUsNyArMzUsNiBAQAog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IGVhNTM1OTYwMTA5ZmVlNmRjNDgwNWNmNjg5MTI3
OThlZTlhYjZmMDMuLjQwYjRjOGYyMTI5Y2YxMjMzYTFiMzFiODUxMjdlN2E3ZTllM2Q3Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
QEAgLTYwLDEwICs2MCw2IEBAIE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9uOwogT0JKQ19DTEFTUyBX
S1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUERGTGF5ZXJDb250
cm9sbGVyRGVsZWdhdGU7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVs
ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5
ODA2MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRlOWQ1NDky
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYsMjIgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYg
RU5BQkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBj
b25zdAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3Rl
UmVuZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VE
X1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7
CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNo
Um9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4Li4x
MjE1ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3Jl
OjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5h
bDsKICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93
ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMsNiArNDA3
LDcgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hv
cml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1h
aW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBhZ2UmIG1f
cGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggZjY0MjE0NzdhNTZjZWUxYjQ1OWFiMWI3MGQ4ZGNhZDlkM2RhZmMzNC4uZDQ2MzNk
ZGI2Y2M2NDk4MDNiOTI0NTc1NjI1YmZhNTI4YzE3ZDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyMiw2ICs0MjIsOSBAQCBXZWJQYWdl
OjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7
IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hv
dWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQ
VVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBwYXJhbWV0
ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAg
ICwgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVu
ZGVyV2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMu
bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzI1LDcgKzcyOCw2
IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYK
LSAgICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAgICAgICAg
c2NhbGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5Myw2ICszNzk1
LDkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9j
ZXNzRm9yQ2FudmFzUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzKTsK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVy
aW5nKG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEobV9zaG91bGRQbGF5TWVkaWFJbkdQVVBy
b2Nlc3MpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
ZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0wobV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzcyk7
CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKQEAgLTY5OTAs
NiArNjk5NSw3IEBAIHZvaWQgV2ViUGFnZTo6c3luY2hyb25pemVDT1JTRGlzYWJsaW5nUGF0dGVy
bnNXaXRoTmV0d29ya1Byb2Nlc3MoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1f
aWRlbnRpZmllciwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpLCAwKTsKIH0KIAorCiAjaWYgRU5B
QkxFKE1FRElBX1VTQUdFKQogdm9pZCBXZWJQYWdlOjphZGRNZWRpYVVzYWdlTWFuYWdlclNlc3Np
b24oTWVkaWFTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGJ1bmRs
ZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcGFnZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlN2Y4YzBhM2I2MDRlN2FhMTU3Yzc0MDIzMWU1
NTU3NDlkNGVmN2M3Li4yMTEwYTMyZjY3MGYwMGZhMjQ0ZmU2ZjlkNzk1YTZkZGY2MGQxNzA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgog
I2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRy
YXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMTYwLDcgKzE2
MSw2IEBAIGNsYXNzIEFycmF5OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOwogfQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBs
eShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICBTZW5kU3luY1Jl
c3VsdCBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHkpCiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRPblN5bmNo
cm9ub3VzUmVwbGllcygpOwogICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShyZXBseSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRp
b246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKQEAgLTE4MjYsNiArMTgyNiw5
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07Cisj
aWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vz
cyB7IGZhbHNlIH07CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
Ym9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYK
QEAgLTIxODMsNCArMjE4NiwzIEBAIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNM
YXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZTU3NWZjYTAxOWY2YjEyYThmNGRhZTVj
YjFkNjgyZGE0ZTQzNmViOS4uODRlMjg0MTFjZmRkZDkxZjlhNWQ0N2MyMWQ3MWU5ZGI2ZDdjNjM0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KQEAgLTUxNyw3ICs1MTcsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdL
ZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAgLy8gRklYTUU6IEludGVy
cHJldCB0aGUgZXZlbnQgaW1tZWRpYXRlbHkgdXBvbiByZWNlaXZpbmcgaXQgaW4gVUkgcHJvY2Vz
cywgd2l0aG91dCBzZW5kaW5nIHRvIFdlYlByb2Nlc3MgZmlyc3QuCiAgICAgYm9vbCBldmVudFdh
c0hhbmRsZWQgPSBmYWxzZTsKLSAgICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5
b3V0OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpDaGFyKSwKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMp
LCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwK
ICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQ6OlJlcGx5
KGV2ZW50V2FzSGFuZGxlZCksIG1faWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQg
JiYgZXZlbnRXYXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGYyZjIyODIyYzdiMjIzZmNhNTlmOTU1NzNkMTFkYzk5YjEwMzQ4MTEuLjU4MmVl
NzVkOTlhNzQyNDI1NGEzOWRhYjIwNmY4NDYxNzM0YWQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5NDIsNiArMTk0MiwyMCBAQCBib29sIFdlYlByb2Nl
c3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2Up
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KKworI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQg
V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wgdXNlR1BVUHJvY2Vzc0Zv
cldlYkdMKQoreworICAgIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMID0gdXNlR1BVUHJvY2Vzc0Zv
cldlYkdMOworfQorCitib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0Zv
cldlYkdMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9
CisKKyNlbmRpZgorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlOWM0N2RiNGM0NDdjMGY0YWI2MjdjMDk0YjVmNjhkYjU2
NWE5YTZjLi4xYTU4NWFjMTQyYjE4MzI3NjRjNGQ4NTM3OTA5MGIyY2JjYTczYzFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM0Nyw2ICszNDcsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhib29sKTsKICAgICB2
b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sKTsKICAgICBib29sIHNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCk7CisgICAgYm9v
bCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0OworI2VuZGlmCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShWUDkpCkBAIC02ODcsNiArNjkxLDkgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fdXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3VzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91
c2VHUFVQcm9jZXNzRm9yTWVkaWEgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBi
b29sIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMIHsgZmFsc2UgfTsKKyNlbmRpZgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDAyMjI3YjdiNWU0NmMyNDQ0ZDg5ZGI3NDVlNzYyYTkwYzQ4NTNkOTIuLmZl
MzliMDNkOWE1YTQ4YWY0MTc0YmNlNjlhY2ZiN2E3NzZmY2JlNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0x
Mi0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnRzIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQ
VSBwcm9jZXNzLgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktp
dCBJUEMgYW5kIGlzIGluY29tcGxldGUuCisKKyAgICAgICAgQWRkIHRoZSBjb2RlIGdlbmVyYXRv
ciB0byBnZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseQorICAgICAgICB0aGUg
Z2VuZXJhdG9yIGdlbmVyYXRlcyBhIFdlYktpdCBJUEMgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgVGhlIGlucHV0IGRlZmluaXRpb24gdG8gdGhlIGdlbmVyYXRvciBpcyB0aGUgcHJveHkgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaGVhZGVyIGZpbGVzLgorICAgICAgICBUaGUgb3V0cHV0IG9m
IHRoZSBnZW5lcmF0b3IgaXMKKyAgICAgICAgICAgLSBXZWJLaXQgSVBDIG1lc3NhZ2UgZGVmaW5p
dGlvbiBmaWxlCisgICAgICAgICAgIC0gTWVzc2FnZSBzZW5kZXIgY29kZQorICAgICAgICAgICAt
IE1lc3NhZ2UgcmVjZWl2ZXIgYW5kIHBheWxvYWQgaW52b2NhdGlvbiBjb2RlCisKKyAgICAgICAg
VGhlIGdlbmVyYXRvciBjb252ZXJ0cyBHcmFwaGljc0NvbnRleHRHTCBHQ0dMIC1wcmVmaXhlZCB0
eXBlcyB0bworICAgICAgICBzaXplZCBJUEMgdHlwZXMuCisKKyAgICAgICAgVGhlIGdlbmVyYXRv
ciBpcyBpbnZva2VkIGR1cmluZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUK
KyAgICAgICAgc3RvcmVkIGluIHRoZSByZXBvc2l0b3J5LgorCisgICAgICAgICogU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsOiBBZGRlZC4KKwogMjAyMC0xMi0wMSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRhYmxlL3dy
aXRhYmxlIHRvIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmds
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkZGMwZTNiYjQzZDU0MTA1ZThjN2E0MDM5MjMzM2E2NzA3NWFjM2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAs
MCArMSwxMDMwIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04
IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhl
IHNvdXJjZSBmaWxlcyBmb3IgV2ViR0wgR1BVIHByb2Nlc3MgSVBDLgorIworIyBweXRob24zIC1t
IGJsYWNrIC1sIDE1MCBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMgcHl0aG9u
MyAtbSBteXB5IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIworaW1wb3J0IGFy
Z3BhcnNlCitpbXBvcnQgZW51bQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5
cworaW1wb3J0IGNvbGxlY3Rpb25zCisKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJ
dGVyYWJsZSwgQ2FsbGFibGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJh
dG9yLCBDb3VudGVyCisKK3Jvb3RfZGlyID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50
IC8gIi4uIiAvICIuLiIpLnJlc29sdmUoKQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3RfZGly
IC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRl
bnNpb25zR0wuaCIKKworZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsKKyAgICByb290X2RpciAvICJT
b3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorXQordHlwZXNfaW5wdXRfZm4gPSByb290
X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFw
aGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisKK3RlbXBsYXRlX3By
ZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2ZuID0g
cm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNz
IiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29udGV4
dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIi
Ii8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBv
ZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFn
bWEgb25jZQore30KKworIiIiCispCitjb250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAi
U291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUg
PSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgTm90UmVmQ291bnRlZCB7eworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNw
bGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNlbmRp
ZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4g
KCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChT
dHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3t9
Cit9fQorCisjZW5kaWYKKworIiIiCispCisKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuID0g
cm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAi
Z3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuY3BwIgorY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxh
dGVfcHJlYW1ibGUKKyAgICArICIiIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHt7Cit7fQorCit9fQorCisjZW5k
aWYKKworIiIiCispCisKKworZGVmIHdyaXRlX2ZpbGUoZm4sIG5ld19jb250ZW50cyk6CisgICAg
dHJ5OgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBpZiBmLnJlYWQo
KSA9PSBuZXdfY29udGVudHM6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgZXhjZXB0Ogor
ICAgICAgICBwYXNzCisgICAgd2l0aCBvcGVuKGZuLCAidyIpIGFzIGY6CisgICAgICAgIGYud3Jp
dGUobmV3X2NvbnRlbnRzKQorCitjbGFzcyBjcHBfdHlwZShvYmplY3QpOgorICAgIHR5cGVfbmFt
ZTogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyKToKKyAgICAg
ICAgc2VsZi50eXBlX25hbWUgPSB0eXBlX25hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi50eXBlX25hbWUpCisKKyAgICBkZWYgX19yZXByX18o
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9fZXFfXyhz
ZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSA9PSBvdGhlci50eXBl
X25hbWUKKworICAgIGRlZiBpc192b2lkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBz
ZWxmLnR5cGVfbmFtZSBpbiBbInZvaWQiLCAiR0NHTHZvaWQiLCAiY29uc3Qgdm9pZCIsICJjb25z
dCBHQ0dMdm9pZCJdCisKKyAgICBkZWYgaXNfY29uc3Qoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoImNvbnN0ICIpCisKKyAgICBkZWYgaXNf
Y29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVm
IGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgIGRlZiBpc19wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxm
KSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBnZXRfdmFsdWVfdHlw
ZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdl
dF9kZWNheV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIGlmIHNlbGYuaXNfY29u
c3QoKToKKyAgICAgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWVbNjpd
KQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9ydmFsdWVfdHlwZShzZWxmKSAt
PiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1l
ICsgIiYmIikKKworICAgIGRlZiBnZXRfcG9pbnRlcl90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6
CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiKiIpCisKK2Ns
YXNzIGNwcF90eXBlX2NvbnRhaW5lcihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHR5cGVfbmFtZSA6IHN0ciwgY29udGFpbmVyX25hbWUgOiBzdHIsIGNvbnRhaW5lZF90eXBlIDog
Y3BwX3R5cGUsIGFyaXR5IDogT3B0aW9uYWxbaW50XSA9IE5vbmUpOgorICAgICAgICBjcHBfdHlw
ZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY29udGFpbmVyX25hbWUg
PSBjb250YWluZXJfbmFtZQorICAgICAgICBzZWxmLmNvbnRhaW5lZF90eXBlID0gY29udGFpbmVk
X3R5cGUKKyAgICAgICAgc2VsZi5hcml0eSA9IGFyaXR5CisgICAgZGVmIGlzX2NvbnRhaW5lcihz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBpc19zcGFuKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3Bh
biIKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVy
biBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMgTm9u
ZQorICAgIGRlZiBnZXRfY29udGFpbmVyX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LmNvbnRhaW5lcl9uYW1lCisgICAgZGVmIGdldF9hcml0eShzZWxmKSAtPiBPcHRpb25hbFtpbnRd
OgorICAgICAgICByZXR1cm4gc2VsZi5hcml0eQorICAgIGRlZiBnZXRfY29udGFpbmVkX3R5cGUo
c2VsZikgLT4gY3BwX3R5cGU6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlCisg
ICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gc2VsZi5jb250YWluZWRfdHlwZS5pc19jb25zdCgpCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVf
Y29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFpbmVy
XToKKyAgICBtID0gcmUubWF0Y2gociIoW1x3Ol0rKTwoLispPiQiLCB0eXBlX25hbWUpCisgICAg
aWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgY29udGFpbmVyX25hbWUgPSBtWzFd
CisgICAgdGVtcGxhdGVzID0gbVsyXQorICAgIGFyaXR5ID0gTm9uZQorICAgIG0gPSByZS5tYXRj
aChyIihbXixdKyksXHMqKFxkKykiLCB0ZW1wbGF0ZXMpCisgICAgaWYgbToKKyAgICAgICAgdGVt
cGxhdGVzID0gbVsxXQorICAgICAgICBhcml0eSA9IGludChtWzJdKQorICAgIHJldHVybiBjcHBf
dHlwZV9jb250YWluZXIodHlwZV9uYW1lLCBjb250YWluZXJfbmFtZSwgZ2V0X2NwcF90eXBlKHRl
bXBsYXRlcyksIGFyaXR5KQorCitjbGFzcyBjcHBfdHlwZV9mdW5jdGlvbihjcHBfdHlwZSk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgcmV0dXJuX3ZhbHVlX3R5cGUg
OiBjcHBfdHlwZSwgYXJndW1lbnRfdHlwZXMgOiBMaXN0W2NwcF90eXBlXSk6CisgICAgICAgIGNw
cF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFs
dWVfdHlwZSAgPSByZXR1cm5fdmFsdWVfdHlwZQorICAgICAgICBzZWxmLmFyZ3VtZW50X3R5cGVz
ID0gYXJndW1lbnRfdHlwZXMKKworZGVmIGNwcF9zcGxpdF9hcmdzX3NwZWNzKGFyZ3Nfc3BlYyA6
IHN0cikgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAgIyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29t
L3F1ZXN0aW9ucy8zMzUyNzI0NS9weXRob24tc3BsaXQtYnktY29tbWEtc2tpcHBpbmctdGhlLWNv
bnRlbnQtaW5zaWRlLXBhcmVudGhlc2VzCisgICAgY29tbWEgPSByIiwoPyEoPzpbXjxdKlw8W14+
XSpcPikqW148Pl0qXD4pIgorICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW2Euc3RyaXAoKSBmb3Ig
YSBpbiByZS5zcGxpdChjb21tYSwgYXJnc19zcGVjLnN0cmlwKCkpXSkKKyAgICAKK2RlZiBjcmVh
dGVfY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlw
ZV9mdW5jdGlvbl06CisgICAgbSA9IHJlLm1hdGNoKHInKC4qKVwoKC4qKVwpJywgdHlwZV9uYW1l
KQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybl92YWx1ZV90
eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgYXJnc190eXBlcyA9IFtnZXRfY3BwX3R5cGUo
YSkgZm9yIGEgaW4gY3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsyXSldCisgICAgcmV0dXJuIGNwcF90
eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSwgcmV0dXJuX3ZhbHVlX3R5cGUsIGFyZ3NfdHlwZXMpCisg
ICAgICAgIAorIyBQb2ludGVyIG9yIHJlZmVyZXJlbmNlCitjbGFzcyBjcHBfdHlwZV9pbmRpcmVj
dChjcHBfdHlwZSk6CisgICAgY2F0ZWdvcnkgOiBzdHIKKyAgICB2YWx1ZV90eXBlIDogY3BwX3R5
cGUKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjYXRlZ29y
eSA6IHN0ciwgdmFsdWVfdHlwZSA6IGNwcF90eXBlKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0
X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNhdGVnb3J5ID0gY2F0ZWdvcnkKKyAg
ICAgICAgc2VsZi52YWx1ZV90eXBlID0gdmFsdWVfdHlwZQorCisgICAgZGVmIGlzX2NvbnN0X3Bv
aW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgc2Vs
Zi5pc19jb25zdCgpCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19j
b25zdF9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcm
JyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBub3Qgc2VsZi5pc19jb25zdCgpCisg
ICAgZGVmIGlzX3J2YWx1ZV9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNh
dGVnb3J5ID09ICcmJicKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLnZhbHVlX3R5cGUKKworZGVmIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdCh0eXBl
X25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2luZGlyZWN0XToKKyAgICBtID0gcmUu
bWF0Y2gociJjb25zdCAoLispJiYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAg
ICBtID0gcmUubWF0Y2gociIoLispJiYkIiwgdHlwZV9uYW1lKSAKKyAgICBpZiBtOgorICAgICAg
ICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnJiYnLCBnZXRfY3BwX3R5cGUo
bVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYkIiwgdHlwZV9uYW1lKQorICAg
IGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiQiLCB0eXBlX25hbWUpCisg
ICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYn
LCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKVwqJCIs
IHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKVwq
JCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJl
Y3QodHlwZV9uYW1lLCAnKicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICByZXR1cm4gTm9uZQor
CisKK2NsYXNzIGNwcF9leHByKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBleHBy
OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgZXhwcjogc3Ry
KToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLmV4cHIgPSBleHByCisK
KyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwcgorCisKK0Nw
cEV4cHJDb252ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJd
CisKKworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNhc3Rf
dGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVd
LCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcihl
eHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1
cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9PihyZWludGVy
cHJldF9jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAg
cmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcgorCitkZWYgY3BwX3JlaW50
ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5
cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVm
IGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNw
cF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYicmVp
bnRlcnByZXRfY2FzdDx7dHlwZS50eXBlX25hbWV9PihzdGF0aWNfY2FzdDx7c3RyKGNhc3RfdGhy
b3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRf
Y2FzdF90b19wb2ludGVyCisKK2RlZiBjcHBfc3RhdGljX2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5
cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJz
dGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9Pih7c3RyKGV4cHIpfSkiKQorCisKK2RlZiBjcHBf
aW1wbGljaXRfY2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHBy
OgorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBzdHIoZXhwcikpCisKKworZGVmIGNwcF9hcnJh
eV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90
eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0
eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBj
cHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8e2VsZW1lbnRfcG9p
bnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisK
K2RlZiB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZl
cnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4
cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgp
LmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlw
ZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qge2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihl
eHByKX0uZGF0YSksIHtzdHIoZXhwcil9LmJ1ZlNpemUpIikKKworZGVmIGNwcF9tb3ZlX2V4cHIo
ZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcihleHByLnR5
cGUuZ2V0X3J2YWx1ZV90eXBlKCksIGYiV1RGTW92ZSh7c3RyKGV4cHIpfSkiKQorCisKK2NwcF90
eXBlczogRGljdFtzdHIsIGNwcF90eXBlXSA9IHt9CisKK2NwcF90eXBlX2NvbnN0cnVjdG9ycyA6
IExpc3RbQ2FsbGFibGVbW3N0cl0sIE9wdGlvbmFsW2NwcF90eXBlXV1dID0gWworICAgIGNyZWF0
ZV9jcHBfdHlwZV9mdW5jdGlvbiwKKyAgICBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyLAorICAg
IGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdAorXQorCitkZWYgZ2V0X2NwcF90eXBlKHR5cGVfbmFt
ZTogc3RyKToKKyAgICByID0gY3BwX3R5cGVzLmdldCh0eXBlX25hbWUsIE5vbmUpCisgICAgaWYg
cjoKKyAgICAgICAgcmV0dXJuIHIKKyAgICBmb3IgdHlwZV9jb25zdHIgaW4gY3BwX3R5cGVfY29u
c3RydWN0b3JzOgorICAgICAgICByID0gdHlwZV9jb25zdHIodHlwZV9uYW1lKQorICAgICAgICBp
ZiByOgorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBub3QgcjoKKyAgICAgICAgciA9IGNwcF90
eXBlKHR5cGVfbmFtZSkKKyAgICBjcHBfdHlwZXNbdHlwZV9uYW1lXSA9IHIKKyAgICByZXR1cm4g
cgorCisKK2NsYXNzIGNwcF9hcmcob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICB0eXBlOiBj
cHBfdHlwZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBz
dHIpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUK
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9IHt9Ii5mb3JtYXQo
c2VsZi50eXBlLCBzZWxmLm5hbWUpCisKKworY2xhc3MgY3BwX2RlY2wob2JqZWN0KToKKyAgICB0
eXBlOiBjcHBfdHlwZQorICAgIG5hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5
cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAg
ICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gZiJ7c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5hbWV9IgorCisKK2NsYXNzIGNwcF9hcmdf
bGlzdChvYmplY3QpOgorICAgIGFyZ3M6IExpc3RbY3BwX2FyZ10KKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncwor
CisgICAgZGVmIG5hbWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKGEubmFtZSBm
b3IgYSBpbiBzZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhwcnMoc2VsZik6CisgICAgICAgIHJldHVy
biBbY3BwX2V4cHIoYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRl
ZiBkZWNscyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZGVjbChhLnR5cGUsIGEubmFtZSkg
Zm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIHR5cGVzKHNlbGYpOgorICAgICAgICByZXR1
cm4gW2EudHlwZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToK
KyAgICAgICAgcmV0dXJuICIsICIuam9pbihzdHIoYSkgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisK
K2NsYXNzIGNwcF9mdW5jKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2Fy
Z19saXN0CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgaXNfZXh0ZW5zaW9uOiBib29s
CisgICAgb3ZlcmxvYWRfc3VmZml4OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1l
OiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRl
bnNpb246IGJvb2wpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucmV0
dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAg
IHNlbGYuaXNfZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYub3ZlcmxvYWRf
c3VmZml4ID0gIiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7
c2VsZi5yZXR1cm5fdHlwZX0ge3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSkiCisKKyAgICBk
ZWYgZ2V0X2FyZ3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBUdXBsZVtMaXN0W2NwcF9hcmddLCBMaXN0
W2NwcF9hcmddXToKKyAgICAgICAgaW5fYXJncyA9IFtdCisgICAgICAgIG91dF9hcmdzID0gW10K
KyAgICAgICAgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6CisgICAgICAgICAgICAjZm10OiBvZmYK
KyAgICAgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCkgb3IgXAorICAgICAgICAgICAgICAg
IGEudHlwZS5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0K
KyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikg
YW5kICgoKGEudHlwZS5pc19zcGFuKCkgb3IgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpKSBhbmQg
bm90IGEudHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpKSk6CisgICAgICAgICAg
ICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IGluX2FyZ3MgKz0gW2FdCisgICAgICAgICAgICAjZm10OiBvbgorICAgICAgICByZXR1cm4gaW5f
YXJncywgb3V0X2FyZ3MKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZF90eXBlKHNlbGYsIHR5cGU6
IGNwcF90eXBlKToKKyAgICAgICAgaWYgdHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19pbXBs
ZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyIgaW4gYS50eXBlLnR5cGVfbmFtZSBmb3IgYSBpbiBz
ZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICNpZiAi
R0NHTHN5bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1lOgorICAgICAgICAjICAgIHJl
dHVybiBGYWxzZQorICAgICAgICBpZiBhbnkoYS5uYW1lID09ICJidWZTaXplIiBmb3IgYSBpbiBz
ZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55
KGEudHlwZS5pc19wb2ludGVyKCkgYW5kIGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLmlzX3ZvaWQo
KSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgaWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoYS50eXBlKSBmb3IgYSBp
biBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYg
c2VsZi5yZXR1cm5fdHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgaWYgbm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLnJldHVybl90eXBl
KToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK3dl
YmtpdF9pcGNfdHlwZXM6IERpY3RbY3BwX3R5cGUsIGNwcF90eXBlXSA9IHt9CisKK3dlYmtpdF9p
cGNfdHlwZXNfY29udmVydGVyczogRGljdFtUdXBsZVtjcHBfdHlwZSwgY3BwX3R5cGVdLCBDcHBF
eHByQ29udmVydGVyXSA9IHt9CisKKworZGVmIHdlYmtpdF9pcGNfY29udmVydF9leHByKGV4cHI6
IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgIiIiIENvbnZlcnRz
IGBleHByYCBvZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlwZWAgIiIiCisgICAgY29udmVydCA9IHdl
YmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5nZXQoKGV4cHIudHlwZSwgdHlwZSksIE5vbmUpCisg
ICAgaWYgbm90IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4cHIudHlwZSA9PSB0eXBlOgorICAgICAg
ICAgICAgcmV0dXJuIGV4cHIKKyAgICAgICAgY29udmVydCA9IGNwcF9pbXBsaWNpdF9jYXN0Cisg
ICAgcmV0dXJuIGNvbnZlcnQoZXhwciwgdHlwZSkKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bh
bl90cmFuc2Zlcl90eXBlKHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgor
ICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5
cGUoKQorICAgIGFyaXR5ID0gdHlwZS5nZXRfYXJpdHkoKQorICAgIHdlYmtpdF9pcGNfZWxlbWVu
dF90eXBlID0gd2Via2l0X2lwY190eXBlc1tlbGVtZW50X3R5cGVdIGlmIG5vdCBlbGVtZW50X3R5
cGUuaXNfdm9pZCgpIGVsc2UgZ2V0X2NwcF90eXBlKCd1aW50OF90JykKKyAgICBpZiBhcml0eSBp
cyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZl
cmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9LCB7YXJpdHl9PiIpCisgICAgcmV0
dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2Vs
ZW1lbnRfdHlwZSl9PiIpCisKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBl
KHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBl
ID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgaWYgZWxl
bWVudF90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgZWxlbWVudF90eXBlID0gZ2V0X2NwcF90eXBl
KCdHQ0dMY2hhcicpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgaW5s
aW5lX2NhcGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiBlbGVtZW50X3R5cGUudHlwZV9uYW1lIGVs
c2UgNAorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiVmVjdG9yPHtzdHIoZWxlbWVudF90
eXBlKX0sIHtzdHIoaW5saW5lX2NhcGFjaXR5KX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBl
KGYic3RkOjphcnJheTx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKHR5cGUuZ2V0X2FyaXR5KCkp
fT4iKQorCitkZWYgd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24oZXhwciA6IGNw
cF9leHByLCB0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBwb2lu
dGVyX2Nhc3RfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlw
ZSgpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgcmV0dXJuIGNwcF9l
eHByKHR5cGUsIGYibWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nh
c3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXplKCkpIikKKwor
ICAgIGFzc2VydCh0eXBlLmlzX3NwYW4oKSkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJt
YWtlR0NHTFNwYW48e3N0cih0eXBlLmdldF9hcml0eSgpKX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0
cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpKSIpCisKKyMgU2VlIG1l
c3NhZ2VzLnB5IGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlCit3ZWJraXRfaXBjX2J1aWx0aW5fdHlw
ZXMgPSBzZXQoCisgICAgWyJ1aW50OF90IiwgInVpbnQxNl90IiwgInVpbnQzMl90IiwgInVpbnQ2
NF90IiwgImludDhfdCIsICJpbnQxNl90IiwgImludDMyX3QiLCAiaW50NjRfdCIsICJib29sIiwg
ImZsb2F0IiwgImRvdWJsZSIgImJvb2wiXQorKQorCisKK2RlZiB3ZWJraXRfaXBjX2dldF9tZXNz
YWdlX2ZvcndhcmRlcl90eXBlKHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfdHlwZToKKyAgICBpZiB0
eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVy
biB0eXBlCisgICAgcmV0dXJuIHR5cGUuZ2V0X3J2YWx1ZV90eXBlKCkKKworCitkZWYgd2Via2l0
X2lwY19tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIGlmIGV4cHIu
dHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1
cm4gZXhwcgorICAgIHJldHVybiBjcHBfbW92ZV9leHByKGV4cHIpCisKKworZGVmIHdlYmtpdF9p
cGNfbXNnX25hbWUoZnVuYzogY3BwX2Z1bmMpOgorICAgIHJldHVybiBmdW5jLm5hbWVbMF0uY2Fw
aXRhbGl6ZSgpICsgZnVuYy5uYW1lWzE6XSArIGZ1bmMub3ZlcmxvYWRfc3VmZml4CisKKworY2xh
c3Mgd2Via2l0X2lwY19tc2cob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBpbl9hcmdzOiBj
cHBfYXJnX2xpc3QKKyAgICBvdXRfYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSB3ZWJraXRfaXBj
X21zZ19uYW1lKGZ1bmMpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gZnVuYy5nZXRfYXJn
c19jYXRlZ29yaWVzKCkKKyAgICAgICAgaXBjX2luX2FyZ3MgPSBbY3BwX2FyZyh3ZWJraXRfaXBj
X3R5cGVzW2EudHlwZV0sIGEubmFtZSkgZm9yIGEgaW4gaW5fYXJnc10KKyAgICAgICAgaXBjX291
dF9hcmdzID0gW10KKyAgICAgICAgaWYgbm90IGZ1bmMucmV0dXJuX3R5cGUuaXNfdm9pZCgpOgor
ICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbZnVu
Yy5yZXR1cm5fdHlwZV0sICJyZXR1cm5WYWx1ZSIpXQorICAgICAgICBmb3IgYSBpbiBvdXRfYXJn
czoKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVz
W2EudHlwZV0sIGEubmFtZSldCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFu
KCk6CisgICAgICAgICAgICAgICAgaXBjX2luX2FyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBl
KCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpXQorICAgICAgICBzZWxmLmluX2FyZ3MgPSBj
cHBfYXJnX2xpc3QoaXBjX2luX2FyZ3MpCisgICAgICAgIHNlbGYub3V0X2FyZ3MgPSBjcHBfYXJn
X2xpc3QoaXBjX291dF9hcmdzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGlm
IGxlbihzZWxmLm91dF9hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9p
ZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSAtPiAoe3N0cihzZWxmLm91dF9hcmdz
KX0pIFN5bmNocm9ub3VzIgorICAgICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9
KHtzdHIoc2VsZi5pbl9hcmdzKX0pIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2lt
cGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBtc2dfbmFtZTogc3RyCisgICAgcmV0dXJu
X3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBwcmVfY2FsbF9z
dG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxs
X3N0bXRzOiBMaXN0W3N0cl0KKyAgICByZXR1cm5fc3RtdHM6IExpc3Rbc3RyXQorICAgIGluX2V4
cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBfZXhwcl0KKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5h
bWUgPSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYubXNnX25hbWUgPSB3ZWJraXRfaXBjX21z
Z19uYW1lKGNwcF9mdW5jKQorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0
dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxm
LnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAg
ICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9
IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9
IFtdCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdv
cmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJu
X3R5cGUpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmdzKGluX2FyZ3MpCisgICAgICAgIHNl
bGYucHJvY2Vzc19vdXRfYXJncyhvdXRfYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwo
KQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAi
LmpvaW4oW3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkKKyAgICAgICAgb3V0X2V4cHJz
ID0gIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgaXNf
YXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykgPT0g
MAorICAgICAgICBpZiBpc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBb
CisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbmRf
cmVzdWx0ID0gIiIKKyAgICAgICAgICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0bXRzOiAKKyAgICAg
ICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRSZXN1bHQgPSAiCisgICAgICAgICAg
ICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbCisgICAgICAgICAgICAgICAgICAgICJpZiAo
c2VuZFJlc3VsdCkiICsgKCIgeyIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxz
ZSAiIikKKyAgICAgICAgICAgICAgICBdICsgWyIgICAgIiArIHMgZm9yIHMgaW4gc2VsZi5wb3N0
X2NhbGxfc3RtdHNdICsgWworICAgICAgICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxmLnBv
c3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3VsdH1z
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1l
fSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5t
c2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOyIsCisgICAgICAgICAgICBdCisKKworICAgIGRlZiBwcm9jZXNzX2luX2FyZ3Mo
c2VsZiwgaW5fYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBpIGluIGluX2FyZ3M6
CisgICAgICAgICAgICBpZiBpLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAgICAg
ICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
LmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihpLnR5cGUsIGku
bmFtZSksIHdlYmtpdF9pcGNfdHlwZXNbaS50eXBlXSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRf
YXJncyhzZWxmLCBvdXRfYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBvIGluIG91
dF9hcmdzOgorICAgICAgICAgICAgaWYgby50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAg
ICAgICB2YWx1ZV90eXBlID0gby50eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3ZhbHVlX3R5cGVdCisg
ICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY192YWx1ZV90eXBlLCBvLm5hbWUg
KyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0
cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgICAgICBlID0g
Y3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMg
Kz0gW2VdCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAg
ICAgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgICAgICAgICAgZiJpZiAoe28ubmFt
ZX0pIiwKKyAgICAgICAgICAgICAgICAgICAgZiIgICAgKntvLm5hbWV9ID0ge3dlYmtpdF9pcGNf
Y29udmVydF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCisgICAgICAgICAgICAgICAgICAgICNmbXQ6
IG9uCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxpZiBvLnR5cGUuaXNfc3Bhbigp
OgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50
eXBlXQorICAgICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwg
Y3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRf
aXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2Fs
bF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAgICAg
ICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpXQorICAgICAg
ICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJzaXplX3QiKSwgZiJ7
by5uYW1lfS5idWZTaXplIildCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMg
Kz0gWworICAgICAgICAgICAgICAgICAgICBmIm1lbWNweSh7by5uYW1lfS5kYXRhLCB7di5uYW1l
fS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXplb2Yoe3N0cih3ZWJraXRfaXBjX3R5cGUu
Z2V0X2NvbnRhaW5lZF90eXBlKCkpfSkpOyIKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcihvLnR5
cGUsIG8ubmFtZSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJu
X3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQor
ICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBlXQor
ICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKGlwY19yZXR1cm5fdHlwZSwgInJl
dHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3Zh
bHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAg
ICAgc2VsZi5vdXRfZXhwcnMgPSBbcmV0dXJuX3ZhbHVlX2V4cHJdICsgc2VsZi5vdXRfZXhwcnMK
KyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbZiJyZXR1cm4ge3N0cih3ZWJraXRfaXBjX2Nv
bnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgcmV0dXJuX3R5cGUpKX07Il0KKworICAgIGRl
ZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGlu
IHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAge2J9IiBm
b3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0
X2NhbGxfc3RtdHMgKyBzZWxmLnJldHVybl9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiJcbntz
dHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxm
Lm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH0KK3t7e2JvZHl9Cit9fSIiIgorCisKK2Ns
YXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKG9iamVjdCk6CisgICAgbmFtZTog
c3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0Cisg
ICAgYm9keTogTGlzdFtzdHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNw
cF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorCisgICAgICAgIHNl
bGYucmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3Mg
PSBjcHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYuYm9keSA9IFsibm90SW1wbGVtZW50ZWQoKTsi
XQorICAgICAgICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlwZS50eXBlX25hbWUgIT0gInZvaWQiOgor
ICAgICAgICAgICAgc2VsZi5ib2R5ICs9IFsicmV0dXJuIHsgfTsiXQorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5u
YW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICJcbntcbiAgICAiICsgIlxuICAgICIuam9pbihz
ZWxmLmJvZHkpICsgIlxufSIKKyAgICAgICAgcmV0dXJuIGYiXG57c3RyKHNlbGYucmV0dXJuX3R5
cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYu
YXJncyl9KXtub2xpbnR9e2JvZHl9IgorCisKK2NsYXNzIGNvbnRleHRfcHJveHlfY3BwX3dlYmtp
dF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0
X2lwY19jcHBfcHJveHlfaW1wbF0KKyAgICB1bmltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3By
b3h5X3BsYWNlaG9sZGVyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJs
ZVtjcHBfZnVuY10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAg
IHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChmKSBmb3IgZiBpbiBmdW5j
c10KKyAgICAgICAgc2VsZi51bmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9s
ZGVyKGYpIGZvciBmIGluIHVuaW1wbGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBs
cyArIHNlbGYudW5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3Jp
dGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuLAorICAgICAg
ICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1
bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2Jq
ZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBpc19leHRl
bnNpb246IGJvb2wKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10
czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHBy
czogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgcmV0
dXJuX3ZhbHVlX2V4cHI6IE9wdGlvbmFsW2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5h
bWUKKyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSBjcHBfZnVuYy5vdmVybG9hZF9zdWZm
aXgKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtdKQorICAgICAgICBzZWxmLmlz
X2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5w
b3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAg
c2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gTm9u
ZQorCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5
cGUpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdv
cmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3MuYXJncywgc2V0
KGluX2FyZ3MpLCBzZXQob3V0X2FyZ3MpKQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisK
KyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9u
cygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgorCisgICAgICAgIGluX2V4cHJzID0g
IiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQorICAgICAgICBpc19hc3lu
YyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAorCisgICAgICAgIGNhbGxfZXhwciA9IGYibV9j
b250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBpZiBub3Qgc2Vs
Zi5yZXR1cm5fdmFsdWVfZXhwcjoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7
Y2FsbF9leHByfTsiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRz
ICs9IFtmIntzdHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxfZXhwcn07Il0KKyAg
ICAgICAgaWYgbm90IGlzX2FzeW5jOgorICAgICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2lu
KHN0cihlKSBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYucG9zdF9j
YWxsX3N0bXRzICs9IFtmImNvbXBsZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9KTsiXQorCisgICAg
ZGVmIHByb2Nlc3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddLCBpbl9hcmdzOiBTZXRb
Y3BwX2FyZ10sIG91dF9hcmdzOiBTZXRbY3BwX2FyZ10pOgorICAgICAgICBmb3IgYSBpbiBhcmdz
OgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGlmIGEgaW4gaW5fYXJnczoKKyAgICAgICAg
ICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJnKGEpCisgICAgICAgIGlmIHNlbGYub3V0X2V4
cHJzOgorICAgICAgICAgICAgb3V0X2FyZ19kZWNscyA9ICIsICIuam9pbihmIntzdHIoZS50eXBl
KX0iIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3Mg
Kz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh7b3V0X2Fy
Z19kZWNsc30pPiYmIiksICJjb21wbGV0aW9uSGFuZGxlciIpXQorCisgICAgZGVmIHByb2Nlc3Nf
aW5fYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3Bw
X2FyZyh3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdlYmtpdF9pcGNfdHlw
ZXNbYS50eXBlXSksIGEubmFtZSldCisgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9p
cGNfY29udmVydF9leHByKGNwcF9leHByKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1l
KSwgYS50eXBlKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmcoc2VsZiwgYTogY3BwX2FyZyk6
CisgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICB2YWx1ZV9hcmcg
PSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVl
X2FyZy5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3Bw
X2V4cHIoYS50eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9IildCisgICAgICAgICAgICBlID0gY3Bw
X2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgd2Via2l0
X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1tlLnR5cGVdCisgICAgICAgICAgICBz
ZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY192
YWx1ZV90eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAg
ICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisg
ICAgICAgICAgICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBm
InthLm5hbWV9U2l6ZSIpCisgICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbc2l6ZV9hcmdd
CisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3Rv
cmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRz
ICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0oc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsiXQorICAgICAgICAgICAgc2VsZi5pbl9l
eHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIGYie3N0b3JlX2FyZy5uYW1lfSIpXQor
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisg
ICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3Bw
X2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0K
KyAgICAgICAgZWxpZiBhLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlzaW5z
dGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgc3RvcmVfYXJn
ID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1l
KQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50
eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmlu
X2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpXQorICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAg
ICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4
cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBhLnR5cGUuaXNfcmVmZXJlbmNlKCkKKyAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAg
ICAgICAgICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5u
YW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c2VsZi5ucyh2YWx1
ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAg
ZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAg
IHNlbGYuaW5fZXhwcnMgKz0gW2VdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Vi
a2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY190
eXBlKSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6
IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0
dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIocmV0dXJuX3R5
cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3Jl
dHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJd
CisgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgaXBjX3JldHVybl90eXBlKSldCisg
ICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSByZXR1cm5fdmFsdWVfZXhwcgorCisgICAg
ZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAgICAgIHti
fSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYu
cG9zdF9jYWxsX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIiAgICB2b2lkIHtzZWxmLm5hbWV9
e3NlbGYub3ZlcmxvYWRfc3VmZml4fSh7c3RyKHNlbGYuYXJncyl9KQorICAgIHt7e2JvZHl9Cisg
ICAgfX0iIiIKKworICAgIGRlZiBucyhzZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAgICMg
VE9ETzogbmFtZXNwYWNlIGluZm8gaXMgbm90IHN0b3JlZCBpbiBuYW1lcy4KKyAgICAgICAgaWYg
dHlwZS50eXBlX25hbWUgPT0gIkFjdGl2ZUluZm8iOgorICAgICAgICAgICAgcmV0dXJuICJXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6IiArIHN0cih0eXBlKQorICAgICAgICByZXR1cm4gc3Ry
KHR5cGUpCisKK2RlZiB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzIDog
SXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICBjb3VudHMgPSBjb2xsZWN0aW9ucy5Db3VudGVyKGYu
bmFtZSBmb3IgZiBpbiBmdW5jcykKKyAgICBzdWZmaXhlcyA6IENvdW50ZXJbc3RyXSA9IGNvbGxl
Y3Rpb25zLkNvdW50ZXIoKQorICAgIGZvciBmIGluIGZ1bmNzOgorICAgICAgICBpZiBjb3VudHNb
Zi5uYW1lXSA+IDE6CisgICAgICAgICAgICBmLm92ZXJsb2FkX3N1ZmZpeCA9IHN0cihzdWZmaXhl
c1tmLm5hbWVdKQorICAgICAgICAgICAgc3VmZml4ZXMudXBkYXRlKFtmLm5hbWVdKQorCisKK2Ns
YXNzIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGlt
cGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX2ltcGxdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0
X2lwY19jcHBfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRlZiBnZXRfZnVuY3Rpb25z
KHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBzZWxmLmlt
cGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAg
ICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0
aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisK
KworY2xhc3MgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgV2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZ2Vu
ZXJhdG9yLiIKKyAgICBtc2dzOiBMaXN0W3dlYmtpdF9pcGNfbXNnXQorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLm1zZ3Mg
PSBbd2Via2l0X2lwY19tc2coZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X21lc3Nh
Z2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIuam9pbihzdHIobSkgZm9yIG0gaW4gc2VsZi5t
c2dzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKGNvbnRl
eHRfbWVzc2FnZXNfZm4sIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0
X21lc3NhZ2VzKCkpKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYzogc3RyLCBhcmdf
aW5kZXg6IGludCk6CisgICAgciA9IGFyZ19zcGVjLnJzcGxpdCgiICIsIDEpCisgICAgbmFtZSA9
ICIiCisgICAgdHlwZSA9IE5vbmUKKyAgICBpZiBsZW4ocikgPiAxIGFuZCByWzBdICE9ICJjb25z
dCI6CisgICAgICAgIG5hbWUgPSByWzFdLnN0cmlwKCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBf
dHlwZShyWzBdKQorICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSAiYXJne30iLmZvcm1hdChhcmdf
aW5kZXgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoYXJnX3NwZWMpCisgICAgcmV0dXJu
IGNwcF9hcmcodHlwZSwgbmFtZSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3Nw
ZWNzOiBJdGVyYWJsZVtzdHJdKToKKyAgICByZXR1cm4gY3BwX2FyZ19saXN0KFtjcmVhdGVfY3Bw
X2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nf
c3BlY3MpXSkKKworCitkZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6
IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJdLCBpc19leHRlbnNpb246IGJvb2wpOgorICAgIHJl
dHVybiBjcHBfZnVuYyhuYW1lPW5hbWUsIHJldHVybl90eXBlPWdldF9jcHBfdHlwZShyZXR1cm5f
c3BlYyksIGFyZ3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzKSwgaXNfZXh0ZW5zaW9u
PWlzX2V4dGVuc2lvbikKKworCitkZWYgcmVhZF9saW5lc191bnRpbChsaW5lcyA6IEl0ZXJhYmxl
W3N0cl0sIG1hdGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jbc3RyLCBOb25lLCBOb25lXToKKyAgICBm
b3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgaWYgcmUubWF0Y2gobWF0Y2gsIGxpbmUuc3RyaXAo
KSk6CisgICAgICAgICAgICBicmVhaworICAgICAgICB5aWVsZCBsaW5lCisKK2RlZiBtYWluKCk6
CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0
aW9uc10iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGhlbHA9IlByaW50IHNvbWUgZGVidWcgaW5mbyBmcm9tIHRoZSBnZW5lcmF0b3Ig
c2NyaXB0IikKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgIyBDb25z
dHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRv
IEdQVSBwcm9jZXNzLgorCisgICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMg
cmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICMg
d2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBh
biBleHRlbnNpb24gZnVuY3Rpb24uCisgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3Ry
XSA9IHNldCgpCisgICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6CisgICAg
ICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBtID0gcmUubWF0Y2go
ciIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQorICAgICAgICAg
ICAgaWYgbToKKyAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAg
ICAgICAgICAgICAgICBuYW1lPW1bMl0sCisgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVj
PW1bMV0sCisgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3Bl
Y3MobVszXSksCisgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUo
W3N0cihmdW5jKV0pCisgICAgZnVuY3MgPSBbXQorICAgIHVuaW1wbGVtZW50ZWQgPSBbXQorICAg
IGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFz
IGY6CisgICAgICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgICAg
IGZvciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBGdW5jdGlvbnMgd2l0aCBhIGdl
bmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1
cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBm
b3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBi
eSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBtID0gcmUu
bWF0Y2gociJccyooXFMrKVxzKyhcdyspXCgoLiopXCkgZmluYWw7IiwgbGluZSkKKyAgICAgICAg
ICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWUgPSBtWzJdCisgICAg
ICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9z
cGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9h
cmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPUZh
bHNlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGZ1bmMuaXNf
ZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCisgICAgICAgICAg
ICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmNzLmFwcGVuZChmdW5jKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICAgICAgdW5pbXBsZW1lbnRlZC5hcHBlbmQoZnVuYykKKworCisgICAgd2Vi
a2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcykKKyAgICAjIEluaXRpYWxpemUg
V2ViS2l0IElQQyBnZW5lcmF0aW9uLiBDb25zdHJ1Y3QgdHlwZSBtYXBwaW5ncyBmb3IgdGhlIHVz
ZWQgQysrIHR5cGVzIC0+IElQQyB0eXBlcy4KKyAgICAjIFRPRE86IG5hbWVzcGFjaW5nIGlzc3Vl
cy4KKyAgICBhaV90eXBlID0gZ2V0X2NwcF90eXBlKCJBY3RpdmVJbmZvJiIpCisgICAgYWlfdHJh
bnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZSgiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8iKQorICAgIHdlYmtpdF9pcGNfdHlwZXNbYWlfdHlwZV0gPSBhaV90cmFuc2Zlcl90
eXBlCisKKyAgICB3aXRoIG9wZW4odHlwZXNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGxpbmVz
ID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGls
KGxpbmVzLCAiLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5
cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgor
ICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxp
bmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4i
KToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc3RkOjppc19z
YW1lX3Y8KFx3KyksIChcdyspPlwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2NwcF90eXBlKG1bMV0pXSA9IGdldF9jcHBf
dHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUu
bWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdysp
XCkgJiYgc2l6ZW9mXCgoXHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAg
ICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1b
MV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAg
ICAgICAgICAgICBjcHBfY2FzdF90aHJvdWdoX3R5cGUgPSBnZXRfY3BwX3R5cGUobVs0XSkKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAg
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5
cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0
X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRl
cnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRl
cl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChc
dyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06Cisg
ICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAg
ICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0YXRpY19j
YXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlw
ZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgIyBGb3IgYWxsIHR5cGVzIGluIHRoZSBpbnB1dCBBUEksIGZvcm0gY29ycmVzcG9uZGlu
ZyBJUEMgdHlwZXMgYW5kIGNvbnZlcnNpb25zLgorICAgICMgVE9ETzogdGhpcyBpcyBub3QgZHJp
dmVuIGJ5IHRoZSB0eXBpbmcuCisgICAgYWxsX3R5cGVzID0gc2V0KCkKKyAgICBmb3IgZnVuYyBp
biBmdW5jczoKKyAgICAgICBhbGxfdHlwZXMudXBkYXRlKGZ1bmMuYXJncy50eXBlcygpICsgW2Z1
bmMucmV0dXJuX3R5cGVdKQorICAgICMgU29ydCBieSBsZW4gc28gdGhhdCB0ZW1wbGF0ZSBhcmdz
IGNvbWUgYmVmb3JlIHRlbXBsYXRlcy4KKyAgICBmb3IgY3BwX3R5cGUgaW4gc29ydGVkKGFsbF90
eXBlcywga2V5PWxhbWJkYSB4OiBsZW4oeC50eXBlX25hbWUpKToKKyAgICAgICAgaWYgY3BwX3R5
cGUgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAKKyAg
ICAgICAgaWYgY3BwX3R5cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3BwX3R5cGUuaXNfc3Bhbigp
OgorICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNm
ZXJfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVd
ID0gdHJhbnNmZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICBpZiBjcHBfdHlw
ZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpOgorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IHdlYmtp
dF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1sodHJhbnNmZXJfdHlwZSwg
Y3BwX3R5cGUpXSA9IHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9z
cGFuX3N0b3JlX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c19jb252ZXJ0ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVp
bnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgIGVsaWYgY3BwX3R5cGUuaXNfcmVmZXJl
bmNlKCkgb3IgY3BwX3R5cGUuaXNfY29uc3RfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29u
dGFpbmVyKCk6CisgICAgICAgICAgICB2YWx1ZV90eXBlID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5
cGUoKSBpZiBub3QgY3BwX3R5cGUuaXNfY29udGFpbmVyKCkgZWxzZSBjcHBfdHlwZQorICAgICAg
ICAgICAgaWYgdmFsdWVfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgICAgICBjb250
YWluZWRfdHlwZSA9IHZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkKKyAgICAgICAgICAg
ICAgICB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID0gd2Via2l0X2lwY190eXBlc1tjb250YWlu
ZWRfdHlwZV0KKyAgICAgICAgICAgICAgICBpZiB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID09
IGNvbnRhaW5lZF90eXBlOgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2Nw
cF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICB0cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKGYie3ZhbHVlX3R5cGUuZ2V0X2Nv
bnRhaW5lcl9uYW1lKCl9PHtzdHIod2Via2l0X2lwY19jb250YWluZWRfdHlwZSl9PiIpCisgICAg
ICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlw
ZQorICAgICAgICAgICAgICAgICAgICAjIFRPRE86IEhlcmUgbWlnaHQgYmUgY2FzZSB3aGVyZSBW
ZWN0b3I8R0NHTGludD4gd2FzIHVzZWQgaW4gdGhlIGludGVyZmFjZSBhbmQgVmVjdG9yPGludDMy
X3Q+IGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgSVBDIGRlZmluaXRpb24u
IFRoZXJlIGlzIG5vIHNlbnNpYmxlIHdheSB0byBkbyB0aGlzIGF0IHRoZSBtb21lbnQuIFdlIGRv
IG5vdCBjb252ZXJ0LCByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgIyBleHBlY3QgdGhhdCBh
bGwgdGhlIGludm9jYXRpb25zIGFyZSB0YWtlbiBjYXJlIG9mIHRoZSBmYWN0IHRoYXQgR0NHTGlu
dCBpcyB0aGUgc2FtZSB0eXBlIGFzIGludDMyX3QuCisgICAgICAgICAgICAgICAgICAgICMgVGhp
cyB3aWxsIG5vdCBob2xkIGZvciBhbGwgdHlwZXMgc3VjaCBhcyBHQ0dMYm9vbGVhbi4KKyAgICAg
ICAgICAgICAgICAgICAgI3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRy
YW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlw
ZV0gPSB2YWx1ZV90eXBlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGVzW2NwcF90eXBlXSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAKKyAgICAjIFRo
ZSBpbnB1dCB0byB0aGUgZ2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUu
CisgICAgIyBSdW4gdGhlIHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBnZW5lcmF0b3JzID0gWwor
ICAgICAgICBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcywgdW5p
bXBsZW1lbnRlZCksCisgICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1
bmNzKSwKKyAgICAgICAgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAor
ICAgIF0KKyAgICBmb3IgZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBnLmdlbmVyYXRlKCkKKwor
ICAgIGlmIG9wdGlvbnMudmVyYm9zZToKKyAgICAgICAgcHJpbnQoIkltcGxlbWVudGVkOiIpCisg
ICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAge3N0cihpKX0gZmluYWxcbiIgZm9yIGkgaW4gZnVu
Y3MpKQorICAgICAgICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgICAgICBwcmludCgiIi5q
b2luKGYiICAgIHtzdHIodSl9IGZpbmFsXG4iIGZvciB1IGluIHVuaW1wbGVtZW50ZWQpKQorICAg
ICAgICBwcmludChmIkltcGxlbWVudGVkOiB7bGVuKGZ1bmNzKX0sIHVuaW1wbGVtZW50ZWQ6IHts
ZW4odW5pbXBsZW1lbnRlZCl9LCB0b3RhbDoge2xlbihmdW5jcykrbGVuKHVuaW1wbGVtZW50ZWQp
fSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZSBtYXAgdG8gV2ViS2l0IElQQyB0eXBlIG1hcDoi
KQorICAgICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlm
IHQgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3Ry
KHQpfSAtPiB7c3RyKHdlYmtpdF9pcGNfdHlwZXNbdF0pfSIpCisgICAgICAgIHByaW50KCJDKysg
dHlwZXMgd2l0aG91dCBXZWJLaXQgSVBDIHR5cGU6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3Bw
X3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0IG5vdCBpbiB3ZWJraXRfaXBjX3R5cGVz
OgorICAgICAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IikKKyAgICAgICAgcHJpbnQo
IldlYktpdCBJUEMgdHlwZSBjb252ZXJzaW9ucyIpCisgICAgICAgIGZvciAoYSwgYiksIGNvbnZl
cnRlciBpbiB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuaXRlbXMoKToKKyAgICAgICAgICAg
IHByaW50KGYiICAgIHtzdHIoYSl9IC0+IHtzdHIoYil9IDoge2NvbnZlcnRlci5fX25hbWVfX30i
KQorICAgICAgICBwcmludCgiRG9uZS4iKQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18g
PT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDhiOTM4ZmExMWY4
MTVkMzdlZTgwMzc3ZmQ2NGIwYmM3M2RjODE0MC4uNzYxNmE3YjcwMTFjZGQxZmY3Yjk4NmY2ZDIz
MmIxMzE0OTZiY2U5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTEyLTAxICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMg
YSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3Ig
R1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2Vi
S2l0IElQQy4KKworICAgICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGUgbWlzc2lu
ZyBmdW5jdGlvbmFsaXR5LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxlIHRoZSB0ZXN0cyB0
aGF0IGFjdHVhbGx5IHBhc3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBiZWZvcmUgdGhlCisgICAg
ICAgIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAyMC0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRhYmxlL3dyaXRhYmxlIHRvIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
YTIyNTI4ZmExYjI2Nzg3MzE4NTMwNTgwMDMzOTBmZDc1MzdkYzBjNi4uZGE1NjM4NjI4OWQ2Yzk0
ZDRmZmFlY2E4OWFkMmJhOTkzYjEwMTZjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0zMTcsNiArMzE3LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2Vi
Z2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1s
CiBodHRwL3Rlc3RzL3dlYmdsIFsgU2tpcCBdCiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmds
Lmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90
ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2Iv
MjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBb
IFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0
LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFRpbWVvdXQgXQord2Via2l0
Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQu
aHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9n
bC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3Qv
Y2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMt
ZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmdwdSBbIFNraXAgXQogCiBhY2Nlc3NpYmls
aXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlwZXMuaHRtbCBbIFNraXAgXQo=
</data>
<flag name="commit-queue"
          id="432230"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415124</attachid>
            <date>2020-12-01 03:52:59 -0800</date>
            <delta_ts>2020-12-01 04:06:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201135255.patch</filename>
            <type>text/plain</type>
            <size>564347</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4
OGJkNDA3N2EwYzU0YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQxYTM1
Y2MwMDhhZWE2OWZmZjJjZDkxZDAyMzJlZmEwNzFlN2VkNTQuLjk4MTE1ZTE1Yjc2MzQ5NjFhYzM5
MGRiMjNkNTMwYjczZDI1ZDUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJj
Nzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQw
MGIwZmNlMjQxZWZmYjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiAr
MzU3LDE0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyMmVkNmNjMjRlNmU2Njg4NjBmNzRjYzllZGQ4NGIzZDlkZGMzMC4uOTUzMWI0
OTI3MWQwZDQwMWFkODIyNzkxZjg0ZWZkODY1N2Q2NmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2
RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07
CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsK
IAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIy
Mjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2
RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5
NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Niw2
ICsyMjQ2LDggQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkz
NkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjMsOSAr
MTAyMjUsMTQgQEAKIAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEw
MzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4
MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcy
NTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5pZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjEzLDYgKzI2NjIwLDggQEAKIAkJ
CQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJ
CQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQx
ODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJ
N0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2Ft
cGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9T
YW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovLApAQCAtMjY3NzksNiArMjY3ODgsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5
RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBE
NkExMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlC
Mjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJ
CQkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBF
MDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1
OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RB
NTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2
NzkwLDYgKzI2ODAxLDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZC
RDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYx
NkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2Vy
LmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwICovLApAQCAtMzIwODksNiArMzIxMDEsNyBAQAogCQkJCTdCMTAzMzlFMjU0
OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUz
QyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0MDI1LDYgKzM0MDM4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBF
Q0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAw
MTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIy
RkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVv
U2FtcGxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVj
NzE3NDU5N2YwNmUwZTUwOWU3OGZhYS4uMmY4Y2JmMDg3MDUwYzVmMDg2ODBmMmVkOTdkMWYzMDg4
NjYxYTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3NywyMSArNjc3LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZl
clN1YkRhdGEoKSBjYWxscyB0byB1c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0
ciA9IG1fY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNl
dC51bnNhZmVHZXQoKSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0
aFB0ci51bnNhZmVHZXQoKSAqIGNoZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBo
aWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNw
eShzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5i
eXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICog
ZWxlbWVudFNpemUpOwotCi0gICAgaWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkp
Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgImdldEJ1ZmZlclN1YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZm
ZXIiKTsKLSNlbmRpZgotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCk7CisgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9m
ZnNldCwgbWFrZUdDR0xTcGFuKHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVz
cygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBj
b3B5TGVuZ3RoICogZWxlbWVudFNpemUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIpCkBAIC0xNzAyLDcgKzE2OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxpc3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xOTY3
LDkgKzE5NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0
LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8
V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAg
LTIwMTQsNyArMjAwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBs
ZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQogCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHVu
aXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJpbmRTYW1wbGVyIiwgImludmFs
aWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNTksMTcgKzIwNDgsMTEg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAgICAgICAgaW50IHZh
bHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0
IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2Ft
cGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLm9iamVjdCgp
LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxp
ZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMTgsNyArMjEwMSw3IEBA
IEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdMU3lu
YyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNsaWVudFdhaXRTeW5jIiwgInRpbWVv
dXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIpOwogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19GTFVTSF9DT01NQU5E
U19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZhbGlkIGZsYWdzIik7CiAgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CkBAIC0yMTc5LDkg
KzIxNjIsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVs
ZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIs
IGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQVNTRVJUKGZl
ZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAKKwogICAg
IGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRi
YWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjQ4LDcgKzIyMzEsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tQ
cmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiZWdpblRyYW5zZm9ybUZlZWRiYWNr
IiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1pdGl2ZSBtb2RlIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIyODgsNyArMjI3MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRUcmFuc2Zvcm1GZWVkYmFjayIs
ICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwogCiAg
ICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVzZWQoZmFsc2UpOwpAQCAtMjI5OSw3
ICsyMjgyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28KIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJ0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpT
RVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWluZ3Muc2l6ZSgpID4gbV9tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAtMjQ4NSwyNCArMjQ2OCwyNCBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPEdDR0xpbnQ+IHJl
c3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3aXRjaCAocG5hbWUp
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
VFlQRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
eCk7IH0pOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRToKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TklGT1JNX0JMT0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
T0ZGU0VUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQVJSQVlfU1RSSURF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklYX1NUUklERToKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlm
b3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dCk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOiB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgpOyB9KTsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDggKzM1NTUsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoQ2xlYXJDYWxs
ZXJPdGhlcik7CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+
cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmUwM2E4OWZjNjk1M2QyMDAwODJmMjQ5NTQ5
NzYzYmUwNWE5NjE5NS4uYTQ0OTk0ZTBlZDcwMjBkMzQzMWE4ZTBjMjBiZDc1MGU4YzA3NDEwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTczMiw4ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxl
bWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENv
bnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9y
RXZlbnQsCkBAIC00Mzk1LDEwICs0Mzk0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAg
ICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0g
ICAgR0NHTHNpemVpIGxlbmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAg
IEdDR0xzaXplaSByb3dzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFk
blBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7
CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQog
ICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQy
ODI4ZjJkNTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIFdlYkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7
Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFw
aGljc0NvbnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5j
U3RhdHVzKTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldFN5bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBp
ZiAobV9zeW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAg
ICBzY2hlZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjli
ODZiYzMxODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cApAQCAtNTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3Nl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVO
QUJMRShXRUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KGF0dHJpYnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJ
RCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5
SUQoKTsKQEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1f
cGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZh
bCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQor
ICAgIC8vIFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQg
d29yaywgcmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlz
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3
NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEz
Y2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRp
b25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCAzYTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0
OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJ
RCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxw
dHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVy
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRl
eCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2Mz
MzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdp
bmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFs
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAv
LyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAg
ICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qg
PSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUy
ZmIzLi43YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAt
MzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9j
ZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0lu
V2ViUHJvY2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1By
b2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZi
ZDFkNDNjMDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFm
NjRhYTBkZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBA
IC05Niw2ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1
bmRsZUlzV2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3Rh
dGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07Cisg
ICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQ
cm9jZXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9
IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4
NjczNDQ3NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wu
aApAQCAtMjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3No
YWRlcl9jb21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NU
QVRVU19LSFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9l
eHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3Ig
ZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8g
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6
CiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3Vw
TWFya2VyRVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
KSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVy
cwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVt
b3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0g
MDsKQEAgLTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzQU1EKCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11
c3QgYmUgYXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNo
IGNvbmZpZ3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBk
ZjRhMTE5YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIx
YWVhN2E1YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQ
SElDU19DT05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAi
Rm9ybWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5o
IgpAQCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6
OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBy
ZXN1bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ct
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0
ZXMsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4
dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0
dHJzKGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1
MmRjNmVmMy4uYmE3MmIzMWFkNjU4NWI0YTliYjVkNmFkZWZjMWJmMTNkZjVmM2JhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0
IGZvciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGlj
OgogICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGlj
OgogICAgICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFw
aGljc0NvbnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRp
b24gaW4gY29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZm
ZWN0IHRoZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGlj
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2Ny
ZWVuLCBHcmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZp
cnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGll
bnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQg
cmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7
IH0KIAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCB1bmRlcnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZv
aWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05
ODAsNyArOTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXpl
aSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykg
PSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0
dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlw
dHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBt
b2RlKSA9IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0x
MTI0LDggKzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5
IHBvaW50cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1
YWwgR0NHTHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAg
ICB2aXJ0dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xp
bnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdD
R0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBm
aWx0ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9
IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9
IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
ID0gMDsKQEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
ID0gMDsKICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNh
bXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJm
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMo
R0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFs
IEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdD
R0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1l
b3V0KSA9IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRT
eW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdD
R0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVy
IC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NH
THVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dM
dWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgdW5pZm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykgPSAwOwotCisgICAgCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdD
R0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBwbmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9v
bGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0xMzk0LDcgKzEzOTQsNiBAQCBpbmxpbmUgR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdQogICAgIHJldHVybiB2YWx1ZVswXTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCA4NWMyOWE0YjZlNTYxMTBkYzdiZDc0N2FlMzM5ODdj
MzQwMzc1ZGYxLi4zYjA2NGMzZTc2OGVjYzRiZjAyYjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+
CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NCwxMyArNDYsMTcg
QEAgdHlwZWRlZiB1bnNpZ25lZCBHQ0dMdWludDsKIHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0Owog
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQ0dMaGFsZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dM
Y2xhbXBmOwordHlwZWRlZiBjaGFyIEdDR0xjaGFyOwordHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMq
IEdDR0xzeW5jOwordHlwZWRlZiB2b2lkIEdDR0x2b2lkOworCisvLyBUaGVzZSBHQ0dMIHR5cGVz
IGRvIG5vdCBzdHJpY3RseSBtYXRjaCB0aGUgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wg
RVMgMi4wCisvLyBoZWFkZXIgZmlsZSBmb3IgYWxsIHBsYXRmb3Jtcy4KIHR5cGVkZWYgaW50cHRy
X3QgR0NHTGludHB0cjsKIHR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRyOwotdHlwZWRlZiBj
aGFyIEdDR0xjaGFyOwordHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIHR5cGVkZWYgbG9u
ZyBsb25nIEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7
Ci10eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Ci10eXBlZGVmIHZvaWQgR0NHTHZv
aWQ7CiAKIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIApAQCAtNTgsMTMgKzY0
LDE3IEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5zaWdu
ZWQgR0x1aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPgoraW5saW5lIGNvbnN0ZXhwciBz
aXplX3QgZ2NHTFNwYW5EeW5hbWljRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGdjR0xTcGFu
RHluYW1pY0V4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQq
IGFycmF5KQorICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3Qgc2l6ZSA9IEV4
dGVudCkKICAgICAgICAgOiBkYXRhKGFycmF5KQotICAgIHsgfQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQogICAgIEdDR0xTcGFuKFQg
KCZhcnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQpAQCAtNzIs
NiArODIsMTIgQEAgc3RydWN0IEdDR0xTcGFuIHsKICAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3Bh
bjxVLCBFeHRlbnQ+JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxl
X3Y8VSgqKVtdLCBUKCopW10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQogICAgICAgICA6
IGRhdGEob3RoZXIuZGF0YSkKICAgICB7IH0KKyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIEV4
dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQorICAg
IEdDR0xTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0K
ICAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJl
dHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC03OSw3ICs5NSw3IEBAIHN0cnVjdCBHQ0dM
U3BhbiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxULCBn
Y0dMU3BhbkR5bmFtaWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1
ZlNpemVfKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXpl
XykKQEAgLTEyMSw2ICsxMzcsMTEgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CiAgICAg
ICAgIDogZGF0YShvdGhlci5kYXRhKQogICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAq
IHNpemVvZihVKSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+
JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXpl
KGFycmF5LnNpemUoKSAqIHNpemVvZihVKSkKKyAgICB7IH0KICAgICBHQ0dMdm9pZCogZGF0YTsK
ICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CkBAIC0xNTIsOCArMTczLDExIEBAIHN0cnVj
dCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+CiBHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1HQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+OwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+Jikg
LT4gR0NHTFNwYW48VCwgTj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdD
R0xTcGFuPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdDR0xT
cGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzBmMmYzMDY4ZmYwMjkxYWY1YmU2MGE1YzVmNmUxZWVi
N2E0YWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgcGxhdGZvcm1J
bml0aWFsaXplKCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CisKK1BsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVRleHR1
cmUoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitFeHRlbnNpb25zR0wmIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENv
bnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAor
eworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQorewor
ICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlm
IChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7
CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXll
ckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7Cisg
ICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFy
IHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0
cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAgIGZvciAoYXV0byogY2xp
ZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlkQ29tcG9z
aXRlKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRv
Q2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7CisgICAgaWYgKCFjb250ZXh0QXR0cmlidXRl
cygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
PSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZv
ciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3Vs
ZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVk
KCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkpIHsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKKyAgICAg
ICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7CisgICAgfQorfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0
aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFp
bGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5h
ZGQoZXh0ZW5zaW9uKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK1Bs
YXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZThh
MDkxNGQ4ZThlMjllMmQyODMxMjUwNGM0ZWIzMjBiMTE5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JK
Q19DTEFTUyBXZWJHTExheWVyOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW47CisjZW5kaWYKKworLy8gQSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRz
IHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJh
d2luZyBidWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9y
dC4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
IDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
IG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAg
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Qg
ZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwor
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7
CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmlu
YWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBlbmFi
bGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7
CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCisgICAgdXNpbmcg
RXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRV
bnRpbEluaXRpYWxpemVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisK
KyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxT
dHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5z
aW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91
bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0g
ZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9
OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAyODNkYTgyYzZhNjAy
ZWE0YjU1N2M2ODZjZmQ4MjNkMDgxYzU1ZTRhLi43YzE1MWZhMjg1MGYzM2MxNDlhOWRjODIyMzgx
YjhmY2JkZTljYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00NiwyOCArNDYsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0
cmluZykKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9p
c0FNRChmYWxzZSkKLSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlv
bihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2Up
Ci0gICAgLCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKICAg
ICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8v
IEZJWE1FOiBpZGVhbGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBB
TkdMRQotICAgIC8vIHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJp
dmVyIHdvcmthcm91bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9S
RU5ERVJFUikpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3Zl
bmRvci5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRv
ckNvbXBvbmVudHMuY29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29t
cG9uZW50cy5jb250YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlm
ICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwg
PSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIp
KQotICAgICAgICBtX2lzSW1hZ2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdM
RTo6fkV4dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDcgKzgzLDcgQEAgYm9v
bCBFeHRlbnNpb25zR0xBTkdMRTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCitHTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpO
T19FUlJPUjsKIH0KQEAgLTExNCwxMCArOTQsMTEgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29u
dGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5H
VEhfQU5HTEUpOworCiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xf
VFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1p
bmF0aW9uLgotICAgIGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0NHTGludCByZXR1cm5l
ZExlbmd0aCA9IDA7CiAgICAgZ2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFk
ZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYg
KCFyZXR1cm5lZExlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xNDcs
NyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4
dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAs
IGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0
WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQg
bG9uZyBmaWx0ZXIpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIC8vIEZJ
WE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUuCiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTU2
LDcgKzEzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nCiAgICAgZ2w6OkJsaXRGcmFtZWJ1
ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgx
LCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNSw3ICsyMTYsNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykK
ICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDMsMTUgKzIyNCwxNSBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaQogICAg
IGdsOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOworICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihvZmZzZXQpLCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzUwLDcgKzMzMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBn
bDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQxMiw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kCiAgICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC00MzksNyArNDIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGwKICAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDM3LDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2kKICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykK
LXsKLSAgICAvLyBXZSBjYW4gYXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRo
ZSBjYWxsaW5nIGZ1bmN0aW9ucwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAg
aW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19
Ci0jZW5kaWYKLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJl
bW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwg
aS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25l
IGJlZm9yZSByZWFkaW5nIHBpeGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJz
ID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVm
ZmVyVGFyZ2V0ID0gbV9jb250ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6
OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9jb250ZXh0LT5tX3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAg
ICBtX2NvbnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZm
ZXJUYXJnZXQsIG1fY29udGV4dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9
Ci0gICAgKHZvaWQpIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7
Ci0gICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdM
ZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYg
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAg
ICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211
bHRpc2FtcGxlRkJPKTsKLQotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRl
Y3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlv
bi4gU3VyZmFjZSB0aGlzIGluIHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwg
YW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGlu
Z1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAm
JiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oZGF0YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
Cit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0NDUsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAs
NyArNDUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNm
YWE2ZTM4ZmY3MmY0YjIzMjMuLmNiZjQ5OGJkN2MxYTFhYjlhYTZiNzBmYjVkMzhhYzRiOTJmYjAz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25n
IHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBs
b25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcg
ZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBs
b25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAg
Ym9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29s
IGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3Io
KSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdElu
RnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkg
KmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMjAsOCBA
QCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBi
b29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwot
ICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplOwotCiAgICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0g
ICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hl
dGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBl
eHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JB
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNi
OGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNC4uMWQ2MDRiNzFkNDgxNGY1OTdjMmMy
ZmM4OWVkYzk2NDhkYzEzYzc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
QEAgLTQ0MywzMiArNDQzLDUzIEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YS5idWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRh
LmRhdGEsIGZhbHNlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lk
Kj4ob2Zmc2V0KSwgdHJ1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQog
ewotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRy
aXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBj
YWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92
ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5l
LiwKKyAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJl
Zm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1f
aXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2Fy
eShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAg
ICB9Ci0gICAgZ2w6OlJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhKTsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCk7CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAg
IEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMg
JiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJp
bmcgdGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4g
dGhlCisgICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEg
Y2hhbm5lbCBmaXh1cCBiZWxvdy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0
eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3Vu
ZFJlYWRGQk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdy
YXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVs
dGlzYW1wbGVGQk8pKSkKICAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgs
IGhlaWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0K
IC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3cs
IHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bikKQEAgLTg5OCwyMCArOTE5LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6
QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwog
fQogCi12b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJp
dGZpZWxkIGFjY2VzcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zm
c2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGds
OjpVbm1hcEJ1ZmZlcih0YXJnZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0
ciA9IGdsOjpNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFw
aGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0
dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAo
IWdsOjpVbm1hcEJ1ZmZlcih0YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dM
ZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRl
T2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKQEAgLTEwMDgsMTQgKzEwMjUsMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwKICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2
b2lkKj4ob2Zmc2V0KSwgMCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxH
Q0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+
JiBwYXJhbXMpCitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dM
aW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3Jh
bSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9n
cmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUs
IHBhcmFtcy5kYXRhKCkpOworICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0
LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAt
MjEwMSwyMiArMjExOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGds
OjpHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwg
bnVsbHB0ciwgdmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5k
ZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NH
THNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCkBAIC0yMzkyLDEyICsyMzk0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmpl
Y3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6
OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0
aW9ucwpAQCAtMjgzOSwyMCArMjg0MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAg
IGdsOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xm
bG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFs
dWUgPSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2
KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAt
Mjg5NSwxMiArMjkwMiwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3lu
YyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0
U3luYyhzeW5jLCBmbGFncywgdGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBu
YW1lLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3MzU5N2Y0NzUzZDBiZWMxZDAyZTdkNWZjZmRjNjQzYTk4M2M4OGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgiCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09D
T0EpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW46On5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpID0gZGVmYXVs
dDsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZTg4YzJmOTliMWNhYTU4MTE3YzczOTExYTUx
YjY3ZGRlNjMyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
R0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFjZSBmb3Ig
aW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dh
cAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxsIG93biB0
aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0
YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFk
YXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2
ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8gb2J0YWlu
IHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9mIHRoZSBt
ZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhp
cyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJm
YWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUgZXhpc3Rp
bmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgorICAgICAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIFByb2R1Y2VyIHNwZWNpZmljIG1ldGFkYXRhIGhh
bmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KKyAgICB9OworICAgIC8vIFJldHVybnMgdGhlIG1l
dGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xp
ZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250ZW50cyBz
dXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAvLyB0aW1lIG9mIHRo
ZSBjYWxsLgorICAgIC8vIFJldHVybnMgZWl0aGVyOgorICAgIC8vIC0gRW1wdHkgYnVmZmVyIGlm
IG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCisgICAgLy8gLSBCdWZmZXIgd2l0aCBlbXB0
eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBi
dWZmZXIgd2FzIGF2YWlsYWJsZQorICAgIC8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGlu
IHVzZS4KKyAgICAvLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KKyAgICB2aXJ0dWFsIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgPSAwOworCisgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlz
cGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgorICAgIC8vIENsaWVudCB0cmFuc2ZlcnMgdGhl
IG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgorICAg
IHZpcnR1YWwgdm9pZCBwcmVzZW50KEJ1ZmZlcikgPSAwOworCisgICAgLy8gRGV0YWNoZXMgdGhl
IGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEg
aGFuZGxlLgorICAgIC8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0
ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCisg
ICAgLy8gdGhpcy4KKyAgICB2aXJ0dWFsIHZvaWQqIGRldGFjaENsaWVudCgpID0gMDsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpp
bmRleCAyZTFjNzk5ZTgyODUzYjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi43N2NhMjAwYmQ3
ZmZlZmVkMzk4ZjkxMmE3OWQ0MjUxMzQ2YmY3ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkV4
dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJIb3N0
V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0YXRpYyBF
R0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
ID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5IGRpc3Bs
YXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQg
PSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRp
bGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJvY2Vzcygp
KTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0KSB7
CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xhdGlsZSBw
bGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2luY2UgY2xp
ZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFsIGNvbnRl
eHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgIGlmIChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55
Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7CiAKICAg
ICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8gaG9zdFdp
bmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhv
c3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlvbigpLCAm
c2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0
V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LnB0cigp
LCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9j
ZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51bGxwdHIs
ICZzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJv
YmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAog
c3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwg
Q0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJy
ZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5
SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGlu
YXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0KQotICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3RpbmF0aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGlu
YXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0g
YXR0cnMuaXNXZWJHTDI7CiAKQEAgLTI5MywyNiArMjk5LDI4IEBAIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0CiAgICAgaWYgKG1faXNGb3JXZWJHTDIpCiAgICAgICAgIGdsOjpFbmFibGUoR3JhcGhp
Y3NDb250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAorICAgIFZlY3Rv
cjxBU0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBpZiAobV9pc0Zvcldl
YkdMMikgeworICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdv
cmsuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25f
cXVlcnlfYm9vbGVhbiJfcyk7CisgICAgfQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9u
cygpOwotCiAgICAgaWYgKCFuZWVkc0VBR0xPbk1hYygpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogcmVxdWlyZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAgICAgICAi
R0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiLCAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0
dXJlcy4KLSAgICAgICAgICAgICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLCAvLyBG
b3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgotICAgICAgICB9
OwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChyZXF1
aXJlZEV4dGVuc2lvbnMpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBw
b3J0cyhyZXF1aXJlZEV4dGVuc2lvbnNbaV0pKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdM
LCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgcmVxdWlyZWRFeHRlbnNpb25zW2ld
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIC8vIEZv
ciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMu
YXBwZW5kKCJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSJfcyk7CisgICAgICAgIC8vIEZvciBj
cmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCisgICAgICAgIHJlcXVp
cmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJfcyk7
CisgICAgfQogCi0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRF
eHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAg
ICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9H
KFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJh
Y3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5z
aW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ly8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUNDQVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBz
dGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8vIHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3Jt
U2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0byBDYXRhbHlzdCB0b28uCkBAIC0zMzEsMTMg
KzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBj
aGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0gICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVy
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fd2ViR0xMYXllciA9
IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0
cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyAgICBp
ZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsKKyAgICBlbHNl
IHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgICAgICBtX3dl
YkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhh
XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJH
TCBMYXllciJdOworICAgICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5
ZXIiXTsKICNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3N3YXBDaGFpbiA9ICZbbV93ZWJHTExh
eWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQg
d2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAgR0xlbnVtIHRleHR1cmVUYXJn
ZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBAIC00MDYsMTMgKzQxOCwxMiBAQCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKCkKICAgICAgICAg
aWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQogICAgICAgICAgICAgZ2w6OkRlbGV0ZUZy
YW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pOwogICAgIH0KLSAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
cikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlC
dWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExheWVyKSB7Ci0gICAgICAgIGF1dG8gcmVj
eWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgICAgICBhdXRv
IHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICAgICAg
aWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFj
ZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7Ci0gICAgICAgIGF1dG8gY29u
dGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFjaENsaWVudF07CisgICAgICAgIGF1dG8g
Y29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0YWNoQ2xpZW50KCk7CiAgICAgICAgIGlm
IChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3Bs
YXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBAIC01NzUsMTEgKzU4NiwxNiBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQog
ICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQog
ICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQgYnVmZmVyIG5vdywgYmVjYXVzZSBpdCBt
b3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBhdCB0aGUgdGltZSBpdCB3aWxsIGJlIHJl
dXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVm
ZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZm
ZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICBFR0xfRGVzdHJv
eVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOwogICAgIHJlY3lj
bGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQoreworICAgIEFTU0VSVCghZ2V0
SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAgIGF1dG8gYmFja2luZyA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCks
IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0CiAgICAgLy8gZm9yIE9wZW5H
TCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkgKG9ubGluZS9v
ZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVuIGNvbnNpZGVyIGFsbCBHUFVzLCBvciBy
ZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5zCiAgICAgLy8gYWxsIG9mZmxpbmUgcmVu
ZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQu
Ci0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmRvd1Nl
cnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxs
IHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCiAgICAgLy8gbV9kaXNwbGF5
TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNlLgogICAgIGlmIChwcmltYXJ5T3BlbkdM
RGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NDYsMTIgKzY2MiwxMiBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBj
b25zdAogICAgIC8vIGFuZCBNQUMvTUFDQ0FUQUxZU1QgYW5kIE9QRU5HTC9PUEVOR0xFUy4KICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICAKKwogI2lmIEhBVkUoQVBQTEVfR1JBUEhJ
Q1NfQ09OVFJPTCkKICAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02
ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9y
RGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJvbSBvdGhlciBn
cmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGdsOjpGbHVzaCgp
OwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZl
cl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVy
KCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVm
ZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVyIHByZXBhcmVG
b3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwg
bV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVzZW50KHsgV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB9KTsK
ICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAKICAgICBib29s
IGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBFcnJvciB3aWxs
IGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgpIHdoaWNoIHdp
bGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNOZXdCYWNraW5n
KQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAgICAgYWxsb2Nh
dGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0NTUwOWM3NDI5
ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYm
IFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIGF1dG8g
YXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10g
aW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNP
cGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBbbV93ZWJHTExh
eWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJHTExh
eWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
R3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFz
Q1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVyIHN3YXBDaGFp
bl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFjN2M5N2NmNjZl
NzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3ZWE4ODA5NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1w
b3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPG1l
bW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1z
dHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2b2lkKiBoYW5k
bGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5kbGUgKHN1Y2gg
YXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdl
bWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFjZXMuCi0vLyBU
aGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KLS8v
IFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2ls
bCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJl
ZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5Ci0v
LyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCi0vLyBF
eGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBh
cyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVyIGlzIGRvbmUg
d2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5n
Ci0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVj
eWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAogLSAoaWQpaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBz
aG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwogCi0vLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgot
Ly8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250
ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8vIHRpbWUgb2Yg
dGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1
ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2Ug
YW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMg
YXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCi0vLyAtIFN1
cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpcmVjeWNsZUJ1
ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50
cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3Vy
ZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlX
aXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwotCi0vLyBEZXRh
Y2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBt
ZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3Vi
bWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGlu
ZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1t
CmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMuLjE2OGZkNWY2
Yzg0MjM3YmRmOGFiOWNiYmNhNjQwNzM5NTA1YzkyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMjAsNyArMjAs
NyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKQEAgLTMyLDEz
ICszMiwzOSBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bUNBTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisKK2NsYXNz
IFdlYkdMTGF5ZXJTd2FwQ2hhaW4gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkdMTGF5
ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKKyAg
ICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyAgICB2b2lkIHBy
ZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7CisgICAgICAg
ICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCisgICAgICAgICAgICAg
ICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShtX3NwYXJlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgICAgICB2b2lkKiByZXN1bHQgPSBtX2Rp
c3BsYXlCdWZmZXIuaGFuZGxlOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgV2ViQ29yZTo6SU9TdXJm
YWNlKiBkaXNwbGF5U3VyZmFjZSgpIHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlLmdl
dCgpOyB9Citwcml2YXRlOgorICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CisgICAgQnVmZmVy
IG1fc3BhcmVCdWZmZXI7CisgICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsKK307CiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
IF9jb250ZW50c0J1ZmZlcjsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyIF9zcGFyZUJ1
ZmZlcjsKLQogICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsKKyAgICBPcHRpb25hbDxXZWJH
TExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0aERldmljZVBp
eGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29u
dGVudHNPcGFxdWUKQEAgLTQ3LDYgKzczLDcgQEAKICAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJh
bnNmb3JtM0RJZGVudGl0eTsKICAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFx
dWU7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBfc3dh
cENoYWluLmVtcGxhY2Uoc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTczLDMwICsx
MDAsMjEgQEAKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9Ci0KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIHJlY3ljbGVCdWZmZXIKKy0g
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWlu
CiB7Ci0gICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgIGlmIChfc3BhcmVC
dWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAgICAgICAgX3NwYXJlQnVmZmVyLnN1cmZh
Y2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoX3NwYXJlQnVmZmVyKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gX3N3YXBDaGFpbi52YWx1ZSgpOwogfQogCi0t
ICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVy
QnVmZmVyKSBidWZmZXIKKy0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKIHsKLSAgICBBU1NFUlQo
IV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBfc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKF9jb250
ZW50c0J1ZmZlcik7Ci0gICAgX2NvbnRlbnRzQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAg
IFtzZWxmIHNldE5lZWRzRGlzcGxheV07CiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IFlFUzsK
IH0KIAogLSAodm9pZClkaXNwbGF5CiB7Ci0gICAgaWYgKF9jb250ZW50c0J1ZmZlci5zdXJmYWNl
ICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50cyA9IF9jb250
ZW50c0J1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKTsKKyAgICBpZiAoX3N3YXBDaGFp
bi0+ZGlzcGxheVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7CisgICAgICAgIHNl
bGYuY29udGVudHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xheWVyQ29udGVu
dHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29udGVudHMiXTsK
ICAgICB9CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZv
cm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMTA2LDEzICsxMjQs
MTQgQEAKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLS0gKHZvaWQqKSBkZXRh
Y2hDbGllbnQKK0BlbmQKKwordm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KEJ1ZmZl
ciBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgdm9p
ZCogcmVzdWx0ID0gX2NvbnRlbnRzQnVmZmVyLmhhbmRsZTsKLSAgICBfY29udGVudHNCdWZmZXIu
aGFuZGxlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEFTU0VSVCghbV9zcGFy
ZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX3NwYXJlQnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlC
dWZmZXIpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICBbbV9s
YXllciBwcmVwYXJlRm9yRGlzcGxheV07CiB9Ci1AZW5kCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0K
aW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4uOTlhZDkxNjUy
NTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lt
cG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNpbXBvcnQgPENv
cmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggN2Vj
ODFjZjRhZTU3NzJjYWU5NzI4OGJjODBlMzY1NjQ2ZDYyN2M3Yi4uOGJlMTFkNGEyYzczMTRjN2Zj
ZDIyMGZkYjZiZWRiZDU5YjVmNDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIEV4dGVuc2lvbnNHTE9wZW5H
TDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3Jj
WDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcg
ZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NH
TGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwg
R0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxk
IG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBs
b25nIHNyY1gxLCBsb24KICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVy
c0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICNlbmRpZgogfQogCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
aW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMcwogI2VuZGlmCiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTI1Myw3ICsyNTMsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgRwogI2VuZGlmCiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCA0OTYyODljZWEwZTZhMDlkNmRiNzMxZjg2OGI1NDk5
M2E0NDQ0OWE4Li43NDgzNzE4YWU4NzBkYmU1YmI3Y2MxMGZjNzllMTNmZDdhMGE5Nzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5FeHRlbnNpb25zR0xPcGVuR0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2Rz
LgotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcg
c3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxv
bmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxm
b3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQg
c3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xp
bnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNr
LCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
b3ZlcnJpZGU7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKQEAgLTUyLDkgKzUyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcG9wR3JvdXBN
YXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0
dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmlt
Y291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAg
IGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2MWZiYTc3OGY4
ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYi4uYjc4OTYwY2I0ODJlNGVmMmFiOThlNDAzOTJhNjM1
YmE3ZmZiN2JkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAg
LTM2NiwxMSArMzY2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHMKICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdD
R0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNp
emVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqLCBib29sKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdD
R0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQogewogICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNmZjRiMjcyMTM3
ZjM0NGNlZTRhMjJkOGZiMjhjNjQuLjZhM2EzOWZlM2ExYmE1YmQyNTk3NzE1ODk0NzU2MWNjYWQ1
YWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTkzLDcgKzkz
LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkg
KmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAK
aW5kZXggMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMy4uMDM4NWIzY2Ez
OGNiYjc2MTBlOTlkOTNmZjIzYWZiZTFhMWM1NjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQog
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyKGxvbmcg
Lyogc3JjWDAgKi8sIGxvbmcgLyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8sIGxvbmcgLyog
c3JjWTEgKi8sIGxvbmcgLyogZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxvbmcgLyogZHN0
WDEgKi8sIGxvbmcgLyogZHN0WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAqLywgdW5zaWdu
ZWQgbG9uZyAvKiBmaWx0ZXIgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJh
bWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDRwogICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNv
dW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRy
YXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsCiAgICAg
bV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNv
dW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNv
cihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
ZGl2aXNvcikKIHsKICAgICBpZiAoIW1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpIHsKICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDAxN2E0NWI3Mzk4ZDA5OTJlZDE0NzY3
ZjA3NjdlMDRiNDY0MTYyODMuLjMxNDZmZTZjY2ZlMGM3OWI4MDFiMjM0OGZlNGI3Nzk0NDFlYTMw
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC03NSw4ICs3NSw4IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gw
LCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRz
dFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVk
IGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNp
Z25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dM
aW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBH
Q0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkx
LCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lk
KSBvdmVycmlkZTsKQEAgLTg3LDkgKzg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgYmluZFZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJh
d0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
IG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBFWFQgUm9idXN0bmVzcyAtIHJlc2V0CiAgICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXgg
YzI1NWIwYzEyZjRmY2JmYTQ2ZGIwMmQ1NWM4MGI0Y2I3N2QxN2I3MC4uMDI3MjhmODk3ODhlMGI4
NWVkMTI2ZjVmOTgxZjVjMWQ2MGRmZmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKQEAgLTU4LDYgKzU4LDkgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1Mg
Q0FMYXllcjsKIE9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworfQogI2VuZGlmIC8vIFBM
QVRGT1JNKENPQ09BKQogCiAjaWYgVVNFKE5JQ09TSUEpCkBAIC04Niw3ICs4OSw3IEBAIHR5cGVk
ZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKIAogY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3ND
b250ZXh0R0wKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kiwg
RGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKTsKQEAgLTk0LDYgKzk3LDggQEAg
cHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4gY3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFy
ZWRDb250ZXh0KTsKKyAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVh
dGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJik7CisKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2NvbnRleHRPYmo7IH0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGV4dHVyZTsgfQogICAgIENBTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPiht
X3dlYkdMTGF5ZXIuZ2V0KCkpOyB9CkBAIC0xOTEsNyArMTk2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgZ2V0QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IGluZGV4LCBBY3RpdmVJbmZvJik7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSBmaW5hbDsKICAg
ICBib29sIGdldEFjdGl2ZVVuaWZvcm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKLSAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBj
b3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgZmluYWw7CisgICAgdm9pZCBnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQs
IEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpOwogICAgIEdDR0xp
bnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1l
KSBmaW5hbDsKICAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKQEAgLTIxOSw4ICsyMjQs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAg
ICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFZl
cnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpIGZpbmFsOwogICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIHZvaWQgaGlu
dChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwpAQCAtMjM2LDcgKzIzOSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3Rvciwg
R0NHTGZsb2F0IHVuaXRzKSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgcmVuZGVyYnVm
ZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlQ292
ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKQEAgLTI1
NCw3ICsyNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKICAgICB2b2lk
IHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsgCisgICAgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKIApAQCAtMzE3LDEyICszMjEsMTAgQEAgcHVibGljOgogI2lmICFVU0Uo
QU5HTEUpCiAgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCog
ZGF0YSwgR0NHTGVudW0gdXNhZ2UsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3Ro
KTsKICAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIGRz
dEJ5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgbGVuZ3RoKTsKLSAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50
IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsKICNlbmRpZgogICAgIHZvaWQgY29weUJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xp
bnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNp
emUpIGZpbmFsOwogCi0gICAgdm9pZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2Vz
cykgZmluYWw7Ci0gICAgR0NHTGJvb2xlYW4gdW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSBm
aW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBi
bGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNY
MSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBk
c3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikg
ZmluYWw7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7CkBAIC0zODQsNyArMzg2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKICAgICBQbGF0Zm9ybUdM
T2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwog
ICAgIC8vIGdldFF1ZXJ5UGFyYW1ldGVyCi0gICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSBmaW5h
bDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnks
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2Ft
cGxlcigpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIpIGZpbmFsOwpAQCAtMzkzLDggKzM5NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQgcGFyYW0pIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsK
ICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
ZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2
YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOworICAg
IEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAg
R0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdz
KSBmaW5hbDsKICAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMpIGZpbmFsOwpAQCAtNDAz
LDcgKzQwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0
ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKICAgICAvLyBnZXRTeW5jUGFy
YW1ldGVyCiAgICAgLy8gRklYTUUgLSB0aGlzIGNhbiBiZSBpbXBsZW1lbnRlZCBhdCB0aGUgV2Vi
R0wgbGV2ZWwgaWYgd2Ugc2lnbmFsIHRoZSBXZWJHTFN5bmMgb2JqZWN0LgotICAgIHZvaWQgZ2V0
U3luY2l2KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xp
bnQgKnZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9y
bUdMT2JqZWN0IGlkKSBmaW5hbDsKQEAgLTQyMCw3ICs0MjIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZv
cm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkg
ZmluYWw7CiAgICAgLy8gZ2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1c2UgZ2V0UGFyYW1ldGVyIGNh
bGxzIGFib3ZlLgogICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBm
aW5hbDsKLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1l
LCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykgZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdl
dEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdD
R0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdD
R0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsKICAgICAvLyBnZXRBY3RpdmVVbmlm
b3JtQmxvY2tQYXJhbWV0ZXIKQEAgLTQyOSwxMSArNDMxLDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykg
ZmluYWw7CiAKLSNpZiAhVVNFKEFOR0xFKQotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKLSAgICB2b2lkIHJlYWRQ
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRh
LCBHQ0dMdWludCBkc3RPZmZzZXQpOwotI2VuZGlmCi0KICAgICAvLyBIZWxwZXIgbWV0aG9kcy4K
IAogICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVs
cywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBH
cmFwaGljc0NvbnRleHQmKTsKQEAgLTUxNSw3ICs1MTIsMTEgQEAgcHVibGljOgogI2VuZGlmIC8v
ICFVU0UoQU5HTEUpCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93
KiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRyLCBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogPSBudWxscHRyKTsKKyNlbHNlCiAgICAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0
V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOworI2VuZGlmCiAKICAgICAv
LyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVh
bGx5IGNhbGwgT3BlbkdMLgogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVu
dHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgpA
QCAtNTI3LDcgKzUyOCw5IEBAIHByaXZhdGU6CiAgICAgLy8gaW1wbGVtZW50YXRpb24uCiAgICAg
dm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0gICAgCisKKyAgICB2
b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2Jq
ZWN0KTsKKwogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJhd2luZyBvcGVyYXRpb24gbGVh
dmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwogICAgIHZvaWQgY2hlY2tHUFVTdGF0
dXMoKTsKIApAQCAtNTQ4LDEwICs1NTEsMTMgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNw
bGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07CisgICAgLy8gVE9ETzogdGhpcyBzaG91
bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRyYXdzIHRvIGEgaW1hZ2UgYnVmZmVyLiBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE3OSAuCiAgICAg
UmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsKICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxscHRyIH07CkBAIC01NzksNyArNTg1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgaXNWYWxpZChmYWxzZSkKICAgICAgICAgewog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFw
KGVudW0gQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUg
fHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBl
ID09IFNIQURFUl9TWU1CT0xfVFlQRV9WQVJZSU5HKTsKQEAgLTY3Miw3ICs2NzgsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHVzaW5nIEJvdW5kVGV4dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0s
CiAgICAgICAgICAgICBzdGQ6OnBhaXI8R0NHTHVpbnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAg
IFdURjo6SW50SGFzaDxHQ0dMZW51bT4sIAorICAgICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xl
bnVtPiwKICAgICAgICAgICAgIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NH
THVpbnQ+LAogICAgICAgICAgICAgV1RGOjpQYWlySGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czxHQ0dMdWludD4+CiAgICAgICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDYzNTZmODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2
ODgxM2Y2YjkuLjYyOTgwMzg4YjY1MjQ3OWNjYjQzMzFjMjVmZmVlYmI2NmM2Y2I1NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC00MzEsNyArNDMx
LDcgQEAgRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cygpCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOwogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLAogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpG
UkFNRUJVRkZFUiwgbV9mYm8pOwogICAgICAgICA6OmdsRmx1c2goKTsKICAgICB9Ci0gICAgOjpn
bFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAg
ICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEu
ZGF0YSk7CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9
PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4
ODY3MjAzOWFlYTRmNTk5OTZlNGQ5NGUxYzFhMGZlLi5mNGZlMDA5ZDQ1Y2FkZDI4ZGJiNzdlZjk1
YWNjYjUwMjgzZTFjZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAKQEAgLTIwMjksMjIgKzIwMjksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
bwogICAgIHJldHVybiA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG1hcHBlZE5hbWUu
dXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGZsb2F0PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1
ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2
YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsK
LX0KLQogR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMjc4LDE5ICsyMjYyLDE5IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFu
Y2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCku
ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsK
ICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
LSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0
eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiAg
ICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsK
LSAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7
CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2
aXNvcik7CiB9CiAKICNpZiBIQVZFKE9QRU5HTF80KSAmJiBFTkFCTEUoV0VCR0wyKQpAQCAtMjMz
NSwxMyArMjMxOSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlCdWZmZXJT
dWJEYXRhKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0ciwKIH0KICNlbmRpZgogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWlu
dCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xpbnRwdHIsIEdDR0xTcGFuPEdMdm9p
ZD4pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0J5
dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
ZHN0T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKIH0KIAogI2lmIEhBVkUoT1BF
TkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCkBAIC0yNzEyLDcgKzI2OTEsNyBAQCBQbGF0Zm9y
bUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFt
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocXVlcnkpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7
CkBAIC0yNzU2LDE4ICsyNzM1LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNh
bXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVuCiAgICAgVU5V
U0VEX1BBUkFNKHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShw
bmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMC5mOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQorCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKQEAg
LTI4MDYsMTIgKzI3ODYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6d2FpdFN5
bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAgICBVTlVTRURf
UEFSQU0odGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2ko
R0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN5bmMp
OwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZlNpemUpOwot
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xP
YmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkK
QEAgLTI4OTQsMTEgKzI4NzQsMTMgQEAgVmVjdG9yPEdDR0x1aW50PiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm8KICNpZiBIQVZF
KE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxH
Q0dMaW50PiYgcGFyYW1zKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUlu
ZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcmVzdWx0Owog
Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6
ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICA6
OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVu
aWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3Jt
QmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9y
bUJsb2NrTmFtZSkKQEAgLTI5NDMsNyArMjkyNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdD
CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKICAgICBVTlVTRURfUEFSQU0oeCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHkpOwpAQCAtMjk1NCwxOCArMjkzNiw2IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKLXsKLSAgICBVTlVTRURf
UEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBV
TlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwCmluZGV4IDIzZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYxNzMzOTZh
YTU1MDUuLmEyMjE4MGI0YmY0Y2UxMGYxODUyMTI0MDExZTg4YTQ0MjczYjQxZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KIAotICAgIDo6Z2xS
ZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAg
OjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmRh
dGEpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwpAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUp
CiAgICAgICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtub3cg
d2UgaGF2ZSBpdC4KICAgICAgICAgICAgIGlmIChzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVm
ZmVyKSB7CiAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVG
RkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5y
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3Vu
dCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVO
REVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBo
ZWlnaHQpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwpCiAgICAgICAg
ICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
R0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVm
ZmVyKTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkKQEAgLTEzOCwxMiAr
MTM4LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVzLnN0ZW5jaWwpIHsKICAgICAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5k
ZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAg
ICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5E
RVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7
CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRF
WDgsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVO
REVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkgewogICAgICAgICAgICAgICAgICAgICA6Omds
QmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotICAgICAg
ICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShH
TF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgs
IGhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQ
VEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6Omds
RnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1F
TlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNjI4NDQ1MzI1MDMzNTEwN2ZkNTQ5
ODIyMzJiOGI5ZWFlYzhlNjhjYi4uOWY4MzE3YjE4ZDUzYjdiM2MxNjY2OWE0YzUxMTk5M2VhZjM3
Yzc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2V0KFdlYktpdF9N
RVNTQUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cwogICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAogICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZAogCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcgpAQCAtMjE4LDYgKzIxOSw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklM
RVMKIAogICAgIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKKyAgICBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAgICAgV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAKICAgICBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlZGI2Y2E1OTc5ZDJm
NGRlZjhiMmIyZTc3M2Y5ZDY5YWU3ODZlN2U5Li40YTY3ZGY4ZWRjM2I0ZjQ4OTE4NzcwMmVmYmYw
NDFiM2QzNGE5MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CkBAIC0yMCw2ICsyMCw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvbW9kZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIp
L3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVz
c2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BV
UHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluCkBAIC0xMzEsNiArMTMyLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNj
cmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmlu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCA3NTY3OWY1NWY1YWUzOTliNWVhZjQ3N2YxODkzMjU2YmMyNDg4NDRkLi43Y2QzZGJjY2EzNTBj
NmUzODE0YzM0MGMzOTNjOTYzZWRiYjk4MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3NSw2ICsxNzUsMTIgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdl
c1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzNzcwMWIwMWMzYzFhMmMzMDBlMWRkMmQ3
MmU2Yjg1MjM3ZjQyNGI1Li45NzZiMWE1YTNlNWMwZDMxMTVkNDQ1MGM5MDg2MTU3MTllNmRlY2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzEsNiArMTcxLDcgQEAgTUVTU0FH
RV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24g
XAogCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBc
CisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBc
CiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKQEAgLTIyNyw2ICsyMjgsNyBAQCBNRVNTQUdF
X1JFQ0VJVkVSUyA9IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAogCUdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eSBcCiAJ
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBc
CiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwZTJlODgzMmIxZTIwZjFlMGYzMTlkNWQ5ZjI1ZDcy
Y2UxYmY3M2FkLi40NGI5ZjYzZTE0YzUwYjc0MTk5M2Q2ZjM1YTVhOTVmNWFmZDgwYTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC02NCw2ICs2NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJS
ZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAtMjkwLDYgKzI5NCwyMSBAQCB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0K
IAorI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKKyAg
ICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywg
KnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfSk7CisgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBi
b29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9
CisjZW5kaWYKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5n
SW5mbygpCiB7CiAgICAgZ3B1UHJvY2VzcygpLm5vd1BsYXlpbmdNYW5hZ2VyKCkuY2xlYXJOb3dQ
bGF5aW5nSW5mb0NsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNjc4ZGJjNGU1ZDM2NWZhZDI4
ZThiNDgyNzg2Mzc2MmEzYzQ1NzhkLi41YWVkZmJiNGQyY2FjN2I3NjYwZmYwNzM2MDlkMzc3YzYw
MTU4NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNv
cmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01h
bmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CkBAIC0zOSw2
ICs0MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7
CkBAIC01NCw2ICs2MCw3IEBAIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xh
c3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eTsKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CitjbGFzcyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90
ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CkBAIC0xMTksNiArMTI2LDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlmCisKICAgICB2b2lkIGNsZWFyTm93
UGxheWluZ0luZm8oKTsKICAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCkBAIC0xODAs
NyArMTkyLDEwIEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFw
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKLQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB1
c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsK
KyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWFwOworI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1MTk0ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1
MmMzNjVlYjMyNzFmMzQ0Li45ZDU0ZTE2NDU5NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5Yzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3Nh
Z2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2Ugewog
ICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcikKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBDcmVhdGVH
cmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRH
TChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZv
aWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3Ry
dWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJ
T19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU5NzBlNWQ4
ODcwNTE2YWQxMzViNzY1Y2RhNDU3ZjQyNTNhYzAyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
QEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8d3RmL01hY2hTZW5k
UmlnaHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSk7Cit9
CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgOiBt
X2NvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0
cmlidXRlcywgKnRoaXMpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VX
ZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGlmIChh
dXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwor
ICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250
ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBt
X2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
K30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAg
ICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3Qo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpwcmVzZW50KEJ1ZmZlciBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2Rpc3BsYXlCdWZmZXIu
c3VyZmFjZSk7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworfQorCit2
b2lkKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KCkKK3sKKyAgICByZXR1
cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlLCBudWxscHRyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKK3sKKyAgICBpZiAod2lkdGggJiYgaGVpZ2h0KQorICAgICAgICBtX2NvbnRl
eHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CisgICAgZWxzZQorICAgICAgICBmb3JjZUNvbnRl
eHRMb3N0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JE
aXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsK
KyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNl
KTsKKyAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikK
KyAgICAgICAgc2VuZFJpZ2h0ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJpZ2h0KCk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJiBleHRl
bnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChl
eHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWJmMDU3MjEwMWQ5YmMwZjA5ZjdkYTk0Yzk0ZTUzMmJhN2Y3YzMwNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBX
VEYgeworY2xhc3MgTWFjaFNlbmRSaWdodDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBwcm9jZXNzIHNpZGUgaW1w
bGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRl
eHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJh
c2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBs
YXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGZpbmFsCisgICAgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisg
ICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQKKyAgICAsIHBy
aXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVi
bGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBmaW5hbDsKKworICAgIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlk
ZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qg
ZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAg
Ly8gR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRDb21w
b3NpdGUoKSBmaW5hbDsKKyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKKyAgICB2
b2lkIHJlY3ljbGVDb250ZXh0KCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFu
Z2VkTm90aWZpY2F0aW9uKCkgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbiBvdmVycmlkZXMuCisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBmaW5h
bDsKKyAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBmaW5hbDsKKyAgICB2b2lkKiBkZXRhY2hDbGll
bnQoKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQg
cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4m
Jik7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmKTsKKyAgICB2b2lk
IG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOworCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9MSU5UCisKKyAgICBSZWY8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsKKyAgICBXZWFrUHRyPEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI7
CisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBtX2Rpc3Bs
YXlCdWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVhNzE1MjRkNDA4
MTliYTAzMTBjYjQyMDEzNjA3NTY2ODc4Njg1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDI5NCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMIE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JE
aXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNl
bmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkg
LT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkK
KworICAgIHZvaWQgU2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgdm9pZCBTeW50aGVz
aXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB2b2lkIE1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
QWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHZvaWQgQXR0YWNoU2hhZGVyKHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB2b2lkIEJpbmRBdHRyaWJMb2Nh
dGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nIG5hbWUpCisgICAgdm9p
ZCBCaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJp
bmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBC
aW5kUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lk
IEJpbmRUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJs
ZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEp
CisgICAgdm9pZCBCbGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBCbGVuZEVx
dWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAg
IHZvaWQgQmxlbmRGdW5jKHVpbnQzMl90IHNmYWN0b3IsIHVpbnQzMl90IGRmYWN0b3IpCisgICAg
dm9pZCBCbGVuZEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwg
dWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90IGRzdEFscGhhKQorICAgIHZvaWQgQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENsZWFyKHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBDbGVh
ckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQor
ICAgIHZvaWQgQ2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB2b2lkIENsZWFyU3RlbmNpbChp
bnQzMl90IHMpCisgICAgdm9pZCBDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wg
Ymx1ZSwgYm9vbCBhbHBoYSkKKyAgICB2b2lkIENvbXBpbGVTaGFkZXIodWludDMyX3QgYXJnMCkK
KyAgICB2b2lkIENvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgdm9pZCBDb3B5VGV4U3Vi
SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwg
aW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVCdWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVGcmFtZWJ1ZmZlcigpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVByb2dyYW0oKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVSZW5k
ZXJidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVGV4dHVyZSgpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAg
dm9pZCBEZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZUZyYW1lYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzAp
CisgICAgdm9pZCBEZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERl
bGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlVGV4dHVyZSh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgRGVwdGhGdW5jKHVpbnQzMl90IGZ1bmMpCisgICAgdm9pZCBEZXB0
aE1hc2soYm9vbCBmbGFnKQorICAgIHZvaWQgRGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQg
ekZhcikKKyAgICB2b2lkIERldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcx
KQorICAgIHZvaWQgRGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBEaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBEcmF3QXJyYXlzKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVu
dHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgRW5hYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRmluaXNoKCkKKyAgICB2
b2lkIEZsdXNoKCkKKyAgICB2b2lkIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1
aW50MzJfdCBhcmczKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFy
ZzMsIGludDMyX3QgbGV2ZWwpCisgICAgdm9pZCBGcm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAg
ICB2b2lkIEdlbmVyYXRlTWlwbWFwKHVpbnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdldEFjdGl2
ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEF0dHJpYkxvY2F0
aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRTdHJpbmcodWludDMyX3QgbmFtZSkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZsb2F0dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3Qg
dmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSkgLT4gKGludDY0X3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjRpKHVpbnQzMl90IHBuYW1l
LCB1aW50MzJfdCBpbmRleCkgLT4gKGludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRQcm9ncmFtaSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBwbmFtZSkgLT4g
KGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCb29sZWFudih1
aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTxib29sPiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVp
bnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFByb2dyYW1JbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFk
ZXJJbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlw
ZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dCwgMj4gcmFuZ2UsIEdDR0xpbnQgcHJlY2lzaW9uKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtZnYodWludDMy
X3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRV
bmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFs
dWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2Nh
dGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtTG9jYXRpb24odWludDMy
X3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBwbmFtZSkgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SGludCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBJc0J1ZmZlcih1
aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IElzRW5hYmxlZCh1aW50MzJfdCBjYXApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgSXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUHJvZ3JhbSh1aW50MzJfdCBhcmcwKSAtPiAo
Ym9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUmVuZGVyYnVmZmVyKHVp
bnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SXNTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBJc1RleHR1cmUodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBMaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB2b2lkIExp
bmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBQaXhlbFN0b3JlaSh1aW50MzJfdCBw
bmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9y
LCBmbG9hdCB1bml0cykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgdm9pZCBTYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisg
ICAgdm9pZCBTY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBTdHJpbmcg
YXJnMSkKKyAgICB2b2lkIFN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1
aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBmYWNl
LCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0
ZW5jaWxNYXNrKHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFza1NlcGFyYXRlKHVp
bnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsT3AodWludDMyX3Qg
ZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHZvaWQgU3RlbmNpbE9w
U2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVp
bnQzMl90IHpwYXNzKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIFRleFBhcmFtZXRlcmkodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFVuaWZv
cm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHZvaWQgVW5pZm9ybTFmdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5p
Zm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB2b2lkIFVuaWZvcm0xaXYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZv
aWQgVW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgdm9p
ZCBVbmlmb3JtMmZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
IHYpCisgICAgdm9pZCBVbmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQz
Ml90IHkpCisgICAgdm9pZCBVbmlmb3JtMml2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zZihpbnQzMl90IGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHZvaWQgVW5pZm9ybTNmdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9y
bTNpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHopCisg
ICAgdm9pZCBVbmlmb3JtM2l2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQgVW5pZm9ybTRmdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9y
bTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGlu
dDMyX3QgdykKKyAgICB2b2lkIFVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJmdihpbnQzMl90
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFs
dWUpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZv
cm1NYXRyaXg0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcw
KQorICAgIHZvaWQgVmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWZXJ0
ZXhBdHRyaWIxZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB2b2lkIFZlcnRleEF0dHJp
YjFmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4gdmFsdWVz
KQorICAgIHZvaWQgVmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0
IHkpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDI+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNmKHVpbnQz
Ml90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHZvaWQgVmVydGV4QXR0
cmliM2Z2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiB2YWx1
ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmdih1aW50MzJf
dCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4gdmFsdWVzKQorICAgIHZvaWQg
VmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJf
dCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBWaWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBCdWZmZXJEYXRhMCh1aW50MzJfdCB0YXJnZXQsIHVp
bnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHZvaWQgQnVmZmVyRGF0YTEodWludDMy
X3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEsIHVpbnQzMl90IHVz
YWdlKQorICAgIHZvaWQgQnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9m
ZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgUmVhZG5Q
aXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4g
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IFJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4SW1hZ2UyRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1YkltYWdlMkQwKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZv
aWQgVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZv
aWQgQ29tcHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBp
bWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENv
bXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZp
cnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVt
ZW50c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0
cmliRGl2aXNvcih1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB2b2lkIENy
ZWF0ZVZlcnRleEFycmF5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIElzVmVy
dGV4QXJyYXkodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBCaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIENvcHlC
dWZmZXJTdWJEYXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1
aW50NjRfdCByZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3QgYXJnNCkK
KyAgICB2b2lkIEdldEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZz
ZXQsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAs
IGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0
WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90
IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB2b2lkIEludmFsaWRhdGVGcmFtZWJ1
ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFj
aG1lbnRzKQorICAgIHZvaWQgSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMsIGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFJlYWRC
dWZmZXIodWludDMyX3Qgc3JjKQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdl
MkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTNE
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB2b2lk
IFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4SW1hZ2UzRDEodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQg
VGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleFN1
YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlM0QodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29t
cHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50
MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHZvaWQgR2V0RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3Jt
MXVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwKQorICAgIHZvaWQgVW5pZm9ybTJ1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgdm9pZCBVbmlm
b3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMy
X3QgdjIpCisgICAgdm9pZCBVbmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYw
LCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHZvaWQgVW5pZm9y
bTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0
YSkKKyAgICB2b2lkIFVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtM3VpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9y
bTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0
YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZv
cm1NYXRyaXgzeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyeDRmdihpbnQz
Ml90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4g
ZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXg0eDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVu
aWZvcm1NYXRyaXgzeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXg0eDNmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4gZGF0YSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwgaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVmVydGV4QXR0
cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiB2
YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpKHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1aW50MzJfdCB3KQorICAgIHZvaWQgVmVydGV4
QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Qs
IDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBEcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJf
dCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PiBidWZzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGlu
dDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZXMpCisg
ICAgdm9pZCBDbGVhckJ1ZmZlcnVpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJC
dWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJmaSh1aW50MzJfdCBi
dWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qgc3RlbmNpbCkK
KyAgICB2b2lkIENyZWF0ZVF1ZXJ5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgRGVsZXRlUXVlcnkodWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBJc1F1
ZXJ5KHVpbnQzMl90IHF1ZXJ5KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB2
b2lkIEVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdldFF1ZXJ5KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90
IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBD
cmVhdGVTYW1wbGVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgRGVsZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgSXNTYW1wbGVy
KHVpbnQzMl90IHNhbXBsZXIpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB2
b2lkIFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBp
bnQzMl90IHBhcmFtKQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxl
ciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHZvaWQgR2V0U2FtcGxlclBhcmFt
ZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90
IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZs
YWdzKSAtPiAodWludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1N5
bmModWludDY0X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBEZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgdm9pZCBDbGllbnRXYWl0U3luYyh1
aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgdGltZW91dCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgV2FpdFN5bmModWludDY0X3Qg
YXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB2b2lkIEdldFN5bmNp
KHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2sodWludDMyX3QgaWQpCisgICAgdm9pZCBJc1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90
IGlkKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRUcmFu
c2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHZvaWQgQmVn
aW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHZvaWQgRW5k
VHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyh1
aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVy
TW9kZSkKKyAgICB2b2lkIEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBwcm9n
cmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBQYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCkKKyAgICB2b2lkIFJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIEJpbmRCdWZm
ZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikK
KyAgICB2b2lkIEJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB2
b2lkIEdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHVu
aWZvcm1OYW1lcykgLT4gKFZlY3Rvcjx1aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3Jtcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8dWlu
dDMyX3Q+IHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSkgLT4gKFZlY3RvcjxpbnQzMl90
PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1CbG9ja0luZGV4
KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyB1bmlmb3JtQmxvY2tOYW1lKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4KSAtPiAoU3Ry
aW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybUJsb2NrQmluZGlu
Zyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrQmluZGluZykKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFt
ZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
cGFyYW1zKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxpdEZyYW1l
YnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwg
aW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RY
MSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZv
aWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZVZlcnRleEFycmF5T0VTKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXlP
RVModWludDMyX3QgYXJnMCkKKyAgICB2b2lkIElzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJn
MCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVmVydGV4
QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgSW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisgICAgdm9pZCBQ
dXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisgICAgdm9pZCBQb3BHcm91cE1hcmtlckVY
VCgpCisgICAgdm9pZCBEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiBidWZzKQorICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUs
IGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZv
aWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAg
ICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSh1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
ZGl2aXNvcikKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZmZThjMWZjN2FmYTE3MmYxYmI5
YzczNDI2NzVjNWRmZTZlMTc2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oCkBAIC0wLDAgKzEsMTE4MyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisvLyBUaGlzIGZpbGUgc2hv
dWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwcml2YXRlIHNlY3Rpb24gb2YgdGhlCisvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBpbXBsZW1lbnRhdGlvbnMuCisjcHJhZ21hIG9uY2UKKyAgICB2b2lk
IHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
ZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCk7CisgICAgfQorICAgIHZvaWQgc3ludGhlc2l6ZUdM
RXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKGVycm9yKTsKKyAgICB9CisgICAgdm9pZCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNF
cnJvckxpc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGFj
dGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICB9CisgICAgdm9pZCBhdHRhY2hTaGFkZXIodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qgc2hhZGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQXR0
cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyYmIG5hbWUp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRl
eCwgbmFtZSk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIodGFyZ2V0
LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZm
ZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymlu
ZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRUZXh0dXJl
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBibGVuZENvbG9y
KGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsK
KyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb24obW9kZSk7CisgICAgfQorICAgIHZvaWQgYmxl
bmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0Is
IG1vZGVBbHBoYSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jKHVpbnQzMl90IHNmYWN0b3Is
IHVpbnQzMl90IGRmYWN0b3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuYyhz
ZmFjdG9yLCBkZmFjdG9yKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZSh1aW50
MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwgdWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90
IGRzdEFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0ZShz
cmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKKyAgICB9CisgICAgdm9pZCBjaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQzMl90IHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51
bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNsZWFyKHVpbnQzMl90IG1hc2spCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmNsZWFyKG1hc2spOworICAgIH0KKyAgICB2b2lkIGNsZWFy
Q29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpOworICAgIH0KKyAgICB2b2lkIGNsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmNsZWFyRGVwdGgoZGVwdGgpOworICAgIH0KKyAgICB2b2lkIGNsZWFy
U3RlbmNpbChpbnQzMl90IHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyU3RlbmNp
bChzKTsKKyAgICB9CisgICAgdm9pZCBjb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJv
b2wgYmx1ZSwgYm9vbCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29sb3JNYXNr
KHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZWQpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
Z3JlZW4pLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oYmx1ZSksIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihhbHBoYSkpOworICAgIH0KKyAgICB2b2lkIGNvbXBpbGVTaGFkZXIodWludDMyX3Qg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihhcmcwKTsKKyAg
ICB9CisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4U3Vi
SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwg
aW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwor
ICAgIH0KKyAgICB2b2lkIGNyZWF0ZUJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVCdWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGNyZWF0ZUZyYW1lYnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1H
TE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVQcm9ncmFtKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmJ1ZmZlcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNoYWRlcih1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBjcmVhdGVUZXh0dXJlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmN1
bGxGYWNlKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcih1aW50MzJfdCBhcmcw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcih1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVSZW5kZXJidWZmZXIo
YXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihhcmcwKTsKKyAgICB9CisgICAgdm9p
ZCBkZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVRleHR1cmUoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVwdGhGdW5jKHVpbnQzMl90
IGZ1bmMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoRnVuYyhmdW5jKTsKKyAgICB9
CisgICAgdm9pZCBkZXB0aE1hc2soYm9vbCBmbGFnKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5kZXB0aE1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGZsYWcpKTsKKyAgICB9CisgICAg
dm9pZCBkZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZXB0aFJhbmdlKHpOZWFyLCB6RmFyKTsKKyAgICB9CisgICAgdm9pZCBkZXRh
Y2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGRpc2Fi
bGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxlKGNhcCk7
CisgICAgfQorICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5k
ZXgpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50MzJfdCBm
aXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0FycmF5
cyhtb2RlLCBmaXJzdCwgY291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50cyh1aW50
MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZW5h
YmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlKGNhcCk7
CisgICAgfQorICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KTsKKyAgICB9CisgICAgdm9pZCBmaW5pc2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5m
aW5pc2goKTsKKyAgICB9CisgICAgdm9pZCBmbHVzaCgpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmZsdXNoKCk7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0
YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBh
cmczKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWludDMyX3QgYXJn
MywgaW50MzJfdCBsZXZlbCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJU
ZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKTsKKyAg
ICB9CisgICAgdm9pZCBmcm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZnJvbnRGYWNlKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFw
KHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2VuZXJhdGVNaXBt
YXAodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVBdHRyaWIodWludDMyX3QgcHJv
Z3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgYXJnMik7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsK
KyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUoYXJnMikpOworICAgIH0KKyAg
ICB2b2lkIGdldEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRCdWZmZXJQ
YXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFN0cmluZyh1aW50MzJf
dCBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN0cmluZyhuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEZs
b2F0dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNfY2FzdDxz
aXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFt
ZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2
NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAg
ICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0SW50ZWdlcjY0KHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0KHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8aW50
NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2VyNjRpKHVpbnQz
Ml90IHBuYW1lLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2
NGkocG5hbWUsIGluZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8
aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtaSh1aW50
MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9ncmFt
aShwcm9ncmFtLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRCb29sZWFudih1aW50MzJfdCBwbmFtZSwgdWludDY0X3Qg
dmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9v
bD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xib29s
ZWFuLCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAg
ICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4ocmVpbnRlcnByZXRfY2FzdDxib29s
Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0RXJy
b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEVycm9yKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMy
X3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1JbmZvTG9nKHVpbnQz
Ml90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2coYXJnMCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
cG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0U2hhZGVyaShhcmcwLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJJbmZvTG9nKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhhcmcwKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50
MzJfdCBwcmVjaXNpb25UeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdCwgMj4sIGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgc3RkOjphcnJheTxHQ0dMaW50LCAyPiByYW5nZSB7IH07CisgICAgICAgIEdDR0xp
bnQgcHJlY2lzaW9uID0geyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZSwgJnByZWNpc2lvbik7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4o
cmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocmFuZ2UuZGF0YSgpKSwgcmFuZ2Uuc2l6ZSgpKSwg
cHJlY2lzaW9uKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJTb3VyY2UodWludDMyX3QgYXJn
MCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2UoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmko
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUZXhQ
YXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KHVpbnQzMl90IHByb2dyYW0s
IGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6
ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEo
KSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1pdih1aW50MzJf
dCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gdmFsdWUoc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlm
b3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3Qq
Pih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlm
b3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVl
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQs
IDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PHVpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMc2l6ZWlwdHIgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoaW5kZXgsIHBuYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgaGludCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IG1vZGUp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmhpbnQodGFyZ2V0LCBtb2RlKTsKKyAgICB9Cisg
ICAgdm9pZCBpc0J1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0J1ZmZl
cihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc0VuYWJsZWQodWludDMyX3QgY2FwLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5pc0VuYWJsZWQoY2FwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc0ZyYW1l
YnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRnJhbWVidWZmZXIoYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNQcm9ncmFtKHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmlzUHJvZ3JhbShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rh
dGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1JlbmRlcmJ1
ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1JlbmRlcmJ1ZmZlcihhcmcw
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFs
dWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1NoYWRlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5pc1NoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1RleHR1cmUodWlu
dDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUZXh0dXJlKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGxpbmVXaWR0aChmbG9hdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5saW5lV2lkdGgoYXJnMCk7CisgICAgfQorICAgIHZvaWQgbGlua1Byb2dyYW0odWludDMyX3Qg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0oYXJnMCk7CisgICAg
fQorICAgIHZvaWQgcGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSk7CisgICAg
fQorICAgIHZvaWQgcG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5wb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpOworICAg
IH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoZmxv
YXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVD
b3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGludmVydCkpOworICAgIH0K
KyAgICB2b2lkIHNjaXNzb3IoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zY2lzc29yKHgsIHksIHdp
ZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcw
LCBTdHJpbmcmJiBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uo
YXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywg
aW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0
ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1bmNT
ZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMy
X3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShm
YWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrKHVpbnQz
Ml90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrKG1hc2spOwor
ICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMy
X3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShm
YWNlLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3AodWludDMyX3QgZmFpbCwgdWlu
dDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
dGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3BT
ZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWlu
dDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcFNlcGFyYXRl
KGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVy
Zih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSk7Cisg
ICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWYoaW50
MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTFmKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWZ2KGludDMyX3QgbG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYg
dikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQg
eCwgZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9u
LCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmZ2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybTJmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtMml2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zZihpbnQzMl90IGxvY2F0aW9uLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtM2YobG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zZnYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTNpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaShsb2Nh
dGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwg
ZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0aW9uLCB4
LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGZ2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVu
aWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6
LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00aShsb2NhdGlv
biwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJh
bnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4o
dmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEo
KSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoaW50
MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9j
YXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1c2VQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQg
dmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnZhbGlkYXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZih1
aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliMWYoaW5kZXgsIHgpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1aW50
MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4mJiB2YWx1ZXMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgbWFrZUdDR0xTcGFu
PDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwg
ZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmYoaW5kZXgs
IHgsIHkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgbWFrZUdDR0xTcGFuPDI+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2YoaW5kZXgsIHgs
IHksIHopOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdih1aW50MzJfdCBpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgbWFrZUdDR0xTcGFuPDM+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeiwgZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGYo
aW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1aW50
MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4mJiB2YWx1ZXMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgbWFrZUdDR0xTcGFu
PDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQz
Ml90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJfdCBzdHJpZGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmli
UG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KG5vcm1h
bGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0K
KyAgICB2b2lkIHZpZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmlld3BvcnQoeCwgeSwg
d2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTAodWludDMyX3QgdGFy
Z2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnMSks
IHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMSh1aW50MzJfdCB0YXJnZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhLCB1aW50MzJfdCB1c2FnZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSks
IHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwg
dWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0
PEdDR0xpbnRwdHI+KG9mZnNldCksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGNoYXIsIDQ+
IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDApOworICAgICAgICBtX2NvbnRl
eHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4o
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIHJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+
KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWlu
dDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0
YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlMkQxKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAg
IH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMy
X3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9p
ZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdB
cnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3Vu
dCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJh
eXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0KKyAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1
aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5
cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcih1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2
aXNvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliRGl2aXNvcihpbmRl
eCwgZGl2aXNvcik7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVmVydGV4QXJyYXkoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5
KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVZlcnRleEFy
cmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+aXNWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmluZFZlcnRleEFycmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJE
YXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1aW50NjRfdCBy
ZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJn
ZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dM
aW50cHRyPih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnNCkpOwor
ICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YVNp
emUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgZGF0YSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGJsaXRG
cmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBp
bnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgx
LCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNyY1gxLCBz
cmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQor
ICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxh
eWVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CisgICAgfQorICAgIHZv
aWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkpLCBhdHRhY2htZW50cy5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMyX3Qg
dGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRzLCBpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0YWNobWVudHMuZGF0
YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQor
ICAgIHZvaWQgcmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnJlYWRCdWZmZXIoc3JjKTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHRl
eFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHRleFN0b3JhZ2UzRCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTNEMCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYg
cGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4
ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTNE
MSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJv
cmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1h
Z2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4U3ViSW1h
Z2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29w
eVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
M0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90
IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UzRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRl
ciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9p
ZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VT
aXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBp
bnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBm
b3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50
MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGcmFnRGF0
YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWkoaW50MzJf
dCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm0xdWkobG9jYXRpb24sIHYwKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMnVpKGludDMyX3Qg
bG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMy
X3QgdjIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWkobG9jYXRpb24sIHYw
LCB2MSwgdjIpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwg
dWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYz
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0xdWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2KGxvY2F0
aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEu
ZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM3VpdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZs
b2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgzeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bv
c2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRh
LmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4
NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgy
eDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwg
ZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoaW50MzJf
dCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYg
ZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0
aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihpbnQzMl90IGxvY2F0aW9u
LCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
NGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+JiYgdmFs
dWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBt
YWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFsdWVzLmRh
dGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1aW50MzJfdCB3KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWlu
dDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0
cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQg
ZHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90
IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5k
LCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQor
ICAgIHZvaWQgZHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBidWZz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycyhtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJf
dCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdmFsdWVzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRh
KCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYodWlu
dDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcnVp
dihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBjbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJmaSh1aW50MzJfdCBidWZmZXIsIGlu
dDMyX3QgZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qgc3RlbmNpbCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRo
LCBzdGVuY2lsKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVRdWVyeShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBs
YXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5jcmVhdGVRdWVyeSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUXVlcnkodWludDMyX3QgcXVlcnkpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVF1ZXJ5KHF1ZXJ5KTsKKyAgICB9CisgICAg
dm9pZCBpc1F1ZXJ5KHVpbnQzMl90IHF1ZXJ5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1F1ZXJ5KHF1
ZXJ5KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgcXVlcnkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJlZ2luUXVlcnkodGFyZ2V0
LCBxdWVyeSk7CisgICAgfQorICAgIHZvaWQgZW5kUXVlcnkodWludDMyX3QgdGFyZ2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRRdWVyeSh0YXJnZXQpOworICAgIH0KKyAgICB2b2lk
IGdldFF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aSh1
aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHVpbnQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRRdWVy
eU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTYW1wbGVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmNyZWF0ZVNhbXBsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxl
cikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2FtcGxlcihzYW1wbGVyKTsKKyAg
ICB9CisgICAgdm9pZCBpc1NhbXBsZXIodWludDMyX3Qgc2FtcGxlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xi
b29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+aXNTYW1wbGVyKHNhbXBsZXIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRTYW1wbGVyKHVp
bnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFt
ZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNh
bXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBw
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBmZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMc3luYyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KHJldHVyblZhbHVlKSkpOworICAgIH0KKyAgICB2b2lkIGlzU3luYyh1aW50NjRfdCBhcmcwLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5pc1N5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU3luYyh1
aW50NjRfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTeW5jKHJlaW50
ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkpOworICAg
IH0KKyAgICB2b2lkIGNsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdz
LCB1aW50NjRfdCB0aW1lb3V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2xpZW50V2FpdFN5bmMocmVp
bnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxh
Z3MsIHN0YXRpY19jYXN0PEdDR0x1aW50NjQ+KHRpbWVvdXQpKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHdhaXRTeW5jKHVpbnQ2NF90
IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPndhaXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0
PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHRpbWVvdXQp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTeW5jaShyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKTsKKyAgICB9CisgICAgdm9pZCBp
c1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1RyYW5z
Zm9ybUZlZWRiYWNrKGlkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8
Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJh
Y2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpOworICAgIH0KKyAgICB2b2lkIGJl
Z2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsKKyAg
ICB9CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgdHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiYmIHZhcnlp
bmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwg
aW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFyZzIpKTsK
KyAgICB9CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVzdW1l
VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlcik7Cisg
ICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
aW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBpbmRleCwg
YnVmZmVyLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dM
c2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtSW5kaWNlcyh1aW50
MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiYmIHVuaWZvcm1OYW1lcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8dWludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZv
cm1OYW1lcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jtcyh1aW50MzJfdCBwcm9ncmFtLCBW
ZWN0b3I8dWludDMyX3Q+JiYgdW5pZm9ybUluZGljZXMsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50
MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiB1bmlmb3JtQmxvY2tOYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0x1aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1C
bG9ja0luZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyh1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgdW5p
Zm9ybUJsb2NrQmluZGluZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybUJsb2Nr
QmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyk7
CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBw
YXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xp
bnQsIDQ+IHBhcmFtcyhzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtc1NpemUpLCAwKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1z
LmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGlu
dDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAs
IGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1h
c2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBk
c3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAgICB9CisgICAgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVmVydGV4
QXJyYXlPRVMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNyZWF0
ZVZlcnRleEFycmF5T0VTKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVsZXRlVmVydGV4QXJy
YXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNWZXJ0ZXhBcnJheU9FUyhh
cmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmJpbmRWZXJ0ZXhB
cnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaW5zZXJ0RXZlbnRN
YXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApOworICAgIH0KKyAgICB2b2lkIHB1
c2hHcm91cE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucHVzaEdyb3VwTWFya2VyRVhUKGFyZzApOworICAgIH0KKyAgICB2
b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnBvcEdyb3VwTWFya2VyRVhUKCk7CisgICAgfQorICAgIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBidWZzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0x2b2lkcHRyPihvZmZz
ZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2
aXNvcik7CisgICAgfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFj
L0dQVVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nl
c3NNYWMubW0KaW5kZXggYjdiYjYzYjI5YWQ4MDIxNzJkZjI3YTEyODk1YmIxOTk4ZmE0YjZiMC4u
MjRjNDM3Y2FhZTdmOGY5YTlhZmY5MjcwM2VmY2Y5ZGEwMzFlNGM0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQpAQCAtMzIsOCArMzIsOCBAQAog
I2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiV0tG
b3VuZGF0aW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBv
cnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L0xhdW5jaFNlcnZpY2VzU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJ
Lmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw5ICs0NCwxMiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHZvaWQgR1BVUHJvY2Vzczo6aW5pdGlhbGl6ZVBy
b2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCiB7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgMAogICAg
IC8vIEhhdmluZyBhIHdpbmRvdyBzZXJ2ZXIgY29ubmVjdGlvbiBpbiB0aGlzIHByb2Nlc3Mgd291
bGQgcmVzdWx0IGluIHNwaW4gbG9ncyAoPHJkYXI6Ly9wcm9ibGVtLzEzMjM5MTE5PikuCi0gICAg
T1NTdGF0dXMgZXJyb3IgPSBTZXRBcHBsaWNhdGlvbklzRGFlbW9uKHRydWUpOwotICAgIEFTU0VS
VF9VTlVTRUQoZXJyb3IsIGVycm9yID09IG5vRXJyKTsKKyAgICBhdXRvIHJldHZhbCA9IENHU1Nl
dERlbnlXaW5kb3dTZXJ2ZXJDb25uZWN0aW9ucyh0cnVlKTsKKyAgICBSRUxFQVNFX0FTU0VSVChy
ZXR2YWwgPT0ga0NHRXJyb3JTdWNjZXNzKTsKKyAgICBDR1NTaHV0ZG93blNlcnZlckNvbm5lY3Rp
b25zKCk7CisjZW5kaWYKICNlbmRpZgogCiAgICAgbGF1bmNoU2VydmljZXNDaGVja0luKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQu
R1BVUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCmluZGV4IGRiMDZlNTM0ZjdmNTFkMmViZDAzODI1ZjU4
MjQ1Zjg0OTZmOGIxNzkuLmVkMTAwYjM2ZWQ2ZjQ2ZDRhYWY2MzU0NDc3ODgyYWI3OTNhMTFiY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktp
dC5HUFVQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29t
LmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCkBAIC0yMDcsNiArMjA3LDcgQEAKICAgICAo
aW9raXQtcHJvcGVydHktcmVnZXggIyJeQUFQTCwoRGlzcGxheVBpcGV8T3BlbkNMZGlzYWJsZWR8
SU9HcmFwaGljc19MRVIofF9SZWdUYWdfMXxfUmVnVGFnXzB8X0J1c3lfMil8YWxpYXMtcG9saWN5
fGJvb3QtZGlzcGxheXxkaXNwbGF5LWFsaWFzfG11eC1zd2l0Y2gtc3RhdGV8bmRydi1kZXZ8cHJp
bWFyeS1kaXNwbGF5fHNsb3QtbmFtZSkiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5B
VFksKGNiaXRzfGZiXyhsaW5lYnl0ZXN8b2Zmc2V0fHNpemUpfGludHJldikiKQogICAgIChpb2tp
dC1wcm9wZXJ0eSAiQVRZLERldmljZU5hbWUiKSA7OyBOZWVkZWQgYnkgTWV0YWwgY29tcGlsZXJz
CisgICAgKGlva2l0LXByb3BlcnR5ICJBVFksRUZJRGlzcGxheSIpCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJBVFksRmFtaWx5TmFtZSIpIDs7IERpdHRvCiAgICAgKGlva2l0LXByb3BlcnR5ICJBVkNT
dXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQmFja2xpZ2h0SGFuZGxlIikKQEAgLTIx
Nyw2ICsyMTgsOSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ2Fwc0xvY2tEZWxheSIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJDYXNlU2Vuc2l0aXZlIikKICAgICAoaW9raXQtcHJvcGVydHkgIkNv
bmZpZ1N0YXRlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGFuZXMiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiRFBMaW5rQml0IikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua1JhdGUiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiRGVzY3JpcHRpb24iKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
RGV2ZWxvcG1lbnQiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5EZXZpY2UoIENoYXJh
Y3RlcmlzdGljc3xFcUlEKSIpCkBAIC0yMjksMTAgKzIzMywxNyBAQAogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiRmFtaWx5IElEIikKICAgICAoaW9raXQtcHJvcGVydHkgIkZvcmNlU3VwcG9ydGVkIikK
ICAgICAoaW9raXQtcHJvcGVydHkgIkZvcm1hdHMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRnJh
bWVidWZmZXJFbmFibGVkIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVyU3RhcnRl
ZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJHUFVDb25maWd1cmF0aW9uVmFyaWFibGUiKQorICAg
IChpb2tpdC1wcm9wZXJ0eSAiR1BVRENDRGlzcGxheWFibGUiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiR1BVRGVidWdOdWxsQ2xpZW50TWFzayIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJHcHVEZWJ1
Z1BvbGljeSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVSYXdDb3VudGVyQnVuZGxlTmFtZSIp
CisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVSYXdDb3VudGVyUGx1Z2luQ2xhc3NOYW1lIikKICAg
ICAoaW9raXQtcHJvcGVydHkgIkhFVkNTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
SElEUG9pbnRlckFjY2VsZXJhdGlvblR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiSHdDdHhD
YWNoZVVwZGF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPQWNjZWwoRGlzcGxh
eVBpcGVDYXBhYmlsaXRpZXN8SW5kZXh8VHlwZXN8UmV2aXNpb24pIikKICAgICAoaW9raXQtcHJv
cGVydHktcmVnZXggIyJeSU8oQ2xhc3N8TWF0Y2hDYXRlZ29yeXxOYW1lTWF0Y2gpIikKICAgICAo
aW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9BdWRpb0NvbnRyb2woQ2hhbm5lbElEfElEfFN1YlR5
cGV8VXNhZ2V8VmFsdWUpIikKQEAgLTI4Miw2ICsyOTMsOCBAQAogICAgIChpb2tpdC1wcm9wZXJ0
eSAiSU9QYXJlbnRNYXRjaCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPUENJKChD
bGFzc3xQcmltYXJ5fFByb3BlcnR5fClNYXRjaHxFeHByZXNzKENhcGFiaWxpdGllc3xMaW5rKFN0
YXR1c3xDYXBhYmlsaXRpZXMpKXxNU0lNb2RlfFJlc291cmNlZHxUdW5uZWxsZWQpIikKICAgICAo
aW9raXQtcHJvcGVydHkgIklPUE1Jc1Bvd2VyTWFuYWdlZCIpCisgICAgKGlva2l0LXByb3BlcnR5
ICJJT1BlcnNvbmFsaXR5UHVibGlzaGVyIikKKwogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAj
Il5JT1BsYXRmb3JtKFNlcmlhbE51bWJlcnxVVUlEKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJ
T1Bvd2VyTWFuYWdlbWVudCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1Byb2JlU2NvcmUiKQpA
QCAtMzE3LDYgKzMzMCw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJQcm90b2NvbCBDaGFyYWN0
ZXJpc3RpY3MiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiUmVtb3ZhYmxlIikKICAgICAoaW9raXQt
cHJvcGVydHktcmVnZXggIyJeUmVzZXRPbihMb2NrfFVubG9jaylNcyIpCisgICAgKGlva2l0LXBy
b3BlcnR5ICJTV0lQX3Byb3BlcnRpZXMiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2FmZUVqZWN0
UmVxdWVzdGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhbXBsZVJhdGVzIikKICAgICAoaW9r
aXQtcHJvcGVydHkgIlNlcmlhbCBOdW1iZXIiKQpAQCAtMzM4LDYgKzM1Miw3IEBACiAgICAgKGlv
a2l0LXByb3BlcnR5ICJhdHRhY2hlZC1ncHUtY29udHJvbC1wYXRoIikKICAgICAoaW9raXQtcHJv
cGVydHktcmVnZXggIyJeYXVkaW8tKGNvZGVjLWluZm98ZGV2aWNlLW12YWx1ZXxkZXZpY2UtbnZh
bHVlfHNlbGVjdG9yKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJhdi1zaWduYWwtdHlwZSIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJiYWNrbGlnaHQtUFdNLWZyZXEiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiYmNkVmVyc2lvbiIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXihib2FyZHxk
ZXZpY2V8cmV2aXNpb258c3Vic3lzdGVtfHZlbmRvciktaWQiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiYm9vdC1nYW1tYS1yZXN0b3JlZCIpCkBAIC0zNTAsNiArMzY1LDExIEBACiAgICAgKGlva2l0
LXByb3BlcnR5ICJjb25uZWN0b3ItdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMi
XihkZXZpY2V8cmV2aXNpb258c3Vic3lzdGVtLXZlbmRvcnx0b3VjaC1zaXplKS1pZCIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJkZXZpY2VfdHlwZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNw
bGF5LWJwYyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWNvbm5lY3QtZmxhZ3MiKQor
ICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1saW5rLWNvbXBvbmVudC1iaXRzIikKKyAgICAo
aW9raXQtcHJvcGVydHkgImRpc3BsYXktcGl4ZWwtY29tcG9uZW50LWJpdHMiKQorICAgIChpb2tp
dC1wcm9wZXJ0eSAiZGlzcGxheS10eXBlIikKICAgICAoaW9raXQtcHJvcGVydHkgImRwbSIpCiAg
ICAgKGlva2l0LXByb3BlcnR5ICJlcnJvcmRiIikgOzsgTmVlZGVkIGZvciBPcGVuR0wgb24gb2xk
ZXIgaGFyZHdhcmUKICAgICAoaW9raXQtcHJvcGVydHkgImZpbGV2YXVsdC1pbWFnZSIpIDs7IE5l
ZWRlZCBieSBMYXVuY2hTZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTliZGI4Njdh
Yjg2YjhjNTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVkNjZkZGY5
NWYyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMZWdhY3lD
RE1Qcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcwZmE1ZGU0
ZmFkZTE1MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4Yjgy
NWM2ZTQ1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4MDIzMTkwNGY4ZWYwZWFhOTM2
MjI5YWZhOTc1OTguLmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4OWI4MDNmNmFiZjQxYzhlOWVk
ZGU0MTQyNzY5MzI4MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1YWEzZDU0ODA2ZjcyYzdlZGMw
Y2IxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywxNSArMjcsMTYgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDZiZmJmYWZiMjA0NDc4MzBkNzMwYzM4YzU1ZDkxNjAy
MmMyM2QzMTYuLjA2ZTMwOWU0ZDU3ZWEwNDdmNWVkODI5MDI1OGIxOWNiY2RhNjE5MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291
cmNlUHJveHkuaApAQCAtMzgsNyArMzgsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IDI0NWNmNDBkZmM2ZmM3MjQx
NzQ5OWM5OTZlZWE5NWYwYTNhOGQ2OWEuLjg2ODJjZDc5NWE1ZjU0NGFiYjc4ZTdjMWI4NTg3Yjk2
ODgzZjk0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
U291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmgKaW5kZXggMzkwYzBjZTFjMjdiNjA4ZGM5N2FhZmE1MTg2MzYxODgwYzNh
ZjRkMy4uYzMzNzgzMzNjMDI2NjZkYTYxYWJhYzY0OTQ3MDIxMjFkYjVlODZjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIKKwogI2lu
Y2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTM4
LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERl
Y29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5LmgKaW5kZXggMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYxODNhYmQwZTc0NWI4MzUzMy4u
ODQzYmIwNmY3YjU2YzZlM2NmYmVlNzlhN2U0MjgxZWZlZThmOWE3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaApA
QCAtMjgsMTQgKzI4LDE1IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmOGFiYzFmNDA1ZmMxNDY5NDc1YjRkOTBi
YWQzZDUzY2EwZjgwMTRlLi42MWM0NzA4YWU5NmRiY2FhNTY5ODA5ZWUxOTk1YmU4MTZhOTFmZjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMp
ICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbXBvcnQgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bXBvcnQgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2Rl
Y3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDc4OGM1ZjAwYzAyZjRmMTQ4ZmVlY2Nk
MzhkMTA2ODE4YjBkN2U5NjEuLjNhYjRlNGIxY2YxYzE0MTIzMGMxM2U0NTc2YzVlZDZlNmVmYzJl
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFW
QVNTRVRXUklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtMzYsNyArMzcsNiBAQAogCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xh
c3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQppbmRleCA3YTYzMzYzNDdjMDA3ZTk3
YjczYjU0Mzc3NDkxNjgzOGQ2NDAzN2RhLi4xYWE1M2NjMmZiNzdiYWY5ZTMyNjUwNzIxMDgwOWZk
NzZjZmJiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKIAot
I2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW1wb3J0IDxG
b3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBmNmVkODExZjUzNDJmZTQ4NTU1MTc2Zjg5ZDUxNDU3
NTYyYzY2NTg1Li4wYmNkNTY3M2M5MzQ2YWRhMTFkNjU2YzNhZGQ1MWJlNGVkYmMyNzMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtMjUs
NiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCkBAIC0zOSwx
MCArNDAsNiBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb247CiBPQkpDX0NM
QVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwotfSAvLyBuYW1lc3BhY2UgSVBDCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC0xMTIsNCAr
MTA5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5k
ZXggZGRiZTRlZWRkNDQxZGY4N2M1NWFkMzMwZjA0MmNjZGNmYWRmYjkwYi4uNjUxZmYyNTRmOTA1
YzE2YTkwY2I0ODJjOTc3M2Q0YWM3NDI5NGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtMjksNyArMjksNiBAQAog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdl
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmgKaW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlmZGVjMzY5MDE3NzI3NC4uOTNm
MDNhODI1NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJEb3dubG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBAIE9CSkNfQ0xBU1MgTlNQcm9n
cmVzczsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCiAKLW5h
bWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0MGYyN2MxNjA1YzNjZDc0
YmM2OTA3YjdkOTFiNDdiNzYyLi43MjZkZDk5MGJhZmQ0Mzk0YjVhZmMwMzJhMWNmMjBmMTg0OWM0
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1MC4uOTgw
YTA2Zjc4MzlkYmQ1ZTlmOWQ1MDQ1NDA5YTMzZDc3YjFjMDM4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFwLmgi
CiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRl
eCA0NDliMTNkOGUwN2IyY2QwNDJjNGJhMzYzNmFiNzkzZDM3YjFjM2Y0Li5jNzc4ODgxMWYwMzJk
NThmOGI1Mjc3MzZlMWQyMjc4NDEwZjkxM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgi
CiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtTZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMzE5NjQxOTBkMTQxZDU0OWRhMGJhZjJkYzhi
ZjI5N2I0ZTU4MWU4OS4uMDQzNGJmODgwOWE3ZWIzZWNjMThlOGY2NTBjYzAyNzhhZTZlYjUxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgpAQCAtNDAsNyArNDEs
NiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA1YjQ4OWNjNTM4ZjdjMDcxNTEwMTA2YzU4ZjVjMDk0
ZWM5YThlMWI4Li40OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2NjMzNlMzhjMTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXRTdHJlYW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNTJlYzM5MjY5MDIxOGVkZTY2OGQ1NWU2MzhkOGUxNzUw
MmZkNmVlNS4uNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5ZmIyMDZmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtRXJyb3IuaD4KQEAgLTM3LDcg
KzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29k
ZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2NiZmYxMDg5Y2MxMDVkZDFh
MDBiZWJmZGY2MWQzM2M3ZjY2YmQuLmQzN2Q3ODA2OTgzYmJhNTQ3Y2EwZjkyMzVlYjRiZjZiNzMx
NTY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CkBAIC00Myw3ICs0NCw2IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IGRi
NTc5NWRkMjE3ZjQ1YWQ1ZjY3ZTMwYjc5MWY5MmUyNzZjMDI5ODYuLjk2MWU0NjQ1OWJlNzcxNzdl
MjYwNWU3ZDg2NTJhZGE4MDIwOTdiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU29ja2V0VGFzay5oCkBAIC0zMSw5ICszMSw2IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0
VGFza1NvdXAuaCIKICNlbHNlCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKLX0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCmluZGV4IGRhYzY5MzUw
N2ViM2VmY2VhNmQxMDk0ODAxYmMwMWIzNmZlMjYzOWQuLmU2ODI2ZTQ3ZTgzOTU5NDAyOGFmOGY0
YWVkMjM5MmI0YjA1ZDJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtMjcsMTUgKzI3LDEyIEBACiAK
ICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzazsKIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EubW0KaW5kZXggODU1MzQ4NzQ0MDRjZTJiYWE0NGFlNjU2NTQ3ZDM3MjI1MzMyZWFiOC4uOTBi
YzQwOWJmZmI3MGEwZWU5ZTczNThiMzg2NzU5N2QyOWYyNGUwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0K
QEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKIAot
I2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5o
IgogI2ltcG9ydCAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24v
TlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0NWZjNjY5ZDc2NmE3NjFjNWQ3NzNk
Yzk1ZjA1NDFhMzhlMzZmOGUzLi5hM2U3MDE0YjVkOGVjMDk3MzhmZmE3ZDU2NjQ1NDUwMTBmMDUz
NDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29j
a2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nv
Y2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5o
CmluZGV4IGU0MjFiOWUxYzcxMzE4NDM0ZjY0ODdmNWZjYjVhNmE4N2JkNzM5MTkuLjA4ODkyMzk1
OWZlNDYwZmYyYmJhNGM4YzA4Mzk5ODA2NTdiZjM0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCkBAIC0yNSwxNCAr
MjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hh
bm5lbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggZTAwYTBjY2RmYTU4NzVjMDI4YzUwNTIzMTE0MTcyOGVlOTViNDM5Mi4uZTM4YmMxYzYwYWY2
ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01Myw2ICs1NCw0OCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1lbnRDb2RlciB7CiAgICAgfQog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5UmVmZXJl
bmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZl
cmVuY2UpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVuY2Uuc2l6
ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9CisgICAgc3RhdGljIE9wdGlvbmFs
PEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAg
ICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUo
KTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICAgICAgaWYg
KCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRhKSwgRXh0
ZW50KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7Cisg
ICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZl
cmVuY2VEeW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAgICB7Cisg
ICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJlZmVyZW5j
ZS5zaXplKCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXplKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5
UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQorICAgIHN0
YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlm
ICghc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUoKTsKKyAgICAg
ICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVu
Y2Uoc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0YSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVy
ZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIHN0YXRpY19jYXN0PHNp
emVfdD4oc2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBB
cmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNldCkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDMy
YmI0NTdhNWI4ODVmM2Q1NjY4N2U3OWYxNWMzYTI2NzFiZTY0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApAQCAtMCwwICsxLDEy
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bGltaXRzPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2lubGluZSBjb25zdGV4
cHIgc2l6ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50
ID0gYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVuY2U7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZl
cmVuY2VEeW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRl
ZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkK
KyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBBcnJheVJl
ZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCisgICAgICAg
IDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwgbV9zaXplKHZlY3Rvci5zaXplKCkp
CisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3Np
emU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAg
Y29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQor
CisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8VD4g
cmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9zaXplKTsKKworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBtX2RhdGEg
eyB9OworICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgQXJy
YXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KKworICAgIHRlbXBs
YXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2ZWN0b3Iu
ZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5zaXplKCkgPT0gRXh0ZW50KTsK
KyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIUV4
dGVudDsgfQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gRXh0
ZW50OyB9CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChp
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1f
ZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7IH07Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitBcnJheVJlZmVyZW5jZShj
b25zdCBXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBBcnJheVJlZmVyZW5jZTxU
PjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgKaW5kZXggZWMzZDE0YWU4ZjNlYzI0NzA1NDc2M2NhZWU5MDljYzJjODc1ZjVkOC4uYmJk
N2FiY2I0Y2RjNjA0MzgyYjEwNjVlMzMyMzg0NDljNmFjNTk3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjI3LDEwICsyMjcsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7CiAKICAgICB2
b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKTsKLQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQgPSAwLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOyAvLyBUaHJlYWQtc2FmZS4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7IC8v
IFRocmVhZC1zYWZlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4K
KyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGNoZWNrIHRoZSBTZW5kU3luY1Jlc3VsdCBmb3Ig
dHJ1ZS9mYWxzZSBpbiBjYXNlIHRoZXkgbmVlZCB0byBrbm93IGlmIHRoZSByZXN1bHQgd2FzIHJl
YWxseSByZWNlaXZlZC4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGhvbGQgb24gdG8gdGhl
IFNlbmRTeW5jUmVzdWx0IGluIGNhc2UgdGhleSByZWZlcmVuY2UgdGhlIGNvbnRlbnRzIG9mIHRo
ZSByZXBseSB2aWEgRGF0YVJlZmVyZXJlbmNlIC8gQXJyYXlSZWZlcmVuY2UuCisgICAgdXNpbmcg
U2VuZFN5bmNSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj47CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRG
b3JPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICAKICAgICAvLyBUaHJl
YWQtc2FmZS4KQEAgLTI0OSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYWluIHRocmVh
ZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgYm9vbCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRl
bnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZp
bml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkK
KyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3luYzxUPihX
VEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTU1MSw3ICs1NTMsNyBAQCB2
b2lkIG1vdmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYgYSwgc3RkOjp0dXBsZTxCLi4uPiYgYikK
ICAgICBUdXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3RkOjp0dXBsZTxBLi4uPiwgc3RkOjp0dXBs
ZTxCLi4uPj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9u
U2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cykKIHsKICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQp
OwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU3MCwxNSArNTcy
LDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICAvLyBOb3cgc2VuZCB0aGUgbWVzc2Fn
ZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVw
bHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUoZW5jb2Rl
ciksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgaWYgKCFyZXBseURlY29kZXIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8vIERlY29k
ZSB0aGUgcmVwbHkuCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJl
cGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7CiAgICAg
aWYgKCFyZXBseUFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4geyB9OwogICAgIG1vdmVUdXBsZShXVEZNb3ZlKCpyZXBseUFyZ3VtZW50cyksIHJlcGx5KTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gcmVwbHlEZWNvZGVyOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdh
aXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EYXRhUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI1ZmRh
N2JlZDJmZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotCi0jaW5j
bHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLQotbmFtZXNwYWNlIElQQyB7
Ci0KLXZvaWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17
Ci0gICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheSgqdGhpcyk7Ci19Ci0K
LWJvb2wgRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERhdGFSZWZlcmVu
Y2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCmluZGV4IDM0NTBjMzFi
NzNkZGI2YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNkNjkyN2YzNDFjNWFhOTNmYzEw
NzNjYjA3NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVm
ZXJlbmNlLmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgogCiBuYW1lc3BhY2Ug
SVBDIHsKIAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0gICAgCi1jbGFzcyBEYXRh
UmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotCi0g
ICAgRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKLSAgICAg
ICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIERhdGFSZWZlcmVuY2Uo
Y29uc3QgVmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQotICAgICAgICA6
IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6ZSgpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXpl
OyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIGNv
bnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAgICAgICBpZiAoaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2RhdGE7IAot
ICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEs
IG1fc2l6ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1wcml2YXRlOgotICAgIGNvbnN0
IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3QgbV9zaXplIHsgMCB9Owot
fTsKK3VzaW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5jZTx1aW50OF90LCBhcnJheVJl
ZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGViNzMwNWJmZDE5MTA4NzA2OGQz
MGJjZGI4ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJjNWFiOGJiYWRiZGM1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAgLTE4NiwyMCArMTg2LDE1
IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
RGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYgZGF0
YVJlZmVyZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoUmVm
ZXJlbmNlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQogewotICAgIHVpbnQ2NF90IHNp
emU7Ci0gICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
LSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxpZ25tZW50LCBzaXplKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gbV9idWZm
ZXJQb3M7CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAgIGRhdGFSZWZlcmVuY2UgPSBE
YXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBk
YXRhOwogfQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1lbnQoQXR0YWNobWVudCYgYXR0
YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCBiNzJkZDhhY2Uy
NzczZGIzNTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4ODJmYzkwOTg0YjJmYTU3YmY5
YzQ4Yjk2NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC00
MCw3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
Y2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWlu
dDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6
IHVpbnQ4X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QsIHNp
emVfdCBhbGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhlIGRhdGEgcmVmZXJlbmNl
IGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50
RGVjb2RlciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVmFyaWFi
bGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAgIC8vIFRoZSBkYXRhIGluIHRo
ZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRp
bWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8gUmV0dXJucyBudWxscHRy
IG9uIGZhaWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0IHVpbnQ4X3QqIGRlY29k
ZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxU
Pjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KFQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRleCBmZDQw
OTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5lODNhM2U0YWZmNDJhNTc1NTA1
ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVu
Y29kZXIuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KQEAgLTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6OndyYXBGb3JUZXN0aW5nKHN0ZDo6
dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9yaWdpbmFsLT5zZXRTaG91bGRE
aXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShTaG91bGREaXNwYXRjaFdoZW5X
YWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRl
QXJyYXkoRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJT
aXplKCkpKTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9yaWdpbmFsLT5idWZmZXIoKSwg
b3JpZ2luYWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNo
bWVudHMgPSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgcmVzZXJ2ZShhdHRh
Y2htZW50cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2b2lkIEVuY29kZXI6OmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90
IGFsaQogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVuY29kZXI6
OmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZlcmVuY2UmIGRhdGFS
ZWZlcmVuY2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihkYXRhUmVmZXJl
bmNlLnNpemUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhUmVmZXJlbmNlLmRh
dGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2b2lkIEVuY29kZXI6OmFkZEF0
dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAgICAgbV9hdHRhY2htZW50cy5h
cHBlbmQoV1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmgKaW5kZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYyNDgyZTRjOWExMS4uZWE2MTk2
N2JlMWViY2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0VuY29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhfdDsKIGVu
dW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0
Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC02Miw3ICs2MSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7
CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5jb2RlVmFyaWFibGVMZW5ndGhC
eXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2Nv
bnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJp
dGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5j
ZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQgZW5jb2RlKFQmJiB0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDdmZDE4M2E1NmFl
OThiMDY2NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUyYjQ5ZDVjOGZjNDFhMmQ2NTRh
ZGNkODllODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC05
Niw3ICs5Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0ZDo6cmVtb3Zl
X2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9OwogCi1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIHRlbXBsYXRl
PD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSY+IHsK
ICAgICB1c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCA0NmUyMWQ4ZDkzNmYyZDhiNTE2N2IyNDlmODgxMTE2
ZmZlYjdkNGI5Li43NzQ2MWQ1NTViNzI5MmMyMGViZjUxNGEzMDJkMWRjNmU3NzcwMTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC01NCw5ICs1NCwx
MCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZDxVPihtZXNzYWdlLCBkZXN0
aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKICAgICB9CisgICAgdXNpbmcgU2Vu
ZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6
UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5
bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHks
IFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgc3RhdGljX2Fz
c2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOwogCkBAIC02NCw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wg
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZp
bml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpKTsKIApAQCAt
NzIsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwg
dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpS
ZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFUmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRl
c3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlv
blNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RGTW92ZShy
ZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25z
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwCmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFiODYzOWI3YmE3NjM2YzYuLjUw
MGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogCisj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKQEAgLTQ4LDcgKzQ5LDcg
QEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhKSkKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuY3BwCmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUzMjhmMDFjOTk5OTUwYTAuLmU5
NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXggODUyZWY0M2UwMDg2MzFjOWZh
ZmE4MjMwYzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBlYWZiM2RjNDdjODVkYTQxOTBh
MmJhMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVm
ZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVu
Y2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U3RyaW5nUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5j
b2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcAppbmRleCA4YjM3NDBmNGIxMDFhZDkwZjUwZWQ1N2M4NTBiOTAzMGZj
YzQzMGMyLi40YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTlBPYmplY3RQcm94eS5o
IgogI2luY2x1ZGUgIk5QUmVtb3RlT2JqZWN0TWFwLmgiCiAjaW5jbHVkZSAiTlBSdW50aW1lVXRp
bGl0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmgKaW5kZXggYWQ0ZmNkOWQ4Y2NmNDJmMTJlZTQ4OGUwMTM0NmM2MTlhNzAx
YjhkMi4uYzdhNzA1M2NiZDI2ZDIwNDU0YzA0MmM2YWNlMTZjYjUyNTMwZjQzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotICAg
IGNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBM
YXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggNTczZWQzZDhlZTliYmY0MTAzMTY4ZTc5YTA1N2Y5ZGJkYjliODY5NS4uNjczMjQ0
YTY3ZTA5OWZmYjcxODA3ZDU1NTBjNDU0ZjM2MzFkYjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDMsNiArMjAzLDcgQEAgZGVmIGZvcndhcmRfZGVj
bGFyYXRpb25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5kX2FuZF90eXBlcyk6CiAKIGRl
ZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJuIGZy
b3plbnNldChbCisgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnTWFjaFNl
bmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKQEAgLTIx
NCw2ICsyMTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgp
OgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMn
LAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDMsNiArMjQ1LDcgQEAg
ZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpE
b3dubG9hZElEJywKICAgICAgICAgJ1dlYktpdDo6R2VvbG9jYXRpb25JZGVudGlmaWVyJywKKyAg
ICAgICAgJ1dlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJ
RCcsCkBAIC01MzAsNiArNTMzLDcgQEAgZGVmIGNsYXNzX3RlbXBsYXRlX2hlYWRlcnModGVtcGxh
dGVfc3RyaW5nKToKICAgICAgICAgJ09wdGlvblNldCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9PcHRp
b25TZXQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5o
IiddfSwKICAgICAgICAgJ1ZlY3Rvcic6IHsnaGVhZGVycyc6IFsnPHd0Zi9WZWN0b3IuaD4nXSwg
J2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAg
ICAgJ3N0ZDo6cGFpcic6IHsnaGVhZGVycyc6IFsnPHV0aWxpdHk+J10sICdhcmd1bWVudF9jb2Rl
cl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdJUEM6OkFycmF5
UmVmZXJlbmNlJzogeydoZWFkZXJzJzogWyciQXJyYXlSZWZlcmVuY2UuaCInXSwgJ2FyZ3VtZW50
X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICB9CiAKICAgICBt
YXRjaCA9IHJlLm1hdGNoKCcoP1A8dGVtcGxhdGVfbmFtZT4uKz8pPCg/UDxwYXJhbWV0ZXJfc3Ry
aW5nPi4rKT4nLCB0ZW1wbGF0ZV9zdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5j
cHAKaW5kZXggNjEzNDNiZDk0MTA2YjZlNzg5ZjgzYmMyNWRlNzlmN2E2MDQwOTNjYy4uYzc4MjMx
NmYzMDU3YTNjYWY5ZDNlMjA3N2M4MTMyNTUzZTY5NzU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElEYXRhLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkFQSURhdGEuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV4aWxpYXJ5UHJvY2Vzcy5oCmluZGV4IDdiYTIwN2FiYjBhY2NjOGE1NzBmNWM2NjNmNDZjYWEy
NGE4MjZkOTEuLjMxZmQ3ZDAzZmFmZTAzOTU4Nzk1MmE2Mzc4ZDFhOWM4ZmYyZjc5MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc0RhZW1vbigpOwogICAg
IHZvaWQgbGF1bmNoU2VydmljZXNDaGVja0luKCk7CiAgICAgdm9pZCBzZXRRT1MoaW50IGxhdGVu
Y3lRT1MsIGludCB0aHJvdWdocHV0UU9TKTsKICNlbmRpZgpAQCAtMTg0LDQgKzE4MywzIEBAIHN0
cnVjdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAppbmRleCA5YzI2ZGI0ZTlhOWY2YmE3MmU0ODIwYmI0MDZjMmNmYmRl
MTEzZTliLi5kYTM3MzRjODRkNjU0ZDhkMDNjYTc5MjVmN2JkNzU5OTEzYmMzNGFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMyMjEs
NCArMzIyMSw4MiBAQCBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj4gQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OgogICAgIHJldHVybiB7IFdURk1v
dmUoKnJlc3VsdCkgfTsKIH0KIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLmFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXB0aDsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMuc3RlbmNpbDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYW50aWFs
aWFzOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGE7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRl
cy5zaGFyZVJlc291cmNlczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaXNXZWJHTDI7Cisg
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9uczsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaW5p
dGlhbFBvd2VyUHJlZmVyZW5jZTsKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgZW5jb2RlciA8PCBh
dHRyaWJ1dGVzLnhyQ29tcGF0aWJsZTsKKyNlbmRpZgorfQorCitPcHRpb25hbDxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLmFscGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGVwdGgpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zdGVu
Y2lsKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJm
b3JtYW5jZUNhdmVhdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnNoYXJl
UmVzb3VyY2VzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaXNXZWJHTDIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5ub0V4dGVuc2lvbnMpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0
cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5j
ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQlhSKQorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy54ckNvbXBhdGlibGUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7Cit9CisK
K3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
bz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyYgYWN0aXZlSW5mbykKK3sKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUlu
Zm8ubmFtZTsKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8udHlwZTsKKyAgICBlbmNvZGVyIDw8
IGFjdGl2ZUluZm8uc2l6ZTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhY3RpdmVJbmZvOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYWN0aXZlSW5mby5uYW1lKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8udHlwZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnNpemUp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBhY3RpdmVJbmZvOwor
fQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDRhOTMyMTU5MTMwY2I3YmNkZTU1ZTIxMWUx
N2M0YmVkZWYxNzA1ZDYuLjFkYWU5Njk1ZjMzYzA5ZGNkN2M1ODAzNjA4ZTJkNmFjMTZlOWZjNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC03
MSw2ICs3MSwxMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkFycmF5
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc1R5cGVzR0wuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC0yMDMsNiArMjEwLDEw
IEBAIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CiB1c2luZyBJREJLZXlQYXRoID0g
VmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCitzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzOworI2VuZGlmCisKIG5hbWVzcGFjZSBET01DYWNoZUVuZ2luZSB7CiBzdHJ1Y3QgQ2Fj
aGVJbmZvOwogc3RydWN0IFJlY29yZDsKQEAgLTg3Myw2ICs4ODQsMTkgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uPiB7CiB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYp
OworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbz4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBD
CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTA0MSw0ICsxMDY1LDE2IEBAIHRlbXBsYXRlIDw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzPiB7CiAKICNl
bmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK3RlbXBs
YXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQ
cmVmZXJlbmNlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UsCisgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQsCisgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyLAorICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UKKyAgICA+OworfTsK
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggY2YxMzFhOTIxZTA4NjM2NWRi
Zjc3ZmE5OGU0MWMxYzc0YTNlN2UyNS4uYWRkOTQ5YmE1MDhkOGU4MTQwODdmZWRlN2IwNDhhM2Rl
YzZjZjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTE1OCw2ICsxNTgsOSBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBzaG91
bGRSZW5kZXJET01JbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBzaG91bGRQbGF5TWVkaWFJ
bkdQVVByb2Nlc3M7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGVuY29kZXIgPDwgc2hvdWxkUmVu
ZGVyV2ViR0xJbkdQVVByb2Nlc3M7CisjZW5kaWYKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJs
ZVZQOURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXI7CiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTEwLDYgKzUxMywxMCBAQCBPcHRpb25h
bDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNo
b3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5z
aG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRF
bmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBkOTFl
NDYwMzhmMzA5YjUxMzBiZmRlNThkZmY0YTlmMTgxOTUxZGZkLi5jMjA2MTIzMTE0MzViZjRmOTJj
ZjA2ZmU1ZTExMjA1YTRiNTExMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMjksNiArMjI5LDkgQEAgc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQ
cm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9
OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9j
ZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciB7
IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIgeyBmYWxzZSB9Owog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggOWJkOGE4MTc1NDlmNThmZTM4M2Q3MjVkYTY2M2Yz
YmM1NGNhMGQ3NC4uNzdlOWI0ZDVjYzc1MmZiY2RiNmI2NWY5YWRjMjYwMTk1NmNhMTQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NG
LmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAKaW5kZXggMWQ4NGUyZmUyNjhmMzQ2MGViMjk3NWM0MmJhOTVkMTRmMWQyMzVjZi4uZmEy
NjhkNTg0YTBmYzhkZjg3YTIxZmE0NTYwNzdiOGM1ZDQyYjg1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2VydGlmaWNhdGVJCiAgICAgLy8gRW5jb2RlIHN0
YXJ0aW5nIGZyb20gdGhlIHJvb3QgY2VydGlmaWNhdGUuCiAgICAgZm9yIChzaXplX3QgaSA9IGNl
cnRpZmljYXRlc0RhdGFMaXN0LnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBHQnl0ZUFy
cmF5KiBjZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0W2kgLSAxXS5nZXQoKTsKLSAg
ICAgICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShJUEM6OkRhdGFSZWZl
cmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pKTsKKyAgICAgICAgZW5j
b2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRl
LT5sZW4pOwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNl
cnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBBcmd1
bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDZXJ0
aWZpY2F0ZUluZm8mIGMKICAgICBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGU7
CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNoYWluTGVuZ3RoOyBpKyspIHsKICAgICAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZTsKLSAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNlcnRpZmljYXRlRGF0
YVJlZmVyZW5jZSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVEYXRh
UmVmZXJlbmNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBHQnl0ZUFy
cmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJyYXlfc2l6ZWRfbmV3KGNlcnRpZmljYXRl
RGF0YVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjc3LDQgKzI3NywzIEBAIE9wdGlvbmFsPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1CiAjZW5kaWYKIAogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwOTE3ZjAxYmUxYzlmOGNh
YTJhYmY3ZjBmODkwZjg5NWEzZjJlZjg2Li41MGNkZTEyYWZhM2FhN2Y3OGMyNzllYzhmYjgxOTc0
NGI2ZmIxZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eU1hbmFnZXIuY3BwCkBAIC0xMzcsNyArMTM4LDYgQEAgUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgQG5vLXVu
aWZ5CiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5Ci1QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAg
QG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9J
UEMvRW5jb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcCBA
bm8tdW5pZnkKQEAgLTY5MywzICs2OTMsNSBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKworUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggOTk1MTgwNzMyODBlOWM5NWEyYjI1ZjAwYmM4YmZiMzg4NzYyMTI0MS4uMTNmYTcxNWU3OTZm
Yzg1OTIzMTRiM2ZlN2YwZDRlYTlhZWQ4OTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
NjMsNiArNjMsNyBAQCBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQogCisK
IFBsYXRmb3JtL2NmL01vZHVsZUNGLmNwcAogCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwCkBAIC01NzMsNiArNTc0LDgg
QEAgV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KIFdlYlByb2Nlc3MvRW50cnlQ
b2ludC9Db2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQogCiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29h
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCkBAIC02ODUsNiArNjg4LDcgQEAgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4IDJmZTM4
NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QuLjczN2I2MjU4MTk4NjZhMGVjYjU5
OWEyMTMwYjMyOTEzZWFmMzk2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBBUEkg
ewogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDRmMzk4YjUzMGY2MDg1NzVjOTY3Yjgz
Yzc0ZmEyZjQzMjhmNmNlM2IuLjhjYTk3ZTZlNTk3YmQ3MTEwYTBkNzM4ZTBjNGE3Yzg1NjAzYThh
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5oCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFByb2Nlc3NUaHJvdHRs
ZXImIHRocm90dGxlcigpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2Vu
ZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2Vu
ZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CisgICAgdXNpbmcgU2VuZFN5bmNSZXN1
bHQgPSBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9w
dGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwogCiAg
ICAgZW51bSBjbGFzcyBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4gdm9pZCBz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmLCBDJiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwLCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiA9IHsgfSwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0
bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsK
QEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNz
YWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5k
U3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50
b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTE2MywxMiAr
MTY0LDEyIEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IAotYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0
eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRz
IHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMp
CitBdXhpbGlhcnlQcm9jZXNzUHJveHk6OlNlbmRTeW5jUmVzdWx0IEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PElQQzo6U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVChVOjpp
c1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFRyYWNlU2Nv
cGUgc2NvcGUoU3luY01lc3NhZ2VTdGFydCwgU3luY01lc3NhZ2VFbmQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVT
T0F1dGhvcml6YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5kZXggODIz
YzIwMmE4NTZhMDEzNmRkOWVhNzU5ZjBlY2RlYmE0N2Y0ZjM2Mi4uYjU3N2NiZGY4ZTA3OGY0ZmI0
Zjg3MzRkN2JmZDYwOGQyMDM4ODA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24gZmluYWwgOiBwdWJs
aWMgTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24sIHB1YmxpYyBGcmFtZUxvYWRTdGF0
ZTo6T2JzZXJ2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5LmgKaW5kZXggZmY5OGI4NGZhODlkYmVmZGQ2NDY2NmJiYmE0
MmZjOTBjZWMzNTc3Zi4uMTI4YTM5NzdlNjNlZTRmNGVmMWYyMGVhYWVjODZkMDhlY2JmNThkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpA
QCAtMzUsMTAgKzM2LDYgQEAKIE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbExvYWRlcjsKICNl
bmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzRjNzE4NzRhMTBkYTli
NTQxZmVlMjgyMDgwOGMxZTUwZDNmYTkyYi4uOWRiM2E1MDliOTE0YzA5M2NhZjE2OWEwNWQ2NWI1
N2VkMGM4MDEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCkBAIC04MCwxMCAr
ODEsNiBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggMjRiNjMzZTQ4NGQyYTM1YmE3NGQ0NWYx
MmVkZTM0YTBmNzhjYTBhNi4uMjQ4ZTUzYTA4M2QxOWEwZWY0ZDgzYzIzYjhjY2UwMDM0NWRhYWIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgotI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRl
bHkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmgKaW5kZXggMTI5YTM0MGYwODk2NGQwZmZhMjNhMzcxMDFhMDlhODU2ZDNj
Y2NiMi4uYTRkOGQ3Y2Q4MDRlNjU2MGRhYmZkZTYxMTRmZjA2MjExYmFkNDdjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb250ZW50V29ybGRTaGFyZWQuaCIKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTQ4LDEwICs0OSw2IEBAIGNsYXNzIFVzZXJTY3JpcHQ7
CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
NmVkMWM2OWMwOGZjNTU5ZmUyYTNmM2I5Mzk1MGVhODI4ZDYwZDRiZi4uY2VjNzNkMTNkMDk4ZDcx
MzE4NDhhZmI1OTNlZjA3MjQxMDIxOGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC01OCw3ICs1OCw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC03OTI3LDYgKzc5MjYs
MTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckNhbnZh
c1JlbmRlcmluZ0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRPTUluR1BV
UHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJs
ZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyA9IHByZWZl
cmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpOworI2lmIEVOQUJMRShXRUJH
TCkKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzID0gcHJlZmVy
ZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCk7CisjZW5kaWYKKwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2Rl
ckVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkKICAgICBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2Rl
ckVuYWJsZWQoKSAmJiAoIVdlYkNvcmU6OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVmZXJlbmNl
cygpLnZwOVNXRGVjb2RlckVuYWJsZWRPbkJhdHRlcnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDY0MjQ0NmY5ZTlhYTRiNTIxMTE0OTAzYjZmMGI1ZjcxMWY5
MWIyZTUuLjQzN2FiNzUwYjM1YWIxNjNiMmE1ODBhZTg2NzJlZDQ2MDE2NDc0MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRG
cmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmFn
Q29udHJvbGxlckFjdGlvbi5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMjAzLDcg
KzIwNCw2IEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7CiB9CiAK
IG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBj
bGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKaW5kZXggZjQyNDVjZTY1
ZTlkMmQ1NjViM2YxMjVmMzQ1N2EyNTZmYjM5YzlkNC4uZDIzOGMyYTFhNjA4ZGM1YTQ2MzJlNmEx
OTk3N2RiNjFiYWI2MTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZUhhbmRsZXIuaApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5k
ZXggZDQ0MmI2MmI1MjI1ODdmOTBmYTY4OWQ1NmIyMDYyNzZkZWI0NDgyYi4uODI1Y2QwMjY4OGEy
NjgyMTk0MWZmN2E0MThmNGRmNWE5NzViYTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzgsMTAgKzM4LDYgQEAgbmFtZXNwYWNlIEFQSSB7CiBj
bGFzcyBGcmFtZUluZm87CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAzNTI4ZjQ3MWY0NjNkZjZjMTEzMGEzZmI4Mzc3NmJmMWIyYWJl
Zjk0Li4wYjc2OWYwMzU0ZWI0ZjAzMmQyMjA5ZWM3OWI4ZmUyMTllZmQ4ODkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY5OCw3ICs2
OTgsNiBAQAogCQkyRDkyQTc3QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJndW1lbnRDb2RlcnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzRDYxMDQx
M0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0My
MTJCNkE3MTAwRjQ5M0ZEIC8qIEF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk2NkExMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFj
aG1lbnQuY3BwICovOyB9OwogCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAz
MkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi87IH07Ci0JCTJEOTJBNzdF
MjEyQjZBNzEwMEY0OTNGRCAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBE
YXRhUmVmZXJlbmNlLmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERl
Y29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4
MDIxMkI2QTcxMDBGNDkzRkQgLyogRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ5RjEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rl
ci5jcHAgKi87IH07CiAJCTJEOTJBNzgxMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdlUmVjZWl2
ZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUEzRUVEMEMxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgKi87IH07
CkBAIC0xMzAzLDYgKzEzMDIsNyBAQAogCQk3QUZCRDM2MzIxRTUwRjM5MDA1REJBQ0IgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi87IH07CiAJCTdBRkJEMzY3MjFFNTFCQUIwMDVEQkFD
QiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQzNkYy
MUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQ
ZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CisJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZCQyAvKiBB
cnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi87IH07
CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRB
MEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0
aW9uYXJ5LmggKi87IH07CkBAIC0yNzE5LDcgKzI3MTksNiBAQAogCQkxQUM1RkZDMTE3NEJGRDFC
MDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUxvYWRTdGF0ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0Ix
NSAvKiBQYWdlTG9hZFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBh
Z2VMb2FkU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFDNzUzN0QxODNC
RTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGF0YVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rp
b25EaXNhYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5nRGV0ZWN0
aW9uRGlzYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVBMUMxQjMz
Njk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNjksNiArNDM2OCwxNiBAQAogCQk3QUZC
RDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5oOyBwYXRoID0gQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkQyMUU1
NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyc2lz
dGVuY3lVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2RTIxRTU0
NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
ZXJzaXN0ZW5jeVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IxREIy
NjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFycmF5UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkEyNTRB
RkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkU3MjY1
NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9u
c0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY2NTMsMTEgKzY2NjIsMTEgQEAKIAkJCQkx
QUVGRDI3ODExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oICovLAogCQkJCTFBM0Q2
MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi8sCiAJCQkJMUFFRkQy
RjYxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggKi8sCisJCQkJN0IxREIyNjUy
NTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8sCiAJCQkJQkNFRTk2NkExMTJG
QUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwICovLAogCQkJCUJDRUU5NjZCMTEyRkFGNTcw
MDZCQ0MyNCAvKiBBdHRhY2htZW50LmggKi8sCiAJCQkJQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVB
IC8qIENvbm5lY3Rpb24uY3BwICovLAogCQkJCUJDMDMyREEzMTBGNDM3RDEwMDU4QzE1QSAvKiBD
b25uZWN0aW9uLmggKi8sCi0JCQkJMUFDNzUzN0QxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZl
cmVuY2UuY3BwICovLAogCQkJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJl
bmNlLmggKi8sCiAJCQkJQkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3BwICov
LAogCQkJCUJDMDMyRDlFMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggKi8sCkBAIC04MzI3
LDExICs4MzM2LDE2IEBACiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICov
LAogCQkJCUY0MDk0Q0JBMjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHAgKi8sCiAJCQkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmggKi8sCisJCQkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4OEYwMDA0
RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywKIAkJCQk3
MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZC
IC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAorCQkJCTdCOTA0MTY1MjU0
QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLywKKwkJ
CQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oICovLAorCQkJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5
OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAq
LywKIAkJCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKQEAgLTgzNDksNiArODM2MywxMCBAQAogCQkJ
CUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAg
Ki8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAorCQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovLAorCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZF
RUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3Qjkw
NDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKQEAgLTExMTY1LDYgKzExMTgzLDcgQEAKIAkJCQkx
QUVGRDJGNzExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQUYwQzRBMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyogQXJndW1lbnRDb2Rl
cnNDb2NvYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8q
IEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyODE4M0RENkY2MDAw
NzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUZBNjM0RjIzNEY3
QzY0MDBGRkE4NjQgLyogQXN5bmNSZXZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTEzMjMzLDcgKzEzMjUyLDYgQEAKIAkJCQkyRDkyQTc4NTIxMkI2QUIxMDBGNDkzRkQgLyogQmxv
YkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0QyMTJC
NkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMkQ5MkE3
N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDlEQUEzOEMyNENCQTFBODAwNzkzRDc1IC8qIERlZmF1bHRXZWJCcm93c2VyQ2hlY2tz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQwQzU2RkUyMjlGMURFQTAwQkQzM0U3IC8qIERldmlj
ZU1hbmFnZW1lbnRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmlu
ZGV4IGY5MmRhNmE0N2Y3ZTI0ZjM4Mzk5YWEzNjk4YTIxMjkwZDM2MWQ0YTYuLmM5ZGM2ODJiODc1
NDliODI1MGRiMjJiMmExY2UyMTU1NTAwMGNlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTM2
LDEwICszNiw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yOwogY2xh
c3MgUGF5bWVudENvbnRhY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMmMwZGY1YjlmNTQ5Njg0N2VkNjY5MTBiZjJm
MzliMmNkYzYwY2EwMi4uNWJlOGI5OTc1MjBjNGFkN2YxYjQ0MDdhZTcyMDRjODRhOTk4ODc0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaApAQCAtMzUsMTAgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYTc5MThlNGI1MGM5YjdjZjViMmU3OWIwNzdkMDM1MjEyYzYx
MjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitlbnVtIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGUgeyB9Owor
dXNpbmcgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQwMjdiYjU4OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShhdHRyaWJ1dGVzKSk7Cit9CisK
K1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQoreworICAgIElQQzo6TWVzc2FnZVJl
Y2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1l
c3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworfQorCitSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCit7CisgICAgSVBD
OjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFw
KCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7
CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVmZmVyKCk7
CisjZW5kaWYKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIG1fY3Vy
cmVudFdpZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWln
aHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlclNlbmRSaWdodDsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNw
bGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3Bs
YXk6OlJlcGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JDb2xv
clNwYWNlUmVmKCkpOworICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgIGF1dG8mIHNj
ID0gcGxhdGZvcm1Td2FwQ2hhaW4oKTsKKyAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOworICAg
ICAgICBzYy5wcmVzZW50KHsgV1RGTW92ZShkaXNwbGF5QnVmZmVyKSwgbnVsbHB0ciB9KTsKKyAg
ICB9CisjZWxzZQorICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworI2VuZGlmCisgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29u
c3QgU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IEN1
cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCdzIG5vdCBjbGVhciB0aGlzIGlzIHRo
ZSByaWdodCB3YXkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkz
NDkKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJs
ZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCit7CisgICAgaWYgKG1f
ZGlkSW5pdGlhbGl6ZSkgeworICAgICAgICAvLyBJbml0aWFsaXphdGlvbiB0aW1lZCBvdXQgYmVm
b3JlLCBzbyBsb3NlIHRoZSBjb250ZXh0IG5vdy4KKyAgICAgICAgd2FzTG9zdCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGluaXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVx
dWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0KCkKK3sKKyAgICBmb3IgKGF1
dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmZv
cmNlQ29udGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDaGFuZ2VkKCkKK3sKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3Rvciht
X2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmlj
YXRpb24oKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50
aWxJbml0aWFsaXplZCgpCit7CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZSkKKyAgICAgICAgcmV0
dXJuOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAg
ICBpZiAoY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQ+KG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRp
bmdJZlN5bmNNZXNzYWdlQXJyaXZlcykpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBUaW1lZCBv
dXQsIHNvIHJlcG9ydCBpbml0aWFsaXplZCB3aXRoIGR1bW15IGRhdGEuIFdlIHNob3VsZCBsb3Nl
IHRoZSBjb250ZXh0LgorICAgIHdhc0NyZWF0ZWQoIiIsICIiKTsKKyAgICAvLyBGSVhNRTogTmVl
ZCB0byBtYXJrIHRoZSBjb250ZXh0IGFzIGxvc3QsIGJ1dCBpdCdzIG5vdCBzYWZlIHRvIGZvcmNl
IGxvc3QgaW4gdGhpcyBjYWxsIHN0YWNrLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU0ODI3NDZhMzJjNDk4MzQ0NGY4YmQxZGZjZWQ2OTcxNzMwNDliNTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaApAQCAtMCwwICsxLDQxMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFdlYiBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgaW50ZXJmYWNlLiBUaGUgaW1wbGVtZW50YXRpb24KKy8vIGNv
bnZlcnRzIHRoZSBpbnRlcmZhY2UgdG8gYSBzZXF1ZW5jZSBvZiBJUEMgbWVzc2FnZXMgYW5kIHNl
bmRzIHRoZSBtZXNzYWdlcyB0bworLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gR1BVIHBy
b2Nlc3MuCisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVu
bmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVy
CisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KKyAgICAsIHB1YmxpYyBXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVy
cmlkZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKKworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRl
cy4KKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsKKyAgICB2
b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgdXNpbmcgV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsKKyAgICB2b2lkIGVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGZpbmFsOworICAgIHZvaWQg
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRl
eHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisKKyAgICAv
LyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlz
IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisgICAgdm9pZCBzZXRGYWlsTmV4
dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dM
ZW51bSBlcnJvcikgZmluYWw7CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgZmlu
YWw7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0
Zm9ybUdMT2JqZWN0IHNoYWRlcikgZmluYWw7CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1l
KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRSZW5kZXJi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAg
IHZvaWQgYmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEp
IGZpbmFsOworICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBn
cmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lk
IGJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBibGVuZEVxdWF0
aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFscGhhKSBmaW5hbDsK
KyAgICB2b2lkIGJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKSBm
aW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVu
dW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpIGZpbmFsOwor
ICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5h
bDsKKyAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIGNs
ZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1
ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjbGVhckRlcHRoKEdDR0xjbGFt
cGYgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdDR0xpbnQgcykgZmluYWw7
CisgICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwg
R0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZpbmFsOworICAgIHZvaWQgY29t
cGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weVRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVCdWZmZXIoKSBm
aW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUZyYW1lYnVmZmVyKCkgZmluYWw7Cisg
ICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQcm9ncmFtKCkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVSZW5kZXJidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVRleHR1cmUoKSBmaW5hbDsKKyAgICB2b2lkIGN1bGxGYWNlKEdDR0xlbnVtIG1vZGUp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoTWFz
ayhHQ0dMYm9vbGVhbiBmbGFnKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0NHTGNsYW1w
ZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAg
dm9pZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5cyhH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpIGZpbmFsOworICAg
IHZvaWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZW5hYmxlKEdDR0xl
bnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWlu
dCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNo
KCkgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBhcmczKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwpIGZpbmFsOworICAgIHZvaWQg
ZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAo
R0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5h
bDsKKyAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgR0NHTGludCBnZXRB
dHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkg
ZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFt
ZSkgZmluYWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50
ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0
aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xl
YW4+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOworICAgIEdD
R0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcg
Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25G
b3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNw
YW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CisgICAgU3Ry
aW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdD
R0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
IGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIHZv
aWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRVbmlm
b3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOworICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0J1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRW5hYmxlZChHQ0dMZW51
bSBjYXApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1Byb2dyYW0oUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBm
aW5hbDsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0
IHVuaXRzKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUs
IEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CisgICAgdm9pZCBzY2lzc29yKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAg
IHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJikg
ZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwg
R0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xl
bnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5h
bDsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQg
c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsK
KyAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVu
dW0genBhc3MpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFj
ZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsK
KyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwg
R0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0
IHopIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUs
IEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAg
IHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dM
ZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAg
ICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0
YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBm
aW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lk
IHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQg
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFs
OworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
ZGl2aXNvcikgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJn
ZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRw
dHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0cikgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJT
dWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2
b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZv
cm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsK
KyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFu
PGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZp
bmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgdGV4U3RvcmFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0
ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBm
aW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
LCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBH
Q0dMdWludCB2MykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
MnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgs
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3
UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5k
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NH
TFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZl
cmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3Rl
bmNpbCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2
b2lkIGJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBm
aW5hbDsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgUGxh
dGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVl
cnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNh
bXBsZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
aShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFt
KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CisgICAgR0NHTGZs
b2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHN5bmMg
ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKSBmaW5hbDsK
KyAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgdm9pZCBk
ZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIEdDR0xlbnVtIGNsaWVudFdhaXRT
eW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0
KSBmaW5hbDsKKyAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBm
bGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NH
THN5bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlz
VHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBi
aW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlk
KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0
aXZlTW9kZSkgZmluYWw7CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwor
ICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkg
ZmluYWw7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7Cisg
ICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCByZXN1bWVU
cmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpIGZpbmFs
OworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
cHRyKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykg
ZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkg
ZmluYWw7CisgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBw
YXJhbXMpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZp
bmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBm
aW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgZmluYWw7
CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2Vy
RVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhU
KCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVt
IG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgdm9p
ZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFs
OworICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1
ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZv
cm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEZy
YW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKKyAgICB2b2lkIGdldE11bHRpc2Ft
cGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpIGZpbmFsOworICAg
IHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xm
bG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1
c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgLy8g
RW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKworcHJvdGVj
dGVkOgorICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4K
KyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
Ly8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVhdGVkKFN0cmluZyYm
IGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAg
IHZvaWQgd2FzTG9zdCgpOworICAgIHZvaWQgd2FzQ2hhbmdlZCgpOworCisgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmKTsKKyAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCisvLyBUaGUgR0NH
TCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVz
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PEdDR0xlbnVtLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGJv
b2xlYW4pID09IHNpemVvZihib29sKSk7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdD
R0xiaXRmaWVsZCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NH
TGJ5dGUsIGludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWJ5dGUs
IHVpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNob3J0LCBpbnQx
Nl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1c2hvcnQsIHVpbnQxNl90
Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xpbnQsIGludDMyX3Q+KTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNpemVpLCBpbnQzMl90Pik7CitzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1aW50LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWVfdjxHQ0dMZmxvYXQsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZV92PEdDR0xoYWxmZmxvYXQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZV92PEdDR0xjbGFtcGYsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZV92PEdDR0x2b2lkLCB2b2lkPik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFBsYXRm
b3JtR0xPYmplY3QsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMaW50cHRy
KSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xzaXplaXB0
cikgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMdm9pZHB0
cikgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMY2hhcikg
PT0gc2l6ZW9mKHVpbnQ4X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnQ2NCkgPT0g
c2l6ZW9mKGludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x1aW50NjQpID09IHNp
emVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMpID09IHNpemVv
Zih1aW50NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRyX3QpKTsKKy8v
IEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJiMmJjMTAxMGVm
OGVjZDBhZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgewor
ICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2FzQ2hh
bmdlZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVy
YXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMx
NGE0NDMxNTYyMTFjYzcxODUxMzczMzhjYWNjN2NlNTAzNTc5NWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NyBAQAorLyog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4g
RG8gbm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2so
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xF
cnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50
aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRl
eHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRl
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBh
cmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJnMCwg
aW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVi
dWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcx
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1H
TE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xv
cihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dM
Y2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxw
aGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5k
RXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFj
dG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwg
R0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuY1Nl
cGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHVp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNv
bG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdD
R0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFz
ayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBH
Q0dMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJv
b2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFs
cGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGls
ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBo
ZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVm
ZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZm
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1Bs
YXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVy
YnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3Jh
bShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRl
eHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFz
ayhHQ0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5l
YXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZm
ZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZm
ZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlm
b3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8m
IGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwg
aW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3Ry
aW5nKEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkK
K3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNw
eSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihm
bG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAg
ICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJ
bnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNw
eSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihp
bnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1
cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAgICBpbnQ2
NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9n
cmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3Jh
bWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJv
b2xlYW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVSZXBs
eTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3Vs
dCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5i
dWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQs
IGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFt
SW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NH
TGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xT
cGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3QgcHJlY2lz
aW9uUmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVy
VHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJh
bmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lzaW9uKQor
ICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30KKworU3Ry
aW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNl
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJj
ZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJn
ZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJh
bWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJp
KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRl
eFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAg
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAg
ICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXpl
ICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQz
Ml90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlv
biwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRh
dGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90KSk7
CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmli
T2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVp
cHRyPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNF
bmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVk
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVi
dWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1
ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3Jh
bShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3Jh
bShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW06OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVm
ZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVm
ZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihh
cmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xi
b29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBh
cmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhl
bFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChHQ0dM
ZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3Rv
cmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292
ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
Y2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNl
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJl
ZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0
ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCBy
ZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNr
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2ls
TWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xl
bnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6
cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBH
Q0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZh
Y2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJn
ZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFt
ZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2
LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
MWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgs
IHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3Qq
Pih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRp
b24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2
YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFt
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRl
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5k
ZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFs
dWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
MmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgs
IHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFs
dWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
M2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHop
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNm
dihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEp
LCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRlcihH
Q0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBu
b3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRl
cihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlk
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmlld3Bv
cnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmlld3Bv
cnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVm
ZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBH
Q0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSks
IHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0
KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNp
emUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJ
bWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSks
IHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdl
U2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJl
c3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3Rh
bmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJp
bWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NH
TGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0
ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3Vs
dCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZT
aXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZ
MCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBk
c3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdD
R0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwg
ZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZl
clRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz
Ml90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNy
YyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRh
cmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFn
ZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVs
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZv
cm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQs
IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
cHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDAo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9m
ZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAg
ICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2Nh
dGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSwgR0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdD
R0x1aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gy
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2Up
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0
aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
STRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBH
Q0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6
LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRl
eCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBz
dGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZz
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJp
dihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZl
ciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xm
bG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVw
dGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRm
b3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBs
YXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCit7
CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBs
ZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVy
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWlu
dCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBh
cmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxl
ciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitH
Q0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRl
cmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9h
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0
ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dM
c3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29u
ZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpG
ZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4o
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29sZWFuIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZh
bHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5j
KEdDR0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
R0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NH
THN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7Cisg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90
Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmpl
Y3QgaWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQs
IGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJp
bWl0aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVp
bnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3Jh
bSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVz
ZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVz
dW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1H
TE9iamVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxh
dGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJn
NCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1
ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQor
eworICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5k
ZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05h
bWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9n
cmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitT
dHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5k
aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0
aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
SW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFy
YW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHBh
cmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGlu
dDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZm
ZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dM
aW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBH
Q0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJB
TkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0
WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VT
KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlP
RVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZl
cnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRl
eEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVy
dGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1
c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz
Ml90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3Qs
IGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
dm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1v
ZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWlu
dCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMYm9vbGVhbiogZGF0YSkgLy8gTk9MSU5UCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQq
IHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1
aW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBhZWY4
M2UyNTg4ODlhNWJlODI2N2E2OGIxYzY5ZmVjNWEzNGUwMzg2Li42YTRhZGY1ZDZkMzRhN2M2OTFi
ZmYwMGVlY2UwMWZjN2FhODk0MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBA
IC04MTgsNyArODE4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVj
dCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2ws
IGJvb2wpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9i
amVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJv
b2wsIGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggOTVjODM2ZTY5NTA0MWQ5N2Qy
NTkwMzZmZDczZGZmNWM0NmI4ZmY5MS4uYzhjNTgyOTA1MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5
N2E1NmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtODIsNyAr
ODIsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJv
Y2VzcygpCiAKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgq
dGhpcyk7Ci0gICAgYm9vbCBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoCisgICAgYXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6
Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVT
YW1wbGVSYXRlKCkpLAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsK
IApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpj
b25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3Ry
ZWFtRm9ybWF0OwogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3Jt
YXQpOwogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9m
RnJhbWVzKTsKLSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZm
ZXJMaXN0PihzdHJlYW1Gb3JtYXQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAppbmRleCBiOGY0
NWE2ZDViYjRkYjQ2MDk4ODAxMjQzYmI1ZTkzMTdiMWUzZTJiLi42NWI4ZmQwZDc3MzQ3ZTkzOGI1
NjQ1ODIyNmI3OGRhNDNjOTc4OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaAppbmRleCBl
NTllMWIwNmI0NDdlNWQ4MGNhNjEwNTJjNmM3YTMyYzRiYTE0MmU2Li44MTk0MDkwYzkzM2IyZjEx
YTY0NjBhYjNjMTc3MmQzNzYxNjM3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5n
QnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllcklkZW50aWZpZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb24uY3BwCmluZGV4IDBkYjg1YWU5YmQyNDFlYmExYmRhNGU2MjI0NDBm
NjMyOGUxZDhhMGIuLjI5N2VlYmRhMTkxODlkZmUwY2ZlNmMxZWQ3NjlhYWNiOWQ2ZDkxMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeS5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
aAppbmRleCBiOWEwMWIwNjI1ZTNiN2M3ZjAxMTg0YTgzYzM2ZTU0OTEyMmYwOWE4Li4xNTE3MmM5
ZjYyMTBiZjRmOTVlMGM2YWE3OTM2YzYyMmVhOGQ5M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUuaApAQCAtNDQsNyArNDQsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaAppbmRleCBiN2NlZGI3ZTgzOTRmOTliYTlj
ZmIwYTJhYzJhOTc4MTFiM2M0MThmLi43NzAyZDFiNzAyZDEyMTYyZTE5YWI5YTZkYWE0YzU5NzUx
ODYyZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Rl
eHRUcmFja1ByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNs
dWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5iYW5kR2VuZXJpY0N1
ZTsKIGNsYXNzIElTT1dlYlZUVEN1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDBjNmY3M2QwNzE0NGI1
NjI2NzY5MzY3YzlmMmEzYTQwMTdlYWRlODAuLjE2OGVmNDM1ZGRlNTYxNGQzMGYzYmUyODY3MGE0
N2FlZDYxNmRlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNF
KExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGli
V2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCA3MzlhNDk2ZWY0OTRj
YjRhNjE4NTY2ZmZjNjRkNGEyNjRhNzRlOWQwLi40YmVhZTA2MjMxN2JhMjZhNjA2ODNmMWY0NTEy
MzNlYjEwNzNhYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJX
RUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKQEAgLTQzLDcgKzQ0LDYgQEAgdXNpbmcg
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiAKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBj
bGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDJkYWQyMDM4NDJmMGU1NTNm
ZTNiNDYyNDQxZWU5NGZhMjY0OTNhMTEuLmMyOGNlN2YyZTE3ZTg5YThlNTE4NmE3NzA2YTJlOGE0
NGY2YjdlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJBUElJbmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVXNlckNvbnRlbnRUeXBlcy5oPgpAQCAtNTQsNyArNTUsNiBAQCBjbGFzcyBEYXRhOwog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDQgKzE2MSwz
IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAppbmRleCAzMDY0ZTljNGFmY2MyY2ZmNTRhMzI1ZTI1MzFlZDA1MjJhMDAxMzkzLi5i
OTc5NDY1OWVhYmQxODRiMzg5YzA2ZDEzMmY4YzQyZjgwNTIzY2MyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODY1NzExYjM2
NmMyOGRmNDg0YjRjZGMwN2FhM2ZjZjNkY2ViZjJmNi4uNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2
NTc4MjBhMjc4YWYxZGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCA1ODNlMzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZiLi43ZTFk
NDk5NDcxNWY4ODQ5Y2U4YmZlNWVjMzQ1NWQ0NzM3NzgwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVy
LmgiCkBAIC0zNiw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCA5NGVmMGQxZmNlMmU2MDFkZjQ0OWNmZjg1MzlmYmQxNjQ3OTNl
YmUyLi5mZjY5ZjU2MDllNTc3Y2FjNzc3ZjA0YWZhNzRhZjIxMDc0ODY0Zjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldENoYW5uZWwuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxNZXNz
YWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5oCmluZGV4IGY1MzQ3ODM0N2U3NzVkZjM3ZWE5NzYzNGMyMzMwOTMyYjRhMTRk
MjguLmFkN2ZmMTg3ZGJiNDM1M2I5ZWQzYmM1N2M1YmEyYzRhYTRlOGNmZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1NlbmRRdWV1ZS5oPgpAQCAtMzgsNyArMzks
NiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5k
ZXggYWYyNDJjZDJiNTk1YWM0YTQ0ODQyOTdiZTVkNWNmZTE4ZDQ4ZjMyNC4uN2QwMDczNjliOWNj
ZTg1YjhmMDU0NTdkNjY2ZDFlNDQ1MWI5NmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAKLSNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCBkZDA4
MjAxMDcxMmI5ZjVkYjlmZWJkODhkYTY2OWI2ZGY2MWQwZjI5Li5iNDNjYjJlZmFkMWUxMDFlZTI2
NWI5M2RkZTliMDYxMjczNmEwOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
b2NrZXRTdHJlYW1IYW5kbGUuaD4KQEAgLTMzLDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewog
Y2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKaW5kZXggY2I0OGUwNTcz
NDhhMmU4NjZiMDkxZmY1YWM4NzI2MDVjYTE5MmRkNS4uMzIzZjI1ZWU4ZmQ4MWIwMjYzMGQyZjI1
OWExYWZiODg0YjRjZjVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaApAQCAtMzUsNyArMzUsNiBAQAog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IGVhNTM1OTYwMTA5ZmVlNmRjNDgwNWNmNjg5MTI3
OThlZTlhYjZmMDMuLjQwYjRjOGYyMTI5Y2YxMjMzYTFiMzFiODUxMjdlN2E3ZTllM2Q3Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
QEAgLTYwLDEwICs2MCw2IEBAIE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9uOwogT0JKQ19DTEFTUyBX
S1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUERGTGF5ZXJDb250
cm9sbGVyRGVsZWdhdGU7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVs
ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5
ODA2MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRlOWQ1NDky
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYsMjIgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYg
RU5BQkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBj
b25zdAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3Rl
UmVuZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VE
X1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7
CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNo
Um9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4Li4x
MjE1ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3Jl
OjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5h
bDsKICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93
ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMsNiArNDA3
LDcgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hv
cml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1h
aW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBhZ2UmIG1f
cGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggZjY0MjE0NzdhNTZjZWUxYjQ1OWFiMWI3MGQ4ZGNhZDlkM2RhZmMzNC4uZDQ2MzNk
ZGI2Y2M2NDk4MDNiOTI0NTc1NjI1YmZhNTI4YzE3ZDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyMiw2ICs0MjIsOSBAQCBXZWJQYWdl
OjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7
IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hv
dWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQ
VVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBwYXJhbWV0
ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAg
ICwgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVu
ZGVyV2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMu
bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzI1LDcgKzcyOCw2
IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYK
LSAgICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAgICAgICAg
c2NhbGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5Myw2ICszNzk1
LDkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9j
ZXNzRm9yQ2FudmFzUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzKTsK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVy
aW5nKG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEobV9zaG91bGRQbGF5TWVkaWFJbkdQVVBy
b2Nlc3MpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
ZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0wobV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzcyk7
CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKQEAgLTY5OTAs
NiArNjk5NSw3IEBAIHZvaWQgV2ViUGFnZTo6c3luY2hyb25pemVDT1JTRGlzYWJsaW5nUGF0dGVy
bnNXaXRoTmV0d29ya1Byb2Nlc3MoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1f
aWRlbnRpZmllciwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpLCAwKTsKIH0KIAorCiAjaWYgRU5B
QkxFKE1FRElBX1VTQUdFKQogdm9pZCBXZWJQYWdlOjphZGRNZWRpYVVzYWdlTWFuYWdlclNlc3Np
b24oTWVkaWFTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGJ1bmRs
ZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcGFnZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlN2Y4YzBhM2I2MDRlN2FhMTU3Yzc0MDIzMWU1
NTU3NDlkNGVmN2M3Li4yMTEwYTMyZjY3MGYwMGZhMjQ0ZmU2ZjlkNzk1YTZkZGY2MGQxNzA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgog
I2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRy
YXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMTYwLDcgKzE2
MSw2IEBAIGNsYXNzIEFycmF5OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOwogfQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBs
eShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICBTZW5kU3luY1Jl
c3VsdCBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHkpCiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRPblN5bmNo
cm9ub3VzUmVwbGllcygpOwogICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShyZXBseSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRp
b246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKQEAgLTE4MjYsNiArMTgyNiw5
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07Cisj
aWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vz
cyB7IGZhbHNlIH07CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
Ym9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYK
QEAgLTIxODMsNCArMjE4NiwzIEBAIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNM
YXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZTU3NWZjYTAxOWY2YjEyYThmNGRhZTVj
YjFkNjgyZGE0ZTQzNmViOS4uODRlMjg0MTFjZmRkZDkxZjlhNWQ0N2MyMWQ3MWU5ZGI2ZDdjNjM0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KQEAgLTUxNyw3ICs1MTcsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdL
ZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAgLy8gRklYTUU6IEludGVy
cHJldCB0aGUgZXZlbnQgaW1tZWRpYXRlbHkgdXBvbiByZWNlaXZpbmcgaXQgaW4gVUkgcHJvY2Vz
cywgd2l0aG91dCBzZW5kaW5nIHRvIFdlYlByb2Nlc3MgZmlyc3QuCiAgICAgYm9vbCBldmVudFdh
c0hhbmRsZWQgPSBmYWxzZTsKLSAgICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5
b3V0OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpDaGFyKSwKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMp
LCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwK
ICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQ6OlJlcGx5
KGV2ZW50V2FzSGFuZGxlZCksIG1faWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQg
JiYgZXZlbnRXYXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGYyZjIyODIyYzdiMjIzZmNhNTlmOTU1NzNkMTFkYzk5YjEwMzQ4MTEuLjU4MmVl
NzVkOTlhNzQyNDI1NGEzOWRhYjIwNmY4NDYxNzM0YWQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5NDIsNiArMTk0MiwyMCBAQCBib29sIFdlYlByb2Nl
c3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2Up
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KKworI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQg
V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wgdXNlR1BVUHJvY2Vzc0Zv
cldlYkdMKQoreworICAgIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMID0gdXNlR1BVUHJvY2Vzc0Zv
cldlYkdMOworfQorCitib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0Zv
cldlYkdMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9
CisKKyNlbmRpZgorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlOWM0N2RiNGM0NDdjMGY0YWI2MjdjMDk0YjVmNjhkYjU2
NWE5YTZjLi4xYTU4NWFjMTQyYjE4MzI3NjRjNGQ4NTM3OTA5MGIyY2JjYTczYzFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM0Nyw2ICszNDcsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhib29sKTsKICAgICB2
b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sKTsKICAgICBib29sIHNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCk7CisgICAgYm9v
bCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0OworI2VuZGlmCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShWUDkpCkBAIC02ODcsNiArNjkxLDkgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fdXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3VzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91
c2VHUFVQcm9jZXNzRm9yTWVkaWEgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBi
b29sIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMIHsgZmFsc2UgfTsKKyNlbmRpZgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDAyMjI3YjdiNWU0NmMyNDQ0ZDg5ZGI3NDVlNzYyYTkwYzQ4NTNkOTIuLmZl
MzliMDNkOWE1YTQ4YWY0MTc0YmNlNjlhY2ZiN2E3NzZmY2JlNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0x
Mi0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnRzIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQ
VSBwcm9jZXNzLgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktp
dCBJUEMgYW5kIGlzIGluY29tcGxldGUuCisKKyAgICAgICAgQWRkIHRoZSBjb2RlIGdlbmVyYXRv
ciB0byBnZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseQorICAgICAgICB0aGUg
Z2VuZXJhdG9yIGdlbmVyYXRlcyBhIFdlYktpdCBJUEMgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgVGhlIGlucHV0IGRlZmluaXRpb24gdG8gdGhlIGdlbmVyYXRvciBpcyB0aGUgcHJveHkgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaGVhZGVyIGZpbGVzLgorICAgICAgICBUaGUgb3V0cHV0IG9m
IHRoZSBnZW5lcmF0b3IgaXMKKyAgICAgICAgICAgLSBXZWJLaXQgSVBDIG1lc3NhZ2UgZGVmaW5p
dGlvbiBmaWxlCisgICAgICAgICAgIC0gTWVzc2FnZSBzZW5kZXIgY29kZQorICAgICAgICAgICAt
IE1lc3NhZ2UgcmVjZWl2ZXIgYW5kIHBheWxvYWQgaW52b2NhdGlvbiBjb2RlCisKKyAgICAgICAg
VGhlIGdlbmVyYXRvciBjb252ZXJ0cyBHcmFwaGljc0NvbnRleHRHTCBHQ0dMIC1wcmVmaXhlZCB0
eXBlcyB0bworICAgICAgICBzaXplZCBJUEMgdHlwZXMuCisKKyAgICAgICAgVGhlIGdlbmVyYXRv
ciBpcyBpbnZva2VkIGR1cmluZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUK
KyAgICAgICAgc3RvcmVkIGluIHRoZSByZXBvc2l0b3J5LgorCisgICAgICAgICogU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsOiBBZGRlZC4KKwogMjAyMC0xMi0wMSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRhYmxlL3dy
aXRhYmxlIHRvIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmds
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkZGMwZTNiYjQzZDU0MTA1ZThjN2E0MDM5MjMzM2E2NzA3NWFjM2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAs
MCArMSwxMDMwIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04
IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhl
IHNvdXJjZSBmaWxlcyBmb3IgV2ViR0wgR1BVIHByb2Nlc3MgSVBDLgorIworIyBweXRob24zIC1t
IGJsYWNrIC1sIDE1MCBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMgcHl0aG9u
MyAtbSBteXB5IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIworaW1wb3J0IGFy
Z3BhcnNlCitpbXBvcnQgZW51bQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5
cworaW1wb3J0IGNvbGxlY3Rpb25zCisKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJ
dGVyYWJsZSwgQ2FsbGFibGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJh
dG9yLCBDb3VudGVyCisKK3Jvb3RfZGlyID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50
IC8gIi4uIiAvICIuLiIpLnJlc29sdmUoKQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3RfZGly
IC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRl
bnNpb25zR0wuaCIKKworZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsKKyAgICByb290X2RpciAvICJT
b3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorXQordHlwZXNfaW5wdXRfZm4gPSByb290
X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFw
aGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisKK3RlbXBsYXRlX3By
ZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2ZuID0g
cm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNz
IiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29udGV4
dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIi
Ii8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBv
ZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFn
bWEgb25jZQore30KKworIiIiCispCitjb250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAi
U291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUg
PSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgTm90UmVmQ291bnRlZCB7eworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNw
bGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNlbmRp
ZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4g
KCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChT
dHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3t9
Cit9fQorCisjZW5kaWYKKworIiIiCispCisKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuID0g
cm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAi
Z3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuY3BwIgorY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxh
dGVfcHJlYW1ibGUKKyAgICArICIiIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHt7Cit7fQorCit9fQorCisjZW5k
aWYKKworIiIiCispCisKKworZGVmIHdyaXRlX2ZpbGUoZm4sIG5ld19jb250ZW50cyk6CisgICAg
dHJ5OgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBpZiBmLnJlYWQo
KSA9PSBuZXdfY29udGVudHM6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgZXhjZXB0Ogor
ICAgICAgICBwYXNzCisgICAgd2l0aCBvcGVuKGZuLCAidyIpIGFzIGY6CisgICAgICAgIGYud3Jp
dGUobmV3X2NvbnRlbnRzKQorCitjbGFzcyBjcHBfdHlwZShvYmplY3QpOgorICAgIHR5cGVfbmFt
ZTogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyKToKKyAgICAg
ICAgc2VsZi50eXBlX25hbWUgPSB0eXBlX25hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi50eXBlX25hbWUpCisKKyAgICBkZWYgX19yZXByX18o
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9fZXFfXyhz
ZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSA9PSBvdGhlci50eXBl
X25hbWUKKworICAgIGRlZiBpc192b2lkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBz
ZWxmLnR5cGVfbmFtZSBpbiBbInZvaWQiLCAiR0NHTHZvaWQiLCAiY29uc3Qgdm9pZCIsICJjb25z
dCBHQ0dMdm9pZCJdCisKKyAgICBkZWYgaXNfY29uc3Qoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoImNvbnN0ICIpCisKKyAgICBkZWYgaXNf
Y29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVm
IGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgIGRlZiBpc19wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxm
KSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBnZXRfdmFsdWVfdHlw
ZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdl
dF9kZWNheV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIGlmIHNlbGYuaXNfY29u
c3QoKToKKyAgICAgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWVbNjpd
KQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9ydmFsdWVfdHlwZShzZWxmKSAt
PiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1l
ICsgIiYmIikKKworICAgIGRlZiBnZXRfcG9pbnRlcl90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6
CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiKiIpCisKK2Ns
YXNzIGNwcF90eXBlX2NvbnRhaW5lcihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHR5cGVfbmFtZSA6IHN0ciwgY29udGFpbmVyX25hbWUgOiBzdHIsIGNvbnRhaW5lZF90eXBlIDog
Y3BwX3R5cGUsIGFyaXR5IDogT3B0aW9uYWxbaW50XSA9IE5vbmUpOgorICAgICAgICBjcHBfdHlw
ZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY29udGFpbmVyX25hbWUg
PSBjb250YWluZXJfbmFtZQorICAgICAgICBzZWxmLmNvbnRhaW5lZF90eXBlID0gY29udGFpbmVk
X3R5cGUKKyAgICAgICAgc2VsZi5hcml0eSA9IGFyaXR5CisgICAgZGVmIGlzX2NvbnRhaW5lcihz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBpc19zcGFuKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3Bh
biIKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVy
biBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMgTm9u
ZQorICAgIGRlZiBnZXRfY29udGFpbmVyX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LmNvbnRhaW5lcl9uYW1lCisgICAgZGVmIGdldF9hcml0eShzZWxmKSAtPiBPcHRpb25hbFtpbnRd
OgorICAgICAgICByZXR1cm4gc2VsZi5hcml0eQorICAgIGRlZiBnZXRfY29udGFpbmVkX3R5cGUo
c2VsZikgLT4gY3BwX3R5cGU6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlCisg
ICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gc2VsZi5jb250YWluZWRfdHlwZS5pc19jb25zdCgpCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVf
Y29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFpbmVy
XToKKyAgICBtID0gcmUubWF0Y2gociIoW1x3Ol0rKTwoLispPiQiLCB0eXBlX25hbWUpCisgICAg
aWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgY29udGFpbmVyX25hbWUgPSBtWzFd
CisgICAgdGVtcGxhdGVzID0gbVsyXQorICAgIGFyaXR5ID0gTm9uZQorICAgIG0gPSByZS5tYXRj
aChyIihbXixdKyksXHMqKFxkKykiLCB0ZW1wbGF0ZXMpCisgICAgaWYgbToKKyAgICAgICAgdGVt
cGxhdGVzID0gbVsxXQorICAgICAgICBhcml0eSA9IGludChtWzJdKQorICAgIHJldHVybiBjcHBf
dHlwZV9jb250YWluZXIodHlwZV9uYW1lLCBjb250YWluZXJfbmFtZSwgZ2V0X2NwcF90eXBlKHRl
bXBsYXRlcyksIGFyaXR5KQorCitjbGFzcyBjcHBfdHlwZV9mdW5jdGlvbihjcHBfdHlwZSk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgcmV0dXJuX3ZhbHVlX3R5cGUg
OiBjcHBfdHlwZSwgYXJndW1lbnRfdHlwZXMgOiBMaXN0W2NwcF90eXBlXSk6CisgICAgICAgIGNw
cF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFs
dWVfdHlwZSAgPSByZXR1cm5fdmFsdWVfdHlwZQorICAgICAgICBzZWxmLmFyZ3VtZW50X3R5cGVz
ID0gYXJndW1lbnRfdHlwZXMKKworZGVmIGNwcF9zcGxpdF9hcmdzX3NwZWNzKGFyZ3Nfc3BlYyA6
IHN0cikgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAgIyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29t
L3F1ZXN0aW9ucy8zMzUyNzI0NS9weXRob24tc3BsaXQtYnktY29tbWEtc2tpcHBpbmctdGhlLWNv
bnRlbnQtaW5zaWRlLXBhcmVudGhlc2VzCisgICAgY29tbWEgPSByIiwoPyEoPzpbXjxdKlw8W14+
XSpcPikqW148Pl0qXD4pIgorICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW2Euc3RyaXAoKSBmb3Ig
YSBpbiByZS5zcGxpdChjb21tYSwgYXJnc19zcGVjLnN0cmlwKCkpXSkKKyAgICAKK2RlZiBjcmVh
dGVfY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlw
ZV9mdW5jdGlvbl06CisgICAgbSA9IHJlLm1hdGNoKHInKC4qKVwoKC4qKVwpJywgdHlwZV9uYW1l
KQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybl92YWx1ZV90
eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgYXJnc190eXBlcyA9IFtnZXRfY3BwX3R5cGUo
YSkgZm9yIGEgaW4gY3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsyXSldCisgICAgcmV0dXJuIGNwcF90
eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSwgcmV0dXJuX3ZhbHVlX3R5cGUsIGFyZ3NfdHlwZXMpCisg
ICAgICAgIAorIyBQb2ludGVyIG9yIHJlZmVyZXJlbmNlCitjbGFzcyBjcHBfdHlwZV9pbmRpcmVj
dChjcHBfdHlwZSk6CisgICAgY2F0ZWdvcnkgOiBzdHIKKyAgICB2YWx1ZV90eXBlIDogY3BwX3R5
cGUKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjYXRlZ29y
eSA6IHN0ciwgdmFsdWVfdHlwZSA6IGNwcF90eXBlKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0
X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNhdGVnb3J5ID0gY2F0ZWdvcnkKKyAg
ICAgICAgc2VsZi52YWx1ZV90eXBlID0gdmFsdWVfdHlwZQorCisgICAgZGVmIGlzX2NvbnN0X3Bv
aW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgc2Vs
Zi5pc19jb25zdCgpCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19j
b25zdF9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcm
JyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBub3Qgc2VsZi5pc19jb25zdCgpCisg
ICAgZGVmIGlzX3J2YWx1ZV9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNh
dGVnb3J5ID09ICcmJicKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLnZhbHVlX3R5cGUKKworZGVmIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdCh0eXBl
X25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2luZGlyZWN0XToKKyAgICBtID0gcmUu
bWF0Y2gociJjb25zdCAoLispJiYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAg
ICBtID0gcmUubWF0Y2gociIoLispJiYkIiwgdHlwZV9uYW1lKSAKKyAgICBpZiBtOgorICAgICAg
ICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnJiYnLCBnZXRfY3BwX3R5cGUo
bVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYkIiwgdHlwZV9uYW1lKQorICAg
IGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiQiLCB0eXBlX25hbWUpCisg
ICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYn
LCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKVwqJCIs
IHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKVwq
JCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJl
Y3QodHlwZV9uYW1lLCAnKicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICByZXR1cm4gTm9uZQor
CisKK2NsYXNzIGNwcF9leHByKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBleHBy
OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgZXhwcjogc3Ry
KToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLmV4cHIgPSBleHByCisK
KyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwcgorCisKK0Nw
cEV4cHJDb252ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJd
CisKKworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNhc3Rf
dGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVd
LCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcihl
eHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1
cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9PihyZWludGVy
cHJldF9jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAg
cmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcgorCitkZWYgY3BwX3JlaW50
ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5
cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVm
IGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNw
cF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYicmVp
bnRlcnByZXRfY2FzdDx7dHlwZS50eXBlX25hbWV9PihzdGF0aWNfY2FzdDx7c3RyKGNhc3RfdGhy
b3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRf
Y2FzdF90b19wb2ludGVyCisKK2RlZiBjcHBfc3RhdGljX2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5
cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJz
dGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9Pih7c3RyKGV4cHIpfSkiKQorCisKK2RlZiBjcHBf
aW1wbGljaXRfY2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHBy
OgorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBzdHIoZXhwcikpCisKKworZGVmIGNwcF9hcnJh
eV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90
eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0
eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBj
cHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8e2VsZW1lbnRfcG9p
bnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisK
K2RlZiB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZl
cnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4
cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgp
LmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlw
ZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qge2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihl
eHByKX0uZGF0YSksIHtzdHIoZXhwcil9LmJ1ZlNpemUpIikKKworZGVmIGNwcF9tb3ZlX2V4cHIo
ZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcihleHByLnR5
cGUuZ2V0X3J2YWx1ZV90eXBlKCksIGYiV1RGTW92ZSh7c3RyKGV4cHIpfSkiKQorCisKK2NwcF90
eXBlczogRGljdFtzdHIsIGNwcF90eXBlXSA9IHt9CisKK2NwcF90eXBlX2NvbnN0cnVjdG9ycyA6
IExpc3RbQ2FsbGFibGVbW3N0cl0sIE9wdGlvbmFsW2NwcF90eXBlXV1dID0gWworICAgIGNyZWF0
ZV9jcHBfdHlwZV9mdW5jdGlvbiwKKyAgICBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyLAorICAg
IGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdAorXQorCitkZWYgZ2V0X2NwcF90eXBlKHR5cGVfbmFt
ZTogc3RyKToKKyAgICByID0gY3BwX3R5cGVzLmdldCh0eXBlX25hbWUsIE5vbmUpCisgICAgaWYg
cjoKKyAgICAgICAgcmV0dXJuIHIKKyAgICBmb3IgdHlwZV9jb25zdHIgaW4gY3BwX3R5cGVfY29u
c3RydWN0b3JzOgorICAgICAgICByID0gdHlwZV9jb25zdHIodHlwZV9uYW1lKQorICAgICAgICBp
ZiByOgorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBub3QgcjoKKyAgICAgICAgciA9IGNwcF90
eXBlKHR5cGVfbmFtZSkKKyAgICBjcHBfdHlwZXNbdHlwZV9uYW1lXSA9IHIKKyAgICByZXR1cm4g
cgorCisKK2NsYXNzIGNwcF9hcmcob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICB0eXBlOiBj
cHBfdHlwZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBz
dHIpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUK
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9IHt9Ii5mb3JtYXQo
c2VsZi50eXBlLCBzZWxmLm5hbWUpCisKKworY2xhc3MgY3BwX2RlY2wob2JqZWN0KToKKyAgICB0
eXBlOiBjcHBfdHlwZQorICAgIG5hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5
cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAg
ICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gZiJ7c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5hbWV9IgorCisKK2NsYXNzIGNwcF9hcmdf
bGlzdChvYmplY3QpOgorICAgIGFyZ3M6IExpc3RbY3BwX2FyZ10KKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncwor
CisgICAgZGVmIG5hbWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKGEubmFtZSBm
b3IgYSBpbiBzZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhwcnMoc2VsZik6CisgICAgICAgIHJldHVy
biBbY3BwX2V4cHIoYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRl
ZiBkZWNscyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZGVjbChhLnR5cGUsIGEubmFtZSkg
Zm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIHR5cGVzKHNlbGYpOgorICAgICAgICByZXR1
cm4gW2EudHlwZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToK
KyAgICAgICAgcmV0dXJuICIsICIuam9pbihzdHIoYSkgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisK
K2NsYXNzIGNwcF9mdW5jKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2Fy
Z19saXN0CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgaXNfZXh0ZW5zaW9uOiBib29s
CisgICAgb3ZlcmxvYWRfc3VmZml4OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1l
OiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRl
bnNpb246IGJvb2wpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucmV0
dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAg
IHNlbGYuaXNfZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYub3ZlcmxvYWRf
c3VmZml4ID0gIiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7
c2VsZi5yZXR1cm5fdHlwZX0ge3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSkiCisKKyAgICBk
ZWYgZ2V0X2FyZ3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBUdXBsZVtMaXN0W2NwcF9hcmddLCBMaXN0
W2NwcF9hcmddXToKKyAgICAgICAgaW5fYXJncyA9IFtdCisgICAgICAgIG91dF9hcmdzID0gW10K
KyAgICAgICAgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6CisgICAgICAgICAgICAjZm10OiBvZmYK
KyAgICAgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCkgb3IgXAorICAgICAgICAgICAgICAg
IGEudHlwZS5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0K
KyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikg
YW5kICgoKGEudHlwZS5pc19zcGFuKCkgb3IgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpKSBhbmQg
bm90IGEudHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpKSk6CisgICAgICAgICAg
ICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IGluX2FyZ3MgKz0gW2FdCisgICAgICAgICAgICAjZm10OiBvbgorICAgICAgICByZXR1cm4gaW5f
YXJncywgb3V0X2FyZ3MKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZF90eXBlKHNlbGYsIHR5cGU6
IGNwcF90eXBlKToKKyAgICAgICAgaWYgdHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19pbXBs
ZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyIgaW4gYS50eXBlLnR5cGVfbmFtZSBmb3IgYSBpbiBz
ZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICNpZiAi
R0NHTHN5bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1lOgorICAgICAgICAjICAgIHJl
dHVybiBGYWxzZQorICAgICAgICBpZiBhbnkoYS5uYW1lID09ICJidWZTaXplIiBmb3IgYSBpbiBz
ZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55
KGEudHlwZS5pc19wb2ludGVyKCkgYW5kIGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLmlzX3ZvaWQo
KSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgaWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoYS50eXBlKSBmb3IgYSBp
biBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYg
c2VsZi5yZXR1cm5fdHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgaWYgbm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLnJldHVybl90eXBl
KToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK3dl
YmtpdF9pcGNfdHlwZXM6IERpY3RbY3BwX3R5cGUsIGNwcF90eXBlXSA9IHt9CisKK3dlYmtpdF9p
cGNfdHlwZXNfY29udmVydGVyczogRGljdFtUdXBsZVtjcHBfdHlwZSwgY3BwX3R5cGVdLCBDcHBF
eHByQ29udmVydGVyXSA9IHt9CisKKworZGVmIHdlYmtpdF9pcGNfY29udmVydF9leHByKGV4cHI6
IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgIiIiIENvbnZlcnRz
IGBleHByYCBvZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlwZWAgIiIiCisgICAgY29udmVydCA9IHdl
YmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5nZXQoKGV4cHIudHlwZSwgdHlwZSksIE5vbmUpCisg
ICAgaWYgbm90IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4cHIudHlwZSA9PSB0eXBlOgorICAgICAg
ICAgICAgcmV0dXJuIGV4cHIKKyAgICAgICAgY29udmVydCA9IGNwcF9pbXBsaWNpdF9jYXN0Cisg
ICAgcmV0dXJuIGNvbnZlcnQoZXhwciwgdHlwZSkKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bh
bl90cmFuc2Zlcl90eXBlKHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgor
ICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5
cGUoKQorICAgIGFyaXR5ID0gdHlwZS5nZXRfYXJpdHkoKQorICAgIHdlYmtpdF9pcGNfZWxlbWVu
dF90eXBlID0gd2Via2l0X2lwY190eXBlc1tlbGVtZW50X3R5cGVdIGlmIG5vdCBlbGVtZW50X3R5
cGUuaXNfdm9pZCgpIGVsc2UgZ2V0X2NwcF90eXBlKCd1aW50OF90JykKKyAgICBpZiBhcml0eSBp
cyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZl
cmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9LCB7YXJpdHl9PiIpCisgICAgcmV0
dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2Vs
ZW1lbnRfdHlwZSl9PiIpCisKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBl
KHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBl
ID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgaWYgZWxl
bWVudF90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgZWxlbWVudF90eXBlID0gZ2V0X2NwcF90eXBl
KCdHQ0dMY2hhcicpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgaW5s
aW5lX2NhcGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiBlbGVtZW50X3R5cGUudHlwZV9uYW1lIGVs
c2UgNAorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiVmVjdG9yPHtzdHIoZWxlbWVudF90
eXBlKX0sIHtzdHIoaW5saW5lX2NhcGFjaXR5KX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBl
KGYic3RkOjphcnJheTx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKHR5cGUuZ2V0X2FyaXR5KCkp
fT4iKQorCitkZWYgd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24oZXhwciA6IGNw
cF9leHByLCB0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBwb2lu
dGVyX2Nhc3RfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlw
ZSgpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgcmV0dXJuIGNwcF9l
eHByKHR5cGUsIGYibWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nh
c3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXplKCkpIikKKwor
ICAgIGFzc2VydCh0eXBlLmlzX3NwYW4oKSkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJt
YWtlR0NHTFNwYW48e3N0cih0eXBlLmdldF9hcml0eSgpKX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0
cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpKSIpCisKKyMgU2VlIG1l
c3NhZ2VzLnB5IGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlCit3ZWJraXRfaXBjX2J1aWx0aW5fdHlw
ZXMgPSBzZXQoCisgICAgWyJ1aW50OF90IiwgInVpbnQxNl90IiwgInVpbnQzMl90IiwgInVpbnQ2
NF90IiwgImludDhfdCIsICJpbnQxNl90IiwgImludDMyX3QiLCAiaW50NjRfdCIsICJib29sIiwg
ImZsb2F0IiwgImRvdWJsZSIgImJvb2wiXQorKQorCisKK2RlZiB3ZWJraXRfaXBjX2dldF9tZXNz
YWdlX2ZvcndhcmRlcl90eXBlKHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfdHlwZToKKyAgICBpZiB0
eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVy
biB0eXBlCisgICAgcmV0dXJuIHR5cGUuZ2V0X3J2YWx1ZV90eXBlKCkKKworCitkZWYgd2Via2l0
X2lwY19tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIGlmIGV4cHIu
dHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1
cm4gZXhwcgorICAgIHJldHVybiBjcHBfbW92ZV9leHByKGV4cHIpCisKKworZGVmIHdlYmtpdF9p
cGNfbXNnX25hbWUoZnVuYzogY3BwX2Z1bmMpOgorICAgIHJldHVybiBmdW5jLm5hbWVbMF0uY2Fw
aXRhbGl6ZSgpICsgZnVuYy5uYW1lWzE6XSArIGZ1bmMub3ZlcmxvYWRfc3VmZml4CisKKworY2xh
c3Mgd2Via2l0X2lwY19tc2cob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBpbl9hcmdzOiBj
cHBfYXJnX2xpc3QKKyAgICBvdXRfYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSB3ZWJraXRfaXBj
X21zZ19uYW1lKGZ1bmMpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gZnVuYy5nZXRfYXJn
c19jYXRlZ29yaWVzKCkKKyAgICAgICAgaXBjX2luX2FyZ3MgPSBbY3BwX2FyZyh3ZWJraXRfaXBj
X3R5cGVzW2EudHlwZV0sIGEubmFtZSkgZm9yIGEgaW4gaW5fYXJnc10KKyAgICAgICAgaXBjX291
dF9hcmdzID0gW10KKyAgICAgICAgaWYgbm90IGZ1bmMucmV0dXJuX3R5cGUuaXNfdm9pZCgpOgor
ICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbZnVu
Yy5yZXR1cm5fdHlwZV0sICJyZXR1cm5WYWx1ZSIpXQorICAgICAgICBmb3IgYSBpbiBvdXRfYXJn
czoKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVz
W2EudHlwZV0sIGEubmFtZSldCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFu
KCk6CisgICAgICAgICAgICAgICAgaXBjX2luX2FyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBl
KCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpXQorICAgICAgICBzZWxmLmluX2FyZ3MgPSBj
cHBfYXJnX2xpc3QoaXBjX2luX2FyZ3MpCisgICAgICAgIHNlbGYub3V0X2FyZ3MgPSBjcHBfYXJn
X2xpc3QoaXBjX291dF9hcmdzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGlm
IGxlbihzZWxmLm91dF9hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9p
ZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSAtPiAoe3N0cihzZWxmLm91dF9hcmdz
KX0pIFN5bmNocm9ub3VzIgorICAgICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9
KHtzdHIoc2VsZi5pbl9hcmdzKX0pIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2lt
cGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBtc2dfbmFtZTogc3RyCisgICAgcmV0dXJu
X3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBwcmVfY2FsbF9z
dG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxs
X3N0bXRzOiBMaXN0W3N0cl0KKyAgICByZXR1cm5fc3RtdHM6IExpc3Rbc3RyXQorICAgIGluX2V4
cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBfZXhwcl0KKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5h
bWUgPSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYubXNnX25hbWUgPSB3ZWJraXRfaXBjX21z
Z19uYW1lKGNwcF9mdW5jKQorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0
dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxm
LnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAg
ICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9
IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9
IFtdCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdv
cmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJu
X3R5cGUpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmdzKGluX2FyZ3MpCisgICAgICAgIHNl
bGYucHJvY2Vzc19vdXRfYXJncyhvdXRfYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwo
KQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAi
LmpvaW4oW3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkKKyAgICAgICAgb3V0X2V4cHJz
ID0gIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgaXNf
YXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykgPT0g
MAorICAgICAgICBpZiBpc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBb
CisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbmRf
cmVzdWx0ID0gIiIKKyAgICAgICAgICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0bXRzOiAKKyAgICAg
ICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRSZXN1bHQgPSAiCisgICAgICAgICAg
ICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbCisgICAgICAgICAgICAgICAgICAgICJpZiAo
c2VuZFJlc3VsdCkiICsgKCIgeyIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxz
ZSAiIikKKyAgICAgICAgICAgICAgICBdICsgWyIgICAgIiArIHMgZm9yIHMgaW4gc2VsZi5wb3N0
X2NhbGxfc3RtdHNdICsgWworICAgICAgICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxmLnBv
c3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3VsdH1z
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1l
fSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5t
c2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOyIsCisgICAgICAgICAgICBdCisKKworICAgIGRlZiBwcm9jZXNzX2luX2FyZ3Mo
c2VsZiwgaW5fYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBpIGluIGluX2FyZ3M6
CisgICAgICAgICAgICBpZiBpLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAgICAg
ICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
LmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihpLnR5cGUsIGku
bmFtZSksIHdlYmtpdF9pcGNfdHlwZXNbaS50eXBlXSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRf
YXJncyhzZWxmLCBvdXRfYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBvIGluIG91
dF9hcmdzOgorICAgICAgICAgICAgaWYgby50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAg
ICAgICB2YWx1ZV90eXBlID0gby50eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3ZhbHVlX3R5cGVdCisg
ICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY192YWx1ZV90eXBlLCBvLm5hbWUg
KyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0
cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgICAgICBlID0g
Y3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMg
Kz0gW2VdCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAg
ICAgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgICAgICAgICAgZiJpZiAoe28ubmFt
ZX0pIiwKKyAgICAgICAgICAgICAgICAgICAgZiIgICAgKntvLm5hbWV9ID0ge3dlYmtpdF9pcGNf
Y29udmVydF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCisgICAgICAgICAgICAgICAgICAgICNmbXQ6
IG9uCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxpZiBvLnR5cGUuaXNfc3Bhbigp
OgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50
eXBlXQorICAgICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwg
Y3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRf
aXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2Fs
bF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAgICAg
ICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpXQorICAgICAg
ICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJzaXplX3QiKSwgZiJ7
by5uYW1lfS5idWZTaXplIildCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMg
Kz0gWworICAgICAgICAgICAgICAgICAgICBmIm1lbWNweSh7by5uYW1lfS5kYXRhLCB7di5uYW1l
fS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXplb2Yoe3N0cih3ZWJraXRfaXBjX3R5cGUu
Z2V0X2NvbnRhaW5lZF90eXBlKCkpfSkpOyIKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcihvLnR5
cGUsIG8ubmFtZSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJu
X3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQor
ICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBlXQor
ICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKGlwY19yZXR1cm5fdHlwZSwgInJl
dHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3Zh
bHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAg
ICAgc2VsZi5vdXRfZXhwcnMgPSBbcmV0dXJuX3ZhbHVlX2V4cHJdICsgc2VsZi5vdXRfZXhwcnMK
KyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbZiJyZXR1cm4ge3N0cih3ZWJraXRfaXBjX2Nv
bnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgcmV0dXJuX3R5cGUpKX07Il0KKworICAgIGRl
ZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGlu
IHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAge2J9IiBm
b3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0
X2NhbGxfc3RtdHMgKyBzZWxmLnJldHVybl9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiJcbntz
dHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxm
Lm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH0KK3t7e2JvZHl9Cit9fSIiIgorCisKK2Ns
YXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKG9iamVjdCk6CisgICAgbmFtZTog
c3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0Cisg
ICAgYm9keTogTGlzdFtzdHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNw
cF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorCisgICAgICAgIHNl
bGYucmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3Mg
PSBjcHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYuYm9keSA9IFsibm90SW1wbGVtZW50ZWQoKTsi
XQorICAgICAgICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlwZS50eXBlX25hbWUgIT0gInZvaWQiOgor
ICAgICAgICAgICAgc2VsZi5ib2R5ICs9IFsicmV0dXJuIHsgfTsiXQorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5u
YW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICJcbntcbiAgICAiICsgIlxuICAgICIuam9pbihz
ZWxmLmJvZHkpICsgIlxufSIKKyAgICAgICAgcmV0dXJuIGYiXG57c3RyKHNlbGYucmV0dXJuX3R5
cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYu
YXJncyl9KXtub2xpbnR9e2JvZHl9IgorCisKK2NsYXNzIGNvbnRleHRfcHJveHlfY3BwX3dlYmtp
dF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0
X2lwY19jcHBfcHJveHlfaW1wbF0KKyAgICB1bmltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3By
b3h5X3BsYWNlaG9sZGVyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJs
ZVtjcHBfZnVuY10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAg
IHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChmKSBmb3IgZiBpbiBmdW5j
c10KKyAgICAgICAgc2VsZi51bmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9s
ZGVyKGYpIGZvciBmIGluIHVuaW1wbGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBs
cyArIHNlbGYudW5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3Jp
dGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuLAorICAgICAg
ICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1
bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2Jq
ZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBpc19leHRl
bnNpb246IGJvb2wKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10
czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHBy
czogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgcmV0
dXJuX3ZhbHVlX2V4cHI6IE9wdGlvbmFsW2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5h
bWUKKyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSBjcHBfZnVuYy5vdmVybG9hZF9zdWZm
aXgKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtdKQorICAgICAgICBzZWxmLmlz
X2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5w
b3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAg
c2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gTm9u
ZQorCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5
cGUpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdv
cmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3MuYXJncywgc2V0
KGluX2FyZ3MpLCBzZXQob3V0X2FyZ3MpKQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisK
KyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9u
cygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgorCisgICAgICAgIGluX2V4cHJzID0g
IiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQorICAgICAgICBpc19hc3lu
YyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAorCisgICAgICAgIGNhbGxfZXhwciA9IGYibV9j
b250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBpZiBub3Qgc2Vs
Zi5yZXR1cm5fdmFsdWVfZXhwcjoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7
Y2FsbF9leHByfTsiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRz
ICs9IFtmIntzdHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxfZXhwcn07Il0KKyAg
ICAgICAgaWYgbm90IGlzX2FzeW5jOgorICAgICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2lu
KHN0cihlKSBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYucG9zdF9j
YWxsX3N0bXRzICs9IFtmImNvbXBsZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9KTsiXQorCisgICAg
ZGVmIHByb2Nlc3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddLCBpbl9hcmdzOiBTZXRb
Y3BwX2FyZ10sIG91dF9hcmdzOiBTZXRbY3BwX2FyZ10pOgorICAgICAgICBmb3IgYSBpbiBhcmdz
OgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGlmIGEgaW4gaW5fYXJnczoKKyAgICAgICAg
ICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJnKGEpCisgICAgICAgIGlmIHNlbGYub3V0X2V4
cHJzOgorICAgICAgICAgICAgb3V0X2FyZ19kZWNscyA9ICIsICIuam9pbihmIntzdHIoZS50eXBl
KX0iIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3Mg
Kz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh7b3V0X2Fy
Z19kZWNsc30pPiYmIiksICJjb21wbGV0aW9uSGFuZGxlciIpXQorCisgICAgZGVmIHByb2Nlc3Nf
aW5fYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3Bw
X2FyZyh3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdlYmtpdF9pcGNfdHlw
ZXNbYS50eXBlXSksIGEubmFtZSldCisgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9p
cGNfY29udmVydF9leHByKGNwcF9leHByKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1l
KSwgYS50eXBlKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmcoc2VsZiwgYTogY3BwX2FyZyk6
CisgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICB2YWx1ZV9hcmcg
PSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVl
X2FyZy5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3Bw
X2V4cHIoYS50eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9IildCisgICAgICAgICAgICBlID0gY3Bw
X2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgd2Via2l0
X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1tlLnR5cGVdCisgICAgICAgICAgICBz
ZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY192
YWx1ZV90eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAg
ICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisg
ICAgICAgICAgICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBm
InthLm5hbWV9U2l6ZSIpCisgICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbc2l6ZV9hcmdd
CisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3Rv
cmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRz
ICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0oc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsiXQorICAgICAgICAgICAgc2VsZi5pbl9l
eHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIGYie3N0b3JlX2FyZy5uYW1lfSIpXQor
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisg
ICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3Bw
X2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0K
KyAgICAgICAgZWxpZiBhLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlzaW5z
dGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgc3RvcmVfYXJn
ID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1l
KQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50
eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmlu
X2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpXQorICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAg
ICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4
cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBhLnR5cGUuaXNfcmVmZXJlbmNlKCkKKyAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAg
ICAgICAgICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5u
YW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c2VsZi5ucyh2YWx1
ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAg
ZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAg
IHNlbGYuaW5fZXhwcnMgKz0gW2VdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Vi
a2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY190
eXBlKSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6
IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0
dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIocmV0dXJuX3R5
cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3Jl
dHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJd
CisgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgaXBjX3JldHVybl90eXBlKSldCisg
ICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSByZXR1cm5fdmFsdWVfZXhwcgorCisgICAg
ZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAgICAgIHti
fSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYu
cG9zdF9jYWxsX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIiAgICB2b2lkIHtzZWxmLm5hbWV9
e3NlbGYub3ZlcmxvYWRfc3VmZml4fSh7c3RyKHNlbGYuYXJncyl9KQorICAgIHt7e2JvZHl9Cisg
ICAgfX0iIiIKKworICAgIGRlZiBucyhzZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAgICMg
VE9ETzogbmFtZXNwYWNlIGluZm8gaXMgbm90IHN0b3JlZCBpbiBuYW1lcy4KKyAgICAgICAgaWYg
dHlwZS50eXBlX25hbWUgPT0gIkFjdGl2ZUluZm8iOgorICAgICAgICAgICAgcmV0dXJuICJXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6IiArIHN0cih0eXBlKQorICAgICAgICByZXR1cm4gc3Ry
KHR5cGUpCisKK2RlZiB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzIDog
SXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICBjb3VudHMgPSBjb2xsZWN0aW9ucy5Db3VudGVyKGYu
bmFtZSBmb3IgZiBpbiBmdW5jcykKKyAgICBzdWZmaXhlcyA6IENvdW50ZXJbc3RyXSA9IGNvbGxl
Y3Rpb25zLkNvdW50ZXIoKQorICAgIGZvciBmIGluIGZ1bmNzOgorICAgICAgICBpZiBjb3VudHNb
Zi5uYW1lXSA+IDE6CisgICAgICAgICAgICBmLm92ZXJsb2FkX3N1ZmZpeCA9IHN0cihzdWZmaXhl
c1tmLm5hbWVdKQorICAgICAgICAgICAgc3VmZml4ZXMudXBkYXRlKFtmLm5hbWVdKQorCisKK2Ns
YXNzIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGlt
cGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX2ltcGxdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0
X2lwY19jcHBfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRlZiBnZXRfZnVuY3Rpb25z
KHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBzZWxmLmlt
cGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAg
ICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0
aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisK
KworY2xhc3MgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgV2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZ2Vu
ZXJhdG9yLiIKKyAgICBtc2dzOiBMaXN0W3dlYmtpdF9pcGNfbXNnXQorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLm1zZ3Mg
PSBbd2Via2l0X2lwY19tc2coZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X21lc3Nh
Z2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIuam9pbihzdHIobSkgZm9yIG0gaW4gc2VsZi5t
c2dzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKGNvbnRl
eHRfbWVzc2FnZXNfZm4sIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0
X21lc3NhZ2VzKCkpKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYzogc3RyLCBhcmdf
aW5kZXg6IGludCk6CisgICAgciA9IGFyZ19zcGVjLnJzcGxpdCgiICIsIDEpCisgICAgbmFtZSA9
ICIiCisgICAgdHlwZSA9IE5vbmUKKyAgICBpZiBsZW4ocikgPiAxIGFuZCByWzBdICE9ICJjb25z
dCI6CisgICAgICAgIG5hbWUgPSByWzFdLnN0cmlwKCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBf
dHlwZShyWzBdKQorICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSAiYXJne30iLmZvcm1hdChhcmdf
aW5kZXgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoYXJnX3NwZWMpCisgICAgcmV0dXJu
IGNwcF9hcmcodHlwZSwgbmFtZSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3Nw
ZWNzOiBJdGVyYWJsZVtzdHJdKToKKyAgICByZXR1cm4gY3BwX2FyZ19saXN0KFtjcmVhdGVfY3Bw
X2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nf
c3BlY3MpXSkKKworCitkZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6
IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJdLCBpc19leHRlbnNpb246IGJvb2wpOgorICAgIHJl
dHVybiBjcHBfZnVuYyhuYW1lPW5hbWUsIHJldHVybl90eXBlPWdldF9jcHBfdHlwZShyZXR1cm5f
c3BlYyksIGFyZ3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzKSwgaXNfZXh0ZW5zaW9u
PWlzX2V4dGVuc2lvbikKKworCitkZWYgcmVhZF9saW5lc191bnRpbChsaW5lcyA6IEl0ZXJhYmxl
W3N0cl0sIG1hdGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jbc3RyLCBOb25lLCBOb25lXToKKyAgICBm
b3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgaWYgcmUubWF0Y2gobWF0Y2gsIGxpbmUuc3RyaXAo
KSk6CisgICAgICAgICAgICBicmVhaworICAgICAgICB5aWVsZCBsaW5lCisKK2RlZiBtYWluKCk6
CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0
aW9uc10iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGhlbHA9IlByaW50IHNvbWUgZGVidWcgaW5mbyBmcm9tIHRoZSBnZW5lcmF0b3Ig
c2NyaXB0IikKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgIyBDb25z
dHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRv
IEdQVSBwcm9jZXNzLgorCisgICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMg
cmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICMg
d2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBh
biBleHRlbnNpb24gZnVuY3Rpb24uCisgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3Ry
XSA9IHNldCgpCisgICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6CisgICAg
ICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBtID0gcmUubWF0Y2go
ciIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQorICAgICAgICAg
ICAgaWYgbToKKyAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAg
ICAgICAgICAgICAgICBuYW1lPW1bMl0sCisgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVj
PW1bMV0sCisgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3Bl
Y3MobVszXSksCisgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUo
W3N0cihmdW5jKV0pCisgICAgZnVuY3MgPSBbXQorICAgIHVuaW1wbGVtZW50ZWQgPSBbXQorICAg
IGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFz
IGY6CisgICAgICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgICAg
IGZvciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBGdW5jdGlvbnMgd2l0aCBhIGdl
bmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1
cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBm
b3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBi
eSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBtID0gcmUu
bWF0Y2gociJccyooXFMrKVxzKyhcdyspXCgoLiopXCkgZmluYWw7IiwgbGluZSkKKyAgICAgICAg
ICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWUgPSBtWzJdCisgICAg
ICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9z
cGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9h
cmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPUZh
bHNlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGZ1bmMuaXNf
ZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCisgICAgICAgICAg
ICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmNzLmFwcGVuZChmdW5jKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICAgICAgdW5pbXBsZW1lbnRlZC5hcHBlbmQoZnVuYykKKworCisgICAgd2Vi
a2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcykKKyAgICAjIEluaXRpYWxpemUg
V2ViS2l0IElQQyBnZW5lcmF0aW9uLiBDb25zdHJ1Y3QgdHlwZSBtYXBwaW5ncyBmb3IgdGhlIHVz
ZWQgQysrIHR5cGVzIC0+IElQQyB0eXBlcy4KKyAgICAjIFRPRE86IG5hbWVzcGFjaW5nIGlzc3Vl
cy4KKyAgICBhaV90eXBlID0gZ2V0X2NwcF90eXBlKCJBY3RpdmVJbmZvJiIpCisgICAgYWlfdHJh
bnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZSgiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8iKQorICAgIHdlYmtpdF9pcGNfdHlwZXNbYWlfdHlwZV0gPSBhaV90cmFuc2Zlcl90
eXBlCisKKyAgICB3aXRoIG9wZW4odHlwZXNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGxpbmVz
ID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGls
KGxpbmVzLCAiLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5
cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgor
ICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxp
bmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4i
KToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc3RkOjppc19z
YW1lX3Y8KFx3KyksIChcdyspPlwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2NwcF90eXBlKG1bMV0pXSA9IGdldF9jcHBf
dHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUu
bWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdysp
XCkgJiYgc2l6ZW9mXCgoXHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAg
ICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1b
MV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAg
ICAgICAgICAgICBjcHBfY2FzdF90aHJvdWdoX3R5cGUgPSBnZXRfY3BwX3R5cGUobVs0XSkKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAg
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5
cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0
X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRl
cnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRl
cl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChc
dyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06Cisg
ICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAg
ICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0YXRpY19j
YXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlw
ZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgIyBGb3IgYWxsIHR5cGVzIGluIHRoZSBpbnB1dCBBUEksIGZvcm0gY29ycmVzcG9uZGlu
ZyBJUEMgdHlwZXMgYW5kIGNvbnZlcnNpb25zLgorICAgICMgVE9ETzogdGhpcyBpcyBub3QgZHJp
dmVuIGJ5IHRoZSB0eXBpbmcuCisgICAgYWxsX3R5cGVzID0gc2V0KCkKKyAgICBmb3IgZnVuYyBp
biBmdW5jczoKKyAgICAgICBhbGxfdHlwZXMudXBkYXRlKGZ1bmMuYXJncy50eXBlcygpICsgW2Z1
bmMucmV0dXJuX3R5cGVdKQorICAgICMgU29ydCBieSBsZW4gc28gdGhhdCB0ZW1wbGF0ZSBhcmdz
IGNvbWUgYmVmb3JlIHRlbXBsYXRlcy4KKyAgICBmb3IgY3BwX3R5cGUgaW4gc29ydGVkKGFsbF90
eXBlcywga2V5PWxhbWJkYSB4OiBsZW4oeC50eXBlX25hbWUpKToKKyAgICAgICAgaWYgY3BwX3R5
cGUgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAKKyAg
ICAgICAgaWYgY3BwX3R5cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3BwX3R5cGUuaXNfc3Bhbigp
OgorICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNm
ZXJfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVd
ID0gdHJhbnNmZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICBpZiBjcHBfdHlw
ZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpOgorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IHdlYmtp
dF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1sodHJhbnNmZXJfdHlwZSwg
Y3BwX3R5cGUpXSA9IHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9z
cGFuX3N0b3JlX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c19jb252ZXJ0ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVp
bnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgIGVsaWYgY3BwX3R5cGUuaXNfcmVmZXJl
bmNlKCkgb3IgY3BwX3R5cGUuaXNfY29uc3RfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29u
dGFpbmVyKCk6CisgICAgICAgICAgICB2YWx1ZV90eXBlID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5
cGUoKSBpZiBub3QgY3BwX3R5cGUuaXNfY29udGFpbmVyKCkgZWxzZSBjcHBfdHlwZQorICAgICAg
ICAgICAgaWYgdmFsdWVfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgICAgICBjb250
YWluZWRfdHlwZSA9IHZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkKKyAgICAgICAgICAg
ICAgICB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID0gd2Via2l0X2lwY190eXBlc1tjb250YWlu
ZWRfdHlwZV0KKyAgICAgICAgICAgICAgICBpZiB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID09
IGNvbnRhaW5lZF90eXBlOgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2Nw
cF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICB0cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKGYie3ZhbHVlX3R5cGUuZ2V0X2Nv
bnRhaW5lcl9uYW1lKCl9PHtzdHIod2Via2l0X2lwY19jb250YWluZWRfdHlwZSl9PiIpCisgICAg
ICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlw
ZQorICAgICAgICAgICAgICAgICAgICAjIFRPRE86IEhlcmUgbWlnaHQgYmUgY2FzZSB3aGVyZSBW
ZWN0b3I8R0NHTGludD4gd2FzIHVzZWQgaW4gdGhlIGludGVyZmFjZSBhbmQgVmVjdG9yPGludDMy
X3Q+IGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgSVBDIGRlZmluaXRpb24u
IFRoZXJlIGlzIG5vIHNlbnNpYmxlIHdheSB0byBkbyB0aGlzIGF0IHRoZSBtb21lbnQuIFdlIGRv
IG5vdCBjb252ZXJ0LCByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgIyBleHBlY3QgdGhhdCBh
bGwgdGhlIGludm9jYXRpb25zIGFyZSB0YWtlbiBjYXJlIG9mIHRoZSBmYWN0IHRoYXQgR0NHTGlu
dCBpcyB0aGUgc2FtZSB0eXBlIGFzIGludDMyX3QuCisgICAgICAgICAgICAgICAgICAgICMgVGhp
cyB3aWxsIG5vdCBob2xkIGZvciBhbGwgdHlwZXMgc3VjaCBhcyBHQ0dMYm9vbGVhbi4KKyAgICAg
ICAgICAgICAgICAgICAgI3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRy
YW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlw
ZV0gPSB2YWx1ZV90eXBlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGVzW2NwcF90eXBlXSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAKKyAgICAjIFRo
ZSBpbnB1dCB0byB0aGUgZ2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUu
CisgICAgIyBSdW4gdGhlIHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBnZW5lcmF0b3JzID0gWwor
ICAgICAgICBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcywgdW5p
bXBsZW1lbnRlZCksCisgICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1
bmNzKSwKKyAgICAgICAgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAor
ICAgIF0KKyAgICBmb3IgZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBnLmdlbmVyYXRlKCkKKwor
ICAgIGlmIG9wdGlvbnMudmVyYm9zZToKKyAgICAgICAgcHJpbnQoIkltcGxlbWVudGVkOiIpCisg
ICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAge3N0cihpKX0gZmluYWxcbiIgZm9yIGkgaW4gZnVu
Y3MpKQorICAgICAgICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgICAgICBwcmludCgiIi5q
b2luKGYiICAgIHtzdHIodSl9IGZpbmFsXG4iIGZvciB1IGluIHVuaW1wbGVtZW50ZWQpKQorICAg
ICAgICBwcmludChmIkltcGxlbWVudGVkOiB7bGVuKGZ1bmNzKX0sIHVuaW1wbGVtZW50ZWQ6IHts
ZW4odW5pbXBsZW1lbnRlZCl9LCB0b3RhbDoge2xlbihmdW5jcykrbGVuKHVuaW1wbGVtZW50ZWQp
fSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZSBtYXAgdG8gV2ViS2l0IElQQyB0eXBlIG1hcDoi
KQorICAgICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlm
IHQgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3Ry
KHQpfSAtPiB7c3RyKHdlYmtpdF9pcGNfdHlwZXNbdF0pfSIpCisgICAgICAgIHByaW50KCJDKysg
dHlwZXMgd2l0aG91dCBXZWJLaXQgSVBDIHR5cGU6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3Bw
X3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0IG5vdCBpbiB3ZWJraXRfaXBjX3R5cGVz
OgorICAgICAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IikKKyAgICAgICAgcHJpbnQo
IldlYktpdCBJUEMgdHlwZSBjb252ZXJzaW9ucyIpCisgICAgICAgIGZvciAoYSwgYiksIGNvbnZl
cnRlciBpbiB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuaXRlbXMoKToKKyAgICAgICAgICAg
IHByaW50KGYiICAgIHtzdHIoYSl9IC0+IHtzdHIoYil9IDoge2NvbnZlcnRlci5fX25hbWVfX30i
KQorICAgICAgICBwcmludCgiRG9uZS4iKQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18g
PT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDhiOTM4ZmExMWY4
MTVkMzdlZTgwMzc3ZmQ2NGIwYmM3M2RjODE0MC4uNzYxNmE3YjcwMTFjZGQxZmY3Yjk4NmY2ZDIz
MmIxMzE0OTZiY2U5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTEyLTAxICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMg
YSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3Ig
R1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2Vi
S2l0IElQQy4KKworICAgICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGUgbWlzc2lu
ZyBmdW5jdGlvbmFsaXR5LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxlIHRoZSB0ZXN0cyB0
aGF0IGFjdHVhbGx5IHBhc3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBiZWZvcmUgdGhlCisgICAg
ICAgIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAyMC0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRhYmxlL3dyaXRhYmxlIHRvIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
YTIyNTI4ZmExYjI2Nzg3MzE4NTMwNTgwMDMzOTBmZDc1MzdkYzBjNi4uZGE1NjM4NjI4OWQ2Yzk0
ZDRmZmFlY2E4OWFkMmJhOTkzYjEwMTZjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0zMTcsNiArMzE3LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2Vi
Z2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1s
CiBodHRwL3Rlc3RzL3dlYmdsIFsgU2tpcCBdCiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmds
Lmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90
ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2Iv
MjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBb
IFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0
LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFRpbWVvdXQgXQord2Via2l0
Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQu
aHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9n
bC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3Qv
Y2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMt
ZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmdwdSBbIFNraXAgXQogCiBhY2Nlc3NpYmls
aXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlwZXMuaHRtbCBbIFNraXAgXQo=
</data>
<flag name="commit-queue"
          id="432234"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415125</attachid>
            <date>2020-12-01 04:05:15 -0800</date>
            <delta_ts>2020-12-01 04:22:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201140512.patch</filename>
            <type>text/plain</type>
            <size>564713</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4
OGJkNDA3N2EwYzU0YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQxYTM1
Y2MwMDhhZWE2OWZmZjJjZDkxZDAyMzJlZmEwNzFlN2VkNTQuLjk4MTE1ZTE1Yjc2MzQ5NjFhYzM5
MGRiMjNkNTMwYjczZDI1ZDUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJj
Nzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQw
MGIwZmNlMjQxZWZmYjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiAr
MzU3LDE0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyMmVkNmNjMjRlNmU2Njg4NjBmNzRjYzllZGQ4NGIzZDlkZGMzMC4uOTUzMWI0
OTI3MWQwZDQwMWFkODIyNzkxZjg0ZWZkODY1N2Q2NmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2
RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07
CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsK
IAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIy
Mjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2
RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5
NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Niw2
ICsyMjQ2LDggQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkz
NkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjMsOSAr
MTAyMjUsMTQgQEAKIAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEw
MzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4
MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcy
NTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5pZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjEzLDYgKzI2NjIwLDggQEAKIAkJ
CQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJ
CQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQx
ODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJ
N0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2Ft
cGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9T
YW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovLApAQCAtMjY3NzksNiArMjY3ODgsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5
RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBE
NkExMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlC
Mjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJ
CQkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBF
MDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1
OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RB
NTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2
NzkwLDYgKzI2ODAxLDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZC
RDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYx
NkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2Vy
LmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwICovLApAQCAtMzIwODksNiArMzIxMDEsNyBAQAogCQkJCTdCMTAzMzlFMjU0
OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUz
QyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0MDI1LDYgKzM0MDM4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBF
Q0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAw
MTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIy
RkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVv
U2FtcGxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVj
NzE3NDU5N2YwNmUwZTUwOWU3OGZhYS4uMmY4Y2JmMDg3MDUwYzVmMDg2ODBmMmVkOTdkMWYzMDg4
NjYxYTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3NywyMSArNjc3LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZl
clN1YkRhdGEoKSBjYWxscyB0byB1c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0
ciA9IG1fY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNl
dC51bnNhZmVHZXQoKSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0
aFB0ci51bnNhZmVHZXQoKSAqIGNoZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBo
aWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNw
eShzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5i
eXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICog
ZWxlbWVudFNpemUpOwotCi0gICAgaWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkp
Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgImdldEJ1ZmZlclN1YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZm
ZXIiKTsKLSNlbmRpZgotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCk7CisgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9m
ZnNldCwgbWFrZUdDR0xTcGFuKHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVz
cygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBj
b3B5TGVuZ3RoICogZWxlbWVudFNpemUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIpCkBAIC0xNzAyLDcgKzE2OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxpc3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xOTY3
LDkgKzE5NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0
LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8
V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAg
LTIwMTQsNyArMjAwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBs
ZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQogCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHVu
aXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJpbmRTYW1wbGVyIiwgImludmFs
aWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNTksMTcgKzIwNDgsMTEg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAgICAgICAgaW50IHZh
bHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0
IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2Ft
cGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLm9iamVjdCgp
LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxp
ZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMTgsNyArMjEwMSw3IEBA
IEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdMU3lu
YyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNsaWVudFdhaXRTeW5jIiwgInRpbWVv
dXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIpOwogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19GTFVTSF9DT01NQU5E
U19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZhbGlkIGZsYWdzIik7CiAgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CkBAIC0yMTc5LDkg
KzIxNjIsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVs
ZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIs
IGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQVNTRVJUKGZl
ZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAKKwogICAg
IGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRi
YWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjQ4LDcgKzIyMzEsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tQ
cmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiZWdpblRyYW5zZm9ybUZlZWRiYWNr
IiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1pdGl2ZSBtb2RlIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIyODgsNyArMjI3MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRUcmFuc2Zvcm1GZWVkYmFjayIs
ICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwogCiAg
ICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVzZWQoZmFsc2UpOwpAQCAtMjI5OSw3
ICsyMjgyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28KIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJ0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpT
RVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWluZ3Muc2l6ZSgpID4gbV9tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAtMjQ4NSwyNCArMjQ2OCwyNCBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPEdDR0xpbnQ+IHJl
c3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3aXRjaCAocG5hbWUp
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
VFlQRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
eCk7IH0pOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRToKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TklGT1JNX0JMT0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
T0ZGU0VUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQVJSQVlfU1RSSURF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklYX1NUUklERToKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlm
b3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dCk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOiB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgpOyB9KTsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDggKzM1NTUsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoQ2xlYXJDYWxs
ZXJPdGhlcik7CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+
cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmUwM2E4OWZjNjk1M2QyMDAwODJmMjQ5NTQ5
NzYzYmUwNWE5NjE5NS4uYTQ0OTk0ZTBlZDcwMjBkMzQzMWE4ZTBjMjBiZDc1MGU4YzA3NDEwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTczMiw4ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxl
bWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENv
bnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9y
RXZlbnQsCkBAIC00Mzk1LDEwICs0Mzk0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAg
ICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0g
ICAgR0NHTHNpemVpIGxlbmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAg
IEdDR0xzaXplaSByb3dzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFk
blBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7
CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQog
ICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQy
ODI4ZjJkNTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIFdlYkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7
Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFw
aGljc0NvbnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5j
U3RhdHVzKTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldFN5bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBp
ZiAobV9zeW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAg
ICBzY2hlZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjli
ODZiYzMxODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cApAQCAtNTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3Nl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVO
QUJMRShXRUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KGF0dHJpYnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJ
RCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5
SUQoKTsKQEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1f
cGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZh
bCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQor
ICAgIC8vIFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQg
d29yaywgcmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlz
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3
NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEz
Y2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRp
b25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCAzYTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0
OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJ
RCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxw
dHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVy
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRl
eCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2Mz
MzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdp
bmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFs
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAv
LyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAg
ICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qg
PSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUy
ZmIzLi43YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAt
MzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9j
ZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0lu
V2ViUHJvY2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1By
b2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZi
ZDFkNDNjMDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFm
NjRhYTBkZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBA
IC05Niw2ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1
bmRsZUlzV2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3Rh
dGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07Cisg
ICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQ
cm9jZXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9
IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4
NjczNDQ3NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wu
aApAQCAtMjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3No
YWRlcl9jb21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NU
QVRVU19LSFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9l
eHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3Ig
ZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8g
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6
CiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3Vw
TWFya2VyRVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
KSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVy
cwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVt
b3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0g
MDsKQEAgLTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzQU1EKCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11
c3QgYmUgYXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNo
IGNvbmZpZ3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBk
ZjRhMTE5YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIx
YWVhN2E1YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQ
SElDU19DT05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAi
Rm9ybWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5o
IgpAQCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6
OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBy
ZXN1bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ct
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0
ZXMsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4
dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0
dHJzKGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1
MmRjNmVmMy4uYmE3MmIzMWFkNjU4NWI0YTliYjVkNmFkZWZjMWJmMTNkZjVmM2JhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0
IGZvciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGlj
OgogICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGlj
OgogICAgICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFw
aGljc0NvbnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRp
b24gaW4gY29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZm
ZWN0IHRoZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGlj
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2Ny
ZWVuLCBHcmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZp
cnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGll
bnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQg
cmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7
IH0KIAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCB1bmRlcnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZv
aWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05
ODAsNyArOTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXpl
aSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykg
PSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0
dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlw
dHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBt
b2RlKSA9IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0x
MTI0LDggKzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5
IHBvaW50cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1
YWwgR0NHTHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAg
ICB2aXJ0dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xp
bnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdD
R0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBm
aWx0ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9
IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9
IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
ID0gMDsKQEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
ID0gMDsKICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNh
bXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJm
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMo
R0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFs
IEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdD
R0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1l
b3V0KSA9IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRT
eW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdD
R0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVy
IC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NH
THVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dM
dWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgdW5pZm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykgPSAwOwotCisgICAgCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdD
R0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBwbmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9v
bGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0xMzk0LDcgKzEzOTQsNiBAQCBpbmxpbmUgR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdQogICAgIHJldHVybiB2YWx1ZVswXTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCA4NWMyOWE0YjZlNTYxMTBkYzdiZDc0N2FlMzM5ODdj
MzQwMzc1ZGYxLi4zYjA2NGMzZTc2OGVjYzRiZjAyYjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+
CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NCwxMyArNDYsMTcg
QEAgdHlwZWRlZiB1bnNpZ25lZCBHQ0dMdWludDsKIHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0Owog
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQ0dMaGFsZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dM
Y2xhbXBmOwordHlwZWRlZiBjaGFyIEdDR0xjaGFyOwordHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMq
IEdDR0xzeW5jOwordHlwZWRlZiB2b2lkIEdDR0x2b2lkOworCisvLyBUaGVzZSBHQ0dMIHR5cGVz
IGRvIG5vdCBzdHJpY3RseSBtYXRjaCB0aGUgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wg
RVMgMi4wCisvLyBoZWFkZXIgZmlsZSBmb3IgYWxsIHBsYXRmb3Jtcy4KIHR5cGVkZWYgaW50cHRy
X3QgR0NHTGludHB0cjsKIHR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRyOwotdHlwZWRlZiBj
aGFyIEdDR0xjaGFyOwordHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIHR5cGVkZWYgbG9u
ZyBsb25nIEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7
Ci10eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Ci10eXBlZGVmIHZvaWQgR0NHTHZv
aWQ7CiAKIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIApAQCAtNTgsMTMgKzY0
LDE3IEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5zaWdu
ZWQgR0x1aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPgoraW5saW5lIGNvbnN0ZXhwciBz
aXplX3QgZ2NHTFNwYW5EeW5hbWljRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGdjR0xTcGFu
RHluYW1pY0V4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQq
IGFycmF5KQorICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3Qgc2l6ZSA9IEV4
dGVudCkKICAgICAgICAgOiBkYXRhKGFycmF5KQotICAgIHsgfQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQogICAgIEdDR0xTcGFuKFQg
KCZhcnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQpAQCAtNzIs
NiArODIsMTIgQEAgc3RydWN0IEdDR0xTcGFuIHsKICAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3Bh
bjxVLCBFeHRlbnQ+JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxl
X3Y8VSgqKVtdLCBUKCopW10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQogICAgICAgICA6
IGRhdGEob3RoZXIuZGF0YSkKICAgICB7IH0KKyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIEV4
dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQorICAg
IEdDR0xTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0K
ICAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJl
dHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC03OSw3ICs5NSw3IEBAIHN0cnVjdCBHQ0dM
U3BhbiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxULCBn
Y0dMU3BhbkR5bmFtaWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1
ZlNpemVfKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXpl
XykKQEAgLTEyMSw2ICsxMzcsMTEgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CiAgICAg
ICAgIDogZGF0YShvdGhlci5kYXRhKQogICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAq
IHNpemVvZihVKSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+
JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXpl
KGFycmF5LnNpemUoKSAqIHNpemVvZihVKSkKKyAgICB7IH0KICAgICBHQ0dMdm9pZCogZGF0YTsK
ICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CkBAIC0xNTIsOCArMTczLDExIEBAIHN0cnVj
dCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+CiBHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1HQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+OwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+Jikg
LT4gR0NHTFNwYW48VCwgTj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdD
R0xTcGFuPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdDR0xT
cGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzBmMmYzMDY4ZmYwMjkxYWY1YmU2MGE1YzVmNmUxZWVi
N2E0YWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgcGxhdGZvcm1J
bml0aWFsaXplKCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CisKK1BsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVRleHR1
cmUoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitFeHRlbnNpb25zR0wmIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENv
bnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAor
eworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQorewor
ICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlm
IChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7
CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXll
ckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7Cisg
ICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFy
IHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0
cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAgIGZvciAoYXV0byogY2xp
ZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlkQ29tcG9z
aXRlKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRv
Q2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7CisgICAgaWYgKCFjb250ZXh0QXR0cmlidXRl
cygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
PSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZv
ciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3Vs
ZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVk
KCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkpIHsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKKyAgICAg
ICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7CisgICAgfQorfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0
aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFp
bGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5h
ZGQoZXh0ZW5zaW9uKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK1Bs
YXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZThh
MDkxNGQ4ZThlMjllMmQyODMxMjUwNGM0ZWIzMjBiMTE5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JK
Q19DTEFTUyBXZWJHTExheWVyOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW47CisjZW5kaWYKKworLy8gQSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRz
IHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJh
d2luZyBidWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9y
dC4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
IDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
IG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAg
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Qg
ZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwor
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7
CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmlu
YWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBlbmFi
bGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7
CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCisgICAgdXNpbmcg
RXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRV
bnRpbEluaXRpYWxpemVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisK
KyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxT
dHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5z
aW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91
bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0g
ZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9
OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAyODNkYTgyYzZhNjAy
ZWE0YjU1N2M2ODZjZmQ4MjNkMDgxYzU1ZTRhLi43YzE1MWZhMjg1MGYzM2MxNDlhOWRjODIyMzgx
YjhmY2JkZTljYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00NiwyOCArNDYsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0
cmluZykKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9p
c0FNRChmYWxzZSkKLSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlv
bihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2Up
Ci0gICAgLCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKICAg
ICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8v
IEZJWE1FOiBpZGVhbGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBB
TkdMRQotICAgIC8vIHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJp
dmVyIHdvcmthcm91bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9S
RU5ERVJFUikpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3Zl
bmRvci5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRv
ckNvbXBvbmVudHMuY29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29t
cG9uZW50cy5jb250YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlm
ICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwg
PSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIp
KQotICAgICAgICBtX2lzSW1hZ2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdM
RTo6fkV4dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDcgKzgzLDcgQEAgYm9v
bCBFeHRlbnNpb25zR0xBTkdMRTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCitHTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpO
T19FUlJPUjsKIH0KQEAgLTExNCwxMCArOTQsMTEgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29u
dGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5H
VEhfQU5HTEUpOworCiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xf
VFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1p
bmF0aW9uLgotICAgIGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0NHTGludCByZXR1cm5l
ZExlbmd0aCA9IDA7CiAgICAgZ2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFk
ZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYg
KCFyZXR1cm5lZExlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xNDcs
NyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4
dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAs
IGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0
WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQg
bG9uZyBmaWx0ZXIpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIC8vIEZJ
WE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUuCiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTU2
LDcgKzEzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nCiAgICAgZ2w6OkJsaXRGcmFtZWJ1
ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgx
LCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNSw3ICsyMTYsNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykK
ICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDMsMTUgKzIyNCwxNSBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaQogICAg
IGdsOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOworICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihvZmZzZXQpLCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzUwLDcgKzMzMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBn
bDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQxMiw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kCiAgICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC00MzksNyArNDIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGwKICAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDM3LDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2kKICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykK
LXsKLSAgICAvLyBXZSBjYW4gYXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRo
ZSBjYWxsaW5nIGZ1bmN0aW9ucwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAg
aW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19
Ci0jZW5kaWYKLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJl
bW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwg
aS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25l
IGJlZm9yZSByZWFkaW5nIHBpeGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJz
ID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVm
ZmVyVGFyZ2V0ID0gbV9jb250ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6
OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9jb250ZXh0LT5tX3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAg
ICBtX2NvbnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZm
ZXJUYXJnZXQsIG1fY29udGV4dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9
Ci0gICAgKHZvaWQpIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7
Ci0gICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdM
ZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYg
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAg
ICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211
bHRpc2FtcGxlRkJPKTsKLQotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRl
Y3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlv
bi4gU3VyZmFjZSB0aGlzIGluIHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwg
YW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGlu
Z1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAm
JiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oZGF0YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
Cit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0NDUsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAs
NyArNDUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNm
YWE2ZTM4ZmY3MmY0YjIzMjMuLmNiZjQ5OGJkN2MxYTFhYjlhYTZiNzBmYjVkMzhhYzRiOTJmYjAz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25n
IHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBs
b25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcg
ZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBs
b25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAg
Ym9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29s
IGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3Io
KSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdElu
RnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkg
KmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMjAsOCBA
QCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBi
b29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwot
ICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplOwotCiAgICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0g
ICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hl
dGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBl
eHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JB
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNi
OGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNC4uMWQ2MDRiNzFkNDgxNGY1OTdjMmMy
ZmM4OWVkYzk2NDhkYzEzYzc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
QEAgLTQ0MywzMiArNDQzLDUzIEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YS5idWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRh
LmRhdGEsIGZhbHNlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lk
Kj4ob2Zmc2V0KSwgdHJ1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQog
ewotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRy
aXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBj
YWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92
ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5l
LiwKKyAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJl
Zm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1f
aXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2Fy
eShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAg
ICB9Ci0gICAgZ2w6OlJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhKTsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCk7CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAg
IEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMg
JiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJp
bmcgdGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4g
dGhlCisgICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEg
Y2hhbm5lbCBmaXh1cCBiZWxvdy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0
eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3Vu
ZFJlYWRGQk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdy
YXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVs
dGlzYW1wbGVGQk8pKSkKICAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgs
IGhlaWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0K
IC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3cs
IHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bikKQEAgLTg5OCwyMCArOTE5LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6
QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwog
fQogCi12b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJp
dGZpZWxkIGFjY2VzcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zm
c2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGds
OjpVbm1hcEJ1ZmZlcih0YXJnZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0
ciA9IGdsOjpNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFw
aGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0
dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAo
IWdsOjpVbm1hcEJ1ZmZlcih0YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dM
ZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRl
T2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKQEAgLTEwMDgsMTQgKzEwMjUsMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwKICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2
b2lkKj4ob2Zmc2V0KSwgMCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxH
Q0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+
JiBwYXJhbXMpCitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dM
aW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3Jh
bSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9n
cmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUs
IHBhcmFtcy5kYXRhKCkpOworICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0
LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAt
MjEwMSwyMiArMjExOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGds
OjpHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwg
bnVsbHB0ciwgdmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5k
ZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NH
THNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCkBAIC0yMzkyLDEyICsyMzk0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmpl
Y3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6
OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0
aW9ucwpAQCAtMjgzOSwyMCArMjg0MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAg
IGdsOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xm
bG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFs
dWUgPSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2
KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAt
Mjg5NSwxMiArMjkwMiwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3lu
YyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0
U3luYyhzeW5jLCBmbGFncywgdGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBu
YW1lLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3MzU5N2Y0NzUzZDBiZWMxZDAyZTdkNWZjZmRjNjQzYTk4M2M4OGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgiCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09D
T0EpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW46On5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpID0gZGVmYXVs
dDsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZTg4YzJmOTliMWNhYTU4MTE3YzczOTExYTUx
YjY3ZGRlNjMyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
R0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFjZSBmb3Ig
aW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dh
cAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxsIG93biB0
aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0
YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFk
YXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2
ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8gb2J0YWlu
IHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9mIHRoZSBt
ZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhp
cyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJm
YWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUgZXhpc3Rp
bmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgorICAgICAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIFByb2R1Y2VyIHNwZWNpZmljIG1ldGFkYXRhIGhh
bmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KKyAgICB9OworICAgIC8vIFJldHVybnMgdGhlIG1l
dGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xp
ZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250ZW50cyBz
dXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAvLyB0aW1lIG9mIHRo
ZSBjYWxsLgorICAgIC8vIFJldHVybnMgZWl0aGVyOgorICAgIC8vIC0gRW1wdHkgYnVmZmVyIGlm
IG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCisgICAgLy8gLSBCdWZmZXIgd2l0aCBlbXB0
eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBi
dWZmZXIgd2FzIGF2YWlsYWJsZQorICAgIC8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGlu
IHVzZS4KKyAgICAvLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KKyAgICB2aXJ0dWFsIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgPSAwOworCisgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlz
cGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgorICAgIC8vIENsaWVudCB0cmFuc2ZlcnMgdGhl
IG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgorICAg
IHZpcnR1YWwgdm9pZCBwcmVzZW50KEJ1ZmZlcikgPSAwOworCisgICAgLy8gRGV0YWNoZXMgdGhl
IGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEg
aGFuZGxlLgorICAgIC8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0
ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCisg
ICAgLy8gdGhpcy4KKyAgICB2aXJ0dWFsIHZvaWQqIGRldGFjaENsaWVudCgpID0gMDsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpp
bmRleCAyZTFjNzk5ZTgyODUzYjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi43N2NhMjAwYmQ3
ZmZlZmVkMzk4ZjkxMmE3OWQ0MjUxMzQ2YmY3ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkV4
dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJIb3N0
V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0YXRpYyBF
R0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
ID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5IGRpc3Bs
YXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQg
PSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRp
bGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJvY2Vzcygp
KTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0KSB7
CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xhdGlsZSBw
bGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2luY2UgY2xp
ZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFsIGNvbnRl
eHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgIGlmIChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55
Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7CiAKICAg
ICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8gaG9zdFdp
bmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhv
c3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlvbigpLCAm
c2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0
V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LnB0cigp
LCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9j
ZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51bGxwdHIs
ICZzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJv
YmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAog
c3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwg
Q0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJy
ZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5
SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGlu
YXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0KQotICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3RpbmF0aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGlu
YXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0g
YXR0cnMuaXNXZWJHTDI7CiAKQEAgLTI5MywyNiArMjk5LDI4IEBAIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0CiAgICAgaWYgKG1faXNGb3JXZWJHTDIpCiAgICAgICAgIGdsOjpFbmFibGUoR3JhcGhp
Y3NDb250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAorICAgIFZlY3Rv
cjxBU0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBpZiAobV9pc0Zvcldl
YkdMMikgeworICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdv
cmsuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25f
cXVlcnlfYm9vbGVhbiJfcyk7CisgICAgfQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9u
cygpOwotCiAgICAgaWYgKCFuZWVkc0VBR0xPbk1hYygpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogcmVxdWlyZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAgICAgICAi
R0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiLCAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0
dXJlcy4KLSAgICAgICAgICAgICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLCAvLyBG
b3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgotICAgICAgICB9
OwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChyZXF1
aXJlZEV4dGVuc2lvbnMpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBw
b3J0cyhyZXF1aXJlZEV4dGVuc2lvbnNbaV0pKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdM
LCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgcmVxdWlyZWRFeHRlbnNpb25zW2ld
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIC8vIEZv
ciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMu
YXBwZW5kKCJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSJfcyk7CisgICAgICAgIC8vIEZvciBj
cmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCisgICAgICAgIHJlcXVp
cmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJfcyk7
CisgICAgfQogCi0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRF
eHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAg
ICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9H
KFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJh
Y3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5z
aW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ly8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUNDQVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBz
dGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8vIHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3Jt
U2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0byBDYXRhbHlzdCB0b28uCkBAIC0zMzEsMTMg
KzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBj
aGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0gICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVy
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fd2ViR0xMYXllciA9
IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0
cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyAgICBp
ZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsKKyAgICBlbHNl
IHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgICAgICBtX3dl
YkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhh
XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJH
TCBMYXllciJdOworICAgICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5
ZXIiXTsKICNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3N3YXBDaGFpbiA9ICZbbV93ZWJHTExh
eWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQg
d2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAgR0xlbnVtIHRleHR1cmVUYXJn
ZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBAIC00MDYsMTMgKzQxOCwxMiBAQCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKCkKICAgICAgICAg
aWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQogICAgICAgICAgICAgZ2w6OkRlbGV0ZUZy
YW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pOwogICAgIH0KLSAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
cikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlC
dWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExheWVyKSB7Ci0gICAgICAgIGF1dG8gcmVj
eWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgICAgICBhdXRv
IHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICAgICAg
aWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFj
ZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7Ci0gICAgICAgIGF1dG8gY29u
dGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFjaENsaWVudF07CisgICAgICAgIGF1dG8g
Y29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0YWNoQ2xpZW50KCk7CiAgICAgICAgIGlm
IChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3Bs
YXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBAIC01NzUsMTEgKzU4NiwxNiBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQog
ICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQog
ICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQgYnVmZmVyIG5vdywgYmVjYXVzZSBpdCBt
b3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBhdCB0aGUgdGltZSBpdCB3aWxsIGJlIHJl
dXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVm
ZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZm
ZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICBFR0xfRGVzdHJv
eVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOwogICAgIHJlY3lj
bGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQoreworICAgIEFTU0VSVCghZ2V0
SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAgIGF1dG8gYmFja2luZyA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCks
IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0CiAgICAgLy8gZm9yIE9wZW5H
TCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkgKG9ubGluZS9v
ZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVuIGNvbnNpZGVyIGFsbCBHUFVzLCBvciBy
ZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5zCiAgICAgLy8gYWxsIG9mZmxpbmUgcmVu
ZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQu
Ci0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmRvd1Nl
cnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxs
IHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCiAgICAgLy8gbV9kaXNwbGF5
TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNlLgogICAgIGlmIChwcmltYXJ5T3BlbkdM
RGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NDYsMTIgKzY2MiwxMiBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBj
b25zdAogICAgIC8vIGFuZCBNQUMvTUFDQ0FUQUxZU1QgYW5kIE9QRU5HTC9PUEVOR0xFUy4KICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICAKKwogI2lmIEhBVkUoQVBQTEVfR1JBUEhJ
Q1NfQ09OVFJPTCkKICAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02
ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9y
RGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJvbSBvdGhlciBn
cmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGdsOjpGbHVzaCgp
OwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZl
cl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVy
KCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVm
ZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVyIHByZXBhcmVG
b3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwg
bV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVzZW50KHsgV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB9KTsK
ICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAKICAgICBib29s
IGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBFcnJvciB3aWxs
IGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgpIHdoaWNoIHdp
bGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNOZXdCYWNraW5n
KQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAgICAgYWxsb2Nh
dGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0NTUwOWM3NDI5
ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYm
IFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIGF1dG8g
YXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10g
aW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNP
cGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBbbV93ZWJHTExh
eWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJHTExh
eWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
R3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFz
Q1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVyIHN3YXBDaGFp
bl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFjN2M5N2NmNjZl
NzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3ZWE4ODA5NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1w
b3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPG1l
bW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1z
dHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2b2lkKiBoYW5k
bGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5kbGUgKHN1Y2gg
YXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdl
bWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFjZXMuCi0vLyBU
aGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KLS8v
IFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2ls
bCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJl
ZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5Ci0v
LyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCi0vLyBF
eGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBh
cyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVyIGlzIGRvbmUg
d2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5n
Ci0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVj
eWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAogLSAoaWQpaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBz
aG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwogCi0vLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgot
Ly8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250
ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8vIHRpbWUgb2Yg
dGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1
ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2Ug
YW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMg
YXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCi0vLyAtIFN1
cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpcmVjeWNsZUJ1
ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50
cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3Vy
ZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlX
aXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwotCi0vLyBEZXRh
Y2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBt
ZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3Vi
bWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGlu
ZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1t
CmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMuLjE2OGZkNWY2
Yzg0MjM3YmRmOGFiOWNiYmNhNjQwNzM5NTA1YzkyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMjAsNyArMjAs
NyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKQEAgLTMyLDEz
ICszMiwzOSBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bUNBTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisKK2NsYXNz
IFdlYkdMTGF5ZXJTd2FwQ2hhaW4gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkdMTGF5
ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKKyAg
ICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyAgICB2b2lkIHBy
ZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7CisgICAgICAg
ICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCisgICAgICAgICAgICAg
ICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShtX3NwYXJlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgICAgICB2b2lkKiByZXN1bHQgPSBtX2Rp
c3BsYXlCdWZmZXIuaGFuZGxlOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgV2ViQ29yZTo6SU9TdXJm
YWNlKiBkaXNwbGF5U3VyZmFjZSgpIHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlLmdl
dCgpOyB9Citwcml2YXRlOgorICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CisgICAgQnVmZmVy
IG1fc3BhcmVCdWZmZXI7CisgICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsKK307CiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
IF9jb250ZW50c0J1ZmZlcjsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyIF9zcGFyZUJ1
ZmZlcjsKLQogICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsKKyAgICBPcHRpb25hbDxXZWJH
TExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0aERldmljZVBp
eGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29u
dGVudHNPcGFxdWUKQEAgLTQ3LDYgKzczLDcgQEAKICAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJh
bnNmb3JtM0RJZGVudGl0eTsKICAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFx
dWU7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBfc3dh
cENoYWluLmVtcGxhY2Uoc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTczLDMwICsx
MDAsMjEgQEAKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9Ci0KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIHJlY3ljbGVCdWZmZXIKKy0g
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWlu
CiB7Ci0gICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgIGlmIChfc3BhcmVC
dWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAgICAgICAgX3NwYXJlQnVmZmVyLnN1cmZh
Y2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoX3NwYXJlQnVmZmVyKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gX3N3YXBDaGFpbi52YWx1ZSgpOwogfQogCi0t
ICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVy
QnVmZmVyKSBidWZmZXIKKy0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKIHsKLSAgICBBU1NFUlQo
IV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBfc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKF9jb250
ZW50c0J1ZmZlcik7Ci0gICAgX2NvbnRlbnRzQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAg
IFtzZWxmIHNldE5lZWRzRGlzcGxheV07CiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IFlFUzsK
IH0KIAogLSAodm9pZClkaXNwbGF5CiB7Ci0gICAgaWYgKF9jb250ZW50c0J1ZmZlci5zdXJmYWNl
ICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50cyA9IF9jb250
ZW50c0J1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKTsKKyAgICBpZiAoX3N3YXBDaGFp
bi0+ZGlzcGxheVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7CisgICAgICAgIHNl
bGYuY29udGVudHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xheWVyQ29udGVu
dHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29udGVudHMiXTsK
ICAgICB9CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZv
cm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMTA2LDEzICsxMjQs
MTQgQEAKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLS0gKHZvaWQqKSBkZXRh
Y2hDbGllbnQKK0BlbmQKKwordm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KEJ1ZmZl
ciBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgdm9p
ZCogcmVzdWx0ID0gX2NvbnRlbnRzQnVmZmVyLmhhbmRsZTsKLSAgICBfY29udGVudHNCdWZmZXIu
aGFuZGxlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEFTU0VSVCghbV9zcGFy
ZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX3NwYXJlQnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlC
dWZmZXIpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICBbbV9s
YXllciBwcmVwYXJlRm9yRGlzcGxheV07CiB9Ci1AZW5kCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0K
aW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4uOTlhZDkxNjUy
NTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lt
cG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNpbXBvcnQgPENv
cmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggN2Vj
ODFjZjRhZTU3NzJjYWU5NzI4OGJjODBlMzY1NjQ2ZDYyN2M3Yi4uYWRkNWYzNTJhZTRkZTZiNmQ1
ZGMxOTFlNjczYjVhYWZhNTZkZTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIEV4dGVuc2lvbnNHTE9wZW5H
TDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3Jj
WDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcg
ZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NH
TGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwg
R0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxk
IG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBs
b25nIHNyY1gxLCBsb24KICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVy
c0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICNlbmRpZgogfQogCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
aW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMcwogI2VuZGlmCiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHCiAjZW5kaWYKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ5NjI4OWNlYTBlNmEwOWQ2ZGI3MzFmODY4YjU0
OTkzYTQ0NDQ5YTguLjQ3NTAyMjZlY2VjZWY0NDM5NmU5OTM4Njc2Y2I2MzliZTgzNDM3YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfkV4dGVuc2lvbnNHTE9wZW5HTCgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhv
ZHMuCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJy
aWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMo
KSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOwpAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3BHcm91
cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNl
ZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9u
ZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4
QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoK
ICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQzYjUxNjFmYmE3
NzhmOGZiNDM4NGIxYmMyZGIzOGVjZjZjNDgzZWIuLmI3ODk2MGNiNDgyZTRlZjJhYjk4ZTQwMzky
YTYzNWJhN2ZmYjdiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
CkBAIC0zNjYsMTEgKzM2Niw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzCiAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKiwgYm9vbCkKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdM
RShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKIHsK
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCBiZmU0NTIxNTQzZmY0YjI3
MjEzN2YzNDRjZWU0YTIyZDhmYjI4YzY0Li42YTNhMzlmZTNhMWJhNWJkMjU5NzcxNTg5NDc1NjFj
Y2FkNWFkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC05Myw3
ICs5Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNp
emVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
Y3BwCmluZGV4IDM2YzNlZjM4Zjk4Yjk5YWYwMTE1MDY5OTE0MjdiYWNlZmNiYjhhYzMuLmUxZTQz
YmY1MzkyODg1YTI0ZmJiMzNjYjI2YjVmNmU0OTFmYmUwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcApAQCAtMTAwLDEyICsxMDAsMTIgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFy
Z2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlcihs
b25nIC8qIHNyY1gwICovLCBsb25nIC8qIHNyY1kwICovLCBsb25nIC8qIHNyY1gxICovLCBsb25n
IC8qIHNyY1kxICovLCBsb25nIC8qIGRzdFgwICovLCBsb25nIC8qIGRzdFkwICovLCBsb25nIC8q
IGRzdFgxICovLCBsb25nIC8qIGRzdFkxICovLCB1bnNpZ25lZCBsb25nIC8qIG1hc2sgKi8sIHVu
c2lnbmVkIGxvbmcgLyogZmlsdGVyICovKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Ymxp
dEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NH
TGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGJpdGZpZWxkLCBHQ0dMZW51bSkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fZ2xEcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0cKICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0
LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
CiAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBy
ZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSwg
cHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUp
IHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDAxN2E0NWI3Mzk4ZDA5OTJl
ZDE0NzY3ZjA3NjdlMDRiNDY0MTYyODMuLjVjNzYwMzdmYTdiYzZlOGVlZTNlNjczZjk5YTdkZmMy
Zjc4ZmI0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC03NSw4ICs3NSw4IEBA
IHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBs
b25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVu
c2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVz
LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNp
Z25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5zZXJ0RXZlbnRN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVY
VCh2b2lkKSBvdmVycmlkZTsKQEAgLTg3LDkgKzg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgYmlu
ZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBk
aXZpc29yKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlk
ZTsKIAogICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gcmVzZXQKICAgICBpbnQgZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAppbmRleCBjMjU1YjBjMTJmNGZjYmZhNDZkYjAyZDU1YzgwYjRjYjc3ZDE3YjcwLi4wMjcyOGY4
OTc4OGUwYjg1ZWQxMjZmNWY5ODFmNWMxZDYwZGZmZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaApAQCAtNTgsNiArNTgsOSBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JK
Q19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFTUyBXZWJHTExheWVyOworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47Cit9CiAjZW5k
aWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICNpZiBVU0UoTklDT1NJQSkKQEAgLTg2LDcgKzg5LDcg
QEAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5hbWVIYXNo
OwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTFByaXZhdGU7CiAKLWNsYXNzIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBH
cmFwaGljc0NvbnRleHRHTAogewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4pOwpAQCAtOTQsNiAr
OTcsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wmIHNoYXJlZENvbnRleHQpOworICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IGNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKTsKKwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fY29udGV4dE9iajsgfQogICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1U
ZXh0dXJlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAgICAgQ0FMYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FM
YXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KQEAgLTE5MSw3ICsxOTYsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKICAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpIGZp
bmFsOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwotICAgIHZvaWQgZ2V0QXR0YWNoZWRT
aGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dM
c2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSBmaW5hbDsKKyAgICB2b2lk
IGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBt
YXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycyk7CiAg
ICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJp
bmcmIG5hbWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRCdWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwpAQCAtMjE5
LDggKzIyNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBm
aW5hbDsKICAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsOwogICAgIEdD
R0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYg
bmFtZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOwotICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0
dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAg
dm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7CkBAIC0yMzYs
NyArMjM5LDggQEAgcHVibGljOgogICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQgcGFyYW0pIGZpbmFsOwogICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQg
ZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpIGZpbmFsOwogCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkgZmluYWw7CisgICAgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCiAgICAgdm9pZCBy
ZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAgdm9pZCBz
YW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpIGZpbmFs
OwpAQCAtMjU0LDcgKzI1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwog
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOyAKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOwogCkBAIC0zMTcsMTIgKzMyMSwxMCBAQCBwdWJsaWM6CiAj
aWYgIVVTRShBTkdMRSkKICAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25z
dCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBsZW5ndGgpOwogICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBsZW5ndGgpOwotICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwg
R0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwogI2VuZGlmCiAgICAgdm9pZCBj
b3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdl
dCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgc2l6ZSkgZmluYWw7CiAKLSAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0Zmll
bGQgYWNjZXNzKSBmaW5hbDsKLSAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAKICAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKQEAgLTM4NCw3ICszODYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFBs
YXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CiAgICAgLy8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFs
dWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVTYW1wbGVyKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikgZmluYWw7CkBAIC0zOTMsOCArMzk1LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
IGZpbmFsOwogICAgIC8vIGdldFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmlu
YWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAKICAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0Zmll
bGQgZmxhZ3MpIGZpbmFsOwogICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgZmluYWw7
CkBAIC00MDMsNyArNDA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAgIC8vIGdl
dFN5bmNQYXJhbWV0ZXIKICAgICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGF0
IHRoZSBXZWJHTCBsZXZlbCBpZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3QuCi0gICAg
dm9pZCBnZXRTeW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTGludCAqdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOwpAQCAtNDIwLDcgKzQyMiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0
ciBzaXplKSBmaW5hbDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBnZXRQYXJh
bWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNl
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3Jt
TmFtZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVu
dW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NH
TGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwog
CiAgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOwogICAgIC8vIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcgpAQCAtNDI5LDExICs0MzEsNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4g
cGFyYW1zKSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwotICAgIHZv
aWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCk7Ci0jZW5kaWYKLQogICAgIC8vIEhlbHBlciBt
ZXRob2RzLgogCiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlt
YWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZh
c1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwpAQCAtNTE1LDcgKzUxMiwxMSBAQCBwdWJsaWM6CiAj
ZW5kaWYgLy8gIVVTRShBTkdMRSkKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxw
dHIsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxwdHIpOworI2Vs
c2UKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMsIEhvc3RXaW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CisjZW5kaWYK
IAogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0
IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBw
dWJsaWMgZW50cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBP
cGVuR0wuCkBAIC01MjcsNyArNTI4LDkgQEAgcHJpdmF0ZToKICAgICAvLyBpbXBsZW1lbnRhdGlv
bi4KICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKLSAgICAK
KworICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOworCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJh
dGlvbiBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9pZCBjaGVj
a0dQVVN0YXR1cygpOwogCkBAIC01NDgsMTAgKzU1MSwxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAg
Ym9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGFsbG9jYXRlQW5k
QmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJh
Y2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluKiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKKyAgICAvLyBUT0RPOiB0
aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gYSBpbWFnZSBi
dWZmZXIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTc5
IC4KICAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKQEAgLTU3
OSw3ICs1ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBpc1ZhbGlkKGZhbHNlKQogICAg
ICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgU2hhZGVyU3ltYm9sTWFwJiBz
eW1ib2xNYXAoZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX0FU
VFJJQlVURSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNIHx8IHN5
bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1ZBUllJTkcpOwpAQCAtNjcyLDcgKzY3OCw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgdXNpbmcgQm91bmRUZXh0dXJlTWFwID0gSGFzaE1hcDxH
Q0dMZW51bSwKICAgICAgICAgICAgIHN0ZDo6cGFpcjxHQ0dMdWludCwgR0NHTGVudW0+LAotICAg
ICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwgCisgICAgICAgICAgICBXVEY6OkludEhh
c2g8R0NHTGVudW0+LAogICAgICAgICAgICAgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czxHQ0dMdWludD4sCiAgICAgICAgICAgICBXVEY6OlBhaXJIYXNoVHJhaXRzPFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj4KICAgICAgICAgPjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3
ZWRmMWY0ZTY4ODEzZjZiOS4uNjI5ODAzODhiNjUyNDc5Y2NiNDMzMWMyNWZmZWViYjY2YzZjYjU0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTQz
MSw3ICs0MzEsNyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRF
eHRlbnNpb25zKCkKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgYXV0byBhdHRy
cyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250
ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0K
LSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRh
dGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgZGF0YS5kYXRhKTsKICAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRE
cmF3RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJF
WFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGJj
NDRjZDU3Nzg4NjcyMDM5YWVhNGY1OTk5NmU0ZDk0ZTFjMWEwZmUuLmY0ZmUwMDlkNDVjYWRkMjhk
YmI3N2VmOTVhY2NiNTAyODNlMWNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjAyOSwyMiArMjAyOSw2IEBAIEdDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFw
cGVkTmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5h
bWUsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRW
ZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVl
LmRhdGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIyNzgsMTkgKzIyNjIsMTkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEcKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0Fy
cmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJh
eXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVu
c2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpOwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwg
Y291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNv
dW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZp
c29yKQogewotICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBk
aXZpc29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGlu
ZGV4LCBkaXZpc29yKTsKIH0KIAogI2lmIEhBVkUoT1BFTkdMXzQpICYmIEVOQUJMRShXRUJHTDIp
CkBAIC0yMzM1LDEzICsyMzE5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29w
eUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMaW50cHRyLAogfQogI2VuZGlm
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEs
IEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTFNw
YW48R0x2b2lkPikKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjQnl0ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShkc3RPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwogfQogCiAjaWYg
SEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKQEAgLTI3MTIsNyArMjY5MSw3IEBA
IFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVl
cnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xl
bnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAgICAgVU5VU0VEX1BBUkFN
KHBuYW1lKTsKQEAgLTI3NTYsMTggKzI3MzUsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4K
ICAgICBVTlVTRURfUEFSQU0ocGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VE
X1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwLmY7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCisKIHsKICAgICBVTlVT
RURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURf
UEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZs
YWdzKQpAQCAtMjgwNiwxMiArMjc4NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAg
IFVOVVNFRF9QQVJBTSh0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFS
QU0oc3luYyk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKICAgICBVTlVTRURfUEFSQU0oYnVm
U2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxh
dGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soKQpAQCAtMjg5NCwxMSArMjg3NCwxMyBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHBybwog
I2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwg
VmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCiB7CisgICAgVmVjdG9yPEdDR0xpbnQ+IHJlc3VsdCh1
bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAKLSAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5k
aWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkp
OworICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNp
emUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiB1bmlmb3JtQmxvY2tOYW1lKQpAQCAtMjk0Myw3ICsyOTI1LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dM
dWludCwgR0MKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewogICAgIFVOVVNFRF9QQVJB
TSh4KTsKICAgICBVTlVTRURfUEFSQU0oeSk7CkBAIC0yOTU0LDE4ICsyOTM2LDYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQotewotICAg
IFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9y
bWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdERhdGEp
OwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+
IHBhcmFtcykKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMjNkNzRmYTgwZDcwNzkxYmU2MDBkZjU4ZTc1
NjE3MzM5NmFhNTUwNS4uYTIyMTgwYjRiZjRjZTEwZjE4NTIxMjQwMTFlODhhNDQyNzNiNDFlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtNDAsNyArNDAs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRh
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01OCw3ICs1OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQogCi0g
ICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRh
KTsKKyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGRhdGEuZGF0YSk7CiAKICAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5i
b3VuZERyYXdGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CkBAIC0xMzAsNyArMTMwLDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKICAgICAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUg
d2Uga25vdyB3ZSBoYXZlIGl0LgogICAgICAgICAgICAgaWYgKHN1cHBvcnRQYWNrZWREZXB0aFN0
ZW5jaWxCdWZmZXIpIHsKICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9S
RU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRl
bnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNh
bXBsZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CisgICAg
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywg
d2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkK
ICAgICAgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0
ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKQpAQCAt
MTM4LDEyICsxMzgsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZC
T3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkgewogICAgICAgICAgICAgICAgICAgICA6Omds
QmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVO
Q0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7CiAgICAgICAgICAgICAgICAg
ICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7
Ci0gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50
LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAg
ICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhf
QVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA2Mjg0NDUzMjUwMzM1
MTA3ZmQ1NDk4MjIzMmI4YjllYWVjOGU2OGNiLi45ZjgzMTdiMThkNTNiN2IzYzE2NjY5YTRjNTEx
OTkzZWFmMzdjNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsNyBAQCBzZXQo
V2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzCiAgICAgR1BVUHJvY2Vzcy9HUFVQcm9jZXNzCiAKKyAgICBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMCiAgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyCkBAIC0yMTgsNiArMjE5LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdF
U19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24KIAor
ICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkK
ICAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkK
IAogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGVkYjZj
YTU5NzlkMmY0ZGVmOGIyYjJlNzczZjlkNjlhZTc4NmU3ZTkuLjRhNjdkZjhlZGMzYjRmNDg5MTg3
NzAyZWZiZjA0MWIzZDM0YTkxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTIwLDYgKzIwLDcgQEAgJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS9tb2RlbHMucHkKICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTEzMSw2ICsxMzIsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVz
c2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CmluZGV4IDc1Njc5ZjU1ZjVhZTM5OWI1ZWFmNDc3ZjE4OTMyNTZiYzI0ODg0NGQuLjdjZDNk
YmNjYTM1MGM2ZTM4MTRjMzQwYzM5M2M5NjNlZGJiOTgxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTc1LDYgKzE3NSwxMiBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94
eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDM3NzAxYjAxYzNjMWEyYzMw
MGUxZGQyZDcyZTZiODUyMzdmNDI0YjUuLjk3NmIxYTVhM2U1YzBkMzExNWQ0NDUwYzkwODYxNTcx
OWU2ZGVjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE3MSw2ICsxNzEsNyBA
QCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5IFwKKwlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKIAlXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKIAlXZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXApAQCAtMjI3LDYgKzIyOCw3IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2VzcyBcCiAJ
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKIAlHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAorCUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgXAogCUdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5IFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDBlMmU4ODMyYjFlMjBmMWUwZjMxOWQ1
ZDlmMjVkNzJjZTFiZjczYWQuLjQ0YjlmNjNlMTRjNTBiNzQxOTkzZDZmMzVhNWE5NWY1YWZkODBh
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY0LDYgKzY0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHTCkKKyNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCkBAIC0yOTAsNiArMjk0LDIx
IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tl
bmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91
bmQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNYXAuZW5zdXJlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgWyZd
KCkgeworICAgICAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRy
aWJ1dGVzLCAqdGhpcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9KTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2
b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQor
eworICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLnJlbW92ZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZv
dW5kKTsKK30KKyNlbmRpZgogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5v
d1BsYXlpbmdJbmZvKCkKIHsKICAgICBncHVQcm9jZXNzKCkubm93UGxheWluZ01hbmFnZXIoKS5j
bGVhck5vd1BsYXlpbmdJbmZvQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDI2NzhkYmM0ZTVk
MzY1ZmFkMjhlOGI0ODI3ODYzNzYyYTNjNDU3OGQuLjVhZWRmYmI0ZDJjYWM3Yjc2NjBmZjA3MzYw
OWQzNzdjNjAxNTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvbklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorCiAjaW5jbHVk
ZSA8V2ViQ29yZS9MaWJXZWJSVENFbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQ
bGF5aW5nTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4K
QEAgLTM5LDYgKzQwLDExIEBACiAjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BV
UHJvY2VzczsKQEAgLTU0LDYgKzYwLDcgQEAgY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5OwogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKK2NsYXNz
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1
Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKQEAgLTExOSw2ICsxMjYsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgY3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29u
dGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisjZW5kaWYKKwogICAgIHZvaWQg
Y2xlYXJOb3dQbGF5aW5nSW5mbygpOwogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBz
ZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CiAK
QEAgLTE4MCw3ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4+OwogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwOwotCisjaWYgRU5BQkxFKFdFQkdM
KQorICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTD4+OworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwIG1fcmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXA7CisjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDUxOTRmYjRmNjA4NWQ2MjRk
NTk4M2Y2MjUyYzM2NWViMzI3MWYzNDQuLjlkNTRlMTY0NTk1YjBhMzYxZGZlNGM3NWJmZjQwMThh
ODU3NTljOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSwxMCBA
QAogbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVz
c2FnZSB7CiAgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAgICAgdm9pZCBS
ZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
IHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lk
IENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNz
Q29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikKKyNlbmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygp
CiAgICAgdm9pZCBTZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0
aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8gbm93UGxheWluZ0luZm8pCiAjaWYg
VVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZTk3MGU1ZDg4NzA1MTZhZDEzNWI3NjVjZGE0NTdmNDI1M2FjMDJkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDx3dGYv
TWFjaFNlbmRSaWdodC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1
dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikK
KyAgICA6IG1fY29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJv
Y2VzcyhhdHRyaWJ1dGVzLCAqdGhpcykpCisgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCisgICAgLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7Cisg
ICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBtX2NvbnRleHQtPmFkZENsaWVudCgq
dGhpcyk7CisgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFw
aGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7CisgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5z
aW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhU
RU5TSU9OU19BTkdMRSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6V2FzQ3JlYXRlZChleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQoreworICAgIGlmIChhdXRvKiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQor
ICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworfQorCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKK30KKworSVBDOjpDb25uZWN0aW9u
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICByZXR1cm4gJmdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordWlu
dDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9V
SW50NjQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRl
KCkKK3sKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Zm9yY2VDb250ZXh0TG9z
dCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
V2FzTG9zdCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hD
b250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpC
dWZmZXIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVCdWZmZXIoKQoreworICAgIHJl
dHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fZGlzcGxh
eUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
Cit9CisKK3ZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQoKQorewor
ICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUsIG51bGxwdHIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAg
IG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGZv
cmNlQ29udGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJl
cGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9yRGlz
cGxheSgpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVy
LnN1cmZhY2UpOworICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIGlmIChkaXNwbGF5
QnVmZmVyKQorICAgICAgICBzZW5kUmlnaHQgPSBkaXNwbGF5QnVmZmVyLT5jcmVhdGVTZW5kUmln
aHQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCkpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmlu
ZyYmIGV4dGVuc2lvbikKK3sKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgbV9jb250ZXh0LT5tYXJrQ29udGV4dENo
YW5nZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmYwNTcyMTAxZDliYzBmMDlmN2RhOTRjOTRlNTMyYmE3
ZjdjMzA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dMLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFt
ZXNwYWNlIFdURiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8gR1BVIHByb2Nlc3Mg
c2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzCisvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wg
Y2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgorLy8gVGhlIGltcGxlbWVudGF0
aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgZmluYWwKKyAgICA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyAgICAsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudAor
ICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIGZpbmFsOworCisgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
IG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4K
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7
CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lk
IGRpZENvbXBvc2l0ZSgpIGZpbmFsOworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFs
OworICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29u
dGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBmaW5hbDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluIG92ZXJyaWRlcy4KKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZl
cigpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIGZpbmFsOworICAgIHZvaWQqIGRl
dGFjaENsaWVudCgpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisg
ICAgdm9pZCByZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKKyAgICB2b2lk
IHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJp
Z2h0JiYpPiYmKTsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOwor
ICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisKKyNpbmNsdWRlICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKKworICAgIFJl
ZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworICAgIFdlYWtQ
dHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcjsKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVy
IG1fZGlzcGxheUJ1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWE3
MTUyNGQ0MDgxOWJhMDMxMGNiNDIwMTM2MDc1NjY4Nzg2ODU3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjk0IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJv
bm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRp
c3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNp
b25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKQorCisgICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB2b2lk
IFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQorICAgIHZvaWQgTW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBBY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgdm9pZCBBdHRhY2hT
aGFkZXIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qgc2hhZGVyKQorICAgIHZvaWQgQmluZEF0
dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcgbmFtZSkK
KyAgICB2b2lkIEJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAg
IHZvaWQgQmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAg
ICB2b2lkIEJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQor
ICAgIHZvaWQgQmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAg
IHZvaWQgQmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9h
dCBhbHBoYSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB2b2lk
IEJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxw
aGEpCisgICAgdm9pZCBCbGVuZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3Rv
cikKKyAgICB2b2lkIEJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3Qg
ZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgdm9pZCBD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQzMl90IHRhcmdldCkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ2xlYXIodWludDMyX3QgbWFzaykKKyAgICB2
b2lkIENsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQg
YWxwaGEpCisgICAgdm9pZCBDbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHZvaWQgQ2xlYXJT
dGVuY2lsKGludDMyX3QgcykKKyAgICB2b2lkIENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVl
biwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHZvaWQgQ29tcGlsZVNoYWRlcih1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgQ29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB2b2lkIENv
cHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZUJ1ZmZlcigpIC0+ICh1aW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZUZyYW1lYnVmZmVyKCkg
LT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUHJv
Z3JhbSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENy
ZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIENyZWF0ZVNoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVUZXh0dXJlKCkgLT4gKHVpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3VsbEZhY2UodWludDMyX3QgbW9k
ZSkKKyAgICB2b2lkIERlbGV0ZUJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRl
RnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVByb2dyYW0odWludDMy
X3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVJlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgRGVsZXRlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVUZXh0dXJl
KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB2
b2lkIERlcHRoTWFzayhib29sIGZsYWcpCisgICAgdm9pZCBEZXB0aFJhbmdlKGZsb2F0IHpOZWFy
LCBmbG9hdCB6RmFyKQorICAgIHZvaWQgRGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQz
Ml90IGFyZzEpCisgICAgdm9pZCBEaXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIERpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIERyYXdBcnJheXMo
dWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB2b2lkIERy
YXdFbGVtZW50cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1
aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBFbmFibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQg
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBGaW5pc2go
KQorICAgIHZvaWQgRmx1c2goKQorICAgIHZvaWQgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0
YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWlu
dDMyX3QgYXJnMywgaW50MzJfdCBsZXZlbCkKKyAgICB2b2lkIEZyb250RmFjZSh1aW50MzJfdCBt
b2RlKQorICAgIHZvaWQgR2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQg
R2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9v
bCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJn
MikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QXR0
cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFN0cmluZyh1aW50MzJfdCBuYW1lKSAtPiAoU3RyaW5nIHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1
aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRf
dCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0KHVpbnQzMl90IHBuYW1lKSAtPiAoaW50NjRf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEludGVnZXI2NGkodWludDMy
X3QgcG5hbWUsIHVpbnQzMl90IGluZGV4KSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFByb2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBu
YW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJv
b2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5
UmVmZXJlbmNlPGJvb2w+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNo
bWVudCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQz
Ml90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBz
aGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNpb25UeXBlKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90LCAyPiByYW5nZSwgR0NHTGludCBwcmVjaXNpb24pIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAt
PiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1m
dih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUp
IC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFVuaWZvcm1pdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50
NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQz
Ml90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1Mb2NhdGlv
bih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IHBuYW1lKSAtPiAodWludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBIaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB2b2lkIElz
QnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgSXNFbmFibGVkKHVpbnQzMl90IGNhcCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBJc0ZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29s
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNQcm9ncmFtKHVpbnQzMl90IGFy
ZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNSZW5kZXJi
dWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBJc1NoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIElzVGV4dHVyZSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIExpbmVXaWR0aChmbG9hdCBhcmcwKQorICAg
IHZvaWQgTGlua1Byb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFBpeGVsU3RvcmVpKHVp
bnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgUG9seWdvbk9mZnNldChmbG9h
dCBmYWN0b3IsIGZsb2F0IHVuaXRzKQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIFNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGlu
dmVydCkKKyAgICB2b2lkIFNjaXNzb3IoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAs
IFN0cmluZyBhcmcxKQorICAgIHZvaWQgU3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJf
dCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQz
Ml90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAg
IHZvaWQgU3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2Vw
YXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1
aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBT
dGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6
ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZv
aWQgVW5pZm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3Jt
MWZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAg
dm9pZCBVbmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHZvaWQgVW5p
Zm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYp
CisgICAgdm9pZCBVbmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkK
KyAgICB2b2lkIFVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90
IHgsIGludDMyX3QgeSkKKyAgICB2b2lkIFVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTNmKGludDMyX3Qg
bG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBVbmlmb3JtM2Z2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9p
ZCBVbmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3QgeikKKyAgICB2b2lkIFVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24s
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3JtNGZ2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9p
ZCBVbmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVW5pZm9ybTRpdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MmZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVc2VQcm9ncmFtKHVpbnQz
Ml90IGFyZzApCisgICAgdm9pZCBWYWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2
b2lkIFZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHZvaWQgVmVy
dGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAx
PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQg
eCwgZmxvYXQgeSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmli
M2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQs
IDM+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGZ2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiB2YWx1ZXMpCisg
ICAgdm9pZCBWZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUs
IHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB2b2lkIFZpZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIEJ1ZmZlckRhdGEwKHVpbnQzMl90IHRh
cmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJEYXRh
MSh1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSwgdWlu
dDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWlu
dDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9p
ZCBSZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgUmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgdm9pZCBUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTJEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVGV4U3ViSW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMp
CisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNp
emUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBp
bnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAg
IHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGlu
dDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQg
RHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQz
Ml90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAg
IHZvaWQgQ3JlYXRlVmVydGV4QXJyYXkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgSXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgQ29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVU
YXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRf
dCBhcmc0KQorICAgIHZvaWQgR2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2
NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJf
dCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50
MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwg
dWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0
ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxheWVyKQorICAgIHZvaWQgSW52YWxpZGF0
ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gYXR0YWNobWVudHMpCisgICAgdm9pZCBJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMy
X3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cywgaW50
MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZv
aWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRl
eFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhT
dG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQor
ICAgIHZvaWQgVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTNE
MSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJv
cmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgdm9pZCBUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZv
aWQgVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UzRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zm
c2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGlu
dDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAg
dm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zm
c2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBHZXRGcmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0
cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IFVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlm
b3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2
b2lkIFVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
LCB1aW50MzJfdCB2MikKKyAgICB2b2lkIFVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWlu
dDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9p
ZCBVbmlmb3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm0zdWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9p
ZCBVbmlmb3JtNHVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4
NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAg
IHZvaWQgVW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJp
eDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWJJNGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3QsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgdm9p
ZCBWZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliSVBvaW50ZXIodWludDMy
X3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVp
bnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUs
IHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1
ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZh
bHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBk
cmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZXMpCisgICAgdm9p
ZCBDbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVp
bnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBz
dGVuY2lsKQorICAgIHZvaWQgQ3JlYXRlUXVlcnkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB2
b2lkIElzUXVlcnkodWludDMyX3QgcXVlcnkpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgQmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5
KQorICAgIHZvaWQgRW5kUXVlcnkodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0UXVlcnko
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwg
dWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIENyZWF0ZVNhbXBsZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBEZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJ
c1NhbXBsZXIodWludDMyX3Qgc2FtcGxlcikgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBCaW5kU2FtcGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVy
KQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3Qg
cG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJf
dCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBHZXRTYW1w
bGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmko
dWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgRmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWlu
dDMyX3QgZmxhZ3MpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIElzU3luYyh1aW50NjRfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIERlbGV0ZVN5bmModWludDY0X3QgYXJnMCkKKyAgICB2b2lkIENsaWVudFdh
aXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0KSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBXYWl0U3luYyh1
aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHZvaWQg
R2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB2b2lkIElzVHJhbnNmb3JtRmVlZGJhY2so
dWludDMyX3QgaWQpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
QmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAg
dm9pZCBCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAg
dm9pZCBFbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHZhcnlpbmdzLCB1aW50MzJf
dCBidWZmZXJNb2RlKQorICAgIHZvaWQgR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQz
Ml90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3Jt
RmVlZGJhY2soKQorICAgIHZvaWQgUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQg
QmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
YnVmZmVyKQorICAgIHZvaWQgQmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0
KQorICAgIHZvaWQgR2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0
cmluZz4gdW5pZm9ybU5hbWVzKSAtPiAoVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZl
Y3Rvcjx1aW50MzJfdD4gdW5pZm9ybUluZGljZXMsIHVpbnQzMl90IHBuYW1lKSAtPiAoVmVjdG9y
PGludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUJs
b2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgp
IC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3JtQmxv
Y2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1
aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJs
b2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQz
Ml90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBC
bGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90
IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQz
Ml90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIp
CisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0
ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJp
bmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBJbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAg
ICB2b2lkIFB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFBvcEdyb3Vw
TWFya2VyRVhUKCkKKyAgICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMy
X3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQp
CisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNv
dW50KQorICAgIHZvaWQgVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1
aW50MzJfdCBkaXZpc29yKQorfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZmZlOGMxZmM3YWZh
MTcyZjFiYjljNzM0MjY3NWM1ZGZlNmUxNzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmgKQEAgLTAsMCArMSwxMTgzIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMg
ZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8v
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQor
ICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAgICB9CisgICAgdm9pZCBzeW50
aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgIH0KKyAgICB2b2lkIG1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNo
YWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lk
IGJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5n
JiYgbmFtZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKGFy
ZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZl
cih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRSZW5kZXJidWZm
ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmlu
ZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJs
ZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvbihtb2RlKTsKKyAgICB9CisgICAg
dm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9k
ZUFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUo
bW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmModWludDMyX3Qg
c2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymxl
bmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFy
YXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwg
dWludDMyX3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1Nl
cGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgIH0KKyAgICB2
b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY2xlYXIodWludDMyX3QgbWFz
aykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFzayk7CisgICAgfQorICAgIHZv
aWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBh
bHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7CisgICAgfQorICAgIHZv
aWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xl
YXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBn
cmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
b2xvck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlZCksIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihibHVlKSwgc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAgIHZvaWQgY29tcGlsZVNoYWRlcih1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGFy
ZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworICAgIH0KKyAgICB2b2lkIGNv
cHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhl
aWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZv
cm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVidWZmZXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVByb2dyYW0oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUmVuZGVyYnVmZmVyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2hh
ZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRl
cihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
VGV4dHVyZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVpbnQz
Ml90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihhcmcwKTsK
KyAgICB9CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVJlbmRl
cmJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTaGFkZXIodWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGFyZzApOworICAgIH0K
KyAgICB2b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aEZ1bmMo
dWludDMyX3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMp
OworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZsYWcpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oZmxhZykpOworICAg
IH0KKyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpOworICAgIH0KKyAgICB2
b2lkIGRldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZv
aWQgZGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2Fi
bGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMy
X3QgaW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBp
bnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
cmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1l
bnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNv
dW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCBlbmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFi
bGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJf
dCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRl
cmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0
YXJnZXQsIGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50
MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFt
ZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2
ZWwpOworICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2VuZXJh
dGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZW5l
cmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYih1aW50
MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4
LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUo
YXJnMikpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYg
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdl
dEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3RyaW5n
KHVpbnQzMl90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRp
Y19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0Rmxv
YXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFt
ZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
VmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
aW50NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyNjQocG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2
NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dy
YW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1
aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVy
ZW5jZTxib29sPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPihyZWludGVycHJldF9j
YXN0PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRFcnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50
LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbUluZm9M
b2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhhcmcw
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7
CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGFyZzAsIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlcklu
Zm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5
cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiwgaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBzdGQ6OmFycmF5PEdDR0xpbnQsIDI+IHJhbmdlIHsgfTsKKyAgICAg
ICAgR0NHTGludCBwcmVjaXNpb24gPSB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLCAmcHJlY2lz
aW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90LCAyPihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihyYW5nZS5kYXRhKCkpLCByYW5nZS5z
aXplKCkpLCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlclNvdXJjZSh1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShhcmcwKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFy
YW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtZnYodWludDMyX3Qg
cHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNf
Y2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZv
cm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFs
dWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2
KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1
ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQt
PmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0
X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMdWludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3Ry
aW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOwor
ICAgIH0KKyAgICB2b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9v
bGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmlzQnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxi
b29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBj
YXAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRW5hYmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGlzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1
ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4o
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlz
UmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVm
ZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4
dHVyZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBw
YXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFt
KTsKKyAgICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5p
dHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0
cyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3Zl
cmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7
CisgICAgfQorICAgIHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3Io
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQz
Ml90IGFyZzAsIFN0cmluZyYmIGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNoYWRl
clNvdXJjZShhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuYyh1aW50MzJf
dCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVu
Y2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVm
LCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuY1Nl
cGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1h
c2sodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2so
bWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNl
LCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFza1Nl
cGFyYXRlKGZhY2UsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcCh1aW50MzJfdCBm
YWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHN0
ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpm
YWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9w
U2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBh
cmFtKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRl
eFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtMWYobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZnYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9u
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkp
LCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYo
bG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb24sIHgsIHkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNmKGludDMyX3QgbG9j
YXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTNmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2l2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9j
YXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZnYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRp
KGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNw
b3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFs
dWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJp
eDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSks
IHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVzZVByb2dyYW0odWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShhcmcwKTsKKyAgICB9Cisg
ICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
MWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiYmIHZhbHVl
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtl
R0NHTFNwYW48MT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0
YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBm
bG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIy
ZihpbmRleCwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVpbnQzMl90
IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiYmIHZhbHVlcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihp
bmRleCwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVpbnQzMl90
IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiYmIHZhbHVlcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
NGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiYmIHZhbHVl
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtl
R0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0
YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5k
ZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90
IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7
CisgICAgfQorICAgIHZvaWQgdmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52aWV3cG9y
dCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMCh1aW50
MzJfdCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRy
PihhcmcxKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGExKHVpbnQzMl90IHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEsIHVpbnQzMl90IHVzYWdl
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodWludDMyX3Qg
dGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgcmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRf
dCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dM
Y2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAg
IG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlYWRu
UGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAg
ICB2b2lkIHRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBp
eGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1h
Z2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0
KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRl
eFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQz
Ml90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAg
fQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50
MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZp
c29yKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
VmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheSh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weUJ1
ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVp
bnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3
cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ocmVhZE9mZnNldCksIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihh
cmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBWZWN0b3I8R0NHTGNoYXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90
PihkYXRhU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFy
Z2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgYmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qg
c3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMy
X3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsK
KyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgbGF5ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICB9
CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRzKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1l
bnRzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1
aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVu
dHMsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdl
dCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2ht
ZW50cy5kYXRhKCkpLCBhdHRhY2htZW50cy5zaXplKCkpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICB9CisgICAgdm9pZCByZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFy
Z2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAg
IHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QwKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVy
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZv
aWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRl
eEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGlu
dDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4
ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvcHlU
ZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJ
bWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVy
LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBm
b3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYg
ZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9y
bWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNp
emUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGdl
dEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWko
aW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
LCB1aW50MzJfdCB2MikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2Nh
dGlvbiwgdjAsIHYxLCB2Mik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aShpbnQzMl90IGxv
Y2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2
MykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1
aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0z
dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aXYobG9jYXRpb24sIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3Nl
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgy
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3Qg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRh
dGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwgaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRl
eEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwg
ND4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYo
aW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2
YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkodWludDMy
X3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHks
IHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBz
aXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwg
dHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9Cisg
ICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBzdGFydCwg
dWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0
YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzKG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2YWx1
ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3
YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFs
dWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZl
cnVpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdi
dWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSksIHZh
bHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1
ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgZGVwdGgsIHN0ZW5jaWwpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVRdWVyeSh1aW50MzJfdCBx
dWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUXVlcnkocXVlcnkpOworICAg
IH0KKyAgICB2b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
UXVlcnkocXVlcnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJlZ2luUXVlcnkodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5RdWVy
eSh0YXJnZXQsIHF1ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBlbmRRdWVyeSh1aW50MzJfdCB0YXJn
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldCk7CisgICAgfQor
ICAgIHZvaWQgZ2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeU9i
amVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
dWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNhbXBsZXIoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2FtcGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2FtcGxlcih1aW50MzJf
dCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTYW1wbGVyKHNhbXBs
ZXIpOworICAgIH0KKyAgICB2b2lkIGlzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFNh
bXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3Qg
cGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBs
ZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYodWlu
dDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwor
ICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBs
ZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAg
IH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIs
IHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZsYWdzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xzeW5jIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4ocmV0dXJuVmFsdWUpKSk7CisgICAgfQorICAgIHZvaWQgaXNTeW5jKHVpbnQ2NF90
IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5j
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBkZWxl
dGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVN5
bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzAp
KSk7CisgICAgfQorICAgIHZvaWQgY2xpZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMy
X3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jbGllbnRXYWl0
U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTHVpbnQ2ND4odGltZW91dCkpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgd2FpdFN5bmMo
dWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+d2FpdFN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4o
dGltZW91dCkpOworICAgIH0KKyAgICB2b2lkIGdldFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN5bmNpKHJlaW50ZXJwcmV0X2Nhc3Q8R0NH
THN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgIH0KKyAg
ICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9v
bGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmlzVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRUcmFuc2Zv
cm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCk7CisgICAgfQorICAg
IHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1v
ZGUpOworICAgIH0KKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCB0
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+
JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1v
ZGUpOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFy
ZzIgeyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhw
cm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
YXJnMikpOworICAgIH0KKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAg
IHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJC
YXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVm
ZmVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90
IGFyZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQs
IGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHN0YXRpY19j
YXN0PEdDR0xzaXplaXB0cj4oYXJnNCkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1JbmRp
Y2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdW5pZm9ybU5hbWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQ+IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUluZGljZXMocHJvZ3Jh
bSwgdW5pZm9ybU5hbWVzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHBy
b2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4mJiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0lu
ZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrSW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tC
aW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50
MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tC
aW5kaW5nKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0
b3I8R0NHTGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDAp
OworICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3Qq
PihwYXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBz
cmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJf
dCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWlu
dDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwg
c3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0K
KyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVh
dGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWxldGVW
ZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFy
cmF5T0VTKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmlu
ZFZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpbnNl
cnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAg
IHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7CisgICAg
fQorICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQoKTsKKyAgICB9CisgICAgdm9pZCBk
cmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwg
YnVmcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
dWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmlt
Y291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0K
KyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMy
X3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291
bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTHZvaWRw
dHI+KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGlu
ZGV4LCBkaXZpc29yKTsKKyAgICB9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMv
R1BVUHJvY2Vzc01hYy5tbQppbmRleCBiN2JiNjNiMjlhZDgwMjE3MmRmMjdhMTI4OTViYjE5OThm
YTRiNmIwLi4yNGM0MzdjYWFlN2Y4ZjlhOWFmZjkyNzAzZWZjZjlkYTAzMWU0YzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCkBAIC0zMiw4ICsz
Miw4IEBACiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1w
b3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5o
PgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2Vy
dmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1wb3J0IDx3dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDkg
KzQ0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdm9pZCBHUFVQcm9jZXNzOjppbml0
aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJikKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyNp
ZiAwCiAgICAgLy8gSGF2aW5nIGEgd2luZG93IHNlcnZlciBjb25uZWN0aW9uIGluIHRoaXMgcHJv
Y2VzcyB3b3VsZCByZXN1bHQgaW4gc3BpbiBsb2dzICg8cmRhcjovL3Byb2JsZW0vMTMyMzkxMTk+
KS4KLSAgICBPU1N0YXR1cyBlcnJvciA9IFNldEFwcGxpY2F0aW9uSXNEYWVtb24odHJ1ZSk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChlcnJvciwgZXJyb3IgPT0gbm9FcnIpOworICAgIGF1dG8gcmV0dmFs
ID0gQ0dTU2V0RGVueVdpbmRvd1NlcnZlckNvbm5lY3Rpb25zKHRydWUpOworICAgIFJFTEVBU0Vf
QVNTRVJUKHJldHZhbCA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAgIENHU1NodXRkb3duU2VydmVy
Q29ubmVjdGlvbnMoKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBsYXVuY2hTZXJ2aWNlc0NoZWNr
SW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KaW5kZXggZGIwNmU1MzRmN2Y1MWQyZWJk
MDM4MjVmNTgyNDVmODQ5NmY4YjE3OS4uZWQxMDBiMzZlZDZmNDZkNGFhZjYzNTQ0Nzc4ODJhYjc5
M2ExMWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBw
bGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KQEAgLTIwNyw2ICsyMDcsNyBA
QAogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5BQVBMLChEaXNwbGF5UGlwZXxPcGVuQ0xk
aXNhYmxlZHxJT0dyYXBoaWNzX0xFUih8X1JlZ1RhZ18xfF9SZWdUYWdfMHxfQnVzeV8yKXxhbGlh
cy1wb2xpY3l8Ym9vdC1kaXNwbGF5fGRpc3BsYXktYWxpYXN8bXV4LXN3aXRjaC1zdGF0ZXxuZHJ2
LWRldnxwcmltYXJ5LWRpc3BsYXl8c2xvdC1uYW1lKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXkFUWSwoY2JpdHN8ZmJfKGxpbmVieXRlc3xvZmZzZXR8c2l6ZSl8aW50cmV2KSIpCiAg
ICAgKGlva2l0LXByb3BlcnR5ICJBVFksRGV2aWNlTmFtZSIpIDs7IE5lZWRlZCBieSBNZXRhbCBj
b21waWxlcnMKKyAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxFRklEaXNwbGF5IikKICAgICAoaW9r
aXQtcHJvcGVydHkgIkFUWSxGYW1pbHlOYW1lIikgOzsgRGl0dG8KICAgICAoaW9raXQtcHJvcGVy
dHkgIkFWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJCYWNrbGlnaHRIYW5kbGUi
KQpAQCAtMjE3LDYgKzIxOCw5IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJDYXBzTG9ja0RlbGF5
IikKICAgICAoaW9raXQtcHJvcGVydHkgIkNhc2VTZW5zaXRpdmUiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiQ29uZmlnU3RhdGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRFBMYW5lcyIpCisgICAg
KGlva2l0LXByb3BlcnR5ICJEUExpbmtCaXQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRFBMaW5r
UmF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXNjcmlwdGlvbiIpCiAgICAgKGlva2l0LXBy
b3BlcnR5ICJEZXZlbG9wbWVudCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkRldmlj
ZSggQ2hhcmFjdGVyaXN0aWNzfEVxSUQpIikKQEAgLTIyOSwxMCArMjMzLDE3IEBACiAgICAgKGlv
a2l0LXByb3BlcnR5ICJGYW1pbHkgSUQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9yY2VTdXBw
b3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9ybWF0cyIpCisgICAgKGlva2l0LXByb3Bl
cnR5ICJGcmFtZWJ1ZmZlckVuYWJsZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRnJhbWVidWZm
ZXJTdGFydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkdQVUNvbmZpZ3VyYXRpb25WYXJpYWJs
ZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEQ0NEaXNwbGF5YWJsZSIpCisgICAgKGlva2l0
LXByb3BlcnR5ICJHUFVEZWJ1Z051bGxDbGllbnRNYXNrIikKICAgICAoaW9raXQtcHJvcGVydHkg
IkdwdURlYnVnUG9saWN5IikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0NvdW50ZXJCdW5k
bGVOYW1lIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0NvdW50ZXJQbHVnaW5DbGFzc05h
bWUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSEVWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXBy
b3BlcnR5ICJISURQb2ludGVyQWNjZWxlcmF0aW9uVHlwZSIpCisgICAgKGlva2l0LXByb3BlcnR5
ICJId0N0eENhY2hlVXBkYXRlIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9BY2Nl
bChEaXNwbGF5UGlwZUNhcGFiaWxpdGllc3xJbmRleHxUeXBlc3xSZXZpc2lvbikiKQogICAgIChp
b2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JTyhDbGFzc3xNYXRjaENhdGVnb3J5fE5hbWVNYXRjaCki
KQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0F1ZGlvQ29udHJvbChDaGFubmVsSUR8
SUR8U3ViVHlwZXxVc2FnZXxWYWx1ZSkiKQpAQCAtMjgyLDYgKzI5Myw4IEBACiAgICAgKGlva2l0
LXByb3BlcnR5ICJJT1BhcmVudE1hdGNoIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJe
SU9QQ0koKENsYXNzfFByaW1hcnl8UHJvcGVydHl8KU1hdGNofEV4cHJlc3MoQ2FwYWJpbGl0aWVz
fExpbmsoU3RhdHVzfENhcGFiaWxpdGllcykpfE1TSU1vZGV8UmVzb3VyY2VkfFR1bm5lbGxlZCki
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QTUlzUG93ZXJNYW5hZ2VkIikKKyAgICAoaW9raXQt
cHJvcGVydHkgIklPUGVyc29uYWxpdHlQdWJsaXNoZXIiKQorCiAgICAgKGlva2l0LXByb3BlcnR5
LXJlZ2V4ICMiXklPUGxhdGZvcm0oU2VyaWFsTnVtYmVyfFVVSUQpIikKICAgICAoaW9raXQtcHJv
cGVydHkgIklPUG93ZXJNYW5hZ2VtZW50IikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUHJvYmVT
Y29yZSIpCkBAIC0zMTcsNiArMzMwLDcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIlByb3RvY29s
IENoYXJhY3RlcmlzdGljcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJSZW1vdmFibGUiKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5SZXNldE9uKExvY2t8VW5sb2NrKU1zIikKKyAgICAo
aW9raXQtcHJvcGVydHkgIlNXSVBfcHJvcGVydGllcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJT
YWZlRWplY3RSZXF1ZXN0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2FtcGxlUmF0ZXMiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiU2VyaWFsIE51bWJlciIpCkBAIC0zMzgsNiArMzUyLDcgQEAK
ICAgICAoaW9raXQtcHJvcGVydHkgImF0dGFjaGVkLWdwdS1jb250cm9sLXBhdGgiKQogICAgIChp
b2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5hdWRpby0oY29kZWMtaW5mb3xkZXZpY2UtbXZhbHVlfGRl
dmljZS1udmFsdWV8c2VsZWN0b3IpIikKICAgICAoaW9raXQtcHJvcGVydHkgImF2LXNpZ25hbC10
eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgImJhY2tsaWdodC1QV00tZnJlcSIpCiAgICAgKGlv
a2l0LXByb3BlcnR5ICJiY2RWZXJzaW9uIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJe
KGJvYXJkfGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW18dmVuZG9yKS1pZCIpCiAgICAgKGlva2l0
LXByb3BlcnR5ICJib290LWdhbW1hLXJlc3RvcmVkIikKQEAgLTM1MCw2ICszNjUsMTEgQEAKICAg
ICAoaW9raXQtcHJvcGVydHkgImNvbm5lY3Rvci10eXBlIikKICAgICAoaW9raXQtcHJvcGVydHkt
cmVnZXggIyJeKGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW0tdmVuZG9yfHRvdWNoLXNpemUpLWlk
IikKICAgICAoaW9raXQtcHJvcGVydHkgImRldmljZV90eXBlIikKKyAgICAoaW9raXQtcHJvcGVy
dHkgImRpc3BsYXktYnBjIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktY29ubmVjdC1m
bGFncyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWxpbmstY29tcG9uZW50LWJpdHMi
KQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1waXhlbC1jb21wb25lbnQtYml0cyIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
ZHBtIikKICAgICAoaW9raXQtcHJvcGVydHkgImVycm9yZGIiKSA7OyBOZWVkZWQgZm9yIE9wZW5H
TCBvbiBvbGRlciBoYXJkd2FyZQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZmlsZXZhdWx0LWltYWdl
IikgOzsgTmVlZGVkIGJ5IExhdW5jaFNlcnZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IDZhNWM2NzI1Y2Fh
OWJkYjg2N2FiODZiOGM1N2YzNmRlMmM4OTZkY2YuLmJlN2Y1MjIwYmU5Yjg1Zjg2OGE1ZjgzN2Vm
ZWQ2NmRkZjk1ZjI5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zOSwxMCArMzksNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90
ZUxlZ2FjeUNETVByb3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDQ3ZjVkMmYy
NzBmYTVkZTRmYWRlMTUxNDQ0MjExMTc5NGVkMzZkMjguLjJjNWU3ZGU3ZDJlNzU2OTYwYTNmM2Vj
ODc2YzhiODI1YzZlNDViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNE
TS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKaW5kZXggYTk4Y2ZhNGM5ZjgwMjMxOTA0Zjhl
ZjBlYWE5MzYyMjlhZmE5NzU5OC4uZmVjNjVjZjYyYjY2NzRiODMwMGM1MGNkNDMzNDE1ZTkxNTEx
NDQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKaW5kZXggZDg5YjgwM2Y2YWJm
NDFjOGU5ZWRkZTQxNDI3NjkzMjgyNmQxYjMzOC4uMDgxZWIzMTgwZDAyMTY0YjVhYTNkNTQ4MDZm
NzJjN2VkYzBjYjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKQEAgLTI3LDE1ICsyNywxNiBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL1BvbGljeUNoZWNrZXIuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhU291cmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKaW5kZXggNmJmYmZhZmIyMDQ0NzgzMGQ3MzBjMzhj
NTVkOTE2MDIyYzIzZDMxNi4uMDZlMzA5ZTRkNTdlYTA0N2Y1ZWQ4MjkwMjU4YjE5Y2JjZGE2MTky
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
U291cmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5oCkBAIC0zOCw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKaW5kZXggMjQ1Y2Y0MGRm
YzZmYzcyNDE3NDk5Yzk5NmVlYTk1ZjBhM2E4ZDY5YS4uODY4MmNkNzk1YTVmNTQ0YWJiNzhlN2Mx
Yjg1ODdiOTY4ODNmOTQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlU291cmNlQnVmZmVyUHJveHkuaAppbmRleCAzOTBjMGNlMWMyN2I2MDhkYzk3YWFmYTUxODYz
NjE4ODBjM2FmNGQzLi5jMzM3ODMzM2MwMjY2NmRhNjFhYmFjNjQ5NDcwMjEyMWRiNWU4NmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVm
ZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuaApAQCAtMjcsOSArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5o
IgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgpAQCAtMzgsNyArNDAsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaAppbmRleCAzNjAzMTBiN2QxMjFkMjg2ZDhkMTYxZjE4M2FiZDBlNzQ1
YjgzNTMzLi44NDNiYjA2ZjdiNTZjNmUzY2ZiZWU3OWE3ZTQyODFlZmVlOGY5YTc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5oCkBAIC0yOCwxNCArMjgsMTUgQEAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9S
TShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGY4YWJjMWY0MDVmYzE0Njk0
NzViNGQ5MGJhZDNkNTNjYTBmODAxNGUuLjYxYzQ3MDhhZTk2ZGJjYWE1Njk4MDllZTE5OTViZTgx
NmE5MWZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNFKExJ
QldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2lt
cG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIkxpYldl
YlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5kZXggNzg4YzVmMDBjMDJmNGYx
NDhmZWVjY2QzOGQxMDY4MThiMGQ3ZTk2MS4uM2FiNGU0YjFjZjFjMTQxMjMwYzEzZTQ1NzZjNWVk
NmU2ZWZjMmVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC0zNiw3ICszNyw2IEBA
CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCmluZGV4IDdhNjMzNjM0
N2MwMDdlOTdiNzNiNTQzNzc0OTE2ODM4ZDY0MDM3ZGEuLjFhYTUzY2MyZmI3N2JhZjllMzI2NTA3
MjEwODA5ZmQ3NmNmYmJmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0Nv
Y29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ci5oIgogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKICNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCmluZGV4IGY2ZWQ4MTFmNTM0MmZlNDg1NTUxNzZm
ODlkNTE0NTc1NjJjNjY1ODUuLjBiY2Q1NjczYzkzNDZhZGExMWQ2NTZjM2FkZDUxYmU0ZWRiYzI3
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIK
QEAgLTM5LDEwICs0MCw2IEBAIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbjsK
IE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbDsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19IC8vIG5hbWVzcGFjZSBJUEMKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAg
LTExMiw0ICsxMDksMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCBkZGJlNGVlZGQ0NDFkZjg3YzU1YWQzMzBmMDQyY2NkY2ZhZGZiOTBiLi42NTFm
ZjI1NGY5MDVjMTZhOTBjYjQ4MmM5NzczZDRhYzc0Mjk0ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNb25pdG9yLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuaAppbmRleCAzOGFmMzUwODA3NDY0MjkzYjk1ZmZhZjA1OWZkZWMzNjkwMTc3
Mjc0Li45M2YwM2E4MjU1ZjFhZTcxNzM4M2MwMDI5MGEyNGY5MWNhN2M2NTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgog
I2luY2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgpAQCAtNDQsMTAgKzQ1LDYgQEAgT0JKQ19DTEFT
UyBOU1Byb2dyZXNzOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7CiAjZW5k
aWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2MzQwZjI3YzE2
MDVjM2NkNzRiYzY5MDdiN2Q5MWI0N2I3NjIuLjcyNmRkOTkwYmFmZDQzOTRiNWFmYzAzMmExY2Yy
MGYxODQ5YzQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogCi0jaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuaAppbmRleCAyY2QxNjFiMGFjM2U3ODllMjI0NmMwNWIwMTY1ZjFjNzI2Nzhm
YTUwLi45ODBhMDZmNzgzOWRiZDVlOWY5ZDUwNDU0MDlhMzNkNzdiMWMwMzg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKQEAgLTQ5LDcgKzUwLDYgQEAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDQ0OWIxM2Q4ZTA3YjJjZDA0MmM0YmEzNjM2YWI3OTNkMzdiMWMzZjQuLmM3Nzg4
ODExZjAzMmQ1OGY4YjUyNzczNmUxZDIyNzg0MTBmOTEzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENo
YW5uZWwuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAppbmRleCAzMTk2NDE5MGQxNDFkNTQ5ZGEw
YmFmMmRjOGJmMjk3YjRlNTgxZTg5Li4wNDM0YmY4ODA5YTdlYjNlY2MxOGU4ZjY1MGNjMDI3OGFl
NmViNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CkBAIC00
MCw3ICs0MSw2IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDViNDg5Y2M1MzhmN2MwNzE1MTAxMDZj
NThmNWMwOTRlYzlhOGUxYjguLjQ4Yzg4M2JmYzBmYzdkNTAxYzhhNGE0ZTc2ODRjY2MzM2UzOGMx
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW0uaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUg
IldlYlNvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAppbmRleCA1MmVjMzkyNjkwMjE4ZWRlNjY4ZDU1ZTYz
OGQ4ZTE3NTAyZmQ2ZWU1Li43MzQyOWEwMjc5MDZiNDE2YTM4YzBjNmIzOTQ2YTBkYjlmYjIwNmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1FcnJvci5oPgpA
QCAtMzcsNyArMzgsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xh
c3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggZDMzY2JmZjEwODlj
YzEwNWRkMWEwMGJlYmZkZjYxZDMzYzdmNjZiZC4uZDM3ZDc4MDY5ODNiYmE1NDdjYTBmOTIzNWVi
NGJmNmI3MzE1NjVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KQEAgLTQzLDcgKzQ0LDYgQEAgY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVy
ZW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29j
a2V0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgK
aW5kZXggZGI1Nzk1ZGQyMTdmNDVhZDVmNjdlMzBiNzkxZjkyZTI3NmMwMjk4Ni4uOTYxZTQ2NDU5
YmU3NzE3N2UyNjA1ZTdkODY1MmFkYTgwMjA5N2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKQEAgLTMxLDkgKzMxLDYgQEAKICNpbmNsdWRlICJX
ZWJTb2NrZXRUYXNrU291cC5oIgogI2Vsc2UKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKaW5kZXgg
ZGFjNjkzNTA3ZWIzZWZjZWE2ZDEwOTQ4MDFiYzAxYjM2ZmUyNjM5ZC4uZTY4MjZlNDdlODM5NTk0
MDI4YWY4ZjRhZWQyMzkyYjRiMDVkMmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCkBAIC0yNywxNSArMjcs
MTIgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNrOwogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgTmV0d29ya1Nlc3Npb247CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRU
YXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5tbQppbmRleCA4NTUzNDg3NDQwNGNlMmJhYTQ0YWU2NTY1NDdkMzcyMjUzMzJl
YWI4Li45MGJjNDA5YmZmYjcwYTBlZTllNzM1OGIzODY3NTk3ZDI5ZjI0ZTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tD
b2NvYS5tbQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09D
S0VUKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lv
bkNvY29hLmgiCiAjaW1wb3J0ICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogI2ltcG9ydCA8Rm91
bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCmluZGV4IDQ1ZmM2NjlkNzY2YTc2
MWM1ZDc3M2RjOTVmMDU0MWEzOGUzNmY4ZTMuLmEzZTcwMTRiNWQ4ZWMwOTczOGZmYTdkNTY2NDU0
NTAxMGYwNTM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAKLSNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUFBhcnNlcnMuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRh
c2tTb3VwLmgKaW5kZXggZTQyMWI5ZTFjNzEzMTg0MzRmNjQ4N2Y1ZmNiNWE2YTg3YmQ3MzkxOS4u
MDg4OTIzOTU5ZmU0NjBmZjJiYmE0YzhjMDgzOTk4MDY1N2JmMzQ4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKQEAg
LTI1LDE0ICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtT
b2NrZXRDaGFubmVsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAppbmRleCBlMDBhMGNjZGZhNTg3NWMwMjhjNTA1MjMxMTQxNzI4ZWU5NWI0MzkyLi5lMzhi
YzFjNjBhZjZkY2YwMzY5NjVhYTc4YWFkYmQ2ZDhkNGI2MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIu
aCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTUzLDYgKzU0
LDQ4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVyIHsK
ICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+PiB7CisgICAgdXNpbmcgQXJy
YXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50PjsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBh
cnJheVJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIGlmICghRXh0ZW50KQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVy
ZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KKyAgICBzdGF0aWMg
T3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICB7CisgICAgICAgIGlmICghRXh0ZW50KQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJl
bmNlVHlwZSgpOworICAgICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aFJlZmVyZW5jZShFeHRlbnQgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAg
ICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRh
dGEpLCBFeHRlbnQpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBB
cmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVu
dD4+IHsKKyAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBh
cnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQor
ICAgIHsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5
UmVmZXJlbmNlLnNpemUoKSkpOworICAgICAgICBpZiAoIWFycmF5UmVmZXJlbmNlLnNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgp
KSwgYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9
CisgICAgc3RhdGljIE9wdGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgeworICAgICAgICB1aW50NjRfdCBzaXplOworICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZSgp
OworICAgICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aFJlZmVyZW5jZShzaXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICAgICAgaWYgKCFk
YXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFy
cmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRhKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzaXplKSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8T3B0aW9uU2V0PFQ+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNl
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNkMzJiYjQ1N2E1Yjg4NWYzZDU2Njg3ZTc5ZjE1YzNhMjY3MWJlNjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCkBAIC0w
LDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxsaW1p
dHM+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSVBDIHsKKworaW5saW5l
IGNvbnN0ZXhwciBzaXplX3QgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50ID0gc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVf
dCBFeHRlbnQgPSBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVy
ZW5jZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZTxULCBh
cnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+IHsKK3B1YmxpYzoKKyAgICBBcnJheVJlZmVyZW5j
ZSgpID0gZGVmYXVsdDsKKworICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFQqIGRhdGEsIHNpemVf
dCBzaXplKQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgICAgICAsIG1fc2l6ZShzaXplKQor
ICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAg
IEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikK
KyAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKKyAgICAgICAgLCBtX3NpemUodmVjdG9y
LnNpemUoKSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIW1fc2l6ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsK
KyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxUPiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBtX3NpemUpOwor
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQq
IG1fZGF0YSB7IH07CisgICAgc2l6ZV90IG1fc2l6ZSB7IH07Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlIHsKK3B1YmxpYzoK
KyAgICBBcnJheVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIEFycmF5UmVmZXJlbmNlKGNv
bnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBBcnJheVJlZmVyZW5jZShj
b25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCisgICAgICAgIDogbV9kYXRh
KHZlY3Rvci5kYXRhKCkpCisgICAgeworICAgICAgICBBU1NFUlQodmVjdG9yLnNpemUoKSA9PSBF
eHRlbnQpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhRXh0ZW50OyB9CisKKyAgICBjb25zdGV4cHIgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBFeHRlbnQ7IH0KKworICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIFZlY3RvcjxUPiB2ZWN0b3IoKSBjb25zdAorICAg
IHsKKyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKKyAgICAgICAgaWYgKCFpc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgRXh0ZW50KTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVCogbV9kYXRhIHsgfTsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KK0FycmF5UmVm
ZXJlbmNlKGNvbnN0IFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEFycmF5UmVm
ZXJlbmNlPFQ+OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAppbmRleCBlYzNkMTRhZThmM2VjMjQ3MDU0NzYzY2FlZTkwOWNjMmM4NzVm
NWQ4Li5iYmQ3YWJjYjRjZGM2MDQzODJiMTA2NWUzMzIzODQ0OWM2YWM1OTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0yMjcsMTAgKzIyNywxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKTsK
IAogICAgIHZvaWQgcG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgp
OwotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4gdm9pZCBzZW5kV2l0aEFz
eW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVz
dGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxTZW5kT3B0aW9uPiA9IHsgfSk7IC8vIFRocmVhZC1z
YWZlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0g
eyB9KTsgLy8gVGhyZWFkLXNhZmUuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9u
U2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVh
ZCBvbmx5LgorICAgIC8vIFN5bmMgc2VuZGVycyBzaG91bGQgY2hlY2sgdGhlIFNlbmRTeW5jUmVz
dWx0IGZvciB0cnVlL2ZhbHNlIGluIGNhc2UgdGhleSBuZWVkIHRvIGtub3cgaWYgdGhlIHJlc3Vs
dCB3YXMgcmVhbGx5IHJlY2VpdmVkLgorICAgIC8vIFN5bmMgc2VuZGVycyBzaG91bGQgaG9sZCBv
biB0byB0aGUgU2VuZFN5bmNSZXN1bHQgaW4gY2FzZSB0aGV5IHJlZmVyZW5jZSB0aGUgY29udGVu
dHMgb2YgdGhlIHJlcGx5IHZpYSBEYXRhUmVmZXJlcmVuY2UgLyBBcnJheVJlZmVyZW5jZS4KKyAg
ICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPjsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlv
bj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIAogICAg
IC8vIFRocmVhZC1zYWZlLgpAQCAtMjQ5LDcgKzI1MSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1h
aW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAg
ICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBP
YmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29u
ZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25z
ID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmRT
eW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpAQCAtNTUxLDcgKzU1
Myw3IEBAIHZvaWQgbW92ZVR1cGxlKHN0ZDo6dHVwbGU8QS4uLj4mJiBhLCBzdGQ6OnR1cGxlPEIu
Li4+JiBiKQogICAgIFR1cGxlTW92ZXI8c2l6ZW9mLi4uKEEpLCBzdGQ6OnR1cGxlPEEuLi4+LCBz
dGQ6OnR1cGxlPEIuLi4+Pjo6bW92ZShXVEZNb3ZlKGEpLCBiKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IENvbm5lY3Rpb246OnNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zKQogewogICAgIENPTVBJTEVfQVNTRVJUKFQ6OmlzU3luYywgU3luY01lc3NhZ2VF
eHBlY3RlZCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTcw
LDE1ICs1NzIsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJgogICAgIC8vIE5vdyBzZW5kIHRo
ZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92
ZShlbmNvZGVyKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICBpZiAoIXJlcGx5RGVj
b2RlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
Ly8gRGVjb2RlIHRoZSByZXBseS4KICAgICBPcHRpb25hbDx0eXBlbmFtZSBUOjpSZXBseUFyZ3Vt
ZW50cz4gcmVwbHlBcmd1bWVudHM7CiAgICAgKnJlcGx5RGVjb2RlciA+PiByZXBseUFyZ3VtZW50
czsKICAgICBpZiAoIXJlcGx5QXJndW1lbnRzKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgbW92ZVR1cGxlKFdURk1vdmUoKnJlcGx5QXJndW1lbnRzKSwg
cmVwbHkpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiByZXBseURlY29kZXI7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyMjVmZGE3YmVkMmZlOGM0MDQ5YjU1ODcwNzlmZDFlMTYzNTRmNGZhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RhdGFSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
Ci0KLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgotCi1uYW1lc3Bh
Y2UgSVBDIHsKLQotdm9pZCBEYXRhUmVmZXJlbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKLXsKLSAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KCp0aGlz
KTsKLX0KLQotYm9vbCBEYXRhUmVmZXJlbmNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKLXsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVW
YXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVmZXJlbmNlKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJl
bmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKaW5kZXgg
MzQ1MGMzMWI3M2RkYjZhYTVlZGNlMmFmODAwMjk4ODdjNzk4ZTIwNS4uZGJiM2Q2OTI3ZjM0MWM1
YWE5M2ZjMTA3M2NiMDc1NmUzY2JhMzdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RhdGFSZWZlcmVuY2UuaApAQCAtMjUsNTQgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAKIG5h
bWVzcGFjZSBJUEMgewogCi1jbGFzcyBEZWNvZGVyOwotY2xhc3MgRW5jb2RlcjsKLSAgICAKLWNs
YXNzIERhdGFSZWZlcmVuY2UgewotcHVibGljOgotICAgIERhdGFSZWZlcmVuY2UoKSA9IGRlZmF1
bHQ7Ci0KLSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAgICAgICAsIG1fc2l6ZShzaXplKQotICAgIHsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAgRGF0YVJl
ZmVyZW5jZShjb25zdCBWZWN0b3I8dWludDhfdCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCi0g
ICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCi0gICAgICAgICwgbV9zaXplKHZlY3Rvci5z
aXplKCkpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX3NpemU7IH0KLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IAotICAgIHsgCi0gICAgICAgIGlmIChp
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1f
ZGF0YTsgCi0gICAgfQotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcigpIGNvbnN0Ci0gICAg
ewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgICAgICByZXN1bHQuYXBwZW5k
KG1fZGF0YSwgbV9zaXplKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBEYXRhUmVmZXJlbmNlJik7Ci0KLXByaXZhdGU6Ci0g
ICAgY29uc3QgdWludDhfdCogbV9kYXRhIHsgbnVsbHB0ciB9OwotICAgIHNpemVfdCBtX3NpemUg
eyAwIH07Ci19OwordXNpbmcgRGF0YVJlZmVyZW5jZSA9IEFycmF5UmVmZXJlbmNlPHVpbnQ4X3Qs
IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA3OGE0NjM4ZWI3MzA1YmZkMTkx
MDg3MDY4ZDMwYmNkYjhkZmU4MmFlLi4yY2I3OWI3MzFjOGQzNTFhMmQwNTk0NjM2MmM1YWI4YmJh
ZGJkYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtMTg2LDIw
ICsxODYsMTUgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBEZWNvZGVyOjpkZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJl
bmNlJiBkYXRhUmVmZXJlbmNlKQorY29uc3QgdWludDhfdCogRGVjb2Rlcjo6ZGVjb2RlRml4ZWRM
ZW5ndGhSZWZlcmVuY2Uoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCiB7Ci0gICAgdWlu
dDY0X3Qgc2l6ZTsKLSAgICBpZiAoIWRlY29kZShzaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbigxLCBzaXplKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbihhbGlnbm1lbnQsIHNp
emUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEg
PSBtX2J1ZmZlclBvczsKICAgICBtX2J1ZmZlclBvcyArPSBzaXplOwogCi0gICAgZGF0YVJlZmVy
ZW5jZSA9IERhdGFSZWZlcmVuY2UoZGF0YSwgc2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGRhdGE7CiB9CiAKIGJvb2wgRGVjb2Rlcjo6cmVtb3ZlQXR0YWNobWVudChBdHRhY2ht
ZW50JiBhdHRhY2htZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IGI3
MmRkOGFjZTI3NzNkYjM1NTllMzY2ZGQ5NTI0ZjIzNDFlNTVlMDYuLjM0NGNlNjg4MmZjOTA5ODRi
MmZhNTdiZjljNDhiOTY1MGUwZmY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmgKQEAgLTQwLDcgKzQwLDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CiBjbGFzcyBJbXBvcnRhbmNlQXNzZXJ0aW9uOwogZW51bSBjbGFzcyBNZXNzYWdlRmxh
Z3MgOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5IDogdWludDhfdDsKQEAgLTc4LDggKzc3LDkgQEAgcHVibGljOgogCiAgICAgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKLSAgICAvLyBUaGUgZGF0YSBpbiB0aGUgZGF0YSBy
ZWZlcmVuY2UgaGVyZSB3aWxsIG9ubHkgYmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUg
QXJndW1lbnREZWNvZGVyIG9iamVjdC4KLSAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlJik7CisgICAgLy8gVGhlIGRh
dGEgaW4gdGhlIHJldHVybmVkIHBvaW50ZXIgaGVyZSB3aWxsIG9ubHkgYmUgdmFsaWQgZm9yIHRo
ZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNvZGVyIG9iamVjdC4KKyAgICAvLyBSZXR1cm5z
IG51bGxwdHIgb24gZmFpbHVyZS4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gY29uc3QgdWludDhf
dCogZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0
aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoVCYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCmlu
ZGV4IGZkNDA5MDc3NGIyYmMyYTc2MjliOWMwMmRjNTU0YzRjZGM5OGY1Y2IuLmU4M2EzZTRhZmY0
MmE1NzU1MDVkYzhmMDczMTdhMWMxYWMxOWRlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0VuY29kZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgpAQCAtMTQxLDcgKzE0Miw3IEBAIHZvaWQgRW5jb2Rlcjo6d3JhcEZvclRlc3Rp
bmcoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IG9yaWdpbmFsKQogCiAgICAgb3JpZ2luYWwtPnNl
dFNob3VsZERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5KFNob3VsZERpc3Bh
dGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk6Olllcyk7CiAKLSAgICBlbmNvZGVWYXJpYWJsZUxl
bmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlKG9yaWdpbmFsLT5idWZmZXIoKSwgb3JpZ2luYWwt
PmJ1ZmZlclNpemUoKSkpOworICAgICp0aGlzIDw8IERhdGFSZWZlcmVuY2Uob3JpZ2luYWwtPmJ1
ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKTsKIAogICAgIFZlY3RvcjxBdHRhY2htZW50
PiBhdHRhY2htZW50cyA9IG9yaWdpbmFsLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKICAgICByZXNl
cnZlKGF0dGFjaG1lbnRzLnNpemUoKSk7CkBAIC0yMTYsMTIgKzIxNyw2IEBAIHZvaWQgRW5jb2Rl
cjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
LCBzaXplX3QgYWxpCiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQg
RW5jb2Rlcjo6ZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKLXsKLSAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGRh
dGFSZWZlcmVuY2Uuc2l6ZSgpKSk7Ci0gICAgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGFSZWZl
cmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgMSk7Ci19Ci0KIHZvaWQgRW5jb2Rl
cjo6YWRkQXR0YWNobWVudChBdHRhY2htZW50JiYgYXR0YWNobWVudCkKIHsKICAgICBtX2F0dGFj
aG1lbnRzLmFwcGVuZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0VuY29kZXIuaAppbmRleCAwZWNmNTQxZjc3ODU4NTM2ZjFmY2ZhODM2Yjc2ZjI0ODJlNGM5YTEx
Li5lYTYxOTY3YmUxZWJjYmQ4YjZmYmJhYThiODVhZjQxOGU4ZDUwY2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC0zNiw3ICszNiw2IEBACiAKIG5hbWVzcGFjZSBJUEMg
ewogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwogZW51bSBjbGFzcyBNZXNzYWdlRmxhZ3MgOiB1aW50
OF90OwogZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBTaG91
bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdDsKQEAgLTYyLDcgKzYx
LDYgQEAgcHVibGljOgogICAgIHZvaWQgd3JhcEZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPEVu
Y29kZXI+KTsKIAogICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7Ci0gICAgdm9pZCBlbmNvZGVWYXJpYWJs
ZUxlbmd0aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZSAmJiAhc3Rk
Ojppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVf
cmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgdm9pZCBlbmNvZGUoVCYm
IHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXggN2Zk
MTgzYTU2YWU5OGIwNjY0NWZmNzUxNDhhYzI5ODNjNTJlNGFlYi4uNDEyOWQ0ZTJiNDlkNWM4ZmM0
MWEyZDY1NGFkY2Q4OWU4NmM2MzdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKQEAgLTk2LDcgKzk3LDYgQEAgc3RydWN0IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYgc3Rk
OjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07CiAK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwog
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29kaW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlJj4gewogICAgIHVzaW5nIFR5cGUgPSBEYXRhUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IDQ2ZTIxZDhkOTM2ZjJkOGI1MTY3YjI0
OWY4ODExMTZmZmViN2Q0YjkuLjc3NDYxZDU1NWI3MjkyYzIwZWJmNTE0YTMwMmQxZGM2ZTc3NzAx
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTU0
LDkgKzU0LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kPFU+KG1lc3Nh
Z2UsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2VuZE9wdGlvbnMpOwogICAgIH0KKyAgICB1
c2luZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0
eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAg
ICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0
PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBz
dGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgbm90IHN5bmMhIik7CiAKQEAgLTY0
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0g
ICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisg
ICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29u
ZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25z
ID0geyB9KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkp
OwogCkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVLCB0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFU6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5j
T3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5
bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZp
ZXI8VD4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHko
KSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAg
ewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VT4oc3RkOjpmb3J3YXJkPFU+KG1lc3NhZ2UpLCBX
VEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3lu
Y09wdGlvbnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKaW5kZXggN2EzY2IzMzg3NjM2ZGNhZmNlYWNlYWQ5MWI4NjM5YjdiYTc2
MzZjNi4uNTAwZjgzOWRmYWFlOTI5N2Y0ZGM2M2RjNjYzMDU4NzdiMjJkZjJmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpAQCAtNDgs
NyArNDksNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogT3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGEpKQorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5jcHAKaW5kZXggMmY3Mjg1YWMwYjRiZDZkZTExZGZlYjlmZTMyOGYwMWM5OTk5
NTBhMC4uZTk2ZGZiMWZiZjg5MWNkNGEwYzc3NGU4NWM5MDc4NzU4YTZmZTgyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcAppbmRleCA4NTJlZjQzZTAw
ODYzMWM5ZmFmYTgyMzBjOTE5YzE3YTlkNGEyOWI2Li4yMTYxMTM5YzMwMTRmMGVhZmIzZGM0N2M4
NWRhNDE5MGEyYmEwNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJpbmdSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmlu
Z1JlZmVyZW5jZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNs
dWRlICJFbmNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDhiMzc0MGY0YjEwMWFkOTBmNTBlZDU3Yzg1
MGI5MDMwZmNjNDMwYzIuLjRiMjBjODVhYzUzNjIzNjQwM2E4M2VhOTczY2RjY2QxMGZkZjcyZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOUE9iamVj
dFByb3h5LmgiCiAjaW5jbHVkZSAiTlBSZW1vdGVPYmplY3RNYXAuaCIKICNpbmNsdWRlICJOUFJ1
bnRpbWVVdGlsaXRpZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCBhZDRmY2Q5ZDhjY2Y0MmYxMmVlNDg4ZTAxMzQ2
YzYxOWE3MDFiOGQyLi5jN2E3MDUzY2JkMjZkMjA0NTRjMDQyYzZhY2UxNmNiNTI1MzBmNDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKQEAgLTM3LDEwICszOCw2IEBACiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotbmFtZXNwYWNlIElQ
QyB7Ci0gICAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIExheWVySG9zdGluZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCA1NzNlZDNkOGVlOWJiZjQxMDMxNjhlNzlhMDU3ZjlkYmRiOWI4Njk1
Li42NzMyNDRhNjdlMDk5ZmZiNzE4MDdkNTU1MGM0NTRmMzYzMWRiMTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIwMyw2ICsyMDMsNyBAQCBkZWYgZm9y
d2FyZF9kZWNsYXJhdGlvbnNfZm9yX25hbWVzcGFjZShuYW1lc3BhY2UsIGtpbmRfYW5kX3R5cGVz
KToKIAogZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICBy
ZXR1cm4gZnJvemVuc2V0KFsKKyAgICAgICAgJ0lQQzo6RGF0YVJlZmVyZW5jZScsCiAgICAgICAg
ICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcn
LApAQCAtMjE0LDYgKzIxNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcycsCiAgICAgICAgICdXZWJDb3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIn
LAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKQEAgLTI0Myw2ICsy
NDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
ICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAgICAnV2ViS2l0OjpHZW9sb2NhdGlvbklkZW50aWZp
ZXInLAorICAgICAgICAnV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUnLAogICAgICAgICAnV2ViS2l0
OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpMZWdhY3lDdXN0b21Q
cm90b2NvbElEJywKQEAgLTUzMCw2ICs1MzMsNyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVhZGVy
cyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAgICAnT3B0aW9uU2V0JzogeydoZWFkZXJzJzogWyc8
d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50
Q29kZXJzLmgiJ119LAogICAgICAgICAnVmVjdG9yJzogeydoZWFkZXJzJzogWyc8d3RmL1ZlY3Rv
ci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119
LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3Vt
ZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKKyAgICAgICAgJ0lQ
Qzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRlcnMnOiBbJyJBcnJheVJlZmVyZW5jZS5oIiddLCAn
YXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgIH0K
IAogICAgIG1hdGNoID0gcmUubWF0Y2goJyg/UDx0ZW1wbGF0ZV9uYW1lPi4rPyk8KD9QPHBhcmFt
ZXRlcl9zdHJpbmc+LispPicsIHRlbXBsYXRlX3N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElEYXRhLmNwcAppbmRleCA2MTM0M2JkOTQxMDZiNmU3ODlmODNiYzI1ZGU3OWY3YTYwNDA5M2Nj
Li5jNzgyMzE2ZjMwNTdhM2NhZjlkM2UyMDc3YzgxMzI1NTNlNjk3NTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggN2JhMjA3YWJiMGFjY2M4YTU3MGY1YzY2
M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdkMDNmYWZlMDM5NTg3OTUyYTYzNzhkMWE5YzhmZjJmNzkx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtODQsNyArODQs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzRGFlbW9u
KCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsKICAgICB2b2lkIHNldFFPUyhp
bnQgbGF0ZW5jeVFPUywgaW50IHRocm91Z2hwdXRRT1MpOwogI2VuZGlmCkBAIC0xODQsNCArMTgz
LDMgQEAgc3RydWN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBiYjQw
NmMyY2ZiZGUxMTNlOWIuLmRhMzczNGM4NGQ2NTRkOGQwM2NhNzkyNWY3YmQ3NTk5MTNiYzM0YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApA
QCAtMzIyMSw0ICszMjIxLDgyIEBAIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6CiAgICAgcmV0dXJu
IHsgV1RGTW92ZSgqcmVzdWx0KSB9OwogfQogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKK3sKKyAgICBlbmNvZGVyIDw8
IGF0dHJpYnV0ZXMuYWxwaGE7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRlcHRoOworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5zdGVuY2lsOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRl
cy5hbnRpYWxpYXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBo
YTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyOworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2U7CisgICAgZW5jb2RlciA8PCBh
dHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5pc1dl
YkdMMjsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zOworICAgIGVuY29k
ZXIgPDwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvOworICAgIGVuY29kZXIgPDwgYXR0cmli
dXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNlOworI2lmIEVOQUJMRShXRUJYUikKKyAgICBlbmNv
ZGVyIDw8IGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlOworI2VuZGlmCit9CisKK09wdGlvbmFsPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYWxwaGEpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5kZXB0aCkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLnN0ZW5jaWwpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbnRpYWxpYXMpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVk
QWxwaGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5mYWlsSWZN
YWpvclBlcmZvcm1hbmNlQ2F2ZWF0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0
ZXMuc2hhcmVSZXNvdXJjZXMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5pc1dlYkdMMikpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLm5vRXh0ZW5z
aW9ucykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5pbml0aWFsUG93ZXJQ
cmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VC
WFIpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZSkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKyAgICByZXR1cm4gYXR0cmlidXRl
czsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiBhY3RpdmVJbmZvKQoreworICAgIGVuY29kZXIgPDwg
YWN0aXZlSW5mby5uYW1lOworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby50eXBlOworICAgIGVu
Y29kZXIgPDwgYWN0aXZlSW5mby5zaXplOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFjdGl2ZUluZm87CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLm5hbWUpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby50eXBlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUlu
Zm8uc2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGFjdGl2
ZUluZm87Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNGE5MzIxNTkxMzBjYjdiY2Rl
NTVlMjExZTE3YzRiZWRlZjE3MDVkNi4uMWRhZTk2OTVmMzNjMDlkY2Q3YzU4MDM2MDhlMmQ2YWMx
NmU5ZmM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKQEAgLTcxLDYgKzcxLDEzIEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNHdGsuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisjaW5jbHVk
ZSAiQXJyYXlSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdM
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzVHlwZXNHTC5oPgorI2VuZGlmCisKICNpZiBQTEFURk9S
TShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTIwMyw2
ICsyMTAsMTAgQEAgc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YTsKIHVzaW5nIElEQktl
eVBhdGggPSBWYXJpYW50PFN0cmluZywgVmVjdG9yPFN0cmluZz4+OwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKK3N0cnVjdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM7CisjZW5kaWYKKwogbmFtZXNwYWNlIERPTUNhY2hlRW5naW5lIHsKIHN0
cnVjdCBDYWNoZUluZm87CiBzdHJ1Y3QgUmVjb3JkOwpAQCAtODczLDYgKzg4NCwxOSBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24+IHsKIH07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7Cisg
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4g
ZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMDQxLDQgKzEwNjUsMTYgQEAgdGVtcGxh
dGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM+
IHsKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xQb3dlclByZWZlcmVuY2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwKKyAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSwKKyAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCwKKyAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXIsCisgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZQorICAg
ID47Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBjZjEzMWE5MjFl
MDg2MzY1ZGJmNzdmYTk4ZTQxYzFjNzRhM2U3ZTI1Li5hZGQ5NDliYTUwOGQ4ZTgxNDA4N2ZlZGU3
YjA0OGEzZGVjNmNmODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTU4LDYgKzE1OCw5IEBAIHZvaWQgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzczsKICAgICBlbmNvZGVy
IDw8IHNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzczsKICAgICBlbmNvZGVyIDw8IHNob3VsZFBs
YXlNZWRpYUluR1BVUHJvY2VzczsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgZW5jb2RlciA8PCBz
aG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzczsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwgc2hv
dWxkRW5hYmxlVlA5RGVjb2RlcjsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOVNXRGVj
b2RlcjsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBAIC01MTAsNiArNTEzLDEwIEBA
IE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZVZQOURlY29kZXIpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmlu
ZGV4IGQ5MWU0NjAzOGYzMDliNTEzMGJmZGU1OGRmZjRhOWYxODE5NTFkZmQuLmMyMDYxMjMxMTQz
NWJmNGY5MmNmMDZmZTVlMTEyMDVhNGI1MTEyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIyOSw2ICsyMjksOSBAQCBzdHJ1
Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBzaG91bGRSZW5kZXJDYW52
YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUmVuZGVyRE9NSW5HUFVQ
cm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7
IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgc2hvdWxkUmVuZGVyV2ViR0xJ
bkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlE
ZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciB7IGZh
bHNlIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCA5YmQ4YTgxNzU0OWY1OGZlMzgzZDcy
NWRhNjYzZjNiYzU0Y2EwZDc0Li43N2U5YjRkNWNjNzUyZmJjZGI2YjY1ZjlhZGMyNjAxOTU2Y2Ex
NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NG
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENv
ZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRD
b2RlcnNTb3VwLmNwcAppbmRleCAxZDg0ZTJmZTI2OGYzNDYwZWIyOTc1YzQyYmE5NWQxNGYxZDIz
NWNmLi5mYTI2OGQ1ODRhMGZjOGRmODdhMjFmYTQ1NjA3N2I4YzVkNDJiODU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5m
bz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUkKICAgICAvLyBF
bmNvZGUgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCBjZXJ0aWZpY2F0ZS4KICAgICBmb3IgKHNpemVf
dCBpID0gY2VydGlmaWNhdGVzRGF0YUxpc3Quc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAgICAg
IEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlID0gY2VydGlmaWNhdGVzRGF0YUxpc3RbaSAtIDFdLmdl
dCgpOwotICAgICAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KElQQzo6
RGF0YVJlZmVyZW5jZShjZXJ0aWZpY2F0ZS0+ZGF0YSwgY2VydGlmaWNhdGUtPmxlbikpOworICAg
ICAgICBlbmNvZGVyIDw8IElQQzo6RGF0YVJlZmVyZW5jZShjZXJ0aWZpY2F0ZS0+ZGF0YSwgY2Vy
dGlmaWNhdGUtPmxlbik7CiAgICAgfQogCiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oY2VydGlmaWNhdGVJbmZvLnRsc0Vycm9ycygpKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIENlcnRpZmljYXRlSW5mbyYgYwogICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBjZXJ0
aWZpY2F0ZTsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY2hhaW5MZW5ndGg7IGkrKykg
ewogICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlOwot
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY2VydGlm
aWNhdGVEYXRhUmVmZXJlbmNlKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjZXJ0aWZp
Y2F0ZURhdGFSZWZlcmVuY2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAg
IEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0YSA9IGdfYnl0ZV9hcnJheV9zaXplZF9uZXcoY2Vy
dGlmaWNhdGVEYXRhUmVmZXJlbmNlLnNpemUoKSk7CkBAIC0yNzcsNCArMjc3LDMgQEAgT3B0aW9u
YWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3UKICNlbmRpZgogCiB9Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDA5MTdmMDFi
ZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1YTNmMmVmODYuLjUwY2RlMTJhZmEzYWE3Zjc4YzI3OWVj
OGZiODE5NzQ0YjZmYjFlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjYsNiArMjYsNyBAQCBHUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKQEAgLTEzNyw3ICsxMzgsNiBAQCBQbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNw
cCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcCBAbm8tdW5pZnkKIFBsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKLVBsYXRmb3JtL0lQQy9EYXRhUmVmZXJl
bmNlLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBAbm8tdW5pZnkKIFBs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9KU0lQQ0JpbmRp
bmcuY3BwIEBuby11bmlmeQpAQCAtNjkzLDMgKzY5Myw1IEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorCitS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAppbmRleCA5OTUxODA3MzI4MGU5Yzk1YTJiMjVmMDBiYzhiZmIzODg3NjIxMjQxLi4xM2Zh
NzE1ZTc5NmZjODU5MjMxNGIzZmU3ZjBkNGVhOWFlZDg5ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CkBAIC02Myw2ICs2Myw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eUNvY29hLm1tCiBHUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tCiAKKwogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKIFBsYXRmb3JtL2NsYXNzaWZpZXIv
Y29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKQEAgLTU3Myw2
ICs1NzQsOCBAQCBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQogV2ViUHJvY2Vz
cy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50
Lm1tCiAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZC5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KQEAgLTY4NSw2ICs2ODgs
NyBAQCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VSZWNlaXZl
ci5jcHAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKaW5k
ZXggMmZlMzg2MjU5NDYzYmZiMzYyM2ViYmRiNGZlZjVmODM5MzZiMGQzZC4uNzM3YjYyNTgxOTg2
NmEwZWNiNTk5YTIxMzBiMzI5MTNlYWYzOTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKQEAgLTMwLDEwICszMCw2IEBACiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggNGYzOThiNTMwZjYwODU3
NWM5NjdiODNjNzRmYTJmNDMyOGY2Y2UzYi4uOGNhOTdlNmU1OTdiZDcxMTBhMGQ3MzhlMGM0YTdj
ODU2MDNhOGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmgKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUHJvY2Vz
c1Rocm90dGxlciYgdGhyb3R0bGVyKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8
SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBD
OjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKKyAgICB1c2luZyBTZW5k
U3luY1Jlc3VsdCA9IElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9
IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsg
fSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
IDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
PiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9LCBTaG91bGRTdGFydFByb2Nl
c3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
OjpZZXMpOwpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8
VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgcmV0
dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpAQCAt
MTYzLDEyICsxNjQsMTIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1l
c3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDwKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVT4gCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucykKK0F1eGlsaWFyeVByb2Nlc3NQcm94eTo6U2VuZFN5bmNSZXN1bHQgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiBy
ZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8
SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIENPTVBJTEVfQVNT
RVJUKFU6OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKICAgICBpZiAoIW1fY29ubmVj
dGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
VHJhY2VTY29wZSBzY29wZShTeW5jTWVzc2FnZVN0YXJ0LCBTeW5jTWVzc2FnZUVuZCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9T
dWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaApp
bmRleCA4MjNjMjAyYTg1NmEwMTM2ZGQ5ZWE3NTlmMGVjZGViYTQ3ZjRmMzYyLi5iNTc3Y2JkZjhl
MDc4ZjRmYjRmODczNGQ3YmZkNjA4ZDIwMzg4MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCkBAIC0zMiwxMCArMzIsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbiBmaW5h
bCA6IHB1YmxpYyBOYXZpZ2F0aW9uU09BdXRob3JpemF0aW9uU2Vzc2lvbiwgcHVibGljIEZyYW1l
TG9hZFN0YXRlOjpPYnNlcnZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRleCBmZjk4Yjg0ZmE4OWRiZWZkZDY0
NjY2YmJiYTQyZmM5MGNlYzM1NzdmLi4xMjhhMzk3N2U2M2VlNGY0ZWYxZjIwZWFhZWM4NmQwOGVj
YmY1OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9j
b2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CkBAIC0zNSwxMCArMzYsNiBAQAogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sTG9h
ZGVyOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0K
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNGM3MTg3
NGExMGRhOWI1NDFmZWUyODIwODA4YzFlNTBkM2ZhOTJiLi45ZGIzYTUwOWI5MTRjMDkzY2FmMTY5
YTA1ZDY1YjU3ZWQwYzgwMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQREZQbHVnaW5J
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKQEAg
LTgwLDEwICs4MSw2IEBAIGNsYXNzIE9wZW5QYW5lbFBhcmFtZXRlcnM7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCAyNGI2MzNlNDg0ZDJhMzVi
YTc0ZDQ1ZjEyZWRlMzRhMGY3OGNhMGE2Li4yNDhlNTNhMDgzZDE5YTBlZjRkODNjMjNiOGNjZTAw
MzQ1ZGFhYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0Lmgi
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCAxMjlhMzQwZjA4OTY0ZDBmZmEyM2EzNzEwMWEw
OWE4NTZkM2NjY2IyLi5hNGQ4ZDdjZDgwNGU2NTYwZGFiZmRlNjExNGZmMDYyMTFiYWQ0N2MwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbnRlbnRXb3JsZFNoYXJlZC5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtNDgsMTAgKzQ5LDYgQEAgY2xhc3MgVXNl
clNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTZWN1
cml0eU9yaWdpbkRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA2ZWQxYzY5YzA4ZmM1NTlmZTJhM2YzYjkzOTUwZWE4MjhkNjBkNGJmLi5jZWM3M2Qx
M2QwOThkNzEzMTg0OGFmYjU5M2VmMDcyNDEwMjE4ZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU4LDcgKzU4LDYgQEAKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgotI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTc5Mjcs
NiArNzkyNiwxMCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3Jl
YXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hv
dWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNz
Rm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVy
RE9NSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVy
aW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNz
ID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCk7CisjaWYgRU5B
QkxFKFdFQkdMKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3Mg
PSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JXZWJHTEVuYWJsZWQoKTsKKyNlbmRpZgor
CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52
cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52
cDlEZWNvZGVyRW5hYmxlZCgpICYmICghV2ViQ29yZTo6c3lzdGVtSGFzQmF0dGVyeSgpIHx8IHBy
ZWZlcmVuY2VzKCkudnA5U1dEZWNvZGVyRW5hYmxlZE9uQmF0dGVyeSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjQyNDQ2ZjllOWFhNGI1MjExMTQ5MDNiNmYw
YjVmNzExZjkxYjJlNS4uNDM3YWI3NTBiMzVhYjE2M2IyYTU4MGFlODY3MmVkNDYwMTY0NzQwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVk
ZXNDaGlsZEZyYW1lcy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1
ZGUgIkRyYWdDb250cm9sbGVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBA
IC0yMDMsNyArMjA0LDYgQEAgZW51bSBjbGFzcyBJbnNwZWN0b3JUYXJnZXRUeXBlIDogdWludDhf
dDsKIH0KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVj
b2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCBm
NDI0NWNlNjVlOWQyZDU2NWIzZjEyNWYzNDU3YTI1NmZiMzljOWQ0Li5kMjM4YzJhMWE2MDhkYzVh
NDYzMmU2YTE5OTc3ZGI2MWJhYjYxMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5oCkBAIC0zMSwxMCArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAppbmRleCBkNDQyYjYyYjUyMjU4N2Y5MGZhNjg5ZDU2YjIwNjI3NmRlYjQ0ODJiLi44MjVj
ZDAyNjg4YTI2ODIxOTQxZmY3YTQxOGY0ZGY1YTk3NWJhMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zOCwxMCArMzgsNiBAQCBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM1MjhmNDcxZjQ2M2RmNmMxMTMwYTNmYjgzNzc2
YmYxYjJhYmVmOTQuLjBiNzY5ZjAzNTRlYjRmMDMyZDIyMDllYzc5YjhmZTIxOWVmZDg4OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Njk4LDcgKzY5OCw2IEBACiAJCTJEOTJBNzdCMjEyQjZBNzEwMEY0OTNGRCAvKiBBcmd1bWVudENv
ZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2RlcnMuY3BwICovOyB9OwogCQky
RDkyQTc3QzIxMkI2QTcxMDBGNDkzRkQgLyogQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQg
LyogQXR0YWNobWVudC5jcHAgKi87IH07CiAJCTJEOTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMDMyREEyMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAqLzsgfTsKLQkJ
MkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDNzUzN0QxODNCRTUwRjAwNzJD
QjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovOyB9OwogCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkz
RkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi87IH07CiAJ
CTJEOTJBNzgwMjEyQjZBNzEwMEY0OTNGRCAvKiBFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlGMTBGNDM3RDEwMDU4QzE1QSAv
KiBFbmNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODEyMTJCNkE3MTAwRjQ5M0ZEIC8qIE1lc3Nh
Z2VSZWNlaXZlck1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTNFRUQwQzE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNw
cCAqLzsgfTsKQEAgLTEzMDMsNiArMTMwMiw3IEBACiAJCTdBRkJEMzYzMjFFNTBGMzkwMDVEQkFD
QiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzYyMjFFNTBGMzkwMDVEQkFDQiAvKiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQzNjcyMUU1MUJB
QjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjUyMUU1MUJBQjAw
NURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovOyB9OwogCQk3
QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNkQyMUU1NDZFMzAwNURC
QUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLzsgfTsKKwkJN0IxREIyNjYyNTY2OENFMTAwMEUy
NkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2Uu
aCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQ
bHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFC
QTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8q
IEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTI3MTksNyArMjcxOSw2IEBACiAJCTFBQzVGRkMx
MTc0QkZEMUIwMDAxNDgzRCAvKiBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxv
YWRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlTG9h
ZFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzUzN0ExODNBOUZE
QjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFnZUxvYWRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUM3
NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YVJlZmVyZW5jZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NUExQTFCMzM2ODI3MDA1Njc0NUIgLyogSGFu
Z0RldGVjdGlvbkRpc2FibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhh
bmdEZXRlY3Rpb25EaXNhYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3
NUExQzFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM2OSw2ICs0MzY4LDE2IEBA
CiAJCTdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHBhdGggPSBDbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZC
RDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJE
MzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjUyNTRBRkRFQTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qjkw
NDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY1MywxMSArNjY2MiwxMSBA
QAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJ
CQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJ
CQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3
QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VF
OTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIx
MTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0Qx
MDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThD
MTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyog
RGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERh
dGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rl
ci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywK
QEAgLTgzMjcsMTEgKzgzMzYsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyog
Y29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyog
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAw
NEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQw
Nzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICov
LAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZv
cm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdE
MDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5
MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
ICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3
MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODM0OSw2ICs4MzYzLDEw
IEBACiAJCQkJRjQwOTRDQkMyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCQjI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuaCAqLywKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZv
cm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAorCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRB
RkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAor
CQkJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oICovLAogCQkJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEEyMjQwNzFBNjEwMEFBRTA0NSAvKiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLywKIAkJCQk1NTA2NDBBMzI0MDcxQTYxMDBBQUUw
NDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICovLApAQCAtMTExNjUsNiArMTExODMsNyBA
QAogCQkJCTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJz
Q0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1
bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAw
RTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgz
REQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2
MzRGMjM0RjdDNjQwMEZGQTg2NCAvKiBBc3luY1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTMyMzMsNyArMTMyNTIsNiBAQAogCQkJCTJEOTJBNzg1MjEyQjZBQjEwMEY0OTNG
RCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDky
QTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0OURBQTM4QzI0Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dz
ZXJDaGVja3MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcg
LyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmgKaW5kZXggZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2OThhMjEyOTBkMzYxZDRhNi4uYzlk
YzY4MmI4NzU0OWI4MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2VjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
aApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0
b3I7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyYzBkZjViOWY1NDk2ODQ3ZWQ2
NjkxMGJmMmYzOWIyY2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5
OTg4NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC0zNSwxMCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBD
IHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2Qw
MzUyMTJjNjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlm
aWVyPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMp
KTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAg
IDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7
CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNz
YWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0wo
YXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sK
KyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KCp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAw
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVC
dWZmZXIoKTsKKyNlbmRpZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7Cisg
ICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lk
dGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFy
ZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJl
Rm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAg
YXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVy
KCk7CisgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRy
IH0pOworICAgIH0KKyNlbHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBG
SVhNRTogQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRo
aXMgaXMgdGhlIHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTM0OQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAg
ICBpZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVk
IG91dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNp
b25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAg
IGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNs
aWVudC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Ondhc0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRv
VmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdl
ZE5vdGlmaWNhdGlvbigpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAg
ICAgICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJy
dXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8v
IFRpbWVkIG91dCwgc28gcmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hv
dWxkIGxvc2UgdGhlIGNvbnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUg
dG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWQyNmMyMGY3NzYwZDY0N2MwYTVmNDI4NzVmODJmZGEyMTNhMmM4OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNDEyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1l
bnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlv
bgorLy8gY29udmVydHMgdGhlIGludGVyZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdl
cyBhbmQgc2VuZHMgdGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBp
biBHUFUgcHJvY2Vzcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRl
ZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVi
bGljIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSgpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRl
cy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ug
b3ZlcnJpZGVzLgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFs
OworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3Jl
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQg
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7Cisg
ICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVs
YXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsK
KworICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlz
IGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNl
dEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVy
cm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0
dXJlKSBmaW5hbDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmlu
ZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmlu
YWw7CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dM
Y2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOwor
ICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJs
ZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEp
IGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRm
YWN0b3IpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdC
LCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkg
ZmluYWw7CisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJn
ZXQpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAg
IHZvaWQgY2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNs
YW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgo
R0NHTGNsYW1wZiBkZXB0aCkgZmluYWw7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBz
KSBmaW5hbDsKKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFu
IGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAg
dm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9p
ZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1
ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBm
aW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVu
dW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQg
ZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShH
Q0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNo
U2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5h
bDsKKyAgICB2b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3
QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmlu
YWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFi
bGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZv
aWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0
ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7Cisg
ICAgdm9pZCBmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0
ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmli
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFy
ZzIpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5n
JiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dM
ZW51bSBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2
NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJ
bnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NH
TGludCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1l
KSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7
CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAg
IFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlcklu
Zm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBl
LCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsK
KyAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0
PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7
CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50
IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYg
bmFtZSkgZmluYWw7CisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVk
KEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxv
YXQgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQg
cGFyYW0pIGZpbmFsOworICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBH
Q0dMZmxvYXQgdW5pdHMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1w
ZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xp
bnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJh
dGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1h
c2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7Cisg
ICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2sp
IGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWls
LCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dM
ZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3Mp
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NH
TGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHks
IEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBm
aW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVp
IHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFy
ZzEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZp
bmFsOworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2
b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7Cisg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRl
eEFycmF5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
cmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwg
R0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdl
dEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJh
bWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIp
IGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGlu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVt
IHNyYykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhT
dG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAg
ICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9p
ZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1
YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1
aW50IHYxKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
THVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVp
bnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWlu
dCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVp
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dM
dWludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2
b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dM
dWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNs
ZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmko
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NH
TGludCBzdGVuY2lsKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5h
bDsKKyAgICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFs
OworICAgIHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
cXVlcnkpIGZpbmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9i
amVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlU2FtcGxlcigpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQg
dW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAg
ICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVy
aShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBH
Q0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3Mp
IGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xp
ZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0
IHRpbWVvdXQpIGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJp
dGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRT
eW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRl
VHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJv
b2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51
bSBwcmltaXRpdmVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkg
ZmluYWw7CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZm
ZXJNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBm
aW5hbDsKKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lk
IHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFz
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZl
cikgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWlwdHIpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGlj
ZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9y
bU5hbWVzKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5k
aWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9j
a0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxv
Y2tOYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykg
ZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykgZmluYWw7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMo
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZl
bnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBN
YXJrZXJFWFQoKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXpl
aSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsK
KyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0
TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmlu
YWw7CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RB
TkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2
b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZp
bmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsK
KyAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0Lgor
Citwcm90ZWN0ZWQ6CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3Zl
cnJpZGVzLgorICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQo
U3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9u
cyk7CisgICAgdm9pZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYpOworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAg
ICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8v
IFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdD
R0x1Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hv
cnQsIGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwg
dWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJf
dD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsK
K3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lX3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8UGxhdGZvcm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0xpbnRwdHIpID09IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
THNpemVpcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0x2b2lkcHRyKSA9PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0xjaGFyKSA9PSBzaXplb2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGlu
dDY0KSA9PSBzaXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2
NCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisvLyBHQ0dMc3luYyBpcyBhIHBvaW50ZXIgYW5kIDMy
LWJpdCBvbiBzb21lIHBsYXRmb3Jtcy4gQ3VycmVudGx5IHdlIGhhcmQtY29kZSBpdCBieSB1c2lu
ZyA8PSwgYW5kCisvLyBhc3N1bWUgdGhhdCB3ZSBkbyBub3QgdHJhbnNmZXIgYXJyYXlzIG9mIEdD
R0xzeW5jLgorc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMpIDw9IHNpemVvZih1aW50NjRf
dCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRyX3QpKTsKKy8vIEVuZCBvZiBs
aXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJiMmJjMTAxMGVmOGVjZDBhZjU3
NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAt
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQg
V2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2FzQ2hhbmdlZCgpOwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNGE0NDMxNTYy
MTFjYzcxODUxMzczMzhjYWNjN2NlNTAzNTc5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NyBAQAorLyogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8v
IFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVk
aXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJv
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKQorewor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJv
ckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4
dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dM
dWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5h
bWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3Jt
R0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1l
YnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFy
Z2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBh
cmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5k
VGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xh
bXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFs
cGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVu
ZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1
YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1
YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25T
ZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdD
R0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0g
ZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNy
Y1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNvbG9yKEdDR0xj
bGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYg
YWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNs
ZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJE
ZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyU3Rl
bmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9v
bGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVh
biBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVu
KSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGlsZVNoYWRlcihh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVm
ZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQoreworICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQ
bGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1
cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxs
RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZy
YW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJl
bmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5j
KEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayhHQ0dMYm9v
bGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVw
dGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxh
dGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNh
YmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRy
YXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50
cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpG
bHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50
LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0
ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJl
MkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZl
QXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7
CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5
KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9j
YXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1
ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xl
bnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZs
b2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2
KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5k
YXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOwor
ICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2Vydihw
bmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5k
YXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7
CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJ
bnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldElu
dGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50
ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7
Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vy
NjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAgICBpbnQ2NF90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
aW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZh
bHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVSZXBseTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAg
ICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICog
c2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3Io
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1l
bnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3Jh
bUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJv
Z3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAg
ICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVy
SW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdD
R0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xp
bnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3QgcHJlY2lzaW9uUmVwbHkg
PSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJl
Y2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkgewor
ICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNp
emUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lzaW9uKQorICAgICAgICAg
ICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30KKworU3RyaW5nIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
KQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwg
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRl
cmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVt
Y3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9m
KGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRh
LCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7Cisg
ICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVp
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdD
R0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1
ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUu
YnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVp
djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVl
UmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgCit9
CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGlu
ZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4
QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1
cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZh
bHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNF
bmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkKGNh
cCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJv
b2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJn
MCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dD
R0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3JhbShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW06OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVh
biBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NH
TGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFkZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShw
bmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFj
dG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFs
dWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3NvcihH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgs
IHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVp
bnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
U2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1
aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFza1NlcGFy
YXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWws
IEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBm
YWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWws
IHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1l
LCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0p
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
MWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
di5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJp
KGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHks
IHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2
KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZs
b2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6
LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aXYobG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
TWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRh
dGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEp
LCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEp
LCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGlu
ZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBp
bmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVk
LCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwg
c2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmlld3BvcnQoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmlld3BvcnQoeCwgeSwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1
c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVm
ZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAg
ICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXpl
b2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJ
bWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1h
Z2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2Rl
LCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUs
IGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNW
ZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1
cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZl
cnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3Jp
dGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwg
R0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0
ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4g
ZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAg
ICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6
ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Qmxp
dEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRz
dFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVM
YXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihh
dHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0
YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNyYyksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdl
dCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1h
Z2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlw
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdl
U2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZv
cm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRl
eFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xp
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVp
bnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYy
LCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJh
bnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4M2Z2
KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGlu
ZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpdihpbmRl
eCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5
LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVl
cy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQ
b2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwg
dHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NH
THVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3
UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48
Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIs
IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1
ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVm
ZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0
aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5j
aWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmpl
Y3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQoreworICAgIHVp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xP
YmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBs
YXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVl
cnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2Jq
ZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNh
bXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2Ft
cGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dM
Ym9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxl
ciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUs
IHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZmxvYXQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBs
ZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc3luYyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBH
Q0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMo
Y29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVu
Y2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5j
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKEdDR0xzeW5j
IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRl
bGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJn
MCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0
U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFn
cywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9j
YXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7
CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9k
ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5U
cmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFRyYW5z
Zm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJv
Z3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgs
IEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNm
b3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZl
ckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBi
dWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJp
bmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
QnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9i
amVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdl
KHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0
YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVj
dG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIFZl
Y3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZv
cm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpCit7Cisg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlm
b3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQoreworICAg
IFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5p
Zm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50
IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5k
ZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHBhcmFtcy5kYXRh
LCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsK
KyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShH
Q0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kx
LCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRz
dFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNY
MCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ss
IGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2Jq
ZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5
T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29s
ZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VT
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlP
RVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9F
UyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3Ry
aW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVm
cy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBw
cmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50
LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXpl
aSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQq
IHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVh
biogZGF0YSkgLy8gTk9MSU5UCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQb2lu
dGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRu
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJh
bSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKwor
I2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBhZWY4M2UyNTg4ODlh
NWJlODI2N2E2OGIxYzY5ZmVjNWEzNGUwMzg2Li42YTRhZGY1ZDZkMzRhN2M2OTFiZmYwMGVlY2Uw
MWZjN2FhODk0MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC04MTgsNyAr
ODE4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVu
dW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NH
TGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggOTVjODM2ZTY5NTA0MWQ5N2QyNTkwMzZmZDcz
ZGZmNWM0NmI4ZmY5MS4uYzhjNTgyOTA1MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5N2E1NmIzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtODIsNyArODIsNyBAQCB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAK
ICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7Ci0g
ICAgYm9vbCBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCisg
ICAgYXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCiAg
ICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVk
aW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1wbGVSYXRl
KCkpLAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNy
ZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsKIApAQCAtMTAw
LDcgKzEwMCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9H
UFVQcm9jZXNzKCkKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0
OwogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwogICAg
IG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJhbWVzKTsK
LSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0Pihz
dHJlYW1Gb3JtYXQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJj
ZVByb3ZpZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAppbmRleCBiOGY0NWE2ZDViYjRk
YjQ2MDk4ODAxMjQzYmI1ZTkzMTdiMWUzZTJiLi42NWI4ZmQwZDc3MzQ3ZTkzOGI1NjQ1ODIyNmI3
OGRhNDNjOTc4OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2Vy
LmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNz
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaAppbmRleCBlNTllMWIwNmI0
NDdlNWQ4MGNhNjEwNTJjNmM3YTMyYzRiYTE0MmU2Li44MTk0MDkwYzkzM2IyZjExYTY0NjBhYjNj
MTc3MmQzNzYxNjM3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdl
ci5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllcklkZW50aWZpZXIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb24uY3BwCmluZGV4IDBkYjg1YWU5YmQyNDFlYmExYmRhNGU2MjI0NDBmNjMyOGUxZDhh
MGIuLjI5N2VlYmRhMTkxODlkZmUwY2ZlNmMxZWQ3NjlhYWNiOWQ2ZDkxMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIkdQVVBy
b2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgog
I2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyQ29weS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCBi
OWEwMWIwNjI1ZTNiN2M3ZjAxMTg0YTgzYzM2ZTU0OTEyMmYwOWE4Li4xNTE3MmM5ZjYyMTBiZjRm
OTVlMGM2YWE3OTM2YzYyMmVhOGQ5M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApA
QCAtNDQsNyArNDQsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xh
c3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJh
Y2tQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Rl
eHRUcmFja1ByaXZhdGVSZW1vdGUuaAppbmRleCBiN2NlZGI3ZTgzOTRmOTliYTljZmIwYTJhYzJh
OTc4MTFiM2M0MThmLi43NzAyZDFiNzAyZDEyMTYyZTE5YWI5YTZkYWE0YzU5NzUxODYyZjI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1By
aXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Rl
eHRUcmFja1ByaXZhdGVSZW1vdGUuaApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlICJUcmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5iYW5kR2VuZXJpY0N1ZTsKIGNsYXNz
IElTT1dlYlZUVEN1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDBjNmY3M2QwNzE0NGI1NjI2NzY5MzY3
YzlmMmEzYTQwMTdlYWRlODAuLjE2OGVmNDM1ZGRlNTYxNGQzMGYzYmUyODY3MGE0N2FlZDYxNmRl
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNFKExJQldFQlJU
QykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29k
ZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCA3MzlhNDk2ZWY0OTRjYjRhNjE4NTY2
ZmZjNjRkNGEyNjRhNzRlOWQwLi40YmVhZTA2MjMxN2JhMjZhNjA2ODNmMWY0NTEyMzNlYjEwNzNh
YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UlRDRW5jb2RlcklkZW50aWZpZXIuaCIKQEAgLTQzLDcgKzQ0LDYgQEAgdXNpbmcgQ1ZQaXhlbEJ1
ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNv
ZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDJkYWQyMDM4NDJmMGU1NTNmZTNiNDYyNDQx
ZWU5NGZhMjY0OTNhMTEuLmMyOGNlN2YyZTE3ZTg5YThlNTE4NmE3NzA2YTJlOGE0NGY2YjdlMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElJbmpl
Y3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNl
ckNvbnRlbnRUeXBlcy5oPgpAQCAtNTQsNyArNTUsNiBAQCBjbGFzcyBEYXRhOwogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDQgKzE2MSwzIEBAIHByaXZh
dGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApp
bmRleCAzMDY0ZTljNGFmY2MyY2ZmNTRhMzI1ZTI1MzFlZDA1MjJhMDAxMzkzLi5iOTc5NDY1OWVh
YmQxODRiMzg5YzA2ZDEzMmY4YzQyZjgwNTIzY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApA
QCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODY1NzExYjM2NmMyOGRmNDg0
YjRjZGMwN2FhM2ZjZjNkY2ViZjJmNi4uNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4MjBhMjc4
YWYxZGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA1ODNlMzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZiLi43ZTFkNDk5NDcxNWY4
ODQ5Y2U4YmZlNWVjMzQ1NWQ0NzM3NzgwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVh
YmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC0z
Niw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVs
LmNwcAppbmRleCA5NGVmMGQxZmNlMmU2MDFkZjQ0OWNmZjg1MzlmYmQxNjQ3OTNlYmUyLi5mZjY5
ZjU2MDllNTc3Y2FjNzc3ZjA0YWZhNzRhZjIxMDc0ODY0Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYs
NyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5u
ZWwuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlcy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5oCmluZGV4IGY1MzQ3ODM0N2U3NzVkZjM3ZWE5NzYzNGMyMzMwOTMyYjRhMTRkMjguLmFkN2Zm
MTg3ZGJiNDM1M2I5ZWQzYmM1N2M1YmEyYzRhYTRlOGNmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya1NlbmRRdWV1ZS5oPgpAQCAtMzgsNyArMzksNiBAQAogbmFt
ZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5kZXggYWYyNDJj
ZDJiNTk1YWM0YTQ0ODQyOTdiZTVkNWNmZTE4ZDQ4ZjMyNC4uN2QwMDczNjliOWNjZTg1YjhmMDU0
NTdkNjY2ZDFlNDQ1MWI5NmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCBkZDA4MjAxMDcxMmI5
ZjVkYjlmZWJkODhkYTY2OWI2ZGY2MWQwZjI5Li5iNDNjYjJlZmFkMWUxMDFlZTI2NWI5M2RkZTli
MDYxMjczNmEwOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJl
YW1IYW5kbGUuaD4KQEAgLTMzLDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29u
bmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKaW5kZXggY2I0OGUwNTczNDhhMmU4NjZi
MDkxZmY1YWM4NzI2MDVjYTE5MmRkNS4uMzIzZjI1ZWU4ZmQ4MWIwMjYzMGQyZjI1OWExYWZiODg0
YjRjZjVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaApAQCAtMzUsNyArMzUsNiBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3Mg
RGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCmluZGV4IGVhNTM1OTYwMTA5ZmVlNmRjNDgwNWNmNjg5MTI3OThlZTlhYjZm
MDMuLjQwYjRjOGYyMTI5Y2YxMjMzYTFiMzFiODUxMjdlN2E3ZTllM2Q3Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTYwLDEw
ICs2MCw2IEBAIE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9uOwogT0JKQ19DTEFTUyBXS1BERlBsdWdp
bkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUERGTGF5ZXJDb250cm9sbGVyRGVs
ZWdhdGU7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVh
MzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRlOWQ1NDkyMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYsMjIgQEAgUmVmUHRyPElt
YWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdF
QkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdAorewor
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5n
Rm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1ZBUklBQkxF
KGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7CisjZWxzZQor
ICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBo
aWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApp
bmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4Li4xMjE1ZjkyYTAz
MTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0y
NDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJp
bmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdl
YkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAg
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRH
TChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQ
bGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRp
ZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3Np
dGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMsNiArNDA3LDcgQEAgcHJp
dmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxT
Y3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhh
c1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
ZjY0MjE0NzdhNTZjZWUxYjQ1OWFiMWI3MGQ4ZGNhZDlkM2RhZmMzNC4uZDQ2MzNkZGI2Y2M2NDk4
MDNiOTI0NTc1NjI1YmZhNTI4YzE3ZDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyMiw2ICs0MjIsOSBAQCBXZWJQYWdlOjpXZWJQYWdl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IHBhcmFtZXRl
cnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUmVuZGVy
RE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3Mg
fQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3Vs
ZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAgICwgbV9zaG91
bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJ
bkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
LCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMubmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzI1LDcgKzcyOCw2IEBAIFdlYlBh
Z2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciogbWFu
YWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyPigp
KQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYKLSAgICAKICAg
ICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAgICAgICAgc2NhbGVWaWV3
KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5Myw2ICszNzk1LDkgQEAgdm9p
ZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yQ2Fu
dmFzUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzKTsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nKG1fc2hv
dWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
ZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEobV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpOwor
I2lmIEVOQUJMRShXRUJHTCkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQ
cm9jZXNzRm9yV2ViR0wobV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzcyk7CisjZW5kaWYK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKQEAgLTY5OTAsNiArNjk5NSw3
IEBAIHZvaWQgV2ViUGFnZTo6c3luY2hyb25pemVDT1JTRGlzYWJsaW5nUGF0dGVybnNXaXRoTmV0
d29ya1Byb2Nlc3MoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1faWRlbnRpZmll
ciwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpLCAwKTsKIH0KIAorCiAjaWYgRU5BQkxFKE1FRElB
X1VTQUdFKQogdm9pZCBXZWJQYWdlOjphZGRNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24oTWVkaWFT
ZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZp
ZXIsIGNvbnN0IFVSTCYgcGFnZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCBlN2Y4YzBhM2I2MDRlN2FhMTU3Yzc0MDIzMWU1NTU3NDlkNGVm
N2M3Li4yMTEwYTMyZjY3MGYwMGZhMjQ0ZmU2ZjlkNzk1YTZkZGY2MGQxNzA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUg
IkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
SW5mby5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMTYwLDcgKzE2MSw2IEBAIGNs
YXNzIEFycmF5OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwog
fQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBh
Z2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5k
U3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHkpCiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRPblN5bmNocm9ub3VzUmVw
bGllcygpOwogICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShyZXBseSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9y
bVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKQEAgLTE4MjYsNiArMTgyNiw5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIGJvb2wgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNl
IH07CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX25l
ZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYKQEAgLTIxODMs
NCArMjE4NiwzIEBAIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JF
ZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZTU3NWZjYTAxOWY2YjEyYThmNGRhZTVjYjFkNjgyZGE0
ZTQzNmViOS4uODRlMjg0MTFjZmRkZDkxZjlhNWQ0N2MyMWQ3MWU5ZGI2ZDdjNjM0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
QEAgLTUxNyw3ICs1MTcsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAgLy8gRklYTUU6IEludGVycHJldCB0aGUg
ZXZlbnQgaW1tZWRpYXRlbHkgdXBvbiByZWNlaXZpbmcgaXQgaW4gVUkgcHJvY2Vzcywgd2l0aG91
dCBzZW5kaW5nIHRvIFdlYlByb2Nlc3MgZmlyc3QuCiAgICAgYm9vbCBldmVudFdhc0hhbmRsZWQg
PSBmYWxzZTsKLSAgICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMp
LCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnBy
ZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpLCBwbGF0Zm9y
bUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKICAgICAgICAg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQ6OlJlcGx5KGV2ZW50V2Fz
SGFuZGxlZCksIG1faWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRX
YXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IGYyZjIyODIyYzdiMjIzZmNhNTlmOTU1NzNkMTFkYzk5YjEwMzQ4MTEuLjU4MmVlNzVkOTlhNzQy
NDI1NGEzOWRhYjIwNmY4NDYxNzM0YWQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTE5NDIsNiArMTk0MiwyMCBAQCBib29sIFdlYlByb2Nlc3M6OnNob3Vs
ZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UpCiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KKworI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgV2ViUHJvY2Vz
czo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wgdXNlR1BVUHJvY2Vzc0ZvcldlYkdMKQor
eworICAgIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMID0gdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOwor
fQorCitib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKKyNlbmRp
ZgorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAppbmRleCBlOWM0N2RiNGM0NDdjMGY0YWI2MjdjMDk0YjVmNjhkYjU2NWE5YTZjLi4x
YTU4NWFjMTQyYjE4MzI3NjRjNGQ4NTM3OTA5MGIyY2JjYTczYzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM0Nyw2ICszNDcsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhib29sKTsKICAgICB2b2lkIHNldFVz
ZUdQVVByb2Nlc3NGb3JNZWRpYShib29sKTsKICAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRl
cmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisg
ICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCk7CisgICAgYm9vbCBzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0OworI2VuZGlmCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShWUDkpCkBAIC02ODcsNiArNjkxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNl
R1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZUdQ
VVByb2Nlc3NGb3JET01SZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9j
ZXNzRm9yTWVkaWEgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fdXNl
R1BVUHJvY2Vzc0ZvcldlYkdMIHsgZmFsc2UgfTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVlA5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDAyMjI3YjdiNWU0NmMyNDQ0ZDg5ZGI3NDVlNzYyYTkwYzQ4NTNkOTIuLmZlMzliMDNkOWE1
YTQ4YWY0MTc0YmNlNjlhY2ZiN2E3NzZmY2JlNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVSBwcm9jZXNz
LgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMgYW5k
IGlzIGluY29tcGxldGUuCisKKyAgICAgICAgQWRkIHRoZSBjb2RlIGdlbmVyYXRvciB0byBnZW5l
cmF0ZSB0aGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseQorICAgICAgICB0aGUgZ2VuZXJhdG9y
IGdlbmVyYXRlcyBhIFdlYktpdCBJUEMgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgVGhlIGlu
cHV0IGRlZmluaXRpb24gdG8gdGhlIGdlbmVyYXRvciBpcyB0aGUgcHJveHkgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaGVhZGVyIGZpbGVzLgorICAgICAgICBUaGUgb3V0cHV0IG9mIHRoZSBnZW5l
cmF0b3IgaXMKKyAgICAgICAgICAgLSBXZWJLaXQgSVBDIG1lc3NhZ2UgZGVmaW5pdGlvbiBmaWxl
CisgICAgICAgICAgIC0gTWVzc2FnZSBzZW5kZXIgY29kZQorICAgICAgICAgICAtIE1lc3NhZ2Ug
cmVjZWl2ZXIgYW5kIHBheWxvYWQgaW52b2NhdGlvbiBjb2RlCisKKyAgICAgICAgVGhlIGdlbmVy
YXRvciBjb252ZXJ0cyBHcmFwaGljc0NvbnRleHRHTCBHQ0dMIC1wcmVmaXhlZCB0eXBlcyB0bwor
ICAgICAgICBzaXplZCBJUEMgdHlwZXMuCisKKyAgICAgICAgVGhlIGdlbmVyYXRvciBpcyBpbnZv
a2VkIGR1cmluZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAg
c3RvcmVkIGluIHRoZSByZXBvc2l0b3J5LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1n
cHVwLXdlYmdsOiBBZGRlZC4KKwogMjAyMC0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRhYmxlL3dyaXRhYmxlIHRv
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzNzEwMDMyNTcwYmRjYjMxMjVjMzgyZjhiYzJiMjk2NTlmNjNjODkKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAsMCArMSwxMDMy
IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIwor
IyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIHNvdXJjZSBm
aWxlcyBmb3IgV2ViR0wgR1BVIHByb2Nlc3MgSVBDLgorIworIyBweXRob24zIC1tIGJsYWNrIC1s
IDE1MCBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMgcHl0aG9uMyAtbSBteXB5
IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIworaW1wb3J0IGFyZ3BhcnNlCitp
bXBvcnQgZW51bQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0
IGNvbGxlY3Rpb25zCisKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJdGVyYWJsZSwg
Q2FsbGFibGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJhdG9yLCBDb3Vu
dGVyCisKK3Jvb3RfZGlyID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50IC8gIi4uIiAv
ICIuLiIpLnJlc29sdmUoKQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJj
ZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRlbnNpb25zR0wu
aCIKKworZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsKKyAgICByb290X2RpciAvICJTb3VyY2UiIC8g
IldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oIgorXQordHlwZXNfaW5wdXRfZm4gPSByb290X2RpciAvICJT
b3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisKK3RlbXBsYXRlX3ByZWFtYmxlID0g
IiIiLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13
ZWJnbC4gRG8gbm90IGVkaXQuCisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIg
LyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29udGV4dF9mdW5jdGlv
bnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIi8vIFRoaXMg
ZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8v
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQor
e30KKworIiIiCispCitjb250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAv
ICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbiIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCisgICAg
dGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVm
Q291bnRlZCB7eworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4g
KE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNlbmRpZgorI2lmICFQ
TEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hy
b25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0
ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3t9Cit9fQorCisj
ZW5kaWYKKworIiIiCispCisKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIg
LyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3Mi
IC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIgor
Y29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1i
bGUKKyAgICArICIiIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHt7Cit7fQorCit9fQorCisjZW5kaWYKKworIiIi
CispCisKKworZGVmIHdyaXRlX2ZpbGUoZm4sIG5ld19jb250ZW50cyk6CisgICAgdHJ5OgorICAg
ICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBpZiBmLnJlYWQoKSA9PSBuZXdf
Y29udGVudHM6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgZXhjZXB0OgorICAgICAgICBw
YXNzCisgICAgd2l0aCBvcGVuKGZuLCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUobmV3X2Nv
bnRlbnRzKQorCitjbGFzcyBjcHBfdHlwZShvYmplY3QpOgorICAgIHR5cGVfbmFtZTogc3RyCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyKToKKyAgICAgICAgc2VsZi50
eXBlX25hbWUgPSB0eXBlX25hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAg
cmV0dXJuIGhhc2goc2VsZi50eXBlX25hbWUpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhl
cik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSA9PSBvdGhlci50eXBlX25hbWUKKwor
ICAgIGRlZiBpc192b2lkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVf
bmFtZSBpbiBbInZvaWQiLCAiR0NHTHZvaWQiLCAiY29uc3Qgdm9pZCIsICJjb25zdCBHQ0dMdm9p
ZCJdCisKKyAgICBkZWYgaXNfY29uc3Qoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNl
bGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoImNvbnN0ICIpCisKKyAgICBkZWYgaXNfY29udGFpbmVy
KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX291dHB1
dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg
ZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgIGRlZiBpc19wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKSAtPiBib29s
OgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxmKSAt
PiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9kZWNheV90
eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIGlmIHNlbGYuaXNfY29uc3QoKToKKyAg
ICAgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWVbNjpdKQorICAgICAg
ICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9ydmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5
cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIiYmIikK
KworICAgIGRlZiBnZXRfcG9pbnRlcl90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAg
IHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiKiIpCisKK2NsYXNzIGNwcF90
eXBlX2NvbnRhaW5lcihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFt
ZSA6IHN0ciwgY29udGFpbmVyX25hbWUgOiBzdHIsIGNvbnRhaW5lZF90eXBlIDogY3BwX3R5cGUs
IGFyaXR5IDogT3B0aW9uYWxbaW50XSA9IE5vbmUpOgorICAgICAgICBjcHBfdHlwZS5fX2luaXRf
XyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY29udGFpbmVyX25hbWUgPSBjb250YWlu
ZXJfbmFtZQorICAgICAgICBzZWxmLmNvbnRhaW5lZF90eXBlID0gY29udGFpbmVkX3R5cGUKKyAg
ICAgICAgc2VsZi5hcml0eSA9IGFyaXR5CisgICAgZGVmIGlzX2NvbnRhaW5lcihzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIKKyAgICBk
ZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNv
bnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMgTm9uZQorICAgIGRl
ZiBnZXRfY29udGFpbmVyX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5l
cl9uYW1lCisgICAgZGVmIGdldF9hcml0eShzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAg
ICByZXR1cm4gc2VsZi5hcml0eQorICAgIGRlZiBnZXRfY29udGFpbmVkX3R5cGUoc2VsZikgLT4g
Y3BwX3R5cGU6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlCisgICAgZGVmIGlz
X291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5j
b250YWluZWRfdHlwZS5pc19jb25zdCgpCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVy
KHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFpbmVyXToKKyAgICBt
ID0gcmUubWF0Y2gociIoW1x3Ol0rKTwoLispPiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06
CisgICAgICAgIHJldHVybiBOb25lCisgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCisgICAgdGVt
cGxhdGVzID0gbVsyXQorICAgIGFyaXR5ID0gTm9uZQorICAgIG0gPSByZS5tYXRjaChyIihbXixd
KyksXHMqKFxkKykiLCB0ZW1wbGF0ZXMpCisgICAgaWYgbToKKyAgICAgICAgdGVtcGxhdGVzID0g
bVsxXQorICAgICAgICBhcml0eSA9IGludChtWzJdKQorICAgIHJldHVybiBjcHBfdHlwZV9jb250
YWluZXIodHlwZV9uYW1lLCBjb250YWluZXJfbmFtZSwgZ2V0X2NwcF90eXBlKHRlbXBsYXRlcyks
IGFyaXR5KQorCitjbGFzcyBjcHBfdHlwZV9mdW5jdGlvbihjcHBfdHlwZSk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgcmV0dXJuX3ZhbHVlX3R5cGUgOiBjcHBfdHlw
ZSwgYXJndW1lbnRfdHlwZXMgOiBMaXN0W2NwcF90eXBlXSk6CisgICAgICAgIGNwcF90eXBlLl9f
aW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfdHlwZSAg
PSByZXR1cm5fdmFsdWVfdHlwZQorICAgICAgICBzZWxmLmFyZ3VtZW50X3R5cGVzID0gYXJndW1l
bnRfdHlwZXMKKworZGVmIGNwcF9zcGxpdF9hcmdzX3NwZWNzKGFyZ3Nfc3BlYyA6IHN0cikgLT4g
SXRlcmF0b3Jbc3RyXToKKyAgICAgIyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9u
cy8zMzUyNzI0NS9weXRob24tc3BsaXQtYnktY29tbWEtc2tpcHBpbmctdGhlLWNvbnRlbnQtaW5z
aWRlLXBhcmVudGhlc2VzCisgICAgY29tbWEgPSByIiwoPyEoPzpbXjxdKlw8W14+XSpcPikqW148
Pl0qXD4pIgorICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW2Euc3RyaXAoKSBmb3IgYSBpbiByZS5z
cGxpdChjb21tYSwgYXJnc19zcGVjLnN0cmlwKCkpXSkKKyAgICAKK2RlZiBjcmVhdGVfY3BwX3R5
cGVfZnVuY3Rpb24odHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9mdW5jdGlv
bl06CisgICAgbSA9IHJlLm1hdGNoKHInKC4qKVwoKC4qKVwpJywgdHlwZV9uYW1lKQorICAgIGlm
IG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybl92YWx1ZV90eXBlID0gZ2V0
X2NwcF90eXBlKG1bMV0pCisgICAgYXJnc190eXBlcyA9IFtnZXRfY3BwX3R5cGUoYSkgZm9yIGEg
aW4gY3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsyXSldCisgICAgcmV0dXJuIGNwcF90eXBlX2Z1bmN0
aW9uKHR5cGVfbmFtZSwgcmV0dXJuX3ZhbHVlX3R5cGUsIGFyZ3NfdHlwZXMpCisgICAgICAgIAor
IyBQb2ludGVyIG9yIHJlZmVyZXJlbmNlCitjbGFzcyBjcHBfdHlwZV9pbmRpcmVjdChjcHBfdHlw
ZSk6CisgICAgY2F0ZWdvcnkgOiBzdHIKKyAgICB2YWx1ZV90eXBlIDogY3BwX3R5cGUKKyAgICAK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjYXRlZ29yeSA6IHN0ciwg
dmFsdWVfdHlwZSA6IGNwcF90eXBlKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwg
dHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNhdGVnb3J5ID0gY2F0ZWdvcnkKKyAgICAgICAgc2Vs
Zi52YWx1ZV90eXBlID0gdmFsdWVfdHlwZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgc2VsZi5pc19jb25z
dCgpCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVn
b3J5ID09ICcqJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19jb25zdF9yZWZl
cmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgc2Vs
Zi5pc19jb25zdCgpCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBub3Qgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlz
X3J2YWx1ZV9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09
ICcmJicKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LnZhbHVlX3R5cGUKKworZGVmIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUgOiBz
dHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2luZGlyZWN0XToKKyAgICBtID0gcmUubWF0Y2gociJj
b25zdCAoLispJiYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUu
bWF0Y2gociIoLispJiYkIiwgdHlwZV9uYW1lKSAKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4g
Y3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnJiYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisg
ICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBt
OgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToK
KyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYnLCBnZXRfY3Bw
X3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKVwqJCIsIHR5cGVfbmFt
ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKVwqJCIsIHR5cGVf
bmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9u
YW1lLCAnKicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICByZXR1cm4gTm9uZQorCisKK2NsYXNz
IGNwcF9leHByKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBleHByOiBzdHIKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgZXhwcjogc3RyKToKKyAgICAg
ICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLmV4cHIgPSBleHByCisKKyAgICBkZWYg
X19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwcgorCisKK0NwcEV4cHJDb252
ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdCisKKworZGVm
IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90
eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhw
cl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcihleHByOiBjcHBf
ZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4gY3BwX2V4
cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9PihyZWludGVycHJldF9jYXN0
PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0dXJuIGNw
cF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcgorCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nh
c3RfdG9fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENh
bGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWlu
dGVycHJldF9jYXN0X3RvX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAt
PiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYicmVpbnRlcnByZXRf
Y2FzdDx7dHlwZS50eXBlX25hbWV9PihzdGF0aWNfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBl
KX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19w
b2ludGVyCisKK2RlZiBjcHBfc3RhdGljX2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90
eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2Fz
dDx7dHlwZS50eXBlX25hbWV9Pih7c3RyKGV4cHIpfSkiKQorCisKK2RlZiBjcHBfaW1wbGljaXRf
Y2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJl
dHVybiBjcHBfZXhwcih0eXBlLCBzdHIoZXhwcikpCisKKworZGVmIGNwcF9hcnJheV9yZWludGVy
cHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRh
aW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9j
b250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0
eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8e2VsZW1lbnRfcG9pbnRlcl90eXBl
fT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisKK2RlZiB3ZWJr
aXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhw
cjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAg
ZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2lu
dGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qge2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0
YSksIHtzdHIoZXhwcil9LmJ1ZlNpemUpIikKKworZGVmIGNwcF9tb3ZlX2V4cHIoZXhwcjogY3Bw
X2V4cHIpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcihleHByLnR5cGUuZ2V0X3J2
YWx1ZV90eXBlKCksIGYiV1RGTW92ZSh7c3RyKGV4cHIpfSkiKQorCisKK2NwcF90eXBlczogRGlj
dFtzdHIsIGNwcF90eXBlXSA9IHt9CisKK2NwcF90eXBlX2NvbnN0cnVjdG9ycyA6IExpc3RbQ2Fs
bGFibGVbW3N0cl0sIE9wdGlvbmFsW2NwcF90eXBlXV1dID0gWworICAgIGNyZWF0ZV9jcHBfdHlw
ZV9mdW5jdGlvbiwKKyAgICBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyLAorICAgIGNyZWF0ZV9j
cHBfdHlwZV9pbmRpcmVjdAorXQorCitkZWYgZ2V0X2NwcF90eXBlKHR5cGVfbmFtZTogc3RyKToK
KyAgICByID0gY3BwX3R5cGVzLmdldCh0eXBlX25hbWUsIE5vbmUpCisgICAgaWYgcjoKKyAgICAg
ICAgcmV0dXJuIHIKKyAgICBmb3IgdHlwZV9jb25zdHIgaW4gY3BwX3R5cGVfY29uc3RydWN0b3Jz
OgorICAgICAgICByID0gdHlwZV9jb25zdHIodHlwZV9uYW1lKQorICAgICAgICBpZiByOgorICAg
ICAgICAgICAgYnJlYWsKKyAgICBpZiBub3QgcjoKKyAgICAgICAgciA9IGNwcF90eXBlKHR5cGVf
bmFtZSkKKyAgICBjcHBfdHlwZXNbdHlwZV9uYW1lXSA9IHIKKyAgICByZXR1cm4gcgorCisKK2Ns
YXNzIGNwcF9hcmcob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICB0eXBlOiBjcHBfdHlwZQor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAg
ICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKworICAgIGRl
ZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9IHt9Ii5mb3JtYXQoc2VsZi50eXBl
LCBzZWxmLm5hbWUpCisKKworY2xhc3MgY3BwX2RlY2wob2JqZWN0KToKKyAgICB0eXBlOiBjcHBf
dHlwZQorICAgIG5hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90
eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYu
bmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7
c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5hbWV9IgorCisKK2NsYXNzIGNwcF9hcmdfbGlzdChvYmpl
Y3QpOgorICAgIGFyZ3M6IExpc3RbY3BwX2FyZ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBh
cmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworCisgICAgZGVm
IG5hbWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKGEubmFtZSBmb3IgYSBpbiBz
ZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhwcnMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2V4
cHIoYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiBkZWNscyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZGVjbChhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4g
c2VsZi5hcmdzXQorCisgICAgZGVmIHR5cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2EudHlw
ZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAg
cmV0dXJuICIsICIuam9pbihzdHIoYSkgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisKK2NsYXNzIGNw
cF9mdW5jKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0Cisg
ICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgaXNfZXh0ZW5zaW9uOiBib29sCisgICAgb3Zl
cmxvYWRfc3VmZml4OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJl
dHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246IGJv
b2wpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUg
PSByZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYuaXNf
ZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0g
IiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7c2VsZi5yZXR1
cm5fdHlwZX0ge3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSkiCisKKyAgICBkZWYgZ2V0X2Fy
Z3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBUdXBsZVtMaXN0W2NwcF9hcmddLCBMaXN0W2NwcF9hcmdd
XToKKyAgICAgICAgaW5fYXJncyA9IFtdCisgICAgICAgIG91dF9hcmdzID0gW10KKyAgICAgICAg
Zm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6CisgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAg
ICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCkgb3IgXAorICAgICAgICAgICAgICAgIGEudHlwZS5p
c19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikgYW5kICgoKGEu
dHlwZS5pc19zcGFuKCkgb3IgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpKSBhbmQgbm90IGEudHlw
ZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpKSk6CisgICAgICAgICAgICAgICAgb3V0
X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluX2FyZ3Mg
Kz0gW2FdCisgICAgICAgICAgICAjZm10OiBvbgorICAgICAgICByZXR1cm4gaW5fYXJncywgb3V0
X2FyZ3MKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZF90eXBlKHNlbGYsIHR5cGU6IGNwcF90eXBl
KToKKyAgICAgICAgaWYgdHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZChz
ZWxmKToKKyAgICAgICAgIyIgaW4gYS50eXBlLnR5cGVfbmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3Mu
YXJncyk6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICNpZiAiR0NHTHN5bmMi
IGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1lOgorICAgICAgICAjICAgIHJldHVybiBGYWxz
ZQorICAgICAgICBpZiBhbnkoYS5uYW1lID09ICJidWZTaXplIiBmb3IgYSBpbiBzZWxmLmFyZ3Mu
YXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEudHlwZS5p
c19wb2ludGVyKCkgYW5kIGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLmlzX3ZvaWQoKSBmb3IgYSBp
biBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYg
YW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoYS50eXBlKSBmb3IgYSBpbiBzZWxmLmFy
Z3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5yZXR1
cm5fdHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg
aWYgbm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLnJldHVybl90eXBlKToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK3dlYmtpdF9pcGNf
dHlwZXM6IERpY3RbY3BwX3R5cGUsIGNwcF90eXBlXSA9IHt9CisKK3dlYmtpdF9pcGNfdHlwZXNf
Y29udmVydGVyczogRGljdFtUdXBsZVtjcHBfdHlwZSwgY3BwX3R5cGVdLCBDcHBFeHByQ29udmVy
dGVyXSA9IHt9CisKKworZGVmIHdlYmtpdF9pcGNfY29udmVydF9leHByKGV4cHI6IGNwcF9leHBy
LCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgIiIiIENvbnZlcnRzIGBleHByYCBv
ZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlwZWAgIiIiCisgICAgY29udmVydCA9IHdlYmtpdF9pcGNf
dHlwZXNfY29udmVydGVycy5nZXQoKGV4cHIudHlwZSwgdHlwZSksIE5vbmUpCisgICAgaWYgbm90
IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4cHIudHlwZSA9PSB0eXBlOgorICAgICAgICAgICAgcmV0
dXJuIGV4cHIKKyAgICAgICAgY29udmVydCA9IGNwcF9pbXBsaWNpdF9jYXN0CisgICAgcmV0dXJu
IGNvbnZlcnQoZXhwciwgdHlwZSkKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl90cmFuc2Zl
cl90eXBlKHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1l
bnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAg
IGFyaXR5ID0gdHlwZS5nZXRfYXJpdHkoKQorICAgIHdlYmtpdF9pcGNfZWxlbWVudF90eXBlID0g
d2Via2l0X2lwY190eXBlc1tlbGVtZW50X3R5cGVdIGlmIG5vdCBlbGVtZW50X3R5cGUuaXNfdm9p
ZCgpIGVsc2UgZ2V0X2NwcF90eXBlKCd1aW50OF90JykKKyAgICBpZiBhcml0eSBpcyBub3QgTm9u
ZToKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0
cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9LCB7YXJpdHl9PiIpCisgICAgcmV0dXJuIGdldF9j
cHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlw
ZSl9PiIpCisKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKHR5cGU6IGNw
cF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5n
ZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgaWYgZWxlbWVudF90eXBl
LmlzX3ZvaWQoKToKKyAgICAgICAgZWxlbWVudF90eXBlID0gZ2V0X2NwcF90eXBlKCdHQ0dMY2hh
cicpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgaW5saW5lX2NhcGFj
aXR5ID0gMTYgaWYgImZsb2F0IiBpbiBlbGVtZW50X3R5cGUudHlwZV9uYW1lIGVsc2UgNAorICAg
ICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiVmVjdG9yPHtzdHIoZWxlbWVudF90eXBlKX0sIHtz
dHIoaW5saW5lX2NhcGFjaXR5KX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYic3RkOjph
cnJheTx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4iKQorCitk
ZWYgd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24oZXhwciA6IGNwcF9leHByLCB0
eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBwb2ludGVyX2Nhc3Rf
dHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAg
aWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUs
IGYibWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9
Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXplKCkpIikKKworICAgIGFzc2Vy
dCh0eXBlLmlzX3NwYW4oKSkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNw
YW48e3N0cih0eXBlLmdldF9hcml0eSgpKX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVy
X2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpKSIpCisKKyMgU2VlIG1lc3NhZ2VzLnB5
IGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlCit3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXMgPSBzZXQo
CisgICAgWyJ1aW50OF90IiwgInVpbnQxNl90IiwgInVpbnQzMl90IiwgInVpbnQ2NF90IiwgImlu
dDhfdCIsICJpbnQxNl90IiwgImludDMyX3QiLCAiaW50NjRfdCIsICJib29sIiwgImZsb2F0Iiwg
ImRvdWJsZSIgImJvb2wiXQorKQorCisKK2RlZiB3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2Zvcndh
cmRlcl90eXBlKHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfdHlwZToKKyAgICBpZiB0eXBlLnR5cGVf
bmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVybiB0eXBlCisg
ICAgcmV0dXJuIHR5cGUuZ2V0X3J2YWx1ZV90eXBlKCkKKworCitkZWYgd2Via2l0X2lwY19tb3Zl
X2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIGlmIGV4cHIudHlwZS50eXBl
X25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1cm4gZXhwcgor
ICAgIHJldHVybiBjcHBfbW92ZV9leHByKGV4cHIpCisKKworZGVmIHdlYmtpdF9pcGNfbXNnX25h
bWUoZnVuYzogY3BwX2Z1bmMpOgorICAgIHJldHVybiBmdW5jLm5hbWVbMF0uY2FwaXRhbGl6ZSgp
ICsgZnVuYy5uYW1lWzE6XSArIGZ1bmMub3ZlcmxvYWRfc3VmZml4CisKKworY2xhc3Mgd2Via2l0
X2lwY19tc2cob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBpbl9hcmdzOiBjcHBfYXJnX2xp
c3QKKyAgICBvdXRfYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1l
KGZ1bmMpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gZnVuYy5nZXRfYXJnc19jYXRlZ29y
aWVzKCkKKyAgICAgICAgaXBjX2luX2FyZ3MgPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2Eu
dHlwZV0sIGEubmFtZSkgZm9yIGEgaW4gaW5fYXJnc10KKyAgICAgICAgaXBjX291dF9hcmdzID0g
W10KKyAgICAgICAgaWYgbm90IGZ1bmMucmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAg
ICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbZnVuYy5yZXR1cm5f
dHlwZV0sICJyZXR1cm5WYWx1ZSIpXQorICAgICAgICBmb3IgYSBpbiBvdXRfYXJnczoKKyAgICAg
ICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0s
IGEubmFtZSldCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAg
ICAgICAgICAgICAgaXBjX2luX2FyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRf
dCIpLCBmInthLm5hbWV9U2l6ZSIpXQorICAgICAgICBzZWxmLmluX2FyZ3MgPSBjcHBfYXJnX2xp
c3QoaXBjX2luX2FyZ3MpCisgICAgICAgIHNlbGYub3V0X2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBj
X291dF9hcmdzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxm
Lm91dF9hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5u
YW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSAtPiAoe3N0cihzZWxmLm91dF9hcmdzKX0pIFN5bmNo
cm9ub3VzIgorICAgICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2Vs
Zi5pbl9hcmdzKX0pIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0
KToKKyAgICBuYW1lOiBzdHIKKyAgICBtc2dfbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNw
cF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBwcmVfY2FsbF9zdG10czogTGlz
dFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBM
aXN0W3N0cl0KKyAgICByZXR1cm5fc3RtdHM6IExpc3Rbc3RyXQorICAgIGluX2V4cHJzOiBMaXN0
W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBf
ZnVuYy5uYW1lCisgICAgICAgIHNlbGYubXNnX25hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGNw
cF9mdW5jKQorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUK
KyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5w
b3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtdCisgICAg
ICAgIHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAg
ICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisg
ICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisg
ICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmdzKGluX2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vz
c19vdXRfYXJncyhvdXRfYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQorCisgICAg
ZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oW3N0
cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkKKyAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5q
b2luKHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgaXNfYXN5bmMgPSBz
ZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykgPT0gMAorICAgICAg
ICBpZiBpc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAg
ICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYu
bXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7IiwK
KyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0g
IiIKKyAgICAgICAgICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0bXRzOiAKKyAgICAgICAgICAgICAg
ICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRSZXN1bHQgPSAiCisgICAgICAgICAgICAgICAgc2Vs
Zi5wb3N0X2NhbGxfc3RtdHMgPSBbCisgICAgICAgICAgICAgICAgICAgICJpZiAoc2VuZFJlc3Vs
dCkiICsgKCIgeyIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAg
ICAgICAgICAgICAgICBdICsgWyIgICAgIiArIHMgZm9yIHMgaW4gc2VsZi5wb3N0X2NhbGxfc3Rt
dHNdICsgWworICAgICAgICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9z
dG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgc2VsZi5j
YWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3VsdH1zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhw
cnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06
OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OyIsCisgICAgICAgICAgICBdCisKKworICAgIGRlZiBwcm9jZXNzX2luX2FyZ3Moc2VsZiwgaW5f
YXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBpIGluIGluX2FyZ3M6CisgICAgICAg
ICAgICBpZiBpLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAgICAgICAgIGFzc2Vy
dCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJz
ICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihpLnR5cGUsIGkubmFtZSksIHdl
YmtpdF9pcGNfdHlwZXNbaS50eXBlXSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJncyhzZWxm
LCBvdXRfYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBvIGluIG91dF9hcmdzOgor
ICAgICAgICAgICAgaWYgby50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICB2YWx1
ZV90eXBlID0gby50eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3ZhbHVlX3R5cGVdCisgICAgICAgICAg
ICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY192YWx1ZV90eXBlLCBvLm5hbWUgKyAiUmVwbHki
KQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUp
fSB7c3RyKHYubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgICAgICBlID0gY3BwX2V4cHIo
di50eXBlLCB2Lm5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2VdCisg
ICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAg
ICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgICAgICAgICAgZiJpZiAoe28ubmFtZX0pIiwKKyAg
ICAgICAgICAgICAgICAgICAgZiIgICAgKntvLm5hbWV9ID0ge3dlYmtpdF9pcGNfY29udmVydF9l
eHByKGUsIHZhbHVlX3R5cGUpfTsiCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9uCisgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxpZiBvLnR5cGUuaXNfc3BhbigpOgorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQorICAg
ICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVf
Y29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUs
IG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyAr
PSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAgICAgICAgICBzZWxm
Lm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpXQorICAgICAgICAgICAgICAg
IGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5p
bl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJzaXplX3QiKSwgZiJ7by5uYW1lfS5i
dWZTaXplIildCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAg
ICAgICAgICAgICAgICAgICBmIm1lbWNweSh7by5uYW1lfS5kYXRhLCB7di5uYW1lfS5kYXRhKCks
IHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXplb2Yoe3N0cih3ZWJraXRfaXBjX3R5cGUuZ2V0X2NvbnRh
aW5lZF90eXBlKCkpfSkpOyIKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcihvLnR5cGUsIG8ubmFt
ZSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNw
cF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBp
cGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBlXQorICAgICAgICBy
ZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKGlwY19yZXR1cm5fdHlwZSwgInJldHVyblZhbHVl
IikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIu
dHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5v
dXRfZXhwcnMgPSBbcmV0dXJuX3ZhbHVlX2V4cHJdICsgc2VsZi5vdXRfZXhwcnMKKyAgICAgICAg
c2VsZi5yZXR1cm5fc3RtdHMgPSBbZiJyZXR1cm4ge3N0cih3ZWJraXRfaXBjX2NvbnZlcnRfZXhw
cihyZXR1cm5fdmFsdWVfZXhwciwgcmV0dXJuX3R5cGUpKX07Il0KKworICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYubmFt
ZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAge2J9IiBmb3IgYiBpbiBz
ZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3Rt
dHMgKyBzZWxmLnJldHVybl9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiJcbntzdHIoc2VsZi5y
ZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxmLm5hbWV9KHtz
dHIoc2VsZi5hcmdzKX0pe25vbGludH0KK3t7e2JvZHl9Cit9fSIiIgorCisKK2NsYXNzIHdlYmtp
dF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAg
cmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgYm9keTog
TGlzdFtzdHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToK
KyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorCisgICAgICAgIHNlbGYucmV0dXJu
X3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVu
Yy5hcmdzCisgICAgICAgIHNlbGYuYm9keSA9IFsibm90SW1wbGVtZW50ZWQoKTsiXQorICAgICAg
ICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlwZS50eXBlX25hbWUgIT0gInZvaWQiOgorICAgICAgICAg
ICAgc2VsZi5ib2R5ICs9IFsicmV0dXJuIHsgfTsiXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2Ug
IiIKKyAgICAgICAgYm9keSA9ICJcbntcbiAgICAiICsgIlxuICAgICIuam9pbihzZWxmLmJvZHkp
ICsgIlxufSIKKyAgICAgICAgcmV0dXJuIGYiXG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtu
b2xpbnR9e2JvZHl9IgorCisKK2NsYXNzIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2Vu
ZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgQysrIGlt
cGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBf
cHJveHlfaW1wbF0KKyAgICB1bmltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNl
aG9sZGVyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVu
Y10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1w
bHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKyAgICAg
ICAgc2VsZi51bmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKGYpIGZv
ciBmIGluIHVuaW1wbGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBscyArIHNlbGYu
dW5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgK
KyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29u
dGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygp
KSwKKyAgICAgICAgKQorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKKyAg
ICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBpc19leHRlbnNpb246IGJv
b2wKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtz
dHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHByczogTGlzdFtj
cHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgcmV0dXJuX3ZhbHVl
X2V4cHI6IE9wdGlvbmFsW2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9m
dW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAg
ICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSBjcHBfZnVuYy5vdmVybG9hZF9zdWZmaXgKKyAgICAg
ICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtdKQorICAgICAgICBzZWxmLmlzX2V4dGVuc2lv
biA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0g
W10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxf
c3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRf
ZXhwcnMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gTm9uZQorCisgICAg
ICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAg
ICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisg
ICAgICAgIHNlbGYucHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3MuYXJncywgc2V0KGluX2FyZ3Mp
LCBzZXQob3V0X2FyZ3MpKQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYg
cHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9ucygpLiIgaWYg
c2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgorCisgICAgICAgIGluX2V4cHJzID0gIiwgIi5qb2lu
KHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IGxlbihz
ZWxmLm91dF9leHBycykgPT0gMAorCisgICAgICAgIGNhbGxfZXhwciA9IGYibV9jb250ZXh0LT57
ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5f
dmFsdWVfZXhwcjoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHBy
fTsiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFtmIntz
dHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxfZXhwcn07Il0KKyAgICAgICAgaWYg
bm90IGlzX2FzeW5jOgorICAgICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBm
b3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRz
ICs9IFtmImNvbXBsZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9KTsiXQorCisgICAgZGVmIHByb2Nl
c3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddLCBpbl9hcmdzOiBTZXRbY3BwX2FyZ10s
IG91dF9hcmdzOiBTZXRbY3BwX2FyZ10pOgorICAgICAgICBmb3IgYSBpbiBhcmdzOgorICAgICAg
ICAgICAgaWYgYS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICBhc3Nl
cnQgRmFsc2UKKyAgICAgICAgICAgIGlmIGEgaW4gaW5fYXJnczoKKyAgICAgICAgICAgICAgICBz
ZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IHNlbGYucHJvY2Vzc19vdXRfYXJnKGEpCisgICAgICAgIGlmIHNlbGYub3V0X2V4cHJzOgorICAg
ICAgICAgICAgb3V0X2FyZ19kZWNscyA9ICIsICIuam9pbihmIntzdHIoZS50eXBlKX0iIGZvciBl
IGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2NwcF9h
cmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh7b3V0X2FyZ19kZWNsc30p
PiYmIiksICJjb21wbGV0aW9uSGFuZGxlciIpXQorCisgICAgZGVmIHByb2Nlc3NfaW5fYXJnKHNl
bGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyh3ZWJr
aXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBl
XSksIGEubmFtZSldCisgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVy
dF9leHByKGNwcF9leHByKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSwgYS50eXBl
KV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAg
IGlmIGEudHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJn
KGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9j
YWxsX3N0bXRzICs9IFtmIntzdHIodmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1l
KX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoYS50
eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9IildCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFs
dWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgd2Via2l0X2lwY192YWx1
ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1tlLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9l
eHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY192YWx1ZV90eXBl
KV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICBh
c3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAg
ICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9
U2l6ZSIpCisgICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbc2l6ZV9hcmddCisgICAgICAg
ICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShh
LnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntz
dHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0oc3RhdGljX2Nhc3Q8c2l6
ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBb
Y3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIGYie3N0b3JlX2FyZy5uYW1lfSIpXQorICAgICAgICAg
ICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAg
ICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3Rv
cmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAg
ZWxpZiBhLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50
eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2Fy
Zyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAg
ICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0
cihzdG9yZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9
IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpXQorICAgICAgICAgICAg
d2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICBz
ZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVf
YXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIGFzc2VydCBhLnR5cGUuaXNfcmVmZXJlbmNlKCkKKyAgICAgICAgICAg
IHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAgICAg
dmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAg
ICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c2VsZi5ucyh2YWx1ZV9hcmcudHlw
ZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgZSA9IGNwcF9l
eHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHNlbGYuaW5f
ZXhwcnMgKz0gW2VdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19t
b3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY190eXBlKSldCisK
KyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBl
KToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0dXJuX3R5cGVd
CisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIocmV0dXJuX3R5cGUsICJyZXR1
cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92YWx1
ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAgICAg
IHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZl
cnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgaXBjX3JldHVybl90eXBlKSldCisgICAgICAgIHNl
bGYucmV0dXJuX3ZhbHVlX2V4cHIgPSByZXR1cm5fdmFsdWVfZXhwcgorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAgICAgIHtifSIgZm9yIGIg
aW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9zdF9jYWxs
X3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIiAgICB2b2lkIHtzZWxmLm5hbWV9e3NlbGYub3Zl
cmxvYWRfc3VmZml4fSh7c3RyKHNlbGYuYXJncyl9KQorICAgIHt7e2JvZHl9CisgICAgfX0iIiIK
KworICAgIGRlZiBucyhzZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAgICMgVE9ETzogbmFt
ZXNwYWNlIGluZm8gaXMgbm90IHN0b3JlZCBpbiBuYW1lcy4KKyAgICAgICAgaWYgdHlwZS50eXBl
X25hbWUgPT0gIkFjdGl2ZUluZm8iOgorICAgICAgICAgICAgcmV0dXJuICJXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6IiArIHN0cih0eXBlKQorICAgICAgICByZXR1cm4gc3RyKHR5cGUpCisK
K2RlZiB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzIDogSXRlcmFibGVb
Y3BwX2Z1bmNdKToKKyAgICBjb3VudHMgPSBjb2xsZWN0aW9ucy5Db3VudGVyKGYubmFtZSBmb3Ig
ZiBpbiBmdW5jcykKKyAgICBzdWZmaXhlcyA6IENvdW50ZXJbc3RyXSA9IGNvbGxlY3Rpb25zLkNv
dW50ZXIoKQorICAgIGZvciBmIGluIGZ1bmNzOgorICAgICAgICBpZiBjb3VudHNbZi5uYW1lXSA+
IDE6CisgICAgICAgICAgICBmLm92ZXJsb2FkX3N1ZmZpeCA9IHN0cihzdWZmaXhlc1tmLm5hbWVd
KQorICAgICAgICAgICAgc3VmZml4ZXMudXBkYXRlKFtmLm5hbWVdKQorCisKK2NsYXNzIGNvbnRl
eHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0
W3dlYmtpdF9pcGNfY3BwX2ltcGxdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0
ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBf
aW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgor
ICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBzZWxmLmltcGxzKQorCisg
ICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAg
Y29udGV4dF9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc190ZW1w
bGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3Mg
Y29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgV2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZ2VuZXJhdG9yLiIK
KyAgICBtc2dzOiBMaXN0W3dlYmtpdF9pcGNfbXNnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLm1zZ3MgPSBbd2Via2l0
X2lwY19tc2coZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X21lc3NhZ2VzKHNlbGYp
OgorICAgICAgICByZXR1cm4gIiIuam9pbihzdHIobSkgZm9yIG0gaW4gc2VsZi5tc2dzKQorCisg
ICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKGNvbnRleHRfbWVzc2Fn
ZXNfZm4sIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X21lc3NhZ2Vz
KCkpKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYzogc3RyLCBhcmdfaW5kZXg6IGlu
dCk6CisgICAgciA9IGFyZ19zcGVjLnJzcGxpdCgiICIsIDEpCisgICAgbmFtZSA9ICIiCisgICAg
dHlwZSA9IE5vbmUKKyAgICBpZiBsZW4ocikgPiAxIGFuZCByWzBdICE9ICJjb25zdCI6CisgICAg
ICAgIG5hbWUgPSByWzFdLnN0cmlwKCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShyWzBd
KQorICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSAiYXJne30iLmZvcm1hdChhcmdfaW5kZXgpCisg
ICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoYXJnX3NwZWMpCisgICAgcmV0dXJuIGNwcF9hcmco
dHlwZSwgbmFtZSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzOiBJdGVy
YWJsZVtzdHJdKToKKyAgICByZXR1cm4gY3BwX2FyZ19saXN0KFtjcmVhdGVfY3BwX2FyZyhhcmdf
c3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nfc3BlY3MpXSkK
KworCitkZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwgYXJn
c19zcGVjczogTGlzdFtzdHJdLCBpc19leHRlbnNpb246IGJvb2wpOgorICAgIHJldHVybiBjcHBf
ZnVuYyhuYW1lPW5hbWUsIHJldHVybl90eXBlPWdldF9jcHBfdHlwZShyZXR1cm5fc3BlYyksIGFy
Z3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzKSwgaXNfZXh0ZW5zaW9uPWlzX2V4dGVu
c2lvbikKKworCitkZWYgcmVhZF9saW5lc191bnRpbChsaW5lcyA6IEl0ZXJhYmxlW3N0cl0sIG1h
dGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jbc3RyLCBOb25lLCBOb25lXToKKyAgICBmb3IgbGluZSBp
biBsaW5lczoKKyAgICAgICAgaWYgcmUubWF0Y2gobWF0Y2gsIGxpbmUuc3RyaXAoKSk6CisgICAg
ICAgICAgICBicmVhaworICAgICAgICB5aWVsZCBsaW5lCisKK2RlZiBtYWluKCk6CisgICAgcGFy
c2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10iKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGhlbHA9IlByaW50IHNvbWUgZGVidWcgaW5mbyBmcm9tIHRoZSBnZW5lcmF0b3Igc2NyaXB0IikK
KyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgIyBDb25zdHJ1Y3QgdGhl
IGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQVSBwcm9j
ZXNzLgorCisgICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMgcmVtb3ZlZCwg
d2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICMgd2l0aCB0aGUg
ZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBhbiBleHRlbnNp
b24gZnVuY3Rpb24uCisgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3RyXSA9IHNldCgp
CisgICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGZvciBs
aW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnZpcnR1
YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToK
KyAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAgICAg
ICAgICBuYW1lPW1bMl0sCisgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisg
ICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSks
CisgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUoW3N0cihmdW5j
KV0pCisgICAgZnVuY3MgPSBbXQorICAgIHVuaW1wbGVtZW50ZWQgPSBbXQorICAgIGZvciBmbiBp
biBmdW5jdGlvbnNfaW5wdXRfZm5zOgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAg
ICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIGZvciBfIGlu
IHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBp
bXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBz
Y3JpcHQuIik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBmb3IgbGluZSBp
biByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0
ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2gociJc
cyooXFMrKVxzKyhcdyspXCgoLiopXCkgZmluYWw7IiwgbGluZSkKKyAgICAgICAgICAgICAgICBp
ZiBtOgorICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWUgPSBtWzJdCisgICAgICAgICAgICAg
ICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAgICAgICAgICBu
YW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0s
CisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNz
KG1bM10pLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5zaW9u
ID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCisgICAgICAgICAgICAgICAgICAg
IGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNz
LmFwcGVuZChmdW5jKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pbXBsZW1lbnRlZC5hcHBlbmQoZnVuYykKKworCisgICAgd2Via2l0X2lwY19y
ZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcykKKyAgICAjIEluaXRpYWxpemUgV2ViS2l0IElQ
QyBnZW5lcmF0aW9uLiBDb25zdHJ1Y3QgdHlwZSBtYXBwaW5ncyBmb3IgdGhlIHVzZWQgQysrIHR5
cGVzIC0+IElQQyB0eXBlcy4KKyAgICAjIFRPRE86IG5hbWVzcGFjaW5nIGlzc3Vlcy4KKyAgICBh
aV90eXBlID0gZ2V0X2NwcF90eXBlKCJBY3RpdmVJbmZvJiIpCisgICAgYWlfdHJhbnNmZXJfdHlw
ZSA9IGdldF9jcHBfdHlwZSgiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8i
KQorICAgIHdlYmtpdF9pcGNfdHlwZXNbYWlfdHlwZV0gPSBhaV90cmFuc2Zlcl90eXBlCisKKyAg
ICB3aXRoIG9wZW4odHlwZXNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGxpbmVzID0gaXRlcihm
LnJlYWRsaW5lcygpKQorICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAi
Ly8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUg
bGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAg
ICAgcGFzcworICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8g
RW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAg
ICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc3RkOjppc19zYW1lX3Y8KFx3
KyksIChcdyspPlwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAg
IHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2NwcF90eXBlKG1bMV0pXSA9IGdldF9jcHBfdHlwZShtWzJd
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEZJWE1FOiBIZXJlIHdl
IHVzZSA8PSBpbnN0ZWFkIG9mID09IGR1ZSB0byBHQ0dMU3luYyBiZWluZyBhIHBvaW50ZXIuIFRo
aXMgZW5kcyB1cCBmYWlsaW5nIGlmIHRoZXJlIGV2ZXIgaXMKKyAgICAgICAgICAgICMgYXJyYXlz
IG9mIHBvaW50ZXJzLCBzaW5jZSBhcnJheXMgYXJlIGN1cnJlbnRseSByZWludGVycHJldC1jYXN0
ZWQuCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwo
KFx3KylcKSA8PSBzaXplb2ZcKChcdyspXCkgJiYgc2l6ZW9mXCgoXHcrKVwpID09IHNpemVvZlwo
KFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNw
cF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBn
ZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjcHBfY2FzdF90aHJvdWdoX3R5cGUg
PSBnZXRfY3BwX3R5cGUobVs0XSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2Nw
cF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252
ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21f
cG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICB3
ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3Jl
aW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipz
dGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGlu
ZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3Bw
X3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJd
KQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUK
KyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBp
cGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190
eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgIyBGb3IgYWxsIHR5cGVzIGluIHRoZSBpbnB1
dCBBUEksIGZvcm0gY29ycmVzcG9uZGluZyBJUEMgdHlwZXMgYW5kIGNvbnZlcnNpb25zLgorICAg
ICMgVE9ETzogdGhpcyBpcyBub3QgZHJpdmVuIGJ5IHRoZSB0eXBpbmcuCisgICAgYWxsX3R5cGVz
ID0gc2V0KCkKKyAgICBmb3IgZnVuYyBpbiBmdW5jczoKKyAgICAgICBhbGxfdHlwZXMudXBkYXRl
KGZ1bmMuYXJncy50eXBlcygpICsgW2Z1bmMucmV0dXJuX3R5cGVdKQorICAgICMgU29ydCBieSBs
ZW4gc28gdGhhdCB0ZW1wbGF0ZSBhcmdzIGNvbWUgYmVmb3JlIHRlbXBsYXRlcy4KKyAgICBmb3Ig
Y3BwX3R5cGUgaW4gc29ydGVkKGFsbF90eXBlcywga2V5PWxhbWJkYSB4OiBsZW4oeC50eXBlX25h
bWUpKToKKyAgICAgICAgaWYgY3BwX3R5cGUgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAKKyAgICAgICAgaWYgY3BwX3R5cGUuaXNfZHluYW1pY19zcGFu
KCkgb3IgY3BwX3R5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IHdl
YmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNmZXJfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgIHdl
YmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgp
CisgICAgICAgICAgICBpZiBjcHBfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgp
OgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUs
IHRyYW5zZmVyX3R5cGUpXSA9IHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJw
cmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29u
dmVydGVyc1sodHJhbnNmZXJfdHlwZSwgY3BwX3R5cGUpXSA9IHdlYmtpdF9pcGNfbWFrZV9nY2ds
c3Bhbl9jb252ZXJzaW9uCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0b3Jl
X3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoY3BwX3R5cGUpCisgICAgICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zl
cl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAg
IGVsaWYgY3BwX3R5cGUuaXNfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29uc3RfcmVmZXJl
bmNlKCkgb3IgY3BwX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAgICB2YWx1ZV90eXBl
ID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKSBpZiBub3QgY3BwX3R5cGUuaXNfY29udGFpbmVy
KCkgZWxzZSBjcHBfdHlwZQorICAgICAgICAgICAgaWYgdmFsdWVfdHlwZS5pc19jb250YWluZXIo
KToKKyAgICAgICAgICAgICAgICBjb250YWluZWRfdHlwZSA9IHZhbHVlX3R5cGUuZ2V0X2NvbnRh
aW5lZF90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID0g
d2Via2l0X2lwY190eXBlc1tjb250YWluZWRfdHlwZV0KKyAgICAgICAgICAgICAgICBpZiB3ZWJr
aXRfaXBjX2NvbnRhaW5lZF90eXBlID09IGNvbnRhaW5lZF90eXBlOgorICAgICAgICAgICAgICAg
ICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90
eXBlKGYie3ZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lcl9uYW1lKCl9PHtzdHIod2Via2l0X2lwY19j
b250YWluZWRfdHlwZSl9PiIpCisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNb
Y3BwX3R5cGVdID0gdHJhbnNmZXJfdHlwZQorICAgICAgICAgICAgICAgICAgICAjIFRPRE86IEhl
cmUgbWlnaHQgYmUgY2FzZSB3aGVyZSBWZWN0b3I8R0NHTGludD4gd2FzIHVzZWQgaW4gdGhlIGlu
dGVyZmFjZSBhbmQgVmVjdG9yPGludDMyX3Q+IGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAg
IyBpbiB0aGUgSVBDIGRlZmluaXRpb24uIFRoZXJlIGlzIG5vIHNlbnNpYmxlIHdheSB0byBkbyB0
aGlzIGF0IHRoZSBtb21lbnQuIFdlIGRvIG5vdCBjb252ZXJ0LCByYXRoZXIKKyAgICAgICAgICAg
ICAgICAgICAgIyBleHBlY3QgdGhhdCBhbGwgdGhlIGludm9jYXRpb25zIGFyZSB0YWtlbiBjYXJl
IG9mIHRoZSBmYWN0IHRoYXQgR0NHTGludCBpcyB0aGUgc2FtZSB0eXBlIGFzIGludDMyX3QuCisg
ICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIG5vdCBob2xkIGZvciBhbGwgdHlwZXMgc3Vj
aCBhcyBHQ0dMYm9vbGVhbi4KKyAgICAgICAgICAgICAgICAgICAgI3dlYmtpdF9pcGNfdHlwZXNf
Y29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJheV9yZWludGVy
cHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
d2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGNwcF90eXBlLmdldF92YWx1
ZV90eXBlKCkKKyAgICAKKyAgICAjIFRoZSBpbnB1dCB0byB0aGUgZ2VuZXJhdG9ycyBpcyBsaXN0
IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUuCisgICAgIyBSdW4gdGhlIHZhcmlvdXMgZ2VuZXJhdG9y
cy4KKyAgICBnZW5lcmF0b3JzID0gWworICAgICAgICBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRf
aXBjX2dlbmVyYXRvcihmdW5jcywgdW5pbXBsZW1lbnRlZCksCisgICAgICAgIGNvbnRleHRfbXNn
X3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAgICAgICAgY29udGV4dF9jcHBfd2Via2l0
X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgIF0KKyAgICBmb3IgZyBpbiBnZW5lcmF0b3JzOgor
ICAgICAgICBnLmdlbmVyYXRlKCkKKworICAgIGlmIG9wdGlvbnMudmVyYm9zZToKKyAgICAgICAg
cHJpbnQoIkltcGxlbWVudGVkOiIpCisgICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAge3N0cihp
KX0gZmluYWxcbiIgZm9yIGkgaW4gZnVuY3MpKQorICAgICAgICBwcmludCgiVW5pbXBsZW1lbnRl
ZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIodSl9IGZpbmFsXG4iIGZvciB1
IGluIHVuaW1wbGVtZW50ZWQpKQorICAgICAgICBwcmludChmIkltcGxlbWVudGVkOiB7bGVuKGZ1
bmNzKX0sIHVuaW1wbGVtZW50ZWQ6IHtsZW4odW5pbXBsZW1lbnRlZCl9LCB0b3RhbDoge2xlbihm
dW5jcykrbGVuKHVuaW1wbGVtZW50ZWQpfSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZSBtYXAg
dG8gV2ViS2l0IElQQyB0eXBlIG1hcDoiKQorICAgICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMu
aXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAg
ICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSAtPiB7c3RyKHdlYmtpdF9pcGNfdHlwZXNbdF0p
fSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZXMgd2l0aG91dCBXZWJLaXQgSVBDIHR5cGU6IikK
KyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0
IG5vdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgICAgIHByaW50KGYiICAgIHtz
dHIodCl9IikKKyAgICAgICAgcHJpbnQoIldlYktpdCBJUEMgdHlwZSBjb252ZXJzaW9ucyIpCisg
ICAgICAgIGZvciAoYSwgYiksIGNvbnZlcnRlciBpbiB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRl
cnMuaXRlbXMoKToKKyAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIoYSl9IC0+IHtzdHIoYil9
IDoge2NvbnZlcnRlci5fX25hbWVfX30iKQorICAgICAgICBwcmludCgiRG9uZS4iKQorICAgIHJl
dHVybiAwCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWlu
KCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNDhiOTM4ZmExMWY4MTVkMzdlZTgwMzc3ZmQ2NGIwYmM3M2RjODE0MC4uNzYx
NmE3YjcwMTFjZGQxZmY3Yjk4NmY2ZDIzMmIxMzE0OTZiY2U5YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBv
ZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1w
bGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBBZGRzIHRlc3QgZXhw
ZWN0YXRpb25zIGZvciB0aGUgbWlzc2luZyBmdW5jdGlvbmFsaXR5LiBEb2VzIG5vdCB5ZXQKKyAg
ICAgICAgZW5hYmxlIHRoZSB0ZXN0cyB0aGF0IGFjdHVhbGx5IHBhc3MgYnV0IHdoaWNoIHdlcmUg
c2tpcHBlZCBiZWZvcmUgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICog
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0xMi0wMSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRhYmxl
L3dyaXRhYmxlIHRvIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4NTMwNTgwMDMzOTBmZDc1
MzdkYzBjNi4uZGE1NjM4NjI4OWQ2Yzk0ZDRmZmFlY2E4OWFkMmJhOTkzYjEwMTZjOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTcsNiArMzE3LDE0IEBA
IGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93
ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmdsIFsgU2tpcCBdCiBqcy9z
aGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIx
ODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5odG1sIFsg
VGltZW91dCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdl
MkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBm
YXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24u
aHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC93
ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIx
OTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVz
dC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dlYmds
L2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmdw
dSBbIFNraXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlwZXMu
aHRtbCBbIFNraXAgXQo=
</data>
<flag name="commit-queue"
          id="432238"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415126</attachid>
            <date>2020-12-01 04:20:09 -0800</date>
            <delta_ts>2020-12-01 04:22:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201142006.patch</filename>
            <type>text/plain</type>
            <size>568005</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4
OGJkNDA3N2EwYzU0YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQxYTM1
Y2MwMDhhZWE2OWZmZjJjZDkxZDAyMzJlZmEwNzFlN2VkNTQuLjk4MTE1ZTE1Yjc2MzQ5NjFhYzM5
MGRiMjNkNTMwYjczZDI1ZDUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJj
Nzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQw
MGIwZmNlMjQxZWZmYjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiAr
MzU3LDE0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyMmVkNmNjMjRlNmU2Njg4NjBmNzRjYzllZGQ4NGIzZDlkZGMzMC4uOTUzMWI0
OTI3MWQwZDQwMWFkODIyNzkxZjg0ZWZkODY1N2Q2NmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2
RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07
CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsK
IAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIy
Mjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2
RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5
NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Niw2
ICsyMjQ2LDggQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkz
NkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjMsOSAr
MTAyMjUsMTQgQEAKIAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEw
MzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4
MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcy
NTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5pZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjEzLDYgKzI2NjIwLDggQEAKIAkJ
CQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJ
CQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQx
ODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJ
N0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2Ft
cGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9T
YW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovLApAQCAtMjY3NzksNiArMjY3ODgsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5
RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBE
NkExMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlC
Mjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJ
CQkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBF
MDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1
OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RB
NTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2
NzkwLDYgKzI2ODAxLDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZC
RDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYx
NkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2Vy
LmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwICovLApAQCAtMzIwODksNiArMzIxMDEsNyBAQAogCQkJCTdCMTAzMzlFMjU0
OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUz
QyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0MDI1LDYgKzM0MDM4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBF
Q0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAw
MTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIy
RkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVv
U2FtcGxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVj
NzE3NDU5N2YwNmUwZTUwOWU3OGZhYS4uMmY4Y2JmMDg3MDUwYzVmMDg2ODBmMmVkOTdkMWYzMDg4
NjYxYTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3NywyMSArNjc3LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZl
clN1YkRhdGEoKSBjYWxscyB0byB1c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0
ciA9IG1fY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNl
dC51bnNhZmVHZXQoKSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0
aFB0ci51bnNhZmVHZXQoKSAqIGNoZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBo
aWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNw
eShzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5i
eXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICog
ZWxlbWVudFNpemUpOwotCi0gICAgaWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkp
Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgImdldEJ1ZmZlclN1YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZm
ZXIiKTsKLSNlbmRpZgotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCk7CisgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9m
ZnNldCwgbWFrZUdDR0xTcGFuKHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVz
cygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBj
b3B5TGVuZ3RoICogZWxlbWVudFNpemUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIpCkBAIC0xNzAyLDcgKzE2OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxpc3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xOTY3
LDkgKzE5NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0
LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8
V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAg
LTIwMTQsNyArMjAwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBs
ZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQogCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHVu
aXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJpbmRTYW1wbGVyIiwgImludmFs
aWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNTksMTcgKzIwNDgsMTEg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAgICAgICAgaW50IHZh
bHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0
IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2Ft
cGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLm9iamVjdCgp
LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxp
ZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMTgsNyArMjEwMSw3IEBA
IEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdMU3lu
YyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNsaWVudFdhaXRTeW5jIiwgInRpbWVv
dXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIpOwogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19GTFVTSF9DT01NQU5E
U19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZhbGlkIGZsYWdzIik7CiAgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CkBAIC0yMTc5LDkg
KzIxNjIsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVs
ZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIs
IGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQVNTRVJUKGZl
ZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAKKwogICAg
IGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRi
YWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjQ4LDcgKzIyMzEsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tQ
cmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiZWdpblRyYW5zZm9ybUZlZWRiYWNr
IiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1pdGl2ZSBtb2RlIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIyODgsNyArMjI3MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRUcmFuc2Zvcm1GZWVkYmFjayIs
ICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwogCiAg
ICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVzZWQoZmFsc2UpOwpAQCAtMjI5OSw3
ICsyMjgyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28KIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJ0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpT
RVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWluZ3Muc2l6ZSgpID4gbV9tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAtMjQ4NSwyNCArMjQ2OCwyNCBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPEdDR0xpbnQ+IHJl
c3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3aXRjaCAocG5hbWUp
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
VFlQRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
eCk7IH0pOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRToKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TklGT1JNX0JMT0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
T0ZGU0VUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQVJSQVlfU1RSSURF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklYX1NUUklERToKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlm
b3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dCk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOiB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgpOyB9KTsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDggKzM1NTUsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoQ2xlYXJDYWxs
ZXJPdGhlcik7CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+
cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmUwM2E4OWZjNjk1M2QyMDAwODJmMjQ5NTQ5
NzYzYmUwNWE5NjE5NS4uYTQ0OTk0ZTBlZDcwMjBkMzQzMWE4ZTBjMjBiZDc1MGU4YzA3NDEwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTczMiw4ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxl
bWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENv
bnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9y
RXZlbnQsCkBAIC00Mzk1LDEwICs0Mzk0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAg
ICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0g
ICAgR0NHTHNpemVpIGxlbmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAg
IEdDR0xzaXplaSByb3dzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFk
blBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7
CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQog
ICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQy
ODI4ZjJkNTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIFdlYkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7
Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFw
aGljc0NvbnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5j
U3RhdHVzKTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldFN5bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBp
ZiAobV9zeW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAg
ICBzY2hlZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjli
ODZiYzMxODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cApAQCAtNTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3Nl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVO
QUJMRShXRUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KGF0dHJpYnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJ
RCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5
SUQoKTsKQEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1f
cGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZh
bCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQor
ICAgIC8vIFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQg
d29yaywgcmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlz
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3
NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEz
Y2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRp
b25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCAzYTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0
OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJ
RCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxw
dHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVy
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRl
eCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2Mz
MzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdp
bmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFs
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAv
LyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAg
ICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qg
PSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUy
ZmIzLi43YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAt
MzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9j
ZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0lu
V2ViUHJvY2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1By
b2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZi
ZDFkNDNjMDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFm
NjRhYTBkZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBA
IC05Niw2ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1
bmRsZUlzV2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3Rh
dGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07Cisg
ICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQ
cm9jZXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9
IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4
NjczNDQ3NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wu
aApAQCAtMjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3No
YWRlcl9jb21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NU
QVRVU19LSFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9l
eHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3Ig
ZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8g
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6
CiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3Vw
TWFya2VyRVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
KSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVy
cwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVt
b3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0g
MDsKQEAgLTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzQU1EKCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11
c3QgYmUgYXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNo
IGNvbmZpZ3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBk
ZjRhMTE5YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIx
YWVhN2E1YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQ
SElDU19DT05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAi
Rm9ybWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5o
IgpAQCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6
OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBy
ZXN1bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ct
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0
ZXMsIGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4
dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0
dHJzKGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1
MmRjNmVmMy4uYmE3MmIzMWFkNjU4NWI0YTliYjVkNmFkZWZjMWJmMTNkZjVmM2JhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0
IGZvciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGlj
OgogICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGlj
OgogICAgICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFw
aGljc0NvbnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRp
b24gaW4gY29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZm
ZWN0IHRoZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGlj
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2Ny
ZWVuLCBHcmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZp
cnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGll
bnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQg
cmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7
IH0KIAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCB1bmRlcnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZv
aWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05
ODAsNyArOTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXpl
aSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykg
PSAwOwogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0
dHJpYgotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlw
dHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBt
b2RlKSA9IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0x
MTI0LDggKzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5
IHBvaW50cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1
YWwgR0NHTHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAg
ICB2aXJ0dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xp
bnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdD
R0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBm
aWx0ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9
IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZp
cnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9
IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
ID0gMDsKQEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
ID0gMDsKICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNh
bXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJm
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMo
R0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFs
IEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdD
R0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1l
b3V0KSA9IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRT
eW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGlu
dCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdD
R0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVy
IC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NH
THVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dM
dWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBn
ZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgdW5pZm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykgPSAwOwotCisgICAgCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdD
R0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBwbmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9v
bGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0xMzk0LDcgKzEzOTQsNiBAQCBpbmxpbmUgR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdQogICAgIHJldHVybiB2YWx1ZVswXTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCA4NWMyOWE0YjZlNTYxMTBkYzdiZDc0N2FlMzM5ODdj
MzQwMzc1ZGYxLi4zYjA2NGMzZTc2OGVjYzRiZjAyYjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+
CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NCwxMyArNDYsMTcg
QEAgdHlwZWRlZiB1bnNpZ25lZCBHQ0dMdWludDsKIHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0Owog
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQ0dMaGFsZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dM
Y2xhbXBmOwordHlwZWRlZiBjaGFyIEdDR0xjaGFyOwordHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMq
IEdDR0xzeW5jOwordHlwZWRlZiB2b2lkIEdDR0x2b2lkOworCisvLyBUaGVzZSBHQ0dMIHR5cGVz
IGRvIG5vdCBzdHJpY3RseSBtYXRjaCB0aGUgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wg
RVMgMi4wCisvLyBoZWFkZXIgZmlsZSBmb3IgYWxsIHBsYXRmb3Jtcy4KIHR5cGVkZWYgaW50cHRy
X3QgR0NHTGludHB0cjsKIHR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRyOwotdHlwZWRlZiBj
aGFyIEdDR0xjaGFyOwordHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIHR5cGVkZWYgbG9u
ZyBsb25nIEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7
Ci10eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Ci10eXBlZGVmIHZvaWQgR0NHTHZv
aWQ7CiAKIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIApAQCAtNTgsMTMgKzY0
LDE3IEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5zaWdu
ZWQgR0x1aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPgoraW5saW5lIGNvbnN0ZXhwciBz
aXplX3QgZ2NHTFNwYW5EeW5hbWljRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGdjR0xTcGFu
RHluYW1pY0V4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQq
IGFycmF5KQorICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3Qgc2l6ZSA9IEV4
dGVudCkKICAgICAgICAgOiBkYXRhKGFycmF5KQotICAgIHsgfQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQogICAgIEdDR0xTcGFuKFQg
KCZhcnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQpAQCAtNzIs
NiArODIsMTIgQEAgc3RydWN0IEdDR0xTcGFuIHsKICAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3Bh
bjxVLCBFeHRlbnQ+JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxl
X3Y8VSgqKVtdLCBUKCopW10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQogICAgICAgICA6
IGRhdGEob3RoZXIuZGF0YSkKICAgICB7IH0KKyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIEV4
dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQorICAg
IEdDR0xTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0K
ICAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJl
dHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC03OSw3ICs5NSw3IEBAIHN0cnVjdCBHQ0dM
U3BhbiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxULCBn
Y0dMU3BhbkR5bmFtaWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1
ZlNpemVfKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXpl
XykKQEAgLTEyMSw2ICsxMzcsMTEgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CiAgICAg
ICAgIDogZGF0YShvdGhlci5kYXRhKQogICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAq
IHNpemVvZihVKSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+
JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXpl
KGFycmF5LnNpemUoKSAqIHNpemVvZihVKSkKKyAgICB7IH0KICAgICBHQ0dMdm9pZCogZGF0YTsK
ICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CkBAIC0xNTIsOCArMTczLDExIEBAIHN0cnVj
dCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+CiBHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1HQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+OwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+Jikg
LT4gR0NHTFNwYW48VCwgTj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdD
R0xTcGFuPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdDR0xT
cGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzBmMmYzMDY4ZmYwMjkxYWY1YmU2MGE1YzVmNmUxZWVi
N2E0YWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgcGxhdGZvcm1J
bml0aWFsaXplKCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CisKK1BsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVRleHR1
cmUoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitFeHRlbnNpb25zR0wmIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENv
bnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAor
eworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQorewor
ICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlm
IChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7
CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXll
ckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7Cisg
ICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFy
IHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0
cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAgIGZvciAoYXV0byogY2xp
ZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlkQ29tcG9z
aXRlKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRv
Q2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7CisgICAgaWYgKCFjb250ZXh0QXR0cmlidXRl
cygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
PSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZv
ciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3Vs
ZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVk
KCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkpIHsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKKyAgICAg
ICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7CisgICAgfQorfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0
aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFp
bGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5h
ZGQoZXh0ZW5zaW9uKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK1Bs
YXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZThh
MDkxNGQ4ZThlMjllMmQyODMxMjUwNGM0ZWIzMjBiMTE5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JK
Q19DTEFTUyBXZWJHTExheWVyOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW47CisjZW5kaWYKKworLy8gQSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRz
IHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJh
d2luZyBidWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9y
dC4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
IDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
IG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAg
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Qg
ZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwor
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7
CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmlu
YWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBlbmFi
bGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7
CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCisgICAgdXNpbmcg
RXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRV
bnRpbEluaXRpYWxpemVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisK
KyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxT
dHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5z
aW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91
bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0g
ZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9
OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAyODNkYTgyYzZhNjAy
ZWE0YjU1N2M2ODZjZmQ4MjNkMDgxYzU1ZTRhLi43YzE1MWZhMjg1MGYzM2MxNDlhOWRjODIyMzgx
YjhmY2JkZTljYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00NiwyOCArNDYsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0
cmluZykKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9p
c0FNRChmYWxzZSkKLSAgICAsIG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlv
bihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2Up
Ci0gICAgLCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKICAg
ICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8v
IEZJWE1FOiBpZGVhbGx5LCByZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBB
TkdMRQotICAgIC8vIHN1YnN1bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJp
dmVyIHdvcmthcm91bmRzLgotICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9S
RU5ERVJFUikpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3Zl
bmRvci5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRv
ckNvbXBvbmVudHMuY29udGFpbnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29t
cG9uZW50cy5jb250YWlucygiYW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlm
ICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwg
PSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIp
KQotICAgICAgICBtX2lzSW1hZ2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdM
RTo6fkV4dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDcgKzgzLDcgQEAgYm9v
bCBFeHRlbnNpb25zR0xBTkdMRTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCitHTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpO
T19FUlJPUjsKIH0KQEAgLTExNCwxMCArOTQsMTEgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29u
dGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5H
VEhfQU5HTEUpOworCiAgICAgaWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xf
VFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1p
bmF0aW9uLgotICAgIGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0NHTGludCByZXR1cm5l
ZExlbmd0aCA9IDA7CiAgICAgZ2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFk
ZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYg
KCFyZXR1cm5lZExlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xNDcs
NyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4
dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAs
IGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0
WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQg
bG9uZyBmaWx0ZXIpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIC8vIEZJ
WE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUuCiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTU2
LDcgKzEzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nCiAgICAgZ2w6OkJsaXRGcmFtZWJ1
ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgx
LCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNSw3ICsyMTYsNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykK
ICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDMsMTUgKzIyNCwxNSBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaQogICAg
IGdsOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOworICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihvZmZzZXQpLCBwcmltY291
bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzUwLDcgKzMzMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZl
cnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBn
bDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQxMiw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQgaW5kCiAgICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC00MzksNyArNDIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGwKICAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2
ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDM3LDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2kKICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykK
LXsKLSAgICAvLyBXZSBjYW4gYXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRo
ZSBjYWxsaW5nIGZ1bmN0aW9ucwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAg
aW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19
Ci0jZW5kaWYKLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJl
bW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwg
aS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25l
IGJlZm9yZSByZWFkaW5nIHBpeGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJz
ID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVm
ZmVyVGFyZ2V0ID0gbV9jb250ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6
OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9jb250ZXh0LT5tX3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAg
ICBtX2NvbnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZm
ZXJUYXJnZXQsIG1fY29udGV4dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9
Ci0gICAgKHZvaWQpIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7
Ci0gICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdM
ZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYg
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAg
ICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211
bHRpc2FtcGxlRkJPKTsKLQotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRl
Y3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlv
bi4gU3VyZmFjZSB0aGlzIGluIHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwg
YW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGlu
Z1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAm
JiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oZGF0YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
Cit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0NDUsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAs
NyArNDUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNm
YWE2ZTM4ZmY3MmY0YjIzMjMuLmNiZjQ5OGJkN2MxYTFhYjlhYTZiNzBmYjVkMzhhYzRiOTJmYjAz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25n
IHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBs
b25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcg
ZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBs
b25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAg
Ym9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29s
IGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3Io
KSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdElu
RnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11
bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkg
KmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMjAsOCBA
QCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBi
b29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwot
ICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5j
dGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplOwotCiAgICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0g
ICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hl
dGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBl
eHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JB
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNi
OGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNC4uMWQ2MDRiNzFkNDgxNGY1OTdjMmMy
ZmM4OWVkYzk2NDhkYzEzYzc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
QEAgLTQ0MywzMiArNDQzLDUzIEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YS5idWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRh
LmRhdGEsIGZhbHNlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lk
Kj4ob2Zmc2V0KSwgdHJ1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQog
ewotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRy
aXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBj
YWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92
ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5l
LiwKKyAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJl
Zm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1f
aXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2Fy
eShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAg
ICB9Ci0gICAgZ2w6OlJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhKTsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCk7CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAg
IEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMg
JiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJp
bmcgdGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4g
dGhlCisgICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEg
Y2hhbm5lbCBmaXh1cCBiZWxvdy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0
eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3Vu
ZFJlYWRGQk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdy
YXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVs
dGlzYW1wbGVGQk8pKSkKICAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgs
IGhlaWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0K
IC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3cs
IHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bikKQEAgLTg5OCwyMCArOTE5LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6
QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwog
fQogCi12b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJp
dGZpZWxkIGFjY2VzcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zm
c2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGds
OjpVbm1hcEJ1ZmZlcih0YXJnZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0
ciA9IGdsOjpNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFw
aGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0
dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAo
IWdsOjpVbm1hcEJ1ZmZlcih0YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dM
ZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRl
T2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKQEAgLTEwMDgsMTQgKzEwMjUsMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2ZWwKICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2
b2lkKj4ob2Zmc2V0KSwgMCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxH
Q0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+
JiBwYXJhbXMpCitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dM
aW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3Jh
bSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9n
cmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUs
IHBhcmFtcy5kYXRhKCkpOworICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0
LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAt
MjEwMSwyMiArMjExOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGds
OjpHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpH
ZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwg
bnVsbHB0ciwgdmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5k
ZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NH
THNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCkBAIC0yMzkyLDEyICsyMzk0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmpl
Y3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6
OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0
aW9ucwpAQCAtMjgzOSwyMCArMjg0MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAg
IGdsOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xm
bG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFs
dWUgPSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2
KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAg
ICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAt
Mjg5NSwxMiArMjkwMiwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3lu
YyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0
U3luYyhzeW5jLCBmbGFncywgdGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGlu
dCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBu
YW1lLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBw
bmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3MzU5N2Y0NzUzZDBiZWMxZDAyZTdkNWZjZmRjNjQzYTk4M2M4OGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgiCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09D
T0EpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW46On5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpID0gZGVmYXVs
dDsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZTg4YzJmOTliMWNhYTU4MTE3YzczOTExYTUx
YjY3ZGRlNjMyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
R0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFjZSBmb3Ig
aW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dh
cAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxsIG93biB0
aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0
YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFk
YXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2
ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8gb2J0YWlu
IHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9mIHRoZSBt
ZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhp
cyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJm
YWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUgZXhpc3Rp
bmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgorICAgICAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIFByb2R1Y2VyIHNwZWNpZmljIG1ldGFkYXRhIGhh
bmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KKyAgICB9OworICAgIC8vIFJldHVybnMgdGhlIG1l
dGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xp
ZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250ZW50cyBz
dXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAvLyB0aW1lIG9mIHRo
ZSBjYWxsLgorICAgIC8vIFJldHVybnMgZWl0aGVyOgorICAgIC8vIC0gRW1wdHkgYnVmZmVyIGlm
IG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCisgICAgLy8gLSBCdWZmZXIgd2l0aCBlbXB0
eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBi
dWZmZXIgd2FzIGF2YWlsYWJsZQorICAgIC8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGlu
IHVzZS4KKyAgICAvLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KKyAgICB2aXJ0dWFsIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgPSAwOworCisgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlz
cGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgorICAgIC8vIENsaWVudCB0cmFuc2ZlcnMgdGhl
IG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgorICAg
IHZpcnR1YWwgdm9pZCBwcmVzZW50KEJ1ZmZlcikgPSAwOworCisgICAgLy8gRGV0YWNoZXMgdGhl
IGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEg
aGFuZGxlLgorICAgIC8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0
ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCisg
ICAgLy8gdGhpcy4KKyAgICB2aXJ0dWFsIHZvaWQqIGRldGFjaENsaWVudCgpID0gMDsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpp
bmRleCAyZTFjNzk5ZTgyODUzYjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi43N2NhMjAwYmQ3
ZmZlZmVkMzk4ZjkxMmE3OWQ0MjUxMzQ2YmY3ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkV4
dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJIb3N0
V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0YXRpYyBF
R0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
ID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5IGRpc3Bs
YXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQg
PSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRp
bGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJvY2Vzcygp
KTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0KSB7
CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xhdGlsZSBw
bGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2luY2UgY2xp
ZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFsIGNvbnRl
eHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgIGlmIChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55
Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7CiAKICAg
ICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8gaG9zdFdp
bmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhv
c3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlvbigpLCAm
c2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0
V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LnB0cigp
LCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9j
ZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51bGxwdHIs
ICZzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJv
YmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAog
c3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwg
Q0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJy
ZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5
SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGlu
YXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0KQotICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3RpbmF0aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGlu
YXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0g
YXR0cnMuaXNXZWJHTDI7CiAKQEAgLTI5MywyNiArMjk5LDI4IEBAIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0CiAgICAgaWYgKG1faXNGb3JXZWJHTDIpCiAgICAgICAgIGdsOjpFbmFibGUoR3JhcGhp
Y3NDb250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAorICAgIFZlY3Rv
cjxBU0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBpZiAobV9pc0Zvcldl
YkdMMikgeworICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdv
cmsuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25f
cXVlcnlfYm9vbGVhbiJfcyk7CisgICAgfQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9u
cygpOwotCiAgICAgaWYgKCFuZWVkc0VBR0xPbk1hYygpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogcmVxdWlyZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAgICAgICAi
R0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiLCAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0
dXJlcy4KLSAgICAgICAgICAgICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLCAvLyBG
b3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgotICAgICAgICB9
OwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChyZXF1
aXJlZEV4dGVuc2lvbnMpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBw
b3J0cyhyZXF1aXJlZEV4dGVuc2lvbnNbaV0pKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdM
LCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgcmVxdWlyZWRFeHRlbnNpb25zW2ld
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIC8vIEZv
ciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMu
YXBwZW5kKCJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSJfcyk7CisgICAgICAgIC8vIEZvciBj
cmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCisgICAgICAgIHJlcXVp
cmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJfcyk7
CisgICAgfQogCi0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRF
eHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAg
ICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9H
KFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJh
Y3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5z
aW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ly8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUNDQVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBz
dGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8vIHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3Jt
U2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0byBDYXRhbHlzdCB0b28uCkBAIC0zMzEsMTMg
KzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBj
aGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0gICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVy
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fd2ViR0xMYXllciA9
IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0
cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyAgICBp
ZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsKKyAgICBlbHNl
IHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgICAgICBtX3dl
YkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhh
XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJH
TCBMYXllciJdOworICAgICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5
ZXIiXTsKICNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3N3YXBDaGFpbiA9ICZbbV93ZWJHTExh
eWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQg
d2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAgR0xlbnVtIHRleHR1cmVUYXJn
ZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBAIC00MDYsMTMgKzQxOCwxMiBAQCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKCkKICAgICAgICAg
aWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQogICAgICAgICAgICAgZ2w6OkRlbGV0ZUZy
YW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pOwogICAgIH0KLSAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
cikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlC
dWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExheWVyKSB7Ci0gICAgICAgIGF1dG8gcmVj
eWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgICAgICBhdXRv
IHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICAgICAg
aWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFj
ZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7Ci0gICAgICAgIGF1dG8gY29u
dGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFjaENsaWVudF07CisgICAgICAgIGF1dG8g
Y29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0YWNoQ2xpZW50KCk7CiAgICAgICAgIGlm
IChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3Bs
YXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBAIC01NzUsMTEgKzU4NiwxNiBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQog
ICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQog
ICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQgYnVmZmVyIG5vdywgYmVjYXVzZSBpdCBt
b3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBhdCB0aGUgdGltZSBpdCB3aWxsIGJlIHJl
dXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVm
ZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZm
ZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICBFR0xfRGVzdHJv
eVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOwogICAgIHJlY3lj
bGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQoreworICAgIEFTU0VSVCghZ2V0
SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAgIGF1dG8gYmFja2luZyA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCks
IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0CiAgICAgLy8gZm9yIE9wZW5H
TCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBhIGRpc3BsYXkgKG9ubGluZS9v
ZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVuIGNvbnNpZGVyIGFsbCBHUFVzLCBvciBy
ZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5zCiAgICAgLy8gYWxsIG9mZmxpbmUgcmVu
ZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQu
Ci0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmRvd1Nl
cnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxs
IHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCiAgICAgLy8gbV9kaXNwbGF5
TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNlLgogICAgIGlmIChwcmltYXJ5T3BlbkdM
RGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NDYsMTIgKzY2MiwxMiBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBj
b25zdAogICAgIC8vIGFuZCBNQUMvTUFDQ0FUQUxZU1QgYW5kIE9QRU5HTC9PUEVOR0xFUy4KICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICAKKwogI2lmIEhBVkUoQVBQTEVfR1JBUEhJ
Q1NfQ09OVFJPTCkKICAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02
ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9y
RGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJvbSBvdGhlciBn
cmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGdsOjpGbHVzaCgp
OwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZl
cl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVy
KCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVm
ZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVyIHByZXBhcmVG
b3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwg
bV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVzZW50KHsgV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB9KTsK
ICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAKICAgICBib29s
IGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBFcnJvciB3aWxs
IGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgpIHdoaWNoIHdp
bGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNOZXdCYWNraW5n
KQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAgICAgYWxsb2Nh
dGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0NTUwOWM3NDI5
ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYm
IFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIGF1dG8g
YXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10g
aW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNP
cGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBbbV93ZWJHTExh
eWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJHTExh
eWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
R3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFz
Q1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVyIHN3YXBDaGFp
bl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFjN2M5N2NmNjZl
NzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3ZWE4ODA5NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1w
b3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPG1l
bW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1z
dHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2b2lkKiBoYW5k
bGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5kbGUgKHN1Y2gg
YXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdl
bWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFjZXMuCi0vLyBU
aGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KLS8v
IFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2ls
bCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJl
ZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5Ci0v
LyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCi0vLyBF
eGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBh
cyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVyIGlzIGRvbmUg
d2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5n
Ci0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVj
eWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAogLSAoaWQpaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBz
aG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwogCi0vLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgot
Ly8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250
ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8vIHRpbWUgb2Yg
dGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1
ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2Ug
YW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMg
YXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCi0vLyAtIFN1
cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpcmVjeWNsZUJ1
ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50
cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3Vy
ZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlX
aXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwotCi0vLyBEZXRh
Y2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBt
ZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3Vi
bWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGlu
ZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1t
CmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMuLjE2OGZkNWY2
Yzg0MjM3YmRmOGFiOWNiYmNhNjQwNzM5NTA1YzkyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMjAsNyArMjAs
NyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKQEAgLTMyLDEz
ICszMiwzOSBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bUNBTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisKK2NsYXNz
IFdlYkdMTGF5ZXJTd2FwQ2hhaW4gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkdMTGF5
ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKKyAg
ICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyAgICB2b2lkIHBy
ZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7CisgICAgICAg
ICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCisgICAgICAgICAgICAg
ICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShtX3NwYXJlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgICAgICB2b2lkKiByZXN1bHQgPSBtX2Rp
c3BsYXlCdWZmZXIuaGFuZGxlOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgV2ViQ29yZTo6SU9TdXJm
YWNlKiBkaXNwbGF5U3VyZmFjZSgpIHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlLmdl
dCgpOyB9Citwcml2YXRlOgorICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CisgICAgQnVmZmVy
IG1fc3BhcmVCdWZmZXI7CisgICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsKK307CiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
IF9jb250ZW50c0J1ZmZlcjsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyIF9zcGFyZUJ1
ZmZlcjsKLQogICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsKKyAgICBPcHRpb25hbDxXZWJH
TExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0aERldmljZVBp
eGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29u
dGVudHNPcGFxdWUKQEAgLTQ3LDYgKzczLDcgQEAKICAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJh
bnNmb3JtM0RJZGVudGl0eTsKICAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFx
dWU7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBfc3dh
cENoYWluLmVtcGxhY2Uoc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTczLDMwICsx
MDAsMjEgQEAKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9Ci0KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIHJlY3ljbGVCdWZmZXIKKy0g
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWlu
CiB7Ci0gICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgIGlmIChfc3BhcmVC
dWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAgICAgICAgX3NwYXJlQnVmZmVyLnN1cmZh
Y2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoX3NwYXJlQnVmZmVyKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gX3N3YXBDaGFpbi52YWx1ZSgpOwogfQogCi0t
ICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVy
QnVmZmVyKSBidWZmZXIKKy0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKIHsKLSAgICBBU1NFUlQo
IV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBfc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKF9jb250
ZW50c0J1ZmZlcik7Ci0gICAgX2NvbnRlbnRzQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAg
IFtzZWxmIHNldE5lZWRzRGlzcGxheV07CiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IFlFUzsK
IH0KIAogLSAodm9pZClkaXNwbGF5CiB7Ci0gICAgaWYgKF9jb250ZW50c0J1ZmZlci5zdXJmYWNl
ICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50cyA9IF9jb250
ZW50c0J1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKTsKKyAgICBpZiAoX3N3YXBDaGFp
bi0+ZGlzcGxheVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7CisgICAgICAgIHNl
bGYuY29udGVudHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xheWVyQ29udGVu
dHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29udGVudHMiXTsK
ICAgICB9CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZv
cm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMTA2LDEzICsxMjQs
MTQgQEAKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLS0gKHZvaWQqKSBkZXRh
Y2hDbGllbnQKK0BlbmQKKwordm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KEJ1ZmZl
ciBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgdm9p
ZCogcmVzdWx0ID0gX2NvbnRlbnRzQnVmZmVyLmhhbmRsZTsKLSAgICBfY29udGVudHNCdWZmZXIu
aGFuZGxlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEFTU0VSVCghbV9zcGFy
ZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX3NwYXJlQnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlC
dWZmZXIpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICBbbV9s
YXllciBwcmVwYXJlRm9yRGlzcGxheV07CiB9Ci1AZW5kCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0K
aW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4uOTlhZDkxNjUy
NTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lt
cG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNpbXBvcnQgPENv
cmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggN2Vj
ODFjZjRhZTU3NzJjYWU5NzI4OGJjODBlMzY1NjQ2ZDYyN2M3Yi4uYWRkNWYzNTJhZTRkZTZiNmQ1
ZGMxOTFlNjczYjVhYWZhNTZkZTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNpb25zR0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIEV4dGVuc2lvbnNHTE9wZW5H
TDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3Jj
WDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcg
ZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NH
TGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwg
R0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxk
IG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBs
b25nIHNyY1gxLCBsb24KICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVy
c0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICNlbmRpZgogfQogCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
aW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMcwogI2VuZGlmCiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHCiAjZW5kaWYKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ5NjI4OWNlYTBlNmEwOWQ2ZGI3MzFmODY4YjU0
OTkzYTQ0NDQ5YTguLjQ3NTAyMjZlY2VjZWY0NDM5NmU5OTM4Njc2Y2I2MzliZTgzNDM3YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfkV4dGVuc2lvbnNHTE9wZW5HTCgpOwogCiAgICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhv
ZHMuCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJy
aWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMo
KSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOwpAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3BHcm91
cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNl
ZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9u
ZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4
QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoK
ICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQzYjUxNjFmYmE3
NzhmOGZiNDM4NGIxYmMyZGIzOGVjZjZjNDgzZWIuLmI3ODk2MGNiNDgyZTRlZjJhYjk4ZTQwMzky
YTYzNWJhN2ZmYjdiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
CkBAIC0zNjYsMTEgKzM2Niw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xzCiAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQgKiwgYm9vbCkKLXsKLSAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdM
RShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMZmxvYXQgKikKIHsK
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCBiZmU0NTIxNTQzZmY0YjI3
MjEzN2YzNDRjZWU0YTIyZDhmYjI4YzY0Li42YTNhMzlmZTNhMWJhNWJkMjU5NzcxNTg5NDc1NjFj
Y2FkNWFkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC05Myw3
ICs5Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNp
emVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
Y3BwCmluZGV4IDM2YzNlZjM4Zjk4Yjk5YWYwMTE1MDY5OTE0MjdiYWNlZmNiYjhhYzMuLmUxZTQz
YmY1MzkyODg1YTI0ZmJiMzNjYjI2YjVmNmU0OTFmYmUwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcApAQCAtMTAwLDEyICsxMDAsMTIgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFy
Z2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlcihs
b25nIC8qIHNyY1gwICovLCBsb25nIC8qIHNyY1kwICovLCBsb25nIC8qIHNyY1gxICovLCBsb25n
IC8qIHNyY1kxICovLCBsb25nIC8qIGRzdFgwICovLCBsb25nIC8qIGRzdFkwICovLCBsb25nIC8q
IGRzdFgxICovLCBsb25nIC8qIGRzdFkxICovLCB1bnNpZ25lZCBsb25nIC8qIG1hc2sgKi8sIHVu
c2lnbmVkIGxvbmcgLyogZmlsdGVyICovKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Ymxp
dEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NH
TGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGJpdGZpZWxkLCBHQ0dMZW51bSkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fZ2xEcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0cKICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0
LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
CiAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBy
ZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSwg
cHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUp
IHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDAxN2E0NWI3Mzk4ZDA5OTJl
ZDE0NzY3ZjA3NjdlMDRiNDY0MTYyODMuLjVjNzYwMzdmYTdiYzZlOGVlZTNlNjczZjk5YTdkZmMy
Zjc4ZmI0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC03NSw4ICs3NSw4IEBA
IHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBs
b25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVu
c2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVz
LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNp
Z25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5zZXJ0RXZlbnRN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVY
VCh2b2lkKSBvdmVycmlkZTsKQEAgLTg3LDkgKzg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgYmlu
ZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBk
aXZpc29yKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlk
ZTsKIAogICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gcmVzZXQKICAgICBpbnQgZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAppbmRleCBjMjU1YjBjMTJmNGZjYmZhNDZkYjAyZDU1YzgwYjRjYjc3ZDE3YjcwLi4wMjcyOGY4
OTc4OGUwYjg1ZWQxMjZmNWY5ODFmNWMxZDYwZGZmZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaApAQCAtNTgsNiArNTgsOSBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JK
Q19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFTUyBXZWJHTExheWVyOworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47Cit9CiAjZW5k
aWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICNpZiBVU0UoTklDT1NJQSkKQEAgLTg2LDcgKzg5LDcg
QEAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5hbWVIYXNo
OwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTFByaXZhdGU7CiAKLWNsYXNzIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBH
cmFwaGljc0NvbnRleHRHTAogewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4pOwpAQCAtOTQsNiAr
OTcsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wmIHNoYXJlZENvbnRleHQpOworICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IGNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKTsKKwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fY29udGV4dE9iajsgfQogICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1U
ZXh0dXJlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAgICAgQ0FMYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FM
YXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KQEAgLTE5MSw3ICsxOTYsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKICAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpIGZp
bmFsOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwotICAgIHZvaWQgZ2V0QXR0YWNoZWRT
aGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dM
c2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSBmaW5hbDsKKyAgICB2b2lk
IGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBt
YXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycyk7CiAg
ICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJp
bmcmIG5hbWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRCdWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwpAQCAtMjE5
LDggKzIyNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBm
aW5hbDsKICAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsOwogICAgIEdD
R0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYg
bmFtZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOwotICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0
dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAg
dm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7CkBAIC0yMzYs
NyArMjM5LDggQEAgcHVibGljOgogICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQgcGFyYW0pIGZpbmFsOwogICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQg
ZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpIGZpbmFsOwogCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkgZmluYWw7CisgICAgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCiAgICAgdm9pZCBy
ZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAgdm9pZCBz
YW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpIGZpbmFs
OwpAQCAtMjU0LDcgKzI1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwog
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOyAKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOwogCkBAIC0zMTcsMTIgKzMyMSwxMCBAQCBwdWJsaWM6CiAj
aWYgIVVTRShBTkdMRSkKICAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25z
dCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBsZW5ndGgpOwogICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBsZW5ndGgpOwotICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwg
R0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwogI2VuZGlmCiAgICAgdm9pZCBj
b3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdl
dCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgc2l6ZSkgZmluYWw7CiAKLSAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0Zmll
bGQgYWNjZXNzKSBmaW5hbDsKLSAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAKICAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKQEAgLTM4NCw3ICszODYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFBs
YXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CiAgICAgLy8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFs
dWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVTYW1wbGVyKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikgZmluYWw7CkBAIC0zOTMsOCArMzk1LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
IGZpbmFsOwogICAgIC8vIGdldFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmlu
YWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAKICAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0Zmll
bGQgZmxhZ3MpIGZpbmFsOwogICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgZmluYWw7
CkBAIC00MDMsNyArNDA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAgIC8vIGdl
dFN5bmNQYXJhbWV0ZXIKICAgICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGF0
IHRoZSBXZWJHTCBsZXZlbCBpZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3QuCi0gICAg
dm9pZCBnZXRTeW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTGludCAqdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOwpAQCAtNDIwLDcgKzQyMiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0
ciBzaXplKSBmaW5hbDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBnZXRQYXJh
bWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNl
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3Jt
TmFtZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVu
dW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NH
TGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwog
CiAgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOwogICAgIC8vIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcgpAQCAtNDI5LDExICs0MzEsNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4g
cGFyYW1zKSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwotICAgIHZv
aWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCk7Ci0jZW5kaWYKLQogICAgIC8vIEhlbHBlciBt
ZXRob2RzLgogCiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlt
YWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZh
c1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwpAQCAtNTE1LDcgKzUxMiwxMSBAQCBwdWJsaWM6CiAj
ZW5kaWYgLy8gIVVTRShBTkdMRSkKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxw
dHIsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxwdHIpOworI2Vs
c2UKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMsIEhvc3RXaW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CisjZW5kaWYK
IAogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0
IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBw
dWJsaWMgZW50cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBP
cGVuR0wuCkBAIC01MjcsNyArNTI4LDkgQEAgcHJpdmF0ZToKICAgICAvLyBpbXBsZW1lbnRhdGlv
bi4KICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKLSAgICAK
KworICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOworCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJh
dGlvbiBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9pZCBjaGVj
a0dQVVN0YXR1cygpOwogCkBAIC01NDgsMTAgKzU1MSwxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAg
Ym9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGFsbG9jYXRlQW5k
QmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJh
Y2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluKiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKKyAgICAvLyBUT0RPOiB0
aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gYSBpbWFnZSBi
dWZmZXIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTc5
IC4KICAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKQEAgLTU3
OSw3ICs1ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBpc1ZhbGlkKGZhbHNlKQogICAg
ICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgU2hhZGVyU3ltYm9sTWFwJiBz
eW1ib2xNYXAoZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX0FU
VFJJQlVURSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNIHx8IHN5
bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1ZBUllJTkcpOwpAQCAtNjcyLDcgKzY3OCw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgdXNpbmcgQm91bmRUZXh0dXJlTWFwID0gSGFzaE1hcDxH
Q0dMZW51bSwKICAgICAgICAgICAgIHN0ZDo6cGFpcjxHQ0dMdWludCwgR0NHTGVudW0+LAotICAg
ICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwgCisgICAgICAgICAgICBXVEY6OkludEhh
c2g8R0NHTGVudW0+LAogICAgICAgICAgICAgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czxHQ0dMdWludD4sCiAgICAgICAgICAgICBXVEY6OlBhaXJIYXNoVHJhaXRzPFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj4KICAgICAgICAgPjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3
ZWRmMWY0ZTY4ODEzZjZiOS4uNjI5ODAzODhiNjUyNDc5Y2NiNDMzMWMyNWZmZWViYjY2YzZjYjU0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTQz
MSw3ICs0MzEsNyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRF
eHRlbnNpb25zKCkKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgYXV0byBhdHRy
cyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250
ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0K
LSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRh
dGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgZGF0YS5kYXRhKTsKICAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRE
cmF3RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJF
WFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGJj
NDRjZDU3Nzg4NjcyMDM5YWVhNGY1OTk5NmU0ZDk0ZTFjMWEwZmUuLmQzZjUwZGIzY2Q4MDVmY2Q5
NTA2MjFjMTAwMTcwNmNhZjI1ZjQ1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjAyOSwyMiArMjAyOSw2IEBAIEdDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFw
cGVkTmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5h
bWUsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRW
ZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVl
LmRhdGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIyNzgsMTkgKzIyNjIsMTkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEcKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0Fy
cmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJh
eXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVu
c2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpOwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwg
Y291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNv
dW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZp
c29yKQogewotICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBk
aXZpc29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGlu
ZGV4LCBkaXZpc29yKTsKIH0KIAogI2lmIEhBVkUoT1BFTkdMXzQpICYmIEVOQUJMRShXRUJHTDIp
CkBAIC0yMzM1LDQyICsyMzE5LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNv
cHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0ciwKIH0KICNlbmRp
ZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRh
LCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xpbnRwdHIsIEdDR0xT
cGFuPEdMdm9pZD4pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY0J5dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oZHN0T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKIH0KIAotI2lm
IEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCi12b2lkKiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1
cm4gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19
CisjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKIAotR0NHTGJvb2xlYW4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkKLXsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gR0xfRkFMU0U7
Ci0KLSAgICByZXR1cm4gOjpnbFVubWFwQnVmZmVyKHRhcmdldCk7Ci19CisgICAgICAgIHJldHVy
bjsKKyAgICBHQ0dMdm9pZCogcHRyID0gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0
LCBkYXRhLmJ1ZlNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOworICAgIGlm
ICghcHRyKQorICAgICAgICByZXR1cm47CisgICAgbWVtY3B5KGRhdGEuZGF0YSwgcHRyLCBkYXRh
LmJ1ZlNpemUpOworICAgIGlmICghOjpnbFVubWFwQnVmZmVyKHRhcmdldCkpCisgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CiAj
ZWxzZQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xl
bnVtLCBHQ0dMaW50cHRyLCBHQ0dMc2l6ZWlwdHIsIEdDR0xiaXRmaWVsZCkKLXsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0o
b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKKyNlbmRpZgogfQogCi1HQ0dM
Ym9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0pCi17
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKQogewpAQCAtMjcxMiwxMSArMjY4NCwxMiBAQCBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRR
dWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THVpbnQqIHZhbHVlKQorR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5
T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHF1ZXJ5KTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwogICAgIFVOVVNF
RF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjc1NiwxOCArMjcyOSwx
OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAgIFVOVVNFRF9QQVJBTShwYXJhbSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVl
KQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNF
RF9QQVJBTShzYW1wbGVyKTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDAuZjsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSkKKwogewogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKICAgICBVTlVT
RURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7
CiB9CiAKIEdDR0xzeW5jIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCkBAIC0yODA2LDEyICsyNzgwLDExIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5jIHN5bmMsIEdD
R0xiaXRmaWVsZCBmbGFncywgR0NHTGluCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVvdXQpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xp
bnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xl
bnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzeW5jKTsKICAgICBVTlVTRURfUEFSQU0o
cG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShidWZTaXplKTsKLSAgICBVTlVTRURfUEFSQU0odmFs
dWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCkBAIC0yODkxLDIxICsyODY0LDIz
IEBAIFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1J
bmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotI2lmIEhB
VkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9y
PEdDR0xpbnQ+JiBwYXJhbXMpCitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVj
dG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZl
Y3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKKyNpZiBIQVZF
KE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAKLSAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlm
b3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5k
YXRhKCkpOworICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRp
Y2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7
CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBHQ0dMdWludCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBy
b2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tOYW1lKTsKLQogICAgIHJldHVy
biAwOwogfQogCkBAIC0yOTEzLDcgKzI4ODgsNiBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncgog
ewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJs
b2NrSW5kZXgpOwotCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKQEAgLTI5MjMsMjcg
KzI4OTcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5k
aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTAogICAgIFVOVVNFRF9QQVJBTSh1bmlm
b3JtQmxvY2tJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0JpbmRpbmcpOwog
fQotI2Vsc2UKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1z
KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mLCBHQ0dMZW51bSwgVmVj
dG9yPEdDR0xpbnQ+JikKLXsKLX0KIAotR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYpCi17
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCkKLXsKLSAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCwgR0NHTHVp
bnQpCi17Ci19Ci0jZW5kaWYKLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKICAgICBVTlVTRURfUEFSQU0o
eCk7CiAgICAgVU5VU0VEX1BBUkFNKHkpOwpAQCAtMjk1NCwxOCArMjkwOSw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwKICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKLXsKLSAgICBV
TlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3
aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1h
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBw
YXJhbXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDIzZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYx
NzMzOTZhYTU1MDUuLmEyMjE4MGI0YmY0Y2UxMGYxODUyMTI0MDExZTg4YTQ0MjczYjQxZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNyArNTgsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KIAotICAg
IDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7
CisgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBk
YXRhLmRhdGEpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91
bmREcmF3RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwpAQCAtMTMwLDcgKzEzMCw3IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdl
IGtub3cgd2UgaGF2ZSBpdC4KICAgICAgICAgICAgIGlmIChzdXBwb3J0UGFja2VkRGVwdGhTdGVu
Y2lsQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVO
REVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgZXh0ZW5z
aW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1w
bGVDb3VudCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOworICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdp
ZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwpCiAg
ICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVu
Y2lsQnVmZmVyKTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkKQEAgLTEz
OCwxMiArMTM4LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9z
KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwpIHsKICAgICAgICAgICAgICAgICAgICAgOjpnbEJp
bmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwotICAgICAg
ICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShH
TF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhl
aWdodCk7CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJ
TF9JTkRFWDgsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwg
R0xfUkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkgewogICAgICAgICAgICAgICAgICAg
ICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwot
ICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSF9DT01QT05FTlQxNiwg
d2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwg
R0xfREVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAg
ICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FU
VEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNjI4NDQ1MzI1MDMzNTEw
N2ZkNTQ5ODIyMzJiOGI5ZWFlYzhlNjhjYi4uOWY4MzE3YjE4ZDUzYjdiM2MxNjY2OWE0YzUxMTk5
M2VhZjM3Yzc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2V0KFdl
YktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcwogICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCisgICAgR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTAogICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZAogCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcgpAQCAtMjE4LDYgKzIxOSw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNf
SU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKKyAg
ICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAg
ICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAK
ICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlZGI2Y2E1
OTc5ZDJmNGRlZjhiMmIyZTc3M2Y5ZDY5YWU3ODZlN2U5Li40YTY3ZGY4ZWRjM2I0ZjQ4OTE4Nzcw
MmVmYmYwNDFiM2QzNGE5MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CkBAIC0yMCw2ICsyMCw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUikvbW9kZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nl
c3MubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCkBAIC0xMzEsNiArMTMyLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2Vi
RnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3Nh
Z2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dAppbmRleCA3NTY3OWY1NWY1YWUzOTliNWVhZjQ3N2YxODkzMjU2YmMyNDg4NDRkLi43Y2QzZGJj
Y2EzNTBjNmUzODE0YzM0MGMzOTNjOTYzZWRiYjk4MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3NSw2ICsxNzUsMTIgQEAgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdl
c1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBs
aWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzNzcwMWIwMWMzYzFhMmMzMDBl
MWRkMmQ3MmU2Yjg1MjM3ZjQyNGI1Li45NzZiMWE1YTNlNWMwZDMxMTVkNDQ1MGM5MDg2MTU3MTll
NmRlY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzEsNiArMTcxLDcgQEAg
TUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24gXAogCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSBcCisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKQEAgLTIyNyw2ICsyMjgsNyBAQCBN
RVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAogCUdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eSBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwZTJlODgzMmIxZTIwZjFlMGYzMTlkNWQ5
ZjI1ZDcyY2UxYmY3M2FkLi40NGI5ZjYzZTE0YzUwYjc0MTk5M2Q2ZjM1YTVhOTVmNWFmZDgwYTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC02NCw2ICs2NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAtMjkwLDYgKzI5NCwyMSBA
QCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5k
KFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5k
KTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgp
IHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmli
dXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfSk7CisgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sK
KyAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3Vu
ZCk7Cit9CisjZW5kaWYKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQ
bGF5aW5nSW5mbygpCiB7CiAgICAgZ3B1UHJvY2VzcygpLm5vd1BsYXlpbmdNYW5hZ2VyKCkuY2xl
YXJOb3dQbGF5aW5nSW5mb0NsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNjc4ZGJjNGU1ZDM2
NWZhZDI4ZThiNDgyNzg2Mzc2MmEzYzQ1NzhkLi41YWVkZmJiNGQyY2FjN2I3NjYwZmYwNzM2MDlk
Mzc3YzYwMTU4NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUg
PFdlYkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxh
eWluZ01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CkBA
IC0zOSw2ICs0MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVBy
b2Nlc3M7CkBAIC01NCw2ICs2MCw3IEBAIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
OwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eTsKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CitjbGFzcyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0
IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CkBAIC0xMTksNiArMTI2LDExIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGNyZWF0ZUdy
YXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRl
eHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlmCisKICAgICB2b2lkIGNs
ZWFyTm93UGxheWluZ0luZm8oKTsKICAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0
QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCkBA
IC0xODAsNyArMTkyLDEwIEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKLQorI2lmIEVOQUJMRShXRUJHTCkK
KyAgICB1c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w+PjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwOworI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1MTk0ZmI0ZjYwODVkNjI0ZDU5
ODNmNjI1MmMzNjVlYjMyNzFmMzQ0Li45ZDU0ZTE2NDU5NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1
NzU5YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAK
IG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3Nh
Z2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVs
ZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBy
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBD
cmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0Nv
bnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQog
ICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
biwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVT
RShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU5
NzBlNWQ4ODcwNTE2YWQxMzViNzY1Y2RhNDU3ZjQyNTNhYzAyZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5jcHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8d3RmL01h
Y2hTZW5kUmlnaHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRl
cywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KSk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisg
ICAgOiBtX2NvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nl
c3MoYXR0cmlidXRlcywgKnRoaXMpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAg
IGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNz
YWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRo
aXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhp
Y3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAg
ICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QK
K3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2
NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUlu
dDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgp
Cit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3Qo
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldh
c0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29u
dGV4dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVm
ZmVyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVyKCkKK3sKKyAgICByZXR1
cm4gV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpwcmVzZW50KEJ1ZmZlciBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2Rpc3BsYXlC
dWZmZXIuc3VyZmFjZSk7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwor
fQorCit2b2lkKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KCkKK3sKKyAg
ICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlLCBudWxscHRyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKK3sKKyAgICBpZiAod2lkdGggJiYgaGVpZ2h0KQorICAgICAgICBt
X2NvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CisgICAgZWxzZQorICAgICAgICBmb3Jj
ZUNvbnRleHRMb3N0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBh
cmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3Bs
YXkoKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlci5z
dXJmYWNlKTsKKyAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBpZiAoZGlzcGxheUJ1
ZmZlcikKKyAgICAgICAgc2VuZFJpZ2h0ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJpZ2h0
KCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcm
JiBleHRlbnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZChleHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFu
Z2VkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJmMDU3MjEwMWQ5YmMwZjA5ZjdkYTk0Yzk0ZTUzMmJhN2Y3
YzMwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJH
TCkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgTWFjaFNlbmRSaWdodDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBwcm9jZXNzIHNp
ZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGlj
c0NvbnRleHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNh
bGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlv
biBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGZpbmFsCisgICAgOiBw
dWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQKKyAg
ICAsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4g
eworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBmaW5hbDsKKworICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBv
dmVycmlkZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwor
CisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBk
aWRDb21wb3NpdGUoKSBmaW5hbDsKKyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsK
KyAgICB2b2lkIHJlY3ljbGVDb250ZXh0KCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaENvbnRl
eHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbiBvdmVycmlkZXMuCisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIo
KSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBmaW5hbDsKKyAgICB2b2lkKiBkZXRh
Y2hDbGllbnQoKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAg
IHZvaWQgcmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBw
cmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdo
dCYmKT4mJik7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmKTsKKyAg
ICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOworCisjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9MSU5UCisKKyAgICBSZWY8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsKKyAgICBXZWFrUHRy
PEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsK
KyAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXI7CisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBt
X2Rpc3BsYXlCdWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVhNzE1
MjRkNDA4MTliYTAzMTBjYjQyMDEzNjA3NTY2ODc4Njg1NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI5NCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBh
cmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25v
dXMKKyNlbmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNw
bGF5KCkgLT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFu
Z2VkKCkKKworICAgIHZvaWQgU2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgdm9pZCBT
eW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB2b2lkIE1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHZvaWQgQXR0YWNoU2hh
ZGVyKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB2b2lkIEJpbmRBdHRy
aWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nIG5hbWUpCisg
ICAgdm9pZCBCaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2
b2lkIEJpbmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAg
dm9pZCBCaW5kUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAg
ICB2b2lkIEJpbmRUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2
b2lkIEJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQg
YWxwaGEpCisgICAgdm9pZCBCbGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBC
bGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhh
KQorICAgIHZvaWQgQmxlbmRGdW5jKHVpbnQzMl90IHNmYWN0b3IsIHVpbnQzMl90IGRmYWN0b3Ip
CisgICAgdm9pZCBCbGVuZEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRz
dFJHQiwgdWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90IGRzdEFscGhhKQorICAgIHZvaWQgQ2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENsZWFyKHVpbnQzMl90IG1hc2spCisgICAgdm9p
ZCBDbGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFs
cGhhKQorICAgIHZvaWQgQ2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB2b2lkIENsZWFyU3Rl
bmNpbChpbnQzMl90IHMpCisgICAgdm9pZCBDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4s
IGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkKKyAgICB2b2lkIENvbXBpbGVTaGFkZXIodWludDMyX3Qg
YXJnMCkKKyAgICB2b2lkIENvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgdm9pZCBDb3B5
VGV4U3ViSW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVCdWZmZXIoKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVGcmFtZWJ1ZmZlcigpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVByb2dy
YW0oKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVh
dGVSZW5kZXJidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBDcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKHVpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVGV4dHVyZSgpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEN1bGxGYWNlKHVpbnQzMl90IG1vZGUp
CisgICAgdm9pZCBEZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZUZy
YW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVQcm9ncmFtKHVpbnQzMl90
IGFyZzApCisgICAgdm9pZCBEZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2
b2lkIERlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlVGV4dHVyZSh1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVwdGhGdW5jKHVpbnQzMl90IGZ1bmMpCisgICAgdm9p
ZCBEZXB0aE1hc2soYm9vbCBmbGFnKQorICAgIHZvaWQgRGVwdGhSYW5nZShmbG9hdCB6TmVhciwg
ZmxvYXQgekZhcikKKyAgICB2b2lkIERldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJf
dCBhcmcxKQorICAgIHZvaWQgRGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBEcmF3QXJyYXlzKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisgICAgdm9pZCBEcmF3
RWxlbWVudHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRW5hYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRmluaXNoKCkK
KyAgICB2b2lkIEZsdXNoKCkKKyAgICB2b2lkIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFy
Z2V0LCB1aW50MzJfdCBhcmczKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQz
Ml90IGFyZzMsIGludDMyX3QgbGV2ZWwpCisgICAgdm9pZCBGcm9udEZhY2UodWludDMyX3QgbW9k
ZSkKKyAgICB2b2lkIEdlbmVyYXRlTWlwbWFwKHVpbnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdl
dEFjdGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEF0dHJp
YkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRTdHJpbmcodWludDMyX3QgbmFtZSkgLT4gKFN0cmluZyByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZsb2F0dih1aW50MzJfdCBwbmFtZSwgdWlu
dDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwgdWludDY0X3Qg
dmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSkgLT4gKGludDY0X3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjRpKHVpbnQzMl90
IHBuYW1lLCB1aW50MzJfdCBpbmRleCkgLT4gKGludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRQcm9ncmFtaSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBwbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCb29s
ZWFudih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJl
ZmVyZW5jZTxib29sPiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEVycm9yKCkgLT4g
KHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1l
bnQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldFByb2dyYW1JbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJf
dCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRTaGFkZXJJbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hh
ZGVyVHlwZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdCwgMj4gcmFuZ2UsIEdDR0xpbnQgcHJlY2lzaW9uKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4g
KGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtZnYo
dWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAt
PiAoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBHZXRVbmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0
X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJf
dCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtTG9jYXRpb24o
dWludDMyX3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1
aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgSGludCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBJc0J1
ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIElzRW5hYmxlZCh1aW50MzJfdCBjYXApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgSXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUHJvZ3JhbSh1aW50MzJfdCBhcmcw
KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUmVuZGVyYnVm
ZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgSXNTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBJc1RleHR1cmUodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBMaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB2
b2lkIExpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBQaXhlbFN0b3JlaSh1aW50
MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFBvbHlnb25PZmZzZXQoZmxvYXQg
ZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgdm9pZCBTYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZl
cnQpCisgICAgdm9pZCBTY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBT
dHJpbmcgYXJnMSkKKyAgICB2b2lkIFN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMyX3Qg
cmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbEZ1bmNTZXBhcmF0ZSh1aW50MzJf
dCBmYWNlLCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2
b2lkIFN0ZW5jaWxNYXNrKHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFza1NlcGFy
YXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsT3AodWlu
dDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHZvaWQgU3Rl
bmNpbE9wU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZh
aWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIFRleFBhcmFtZXRlcmko
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lk
IFVuaWZvcm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHZvaWQgVW5pZm9ybTFm
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZv
aWQgVW5pZm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB2b2lkIFVuaWZv
cm0xaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQor
ICAgIHZvaWQgVW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpCisg
ICAgdm9pZCBVbmlmb3JtMmZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4
LCBpbnQzMl90IHkpCisgICAgdm9pZCBVbmlmb3JtMml2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zZihpbnQzMl90IGxv
Y2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHZvaWQgVW5pZm9ybTNmdihp
bnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQg
VW5pZm9ybTNpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90
IHopCisgICAgdm9pZCBVbmlmb3JtM2l2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQgVW5pZm9ybTRmdihp
bnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQg
VW5pZm9ybTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90
IHosIGludDMyX3QgdykKKyAgICB2b2lkIFVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4gdmFsdWUpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lk
IFVuaWZvcm1NYXRyaXg0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVXNlUHJvZ3JhbSh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgVmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBWZXJ0ZXhBdHRyaWIxZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYjFmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4g
dmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgs
IGZsb2F0IHkpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNm
KHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHZvaWQgVmVy
dGV4QXR0cmliM2Z2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAz
PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmdih1
aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4gdmFsdWVzKQorICAg
IHZvaWQgVmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1
aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBWaWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBCdWZmZXJEYXRhMCh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHZvaWQgQnVmZmVyRGF0YTEo
dWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEsIHVpbnQz
Ml90IHVzYWdlKQorICAgIHZvaWQgQnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2
NF90IG9mZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQg
UmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBkYXRhU2l6
ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIFJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4SW1hZ2UyRDEodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1YkltYWdl
MkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQor
ICAgIHZvaWQgVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXpl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9m
ZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50
MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2
b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERy
YXdFbGVtZW50c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVy
dGV4QXR0cmliRGl2aXNvcih1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB2
b2lkIENyZWF0ZVZlcnRleEFycmF5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lk
IElzVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBCaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lk
IENvcHlCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFy
Z2V0LCB1aW50NjRfdCByZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3Qg
YXJnNCkKKyAgICB2b2lkIEdldEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxpdEZyYW1lYnVmZmVyKGludDMyX3Qg
c3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMy
X3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVp
bnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4
dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB2b2lkIEludmFsaWRhdGVG
cmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
IGF0dGFjaG1lbnRzKQorICAgIHZvaWQgSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90
IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMsIGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lk
IFJlYWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhT
dG9yYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3Rv
cmFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAg
ICB2b2lkIFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3Qg
ZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4SW1hZ2UzRDEo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3Jk
ZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHZvaWQgVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50
MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lk
IFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlM0QodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNl
dCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQz
Ml90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZv
aWQgQ29tcHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRo
LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNl
dCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHZvaWQgR2V0RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJp
bmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBV
bmlmb3JtMXVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwKQorICAgIHZvaWQgVW5pZm9y
bTJ1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgdm9p
ZCBVbmlmb3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwg
dWludDMyX3QgdjIpCisgICAgdm9pZCBVbmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQz
Ml90IHYwLCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHZvaWQg
VW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtM3VpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQg
VW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBi
b29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lk
IFVuaWZvcm1NYXRyaXgzeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyeDRm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXg0eDJmdihpbnQzMl90IGxvY2F0aW9u
LCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2
b2lkIFVuaWZvcm1NYXRyaXgzeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXg0
eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwg
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVmVy
dGV4QXR0cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpKHVpbnQzMl90IGluZGV4LCB1
aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1aW50MzJfdCB3KQorICAgIHZvaWQg
VmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3QsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90
IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1
aW50MzJfdCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PiBidWZzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZm
ZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1
ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcnVpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJh
d2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVzKQorICAgIHZvaWQg
Q2xlYXJCdWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJmaSh1aW50
MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qgc3Rl
bmNpbCkKKyAgICB2b2lkIENyZWF0ZVF1ZXJ5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlUXVlcnkodWludDMyX3QgcXVlcnkpCisgICAgdm9p
ZCBJc1F1ZXJ5KHVpbnQzMl90IHF1ZXJ5KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkK
KyAgICB2b2lkIEVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdldFF1ZXJ5KHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVlcnksIHVp
bnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBDcmVhdGVTYW1wbGVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgRGVsZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgSXNT
YW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgQmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikK
KyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBu
YW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qg
c2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHZvaWQgR2V0U2FtcGxl
clBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChmbG9hdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJpKHVp
bnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVpbnQz
Ml90IGZsYWdzKSAtPiAodWludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBJc1N5bmModWludDY0X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBEZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgdm9pZCBDbGllbnRXYWl0
U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgdGltZW91dCkgLT4g
KHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgV2FpdFN5bmModWlu
dDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB2b2lkIEdl
dFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgLT4g
KHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVHJhbnNm
b3JtRmVlZGJhY2sodWludDMyX3QgaWQpCisgICAgdm9pZCBJc1RyYW5zZm9ybUZlZWRiYWNrKHVp
bnQzMl90IGlkKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJp
bmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHZv
aWQgQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHZv
aWQgRW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB2YXJ5aW5ncywgdWludDMyX3Qg
YnVmZmVyTW9kZSkKKyAgICB2b2lkIEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBQYXVzZVRyYW5zZm9ybUZl
ZWRiYWNrKCkKKyAgICB2b2lkIFJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIEJp
bmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1
ZmZlcikKKyAgICB2b2lkIEJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IGluZGV4LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkK
KyAgICB2b2lkIEdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJp
bmc+IHVuaWZvcm1OYW1lcykgLT4gKFZlY3Rvcjx1aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3Jtcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0
b3I8dWludDMyX3Q+IHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSkgLT4gKFZlY3Rvcjxp
bnQzMl90PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1CbG9j
a0luZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyB1bmlmb3JtQmxvY2tOYW1lKSAtPiAodWlu
dDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3Jt
QmxvY2tOYW1lKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4KSAt
PiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybUJsb2Nr
QmluZGluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWlu
dDMyX3QgdW5pZm9ybUJsb2NrQmluZGluZykKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJf
dCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4gcGFyYW1zKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxp
dEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBz
cmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJf
dCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQor
ICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZVZlcnRleEFycmF5T0VTKCkgLT4g
KHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVmVydGV4
QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB2b2lkIElzVmVydGV4QXJyYXlPRVModWludDMy
X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5k
VmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgSW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisgICAg
dm9pZCBQdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisgICAgdm9pZCBQb3BHcm91cE1h
cmtlckVYVCgpCisgICAgdm9pZCBEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PiBidWZzKQorICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQor
ICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJf
dCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3Vu
dCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSh1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgZGl2aXNvcikKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVy
YXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZmZThjMWZjN2FmYTE3
MmYxYmI5YzczNDI2NzVjNWRmZTZlMTc2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dl
bmVyYXRlZC5oCkBAIC0wLDAgKzEsMTE4MyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisvLyBUaGlzIGZp
bGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwcml2YXRlIHNlY3Rpb24gb2YgdGhlCisvLyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbXBsZW1lbnRhdGlvbnMuCisjcHJhZ21hIG9uY2UKKyAg
ICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5zZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCk7CisgICAgfQorICAgIHZvaWQgc3ludGhl
c2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKGVycm9yKTsKKyAgICB9CisgICAgdm9pZCBtb3ZlRXJyb3JzVG9TeW50
aGV0aWNFcnJvckxpc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICB9CisgICAgdm9pZCBhdHRhY2hTaGFk
ZXIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qgc2hhZGVyKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICB9CisgICAgdm9pZCBi
aW5kQXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyYm
IG5hbWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihhcmcw
LCBpbmRleCwgbmFtZSk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlcih1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIo
dGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kRnJh
bWVidWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVy
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRU
ZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBibGVu
ZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb24obW9kZSk7CisgICAgfQorICAgIHZv
aWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVB
bHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1v
ZGVSR0IsIG1vZGVBbHBoYSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jKHVpbnQzMl90IHNm
YWN0b3IsIHVpbnQzMl90IGRmYWN0b3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5k
RnVuYyhzZmFjdG9yLCBkZmFjdG9yKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0
ZSh1aW50MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwgdWludDMyX3Qgc3JjQWxwaGEsIHVp
bnQzMl90IGRzdEFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmNTZXBh
cmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKKyAgICB9CisgICAgdm9p
ZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQzMl90IHRhcmdldCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNsZWFyKHVpbnQzMl90IG1hc2sp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyKG1hc2spOworICAgIH0KKyAgICB2b2lk
IGNsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxw
aGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOworICAgIH0KKyAgICB2b2lkIGNsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmNsZWFyRGVwdGgoZGVwdGgpOworICAgIH0KKyAgICB2b2lk
IGNsZWFyU3RlbmNpbChpbnQzMl90IHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFy
U3RlbmNpbChzKTsKKyAgICB9CisgICAgdm9pZCBjb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3Jl
ZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29s
b3JNYXNrKHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZWQpLCBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oYmx1ZSksIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihhbHBoYSkpOworICAgIH0KKyAgICB2b2lkIGNvbXBpbGVTaGFkZXIodWlu
dDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKKyAgICB9CisgICAgdm9pZCBjb3B5
VGV4U3ViSW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWln
aHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZUJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZUZyYW1lYnVmZmVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVQcm9ncmFtKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmJ1ZmZlcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNoYWRl
cih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIo
YXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBjcmVhdGVUZXh0dXJlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmN1bGxGYWNlKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcih1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIoYXJnMCk7Cisg
ICAgfQorICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoYXJnMCk7CisgICAgfQorICAgIHZv
aWQgZGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZl
cih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVSZW5kZXJi
dWZmZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVpbnQzMl90IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihhcmcwKTsKKyAgICB9Cisg
ICAgdm9pZCBkZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlbGV0ZVRleHR1cmUoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVwdGhGdW5jKHVp
bnQzMl90IGZ1bmMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoRnVuYyhmdW5jKTsK
KyAgICB9CisgICAgdm9pZCBkZXB0aE1hc2soYm9vbCBmbGFnKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5kZXB0aE1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGZsYWcpKTsKKyAgICB9
CisgICAgdm9pZCBkZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZXB0aFJhbmdlKHpOZWFyLCB6RmFyKTsKKyAgICB9CisgICAgdm9p
ZCBkZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpOworICAgIH0KKyAgICB2b2lk
IGRpc2FibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxl
KGNhcCk7CisgICAgfQorICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90
IGluZGV4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50
MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJh
d0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50
cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3Vu
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZv
aWQgZW5hYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxl
KGNhcCk7CisgICAgfQorICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3Qg
aW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBmaW5pc2goKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5maW5pc2goKTsKKyAgICB9CisgICAgdm9pZCBmbHVzaCgpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmZsdXNoKCk7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCByZW5kZXJi
dWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFy
Z2V0LCBhcmczKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWludDMy
X3QgYXJnMywgaW50MzJfdCBsZXZlbCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVi
dWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVs
KTsKKyAgICB9CisgICAgdm9pZCBmcm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZnJvbnRGYWNlKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGdlbmVyYXRl
TWlwbWFwKHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2VuZXJh
dGVNaXBtYXAodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVBdHRyaWIodWludDMy
X3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwg
YXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFy
ZzIpKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUoYXJnMikpOworICAg
IH0KKyAgICB2b2lkIGdldEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRC
dWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFN0cmluZyh1
aW50MzJfdCBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN0cmluZyhuYW1lKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGdldEZsb2F0dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNf
Y2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEZsb2F0
dihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFs
dWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUs
IHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxHQ0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDAp
OworICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0SW50ZWdlcjY0KHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dDY0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0SW50ZWdlcjY0KHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nh
c3Q8aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2VyNjRp
KHVpbnQzMl90IHBuYW1lLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldElu
dGVnZXI2NGkocG5hbWUsIGluZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFt
aSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQ
cm9ncmFtaShwcm9ncmFtLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRCb29sZWFudih1aW50MzJfdCBwbmFtZSwgdWlu
dDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVu
Y2U8Ym9vbD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdD
R0xib29sZWFuLCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOwor
ICAgICAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4ocmVpbnRlcnByZXRfY2Fz
dDxib29sKj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
Z2V0RXJyb3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEVycm9yKCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwg
dWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1JbmZvTG9n
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2coYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShhcmcwLCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJJbmZv
TG9nKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhhcmcw
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBl
LCB1aW50MzJfdCBwcmVjaXNpb25UeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdCwgMj4sIGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgc3RkOjphcnJheTxHQ0dMaW50LCAyPiByYW5nZSB7IH07CisgICAgICAg
IEdDR0xpbnQgcHJlY2lzaW9uID0geyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5nZSwgJnByZWNpc2lv
bik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dCwgMj4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocmFuZ2UuZGF0YSgpKSwgcmFuZ2Uuc2l6
ZSgpKSwgcHJlY2lzaW9uKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJTb3VyY2UodWludDMy
X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2UoYXJnMCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFRleFBhcmFt
ZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xp
bnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KHVpbnQzMl90IHBy
b2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nh
c3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3Jt
ZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVl
LmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1pdih1
aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gdmFsdWUo
c3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGlu
dDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90
IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NH
THVpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmlu
ZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBwbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMc2l6ZWlwdHIgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoaW5kZXgsIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaGludCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmhpbnQodGFyZ2V0LCBtb2RlKTsKKyAg
ICB9CisgICAgdm9pZCBpc0J1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xl
YW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5p
c0J1ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9v
bD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc0VuYWJsZWQodWludDMyX3QgY2Fw
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5pc0VuYWJsZWQoY2FwKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBp
c0ZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRnJhbWVidWZm
ZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNQcm9ncmFtKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzUHJvZ3JhbShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Jl
bmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1JlbmRlcmJ1ZmZl
cihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1NoYWRlcih1aW50MzJfdCBhcmcwLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5pc1NoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1RleHR1
cmUodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUZXh0dXJlKGFyZzApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGxpbmVXaWR0aChmbG9hdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5saW5lV2lkdGgoYXJnMCk7CisgICAgfQorICAgIHZvaWQgbGlua1Byb2dyYW0odWlu
dDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0oYXJnMCk7
CisgICAgfQorICAgIHZvaWQgcGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFy
YW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSk7
CisgICAgfQorICAgIHZvaWQgcG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5wb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMp
OworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2FtcGxlQ292ZXJh
Z2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
YW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGludmVydCkpOwor
ICAgIH0KKyAgICB2b2lkIHNjaXNzb3IoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zY2lzc29yKHgs
IHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNoYWRlclNvdXJjZSh1aW50MzJf
dCBhcmcwLCBTdHJpbmcmJiBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJT
b3VyY2UoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1bmModWludDMyX3Qg
ZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNp
bEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwg
dWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmNTZXBh
cmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNr
KHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrKG1h
c2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwg
dWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2tTZXBh
cmF0ZShmYWNlLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3AodWludDMyX3QgZmFp
bCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5zdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCBzdGVu
Y2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFp
bCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcFNl
cGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgdGV4UGFy
YW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJh
bSk7CisgICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
MWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybTFmKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWZ2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbiwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwg
di5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwg
ZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKGxv
Y2F0aW9uLCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmZ2KGludDMyX3QgbG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtMml2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0
aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRh
KCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zZihpbnQzMl90IGxvY2F0
aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0z
ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0z
aShsb2NhdGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeiwgZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0
aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGZ2KGludDMyX3QgbG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50
MzJfdCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00aShs
b2NhdGlvbiwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZs
b2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9z
ZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVl
LmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1c2VQcm9ncmFtKHVpbnQzMl90IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAg
IHZvaWQgdmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnZhbGlkYXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIxZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliMWYoaW5kZXgsIHgpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjFm
dih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4mJiB2YWx1ZXMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgbWFrZUdD
R0xTcGFuPDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEo
KSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxv
YXQgeCwgZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmYo
aW5kZXgsIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBp
bmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4mJiB2YWx1ZXMpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgbWFrZUdDR0xTcGFuPDI+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2YoaW5k
ZXgsIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdih1aW50MzJfdCBp
bmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4mJiB2YWx1ZXMpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgbWFrZUdDR0xTcGFuPDM+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliNGYoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRm
dih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4mJiB2YWx1ZXMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgbWFrZUdD
R0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEo
KSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJfdCBz
dHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KG5vcm1hbGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOwor
ICAgIH0KKyAgICB2b2lkIHZpZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmlld3BvcnQo
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTAodWludDMy
X3QgdGFyZ2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4o
YXJnMSksIHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMSh1aW50MzJfdCB0YXJn
ZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhLCB1aW50MzJfdCB1c2FnZSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNp
emUoKSksIHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVpbnQzMl90IHRh
cmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRp
Y19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
ZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGNo
YXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDApOworICAgICAgICBt
X2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
ZGF0YSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIHJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xp
bnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQwKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50
MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9y
bWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCB0ZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMy
X3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhl
bHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdl
MkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkp
OworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0
YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
eG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
dWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFn
ZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lk
IGRyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJf
dCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRy
YXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0K
KyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNv
dW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7Cisg
ICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcih1aW50MzJfdCBpbmRleCwgdWludDMy
X3QgZGl2aXNvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliRGl2aXNv
cihpbmRleCwgZGl2aXNvcik7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVmVydGV4QXJyYXkoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRl
eEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVZl
cnRleEFycmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXkodWludDMyX3Qg
YXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9Cisg
ICAgdm9pZCBiaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZFZlcnRleEFycmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlCdWZm
ZXJTdWJEYXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1aW50
NjRfdCByZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3Jp
dGVUYXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJn
NCkpOworICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1
aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVfdD4o
ZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdl
dCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgZGF0YSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNy
Y1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90
IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNy
Y1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Cisg
ICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IGxheWVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmVM
YXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CisgICAgfQor
ICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkpLCBhdHRhY2htZW50
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRz
LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQs
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0YWNobWVu
dHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnJlYWRCdWZmZXIoc3JjKTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdl
dCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2
b2lkIHRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHRleFN0b3JhZ2UzRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTNEMCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwg
dWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lk
Kj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJ
bWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQz
Ml90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4
U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZz
ZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVs
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRo
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4
U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9m
ZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1h
Z2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
aW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9y
bWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRh
dGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1h
dCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXpl
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRG
cmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWko
aW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0xdWkobG9jYXRpb24sIHYwKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMnVpKGlu
dDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwg
dWludDMyX3QgdjIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWkobG9jYXRp
b24sIHYwLCB2MSwgdjIpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWkoaW50MzJfdCBsb2Nh
dGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwg
djIsIHYzKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2
KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM3Vp
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0
cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSks
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0
YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYo
aW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2
KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRmdihpbnQzMl90IGxv
Y2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJJNGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+
JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGl2KGlu
ZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFs
dWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKHVpbnQzMl90
IGluZGV4LCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1aW50MzJfdCB3KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6
LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4mJiB2YWx1ZXMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6
ZSwgdWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5
cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAg
IHZvaWQgZHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVp
bnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFy
dCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7Cisg
ICAgfQorICAgIHZvaWQgZHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4m
JiBidWZzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVycyhtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwg
aW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdmFsdWVz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1
ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVl
cy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJ1
aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1
ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVm
ZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1
ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJmaSh1aW50MzJfdCBidWZm
ZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qgc3RlbmNpbCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIs
IGRlcHRoLCBzdGVuY2lsKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVRdWVyeShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5jcmVhdGVRdWVyeSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUXVlcnkodWludDMyX3QgcXVl
cnkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVF1ZXJ5KHF1ZXJ5KTsKKyAgICB9
CisgICAgdm9pZCBpc1F1ZXJ5KHVpbnQzMl90IHF1ZXJ5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4g
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1F1
ZXJ5KHF1ZXJ5KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4o
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgcXVlcnkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJlZ2luUXVlcnko
dGFyZ2V0LCBxdWVyeSk7CisgICAgfQorICAgIHZvaWQgZW5kUXVlcnkodWludDMyX3QgdGFyZ2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRRdWVyeSh0YXJnZXQpOworICAgIH0KKyAg
ICB2b2lkIGdldFF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aSh1aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHVp
bnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTYW1wbGVyKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNhbXBsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIodWludDMyX3Qg
c2FtcGxlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2FtcGxlcihzYW1wbGVy
KTsKKyAgICB9CisgICAgdm9pZCBpc1NhbXBsZXIodWludDMyX3Qgc2FtcGxlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+aXNTYW1wbGVyKHNhbXBsZXIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRTYW1w
bGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBh
cmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVy
LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQz
Ml90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVy
LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBw
bmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBmZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMc3luYyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KHJldHVyblZhbHVlKSkpOworICAgIH0KKyAgICB2b2lkIGlzU3luYyh1aW50NjRfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1N5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4o
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRl
U3luYyh1aW50NjRfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTeW5j
KHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkp
OworICAgIH0KKyAgICB2b2lkIGNsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90
IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2xpZW50V2FpdFN5
bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzAp
KSwgZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0x1aW50NjQ+KHRpbWVvdXQpKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHdhaXRTeW5jKHVp
bnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPndhaXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRp
Y19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHRp
bWVvdXQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTeW5jaShyZWludGVycHJldF9jYXN0PEdDR0xz
eW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVUcmFuc2Zv
cm1GZWVkYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjaygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKTsKKyAgICB9CisgICAg
dm9pZCBpc1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xl
YW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5p
c1RyYW5zZm9ybUZlZWRiYWNrKGlkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVHJhbnNmb3Jt
RmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpOworICAgIH0KKyAgICB2
b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgdHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiYm
IHZhcnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcy
IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJv
Z3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFy
ZzIpKTsKKyAgICB9CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2
b2lkIHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyQmFz
ZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZl
cik7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBh
cmc0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBp
bmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBzdGF0aWNfY2Fz
dDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtSW5kaWNl
cyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiYmIHVuaWZvcm1OYW1lcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0s
IHVuaWZvcm1OYW1lcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jtcyh1aW50MzJfdCBwcm9n
cmFtLCBWZWN0b3I8dWludDMyX3Q+JiYgdW5pZm9ybUluZGljZXMsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50PiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtQmxvY2tJbmRl
eCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiB1bmlmb3JtQmxvY2tOYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0x1aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVu
aWZvcm1CbG9ja0luZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybUJsb2NrQmlu
ZGluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMy
X3QgdW5pZm9ybUJsb2NrQmluZGluZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bUJsb2NrQmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmlu
ZGluZyk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50
NjRfdCBwYXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9y
PEdDR0xpbnQsIDQ+IHBhcmFtcyhzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtc1NpemUpLCAwKTsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlm
b3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4o
cGFyYW1zLmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3Jj
WDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3Qg
ZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQz
Ml90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNy
Y1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAgICB9Cisg
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRl
VmVydGV4QXJyYXlPRVMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBh
cmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVsZXRlVmVy
dGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNWZXJ0ZXhBcnJh
eU9FUyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4o
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVModWludDMy
X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmJpbmRW
ZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaW5zZXJ0
RXZlbnRNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApOworICAgIH0KKyAgICB2
b2lkIHB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkucHVzaEdyb3VwTWFya2VyRVhUKGFyZzApOworICAgIH0K
KyAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnBvcEdyb3VwTWFya2VyRVhUKCk7CisgICAgfQorICAgIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBidWZzKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1
ZnMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNv
dW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9Cisg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90
IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0x2b2lkcHRy
PihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRl
eCwgZGl2aXNvcik7CisgICAgfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWFjL0dQVVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQ
VVByb2Nlc3NNYWMubW0KaW5kZXggYjdiYjYzYjI5YWQ4MDIxNzJkZjI3YTEyODk1YmIxOTk4ZmE0
YjZiMC4uMjRjNDM3Y2FhZTdmOGY5YTlhZmY5MjcwM2VmY2Y5ZGEwMzFlNGM0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQpAQCAtMzIsOCArMzIs
OCBAQAogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9y
dCAiV0tGb3VuZGF0aW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4K
KyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZp
Y2VzU1BJLmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw5ICs0
NCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHZvaWQgR1BVUHJvY2Vzczo6aW5pdGlh
bGl6ZVByb2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYg
MAogICAgIC8vIEhhdmluZyBhIHdpbmRvdyBzZXJ2ZXIgY29ubmVjdGlvbiBpbiB0aGlzIHByb2Nl
c3Mgd291bGQgcmVzdWx0IGluIHNwaW4gbG9ncyAoPHJkYXI6Ly9wcm9ibGVtLzEzMjM5MTE5Piku
Ci0gICAgT1NTdGF0dXMgZXJyb3IgPSBTZXRBcHBsaWNhdGlvbklzRGFlbW9uKHRydWUpOwotICAg
IEFTU0VSVF9VTlVTRUQoZXJyb3IsIGVycm9yID09IG5vRXJyKTsKKyAgICBhdXRvIHJldHZhbCA9
IENHU1NldERlbnlXaW5kb3dTZXJ2ZXJDb25uZWN0aW9ucyh0cnVlKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChyZXR2YWwgPT0ga0NHRXJyb3JTdWNjZXNzKTsKKyAgICBDR1NTaHV0ZG93blNlcnZlckNv
bm5lY3Rpb25zKCk7CisjZW5kaWYKICNlbmRpZgogCiAgICAgbGF1bmNoU2VydmljZXNDaGVja0lu
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29t
LmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCmluZGV4IGRiMDZlNTM0ZjdmNTFkMmViZDAz
ODI1ZjU4MjQ1Zjg0OTZmOGIxNzkuLmVkMTAwYjM2ZWQ2ZjQ2ZDRhYWY2MzU0NDc3ODgyYWI3OTNh
MTFiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
YWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCkBAIC0yMDcsNiArMjA3LDcgQEAK
ICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeQUFQTCwoRGlzcGxheVBpcGV8T3BlbkNMZGlz
YWJsZWR8SU9HcmFwaGljc19MRVIofF9SZWdUYWdfMXxfUmVnVGFnXzB8X0J1c3lfMil8YWxpYXMt
cG9saWN5fGJvb3QtZGlzcGxheXxkaXNwbGF5LWFsaWFzfG11eC1zd2l0Y2gtc3RhdGV8bmRydi1k
ZXZ8cHJpbWFyeS1kaXNwbGF5fHNsb3QtbmFtZSkiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdl
eCAjIl5BVFksKGNiaXRzfGZiXyhsaW5lYnl0ZXN8b2Zmc2V0fHNpemUpfGludHJldikiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiQVRZLERldmljZU5hbWUiKSA7OyBOZWVkZWQgYnkgTWV0YWwgY29t
cGlsZXJzCisgICAgKGlva2l0LXByb3BlcnR5ICJBVFksRUZJRGlzcGxheSIpCiAgICAgKGlva2l0
LXByb3BlcnR5ICJBVFksRmFtaWx5TmFtZSIpIDs7IERpdHRvCiAgICAgKGlva2l0LXByb3BlcnR5
ICJBVkNTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQmFja2xpZ2h0SGFuZGxlIikK
QEAgLTIxNyw2ICsyMTgsOSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ2Fwc0xvY2tEZWxheSIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJDYXNlU2Vuc2l0aXZlIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIkNvbmZpZ1N0YXRlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGFuZXMiKQorICAgIChp
b2tpdC1wcm9wZXJ0eSAiRFBMaW5rQml0IikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua1Jh
dGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRGVzY3JpcHRpb24iKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiRGV2ZWxvcG1lbnQiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5EZXZpY2Uo
IENoYXJhY3RlcmlzdGljc3xFcUlEKSIpCkBAIC0yMjksMTAgKzIzMywxNyBAQAogICAgIChpb2tp
dC1wcm9wZXJ0eSAiRmFtaWx5IElEIikKICAgICAoaW9raXQtcHJvcGVydHkgIkZvcmNlU3VwcG9y
dGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkZvcm1hdHMiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiRnJhbWVidWZmZXJFbmFibGVkIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVy
U3RhcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJHUFVDb25maWd1cmF0aW9uVmFyaWFibGUi
KQorICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVRENDRGlzcGxheWFibGUiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiR1BVRGVidWdOdWxsQ2xpZW50TWFzayIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJH
cHVEZWJ1Z1BvbGljeSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVSYXdDb3VudGVyQnVuZGxl
TmFtZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVSYXdDb3VudGVyUGx1Z2luQ2xhc3NOYW1l
IikKICAgICAoaW9raXQtcHJvcGVydHkgIkhFVkNTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiSElEUG9pbnRlckFjY2VsZXJhdGlvblR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAi
SHdDdHhDYWNoZVVwZGF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPQWNjZWwo
RGlzcGxheVBpcGVDYXBhYmlsaXRpZXN8SW5kZXh8VHlwZXN8UmV2aXNpb24pIikKICAgICAoaW9r
aXQtcHJvcGVydHktcmVnZXggIyJeSU8oQ2xhc3N8TWF0Y2hDYXRlZ29yeXxOYW1lTWF0Y2gpIikK
ICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9BdWRpb0NvbnRyb2woQ2hhbm5lbElEfElE
fFN1YlR5cGV8VXNhZ2V8VmFsdWUpIikKQEAgLTI4Miw2ICsyOTMsOCBAQAogICAgIChpb2tpdC1w
cm9wZXJ0eSAiSU9QYXJlbnRNYXRjaCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklP
UENJKChDbGFzc3xQcmltYXJ5fFByb3BlcnR5fClNYXRjaHxFeHByZXNzKENhcGFiaWxpdGllc3xM
aW5rKFN0YXR1c3xDYXBhYmlsaXRpZXMpKXxNU0lNb2RlfFJlc291cmNlZHxUdW5uZWxsZWQpIikK
ICAgICAoaW9raXQtcHJvcGVydHkgIklPUE1Jc1Bvd2VyTWFuYWdlZCIpCisgICAgKGlva2l0LXBy
b3BlcnR5ICJJT1BlcnNvbmFsaXR5UHVibGlzaGVyIikKKwogICAgIChpb2tpdC1wcm9wZXJ0eS1y
ZWdleCAjIl5JT1BsYXRmb3JtKFNlcmlhbE51bWJlcnxVVUlEKSIpCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJJT1Bvd2VyTWFuYWdlbWVudCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1Byb2JlU2Nv
cmUiKQpAQCAtMzE3LDYgKzMzMCw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJQcm90b2NvbCBD
aGFyYWN0ZXJpc3RpY3MiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiUmVtb3ZhYmxlIikKICAgICAo
aW9raXQtcHJvcGVydHktcmVnZXggIyJeUmVzZXRPbihMb2NrfFVubG9jaylNcyIpCisgICAgKGlv
a2l0LXByb3BlcnR5ICJTV0lQX3Byb3BlcnRpZXMiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2Fm
ZUVqZWN0UmVxdWVzdGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhbXBsZVJhdGVzIikKICAg
ICAoaW9raXQtcHJvcGVydHkgIlNlcmlhbCBOdW1iZXIiKQpAQCAtMzM4LDYgKzM1Miw3IEBACiAg
ICAgKGlva2l0LXByb3BlcnR5ICJhdHRhY2hlZC1ncHUtY29udHJvbC1wYXRoIikKICAgICAoaW9r
aXQtcHJvcGVydHktcmVnZXggIyJeYXVkaW8tKGNvZGVjLWluZm98ZGV2aWNlLW12YWx1ZXxkZXZp
Y2UtbnZhbHVlfHNlbGVjdG9yKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJhdi1zaWduYWwtdHlw
ZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJiYWNrbGlnaHQtUFdNLWZyZXEiKQogICAgIChpb2tp
dC1wcm9wZXJ0eSAiYmNkVmVyc2lvbiIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXihi
b2FyZHxkZXZpY2V8cmV2aXNpb258c3Vic3lzdGVtfHZlbmRvciktaWQiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiYm9vdC1nYW1tYS1yZXN0b3JlZCIpCkBAIC0zNTAsNiArMzY1LDExIEBACiAgICAg
KGlva2l0LXByb3BlcnR5ICJjb25uZWN0b3ItdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXihkZXZpY2V8cmV2aXNpb258c3Vic3lzdGVtLXZlbmRvcnx0b3VjaC1zaXplKS1pZCIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJkZXZpY2VfdHlwZSIpCisgICAgKGlva2l0LXByb3BlcnR5
ICJkaXNwbGF5LWJwYyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWNvbm5lY3QtZmxh
Z3MiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1saW5rLWNvbXBvbmVudC1iaXRzIikK
KyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktcGl4ZWwtY29tcG9uZW50LWJpdHMiKQorICAg
IChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS10eXBlIikKICAgICAoaW9raXQtcHJvcGVydHkgImRw
bSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJlcnJvcmRiIikgOzsgTmVlZGVkIGZvciBPcGVuR0wg
b24gb2xkZXIgaGFyZHdhcmUKICAgICAoaW9raXQtcHJvcGVydHkgImZpbGV2YXVsdC1pbWFnZSIp
IDs7IE5lZWRlZCBieSBMYXVuY2hTZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTli
ZGI4NjdhYjg2YjhjNTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVk
NjZkZGY5NWYyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVM
ZWdhY3lDRE1Qcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcw
ZmE1ZGU0ZmFkZTE1MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3
NmM4YjgyNWM2ZTQ1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4MDIzMTkwNGY4ZWYw
ZWFhOTM2MjI5YWZhOTc1OTguLmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4OWI4MDNmNmFiZjQx
YzhlOWVkZGU0MTQyNzY5MzI4MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1YWEzZDU0ODA2Zjcy
YzdlZGMwY2IxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywxNSArMjcsMTYgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDZiZmJmYWZiMjA0NDc4MzBkNzMwYzM4YzU1
ZDkxNjAyMmMyM2QzMTYuLjA2ZTMwOWU0ZDU3ZWEwNDdmNWVkODI5MDI1OGIxOWNiY2RhNjE5MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNv
dXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkuaApAQCAtMzgsNyArMzgsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IDI0NWNmNDBkZmM2
ZmM3MjQxNzQ5OWM5OTZlZWE5NWYwYTNhOGQ2OWEuLjg2ODJjZDc5NWE1ZjU0NGFiYjc4ZTdjMWI4
NTg3Yjk2ODgzZjk0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtMjksNyArMjksNiBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
UmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggMzkwYzBjZTFjMjdiNjA4ZGM5N2FhZmE1MTg2MzYx
ODgwYzNhZjRkMy4uYzMzNzgzMzNjMDI2NjZkYTYxYWJhYzY0OTQ3MDIxMjFkYjVlODZjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIK
KwogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
QEAgLTM4LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNs
YXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5LmgKaW5kZXggMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYxODNhYmQwZTc0NWI4
MzUzMy4uODQzYmIwNmY3YjU2YzZlM2NmYmVlNzlhN2U0MjgxZWZlZThmOWE3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkuaApAQCAtMjgsMTQgKzI4LDE1IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmOGFiYzFmNDA1ZmMxNDY5NDc1
YjRkOTBiYWQzZDUzY2EwZjgwMTRlLi42MWM0NzA4YWU5NmRiY2FhNTY5ODA5ZWUxOTk1YmU4MTZh
OTFmZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShMSUJX
RUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbXBv
cnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJS
VENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDc4OGM1ZjAwYzAyZjRmMTQ4
ZmVlY2NkMzhkMTA2ODE4YjBkN2U5NjEuLjNhYjRlNGIxY2YxYzE0MTIzMGMxM2U0NTc2YzVlZDZl
NmVmYzJlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBI
QVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtMzYsNyArMzcsNiBAQAog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9D
b2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQppbmRleCA3YTYzMzYzNDdj
MDA3ZTk3YjczYjU0Mzc3NDkxNjgzOGQ2NDAzN2RhLi4xYWE1M2NjMmZiNzdiYWY5ZTMyNjUwNzIx
MDgwOWZkNzZjZmJiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2Nv
YS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtMjYsNyArMjYsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIu
aCIKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW1w
b3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBmNmVkODExZjUzNDJmZTQ4NTU1MTc2Zjg5
ZDUxNDU3NTYyYzY2NTg1Li4wYmNkNTY3M2M5MzQ2YWRhMTFkNjU2YzNhZGQ1MWJlNGVkYmMyNzMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCkBA
IC0zOSwxMCArNDAsNiBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb247CiBP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfSAvLyBuYW1lc3BhY2UgSVBDCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC0x
MTIsNCArMTA5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5j
cHAKaW5kZXggZGRiZTRlZWRkNDQxZGY4N2M1NWFkMzMwZjA0MmNjZGNmYWRmYjkwYi4uNjUxZmYy
NTRmOTA1YzE2YTkwY2I0ODJjOTc3M2Q0YWM3NDI5NGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5o
IgogI2luY2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlN
ZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmgKaW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlmZGVjMzY5MDE3NzI3
NC4uOTNmMDNhODI1NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNp
bmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBAIE9CSkNfQ0xBU1Mg
TlNQcm9ncmVzczsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlm
CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0MGYyN2MxNjA1
YzNjZDc0YmM2OTA3YjdkOTFiNDdiNzYyLi43MjZkZDk5MGJhZmQ0Mzk0YjVhZmMwMzJhMWNmMjBm
MTg0OWM0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1
MC4uOTgwYTA2Zjc4MzlkYmQ1ZTlmOWQ1MDQ1NDA5YTMzZDc3YjFjMDM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
TWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC00OSw3ICs1MCw2IEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlv
bjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNw
cAppbmRleCA0NDliMTNkOGUwN2IyY2QwNDJjNGJhMzYzNmFiNzkzZDM3YjFjM2Y0Li5jNzc4ODgx
MWYwMzJkNThmOGI1Mjc3MzZlMWQyMjc4NDEwZjkxM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFu
bmVsLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMzE5NjQxOTBkMTQxZDU0OWRhMGJh
ZjJkYzhiZjI5N2I0ZTU4MWU4OS4uMDQzNGJmODgwOWE3ZWIzZWNjMThlOGY2NTBjYzAyNzhhZTZl
YjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgpAQCAtNDAs
NyArNDEsNiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNz
IENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA1YjQ4OWNjNTM4ZjdjMDcxNTEwMTA2YzU4
ZjVjMDk0ZWM5YThlMWI4Li40OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2NjMzNlMzhjMTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJOZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVz
dEhlYWRlckZpZWxkUHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNTJlYzM5MjY5MDIxOGVkZTY2OGQ1NWU2Mzhk
OGUxNzUwMmZkNmVlNS4uNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5ZmIyMDZmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtRXJyb3IuaD4KQEAg
LTM3LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNz
IERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2NiZmYxMDg5Y2Mx
MDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLmQzN2Q3ODA2OTgzYmJhNTQ3Y2EwZjkyMzVlYjRi
ZjZiNzMxNTY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CkBAIC00Myw3ICs0NCw2IEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tl
dFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmlu
ZGV4IGRiNTc5NWRkMjE3ZjQ1YWQ1ZjY3ZTMwYjc5MWY5MmUyNzZjMDI5ODYuLjk2MWU0NjQ1OWJl
NzcxNzdlMjYwNWU3ZDg2NTJhZGE4MDIwOTdiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0zMSw5ICszMSw2IEBACiAjaW5jbHVkZSAiV2Vi
U29ja2V0VGFza1NvdXAuaCIKICNlbHNlCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCmluZGV4IGRh
YzY5MzUwN2ViM2VmY2VhNmQxMDk0ODAxYmMwMWIzNmZlMjYzOWQuLmU2ODI2ZTQ3ZTgzOTU5NDAy
OGFmOGY0YWVkMjM5MmI0YjA1ZDJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtMjcsMTUgKzI3LDEy
IEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzazsKIAotbmFt
ZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFz
a0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRU
YXNrQ29jb2EubW0KaW5kZXggODU1MzQ4NzQ0MDRjZTJiYWE0NGFlNjU2NTQ3ZDM3MjI1MzMyZWFi
OC4uOTBiYzQwOWJmZmI3MGEwZWU5ZTczNThiMzg2NzU5N2QyOWYyNGUwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tF
VCkKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25D
b2NvYS5oIgogI2ltcG9ydCAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0NWZjNjY5ZDc2NmE3NjFj
NWQ3NzNkYzk1ZjA1NDFhMzhlMzZmOGUzLi5hM2U3MDE0YjVkOGVjMDk3MzhmZmE3ZDU2NjQ1NDUw
MTBmMDUzNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1NvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFz
a1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oCmluZGV4IGU0MjFiOWUxYzcxMzE4NDM0ZjY0ODdmNWZjYjVhNmE4N2JkNzM5MTkuLjA4
ODkyMzk1OWZlNDYwZmYyYmJhNGM4YzA4Mzk5ODA2NTdiZjM0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCkBAIC0y
NSwxNCArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU29j
a2V0Q2hhbm5lbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmgKaW5kZXggZTAwYTBjY2RmYTU4NzVjMDI4YzUwNTIzMTE0MTcyOGVlOTViNDM5Mi4uZTM4YmMx
YzYwYWY2ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01Myw2ICs1NCw0
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1lbnRDb2RlciB7CiAg
ICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5
UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJy
YXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVu
Y2Uuc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9CisgICAgc3RhdGljIE9w
dGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
eworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5j
ZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICAg
ICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRh
KSwgRXh0ZW50KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+
PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJy
YXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAg
ICB7CisgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJl
ZmVyZW5jZS5zaXplKCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXplKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSks
IGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQor
ICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIGlmICghc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUoKTsK
KyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhS
ZWZlcmVuY2Uoc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0
YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJh
eVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIHN0YXRpY19j
YXN0PHNpemVfdD4oc2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNldCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZDMyYmI0NTdhNWI4ODVmM2Q1NjY4N2U3OWYxNWMzYTI2NzFiZTY0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApAQCAtMCww
ICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bGltaXRz
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2lubGluZSBj
b25zdGV4cHIgc2l6ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50ID0gYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVu
Y2U7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlSZWZlcmVuY2U8VCwgYXJy
YXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2Uo
KSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAg
ICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBB
cnJheVJlZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCisg
ICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwgbV9zaXplKHZlY3Rvci5z
aXplKCkpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX3NpemU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7Cisg
ICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0
b3I8VD4gcmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9zaXplKTsKKwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBt
X2RhdGEgeyB9OworICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZSB7CitwdWJsaWM6Cisg
ICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25z
dCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KKworICAg
IHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29u
c3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2
ZWN0b3IuZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5zaXplKCkgPT0gRXh0
ZW50KTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIUV4dGVudDsgfQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gRXh0ZW50OyB9CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKKyAgICB7
CisgICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNFbXB0eSgpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7IH07Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitBcnJheVJlZmVy
ZW5jZShjb25zdCBXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBBcnJheVJlZmVy
ZW5jZTxUPjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgKaW5kZXggZWMzZDE0YWU4ZjNlYzI0NzA1NDc2M2NhZWU5MDljYzJjODc1ZjVk
OC4uYmJkN2FiY2I0Y2RjNjA0MzgyYjEwNjVlMzMyMzg0NDljNmFjNTk3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjI3LDEwICsyMjcsMTIgQEAgcHVibGlj
OgogICAgIHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7CiAK
ICAgICB2b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKTsK
LQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQgPSAwLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOyAvLyBUaHJlYWQtc2Fm
ZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsg
fSk7IC8vIFRocmVhZC1zYWZlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNl
dDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQg
b25seS4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGNoZWNrIHRoZSBTZW5kU3luY1Jlc3Vs
dCBmb3IgdHJ1ZS9mYWxzZSBpbiBjYXNlIHRoZXkgbmVlZCB0byBrbm93IGlmIHRoZSByZXN1bHQg
d2FzIHJlYWxseSByZWNlaXZlZC4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGhvbGQgb24g
dG8gdGhlIFNlbmRTeW5jUmVzdWx0IGluIGNhc2UgdGhleSByZWZlcmVuY2UgdGhlIGNvbnRlbnRz
IG9mIHRoZSByZXBseSB2aWEgRGF0YVJlZmVyZXJlbmNlIC8gQXJyYXlSZWZlcmVuY2UuCisgICAg
dXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj47CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+
IHdhaXRGb3JPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICAKICAgICAv
LyBUaHJlYWQtc2FmZS4KQEAgLTI0OSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYWlu
IHRocmVhZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAg
Ym9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRz
OjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3lu
YzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJ
bnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTU1MSw3ICs1NTMs
NyBAQCB2b2lkIG1vdmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYgYSwgc3RkOjp0dXBsZTxCLi4u
PiYgYikKICAgICBUdXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3RkOjp0dXBsZTxBLi4uPiwgc3Rk
Ojp0dXBsZTxCLi4uPj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwg
T3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpzZW5kU3luYyhU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU3MCwx
NSArNTcyLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICAvLyBOb3cgc2VuZCB0aGUg
bWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUo
ZW5jb2RlciksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgaWYgKCFyZXBseURlY29k
ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8v
IERlY29kZSB0aGUgcmVwbHkuCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVu
dHM+IHJlcGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7
CiAgICAgaWYgKCFyZXBseUFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIG1vdmVUdXBsZShXVEZNb3ZlKCpyZXBseUFyZ3VtZW50cyksIHJl
cGx5KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gcmVwbHlEZWNvZGVyOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9u
U2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjI1ZmRhN2JlZDJmZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EYXRhUmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgot
Ci0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLQotbmFtZXNwYWNl
IElQQyB7Ci0KLXZvaWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheSgqdGhpcyk7
Ci19Ci0KLWJvb2wgRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlVmFy
aWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCmluZGV4IDM0
NTBjMzFiNzNkZGI2YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNkNjkyN2YzNDFjNWFh
OTNmYzEwNzNjYjA3NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
YXRhUmVmZXJlbmNlLmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgogCiBuYW1l
c3BhY2UgSVBDIHsKIAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0gICAgCi1jbGFz
cyBEYXRhUmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0
OwotCi0gICAgRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkK
LSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIERhdGFSZWZl
cmVuY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQotICAg
ICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6
ZSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
bV9zaXplOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQot
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAgICAgICBpZiAoaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2Rh
dGE7IAotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25zdAotICAgIHsK
LSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCht
X2RhdGEsIG1fc2l6ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1wcml2YXRlOgotICAg
IGNvbnN0IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwotfTsKK3VzaW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5jZTx1aW50OF90LCBh
cnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGViNzMwNWJmZDE5MTA4
NzA2OGQzMGJjZGI4ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJjNWFiOGJiYWRi
ZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAgLTE4NiwyMCAr
MTg2LDE1IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgRGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRlY29kZUZpeGVkTGVu
Z3RoUmVmZXJlbmNlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQogewotICAgIHVpbnQ2
NF90IHNpemU7Ci0gICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxpZ25tZW50LCBzaXpl
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhID0g
bV9idWZmZXJQb3M7CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAgIGRhdGFSZWZlcmVu
Y2UgPSBEYXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBkYXRhOwogfQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1lbnQoQXR0YWNobWVu
dCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCBiNzJk
ZDhhY2UyNzczZGIzNTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4ODJmYzkwOTg0YjJm
YTU3YmY5YzQ4Yjk2NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CkBAIC00MCw3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEYXRhUmVmZXJl
bmNlOwogY2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSA6IHVpbnQ4X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXpl
X3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhlIGRhdGEgcmVm
ZXJlbmNlIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFy
Z3VtZW50RGVjb2RlciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAgIC8vIFRoZSBkYXRh
IGluIHRoZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUg
bGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8gUmV0dXJucyBu
dWxscHRyIG9uIGZhaWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0IHVpbnQ4X3Qq
IGRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGht
ZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKFQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRl
eCBmZDQwOTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5lODNhM2U0YWZmNDJh
NTc1NTA1ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KQEAgLTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6OndyYXBGb3JUZXN0aW5n
KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9yaWdpbmFsLT5zZXRT
aG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShTaG91bGREaXNwYXRj
aFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2RlVmFyaWFibGVMZW5n
dGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5i
dWZmZXJTaXplKCkpKTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9yaWdpbmFsLT5idWZm
ZXIoKSwgb3JpZ2luYWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8QXR0YWNobWVudD4g
YXR0YWNobWVudHMgPSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgcmVzZXJ2
ZShhdHRhY2htZW50cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2b2lkIEVuY29kZXI6
OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwg
c2l6ZV90IGFsaQogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVu
Y29kZXI6OmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihkYXRh
UmVmZXJlbmNlLnNpemUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2b2lkIEVuY29kZXI6
OmFkZEF0dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAgICAgbV9hdHRhY2ht
ZW50cy5hcHBlbmQoV1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmgKaW5kZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYyNDgyZTRjOWExMS4u
ZWE2MTk2N2JlMWViY2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsK
IAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhf
dDsKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xhc3MgU2hvdWxk
RGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC02Miw3ICs2MSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGVyPik7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5jb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUgJiYgIXN0ZDo6
aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQgZW5jb2RlKFQmJiB0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDdmZDE4
M2E1NmFlOThiMDY2NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUyYjQ5ZDVjOGZjNDFh
MmQ2NTRhZGNkODllODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CkBAIC05Niw3ICs5Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0ZDo6
cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9OwogCi1j
bGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIHRl
bXBsYXRlPD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSY+IHsKICAgICB1c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCA0NmUyMWQ4ZDkzNmYyZDhiNTE2N2IyNDlm
ODgxMTE2ZmZlYjdkNGI5Li43NzQ2MWQ1NTViNzI5MmMyMGViZjUxNGEzMDJkMWRjNmU3NzcwMTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC01NCw5
ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZDxVPihtZXNzYWdl
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKICAgICB9CisgICAgdXNp
bmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHko
KSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAg
U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgc3Rh
dGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOwogCkBAIC02NCw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5
KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAg
IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRz
OjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpKTsK
IApAQCAtNzIsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSwgdHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5j
KFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCks
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RG
TW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNP
cHRpb25zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFiODYzOWI3YmE3NjM2
YzYuLjUwMGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5o
IgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKQEAgLTQ4LDcg
KzQ5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhKSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwCmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUzMjhmMDFjOTk5OTUw
YTAuLmU5NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXggODUyZWY0M2UwMDg2
MzFjOWZhZmE4MjMwYzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBlYWZiM2RjNDdjODVk
YTQxOTBhMmJhMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
aW5nUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdS
ZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA4YjM3NDBmNGIxMDFhZDkwZjUwZWQ1N2M4NTBi
OTAzMGZjYzQzMGMyLi40YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTlBPYmplY3RQ
cm94eS5oIgogI2luY2x1ZGUgIk5QUmVtb3RlT2JqZWN0TWFwLmgiCiAjaW5jbHVkZSAiTlBSdW50
aW1lVXRpbGl0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggYWQ0ZmNkOWQ4Y2NmNDJmMTJlZTQ4OGUwMTM0NmM2
MTlhNzAxYjhkMi4uYzdhNzA1M2NiZDI2ZDIwNDU0YzA0MmM2YWNlMTZjYjUyNTMwZjQzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLW5hbWVzcGFjZSBJUEMg
ewotICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggNTczZWQzZDhlZTliYmY0MTAzMTY4ZTc5YTA1N2Y5ZGJkYjliODY5NS4u
NjczMjQ0YTY3ZTA5OWZmYjcxODA3ZDU1NTBjNDU0ZjM2MzFkYjEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDMsNiArMjAzLDcgQEAgZGVmIGZvcndh
cmRfZGVjbGFyYXRpb25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5kX2FuZF90eXBlcyk6
CiAKIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0
dXJuIGZyb3plbnNldChbCisgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAn
TWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywK
QEAgLTIxNCw2ICsyMTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMnLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDMsNiArMjQ1
LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAg
ICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXInLAogICAgICAgICAnV2Vi
S2l0OjpEb3dubG9hZElEJywKICAgICAgICAgJ1dlYktpdDo6R2VvbG9jYXRpb25JZGVudGlmaWVy
JywKKyAgICAgICAgJ1dlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6
TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9tUHJv
dG9jb2xJRCcsCkBAIC01MzAsNiArNTMzLDcgQEAgZGVmIGNsYXNzX3RlbXBsYXRlX2hlYWRlcnMo
dGVtcGxhdGVfc3RyaW5nKToKICAgICAgICAgJ09wdGlvblNldCc6IHsnaGVhZGVycyc6IFsnPHd0
Zi9PcHRpb25TZXQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENv
ZGVycy5oIiddfSwKICAgICAgICAgJ1ZlY3Rvcic6IHsnaGVhZGVycyc6IFsnPHd0Zi9WZWN0b3Iu
aD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwK
ICAgICAgICAgJ3N0ZDo6cGFpcic6IHsnaGVhZGVycyc6IFsnPHV0aWxpdHk+J10sICdhcmd1bWVu
dF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdJUEM6
OkFycmF5UmVmZXJlbmNlJzogeydoZWFkZXJzJzogWyciQXJyYXlSZWZlcmVuY2UuaCInXSwgJ2Fy
Z3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICB9CiAK
ICAgICBtYXRjaCA9IHJlLm1hdGNoKCcoP1A8dGVtcGxhdGVfbmFtZT4uKz8pPCg/UDxwYXJhbWV0
ZXJfc3RyaW5nPi4rKT4nLCB0ZW1wbGF0ZV9zdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
RGF0YS5jcHAKaW5kZXggNjEzNDNiZDk0MTA2YjZlNzg5ZjgzYmMyNWRlNzlmN2E2MDQwOTNjYy4u
Yzc4MjMxNmYzMDU3YTNjYWY5ZDNlMjA3N2M4MTMyNTUzZTY5NzU2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElEYXRhLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkFQSURhdGEuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCmluZGV4IDdiYTIwN2FiYjBhY2NjOGE1NzBmNWM2NjNm
NDZjYWEyNGE4MjZkOTEuLjMxZmQ3ZDAzZmFmZTAzOTU4Nzk1MmE2Mzc4ZDFhOWM4ZmYyZjc5MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc0RhZW1vbigp
OwogICAgIHZvaWQgbGF1bmNoU2VydmljZXNDaGVja0luKCk7CiAgICAgdm9pZCBzZXRRT1MoaW50
IGxhdGVuY3lRT1MsIGludCB0aHJvdWdocHV0UU9TKTsKICNlbmRpZgpAQCAtMTg0LDQgKzE4Mywz
IEBAIHN0cnVjdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5YzI2ZGI0ZTlhOWY2YmE3MmU0ODIwYmI0MDZj
MmNmYmRlMTEzZTliLi5kYTM3MzRjODRkNjU0ZDhkMDNjYTc5MjVmN2JkNzU5OTEzYmMzNGFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTMyMjEsNCArMzIyMSw4MiBAQCBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj4g
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OgogICAgIHJldHVybiB7
IFdURk1vdmUoKnJlc3VsdCkgfTsKIH0KIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgZW5jb2RlciA8PCBh
dHRyaWJ1dGVzLmFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXB0aDsKKyAgICBl
bmNvZGVyIDw8IGF0dHJpYnV0ZXMuc3RlbmNpbDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMu
YW50aWFsaWFzOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGE7
CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjsKKyAgICBl
bmNvZGVyIDw8IGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDsKKyAgICBl
bmNvZGVyIDw8IGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlOworICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5zaGFyZVJlc291cmNlczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaXNXZWJH
TDI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9uczsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0
ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5jZTsKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgZW5jb2Rl
ciA8PCBhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZTsKKyNlbmRpZgorfQorCitPcHRpb25hbDxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFscGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGVwdGgpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5zdGVuY2lsKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFs
cGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZmFpbElmTWFq
b3JQZXJmb3JtYW5jZUNhdmVhdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVz
LnNoYXJlUmVzb3VyY2VzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaXNXZWJHTDIpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5ub0V4dGVuc2lv
bnMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJl
ZmVyZW5jZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQlhS
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy54ckNvbXBhdGlibGUpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7
Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyYgYWN0aXZlSW5mbykKK3sKKyAgICBlbmNvZGVyIDw8IGFj
dGl2ZUluZm8ubmFtZTsKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8udHlwZTsKKyAgICBlbmNv
ZGVyIDw8IGFjdGl2ZUluZm8uc2l6ZTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OkFjdGl2ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhY3RpdmVJbmZvOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5uYW1lKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8udHlwZSkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZv
LnNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBhY3RpdmVJ
bmZvOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDRhOTMyMTU5MTMwY2I3YmNkZTU1
ZTIxMWUxN2M0YmVkZWYxNzA1ZDYuLjFkYWU5Njk1ZjMzYzA5ZGNkN2M1ODAzNjA4ZTJkNmFjMTZl
OWZjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC03MSw2ICs3MSwxMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUg
IkFycmF5UmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc1R5cGVzR0wuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC0yMDMsNiAr
MjEwLDEwIEBAIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CiB1c2luZyBJREJLZXlQ
YXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsKICNlbmRpZgogCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCitzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzOworI2VuZGlmCisKIG5hbWVzcGFjZSBET01DYWNoZUVuZ2luZSB7CiBzdHJ1
Y3QgQ2FjaGVJbmZvOwogc3RydWN0IFJlY29yZDsKQEAgLTg3Myw2ICs4ODQsMTkgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uPiB7CiB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAg
IHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTA0MSw0ICsxMDY1LDE2IEBAIHRlbXBsYXRl
IDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzPiB7
CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisK
K3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UsCisgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQsCisgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyLAorICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UKKyAgICA+
OworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggY2YxMzFhOTIxZTA4
NjM2NWRiZjc3ZmE5OGU0MWMxYzc0YTNlN2UyNS4uYWRkOTQ5YmE1MDhkOGU4MTQwODdmZWRlN2Iw
NDhhM2RlYzZjZjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE1OCw2ICsxNTgsOSBAQCB2b2lkIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8
PCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBzaG91bGRQbGF5
TWVkaWFJbkdQVVByb2Nlc3M7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGVuY29kZXIgPDwgc2hv
dWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7CisjZW5kaWYKICAgICBlbmNvZGVyIDw8IHNob3Vs
ZEVuYWJsZVZQOURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlTV0RlY29k
ZXI7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTEwLDYgKzUxMywxMCBAQCBP
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcykpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5z
aG91bGRFbmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRl
eCBkOTFlNDYwMzhmMzA5YjUxMzBiZmRlNThkZmY0YTlmMTgxOTUxZGZkLi5jMjA2MTIzMTE0MzVi
ZjRmOTJjZjA2ZmU1ZTExMjA1YTRiNTExMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMjksNiArMjI5LDkgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkUmVuZGVyQ2FudmFz
SW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFJlbmRlckRPTUluR1BVUHJv
Y2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBm
YWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIHNob3VsZFJlbmRlcldlYkdMSW5H
UFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVj
b2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIgeyBmYWxz
ZSB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggOWJkOGE4MTc1NDlmNThmZTM4M2Q3MjVk
YTY2M2YzYmM1NGNhMGQ3NC4uNzdlOWI0ZDVjYzc1MmZiY2RiNmI2NWY5YWRjMjYwMTk1NmNhMTQ3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVyc0NGLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzU291cC5jcHAKaW5kZXggMWQ4NGUyZmUyNjhmMzQ2MGViMjk3NWM0MmJhOTVkMTRmMWQyMzVj
Zi4uZmEyNjhkNTg0YTBmYzhkZjg3YTIxZmE0NTYwNzdiOGM1ZDQyYjg1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2VydGlmaWNhdGVJCiAgICAgLy8gRW5j
b2RlIHN0YXJ0aW5nIGZyb20gdGhlIHJvb3QgY2VydGlmaWNhdGUuCiAgICAgZm9yIChzaXplX3Qg
aSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0LnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBH
Qnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0W2kgLSAxXS5nZXQo
KTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShJUEM6OkRh
dGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pKTsKKyAgICAg
ICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRp
ZmljYXRlLT5sZW4pOwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgYm9v
bCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBDZXJ0aWZpY2F0ZUluZm8mIGMKICAgICBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4gY2VydGlm
aWNhdGU7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNoYWluTGVuZ3RoOyBpKyspIHsK
ICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZTsKLSAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNlcnRpZmlj
YXRlRGF0YVJlZmVyZW5jZSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNh
dGVEYXRhUmVmZXJlbmNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBH
Qnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJyYXlfc2l6ZWRfbmV3KGNlcnRp
ZmljYXRlRGF0YVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjc3LDQgKzI3NywzIEBAIE9wdGlvbmFs
PFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1CiAjZW5kaWYKIAogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwOTE3ZjAxYmUx
YzlmOGNhYTJhYmY3ZjBmODkwZjg5NWEzZjJlZjg2Li41MGNkZTEyYWZhM2FhN2Y3OGMyNzllYzhm
YjgxOTc0NGI2ZmIxZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCkBAIC0xMzcsNyArMTM4LDYgQEAgUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAg
QG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5Ci1QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5j
ZS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0
Zm9ybS9JUEMvRW5jb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5n
LmNwcCBAbm8tdW5pZnkKQEAgLTY5MywzICs2OTMsNSBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAogV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKworUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggOTk1MTgwNzMyODBlOWM5NWEyYjI1ZjAwYmM4YmZiMzg4NzYyMTI0MS4uMTNmYTcx
NWU3OTZmYzg1OTIzMTRiM2ZlN2YwZDRlYTlhZWQ4OTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dApAQCAtNjMsNiArNjMsNyBAQCBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bQogCisKIFBsYXRmb3JtL2NmL01vZHVsZUNGLmNwcAogCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL2Nv
Y29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwCkBAIC01NzMsNiAr
NTc0LDggQEAgV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KIFdlYlByb2Nlc3Mv
RW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5t
bQogCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCkBAIC02ODUsNiArNjg4LDcg
QEAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4
IDJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QuLjczN2I2MjU4MTk4NjZh
MGVjYjU5OWEyMTMwYjMyOTEzZWFmMzk2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDRmMzk4YjUzMGY2MDg1NzVj
OTY3YjgzYzc0ZmEyZjQzMjhmNmNlM2IuLjhjYTk3ZTZlNTk3YmQ3MTEwYTBkNzM4ZTBjNGE3Yzg1
NjAzYThhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nl
c3NQcm94eS5oCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFByb2Nlc3NU
aHJvdHRsZXImIHRocm90dGxlcigpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CisgICAgdXNpbmcgU2VuZFN5
bmNSZXN1bHQgPSBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAx
X3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0p
OwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA6
IGJvb2wgeyBObywgWWVzIH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4g
dm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmLCBDJiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQg
PSAwLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiA9IHsgfSwgU2hvdWxkU3RhcnRQcm9jZXNz
VGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6
WWVzKTsKQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVy
biBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTE2
MywxMiArMTY0LDEyIEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNz
YWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IAotYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNz
YWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMpCitBdXhpbGlhcnlQcm9jZXNzUHJveHk6OlNlbmRTeW5jUmVzdWx0IEF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVw
bHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VS
VChVOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFRy
YWNlU2NvcGUgc2NvcGUoU3luY01lc3NhZ2VTdGFydCwgU3luY01lc3NhZ2VFbmQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5k
ZXggODIzYzIwMmE4NTZhMDEzNmRkOWVhNzU5ZjBlY2RlYmE0N2Y0ZjM2Mi4uYjU3N2NiZGY4ZTA3
OGY0ZmI0Zjg3MzRkN2JmZDYwOGQyMDM4ODA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaApAQCAtMzIsMTAgKzMyLDYgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24gZmluYWwg
OiBwdWJsaWMgTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24sIHB1YmxpYyBGcmFtZUxv
YWRTdGF0ZTo6T2JzZXJ2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKaW5kZXggZmY5OGI4NGZhODlkYmVmZGQ2NDY2
NmJiYmE0MmZjOTBjZWMzNTc3Zi4uMTI4YTM5NzdlNjNlZTRmNGVmMWYyMGVhYWVjODZkMDhlY2Jm
NThkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29s
SUQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgpAQCAtMzUsMTAgKzM2LDYgQEAKIE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbExvYWRl
cjsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzRjNzE4NzRh
MTBkYTliNTQxZmVlMjgyMDgwOGMxZTUwZDNmYTkyYi4uOWRiM2E1MDliOTE0YzA5M2NhZjE2OWEw
NWQ2NWI1N2VkMGM4MDEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCkBAIC04
MCwxMCArODEsNiBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggMjRiNjMzZTQ4NGQyYTM1YmE3
NGQ0NWYxMmVkZTM0YTBmNzhjYTBhNi4uMjQ4ZTUzYTA4M2QxOWEwZWY0ZDgzYzIzYjhjY2UwMDM0
NWRhYWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJJbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggMTI5YTM0MGYwODk2NGQwZmZhMjNhMzcxMDFhMDlh
ODU2ZDNjY2NiMi4uYTRkOGQ3Y2Q4MDRlNjU2MGRhYmZkZTYxMTRmZjA2MjExYmFkNDdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb250ZW50V29ybGRTaGFyZWQuaCIK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTQ4LDEwICs0OSw2IEBAIGNsYXNzIFVzZXJT
Y3JpcHQ7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggNmVkMWM2OWMwOGZjNTU5ZmUyYTNmM2I5Mzk1MGVhODI4ZDYwZDRiZi4uY2VjNzNkMTNk
MDk4ZDcxMzE4NDhhZmI1OTNlZjA3MjQxMDIxOGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OCw3ICs1OCw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC03OTI3LDYg
Kzc5MjYsMTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zv
ckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRP
TUluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmlu
Z0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyA9
IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpOworI2lmIEVOQUJM
RShXRUJHTCkKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzID0g
cHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCk7CisjZW5kaWYKKwog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5
RGVjb2RlckVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkKICAg
ICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5
RGVjb2RlckVuYWJsZWQoKSAmJiAoIVdlYkNvcmU6OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVm
ZXJlbmNlcygpLnZwOVNXRGVjb2RlckVuYWJsZWRPbkJhdHRlcnkoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY0MjQ0NmY5ZTlhYTRiNTIxMTE0OTAzYjZmMGI1
ZjcxMWY5MWIyZTUuLjQzN2FiNzUwYjM1YWIxNjNiMmE1ODBhZTg2NzJlZDQ2MDE2NDc0MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRl
ICJEcmFnQ29udHJvbGxlckFjdGlvbi5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAt
MjAzLDcgKzIwNCw2IEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7
CiB9CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29k
ZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKaW5kZXggZjQy
NDVjZTY1ZTlkMmQ1NjViM2YxMjVmMzQ1N2EyNTZmYjM5YzlkNC4uZDIzOGMyYTFhNjA4ZGM1YTQ2
MzJlNmExOTk3N2RiNjFiYWI2MTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKaW5kZXggZDQ0MmI2MmI1MjI1ODdmOTBmYTY4OWQ1NmIyMDYyNzZkZWI0NDgyYi4uODI1Y2Qw
MjY4OGEyNjgyMTk0MWZmN2E0MThmNGRmNWE5NzViYTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzgsMTAgKzM4LDYgQEAgbmFtZXNwYWNlIEFQ
SSB7CiBjbGFzcyBGcmFtZUluZm87CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNTI4ZjQ3MWY0NjNkZjZjMTEzMGEzZmI4Mzc3NmJm
MWIyYWJlZjk0Li4wYjc2OWYwMzU0ZWI0ZjAzMmQyMjA5ZWM3OWI4ZmUyMTllZmQ4ODkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY5
OCw3ICs2OTgsNiBAQAogCQkyRDkyQTc3QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJndW1lbnRDb2Rl
cnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEz
RDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKIAkJMkQ5
MkE3N0MyMTJCNkE3MTAwRjQ5M0ZEIC8qIEF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk2NkExMTJGQUY1NzAwNkJDQzI0IC8q
IEF0dGFjaG1lbnQuY3BwICovOyB9OwogCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi87IH07Ci0JCTJE
OTJBNzdFMjEyQjZBNzEwMEY0OTNGRCAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQzc1MzdEMTgzQkU1MEYwMDcyQ0Ix
NSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZE
IC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovOyB9OwogCQky
RDkyQTc4MDIxMkI2QTcxMDBGNDkzRkQgLyogRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ5RjEwRjQzN0QxMDA1OEMxNUEgLyog
RW5jb2Rlci5jcHAgKi87IH07CiAJCTJEOTJBNzgxMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEzRUVEMEMxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAg
Ki87IH07CkBAIC0xMzAzLDYgKzEzMDIsNyBAQAogCQk3QUZCRDM2MzIxRTUwRjM5MDA1REJBQ0Ig
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi87IH07CiAJCTdBRkJEMzY3MjFFNTFCQUIw
MDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVE
QkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FG
QkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CisJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZC
QyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmgg
Ki87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEz
M0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBB
UElEaWN0aW9uYXJ5LmggKi87IH07CkBAIC0yNzE5LDcgKzI3MTksNiBAQAogCQkxQUM1RkZDMTE3
NEJGRDFCMDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2Fk
U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUxvYWRT
dGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1MzdBMTgzQTlGREIw
MDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhZ2VMb2FkU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFDNzUz
N0QxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdE
ZXRlY3Rpb25EaXNhYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5n
RGV0ZWN0aW9uRGlzYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVB
MUMxQjMzNjk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhhbmdEZXRlY3Rpb25EaXNhYmxlck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNjksNiArNDM2OCwxNiBAQAog
CQk3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oOyBwYXRoID0gQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQz
NkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGVyc2lzdGVuY3lVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2
RTIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQZXJzaXN0ZW5jeVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4
QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQx
NkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TEZ1bmN0aW9uc0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1
bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY2NTMsMTEgKzY2NjIsMTEgQEAK
IAkJCQkxQUVGRDI3ODExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oICovLAogCQkJ
CTFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi8sCiAJCQkJ
MUFFRkQyRjYxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggKi8sCisJCQkJN0Ix
REIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8sCiAJCQkJQkNFRTk2
NkExMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwICovLAogCQkJCUJDRUU5NjZCMTEy
RkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggKi8sCiAJCQkJQkMwMzJEQTIxMEY0MzdEMTAw
NThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovLAogCQkJCUJDMDMyREEzMTBGNDM3RDEwMDU4QzE1
QSAvKiBDb25uZWN0aW9uLmggKi8sCi0JCQkJMUFDNzUzN0QxODNCRTUwRjAwNzJDQjE1IC8qIERh
dGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRh
UmVmZXJlbmNlLmggKi8sCiAJCQkJQkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIu
Y3BwICovLAogCQkJCUJDMDMyRDlFMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggKi8sCkBA
IC04MzI3LDExICs4MzM2LDE2IEBACiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNv
Y29hICovLAogCQkJCUY0MDk0Q0JBMjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlM
aXN0V3JpdGVySGFuZGxlLmggKi8sCisJCQkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4
OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywK
IAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3Jt
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAw
N0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAorCQkJCTdCOTA0
MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAq
LywKKwkJCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oICovLAorCQkJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjU3MjU3NEY2NzIw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcCAqLywKIAkJCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKQEAgLTgzNDksNiArODM2MywxMCBA
QAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAorCQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZF
RUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovLAorCQkJCTdCOTA0MTY4MjU0QUZF
QTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJ
CQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5j
dGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVt
b3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKQEAgLTExMTY1LDYgKzExMTgzLDcgQEAK
IAkJCQkxQUVGRDJGNzExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQUYwQzRBMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NG
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyogQXJndW1l
bnRDb2RlcnNDb2NvYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IxREIyNjYyNTY2OENFMTAwMEUy
NkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyODE4M0RE
NkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUZBNjM0
RjIzNEY3QzY0MDBGRkE4NjQgLyogQXN5bmNSZXZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTEzMjMzLDcgKzEzMjUyLDYgQEAKIAkJCQkyRDkyQTc4NTIxMkI2QUIxMDBGNDkzRkQg
LyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3
N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDlEQUEzOEMyNENCQTFBODAwNzkzRDc1IC8qIERlZmF1bHRXZWJCcm93c2Vy
Q2hlY2tzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQwQzU2RkUyMjlGMURFQTAwQkQzM0U3IC8q
IERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oCmluZGV4IGY5MmRhNmE0N2Y3ZTI0ZjM4Mzk5YWEzNjk4YTIxMjkwZDM2MWQ0YTYuLmM5ZGM2
ODJiODc1NDliODI1MGRiMjJiMmExY2UyMTU1NTAwMGNlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgK
QEAgLTM2LDEwICszNiw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9y
OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMmMwZGY1YjlmNTQ5Njg0N2VkNjY5
MTBiZjJmMzliMmNkYzYwY2EwMi4uNWJlOGI5OTc1MjBjNGFkN2YxYjQ0MDdhZTcyMDRjODRhOTk4
ODc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaApAQCAtMzUsMTAgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTc5MThlNGI1MGM5YjdjZjViMmU3OWIwNzdkMDM1
MjEyYzYxMjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQwMjdiYjU4OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisK
KyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVk
ZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShhdHRyaWJ1dGVzKSk7
Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQoreworICAgIElQQzo6TWVz
c2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOwor
ICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0
dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworfQorCitSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCit7Cisg
ICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2Vp
dmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigq
dGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVs
ZWFzZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVm
ZmVyKCk7CisjZW5kaWYKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAg
IG1fY3VycmVudFdpZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0Owor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRo
LCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlclNlbmRSaWdodDsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVG
b3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZv
ckRpc3BsYXk6OlJlcGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNl
OjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIHNS
R0JDb2xvclNwYWNlUmVmKCkpOworICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgIGF1
dG8mIHNjID0gcGxhdGZvcm1Td2FwQ2hhaW4oKTsKKyAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigp
OworICAgICAgICBzYy5wcmVzZW50KHsgV1RGTW92ZShkaXNwbGF5QnVmZmVyKSwgbnVsbHB0ciB9
KTsKKyAgICB9CisjZWxzZQorICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworI2VuZGlmCisgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklY
TUU6IEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCdzIG5vdCBjbGVhciB0aGlz
IGlzIHRoZSByaWdodCB3YXkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkzNDkKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVy
KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKFN0cmluZyYmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCit7CisgICAg
aWYgKG1fZGlkSW5pdGlhbGl6ZSkgeworICAgICAgICAvLyBJbml0aWFsaXphdGlvbiB0aW1lZCBv
dXQgYmVmb3JlLCBzbyBsb3NlIHRoZSBjb250ZXh0IG5vdy4KKyAgICAgICAgd2FzTG9zdCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGluaXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9u
cywgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0KCkKK3sKKyAgICBm
b3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGll
bnQtPmZvcmNlQ29udGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp3YXNDaGFuZ2VkKCkKK3sKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1Zl
Y3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWRO
b3RpZmljYXRpb24oKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3
YWl0VW50aWxJbml0aWFsaXplZCgpCit7CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KTsKKyAgICBpZiAoY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQ+KG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVw
dFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcykpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBU
aW1lZCBvdXQsIHNvIHJlcG9ydCBpbml0aWFsaXplZCB3aXRoIGR1bW15IGRhdGEuIFdlIHNob3Vs
ZCBsb3NlIHRoZSBjb250ZXh0LgorICAgIHdhc0NyZWF0ZWQoIiIsICIiKTsKKyAgICAvLyBGSVhN
RTogTmVlZCB0byBtYXJrIHRoZSBjb250ZXh0IGFzIGxvc3QsIGJ1dCBpdCdzIG5vdCBzYWZlIHRv
IGZvcmNlIGxvc3QgaW4gdGhpcyBjYWxsIHN0YWNrLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFjOWJjOWFmN2I0MDgxZWU0MzIyZWQxMzcwMzBjZTdhMDczNzI1MzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMCwwICsxLDQxMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFdlYiBwcm9jZXNzIHNpZGUgaW1wbGVtZW50
YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgaW50ZXJmYWNlLiBUaGUgaW1wbGVtZW50YXRpb24K
Ky8vIGNvbnZlcnRzIHRoZSBpbnRlcmZhY2UgdG8gYSBzZXF1ZW5jZSBvZiBJUEMgbWVzc2FnZXMg
YW5kIHNlbmRzIHRoZSBtZXNzYWdlcyB0bworLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4g
R1BVIHByb2Nlc3MuCisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQg
YnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdl
U2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KKyAgICAsIHB1Ymxp
YyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
ciBvdmVycmlkZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMu
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92
ZXJyaWRlcy4KKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsK
KyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgdXNpbmcgV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsKKyAgICB2b2lkIGVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGZpbmFsOworICAg
IHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBzaW11bGF0
ZUNvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisK
KyAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBs
aXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisgICAgdm9pZCBzZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJv
cihHQ0dMZW51bSBlcnJvcikgZmluYWw7CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNF
cnJvckxpc3QoKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVy
ZSkgZmluYWw7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgZmluYWw7CisgICAgdm9pZCBiaW5kQXR0cmliTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRS
ZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFs
OworICAgIHZvaWQgYmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0
IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNs
YW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAg
ICB2b2lkIGJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBibGVu
ZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFscGhhKSBm
aW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFj
dG9yKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwg
R0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpIGZp
bmFsOworICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0
KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5hbDsKKyAgICB2
b2lkIGNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFt
cGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjbGVhckRlcHRoKEdD
R0xjbGFtcGYgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdDR0xpbnQgcykg
ZmluYWw7CisgICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBn
cmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZpbmFsOworICAgIHZv
aWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQg
Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVCdWZm
ZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUZyYW1lYnVmZmVyKCkgZmlu
YWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQcm9ncmFtKCkgZmluYWw7CisgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVSZW5kZXJidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVRleHR1cmUoKSBmaW5hbDsKKyAgICB2b2lkIGN1bGxGYWNlKEdDR0xlbnVt
IG1vZGUpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKSBmaW5hbDsKKyAgICB2b2lkIGRl
cHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0NH
TGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaFNo
YWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7
CisgICAgdm9pZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBkaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgZHJhd0Fy
cmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpIGZpbmFs
OworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZW5hYmxl
KEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShH
Q0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2goKSBmaW5hbDsKKyAgICB2b2lk
IGZsdXNoKCkgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gdGV4
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwpIGZpbmFsOworICAg
IHZvaWQgZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVN
aXBtYXAoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcy
KSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgR0NHTGlu
dCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYg
bmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVu
dW0gbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQg
Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50
ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwor
ICAgIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBT
dHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTaGFkZXJJbmZv
TG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwg
R0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7Cisg
ICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4g
dmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5h
bWUpIGZpbmFsOworICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGhpbnQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0J1ZmZlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRW5hYmxlZChH
Q0dMZW51bSBjYXApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1Byb2dyYW0oUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2hhZGVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5lV2lkdGgoR0NHTGZsb2F0
IGFyZzApIGZpbmFsOworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBh
cmFtKSBmaW5hbDsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NH
TGZsb2F0IHVuaXRzKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYg
dmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CisgICAgdm9pZCBzY2lzc29yKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFs
OworICAgIHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3Ry
aW5nJikgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50
IHJlZiwgR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRl
KEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNr
KSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spIGZpbmFsOworICAg
IHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKSBm
aW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwg
R0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVu
dW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBm
aW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xp
bnQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dM
aW50IHkpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0z
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9h
dCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVy
dGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NH
TGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmlu
YWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBz
dHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHZpZXdwb3J0KEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFs
OworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcx
LCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5h
bDsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVh
ZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9p
ZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAg
ICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZp
bmFsOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAg
IHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQp
IGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhB
cnJheSgpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJl
YWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdD
R0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0cikgZmluYWw7CisgICAgdm9pZCBnZXRC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFu
PEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50
IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dM
aW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBH
Q0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBm
aW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykgZmluYWw7CisgICAgdm9pZCBpbnZh
bGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBz
cmMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgdGV4U3Rv
cmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAg
dm9pZCB0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4
U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQg
dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYWdEYXRhTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dCB2MSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50
IHYyLCBHQ0dMdWludCB2MykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0
YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQg
aW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVp
bnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9p
ZCBkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVp
bnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBi
dWZzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVh
ckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdD
R0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xp
bnQgc3RlbmNpbCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgpIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7
CisgICAgR0NHTGJvb2xlYW4gaXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsK
KyAgICB2b2lkIGJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1
ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7Cisg
ICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVNhbXBsZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRTYW1wbGVyKEdDR0x1aW50IHVu
aXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CisgICAg
R0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmko
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NH
THN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKSBm
aW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAg
dm9pZCBkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIEdDR0xlbnVtIGNsaWVu
dFdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0
aW1lb3V0KSBmaW5hbDsKKyAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3lu
Y2koR0NHTHN5bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIEdDR0xib29s
ZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAg
dm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkgZmluYWw7CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpIGZp
bmFsOworICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVy
TW9kZSkgZmluYWw7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmlu
YWw7CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBy
ZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2Uo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIp
IGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
THNpemVpcHRyKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2Vz
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1O
YW1lcykgZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGlj
ZXMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJ
bmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2Nr
TmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZp
bmFsOworICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
aW50PiBwYXJhbXMpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwg
R0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RY
MCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZp
ZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGluc2VydEV2ZW50
TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwdXNoR3JvdXBN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBvcEdyb3VwTWFy
a2VyRVhUKCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBH
Q0dMZW51bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7Cisg
ICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMp
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZpbmFsOworICAg
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKKyAgICB2b2lkIGdldE11
bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpIGZpbmFs
OworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRl
eExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9y
bWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9p
ZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSBmaW5h
bDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVj
dHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgZmluYWw7Cisg
ICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKwor
cHJvdGVjdGVkOgorICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJy
aWRlcy4KKyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7CisKK3ByaXZhdGU6
CisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVhdGVkKFN0
cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMp
OworICAgIHZvaWQgd2FzTG9zdCgpOworICAgIHZvaWQgd2FzQ2hhbmdlZCgpOworCisgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmKTsKKyAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IHsgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCisvLyBU
aGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0
IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCitzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZV92PEdDR0xlbnVtLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2Yo
R0NHTGJvb2xlYW4pID09IHNpemVvZihib29sKSk7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZV92PEdDR0xiaXRmaWVsZCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTGJ5dGUsIGludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dM
dWJ5dGUsIHVpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNob3J0
LCBpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1c2hvcnQsIHVp
bnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xpbnQsIGludDMyX3Q+
KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNpemVpLCBpbnQzMl90Pik7Citz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1aW50LCB1aW50MzJfdD4pOworc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMZmxvYXQsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZV92PEdDR0xoYWxmZmxvYXQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZV92PEdDR0xjbGFtcGYsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZV92PEdDR0x2b2lkLCB2b2lkPik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92
PFBsYXRmb3JtR0xPYmplY3QsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dM
Y2hhcikgPT0gc2l6ZW9mKHVpbnQ4X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnQ2
NCkgPT0gc2l6ZW9mKGludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x1aW50NjQp
ID09IHNpemVvZih1aW50NjRfdCkpOworLy8gR0NHTHN5bmMgYW5kIEdDR0wqcHRyIHR5cGVzIGFy
ZSBwb2ludGVycG9pbnRlcnMuIE9uIHNvbWUgcGxhdGZvcm1zLCB0aGV5IGFyZSAzMi1iaXQuCisv
LyBDdXJyZW50bHkgd2UgaGFyZC1jb2RlIGl0IGJ5IHVzaW5nIDw9LCBhbmQgYXNzdW1lIHRoYXQg
d2UgZG8gbm90IHRyYW5zZmVyIGFycmF5cyBvZiB0aGUgdHlwZXMuCitzdGF0aWNfYXNzZXJ0KHNp
emVvZihHQ0dMaW50cHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKEdDR0xzaXplaXB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNp
emVvZihHQ0dMdm9pZHB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNp
emVvZihHQ0dMc3luYykgPD0gc2l6ZW9mKHVpbnQ2NF90KSAmJiBzaXplb2YoR0NHTHN5bmMpID09
IHNpemVvZihpbnRwdHJfdCkpOworLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVw
LXdlYmdsIHNjcmlwdC4KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVmMmIzMmIyYmMxMDEwZWY4ZWNkMGFmNTc3N2FiZDRmYTA4YTNjOTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBXYXNDcmVhdGVkKFN0cmluZyBhdmFpbGFi
bGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQorICAgIHZvaWQgV2Fz
TG9zdCgpCisgICAgdm9pZCBXYXNDaGFuZ2VkKCk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVy
YXRlZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE0YTQ0MzE1NjIxMWNjNzE4NTEzNzMzOGNhY2M3Y2U1MDM1
Nzk1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAK
QEAgLTAsMCArMSwxNjQ3IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0No
ZWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2V0
RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJy
b3IoR0NHTGVudW0gZXJyb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlN5bnRoZXNpemVHTEVycm9yKGVycm9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRl
eHR1cmUoR0NHTGVudW0gdGV4dHVyZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmF0
dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBdHRh
Y2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJp
bmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRleCwgbmFtZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
QnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyKHRhcmdldCwg
YXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJn
MSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFJl
bmRlcmJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVu
LCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9u
KG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1v
ZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBo
YSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0g
ZGZhY3RvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2Vw
YXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhh
LCBHQ0dMZW51bSBkc3RBbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBk
c3RBbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dM
ZW51bSB0YXJnZXQpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKHRhcmdldCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tG
cmFtZWJ1ZmZlclN0YXR1czo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhcihtYXNrKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3Jl
ZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyRGVwdGgo
ZGVwdGgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKEdDR0xpbnQgcykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJTdGVuY2lsKHMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3Jl
ZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb2xvck1hc2soc3RhdGljX2Nhc3Q8Ym9v
bD4ocmVkKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxib29sPihibHVl
KSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYWxwaGEpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29w
eVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29w
eVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVCdWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVy
KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlRnJhbWVidWZmZXIoKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVBy
b2dyYW0oKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlUmVuZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1Bs
YXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVy
KEdDR0xlbnVtIGFyZzApCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXIo
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkN1bGxGYWNlKG1vZGUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlQnVmZmVy
KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVGcmFtZWJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVByb2dyYW0oUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUmVu
ZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2hhZGVyKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUo
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMoR0NHTGVudW0gZnVuYykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoTWFzayhzdGF0aWNfY2FzdDxi
b29sPihmbGFnKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIs
IEdDR0xjbGFtcGYgekZhcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hT
aGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihh
cmcwLCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUoR0NHTGVudW0gY2FwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291
bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3Vu
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZW5hYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RW5hYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShHQ0dMdWludCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZmluaXNoKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RmluaXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCgpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJn
MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBhcmczLCBHQ0dMaW50IGxldmVsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRl
eHRhcmdldCwgYXJnMywgbGV2ZWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKEdDR0xlbnVt
IG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZy
b250RmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdlbmVyYXRlTWlwbWFwKEdDR0xlbnVtIHRh
cmdldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2Vu
ZXJhdGVNaXBtYXAodGFyZ2V0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Citib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQor
eworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHko
cmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybTo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkK
K3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0
ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkKK3sKKyAgICBTdHJpbmcg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRTdHJpbmcobmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U3RyaW5nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0djo6UmVwbHkodmFsdWVS
ZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2Vu
ZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2
YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFs
dWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2Vydjo6UmVwbHkodmFsdWVS
ZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2Vu
ZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2
YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludDY0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkK
K3sKKyAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0KHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQ6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludDY0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1
aW50IGluZGV4KQoreworICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpKHBuYW1l
LCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJuVmFsdWUpOworfQor
CitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTxib29sPiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZh
bHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xl
YW52OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFs
dWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoYm9vbCkpOworICAgIAorfQor
CitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCit7Cisg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dD
R0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xp
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzAsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJpKGFyZzAsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRTaGFkZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2c6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVu
dW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHBy
ZWNpc2lvbikKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlUmVw
bHk7CisgICAgaW50MzJfdCBwcmVjaXNpb25SZXBseSA9IHsgfTsKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRl
clByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJh
bmdlUmVwbHksIHByZWNpc2lvblJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KSB7CisgICAgICAgIG1lbWNweShyYW5nZS5kYXRh
LCByYW5nZVJlcGx5LmRhdGEoKSwgcmFuZ2UuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7Cisg
ICAgICAgIGlmIChwcmVjaXNpb24pCisgICAgICAgICAgICAqcHJlY2lzaW9uID0gcHJlY2lzaW9u
UmVwbHk7CisgICAgfQorfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTaGFkZXJTb3VyY2UoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U2hhZGVyU291cmNlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K0dDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJm
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgZmxvYXQgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1m
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdD
R0xmbG9hdD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVS
ZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2OjpS
ZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBs
eS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkK
K3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdjo6UmVwbHkodmFsdWVSZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1
ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQoreworICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQor
ICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNp
emUgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZv
cm1Mb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRVbmlmb3JtTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NH
THNpemVpcHRyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9m
ZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDY0X3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoaW5kZXgsIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQ6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
bW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SGlu
dCh0YXJnZXQsIG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dD
R0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzQnVmZmVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXIoYXJnMCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXI6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQoR0NHTGVudW0gY2FwKQorewor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0VuYWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0VuYWJsZWQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNQcm9ncmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29s
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNUZXh0dXJlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
VGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdpZHRoKEdD
R0xmbG9hdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpMaW5lV2lkdGgoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkoR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9seWdvbk9mZnNl
dChmYWN0b3IsIHVuaXRzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1
ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52
ZXJ0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJp
bmcmIGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlNoYWRlclNvdXJjZShhcmcwLCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdD
R0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1h
c2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBH
Q0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNl
LCBmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2soR0NHTHVpbnQg
bWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3Rl
bmNpbE1hc2sobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xl
bnVtIGZhY2UsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVt
IHpwYXNzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
dGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNl
cGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dM
ZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGZsb2F0IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBw
YXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
MWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZihsb2NhdGlvbiwgeCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTFmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NH
TGZsb2F0IHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmkobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtMml2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSwgR0NHTGZsb2F0IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2Nh
dGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwg
di5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00Zihsb2Nh
dGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSks
IHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4
LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVl
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
TWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUu
ZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVc2VQcm9ncmFtKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQcm9n
cmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVz
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWIxZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdD
R0xmbG9hdCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVz
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWIyZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdD
R0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQsIDM+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
LCAzPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0
ZihpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYo
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xl
bnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxi
b29sPihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NH
TGVudW0gdXNhZ2UpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJ1ZmZlckRhdGEwKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2Fn
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4g
ZGF0YSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlYWRuUGl4ZWxzMCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRh
dGEuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhl
bHMwOjpSZXBseShkYXRhUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFS
ZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0
YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDAo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJE
MSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b21wcmVzc2VkVGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRl
eFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpLCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihp
bmRleCwgZGl2aXNvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxh
dGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhB
cnJheSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
aW5kVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YShH
Q0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFk
T2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1ZmZlclN1YkRh
dGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWFkT2Zm
c2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGFyZzQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7Cisg
ICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRC
dWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEu
YnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3Vi
RGF0YTo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRh
UmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dM
aW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBH
Q0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkx
LCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kw
LCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgbGF5ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dHVyZSwgbGV2ZWwsIGxheWVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50
cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2ht
ZW50cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVu
dHMuYnVmU2l6ZSksIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZEJ1
ZmZlcihHQ0dMZW51bSBzcmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwg
bGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleElt
YWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhTdWJJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4
ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
TGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3Vi
SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNl
dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXByZXNzZWRUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0Qx
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgU3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxv
Y2F0aW9uKHByb2dyYW0sIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEZyYWdEYXRhTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0x1aW50IHYwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtMXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
MnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlv
biwgdjAsIHYxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9u
LCB2MCwgdjEsIHYyLCB2MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRh
dGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0zdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDJ4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJh
bnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4MmZ2
KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJp
eDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJv
b2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xpbnQgeiwgR0NHTGludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwg
dmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
STR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYkk0dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdD
R0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVsZW1lbnRzKEdD
R0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0
LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnMo
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJC
dWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMu
ZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEp
LCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNs
ZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZmko
YnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVRdWVyeSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVR
dWVyeSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUXVlcnkocXVlcnkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sK
KyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnko
dGFyZ2V0LCBxdWVyeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5
KHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1H
TE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVl
cnkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
UXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1
ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5
T2JqZWN0dWkocXVlcnksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRRdWVyeU9iamVjdHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRm
b3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2FtcGxlcigp
Cit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNh
bXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTYW1wbGVyKHNhbXBsZXIpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcihzYW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1NhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBs
ZXIodW5pdCwgc2FtcGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaShQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1l
dGVyaShzYW1wbGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFt
ZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0
IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
YW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmYo
c2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNh
bXBsZXJQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzeW5jIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKK3sKKyAg
ICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmM6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUp
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5j
KEdDR0xzeW5jIGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYyhzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50
NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGllbnRXYWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdD
R0x1aW50NjQgdGltZW91dCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRT
eW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihhcmcw
KSksIGZsYWdzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMo
R0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6V2FpdFN5bmMoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxh
Z3MsIHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFN5bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTeW5jaShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4oYXJnMCkpLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U3luY2k6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9i
amVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFj
aygpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBp
ZCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRl
VHJhbnNmb3JtRmVlZGJhY2soaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3Jt
RmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNU
cmFuc2Zvcm1GZWVkYmFjayhpZCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBp
ZCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRy
YW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2
ZU1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFj
aygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0g
YnVmZmVyTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9k
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc3VtZVRyYW5zZm9ybUZlZWRi
YWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRl
eCwgYnVmZmVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitWZWN0b3I8R0NHTHVpbnQ+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKK3sK
KyAgICBWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3Jh
bSwgdW5pZm9ybU5hbWVzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtSW5kaWNlczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitWZWN0b3I8R0NH
TGludD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5k
aWNlcywgR0NHTGVudW0gcG5hbWUpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4OjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybUJsb2Nr
QmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFt
c1JlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXY6OlJlcGx5KHBhcmFtc1JlcGx5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVz
dWx0KQorICAgICAgICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFy
YW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQorewor
ICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3Jj
WTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQg
ZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBH
Q0dMZW51bSBmaWx0ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBk
c3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlVmVydGV4QXJyYXlPRVMoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRl
eEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1N0
cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJn
MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdy
b3VwTWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1h
cmtlckVYVCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpLCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNS
b2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJv
d3MsIEdDR0x2b2lkKiBwaXhlbHMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2lu
dGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmli
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBy
b2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBy
b2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSAvLyBOT0xJTlQKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQg
aW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2
YWwpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdm9pZCoqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1pdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlP
YmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwCmluZGV4IGFlZjgzZTI1ODg4OWE1YmU4MjY3YTY4YjFjNjlmZWM1YTM0ZTAz
ODYuLjZhNGFkZjVkNmQzNGE3YzY5MWJmZjAwZWVjZTAxZmM3YWE4OTQwMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29ucwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApp
bmRleCA5NWM4MzZlNjk1MDQxZDk3ZDI1OTAzNmZkNzNkZmY1YzQ2YjhmZjkxLi5jOGM1ODI5MDUw
YTUyNThmOWQ5MzE5NzZiOTVmMDVlNTk3YTU2YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAg
IGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKLSAgICBib29sIGRpZFN1Y2NlZWQgPSBjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKKyAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZp
Y2VJZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwg
c2FtcGxlUmF0ZSgpLCBoYXJkd2FyZVNhbXBsZVJhdGUoKSksCiAgICAgICAgIE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoZGVzdGluYXRpb25JRCksIDApOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CiAgICAgZ2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShz
dHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOwotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0g
bWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CisgICAgbV9hdWRp
b0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oc3Ry
ZWFtRm9ybWF0KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXIuY3BwCmluZGV4IGI4ZjQ1YTZkNWJiNGRiNDYwOTg4MDEyNDNiYjVlOTMxN2IxZTNl
MmIuLjY1YjhmZDBkNzczNDdlOTM4YjU2NDU4MjI2Yjc4ZGE0M2M5Nzg5MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1h
bmFnZXIuaCIKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNs
dWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyTWFuYWdlci5oCmluZGV4IGU1OWUxYjA2YjQ0N2U1ZDgwY2E2MTA1MmM2YzdhMzJjNGJh
MTQyZTYuLjgxOTQwOTBjOTMzYjJmMTFhNjQ2MGFiM2MxNzcyZDM3NjE2MzcxMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAog
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
UGxheWVySWRlbnRpZmllci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggMGRiODVh
ZTliZDI0MWViYTFiZGE0ZTYyMjQ0MGY2MzI4ZTFkOGEwYi4uMjk3ZWViZGExOTE4OWRmZTBjZmU2
YzFlZDc2OWFhY2I5ZDZkOTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGI5YTAxYjA2MjVlM2I3YzdmMDExODRhODNj
MzZlNTQ5MTIyZjA5YTguLjE1MTcyYzlmNjIxMGJmNGY5NWUwYzZhYTc5MzZjNjIyZWE4ZDkzZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC00NCw3ICs0NCw2IEBACiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCmlu
ZGV4IGI3Y2VkYjdlODM5NGY5OWJhOWNmYjBhMmFjMmE5NzgxMWIzYzQxOGYuLjc3MDJkMWI3MDJk
MTIxNjJlMTlhYjlhNmRhYTRjNTk3NTE4NjJmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCkBA
IC0zMywxMCArMzMsNiBAQAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaD4KIAotbmFtZXNw
YWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBJbmJhbmRHZW5lcmljQ3VlOwogY2xhc3MgSVNPV2ViVlRUQ3VlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHAKaW5kZXggMGM2ZjczZDA3MTQ0YjU2MjY3NjkzNjdjOWYyYTNhNDAxN2VhZGU4MC4uMTY4ZWY0
MzVkZGU1NjE0ZDMwZjNiZTI4NjcwYTQ3YWVkNjE2ZGUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0y
OCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5oCmluZGV4IDczOWE0OTZlZjQ5NGNiNGE2MTg1NjZmZmM2NGQ0YTI2NGE3NGU5ZDAuLjRiZWFl
MDYyMzE3YmEyNmE2MDY4M2YxZjQ1MTIzM2ViMTA3M2FhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRD
RGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgpA
QCAtNDMsNyArNDQsNiBAQCB1c2luZyBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NW
UGl4ZWxCdWZmZXJQb29sKjsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
aW5kZXggMmRhZDIwMzg0MmYwZTU1M2ZlM2I0NjI0NDFlZTk0ZmEyNjQ5M2ExMS4uYzI4Y2U3ZjJl
MTdlODlhOGU1MTg2YTc3MDZhMmU4YTQ0ZjZiN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFR5cGVzLmg+CkBAIC01NCw3
ICs1NSw2IEBAIGNsYXNzIERhdGE7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBj
bGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xNjEsNCArMTYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMwNjRlOWM0YWZjYzJjZmY1NGEz
MjVlMjUzMWVkMDUyMmEwMDEzOTMuLmI5Nzk0NjU5ZWFiZDE4NGIzODljMDZkMTMyZjhjNDJmODA1
MjNjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA4NjU3MTFiMzY2YzI4ZGY0ODRiNGNkYzA3YWEzZmNmM2RjZWJmMmY2Li42
OTQ4OTZjOTk3YTQ5NDBkYmFiMmRhNzY1NzgyMGEyNzhhZjFkYzZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VMb2FkZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3Jt
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJm
YTFjNjlmZWE5ZDUzOTY2ZmIuLjdlMWQ0OTk0NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3Mzc3ODAw
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNs
YXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk0ZWYwZDFmY2UyZTYw
MWRmNDQ5Y2ZmODUzOWZiZDE2NDc5M2ViZTIuLmZmNjlmNTYwOWU1NzdjYWM3NzdmMDRhZmE3NGFm
MjEwNzQ4NjRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJO
ZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZjUzNDc4MzQ3ZTc3NWRm
MzdlYTk3NjM0YzIzMzA5MzJiNGExNGQyOC4uYWQ3ZmYxODdkYmI0MzUzYjllZDNiYzU3YzViYTJj
NGFhNGU4Y2ZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2Vu
ZFF1ZXVlLmg+CkBAIC0zOCw3ICszOSw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBhZjI0MmNkMmI1OTVhYzRhNDQ4NDI5N2JlNWQ1Y2Zl
MThkNDhmMzI0Li43ZDAwNzM2OWI5Y2NlODViOGYwNTQ1N2Q2NjZkMWU0NDUxYjk2YzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVh
bS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRTdHJlYW0uaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbU1l
c3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldFN0cmVhbS5oCmluZGV4IGRkMDgyMDEwNzEyYjlmNWRiOWZlYmQ4OGRhNjY5YjZkZjYxZDBm
MjkuLmI0M2NiMmVmYWQxZTEwMWVlMjY1YjkzZGRlOWIwNjEyNzM2YTA5NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRsZS5oPgpAQCAtMzMsNyArMzQs
NiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXQuaAppbmRleCBjYjQ4ZTA1NzM0OGEyZTg2NmIwOTFmZjVhYzg3MjYwNWNhMTkyZGQ1Li4z
MjNmMjVlZThmZDgxYjAyNjMwZDJmMjU5YTFhZmI4ODRiNGNmNWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dC5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlv
bjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggZWE1MzU5
NjAxMDlmZWU2ZGM0ODA1Y2Y2ODkxMjc5OGVlOWFiNmYwMy4uNDBiNGM4ZjIxMjljZjEyMzNhMWIz
MWI4NTEyN2U3YTdlOWUzZDdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNjAsMTAgKzYwLDYgQEAgT0JKQ19DTEFTUyBQREZT
ZWxlY3Rpb247CiBPQkpDX0NMQVNTIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdDsKIE9C
SkNfQ0xBU1MgV0tQREZMYXllckNvbnRyb2xsZXJEZWxlZ2F0ZTsKIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
WE9iamVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXgg
MzM0NzY0YWNlMmE4YzQzODU4OGIzMTk4MDYyZjM2NWEzNjZlOGJkYS4uNWIyNzMyZjJjNGU0YzQ4
M2ViZjg0MDg3YThjMjYzNGU5ZDU0OTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEw
OCw2ICsxMDgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwpAQCAtOTEyLDYgKzkxNiwyMiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZQogICAgIHJldHVy
biBtX3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VC
dWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisKK1JlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFBsYXRmb3JtRGlzcGxheUlE
IGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0Cit7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBVTlVTRURfVkFSSUFCTEUoaG9zdFdpbmRvd0Rpc3BsYXlJRCk7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNyZWF0ZShhdHRyaWJ1dGVzKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5k
aWYKK30KKworI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNz
TGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGVjMTRmZGIxNmM4MWNjMTI3MDZj
ZmNiNTllOTlmMmNkMzM3NjBkYzguLjEyMTVmOTJhMDMxOTU4MGEwZGRkOTIxMDUxM2RkMmQ1ZDMw
NTA1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI0Myw3ICsyNDMsMTEgQEAgcHJpdmF0ZToK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0
IGZpbmFsOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5k
b3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCisjZW5kaWYKKwogCiAgICAgQ29tcG9z
aXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBmaW5h
bAogICAgIHsKQEAgLTQwMyw2ICs0MDcsNyBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBib29s
IG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAgICAg
bXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXIgeyBmYWxz
ZSB9OworCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmNjQyMTQ3N2E1NmNlZTFiNDU5YWIxYjcw
ZDhkY2FkOWQzZGFmYzM0Li5kNDYzM2RkYjZjYzY0OTgwM2I5MjQ1NzU2MjViZmE1MjhjMTdkNGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
NDIyLDYgKzQyMiw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fc2hvdWxkUmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQ
VVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBwYXJhbWV0
ZXJzLnNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB9CiAgICAgLCBtX3Nob3VsZFBsYXlNZWRp
YUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIH0K
KyNpZiBFTkFCTEUoV0VCR0wpCisgICAgLCBtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNz
IHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzc30KKyNlbmRpZgogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAsIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2
YWN5UXVpcmtzIHsgcGFyYW1ldGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgfQog
I2VuZGlmCkBAIC03MjUsNyArNzI4LDYgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlm
IChXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKiBtYW5hZ2VyID0gd2ViUHJvY2Vzcy5zdXBwbGVt
ZW50PFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI+KCkpCiAgICAgICAgIG1fcGFnZS0+c2V0dGlu
Z3MoKS5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1hbmFnZXItPm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSgpKTsKICNlbmRpZgotICAgIAogICAgIGlmIChwYXJhbWV0ZXJzLnZpZXdTY2Fs
ZUZhY3RvciAhPSAxKQogICAgICAgICBzY2FsZVZpZXcocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0
b3IpOwogCkBAIC0zNzkzLDYgKzM3OTUsOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVu
Y2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5k
ZXJDYW52YXNJbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVz
ZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3Mp
OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYSht
X3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJl
bmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBD
X1RFU1RJTkdfQVBJKQpAQCAtNjk5MCw2ICs2OTk1LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJv
bml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRD
T1JTRGlzYWJsaW5nUGF0dGVybnMobV9pZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
cyksIDApOwogfQogCisKICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFk
ZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGU3Zjhj
MGEzYjYwNGU3YWExNTdjNzQwMjMxZTU1NTc0OWQ0ZWY3YzcuLjIxMTBhMzJmNjcwZjAwZmEyNDRm
ZTZmOWQ3OTVhNmRkZjYwZDE3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXND
aGlsZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3du
bG9hZElELmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiRWRpdGlu
Z1JhbmdlLmgiCkBAIC0xNjAsNyArMTYxLDYgQEAgY2xhc3MgQXJyYXk7CiAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNv
ZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wg
c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNl
bEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNSZXBsaWVzKCk7CiAgICAgICAgIHJldHVybiBz
ZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgU2Vjb25kczo6aW5maW5p
dHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3Bl
bmQpOwpAQCAtMTgyNiw2ICsxODI2LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUmVuZGVy
RE9NSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUGxheU1lZGlhSW5H
UFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3Nob3Vs
ZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVp
cmtzIHsgZmFsc2UgfTsKICNlbmRpZgpAQCAtMjE4Myw0ICsyMTg2LDMgQEAgaW5saW5lIGJvb2wg
V2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6
OkZyYW1lJikgY28KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBl
NTc1ZmNhMDE5ZjZiMTJhOGY0ZGFlNWNiMWQ2ODJkYTRlNDM2ZWI5Li44NGUyODQxMWNmZGRkOTFm
OWE1ZDQ3YzIxZDcxZTlkYjZkN2M2MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNTE3LDcgKzUxNyw3IEBAIGJvb2wg
V2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQp
CiAKICAgICAvLyBGSVhNRTogSW50ZXJwcmV0IHRoZSBldmVudCBpbW1lZGlhdGVseSB1cG9uIHJl
Y2VpdmluZyBpdCBpbiBVSSBwcm9jZXNzLCB3aXRob3V0IHNlbmRpbmcgdG8gV2ViUHJvY2VzcyBm
aXJzdC4KICAgICBib29sIGV2ZW50V2FzSGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgc2VuZFJl
c3VsdCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRv
clN0YXRlKFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpLAorICAgIGF1dG8gc2VuZFJlc3VsdCA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNo
b3VsZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OkNoYXIpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJ
bnRlcnByZXRLZXlFdmVudDo6UmVwbHkoZXZlbnRXYXNIYW5kbGVkKSwgbV9pZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gc2VuZFJlc3VsdCAmJiBldmVudFdhc0hhbmRsZWQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjJmMjI4MjJjN2IyMjNmY2E1OWY5NTU3
M2QxMWRjOTliMTAzNDgxMS4uNTgyZWU3NWQ5OWE3NDI0MjU0YTM5ZGFiMjA2Zjg0NjE3MzRhZDlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk0Miw2ICsx
OTQyLDIwIEBAIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJl
bmRlcmluZ1B1cnBvc2UgcHVycG9zZSkKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCisj
aWYgRU5BQkxFKFdFQkdMKQordm9pZCBXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yV2Vi
R0woYm9vbCB1c2VHUFVQcm9jZXNzRm9yV2ViR0wpCit7CisgICAgbV91c2VHUFVQcm9jZXNzRm9y
V2ViR0wgPSB1c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdAoreworICAgIHJldHVybiBtX3Vz
ZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworI2VuZGlmCisKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFZQOSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU5YzQ3ZGI0YzQ0
N2MwZjRhYjYyN2MwOTRiNWY2OGRiNTY1YTlhNmMuLjFhNTg1YWMxNDJiMTgzMjc2NGM0ZDg1Mzc5
MDkwYjJjYmNhNzNjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
MzQ3LDYgKzM0NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yRE9N
UmVuZGVyaW5nKGJvb2wpOwogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wp
OwogICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmlu
Z1B1cnBvc2UpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NG
b3JXZWJHTChib29sKTsKKyAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdM
KCkgY29uc3Q7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4Nyw2ICs2
OTEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVy
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYSB7IGZhbHNlIH07Cisj
aWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgeyBmYWxz
ZSB9OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDIyMjdiN2I1ZTQ2YzI0NDRkODlk
Yjc0NWU3NjJhOTBjNDg1M2Q5Mi4uZmUzOWIwM2Q5YTVhNDhhZjQxNzRiY2U2OWFjZmI3YTc3NmZj
YmU1NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSByZW1vdGUgdmVyc2lvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQyBhbmQgaXMgaW5jb21wbGV0ZS4KKworICAgICAg
ICBBZGQgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbi4g
Q3VycmVudGx5CisgICAgICAgIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGVzIGEgV2ViS2l0IElQQyBp
bXBsZW1lbnRhdGlvbi4KKworICAgICAgICBUaGUgaW5wdXQgZGVmaW5pdGlvbiB0byB0aGUgZ2Vu
ZXJhdG9yIGlzIHRoZSBwcm94eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBoZWFkZXIgZmlsZXMu
CisgICAgICAgIFRoZSBvdXRwdXQgb2YgdGhlIGdlbmVyYXRvciBpcworICAgICAgICAgICAtIFdl
YktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGZpbGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHNl
bmRlciBjb2RlCisgICAgICAgICAgIC0gTWVzc2FnZSByZWNlaXZlciBhbmQgcGF5bG9hZCBpbnZv
Y2F0aW9uIGNvZGUKKworICAgICAgICBUaGUgZ2VuZXJhdG9yIGNvbnZlcnRzIEdyYXBoaWNzQ29u
dGV4dEdMIEdDR0wgLXByZWZpeGVkIHR5cGVzIHRvCisgICAgICAgIHNpemVkIElQQyB0eXBlcy4K
KworICAgICAgICBUaGUgZ2VuZXJhdG9yIGlzIGludm9rZWQgZHVyaW5nIGRldmVsb3BtZW50IHRp
bWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBzdG9yZWQgaW4gdGhlIHJlcG9zaXRvcnku
CisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6IEFkZGVkLgorCiAyMDIw
LTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgcmVhZGFibGUvd3JpdGFibGUgdG8gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2YjQyMjI5Y2YyZjgyOGM2NmM3
ZTdiNDE3NzNjMmViZTQ0MzExNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbApAQCAtMCwwICsxLDEwNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIFRo
aXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgc291cmNlIGZpbGVzIGZvciBXZWJHTCBHUFUgcHJvY2Vz
cyBJUEMuCisjCisjIHB5dGhvbjMgLW0gYmxhY2sgLWwgMTUwIFRvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbAorIyBweXRob24zIC1tIG15cHkgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1n
cHVwLXdlYmdsCisjCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBlbnVtCitpbXBvcnQgcGF0aGxp
YgoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgY29sbGVjdGlvbnMKKworZnJvbSB0eXBp
bmcgaW1wb3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0
aW9uYWwsIEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIKKworcm9vdF9kaXIgPSAocGF0aGxp
Yi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCitleHRlbnNp
b25zX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9y
bSIgLyAiZ3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgorCitmdW5jdGlvbnNfaW5wdXRfZm5z
ID0gWworICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAv
ICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCitd
Cit0eXBlc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQ
cm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgiCisKKwordGVtcGxhdGVfcHJlYW1ibGUgPSAiIiIvKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxl
IGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyIiIgor
Y29udGV4dF9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAi
R1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rp
b25zR2VuZXJhdGVkLmgiCitjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1w
bGF0ZV9wcmVhbWJsZQorICAgICsgIiIiLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBp
biB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wg
aW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCit7fQorCisiIiIKKykKK2NvbnRleHRfbWVz
c2FnZXNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIg
LyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIgorY29u
dGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsg
IiIiI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAt
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CisgICAgdm9pZCBSZXNo
YXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVm
ZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQg
UHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBF
bnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlN
YXJrQ29udGV4dENoYW5nZWQoKQore30KK319CisKKyNlbmRpZgorCisiIiIKKykKKworY29udGV4
dF9wcm94eV9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAi
V2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAiCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190
ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJL
aXQge3sKK3t9CisKK319CisKKyNlbmRpZgorCisiIiIKKykKKworCitkZWYgd3JpdGVfZmlsZShm
biwgbmV3X2NvbnRlbnRzKToKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoK
KyAgICAgICAgICAgIGlmIGYucmVhZCgpID09IG5ld19jb250ZW50czoKKyAgICAgICAgICAgICAg
ICByZXR1cm4KKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKyAgICB3aXRoIG9wZW4oZm4sICJ3
IikgYXMgZjoKKyAgICAgICAgZi53cml0ZShuZXdfY29udGVudHMpCisKK2NsYXNzIGNwcF90eXBl
KG9iamVjdCk6CisgICAgdHlwZV9uYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
eXBlX25hbWUgOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGVfbmFtZSA9IHR5cGVfbmFtZQorCisg
ICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisg
ICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnR5cGVfbmFt
ZSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9u
YW1lCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
dHlwZV9uYW1lID09IG90aGVyLnR5cGVfbmFtZQorCisgICAgZGVmIGlzX3ZvaWQoc2VsZikgLT4g
Ym9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lIGluIFsidm9pZCIsICJHQ0dMdm9p
ZCIsICJjb25zdCB2b2lkIiwgImNvbnN0IEdDR0x2b2lkIl0KKworICAgIGRlZiBpc19jb25zdChz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUuc3RhcnRzd2l0aCgi
Y29uc3QgIikKKworICAgIGRlZiBpc19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJv
b2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9v
bDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3BvaW50ZXIoc2Vs
ZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcG9p
bnRlcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19y
ZWZlcmVuY2Uoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
aXNfY29uc3RfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJl
dHVybiBzZWxmCisKKyAgICBkZWYgZ2V0X2RlY2F5X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoK
KyAgICAgICAgaWYgc2VsZi5pc19jb25zdCgpOgorICAgICAgICAgICAgcmV0dXJuIGdldF9jcHBf
dHlwZShzZWxmLnR5cGVfbmFtZVs2Ol0pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYg
Z2V0X3J2YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRf
Y3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiJiYiKQorCisgICAgZGVmIGdldF9wb2ludGVyX3R5
cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxm
LnR5cGVfbmFtZSArICIqIikKKworY2xhc3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBlKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjb250YWluZXJfbmFtZSA6
IHN0ciwgY29udGFpbmVkX3R5cGUgOiBjcHBfdHlwZSwgYXJpdHkgOiBPcHRpb25hbFtpbnRdID0g
Tm9uZSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAg
ICAgc2VsZi5jb250YWluZXJfbmFtZSA9IGNvbnRhaW5lcl9uYW1lCisgICAgICAgIHNlbGYuY29u
dGFpbmVkX3R5cGUgPSBjb250YWluZWRfdHlwZQorICAgICAgICBzZWxmLmFyaXR5ID0gYXJpdHkK
KyAgICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBUcnVl
CisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29u
dGFpbmVyX25hbWUgPT0gIkdDR0xTcGFuIgorICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUgPT0gIkdDR0xTcGFu
IiBhbmQgc2VsZi5hcml0eSBpcyBOb25lCisgICAgZGVmIGdldF9jb250YWluZXJfbmFtZShzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUKKyAgICBkZWYgZ2V0X2FyaXR5
KHNlbGYpIC0+IE9wdGlvbmFsW2ludF06CisgICAgICAgIHJldHVybiBzZWxmLmFyaXR5CisgICAg
ZGVmIGdldF9jb250YWluZWRfdHlwZShzZWxmKSAtPiBjcHBfdHlwZToKKyAgICAgICAgcmV0dXJu
IHNlbGYuY29udGFpbmVkX3R5cGUKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlLmlzX2NvbnN0KCkK
KworZGVmIGNyZWF0ZV9jcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRp
b25hbFtjcHBfdHlwZV9jb250YWluZXJdOgorICAgIG0gPSByZS5tYXRjaChyIihbXHc6XSspPCgu
Kyk+JCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAg
ICBjb250YWluZXJfbmFtZSA9IG1bMV0KKyAgICB0ZW1wbGF0ZXMgPSBtWzJdCisgICAgYXJpdHkg
PSBOb25lCisgICAgbSA9IHJlLm1hdGNoKHIiKFteLF0rKSxccyooXGQrKSIsIHRlbXBsYXRlcykK
KyAgICBpZiBtOgorICAgICAgICB0ZW1wbGF0ZXMgPSBtWzFdCisgICAgICAgIGFyaXR5ID0gaW50
KG1bMl0pCisgICAgcmV0dXJuIGNwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUsIGNvbnRhaW5l
cl9uYW1lLCBnZXRfY3BwX3R5cGUodGVtcGxhdGVzKSwgYXJpdHkpCisKK2NsYXNzIGNwcF90eXBl
X2Z1bmN0aW9uKGNwcF90eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDog
c3RyLCByZXR1cm5fdmFsdWVfdHlwZSA6IGNwcF90eXBlLCBhcmd1bWVudF90eXBlcyA6IExpc3Rb
Y3BwX3R5cGVdKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQor
ICAgICAgICBzZWxmLnJldHVybl92YWx1ZV90eXBlICA9IHJldHVybl92YWx1ZV90eXBlCisgICAg
ICAgIHNlbGYuYXJndW1lbnRfdHlwZXMgPSBhcmd1bWVudF90eXBlcworCitkZWYgY3BwX3NwbGl0
X2FyZ3Nfc3BlY3MoYXJnc19zcGVjIDogc3RyKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAjIGh0
dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMzNTI3MjQ1L3B5dGhvbi1zcGxpdC1i
eS1jb21tYS1za2lwcGluZy10aGUtY29udGVudC1pbnNpZGUtcGFyZW50aGVzZXMKKyAgICBjb21t
YSA9IHIiLCg/ISg/OltePF0qXDxbXj5dKlw+KSpbXjw+XSpcPikiCisgICAgcmV0dXJuIGZpbHRl
cihOb25lLCBbYS5zdHJpcCgpIGZvciBhIGluIHJlLnNwbGl0KGNvbW1hLCBhcmdzX3NwZWMuc3Ry
aXAoKSldKQorICAgIAorZGVmIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUgOiBz
dHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2Z1bmN0aW9uXToKKyAgICBtID0gcmUubWF0Y2gocico
LiopXCgoLiopXCknLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBO
b25lCisgICAgcmV0dXJuX3ZhbHVlX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICBhcmdz
X3R5cGVzID0gW2dldF9jcHBfdHlwZShhKSBmb3IgYSBpbiBjcHBfc3BsaXRfYXJnc19zcGVjcyht
WzJdKV0KKyAgICByZXR1cm4gY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lLCByZXR1cm5fdmFs
dWVfdHlwZSwgYXJnc190eXBlcykKKyAgICAgICAgCisjIFBvaW50ZXIgb3IgcmVmZXJlcmVuY2UK
K2NsYXNzIGNwcF90eXBlX2luZGlyZWN0KGNwcF90eXBlKToKKyAgICBjYXRlZ29yeSA6IHN0cgor
ICAgIHZhbHVlX3R5cGUgOiBjcHBfdHlwZQorICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
eXBlX25hbWUgOiBzdHIsIGNhdGVnb3J5IDogc3RyLCB2YWx1ZV90eXBlIDogY3BwX3R5cGUpOgor
ICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYu
Y2F0ZWdvcnkgPSBjYXRlZ29yeQorICAgICAgICBzZWxmLnZhbHVlX3R5cGUgPSB2YWx1ZV90eXBl
CisKKyAgICBkZWYgaXNfY29uc3RfcG9pbnRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
Y2F0ZWdvcnkgPT0gJyonIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcG9pbnRlcihz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBub3Qgc2VsZi5p
c19jb25zdCgpCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNf
cmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicgYW5k
IG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcnZhbHVlX3JlZmVyZW5jZShzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYmJworICAgIGRlZiBnZXRfdmFsdWVf
dHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVfdHlwZQorCitkZWYgY3JlYXRl
X2NwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVf
aW5kaXJlY3RdOgorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJiQiLCB0eXBlX25hbWUp
CisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJiQiLCB0eXBlX25h
bWUpIAorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25h
bWUsICcmJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAo
LispJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChy
IiguKykmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVf
aW5kaXJlY3QodHlwZV9uYW1lLCAnJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUu
bWF0Y2gociJjb25zdCAoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAg
ICBtID0gcmUubWF0Y2gociIoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAg
IHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcqJywgZ2V0X2NwcF90eXBlKG1b
MV0pKQorICAgIHJldHVybiBOb25lCisKKworY2xhc3MgY3BwX2V4cHIob2JqZWN0KToKKyAgICB0
eXBlOiBjcHBfdHlwZQorICAgIGV4cHI6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5
cGU6IGNwcF90eXBlLCBleHByOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAg
ICAgIHNlbGYuZXhwciA9IGV4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5leHByCisKKworQ3BwRXhwckNvbnZlcnRlciA9IENhbGxhYmxlW1tjcHBfZXhw
ciwgY3BwX3R5cGVdLCBjcHBfZXhwcl0KKworCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJv
bV9wb2ludGVyX3Rocm91Z2goY2FzdF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFi
bGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJw
cmV0X2Nhc3RfZnJvbV9wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4g
Y3BwX2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0
eXBlLnR5cGVfbmFtZX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9
Pih7c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9w
b2ludGVyCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY2Fz
dF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlw
ZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcihl
eHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1
cm4gY3BwX2V4cHIodHlwZSwgZiJyZWludGVycHJldF9jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHN0
YXRpY19jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAg
cmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIKKworZGVmIGNwcF9zdGF0aWNf
Y2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJl
dHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHtzdHIo
ZXhwcil9KSIpCisKKworZGVmIGNwcF9pbXBsaWNpdF9jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBl
OiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIHN0cihl
eHByKSkKKworCitkZWYgY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHBy
OiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBl
bGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50
ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRl
cnByZXRfY2FzdDx7ZWxlbWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7
c3RyKGV4cHIpfS5zaXplKCkpIikKKworZGVmIHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBl
X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5
cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5
cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNw
cF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB7ZWxlbWVu
dF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKSwge3N0cihleHByKX0uYnVmU2l6ZSki
KQorCitkZWYgY3BwX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAg
cmV0dXJuIGNwcF9leHByKGV4cHIudHlwZS5nZXRfcnZhbHVlX3R5cGUoKSwgZiJXVEZNb3ZlKHtz
dHIoZXhwcil9KSIpCisKKworY3BwX3R5cGVzOiBEaWN0W3N0ciwgY3BwX3R5cGVdID0ge30KKwor
Y3BwX3R5cGVfY29uc3RydWN0b3JzIDogTGlzdFtDYWxsYWJsZVtbc3RyXSwgT3B0aW9uYWxbY3Bw
X3R5cGVdXV0gPSBbCisgICAgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uLAorICAgIGNyZWF0ZV9j
cHBfdHlwZV9jb250YWluZXIsCisgICAgY3JlYXRlX2NwcF90eXBlX2luZGlyZWN0CitdCisKK2Rl
ZiBnZXRfY3BwX3R5cGUodHlwZV9uYW1lOiBzdHIpOgorICAgIHIgPSBjcHBfdHlwZXMuZ2V0KHR5
cGVfbmFtZSwgTm9uZSkKKyAgICBpZiByOgorICAgICAgICByZXR1cm4gcgorICAgIGZvciB0eXBl
X2NvbnN0ciBpbiBjcHBfdHlwZV9jb25zdHJ1Y3RvcnM6CisgICAgICAgIHIgPSB0eXBlX2NvbnN0
cih0eXBlX25hbWUpCisgICAgICAgIGlmIHI6CisgICAgICAgICAgICBicmVhaworICAgIGlmIG5v
dCByOgorICAgICAgICByID0gY3BwX3R5cGUodHlwZV9uYW1lKQorICAgIGNwcF90eXBlc1t0eXBl
X25hbWVdID0gcgorICAgIHJldHVybiByCisKKworY2xhc3MgY3BwX2FyZyhvYmplY3QpOgorICAg
IG5hbWU6IHN0cgorICAgIHR5cGU6IGNwcF90eXBlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
dHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAg
ICAgICAgc2VsZi50eXBlID0gdHlwZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAg
IHJldHVybiAie30ge30iLmZvcm1hdChzZWxmLnR5cGUsIHNlbGYubmFtZSkKKworCitjbGFzcyBj
cHBfZGVjbChvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgbmFtZTogc3RyCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAg
IHNlbGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9f
c3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBmIntzdHIoc2VsZi50eXBlKX0ge3NlbGYubmFt
ZX0iCisKKworY2xhc3MgY3BwX2FyZ19saXN0KG9iamVjdCk6CisgICAgYXJnczogTGlzdFtjcHBf
YXJnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAg
ICAgICBzZWxmLmFyZ3MgPSBhcmdzCisKKyAgICBkZWYgbmFtZXMoc2VsZik6CisgICAgICAgIHJl
dHVybiAiLCAiLmpvaW4oYS5uYW1lIGZvciBhIGluIHNlbGYuYXJncykKKworICAgIGRlZiBleHBy
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZXhwcihhLnR5cGUsIGEubmFtZSkgZm9yIGEg
aW4gc2VsZi5hcmdzXQorCisgICAgZGVmIGRlY2xzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2Nw
cF9kZWNsKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgdHlw
ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbYS50eXBlIGZvciBhIGluIHNlbGYuYXJnc10KKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKHN0cihhKSBm
b3IgYSBpbiBzZWxmLmFyZ3MpCisKKworY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKKyAgICBuYW1l
OiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUK
KyAgICBpc19leHRlbnNpb246IGJvb2wKKyAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdz
OiBjcHBfYXJnX2xpc3QsIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgICAgIHNlbGYubmFtZSA9
IG5hbWUKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIHNl
bGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBpc19leHRlbnNpb24K
KyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSAiIgorCisgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CisgICAgICAgIHJldHVybiBmIntzZWxmLnJldHVybl90eXBlfSB7c2VsZi5uYW1lfSh7c3Ry
KHNlbGYuYXJncyl9KSIKKworICAgIGRlZiBnZXRfYXJnc19jYXRlZ29yaWVzKHNlbGYpIC0+IFR1
cGxlW0xpc3RbY3BwX2FyZ10sIExpc3RbY3BwX2FyZ11dOgorICAgICAgICBpbl9hcmdzID0gW10K
KyAgICAgICAgb3V0X2FyZ3MgPSBbXQorICAgICAgICBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJnczoK
KyAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIo
KSBvciBcCisgICAgICAgICAgICAgICAgYS50eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAgICAg
ICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEudHlw
ZSwgY3BwX3R5cGVfY29udGFpbmVyKSBhbmQgKCgoYS50eXBlLmlzX3NwYW4oKSBvciBhLnR5cGUu
aXNfZHluYW1pY19zcGFuKCkpIGFuZCBub3QgYS50eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlz
X2NvbnN0KCkpKToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgaW5fYXJncyArPSBbYV0KKyAgICAgICAgICAgICNmbXQ6
IG9uCisgICAgICAgIHJldHVybiBpbl9hcmdzLCBvdXRfYXJncworCisgICAgZGVmIGlzX2ltcGxl
bWVudGVkX3R5cGUoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiB0eXBlLmlzX2Nv
bnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgZGVmIGlzX2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICAjIiBpbiBhLnR5
cGUudHlwZV9uYW1lIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgIyAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgI2lmICJHQ0dMc3luYyIgaW4gc2VsZi5yZXR1cm5fdHlwZS50eXBl
X25hbWU6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLm5hbWUg
PT0gImJ1ZlNpemUiIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICBpZiBhbnkoYS50eXBlLmlzX3BvaW50ZXIoKSBhbmQgYS50eXBlLmdl
dF92YWx1ZV90eXBlKCkuaXNfdm9pZCgpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkobm90IHNlbGYuaXNfaW1wbGVtZW50
ZWRfdHlwZShhLnR5cGUpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLnJldHVybl90eXBlLmlzX3BvaW50ZXIoKToKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5pc19pbXBsZW1lbnRl
ZF90eXBlKHNlbGYucmV0dXJuX3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgIHJldHVybiBUcnVlCisKKword2Via2l0X2lwY190eXBlczogRGljdFtjcHBfdHlwZSwgY3Bw
X3R5cGVdID0ge30KKword2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzOiBEaWN0W1R1cGxlW2Nw
cF90eXBlLCBjcHBfdHlwZV0sIENwcEV4cHJDb252ZXJ0ZXJdID0ge30KKworCitkZWYgd2Via2l0
X2lwY19jb252ZXJ0X2V4cHIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBf
ZXhwcjoKKyAgICAiIiIgQ29udmVydHMgYGV4cHJgIG9mIHR5cGUgb2YgYHNlbGZgIHRvIGB0eXBl
YCAiIiIKKyAgICBjb252ZXJ0ID0gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLmdldCgoZXhw
ci50eXBlLCB0eXBlKSwgTm9uZSkKKyAgICBpZiBub3QgY29udmVydDoKKyAgICAgICAgaWYgZXhw
ci50eXBlID09IHR5cGU6CisgICAgICAgICAgICByZXR1cm4gZXhwcgorICAgICAgICBjb252ZXJ0
ID0gY3BwX2ltcGxpY2l0X2Nhc3QKKyAgICByZXR1cm4gY29udmVydChleHByLCB0eXBlKQorCisK
K2RlZiB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5zZmVyX3R5cGUodHlwZSA6IGNwcF90eXBlX2Nv
bnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFp
bmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgYXJpdHkgPSB0eXBlLmdldF9hcml0eSgp
CisgICAgd2Via2l0X2lwY19lbGVtZW50X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2VsZW1lbnRf
dHlwZV0gaWYgbm90IGVsZW1lbnRfdHlwZS5pc192b2lkKCkgZWxzZSBnZXRfY3BwX3R5cGUoJ3Vp
bnQ4X3QnKQorICAgIGlmIGFyaXR5IGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2V0X2Nw
cF90eXBlKGYiSVBDOjpBcnJheVJlZmVyZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBl
KX0sIHthcml0eX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpBcnJheVJlZmVy
ZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0+IikKKworCisKK2RlZiB3ZWJraXRf
aXBjX2dldF9zcGFuX3N0b3JlX3R5cGUodHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBf
dHlwZToKKyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9k
ZWNheV90eXBlKCkKKyAgICBpZiBlbGVtZW50X3R5cGUuaXNfdm9pZCgpOgorICAgICAgICBlbGVt
ZW50X3R5cGUgPSBnZXRfY3BwX3R5cGUoJ0dDR0xjaGFyJykKKyAgICBpZiB0eXBlLmlzX2R5bmFt
aWNfc3BhbigpOgorICAgICAgICBpbmxpbmVfY2FwYWNpdHkgPSAxNiBpZiAiZmxvYXQiIGluIGVs
ZW1lbnRfdHlwZS50eXBlX25hbWUgZWxzZSA0CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUo
ZiJWZWN0b3I8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cihpbmxpbmVfY2FwYWNpdHkpfT4iKQor
ICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJzdGQ6OmFycmF5PHtzdHIoZWxlbWVudF90eXBlKX0s
IHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9PiIpCisKK2RlZiB3ZWJraXRfaXBjX21ha2VfZ2NnbHNw
YW5fY29udmVyc2lvbihleHByIDogY3BwX2V4cHIsIHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIp
IC0+IGNwcF9leHByOgorICAgIHBvaW50ZXJfY2FzdF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVk
X3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3Bhbigp
OgorICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtz
dHIoZXhwcil9LnNpemUoKSkiKQorCisgICAgYXNzZXJ0KHR5cGUuaXNfc3BhbigpKQorICAgIHJl
dHVybiBjcHBfZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3Bhbjx7c3RyKHR5cGUuZ2V0X2FyaXR5KCkp
fT4ocmVpbnRlcnByZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9
LmRhdGEoKSkpIikKKworIyBTZWUgbWVzc2FnZXMucHkgZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUK
K3dlYmtpdF9pcGNfYnVpbHRpbl90eXBlcyA9IHNldCgKKyAgICBbInVpbnQ4X3QiLCAidWludDE2
X3QiLCAidWludDMyX3QiLCAidWludDY0X3QiLCAiaW50OF90IiwgImludDE2X3QiLCAiaW50MzJf
dCIsICJpbnQ2NF90IiwgImJvb2wiLCAiZmxvYXQiLCAiZG91YmxlIiAiYm9vbCJdCispCisKKwor
ZGVmIHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUodHlwZTogY3BwX3R5cGUp
IC0+IGNwcF90eXBlOgorICAgIGlmIHR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRp
bl90eXBlczoKKyAgICAgICAgcmV0dXJuIHR5cGUKKyAgICByZXR1cm4gdHlwZS5nZXRfcnZhbHVl
X3R5cGUoKQorCisKK2RlZiB3ZWJraXRfaXBjX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4g
Y3BwX2V4cHI6CisgICAgaWYgZXhwci50eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0
aW5fdHlwZXM6CisgICAgICAgIHJldHVybiBleHByCisgICAgcmV0dXJuIGNwcF9tb3ZlX2V4cHIo
ZXhwcikKKworCitkZWYgd2Via2l0X2lwY19tc2dfbmFtZShmdW5jOiBjcHBfZnVuYyk6CisgICAg
cmV0dXJuIGZ1bmMubmFtZVswXS5jYXBpdGFsaXplKCkgKyBmdW5jLm5hbWVbMTpdICsgZnVuYy5v
dmVybG9hZF9zdWZmaXgKKworCitjbGFzcyB3ZWJraXRfaXBjX21zZyhvYmplY3QpOgorICAgIG5h
bWU6IHN0cgorICAgIGluX2FyZ3M6IGNwcF9hcmdfbGlzdAorICAgIG91dF9hcmdzOiBjcHBfYXJn
X2xpc3QKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jOiBjcHBfZnVuYyk6CisgICAgICAg
IHNlbGYubmFtZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYykKKyAgICAgICAgaW5fYXJncywg
b3V0X2FyZ3MgPSBmdW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBpcGNfaW5fYXJn
cyA9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSBmb3IgYSBpbiBp
bl9hcmdzXQorICAgICAgICBpcGNfb3V0X2FyZ3MgPSBbXQorICAgICAgICBpZiBub3QgZnVuYy5y
ZXR1cm5fdHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9h
cmcod2Via2l0X2lwY190eXBlc1tmdW5jLnJldHVybl90eXBlXSwgInJldHVyblZhbHVlIildCisg
ICAgICAgIGZvciBhIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtj
cHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKV0KKyAgICAgICAgICAgIGlm
IGEudHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICBpcGNfaW5fYXJncyAr
PSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIildCisg
ICAgICAgIHNlbGYuaW5fYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfaW5fYXJncykKKyAgICAgICAg
c2VsZi5vdXRfYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfb3V0X2FyZ3MpCisKKyAgICBkZWYgX19z
dHJfXyhzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYub3V0X2FyZ3MuYXJncyk6CisgICAgICAg
ICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0p
IC0+ICh7c3RyKHNlbGYub3V0X2FyZ3MpfSkgU3luY2hyb25vdXMiCisgICAgICAgIHJldHVybiBm
IlxuICAgIHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkiCisKKworY2xhc3Mg
d2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIG1z
Z19uYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJn
X2xpc3QKKworICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBM
aXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHJldHVybl9zdG10
czogTGlzdFtzdHJdCisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJz
OiBMaXN0W2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBf
ZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5t
c2dfbmFtZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoY3BwX2Z1bmMpCisgICAgICAgIHNlbGYucmV0
dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBf
ZnVuYy5hcmdzCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxm
LmNhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAg
ICAgIHNlbGYucmV0dXJuX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisg
ICAgICAgIHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBj
cHBfZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVy
bl92YWx1ZShjcHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2luX2Fy
Z3MoaW5fYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmdzKG91dF9hcmdzKQorICAg
ICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgor
ICAgICAgICBpbl9leHBycyA9ICIsICIuam9pbihbc3RyKGkpIGZvciBpIGluIHNlbGYuaW5fZXhw
cnNdKQorICAgICAgICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIHNlbGYu
b3V0X2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IHNlbGYucmV0dXJuX3R5cGUuaXNfdm9pZCgp
IGFuZCBsZW4ob3V0X2V4cHJzKSA9PSAwCisgICAgICAgIGlmIGlzX2FzeW5jOgorICAgICAgICAg
ICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsiLAorICAgICAgICAgICAgXQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiIgorICAgICAgICAgICAgaWYgc2VsZi5w
b3N0X2NhbGxfc3RtdHM6IAorICAgICAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gImF1dG8gc2Vu
ZFJlc3VsdCA9ICIKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFsKKyAg
ICAgICAgICAgICAgICAgICAgImlmIChzZW5kUmVzdWx0KSIgKyAoIiB7IiBpZiBsZW4oc2VsZi5w
b3N0X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0gKyBbIiAgICAi
ICsgcyBmb3IgcyBpbiBzZWxmLnBvc3RfY2FsbF9zdG10c10gKyBbCisgICAgICAgICAgICAgICAg
ICAgICgifSIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAg
ICAgICAgIGYie3NlbmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9leHByc30pLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7IiwKKyAgICAgICAgICAgIF0KKworCisg
ICAgZGVmIHByb2Nlc3NfaW5fYXJncyhzZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAg
ICAgICAgZm9yIGkgaW4gaW5fYXJnczoKKyAgICAgICAgICAgIGlmIGkudHlwZS5pc19jb25zdF9w
b2ludGVyKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9l
eHByKGNwcF9leHByKGkudHlwZSwgaS5uYW1lKSwgd2Via2l0X2lwY190eXBlc1tpLnR5cGVdKV0K
KworICAgIGRlZiBwcm9jZXNzX291dF9hcmdzKHNlbGYsIG91dF9hcmdzOiBMaXN0W2NwcF9hcmdd
KToKKyAgICAgICAgZm9yIG8gaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpZiBvLnR5cGUuaXNf
cG9pbnRlcigpOgorICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBvLnR5cGUuZ2V0X3ZhbHVl
X3R5cGUoKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9p
cGNfdHlwZXNbdmFsdWVfdHlwZV0KKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRf
aXBjX3ZhbHVlX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5w
cmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0gPSB7eyB9fTsi
XQorICAgICAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2LnR5cGUsIHYubmFtZSkKKyAgICAgICAg
ICAgICAgICBzZWxmLm91dF9leHBycyArPSBbZV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3Rf
Y2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAg
ICAgICAgICAgICBmImlmICh7by5uYW1lfSkiLAorICAgICAgICAgICAgICAgICAgICBmIiAgICAq
e28ubmFtZX0gPSB7d2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgdmFsdWVfdHlwZSl9OyIKKyAg
ICAgICAgICAgICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICBlbGlmIG8udHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
ID0gd2Via2l0X2lwY190eXBlc1tvLnR5cGVdCisgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5z
dGFuY2Uod2Via2l0X2lwY190eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAg
ICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAg
ICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2
Lm5hbWUpfTsiXQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2
LnR5cGUsIHYubmFtZSldCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3Bh
bigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRf
Y3BwX3R5cGUoInNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KKyAgICAgICAgICAgICAg
ICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgIGYibWVtY3B5
KHtvLm5hbWV9LmRhdGEsIHt2Lm5hbWV9LmRhdGEoKSwge28ubmFtZX0uYnVmU2l6ZSAqIHNpemVv
Zih7c3RyKHdlYmtpdF9pcGNfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKSl9KSk7IgorICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5vdXRf
ZXhwcnMgKz0gW2NwcF9leHByKG8udHlwZSwgby5uYW1lKV0KKworICAgIGRlZiBwcm9jZXNzX3Jl
dHVybl92YWx1ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1
cm5fdHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5yZXR1
cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9p
cGNfdHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4
cHIoaXBjX3JldHVybl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzICs9IFtmIntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIu
ZXhwcn0gPSB7eyB9fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtyZXR1cm5fdmFsdWVf
ZXhwcl0gKyBzZWxmLm91dF9leHBycworICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtmInJl
dHVybiB7c3RyKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCByZXR1
cm5fdHlwZSkpfTsiXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9
ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9
ICIiLmpvaW4oZiJcbiAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxm
LmNhbGxfc3RtdHMgKyBzZWxmLnBvc3RfY2FsbF9zdG10cyArIHNlbGYucmV0dXJuX3N0bXRzKQor
ICAgICAgICByZXR1cm4gZiIiIlxue3N0cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fQor
e3t7Ym9keX0KK319IiIiCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xk
ZXIob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAg
ICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBib2R5OiBMaXN0W3N0cl0KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBf
ZnVuYy5uYW1lCisKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90
eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5ib2R5
ID0gWyJub3RJbXBsZW1lbnRlZCgpOyJdCisgICAgICAgIGlmIGNwcF9mdW5jLnJldHVybl90eXBl
LnR5cGVfbmFtZSAhPSAidm9pZCI6CisgICAgICAgICAgICBzZWxmLmJvZHkgKz0gWyJyZXR1cm4g
eyB9OyJdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBO
T0xJTlQiIGlmICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIlxue1xu
ICAgICIgKyAiXG4gICAgIi5qb2luKHNlbGYuYm9keSkgKyAiXG59IgorICAgICAgICByZXR1cm4g
ZiJcbntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH17Ym9keX0iCisKKworY2xhc3Mg
Y29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIK
KyAgICBpbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsXQorICAgIHVuaW1wbHM6
IExpc3Rbd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXJdCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSwgdW5pbXBsZW1lbnRlZDogSXRlcmFi
bGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94
eV9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQorICAgICAgICBzZWxmLnVuaW1wbHMgPSBbd2Via2l0
X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXIoZikgZm9yIGYgaW4gdW5pbXBsZW1lbnRlZF0KKwor
ICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0
cihpKSBmb3IgaSBpbiBzZWxmLmltcGxzICsgc2VsZi51bmltcGxzKQorCisgICAgZGVmIGdlbmVy
YXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9wcm94
eV9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1w
bGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3Mg
d2Via2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNw
cF9hcmdfbGlzdAorICAgIGlzX2V4dGVuc2lvbjogYm9vbAorICAgIHByZV9jYWxsX3N0bXRzOiBM
aXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6
IExpc3Rbc3RyXQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczog
TGlzdFtjcHBfZXhwcl0KKyAgICByZXR1cm5fdmFsdWVfZXhwcjogT3B0aW9uYWxbY3BwX2V4cHJd
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAg
c2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9
IGNwcF9mdW5jLm92ZXJsb2FkX3N1ZmZpeAorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xp
c3QoW10pCisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9u
CisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3Rt
dHMgPSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYu
aW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIHNlbGYu
cmV0dXJuX3ZhbHVlX2V4cHIgPSBOb25lCisKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92
YWx1ZShjcHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBj
cHBfZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2FyZ3Mo
Y3BwX2Z1bmMuYXJncy5hcmdzLCBzZXQoaW5fYXJncyksIHNldChvdXRfYXJncykpCisgICAgICAg
IHNlbGYucHJvY2Vzc19jYWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAg
ICAgIGV4dCA9ICJnZXRFeHRlbnNpb25zKCkuIiBpZiBzZWxmLmlzX2V4dGVuc2lvbiBlbHNlICIi
CisKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYuaW5f
ZXhwcnMpCisgICAgICAgIGlzX2FzeW5jID0gbGVuKHNlbGYub3V0X2V4cHJzKSA9PSAwCisKKyAg
ICAgICAgY2FsbF9leHByID0gZiJtX2NvbnRleHQtPntleHR9e3NlbGYubmFtZX0oe2luX2V4cHJz
fSkiCisgICAgICAgIGlmIG5vdCBzZWxmLnJldHVybl92YWx1ZV9leHByOgorICAgICAgICAgICAg
c2VsZi5jYWxsX3N0bXRzICs9IFtmIntjYWxsX2V4cHJ9OyJdCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yie3N0cihzZWxmLnJldHVybl92YWx1ZV9leHBy
KX0gPSB7Y2FsbF9leHByfTsiXQorICAgICAgICBpZiBub3QgaXNfYXN5bmM6CisgICAgICAgICAg
ICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQor
ICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gW2YiY29tcGxldGlvbkhhbmRsZXIo
e291dF9leHByc30pOyJdCisKKyAgICBkZWYgcHJvY2Vzc19hcmdzKHNlbGYsIGFyZ3M6IExpc3Rb
Y3BwX2FyZ10sIGluX2FyZ3M6IFNldFtjcHBfYXJnXSwgb3V0X2FyZ3M6IFNldFtjcHBfYXJnXSk6
CisgICAgICAgIGZvciBhIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfY29uc3Rf
cG9pbnRlcigpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgaWYg
YSBpbiBpbl9hcmdzOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmcoYSkKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmcoYSkK
KyAgICAgICAgaWYgc2VsZi5vdXRfZXhwcnM6CisgICAgICAgICAgICBvdXRfYXJnX2RlY2xzID0g
IiwgIi5qb2luKGYie3N0cihlLnR5cGUpfSIgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAg
ICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoZiJDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHtvdXRfYXJnX2RlY2xzfSk+JiYiKSwgImNvbXBsZXRpb25IYW5kbGVy
IildCisKKyAgICBkZWYgcHJvY2Vzc19pbl9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAg
IHNlbGYuYXJncy5hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2Fy
ZGVyX3R5cGUod2Via2l0X2lwY190eXBlc1thLnR5cGVdKSwgYS5uYW1lKV0KKyAgICAgICAgc2Vs
Zi5pbl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIod2Via2l0X2lw
Y190eXBlc1thLnR5cGVdLCBhLm5hbWUpLCBhLnR5cGUpXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0
X2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKToK
KyAgICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCks
IGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2YWx1
ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAg
ICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihhLnR5cGUsIGYiJnt2YWx1ZV9hcmcubmFtZX0i
KV0KKyAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5h
bWUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W2UudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZl
cnRfZXhwcihlLCB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5p
c19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwg
Y3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgIHNpemVfYXJnID0gY3BwX2FyZyhnZXRf
Y3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIikKKyAgICAgICAgICAgIHNlbGYu
YXJncy5hcmdzICs9IFtzaXplX2FyZ10KKyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9hcmco
d2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAgICAg
ICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtzdHIo
c3RvcmVfYXJnLm5hbWUpfShzdGF0aWNfY2FzdDxzaXplX3Q+KHthLm5hbWV9U2l6ZSksIDApOyJd
CisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwg
ZiJ7c3RvcmVfYXJnLm5hbWV9IildCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJr
aXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJr
aXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5h
bWUpLCB3ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19zcGFuKCk6Cisg
ICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikp
CisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3Rv
cmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRz
ICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0ge3sgfX07
Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBl
LCBzdG9yZV9hcmcubmFtZSldCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRf
aXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUp
LCB3ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGEu
dHlwZS5pc19yZWZlcmVuY2UoKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0
X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlw
ZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0
bXRzICs9IFtmIntzZWxmLm5zKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9
IHt7IH19OyJdCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVl
X2FyZy5uYW1lKQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbZV0KKyAgICAgICAgICAg
IHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZl
cnRfZXhwcihlLCB3ZWJraXRfaXBjX3R5cGUpKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92
YWx1ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlw
ZS5pc192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaXBjX3JldHVybl90eXBl
ID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4
cHIgPSBjcHBfZXhwcihyZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5w
cmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1
ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtp
dF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHBy
LCBpcGNfcmV0dXJuX3R5cGUpKV0KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IHJl
dHVybl92YWx1ZV9leHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgYm9keSA9
ICIiLmpvaW4oZiJcbiAgICAgICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsg
c2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMpCisgICAgICAgIHJldHVybiBm
IiIiICAgIHZvaWQge3NlbGYubmFtZX17c2VsZi5vdmVybG9hZF9zdWZmaXh9KHtzdHIoc2VsZi5h
cmdzKX0pCisgICAge3t7Ym9keX0KKyAgICB9fSIiIgorCisgICAgZGVmIG5zKHNlbGYsIHR5cGU6
IGNwcF90eXBlKToKKyAgICAgICAgIyBUT0RPOiBuYW1lc3BhY2UgaW5mbyBpcyBub3Qgc3RvcmVk
IGluIG5hbWVzLgorICAgICAgICBpZiB0eXBlLnR5cGVfbmFtZSA9PSAiQWN0aXZlSW5mbyI6Cisg
ICAgICAgICAgICByZXR1cm4gIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjoiICsgc3RyKHR5
cGUpCisgICAgICAgIHJldHVybiBzdHIodHlwZSkKKworZGVmIHdlYmtpdF9pcGNfcmVzb2x2ZV9v
dmVybG9hZF9zdWZmaXgoZnVuY3MgOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgIGNvdW50cyA9
IGNvbGxlY3Rpb25zLkNvdW50ZXIoZi5uYW1lIGZvciBmIGluIGZ1bmNzKQorICAgIHN1ZmZpeGVz
IDogQ291bnRlcltzdHJdID0gY29sbGVjdGlvbnMuQ291bnRlcigpCisgICAgZm9yIGYgaW4gZnVu
Y3M6CisgICAgICAgIGlmIGNvdW50c1tmLm5hbWVdID4gMToKKyAgICAgICAgICAgIGYub3Zlcmxv
YWRfc3VmZml4ID0gc3RyKHN1ZmZpeGVzW2YubmFtZV0pCisgICAgICAgICAgICBzdWZmaXhlcy51
cGRhdGUoW2YubmFtZV0pCisKKworY2xhc3MgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0
b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgQysrIGltcGxlbWVudGF0
aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfaW1wbF0KKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAg
ICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQor
CisgICAgZGVmIGdldF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4o
c3RyKGkpIGZvciBpIGluIHNlbGYuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6Cisg
ICAgICAgIHdyaXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc19mbiwKKyAg
ICAgICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5j
dGlvbnMoKSksCisgICAgICAgICkKKworCitjbGFzcyBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dl
bmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBXZWJLaXQgSVBD
IG1lc3NhZ2UgZGVmaW5pdGlvbiBnZW5lcmF0b3IuIgorICAgIG1zZ3M6IExpc3Rbd2Via2l0X2lw
Y19tc2ddCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5j
XSk6CisgICAgICAgIHNlbGYubXNncyA9IFt3ZWJraXRfaXBjX21zZyhmKSBmb3IgZiBpbiBmdW5j
c10KKworICAgIGRlZiBnZXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiIi5qb2lu
KHN0cihtKSBmb3IgbSBpbiBzZWxmLm1zZ3MpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6Cisg
ICAgICAgIHdyaXRlX2ZpbGUoY29udGV4dF9tZXNzYWdlc19mbiwgY29udGV4dF9tZXNzYWdlc190
ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfbWVzc2FnZXMoKSkpCisKKworZGVmIGNyZWF0ZV9jcHBf
YXJnKGFyZ19zcGVjOiBzdHIsIGFyZ19pbmRleDogaW50KToKKyAgICByID0gYXJnX3NwZWMucnNw
bGl0KCIgIiwgMSkKKyAgICBuYW1lID0gIiIKKyAgICB0eXBlID0gTm9uZQorICAgIGlmIGxlbihy
KSA+IDEgYW5kIHJbMF0gIT0gImNvbnN0IjoKKyAgICAgICAgbmFtZSA9IHJbMV0uc3RyaXAoKQor
ICAgICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKHJbMF0pCisgICAgZWxzZToKKyAgICAgICAgbmFt
ZSA9ICJhcmd7fSIuZm9ybWF0KGFyZ19pbmRleCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlw
ZShhcmdfc3BlYykKKyAgICByZXR1cm4gY3BwX2FyZyh0eXBlLCBuYW1lKQorCisKK2RlZiBjcmVh
dGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgorICAgIHJldHVybiBj
cHBfYXJnX2xpc3QoW2NyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3Ig
aSwgZSBpbiBlbnVtZXJhdGUoYXJnc19zcGVjcyldKQorCisKK2RlZiBjcmVhdGVfY3BwX2Z1bmMo
bmFtZTogc3RyLCByZXR1cm5fc3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4
dGVuc2lvbjogYm9vbCk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5
cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFy
Z3Nfc3BlY3MpLCBpc19leHRlbnNpb249aXNfZXh0ZW5zaW9uKQorCisKK2RlZiByZWFkX2xpbmVz
X3VudGlsKGxpbmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltz
dHIsIE5vbmUsIE5vbmVdOgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBpZiByZS5t
YXRjaChtYXRjaCwgbGluZS5zdHJpcCgpKToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHlp
ZWxkIGxpbmUKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBh
cnNlcigidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgi
LS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUHJpbnQgc29tZSBkZWJ1ZyBp
bmZvIGZyb20gdGhlIGdlbmVyYXRvciBzY3JpcHQiKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFy
c2VfYXJncygpCisKKyAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVt
b3RlIGZyb20gd2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCisKKyAgICAjIEZJWE1FOiBVbnRp
bCBleHRlbnNpb25zIGhlYWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUgdGhl
IGltcGxlbWVudGF0aW9uCisgICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVyIGEg
ZnVuY3Rpb24gaXMgb3IgaXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4KKyAgICBleHRlbnNp
b25fc2lnbmF0dXJlcyA6IFNldFtzdHJdID0gc2V0KCkKKyAgICB3aXRoIG9wZW4oZXh0ZW5zaW9u
c19pbnB1dF9mbikgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAg
ICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkg
PSAwOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBj
cmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgYXJnc19z
cGVjcz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgaXNf
ZXh0ZW5zaW9uPVRydWUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGV4dGVu
c2lvbl9zaWduYXR1cmVzLnVwZGF0ZShbc3RyKGZ1bmMpXSkKKyAgICBmdW5jcyA9IFtdCisgICAg
dW5pbXBsZW1lbnRlZCA9IFtdCisgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6Cisg
ICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gaXRlcihmLnJl
YWRsaW5lcygpKQorICAgICAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywg
Ii8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3Qg
aXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAg
ICBwYXNzCisKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMs
ICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgor
ICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIlxzKihcUyspXHMrKFx3KylcKCguKilcKSBm
aW5hbDsiLCBsaW5lKQorICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAg
IGZ1bmNfbmFtZSA9IG1bMl0KKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBf
ZnVuYygKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVuY19uYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBpc19leHRlbnNpb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgZnVuYy5pc19leHRlbnNpb24gPSBzdHIoZnVuYykgaW4gZXh0ZW5zaW9u
X3NpZ25hdHVyZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgZnVuYy5pc19pbXBsZW1lbnRlZCgp
OgorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKGZ1bmMpCisgICAgICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmltcGxlbWVudGVkLmFw
cGVuZChmdW5jKQorCisKKyAgICB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1
bmNzKQorICAgICMgSW5pdGlhbGl6ZSBXZWJLaXQgSVBDIGdlbmVyYXRpb24uIENvbnN0cnVjdCB0
eXBlIG1hcHBpbmdzIGZvciB0aGUgdXNlZCBDKysgdHlwZXMgLT4gSVBDIHR5cGVzLgorICAgICMg
VE9ETzogbmFtZXNwYWNpbmcgaXNzdWVzLgorICAgIGFpX3R5cGUgPSBnZXRfY3BwX3R5cGUoIkFj
dGl2ZUluZm8mIikKKyAgICBhaV90cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKCJXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyIpCisgICAgd2Via2l0X2lwY190eXBlc1th
aV90eXBlXSA9IGFpX3RyYW5zZmVyX3R5cGUKKworICAgIHdpdGggb3Blbih0eXBlc19pbnB1dF9m
bikgYXMgZjoKKyAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgIGZv
ciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8g
Zm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUt
Z3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBsaW5l
IGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVy
YXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipz
dGF0aWNfYXNzZXJ0XChzdGQ6OmlzX3NhbWVfdjwoXHcrKSwgKFx3Kyk+XCk7IiwgbGluZSkKKyAg
ICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tnZXRfY3Bw
X3R5cGUobVsxXSldID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgo
XHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgor
ICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAg
ICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNf
Y2FzdAorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5
cGUsIGNwcF90eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgIyBGSVhNRTogSGVyZSB3ZSB1c2UgPD0gaW5zdGVhZCBvZiA9PSBkdWUg
dG8gcG9pbnRlcnMsIHN1Y2ggYXMgR0NHTHN5bmMsIEdDR0xpbnRwdHIsIC4uLi4KKyAgICAgICAg
ICAgICMgVGhpcyBlbmRzIHVwIGZhaWxpbmcgaWYgdGhlcmUgZXZlciBpcyBhcnJheXMgb2YgdGhl
c2UgdHlwZXMsIHNpbmNlIGFycmF5cyBhcmUgY3VycmVudGx5CisgICAgICAgICAgICAjIHJlaW50
ZXJwcmV0LWNhc3RlZC4KKyAgICAgICAgICAgICMgV2ViS2l0IElQQyByZXF1aXJlcyBvbmUgc2l6
ZWQgdHlwZSwgYnV0IHRoZSBzaXplIG9mIHRoZXNlIHBvaW50ZXItYmFzZWQgdmFsdWVzIHdpbGwg
Y2hhbmdlCisgICAgICAgICAgICAjIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgICAg
IG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVv
ZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAg
IGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUg
PSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2Nw
cF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252
ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0g
PSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
bSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9m
XCgoXHcrKVwpICYmIHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5l
KQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBf
dHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0p
CisgICAgICAgICAgICAgICAgY3BwX2Nhc3RfdGhyb3VnaF90eXBlID0gZ2V0X2NwcF90eXBlKG1b
NF0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlw
ZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUs
IGlwY190eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChj
cHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19j
b252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X3Rv
X3BvaW50ZXJfdGhyb3VnaChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAg
Y29udGludWUKKworICAgICMgRm9yIGFsbCB0eXBlcyBpbiB0aGUgaW5wdXQgQVBJLCBmb3JtIGNv
cnJlc3BvbmRpbmcgSVBDIHR5cGVzIGFuZCBjb252ZXJzaW9ucy4KKyAgICAjIFRPRE86IHRoaXMg
aXMgbm90IGRyaXZlbiBieSB0aGUgdHlwaW5nLgorICAgIGFsbF90eXBlcyA9IHNldCgpCisgICAg
Zm9yIGZ1bmMgaW4gZnVuY3M6CisgICAgICAgYWxsX3R5cGVzLnVwZGF0ZShmdW5jLmFyZ3MudHlw
ZXMoKSArIFtmdW5jLnJldHVybl90eXBlXSkKKyAgICAjIFNvcnQgYnkgbGVuIHNvIHRoYXQgdGVt
cGxhdGUgYXJncyBjb21lIGJlZm9yZSB0ZW1wbGF0ZXMuCisgICAgZm9yIGNwcF90eXBlIGluIHNv
cnRlZChhbGxfdHlwZXMsIGtleT1sYW1iZGEgeDogbGVuKHgudHlwZV9uYW1lKSk6CisgICAgICAg
IGlmIGNwcF90eXBlIGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgCisgICAgICAgIGlmIGNwcF90eXBlLmlzX2R5bmFtaWNfc3BhbigpIG9yIGNwcF90eXBl
LmlzX3NwYW4oKToKKyAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9z
cGFuX3RyYW5zZmVyX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVz
W2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAg
aWYgY3BwX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKToKKyAgICAgICAgICAg
ICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90eXBl
KV0gPSB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZl
cnNpb24KKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHRyYW5z
ZmVyX3R5cGUsIGNwcF90eXBlKV0gPSB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lv
bgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdG9yZV90eXBlID0gd2Via2l0
X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyc1soc3RvcmVfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3Bw
X2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICBlbGlmIGNwcF90eXBl
LmlzX3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2NvbnN0X3JlZmVyZW5jZSgpIG9yIGNwcF90
eXBlLmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAgdmFsdWVfdHlwZSA9IGNwcF90eXBlLmdl
dF92YWx1ZV90eXBlKCkgaWYgbm90IGNwcF90eXBlLmlzX2NvbnRhaW5lcigpIGVsc2UgY3BwX3R5
cGUKKyAgICAgICAgICAgIGlmIHZhbHVlX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAg
ICAgICAgY29udGFpbmVkX3R5cGUgPSB2YWx1ZV90eXBlLmdldF9jb250YWluZWRfdHlwZSgpCisg
ICAgICAgICAgICAgICAgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9IHdlYmtpdF9pcGNfdHlw
ZXNbY29udGFpbmVkX3R5cGVdCisgICAgICAgICAgICAgICAgaWYgd2Via2l0X2lwY19jb250YWlu
ZWRfdHlwZSA9PSBjb250YWluZWRfdHlwZToKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lw
Y190eXBlc1tjcHBfdHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZShmInt2YWx1ZV90
eXBlLmdldF9jb250YWluZXJfbmFtZSgpfTx7c3RyKHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUp
fT4iKQorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHRy
YW5zZmVyX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBIZXJlIG1pZ2h0IGJlIGNh
c2Ugd2hlcmUgVmVjdG9yPEdDR0xpbnQ+IHdhcyB1c2VkIGluIHRoZSBpbnRlcmZhY2UgYW5kIFZl
Y3RvcjxpbnQzMl90PiBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIElQQyBk
ZWZpbml0aW9uLiBUaGVyZSBpcyBubyBzZW5zaWJsZSB3YXkgdG8gZG8gdGhpcyBhdCB0aGUgbW9t
ZW50LiBXZSBkbyBub3QgY29udmVydCwgcmF0aGVyCisgICAgICAgICAgICAgICAgICAgICMgZXhw
ZWN0IHRoYXQgYWxsIHRoZSBpbnZvY2F0aW9ucyBhcmUgdGFrZW4gY2FyZSBvZiB0aGUgZmFjdCB0
aGF0IEdDR0xpbnQgaXMgdGhlIHNhbWUgdHlwZSBhcyBpbnQzMl90LgorICAgICAgICAgICAgICAg
ICAgICAjIFRoaXMgd2lsbCBub3QgaG9sZCBmb3IgYWxsIHR5cGVzIHN1Y2ggYXMgR0NHTGJvb2xl
YW4uCisgICAgICAgICAgICAgICAgICAgICN3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNw
cF90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252
ZXJzaW9uCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAg
CisgICAgIyBUaGUgaW5wdXQgdG8gdGhlIGdlbmVyYXRvcnMgaXMgbGlzdCBvZiBmdW5jdGlvbnMg
dG8gcmVtb3RlLgorICAgICMgUnVuIHRoZSB2YXJpb3VzIGdlbmVyYXRvcnMuCisgICAgZ2VuZXJh
dG9ycyA9IFsKKyAgICAgICAgY29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Io
ZnVuY3MsIHVuaW1wbGVtZW50ZWQpLAorICAgICAgICBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dl
bmVyYXRvcihmdW5jcyksCisgICAgICAgIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9y
KGZ1bmNzKSwKKyAgICBdCisgICAgZm9yIGcgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgZy5nZW5l
cmF0ZSgpCisKKyAgICBpZiBvcHRpb25zLnZlcmJvc2U6CisgICAgICAgIHByaW50KCJJbXBsZW1l
bnRlZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIoaSl9IGZpbmFsXG4iIGZv
ciBpIGluIGZ1bmNzKSkKKyAgICAgICAgcHJpbnQoIlVuaW1wbGVtZW50ZWQ6IikKKyAgICAgICAg
cHJpbnQoIiIuam9pbihmIiAgICB7c3RyKHUpfSBmaW5hbFxuIiBmb3IgdSBpbiB1bmltcGxlbWVu
dGVkKSkKKyAgICAgICAgcHJpbnQoZiJJbXBsZW1lbnRlZDoge2xlbihmdW5jcyl9LCB1bmltcGxl
bWVudGVkOiB7bGVuKHVuaW1wbGVtZW50ZWQpfSwgdG90YWw6IHtsZW4oZnVuY3MpK2xlbih1bmlt
cGxlbWVudGVkKX0iKQorICAgICAgICBwcmludCgiQysrIHR5cGUgbWFwIHRvIFdlYktpdCBJUEMg
dHlwZSBtYXA6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAg
ICAgICAgICBpZiB0IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQo
ZiIgICAge3N0cih0KX0gLT4ge3N0cih3ZWJraXRfaXBjX3R5cGVzW3RdKX0iKQorICAgICAgICBw
cmludCgiQysrIHR5cGVzIHdpdGhvdXQgV2ViS2l0IElQQyB0eXBlOiIpCisgICAgICAgIGZvciBf
LCB0IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdCBub3QgaW4gd2Via2l0
X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSIpCisgICAg
ICAgIHByaW50KCJXZWJLaXQgSVBDIHR5cGUgY29udmVyc2lvbnMiKQorICAgICAgICBmb3IgKGEs
IGIpLCBjb252ZXJ0ZXIgaW4gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLml0ZW1zKCk6Cisg
ICAgICAgICAgICBwcmludChmIiAgICB7c3RyKGEpfSAtPiB7c3RyKGIpfSA6IHtjb252ZXJ0ZXIu
X19uYW1lX199IikKKyAgICAgICAgcHJpbnQoIkRvbmUuIikKKyAgICByZXR1cm4gMAorCisKK2lm
IF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ4
YjkzOGZhMTFmODE1ZDM3ZWU4MDM3N2ZkNjRiMGJjNzNkYzgxNDAuLjc2MTZhN2I3MDExY2RkMWZm
N2I5ODZmNmQyMzJiMTMxNDk2YmNlOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0xMi0w
MSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3
NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250
ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlz
IHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgQWRkcyB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Ig
dGhlIG1pc3NpbmcgZnVuY3Rpb25hbGl0eS4gRG9lcyBub3QgeWV0CisgICAgICAgIGVuYWJsZSB0
aGUgdGVzdHMgdGhhdCBhY3R1YWxseSBwYXNzIGJ1dCB3aGljaCB3ZXJlIHNraXBwZWQgYmVmb3Jl
IHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkYWJsZS93cml0YWJsZSB0byBS
VENSdHBTRnJhbWVUcmFuc2Zvcm0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGEyMjUyOGZhMWIyNjc4NzMxODUzMDU4MDAzMzkwZmQ3NTM3ZGMwYzYuLmRhNTYz
ODYyODlkNmM5NGQ0ZmZhZWNhODlhZDJiYTk5M2IxMDE2YzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzE3LDYgKzMxNywxNCBAQCBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1hbGxvd2VkLXdpdGgtY3JlZGVu
dGlhbHMuaHRtbAogaHR0cC90ZXN0cy93ZWJnbCBbIFNraXAgXQoganMvc2hhcmVkLWFycmF5LWJ1
ZmZlci13ZWJnbC5odG1sIFsgU2tpcCBdCiAKK3dlYmtpdC5vcmcvYi8yMTgxODQgZmFzdC9jYW52
YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFktZmFsc2UuaHRtbCBbIFRpbWVvdXQgXQord2Vi
a2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS10
cnVlLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9jYW52YXMvd2Vi
Z2wvY29udGV4dC11cGRhdGUtb24tZGlzcGxheS1jb25maWd1cmF0aW9uLmh0bWwgWyBUaW1lb3V0
IF0KK3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hh
bmdlZGV2ZW50Lmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8yMTkzNTEgZmFzdC9jYW52
YXMvd2ViZ2wvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIx
OTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9wcmVtdWx0aXBseWFscGhhLXRlc3QuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzIxOTM1MiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQt
b24tc3RhdHVzLWZhaWx1cmUuaHRtbCBbIEZhaWx1cmUgXQorCiB3ZWJncHUgWyBTa2lwIF0KIAog
YWNjZXNzaWJpbGl0eS9wcmVzcy13b3Jrcy1vbi1jb250cm9sLXR5cGVzLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415127</attachid>
            <date>2020-12-01 04:22:17 -0800</date>
            <delta_ts>2020-12-01 04:33:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201142214.patch</filename>
            <type>text/plain</type>
            <size>568211</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4
OGJkNDA3N2EwYzU0YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQxYTM1
Y2MwMDhhZWE2OWZmZjJjZDkxZDAyMzJlZmEwNzFlN2VkNTQuLjk4MTE1ZTE1Yjc2MzQ5NjFhYzM5
MGRiMjNkNTMwYjczZDI1ZDUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJj
Nzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQw
MGIwZmNlMjQxZWZmYjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiAr
MzU3LDE0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyMmVkNmNjMjRlNmU2Njg4NjBmNzRjYzllZGQ4NGIzZDlkZGMzMC4uOTUzMWI0
OTI3MWQwZDQwMWFkODIyNzkxZjg0ZWZkODY1N2Q2NmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2
RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07
CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsK
IAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIy
Mjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2
RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5
NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Niw2
ICsyMjQ2LDggQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkz
NkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjMsOSAr
MTAyMjUsMTQgQEAKIAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEw
MzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4
MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcy
NTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5pZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjEzLDYgKzI2NjIwLDggQEAKIAkJ
CQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJ
CQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQx
ODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJ
N0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2Ft
cGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9T
YW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovLApAQCAtMjY3NzksNiArMjY3ODgsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5
RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBE
NkExMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlC
Mjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJ
CQkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBF
MDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1
OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RB
NTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2
NzkwLDYgKzI2ODAxLDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZC
RDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYx
NkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2Vy
LmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwICovLApAQCAtMzIwODksNiArMzIxMDEsNyBAQAogCQkJCTdCMTAzMzlFMjU0
OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUz
QyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0MDI1LDYgKzM0MDM4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBF
Q0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAw
MTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIy
RkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVv
U2FtcGxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVj
NzE3NDU5N2YwNmUwZTUwOWU3OGZhYS4uMmY4Y2JmMDg3MDUwYzVmMDg2ODBmMmVkOTdkMWYzMDg4
NjYxYTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3NywyMSArNjc3LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZl
clN1YkRhdGEoKSBjYWxscyB0byB1c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0
ciA9IG1fY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNl
dC51bnNhZmVHZXQoKSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0
aFB0ci51bnNhZmVHZXQoKSAqIGNoZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBo
aWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNw
eShzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5i
eXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICog
ZWxlbWVudFNpemUpOwotCi0gICAgaWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkp
Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgImdldEJ1ZmZlclN1YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZm
ZXIiKTsKLSNlbmRpZgotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCk7CisgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9m
ZnNldCwgbWFrZUdDR0xTcGFuKHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVz
cygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBj
b3B5TGVuZ3RoICogZWxlbWVudFNpemUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIpCkBAIC0xNzAyLDcgKzE2OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxpc3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xOTY3
LDkgKzE5NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0
LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8
V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAg
LTIwMTQsNyArMjAwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBs
ZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQogCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHVu
aXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJpbmRTYW1wbGVyIiwgImludmFs
aWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNTksMTcgKzIwNDgsMTEg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAgICAgICAgaW50IHZh
bHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0
IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2Ft
cGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLm9iamVjdCgp
LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxp
ZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMTgsNyArMjEwMSw3IEBA
IEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdMU3lu
YyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNsaWVudFdhaXRTeW5jIiwgInRpbWVv
dXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIpOwogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19GTFVTSF9DT01NQU5E
U19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZhbGlkIGZsYWdzIik7CiAgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CkBAIC0yMTc5LDkg
KzIxNjIsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVs
ZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIs
IGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQVNTRVJUKGZl
ZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAKKwogICAg
IGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRi
YWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjQ4LDcgKzIyMzEsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tQ
cmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiZWdpblRyYW5zZm9ybUZlZWRiYWNr
IiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1pdGl2ZSBtb2RlIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIyODgsNyArMjI3MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRUcmFuc2Zvcm1GZWVkYmFjayIs
ICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwogCiAg
ICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVzZWQoZmFsc2UpOwpAQCAtMjI5OSw3
ICsyMjgyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28KIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJ0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpT
RVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWluZ3Muc2l6ZSgpID4gbV9tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAtMjQ4NSwyNCArMjQ2OCwyNCBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPEdDR0xpbnQ+IHJl
c3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3aXRjaCAocG5hbWUp
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
VFlQRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
eCk7IH0pOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRToKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TklGT1JNX0JMT0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
T0ZGU0VUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQVJSQVlfU1RSSURF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklYX1NUUklERToKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlm
b3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dCk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOiB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgpOyB9KTsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDggKzM1NTUsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoQ2xlYXJDYWxs
ZXJPdGhlcik7CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+
cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmUwM2E4OWZjNjk1M2QyMDAwODJmMjQ5NTQ5
NzYzYmUwNWE5NjE5NS4uNzg0NGFkZTMzMmIxNGMyYzAyY2JiMjRmMjIzNmY3ZGFmNWU3MjBhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTczMiw4ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxl
bWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENv
bnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9y
RXZlbnQsCkBAIC00Mzk1LDE1ICs0Mzk0LDEyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoCiAg
ICAgdm9pZCogZGF0YSA9IHBpeGVscy5iYXNlQWRkcmVzcygpOwogCiAjaWYgVVNFKEFOR0xFKQot
ICAgIEdDR0xzaXplaSBsZW5ndGggPSAwOwotICAgIEdDR0xzaXplaSBjb2x1bW5zID0gMDsKLSAg
ICBHQ0dMc2l6ZWkgcm93cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVh
ZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBp
eGVscy5ieXRlTGVuZ3RoKCksICZsZW5ndGgsICZjb2x1bW5zLCAmcm93cywgZGF0YSwgZmFsc2Up
OworICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSkpOwogI2Vsc2UK
ICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCiAgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgZGF0YSk7CiAgICAgZWxzZQotICAgICAgICBt
X2NvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBk
YXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKaW5k
ZXggNGE0MjBiZjBhMTE2Y2NjYWI1ZGI4N2EyNmQ4YmEyNDI4MjhmMmQ1NS4uODlhNjNlMzYyMTcx
MjI0YjQxM2E0OTU0MjMxMmUzODM2YjZlYmMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFN5bmMuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViR0xTeW5jOjp1cGRhdGVD
YWNoZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2FsbG93Q2FjaGVVcGRhdGUgPSBmYWxzZTsKLSAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldFN5bmNpdihtX3N5bmMsIEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX1NU
QVRVUywgc2l6ZW9mKG1fc3luY1N0YXR1cyksICZtX3N5bmNTdGF0dXMpOworICAgIG1fc3luY1N0
YXR1cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0U3luY2kobV9zeW5jLCBHcmFw
aGljc0NvbnRleHRHTDo6U1lOQ19TVEFUVVMpOwogICAgIGlmIChtX3N5bmNTdGF0dXMgPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OlVOU0lHTkFMRUQpCiAgICAgICAgIHNjaGVkdWxlQWxsb3dDYWNoZVVw
ZGF0ZShjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ZGFhMzRjYzJkNWQw
Nzk2MmVlMWE2MWM4MjUzYmViNmE5NDY1NDZjLi5jMmE2OWI4NmJjMzE4MTY3YTMzMmNmZmY2ZGVh
ZjRjZjhiMjlmMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MzAsNiArNTMwLDEzIEBA
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlcmluZ01vCiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUltYWdl
QnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMPiBDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jbGllbnQuY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZGlzcGxheUlE
KCkpOworfQorI2VuZGlmCisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpAQCAtNTQzLDYgKzU1MCw3
IEBAIHZvaWQgQ2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lCiAgICAgbV9wYWdlLndpbmRvd1NjcmVlbkRpZENo
YW5nZShkaXNwbGF5SUQsIG5vbWluYWxGcmFtZUludGVydmFsKTsKIAogI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpCisgICAgLy8gVE9ETzogR1BVIHByb2Nl
c3MuIENoYW5nZSB0byBHQ0dMTWFuYWdlciwgbWFrZSBpdCB3b3JrLCByZXR1cm4gbnVsbCBmb3Ig
b3RoZXJzLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLnNjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIHRoaXMpOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaAppbmRleCAyMzMyOGY1NmExOTEyMDQ5ZDQ3OTc2NDFkMDE0MDA1NTE1OTAzNTAyLi5h
ODlkZDFhMWQ4NjVlNTMyOGViMDUwNTc2NTQwZDNmMjMyYTNjZmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmgKQEAgLTg2LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgUGxhdGZvcm1E
aXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIE9wdGlvbmFsPHVuc2lnbmVkPikgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDNhOWUxZDY2OTA5N2U1OTVk
OWI1N2ZjNGNmZjdlNjFhNWQxOGQwYTkuLjhmMThmZGZmMDQ5OTAzNzU4OThiMTdiOTI4Y2MwZTA2
MDBlOTFjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI1LDYgKzMyNSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVybiBudWxscHRy
OyB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9CisjZW5kaWYKKwogICAgIC8vIFBhc3MgbnVsbHB0ciBhcyB0aGUgR3JhcGhpY3NMYXll
ciB0byBkZXRhdGNoIHRoZSByb290IGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290
R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCmluZGV4IDQzZGIxZmZhZTAxMmJiMjE4OTRm
MmNhOTYzMDcyMTQ3NjZhYWRkOWUuLjczODExOGIyMWUzYzMzN2IyZTUzMWM5OTZkMDk5YmQzZTlh
NTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2lu
Y2x1ZGUgIldpZGdldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Myw2ICs2NCwxMCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAw
OwogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmKSBjb25zdCA9IDA7CisjZW5kaWYKKwogICAgIC8vIE1ldGhvZCBmb3IgcmV0cmlldmlu
ZyB0aGUgbmF0aXZlIGNsaWVudCBvZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFn
ZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCA9IDA7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCmluZGV4IGEy
MjUzYzgxYmZlMGEwYmIwOTEwYmRlNmMwZGIyNmFhNzg0NTJmYjMuLjdhZmJhNmVjNTA4ODE5Y2Mx
ZWFiYWRjY2RlMGJiNzlhODM4NDJkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCkBAIC0zNCwxMyArMzQsMTYgQEAgV0VCQ09S
RV9FWFBPUlQgaW50IHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwogCiAjaWYgUExBVEZPUk0o
V0lOKQogaW5saW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQoraW5s
aW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogI2VsaWYgIVBMQVRG
T1JNKENPQ09BKQogaW5saW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiB0cnVlOyB9
CitpbmxpbmUgYm9vbCBpc0luR1BVUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogCiBib29sIGlzSW5XZWJQcm9jZXNzKCk7Citib29sIGlz
SW5HUFVQcm9jZXNzKCk7CiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpOwogCiBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KaW5kZXggZmJkMWQ0M2MwOGY4NmRjM2MxOGVkMjE1
NjBmMDhjZjg3ZmExYWYzOS4uYjA2ZmY0N2RmYzU0MTcyMWY2NGFhMGRlMzhiM2I5MmY4ODM4MjQ2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KQEAgLTk2LDYgKzk2LDEyIEBAIGJvb2wg
aXNJbldlYlByb2Nlc3MoKQogICAgIHJldHVybiBtYWluQnVuZGxlSXNXZWJQcm9jZXNzOwogfQog
Citib29sIGlzSW5HUFVQcm9jZXNzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNH
UFVQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaGFz
UHJlZml4OkAiY29tLmFwcGxlLldlYktpdC5HUFUiXTsKKyAgICByZXR1cm4gbWFpbkJ1bmRsZUlz
R1BVUHJvY2VzczsKK30KKwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0YXRp
YyBib29sIG1haW5CdW5kbGVJc05ldHdvcmtQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl0gaGFzUHJlZml4OkAiY29tLmFwcGxlLldlYktpdC5OZXR3b3Jr
aW5nIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNH
TC5oCmluZGV4IDI2MjdhOWI3ZjQ0NjUxMGNkYzAzNDFkYjg2NzM0NDc0OTUxNDdiODguLjQxYWRk
NzM4ZGRlYTIyMjQ2ZDBiOWIwNjc3OTM0NWRkNjA5OWRjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yNjcsNyArMjY3LDEwIEBA
IHB1YmxpYzoKICAgICAvLyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKICAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBMRVRJT05fU1RBVFVTX0tIUiA9IDB4OTFCMTsKIAot
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRl
cnN0YW5kcy4KKyAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbgorICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSA9IDB4OTNBODsK
KworICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KIAogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAg
ICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20gdGhlIEdMX0FS
Ql9yb2J1c3RuZXNzCkBAIC0yNzksMTAgKzI4MiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBH
Q0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKICAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBs
b25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVu
c2lnbmVkIGxvbmcgZmlsdGVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xp
bnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdD
R0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKIAog
ICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lk
IHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5z
aWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25l
ZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAKICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygp
ID0gMDsKQEAgLTI5NiwxNSArMjk5LDE1IEBAIHB1YmxpYzoKICAgICAvLyBHTF9FWFRfZGVidWdf
bWFya2VyCiAgICAgdmlydHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpID0gMDsKIAogICAgIC8vIEdMX0FS
Ql9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAgICAv
LyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCi0gICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0
dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwog
CiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2aXJ0dWFsIHZvaWQg
cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdD
R0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwpAQCAtMzMyLDcgKzMzNSw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZv
aWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xm
bG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgPSAwOwpAQCAtMzU1LDcgKzM1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0jZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCBpc05WSURJQSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7CkBAIC0zNjcs
NiArMzY4LDcgQEAgcHVibGljOgogICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBz
aG91bGQgaW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCiAgICAg
dmlydHVhbCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7
CisjZW5kaWYKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGRmNGExMTlhMzIwZGFjNmFlYjYzMDZk
NGM1MDk1NTE1ODhhMTk3M2UuLjM0ZDU1NmIwY2M0YTliYjFhZWE3YTVhOTY4YmM2OTViM2EyZTI3
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKQEAgLTI3LDExICsyNywxMyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIgogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpCiAKICNp
bmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKKyNp
bmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFn
ZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCkBAIC00MDMsNiArNDA1LDE1IEBA
IHN0YXRpYyBib29sIHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwgR3JhcGhp
Y3NDb250ZXh0R0w6OkRhdGFGb3JtYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMPiBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykK
K3sKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IHJlc3VsdDsKKyAgICBpZiAoaG9zdFdp
bmRvdykKKyAgICAgICAgcmVzdWx0ID0gaG9zdFdpbmRvdy0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woYXR0cmlidXRlcyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdyk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KIAogR3JhcGhpY3NDb250ZXh0R0w6OkdyYXBoaWNzQ29udGV4dEdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgRGVzdGluYXRpb24gZGVzdGluYXRp
b24sIEdyYXBoaWNzQ29udGV4dEdMKikKICAgICA6IG1fYXR0cnMoYXR0cnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRl
eCBjOGUyNzlmMzkzYjZjYTgxMjNmY2VlZjdjODliMTI1YzUyZGM2ZWYzLi5iYTcyYjMxYWQ2NTg1
YjRhOWJiNWQ2YWRlZmMxYmYxM2RmNWYzYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTU5LDYgKzU5LDggQEAg
Y2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVjsKICNlbmRpZgogCisK
Ky8vIEJhc2UgY2xhc3MgZm9yIGdyYXBoaWNzIGNvbnRleHQgZm9yIGltcGxlbWVudGluZyBXZWJH
TCByZW5kZXJpbmcgbW9kZWwuCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTCA6IHB1YmxpYyBSZWZD
b3VudGVkPEdyYXBoaWNzQ29udGV4dEdMPiB7CiBwdWJsaWM6CiAgICAgLy8gV2ViR0wgMSBjb25z
dGFudHMuCkBAIC05MTEsMTQgKzkxMywxNyBAQCBwdWJsaWM6CiAgICAgICAgIEdDR0xpbnQgc2l6
ZTsKICAgICB9OwogCisgICAgLy8gQ3JlYXRlcyBhIEdyYXBoaWNzQ29udGV4dEdMIGluc3RhbmNl
IHRvIHJlbmRlciBpbnRvIG9mZnNjcmVlbiBkZXN0aW5hdGlvbiBpbiBjb250ZXh0IG9mIEhvc3RX
aW5kb3cuCisgICAgLy8gSG9zdFdpbmRvdyBtaWdodCBhZmZlY3QgdGhlIGRlY2lzaW9uIHdoaWNo
IGJhY2tlbmQgaXMgdG8gYmUgdXNlZC4KKyAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgSG9zdFdpbmRv
dyopOworCiAgICAgR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
LCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdM
KiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0woKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVudChDbGllbnQmIGNsaWVudCkgeyBt
X2NsaWVudHMuYWRkKCZjbGllbnQpOyB9CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ2xpZW50JiBj
bGllbnQpIHsgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsgfQogCi0gICAgLy8gV2ViR0wgZnVu
Y3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgotCisgICAg
Ly8gV2ViR0wgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xl
bnVtIHRleHR1cmUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKQEAgLTk4MCw3ICs5ODUsNiBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJz
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkq
IGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lKSA9IDA7CiAKQEAgLTEwMjUsMTAgKzEwMjksNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOwogCi0gICAgLy8gZ2V0VmVydGV4QXR0cmliCi0gICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSA9IDA7Ci0KICAgICB2aXJ0dWFsIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpID0gMDsKQEAgLTExMDAsNyAr
MTEwMCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0x2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCAgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKQEAgLTExMjQsOCArMTEyNSw3IEBAIHB1Ymxp
YzoKICAgICAvLyA9PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgogCiAgICAgdmlydHVh
bCB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdy
aXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQs
IEdDR0xzaXplaXB0ciBzaXplKSA9IDA7Ci0gICAgdmlydHVhbCBHQ0dMdm9pZCogbWFwQnVmZmVy
UmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxl
bmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgPSAwOwotICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4g
dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48
R0NHTHZvaWQ+IGRhdGEpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBsYXllcikgPSAwOwpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpID0gMDsKICAgICB2aXJ0dWFsIFBsYXRm
b3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAw
OwogICAgIC8vIGdldFF1ZXJ5UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCog
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgPSAwOwpAQCAtMTE5Niw4ICsxMTk2
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgPSAwOwogICAgIC8vIGdldFNhbXBs
ZXJQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmly
dHVhbCBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRTYW1wbGVy
UGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSA9IDA7
CiAKICAgICB2aXJ0dWFsIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdD
R0xiaXRmaWVsZCBmbGFncykgPSAwOwogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gaXNTeW5jKEdD
R0xzeW5jKSA9IDA7CkBAIC0xMjA1LDcgKzEyMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBH
Q0dMZW51bSBjbGllbnRXYWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dM
dWludDY0IHRpbWVvdXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpID0gMDsKICAgICAvLyBnZXRT
eW5jUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpID0gMDsKIAog
ICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9i
amVjdCBpZCkgPSAwOwpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxh
dGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6
ZSkgPSAwOwogICAgIC8vIGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBj
YWxscyBhYm92ZS4KICAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGlj
ZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9y
bU5hbWVzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMs
IEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykgPSAwOworICAgIHZpcnR1
YWwgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBu
YW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSA9
IDA7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyCkBAIC0xMjMwLDcgKzEy
MzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSA9IDA7Ci0KKyAg
ICAKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCiAgICAgR0NHTGZsb2F0IGdldEZsb2F0KEdDR0xl
bnVtIHBuYW1lKTsKICAgICBHQ0dMYm9vbGVhbiBnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKTsK
QEAgLTEzOTQsNyArMTM5NCw2IEBAIGlubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1CiAgICAgcmV0dXJu
IHZhbHVlWzBdOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmlu
ZGV4IDg1YzI5YTRiNmU1NjExMGRjN2JkNzQ3YWUzMzk4N2MzNDAzNzVkZjEuLjNiMDY0YzNlNzY4
ZWNjNGJmMDJiNzYyNWE2ZjFlZGJjYzgwODc0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw3ICsyNSw5IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ0LDEzICs0NiwxNyBAQCB0eXBlZGVmIHVuc2lnbmVkIEdD
R0x1aW50OwogdHlwZWRlZiBmbG9hdCBHQ0dMZmxvYXQ7CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IEdDR0xoYWxmZmxvYXQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xjbGFtcGY7Cit0eXBlZGVmIGNoYXIg
R0NHTGNoYXI7Cit0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Cit0eXBlZGVmIHZv
aWQgR0NHTHZvaWQ7CisKKy8vIFRoZXNlIEdDR0wgdHlwZXMgZG8gbm90IHN0cmljdGx5IG1hdGNo
IHRoZSBHTCB0eXBlcyBhcyBkZWZpbmVkIGluIE9wZW5HTCBFUyAyLjAKKy8vIGhlYWRlciBmaWxl
IGZvciBhbGwgcGxhdGZvcm1zLgogdHlwZWRlZiBpbnRwdHJfdCBHQ0dMaW50cHRyOwogdHlwZWRl
ZiBpbnRwdHJfdCBHQ0dMc2l6ZWlwdHI7Ci10eXBlZGVmIGNoYXIgR0NHTGNoYXI7Cit0eXBlZGVm
IGludHB0cl90IEdDR0x2b2lkcHRyOwogdHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0OwogdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgR0NHTHVpbnQ2NDsKLXR5cGVkZWYgc3RydWN0IF9fR0xz
eW5jKiBHQ0dMc3luYzsKLXR5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKIAogdHlwZWRlZiBHQ0dMdWlu
dCBQbGF0Zm9ybUdMT2JqZWN0OwogCkBAIC01OCwxMyArNjQsMTcgQEAgdHlwZWRlZiBHQ0dMdWlu
dCBQbGF0Zm9ybUdMT2JqZWN0OwogdHlwZWRlZiB1bnNpZ25lZCBHTHVpbnQ7CiAjZW5kaWYKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCk+CitpbmxpbmUgY29uc3RleHByIHNpemVfdCBnY0dMU3BhbkR5bmFtaWNF
eHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gZ2NHTFNwYW5EeW5hbWljRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KIHN0cnVjdCBH
Q0dMU3BhbiB7Ci0gICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXkpCisgICAgZXhwbGljaXQg
R0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBzaXplID0gRXh0ZW50KQogICAgICAgICA6IGRhdGEo
YXJyYXkpCi0gICAgeyB9CisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUg
PT0gRXh0ZW50KTsKKyAgICB9CiAgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQogICAg
ICAgICA6IGRhdGEoYXJyYXkpCiAgICAgeyB9CkBAIC03Miw2ICs4MiwxMiBAQCBzdHJ1Y3QgR0NH
TFNwYW4gewogICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIEV4dGVudD4mIG90aGVyLCBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIHN0
ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCiAgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQogICAg
IHsgfQorICAgIEdDR0xTcGFuKHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAg
IDogZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CisgICAgR0NHTFNwYW4oY29uc3Qgc3RkOjph
cnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAg
ICB7IH0KICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEg
JiYgaSA8IGJ1ZlNpemUpOyByZXR1cm4gZGF0YVtpXTsgfQogICAgIFQmIG9wZXJhdG9yKigpIHsg
UkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBidWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CiAgICAgVCog
ZGF0YTsKQEAgLTc5LDcgKzk1LDcgQEAgc3RydWN0IEdDR0xTcGFuIHsKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKT4geworc3RydWN0IEdDR0xTcGFuPFQsIGdjR0xTcGFuRHluYW1pY0V4dGVudD4g
ewogICAgIEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCiAgICAgICAgIDogZGF0
YShhcnJheSkKICAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQpAQCAtMTIxLDYgKzEzNywxMSBA
QCBzdHJ1Y3QgR0NHTFNwYW48R0NHTHZvaWQ+IHsKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEp
CiAgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQogICAgIHsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dM
U3BhbihXVEY6OlZlY3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5KQorICAgICAgICA6IGRh
dGEoYXJyYXkuZGF0YSgpKQorICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgpICogc2l6ZW9m
KFUpKQorICAgIHsgfQogICAgIEdDR0x2b2lkKiBkYXRhOwogICAgIGNvbnN0IHNpemVfdCBidWZT
aXplOwogfTsKQEAgLTE1Miw4ICsxNzMsMTEgQEAgc3RydWN0IEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05d
KSAtPiBHQ0dMU3BhbjxULCBOPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUdDR0xTcGFuKFdU
Rjo6VmVjdG9yPFQ+JikgLT4gR0NHTFNwYW48VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgTj4KK0dDR0xTcGFuKHN0ZDo6YXJyYXk8VCwgTj4mKSAtPiBHQ0dMU3BhbjxULCBOPjsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorR0NHTFNwYW4oV1RG
OjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JikgLT4gR0NHTFNwYW48VD47CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBHQ0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNv
dW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjczMGYyZjMwNjhmZjAyOTFhZjViZTYwYTVjNWY2ZTFlZWI3YTRhZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5jcHAKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCisgICAgOiBHcmFwaGlj
c0NvbnRleHRHTChhdHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKK30KKworUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZSgpID0gZGVmYXVsdDsKKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIDA7Cit9CisKK0V4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmdldEV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkK
K3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRleHRB
dHRyaWJ1dGVzKCkuaXNXZWJHTDI7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IFRoZSBjYWxs
ZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQor
ICAgICAgICBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICBtX2xheWVyQ29tcG9zaXRl
ZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpt
YXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7Cisg
ICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgaWYgKCFhdHRycy5wcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJzLmRlcHRo
KQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6
OkRFUFRIX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5zdGVuY2lsKQorICAgICAgICAg
ICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVG
RkVSX0JJVDsKKyAgICB9CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9j
bGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaWRDb21wb3NpdGUoKTsKK30KKworYm9vbCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQgYnVm
ZmVycykKK3sKKyAgICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCkucHJlc2VydmVEcmF3aW5nQnVm
ZmVyKQorICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IGJ1ZmZlcnM7Cit9CisKK0dDR0xi
aXRmaWVsZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0
b0NsZWFyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xlYXI7Cit9CisK
K2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjplbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKQoreworICAgIC8vIFJlZGVjbGFyZWQgZm9yIGV4cG9ydCByZWFzb25zLgorICAg
IC8vIEZJWE1FOiBUaGUgd2hvbGUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgR3Jh
cGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOworfQorCitib29s
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJ
bml0aWFsaXplZCgpOworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25z
LmFkZChuYW1lKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBh
dmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykK
K3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJsZUV4dGVuc2lvbnMuc3BsaXQo
JyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAg
IGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykp
CisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworfQorCisj
aWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKworUGxhdGZvcm1MYXllciogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBudWxscHRyOworfQorI2VuZGlmCisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNlOGEwOTE0ZDhlOGUyOWUyZDI4MzEyNTA0
YzRlYjMyMGIxMTljMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTAsMCArMSwx
MTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgUExBVEZPUk0oQ09DT0EpCitjbGFz
cyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKKyNlbmRpZgorCisvLyBBIGJh
c2UgY2xhc3MgZm9yIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHByb3h5IHNpZGUgaW1wbGVtZW50
YXRpb24KKy8vIFRoaXMgaW1wbGVtZW50cyB0aGUgcGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29y
ZSBpbnRlcm5hbCBmdW5jdGlvbmFsaXR5OgorLy8gLSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBt
YW5hZ2VtZW50LgorLy8gLSBDb21wb3NpdGluZyBzdXBwb3J0LgorY2xhc3MgV0VCQ09SRV9FWFBP
UlQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0wsIHB1YmxpYyBFeHRlbnNpb25zR0wgeworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwor
ICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpIG92ZXJyaWRlOworCisgICAg
Ly8gT3RoZXIgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHVzaW5n
IEdyYXBoaWNzQ29udGV4dEdMOjppc0VuYWJsZWQ7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZv
cm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgRXh0ZW5zaW9uc0dMJiBnZXRF
eHRlbnNpb25zKCkgZmluYWw7CisgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBm
aW5hbDsKKyAgICBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVu
Y2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwor
ICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRCdWZm
ZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSBmaW5hbDsKKyAgICBHQ0dMYml0ZmllbGQgZ2V0
QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtMYXll
ckNvbXBvc2l0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZl
cigpIGZpbmFsOworCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAg
IEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKKyNlbmRpZgorICAgIC8vIE90aGVy
IEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBFeHRlbnNpb25zR0w6OmlzRW5hYmxl
ZDsKKyAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5z
dXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25z
dCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVF
eHRlbnNpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSA9IDA7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4mIHBsYXRmb3JtU3dhcENoYWluKCk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxX
ZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CisjZW5kaWYKKworICAgIC8vIEd1YXJkZWQgYnkgd2Fp
dFVudGlsSW5pdGlhbGl6ZWQoKS4KKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRl
bnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKKwor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOworCisgICAgLy8gRklYTUU6
IERyYXdpbmcgYnVmZmVyIGNsZWFyIHRyYWNraW5nIHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgY2xp
ZW50LgorICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKKyAgICBHQ0dMYml0Zmll
bGQgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSB7IDAgfTsKK307CisKK30KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MDJlYTRiNTU3YzY4NmNmZDgyM2QwODFj
NTVlNGEuLjdjMTUxZmEyODUwZjMzYzE0OWE5ZGM4MjIzODFiOGZjYmRlOWNiNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHAKQEAgLTQ2LDI4ICs0Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IEV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nKQogICAgIDogbV9pbml0aWFs
aXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkK
LSAgICAsIG1faXNOVklESUEoZmFsc2UpCi0gICAgLCBtX2lzQU1EKGZhbHNlKQotICAgICwgbV9p
c0ludGVsKGZhbHNlKQotICAgICwgbV9pc0ltYWdpbmF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplKGZhbHNlKQogICAgICwgbV91c2VJbmRleGVkR2V0U3Ry
aW5nKHVzZUluZGV4ZWRHZXRTdHJpbmcpCiB7Ci0gICAgLy8gRklYTUU6IGlkZWFsbHksIHJlbW92
ZSB0aGlzIGluaXRpYWxpemF0aW9uIGFsdG9nZXRoZXIuIEFOR0xFCi0gICAgLy8gc3Vic3VtZXMg
dGhlIHJlc3BvbnNpYmlsaXR5IGZvciBncmFwaGljcyBkcml2ZXIgd29ya2Fyb3VuZHMuCi0gICAg
bV92ZW5kb3IgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0
cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAgbV9yZW5kZXJlciA9IFN0cmluZyhyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOwotCi0gICAgVmVj
dG9yPFN0cmluZz4gdmVuZG9yQ29tcG9uZW50cyA9IG1fdmVuZG9yLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygi
bnZpZGlhIikpCi0gICAgICAgIG1faXNOVklESUEgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21w
b25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhbWQi
KSkKLSAgICAgICAgbV9pc0FNRCA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29u
dGFpbnMoImludGVsIikpCi0gICAgICAgIG1faXNJbnRlbCA9IHRydWU7Ci0gICAgaWYgKHZlbmRv
ckNvbXBvbmVudHMuY29udGFpbnMoImltYWdpbmF0aW9uIikpCi0gICAgICAgIG1faXNJbWFnaW5h
dGlvbiA9IHRydWU7CiB9CiAKIEV4dGVuc2lvbnNHTEFOR0xFOjp+RXh0ZW5zaW9uc0dMQU5HTEUo
KSA9IGRlZmF1bHQ7CkBAIC0xMDMsNyArODMsNyBAQCBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpp
c0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1l
KTsKIH0KIAotaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkKK0dMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkK
IHsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOwogfQpAQCAtMTE0LDEw
ICs5NCwxMSBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICBpbnQgc291cmNlTGVuZ3RoID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRl
ciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7CisKICAgICBpZiAo
IXNvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgVmVjdG9y
PEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VS
Q0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCi0gICAgaW50IHJldHVy
bmVkTGVuZ3RoID0gMDsKKyAgICBHQ0dMaW50IHJldHVybmVkTGVuZ3RoID0gMDsKICAgICBnbDo6
R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlciwgc291cmNlTGVuZ3RoLCAmcmV0
dXJuZWRMZW5ndGgsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIXJldHVybmVkTGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTE0Nyw3ICsxMjgsNyBAQCB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiAgICAgbV9pbml0
aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNY
MSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBk
c3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3ZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBz
dXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xNTYsNyArMTM3LDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxv
bmcgc3JjWDEsIGxvbmcKICAgICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kw
LCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIp
OwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWdu
ZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9u
ZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjM1LDcgKzIxNiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogICAgIGdsOjpEcmF3QnVmZmVyc0VY
VChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MywxNSArMjI0
LDE1IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpCiAgICAgZ2w6OkRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lk
cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxH
THZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7CisgICAg
Z2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCo+KG9mZnNldCksIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0zNTAsNyArMzMx
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bQogICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2
Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZv
cm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC00MzEsNyArNDEyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0TXVsdGlzYW1w
bGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmQKICAgICBnbDo6R2V0
TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCB2
YWwpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKK3Zv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQz
OSw3ICs0MjAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbAogICAgIGdsOjpHZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQg
KnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNDU2LDU1ICs0MzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaQogICAg
IGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLXN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwg
aW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAgIC8vIFdlIGNhbiBhc3N1
bWUgdGhpcyBkb2Vzbid0IG92ZXJmbG93IGJlY2F1c2UgdGhlIGNhbGxpbmcgZnVuY3Rpb25zCi0g
ICAgLy8gdXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBpbnQgdG90YWxCeXRlcyA9IHdpZHRo
ICogaGVpZ2h0ICogNDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0g
NCkKLSAgICAgICAgcGl4ZWxzW2kgKyAzXSA9IDI1NTsKLX0KLSNlbmRpZgotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1
bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZm
ZXJPYmplY3QpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBj
YWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBwcmV2
aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxz
LgotICAgIGdsOjpGbHVzaCgpOwotICAgIGF1dG8gYXR0cnMgPSBtX2NvbnRleHQtPmNvbnRleHRB
dHRyaWJ1dGVzKCk7Ci0gICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBtX2NvbnRleHQt
Pm1faXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBjb25zdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX2NvbnRleHQtPm1fc3Rh
dGU7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9j
b250ZXh0LT5tX211bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIG1fY29udGV4dC0+cmVzb2x2ZU11
bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLSAg
ICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5t
X2Zibyk7Ci0gICAgICAgIGdsOjpGbHVzaCgpOwotICAgIH0KLSAgICAodm9pZCkgbV9jb250ZXh0
LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICBnbDo6UmVhZG5QaXhlbHNS
b2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxl
bmd0aCwgY29sdW1ucywgcm93cywgZGF0YSk7Ci0gICAgR0xlbnVtIGVycm9yID0gZ2w6OkdldEVy
cm9yKCk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0g
bV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKQotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVy
KGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pOwotCi0gICAg
aWYgKGVycm9yKSB7Ci0gICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJpbmcg
dGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4gdGhl
Ci0gICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEgY2hh
bm5lbCBmaXh1cCBiZWxvdy4KLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihl
cnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCAm
JiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4
dC0+bV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9j
b250ZXh0LT5tX211bHRpc2FtcGxlRkJPKSkpCi0gICAgICAgIHdpcGVBbHBoYUNoYW5uZWxGcm9t
UGl4ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihkYXRhKSk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7Ci0j
ZW5kaWYKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAq
cGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzQ0NSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
CiAgICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUyMCw3ICs0NTMsNyBAQCB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmgKaW5kZXggYTc3MzFkZmQyMGM1ZjAzYTMzNTkwM2ZhYTZlMzhmZjcyZjRiMjMyMy4uY2Jm
NDk4YmQ3YzFhMWFiOWFhNmI3MGZiNWQzOGFjNGI5MmZiMDM1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5oCkBAIC01NiwyMSArNTYsMTIgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAotICAgIHZv
aWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxv
bmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEs
IHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVu
c2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2
b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdD
R0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAs
IEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51
bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwg
R0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
dmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQot
ICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KKyAgICB2
b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZv
aWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291
bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogICAgIC8vIEdMX0FOR0xFX3Jv
YnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMp
IG92ZXJyaWRlOwpAQCAtOTcsNyArODgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CkBAIC0xMzAsMTggKzEyMCw4IEBAIHByaXZhdGU6CiAgICAgLy8gV2Vh
ayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKIAotICAgIGJvb2wgbV9pc05WSURJQTsKLSAgICBi
b29sIG1faXNBTUQ7Ci0gICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9vbCBtX2lzSW1hZ2luYXRp
b247Ci0gICAgYm9vbCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOwotICAgIGJv
b2wgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7Ci0KICAgICBib29sIG1f
dXNlSW5kZXhlZEdldFN0cmluZyB7IGZhbHNlIH07CiAKLSAgICBTdHJpbmcgbV92ZW5kb3I7Ci0g
ICAgU3RyaW5nIG1fcmVuZGVyZXI7Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVs
YXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVu
YWJsZWQuCiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCAxMjdhM2I4ZGJhM2MzZjQ0Y2Q3NjVkZDhmYzcx
MWNkZDg3OGRlOWE0Li4xZDYwNGI3MWQ0ODE0ZjU5N2MyYzJmYzg5ZWRjOTY0OGRjMTNjNzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNDQzLDMyICs0NDMsNTMgQEAg
RXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiAg
ICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRh
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICByZWFk
blBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNp
emUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIGRhdGEuZGF0YSwgZmFsc2UpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHJlYWRuUGl4ZWxzSW1w
bCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIDAsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHZvaWQqPihvZmZzZXQpLCB0cnVlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEs
IGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpCiB7Ci0gICAgLy8gRklYTUU6IHJlbW92
ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5l
LiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJl
Zm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBjYWxs
cyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAorICAgIC8vIGFsbCBwcmV2aW91
cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgog
ICAgIGdsOjpGbHVzaCgpOwogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwog
ICAgIEdDR0xlbnVtIGZyYW1lYnVmZmVyVGFyZ2V0ID0gbV9pc0ZvcldlYkdMMiA/IEdyYXBoaWNz
Q29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0g
bV9tdWx0aXNhbXBsZUZCTykgeworICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CisgICAgaWYgKGF0dHJzLmFu
dGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgewogICAg
ICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KEludFJlY3QoeCwgeSwgd2lkdGgs
IGhlaWdodCkpOwogICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0
LCBtX2Zibyk7CiAgICAgICAgIGdsOjpGbHVzaCgpOwogICAgIH0KLSAgICBnbDo6UmVhZFBpeGVs
cyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOwotICAgIGlmIChhdHRy
cy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykK
KyAgICBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBnbDo6UmVhZG5QaXhl
bHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUs
IGxlbmd0aCwgY29sdW1ucywgcm93cywgZGF0YSk7CisgICAgR0xlbnVtIGVycm9yID0gZ2w6Okdl
dEVycm9yKCk7CisgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8g
PT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1
ZmZlclRhcmdldCwgbV9tdWx0aXNhbXBsZUZCTyk7CiAKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgLy8gQU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNSb2J1
c3RBTkdMRSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKKyAgICAgICAgLy8gc3ludGhl
dGljIGVycm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93Lgor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFh
dHRycy5hbHBoYSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1h
dCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpICYmIChtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2ZibyB8fCAo
YXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVG
Qk8pKSkKKyAgICBpZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYmICFhdHRycy5hbHBo
YSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lH
TkVEX0JZVEUpICYmIChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlh
bGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykpKQogICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oZGF0YSkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOwogI2VuZGlmCiB9CiAKLQogLy8gVGhlIGNvbnRlbnRzIG9mIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uIGZvbGxvdywgcG9ydGVkIHRvIHVzZSBBTkdMRS4K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQpAQCAtODk4LDIwICs5MTksMTYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LAogICAgIGdsOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwg
b2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQqIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJl
dHVybiBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsK
LX0KLQotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdD
R0xlbnVtIHRhcmdldCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm4gR0xfRkFMU0U7Ci0KLSAgICByZXR1cm4gZ2w6OlVubWFwQnVmZmVyKHRhcmdldCk7
CisgICAgICAgIHJldHVybjsKKyAgICBHQ0dMdm9pZCogcHRyID0gZ2w6Ok1hcEJ1ZmZlclJhbmdl
KHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOworICAgIGlmICghcHRyKQorICAgICAgICByZXR1cm47CisgICAgbWVtY3B5KGRhdGEu
ZGF0YSwgcHRyLCBkYXRhLmJ1ZlNpemUpOworICAgIGlmICghZ2w6OlVubWFwQnVmZmVyKHRhcmdl
dCkpCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlCdWZm
ZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dM
aW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBz
aXplKQpAQCAtMTAwOCwxNCArMTAyNSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbAogICAg
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihvZmZzZXQpLCAwKSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGlj
ZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykKK1ZlY3RvcjxHQ0dM
aW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywg
R0NHTGVudW0gcG5hbWUpCiB7CisgICAgVmVjdG9yPEdDR0xpbnQ+IHJlc3VsdCh1bmlmb3JtSW5k
aWNlcy5zaXplKCksIDApOwogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAotICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNp
emUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcGFyYW1zLmRhdGEoKSk7CisgICAg
Z2w6OkdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1
bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCByZXN1bHQuZGF0YSgpKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpCkBAIC0yMTAxLDIyICsyMTE5LDYgQEAgR0NH
TGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6OkdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0
QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNp
emUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIzOTIsMTIg
KzIzOTQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkoR0NHTGVu
dW0gdGFyZ2V0KQogICAgIGdsOjpFbmRRdWVyeSh0YXJnZXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihHQ0dMdWludCBpZCwgR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50KiBwYXJhbXMpCitHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UXVlcnlPYmplY3R1aShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAg
R0NHTHVpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBhcmFt
cyk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1
c3RBTkdMRShpZCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVl
OwogfQogCiAvLyBUcmFuc2Zvcm0gRmVlZGJhY2sgRnVuY3Rpb25zCkBAIC0yODM5LDIwICsyODQy
LDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVuCiAgICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJm
KHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1
ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlciwgcG5hbWUsIHZhbHVl
KTsKKyAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5h
bWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLCBw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShz
YW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIEdDR0xzeW5jIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVudW0g
Y29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCkBAIC0yODk1LDEyICsyOTAyLDE0IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5jIHN5bmMsIEdDR0xi
aXRmaWVsZCBmbGFncywgR0NHTGluCiAgICAgZ2w6OldhaXRTeW5jKHN5bmMsIGZsYWdzLCB0aW1l
b3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xz
eW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBz
eW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2
YWx1ZTsKIAotICAgIGdsOjpHZXRTeW5jaXYoc3luYywgcG5hbWUsIGJ1ZlNpemUsIG51bGxwdHIs
IHZhbHVlKTsKKyAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjczNTk3ZjQ3NTNkMGJl
YzFkMDJlN2Q1ZmNmZGM2NDNhOTgzYzg4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmNwcApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKworI2lmIEVOQUJMRShH
UkFQSElDU19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6fkdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCkgPSBkZWZhdWx0OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTllODhjMmY5OWIxY2FhNTgxMTdjNzM5MTFhNTFiNjdkZGU2MzJiYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09DT0Ep
CisKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQW4gaW50ZXJmYWNlIGZvciBpbXBsZW1lbnRpbmcgZnJvbnQgYnVm
ZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2FwCisvLyBjaGFpbiBvZiBJT1N1cmZh
Y2VzLgorLy8gVGhlIGltcGxlbWVudG9yIHdpbGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMg
Zm9yIGRpc3BsYXkuCisvLyBUaGUgY2xpZW50IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJ
T1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRhdGEKKy8vIGJhY2sgb25jZSB0aGUg
SU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90
IG5lY2Nlc3NhcmlseQorLy8gYmUgYWJsZSB0byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYg
Zm9yIHJldXNlLgorLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xT
dXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlzIHdheQorLy8gd2hlbiB0aGUgZGlz
cGxheSBjbGllbnQgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxheSwgdGhlIGNsaWVu
dCBjYW4gY29udGludWUgdXNpbmcKKy8vIHRoZSBleGlzdGluZyBiaW5kaW5nIG9idGFpbmVkIHRo
cm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCk7CisgICAgc3RydWN0IEJ1ZmZl
ciB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1cmZhY2U7
IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCisgICAgICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIg
fTsgLy8gUHJvZHVjZXIgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1cmZh
Y2UpLgorICAgIH07CisgICAgLy8gUmV0dXJucyB0aGUgbWV0YWRhdGEgaGFuZGxlIG9mIGxhc3Qg
dW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgbWF5IHJlY2lldmUgYmFjayBh
bHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2UgaXQgaXMg
YXZhaWxhYmxlIGF0IHRoZQorICAgIC8vIHRpbWUgb2YgdGhlIGNhbGwuCisgICAgLy8gUmV0dXJu
cyBlaXRoZXI6CisgICAgLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1
Ym1pdHRlZC4KKyAgICAvLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2UgYW5kIG5vbi1lbXB0
eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMgYXZhaWxhYmxlCisg
ICAgLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4gdXNlLgorICAgIC8vIC0gU3VyZmFj
ZSBhbmQgaGFuZGxlLgorICAgIHZpcnR1YWwgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSA9IDA7CisK
KyAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50cyBi
dWZmZXIuCisgICAgLy8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlwIG9mIHRoZSBJT1N1
cmZhY2Ugc3VyZmFjZSBpbiB0aGUgYGJ1ZmZlcmAuCisgICAgdmlydHVhbCB2b2lkIHByZXNlbnQo
QnVmZmVyKSA9IDA7CisKKyAgICAvLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRo
ZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCisgICAgLy8gVGhlIGlm
IG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0
IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0aGlzLgorICAgIHZpcnR1
YWwgdm9pZCogZGV0YWNoQ2xpZW50KCkgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDJlMWM3OTllODI4NTNiMzIw
YjhjZWRkZDRhNmZlNWU1MDRhOWQ4OWMuLjc3Y2EyMDBiZDdmZmVmZWQzOThmOTEyYTc5ZDQyNTEz
NDZiZjdkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcu
aCIKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKQEAgLTgxLDcgKzgyLDcgQEAgc3RhdGljIEVHTERpc3BsYXkgSW5pdGlhbGl6ZUVH
TERpc3BsYXkoKQogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwogICAgIEVHTGludCBtaW5v
clZlcnNpb24gPSAwOwogICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLSAgICBib29sIHNob3VsZElu
aXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICFpc0luV2ViUHJvY2VzcygpOwor
ICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIShp
c0luV2ViUHJvY2VzcygpIHx8IGlzSW5HUFVQcm9jZXNzKCkpOwogICAgIGlmIChzaG91bGRJbml0
aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKICAgICAgICAgLy8gRm9yIFdLMSB0
eXBlIEFQSXMgd2UgbmVlZCB0byBzZXQgInZvbGF0aWxlIHBsYXRmb3JtIGNvbnRleHQiIGZvciBz
cGVjaWZpYwogICAgICAgICAvLyBBUElzLCBzaW5jZSBjbGllbnQgY29kZSB3aWxsIGJlIGFibGUg
dG8gb3ZlcnJpZGUgdGhlIHRocmVhZC1nbG9iYWwgY29udGV4dApAQCAtMTM0LDcgKzEzNSw3IEBA
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHCiAgICAgaWYgKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0cygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29u
dGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdp
bmRvdywgZGVzdGluYXRpb24pKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIGhv
c3RXaW5kb3csIG51bGxwdHIsIG51bGxwdHIpKTsKIAogICAgIGlmICghY29udGV4dC0+bV9jb250
ZXh0T2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NywxMyArMTQ4LDE4IEBAIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZShHcmFwaGljc0NvbnRleHRHCiBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wm
IHNoYXJlZENvbnRleHQpCiB7CiAgICAgYXV0byBob3N0V2luZG93ID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaG9zdFdpbmRvd0ZvckNvbnRleHQoJnNo
YXJlZENvbnRleHQpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0V2lu
ZG93LCBzaGFyZWRDb250ZXh0LmRlc3RpbmF0aW9uKCksICZzaGFyZWRDb250ZXh0KSk7CisgICAg
YXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChzaGFy
ZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csICZzaGFyZWRDb250ZXh0
LCBudWxscHRyKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCksIGhvc3RXaW5kb3cpOwogCiAgICAg
cmV0dXJuIGNvbnRleHQ7CiB9CiAKK1JlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycywgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4mIHN3YXBDaGFpbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgbnVsbHB0ciwgJnN3YXBDaGFpbikpOworfQorCiAj
aWYgUExBVEZPUk0oTUFDKSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBl
bmFibGVkIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+LgogCiBzdGF0aWMgdm9pZCBzZXRHUFVCeVJl
Z2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhl
bEZvcm1hdE9iaiwgSU9SZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQpAQCAtMjA0LDggKzIx
MCw4IEBAIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVnaXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRl
eHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMp
CiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdy
YXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCi0gICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywg
ZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCitHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBI
b3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29u
dGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKKyAg
ICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFy
ZWRDb250ZXh0KQogewogICAgIG1faXNGb3JXZWJHTDIgPSBhdHRycy5pc1dlYkdMMjsKIApAQCAt
MjkzLDI2ICsyOTksMjggQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBpZiAobV9pc0Zv
cldlYkdMMikKICAgICAgICAgZ2w6OkVuYWJsZShHcmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZF
X1JFU1RBUlRfRklYRURfSU5ERVgpOwogCisgICAgVmVjdG9yPEFTQ0lJTGl0ZXJhbCwgND4gcmVx
dWlyZWRFeHRlbnNpb25zOworICAgIGlmIChtX2lzRm9yV2ViR0wyKSB7CisgICAgICAgIC8vIEZv
ciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1ZXJpZXMgdG8gd29yay4KKyAgICAgICAgcmVxdWlyZWRF
eHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIl9zKTsKKyAg
ICB9CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBFeHRl
bnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7Ci0KICAgICBpZiAoIW5lZWRz
RUFHTE9uTWFjKCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZXF1
aXJlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAgICAgICJHTF9BTkdMRV90ZXh0dXJlX3JlY3Rh
bmdsZSIsIC8vIEZvciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgotICAgICAgICAgICAgIkdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIsIC8vIEZvciBjcmVhdGluZyB0aGUgRUdMIHN1
cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCi0gICAgICAgIH07Ci0KLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVpcmVkRXh0ZW5zaW9ucyk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKHJlcXVpcmVkRXh0ZW5zaW9u
c1tpXSkpIHsKLSAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4
dGVuc2lvbi4gJXMiLCByZXF1aXJlZEV4dGVuc2lvbnNbaV0pOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4
dHVyZXMuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX3RleHR1
cmVfcmVjdGFuZ2xlIl9zKTsKKyAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3VyZmFj
ZSBmcm9tIGFuIElPU3VyZmFjZS4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgi
R0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKKyAgICB9CiAKLSAgICAgICAgICAg
IGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChyZXF1aXJlZEV4dGVuc2lvbnNbaV0pOworI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgRXh0ZW5zaW9u
c0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIGZvciAoYXV0byYgZXh0ZW5z
aW9uIDogcmVxdWlyZWRFeHRlbnNpb25zKSB7CisgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBw
b3J0cyhleHRlbnNpb24pKSB7CisgICAgICAgICAgICBMT0coV2ViR0wsICJNaXNzaW5nIHJlcXVp
cmVkIGV4dGVuc2lvbi4gJXMiLCBleHRlbnNpb24uY2hhcmFjdGVycygpKTsKKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQorICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0
ZW5zaW9uKTsKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFy
IGlmIE1BQ0NBVEFMWVNUIHNob3VsZCB0YWtlIHRoZXNlIHN0ZXBzIGFzIHdlbGwsIGJ1dCB0aGF0
CiAgICAgLy8gd291bGQgcmVxdWlyZSB0aGUgUGxhdGZvcm1TY3JlZW5NYWMgY29kZSB0byBiZSBl
eHBvc2VkIHRvIENhdGFseXN0IHRvby4KQEAgLTMzMSwxMyArMzM5LDE3IEBAIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0CiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAgICAgYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRp
b24uCiAKLSAgICAvLyBDcmVhdGUgdGhlIFdlYkdMTGF5ZXIKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICAgICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIg
YWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNv
bnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOworICAgIGlmIChzd2FwQ2hhaW4pCisgICAgICAg
IG1fc3dhcENoYWluID0gc3dhcENoYWluOworICAgIGVsc2UgeworICAgICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4
ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKICNpZm5kZWYgTkRFQlVHCi0g
ICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CisgICAgICAgICAg
ICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwogI2VuZGlmCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgICAgIG1fc3dhcENoYWluID0gJlttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKKyAgICB9
CiAKICAgICAvLyBDcmVhdGUgdGhlIHRleHR1cmUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBm
cmFtZWJ1ZmZlci4KICAgICBHTGVudW0gdGV4dHVyZVRhcmdldCA9IElPU3VyZmFjZVRleHR1cmVU
YXJnZXQoKTsKQEAgLTQwNiwxMyArNDE4LDEyIEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp+
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAgICAgICBpZiAobV9wcmVzZXJ2ZURyYXdpbmdC
dWZmZXJGQk8pCiAgICAgICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX3ByZXNl
cnZlRHJhd2luZ0J1ZmZlckZCTyk7CiAgICAgfQotICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVm
ZmVyKQorICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKSB7CiAgICAgICAgIEVHTF9EZXN0
cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpOwotICAgIGlm
IChtX3dlYkdMTGF5ZXIpIHsKLSAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdM
TGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3
YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFu
ZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNs
ZWRCdWZmZXIuaGFuZGxlKTsKLSAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IFttX3dlYkdM
TGF5ZXIgZGV0YWNoQ2xpZW50XTsKKyAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IG1fc3dh
cENoYWluLT5kZXRhY2hDbGllbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRzSGFuZGxlKQogICAg
ICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgY29udGVudHNIYW5kbGUp
OwogICAgIH0KQEAgLTU3NSwxMSArNTg2LDE2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgICAgIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAgICAgLy8gUmVzZXQgdGhlIGZ1dHVy
ZSByZWN5Y2xlZCBidWZmZXIgbm93LCBiZWNhdXNlIGl0IG1vc3QgbGlrZWx5IHdpbGwgbm90IGJl
IHJldXNhYmxlIGF0IHRoZSB0aW1lIGl0IHdpbGwgYmUgcmV1c2VkLgotICAgIGF1dG8gcmVjeWNs
ZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgIGF1dG8gcmVjeWNs
ZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgIGlmIChyZWN5Y2xl
ZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmos
IHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7CiAgICAgcmVjeWNsZWRCdWZmZXIuc3VyZmFjZS5yZXNl
dCgpOworICAgIHJldHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwor
fQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5
QnVmZmVyQmFja2luZygpCit7CisgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpLmlzRW1wdHkoKSk7CiAgICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpj
cmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3Bh
Y2VSZWYoKSk7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
MzcsNyArNjUzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5l
UmVuZGVyZXJzKCkgY29uc3QKICAgICAvLyBmb3IgT3BlbkdMIHRvIGRlY2lkZSB3aGljaCBHUFUg
aXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheSAob25saW5lL29mZmxpbmUpLgogICAgIC8vIE9wZW5H
TCB3aWxsIHRoZW4gY29uc2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRlcmVycywgYXMgb2ZmbGluZSwg
d2hpY2ggbWVhbnMKICAgICAvLyBhbGwgb2ZmbGluZSByZW5kZXJlcnMgbmVlZCB0byBiZSBjb25z
aWRlcmVkIHdoZW4gZmluZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAgICAvLyBJbiBXZWJLaXQgbGVn
YWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZG93U2VydmVyIGNvbm5lY3Rpb24sIGFuZAor
ICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kd1NlcnZl
ciBjb25uZWN0aW9uLCBhbmQKICAgICAvLyBtX2Rpc3BsYXlNYXNrIHdpbGwgbm90IGJlIHNldCBp
biB0aGlzIGNhc2UuCiAgICAgaWYgKHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTY0NiwxMiArNjYyLDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0CiAgICAgLy8gYW5kIE1BQy9N
QUNDQVRBTFlTVCBhbmQgT1BFTkdML09QRU5HTEVTLgogICAgIHJldHVybiB0cnVlOwogI2VuZGlm
Ci0gICAgICAgIAorCiAjaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQogICAgIGlmICho
YXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCi0g
ICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTY4MywxMCArNjk5LDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAvLyBUaGUg
SU9TdXJmYWNlIHdpbGwgYmUgdXNlZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwgc28g
Zmx1c2ggR0wgY29tbWFuZHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3ljbGVk
QnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVk
QnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKIAogICAgIEVHTF9SZWxlYXNl
VGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyLCBFR0xfQkFDS19C
VUZGRVIpOwotICAgIFttX3dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6
IHtXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVy
fV07CisgICAgbV9zd2FwQ2hhaW4tPnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJh
Y2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIH0pOwogICAgIG1fZGlzcGxheUJ1ZmZlclBi
dWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKIAogICAgIGJvb2wgaGFzTmV3QmFja2luZyA9IGZhbHNl
OwpAQCAtNzAwLDcgKzcxNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBh
cmVGb3JEaXNwbGF5KCkKIAogICAgIC8vIEVycm9yIHdpbGwgYmUgaGFuZGxlZCBieSBuZXh0IGNh
bGwgdG8gbWFrZUNvbnRleHRDdXJyZW50KCkgd2hpY2ggd2lsbCBub3RpY2UgbGFjayBvZiBkaXNw
bGF5IGJ1ZmZlci4KICAgICBpZiAoIWhhc05ld0JhY2tpbmcpCi0gICAgICAgIHJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZygpOworICAgICAgICBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVy
QmFja2luZygpOwogCiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGM0MTQwMTViN2IwZjM0YmIyOGJlMzQ1NTA5Yzc0MjllMzFkYWEzYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisjaW1wb3J0ICJX
ZWJHTExheWVyLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1
dGVzKCk7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2ViR0xM
YXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0
aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExh
eWVyIl07CisjZW5kaWYKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKworUGxh
dGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7Cit9CisKKyNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCitHcmFwaGljc0NvbnRleHRHTENWKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6YXNDVigpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisjZW5kaWYKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4m
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVN3YXBDaGFpbigpCit7
CisgICAgcmV0dXJuIFttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKK30KKworfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
LmgKaW5kZXggMTRiMDFlNzA1ZjIwNTMwMWM3Yzk3Y2Y2NmU3MWEwOGJiZjQxZTcwNS4uN2ZlODhh
MmZmNGNlMGY1NTlkNTlkYzFjZDk1MmEzYTdlYTg4MDk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaApAQCAtMjMsNTIgKzIz
LDIyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIklPU3VyZmFjZS5oIgorI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8d3RmL05h
a2VkUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBXZWJHTExheWVyQnVmZmVy
IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBU
aGUgYWN0dWFsIGNvbnRlbnRzLgotICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8gQ2xp
ZW50IHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KLX07Ci19
Ci0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKIC8vIEEgbGF5ZXIgY2xh
c3MgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcg
c3dhcAogLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KLS8vIFRoZSBsYXllciB3aWxsIG93biB0aGUg
SU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgotLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNo
IG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRh
Ci0vLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIs
IHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKLS8vIGJlIGFibGUgdG8gb2J0YWluIHRo
ZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KLS8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRh
ZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3
YXkKLS8vIHdoZW4gdGhlIFdlYkdMTGF5ZXIgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlz
cGxheSwgdGhlIGNsaWVudCBjYW4gY29udGludWUgdXNpbmcKLS8vIHRoZSBleGlzdGluZyBiaW5k
aW5nIG9idGFpbmVkIHRocm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgogQGludGVyZmFj
ZSBXZWJHTExheWVyIDogQ0FMYXllcgogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86
KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFx
dWU7CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dD
b2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKLS8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRs
ZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgbWF5IHJlY2lldmUg
YmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2Ug
aXQgaXMgYXZhaWxhYmxlIGF0IHRoZQotLy8gdGltZSBvZiB0aGUgY2FsbC4KLS8vIFJldHVybnMg
ZWl0aGVyOgotLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRl
ZC4KLS8vIC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRh
IGhhbmRsZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKLS8vICAgYnV0IHRo
ZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KLS8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgotLSAo
V2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcilyZWN5Y2xlQnVmZmVyOwotCi0vLyBQcmVwYXJlcyB0
aGUgbGF5ZXIgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCB0
cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBi
dWZmZXJgLgotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6
V2ViR0xMYXllckJ1ZmZlcilidWZmZXI7Ci0KLS8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5kIHJl
dHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KLS8vIFRo
ZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIg
bXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCi0vLyB0aGlzLgotLSAodm9pZCop
ZGV0YWNoQ2xpZW50OworLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4mKSBzd2FwQ2hhaW47CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KaW5kZXggYzhmNGU3OWY3MzEyZWFh
NmFiMDQ0NjgwODNlYThkMGM4YmVmYTNiYy4uMTY4ZmQ1ZjZjODQyMzdiZGY4YWI5Y2JiY2E2NDA3
Mzk1MDVjOTIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzIsMTMgKzMyLDM5IEBACiAjaW1wb3J0ICJH
cmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKworY2xhc3MgV2ViR0xMYXllclN3YXBDaGFpbiBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViR0xMYXllclN3YXBDaGFpbihXZWJHTExheWVy
KiBsYXllcikgIDogbV9sYXllcihsYXllcikgeyB9OworICAgIH5XZWJHTExheWVyU3dhcENoYWlu
KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIG92ZXJyaWRl
OworICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlm
IChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKKyAgICAgICAgICAgIGlmIChtX3NwYXJlQnVmZmVy
LnN1cmZhY2UtPmlzSW5Vc2UoKSkKKyAgICAgICAgICAgICAgICBtX3NwYXJlQnVmZmVyLnN1cmZh
Y2UucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fc3BhcmVCdWZmZXIpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIHZvaWQqIGRldGFjaENs
aWVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3Vy
ZmFjZSk7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9IG1fZGlzcGxheUJ1ZmZlci5oYW5kbGU7Cisg
ICAgICAgIG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUgPSBudWxscHRyOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlTdXJmYWNlKCkg
eyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAg
QnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBCdWZmZXIgbV9zcGFyZUJ1ZmZlcjsKKyAgICBX
ZWJHTExheWVyKiBjb25zdCBtX2xheWVyOworfTsKIAogQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5
ZXIgewotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX2NvbnRlbnRzQnVmZmVyOwotICAg
IFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX3NwYXJlQnVmZmVyOwotCiAgICAgQk9PTCBfcHJl
cGFyZWRGb3JEaXNwbGF5OworICAgIE9wdGlvbmFsPFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2Fw
Q2hhaW47CiB9CiAKIC0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNl
UGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1ZQpAQCAtNDcsNiAr
NzMsNyBAQAogICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwogICAg
IHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKICAgICBzZWxmLmNvbnRlbnRz
U2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOworICAgIF9zd2FwQ2hhaW4uZW1wbGFjZShzZWxmKTsK
ICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNzMsMzAgKzEwMCwyMSBAQAogICAgIFVOVVNFRF9Q
QVJBTShjb2xvclNwYWNlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KLQotLSAoV2ViQ29yZTo6
V2ViR0xMYXllckJ1ZmZlcikgcmVjeWNsZUJ1ZmZlcgorLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2FwQ2hhaW4KIHsKLSAgICBpZiAoX3NwYXJlQnVm
ZmVyLnN1cmZhY2UpIHsKLSAgICAgICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNl
KCkpCi0gICAgICAgICAgICBfc3BhcmVCdWZmZXIuc3VyZmFjZS5yZXNldCgpOwotICAgICAgICBy
ZXR1cm4gV1RGTW92ZShfc3BhcmVCdWZmZXIpOwotICAgIH0KLSAgICByZXR1cm4geyB9OworICAg
IHJldHVybiBfc3dhcENoYWluLnZhbHVlKCk7CiB9CiAKLS0gKHZvaWQpcHJlcGFyZUZvckRpc3Bs
YXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIGJ1ZmZlcgorLSAodm9p
ZClwcmVwYXJlRm9yRGlzcGxheQogewotICAgIEFTU0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2Up
OwotICAgIF9zcGFyZUJ1ZmZlciA9IFdURk1vdmUoX2NvbnRlbnRzQnVmZmVyKTsKLSAgICBfY29u
dGVudHNCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5
XTsKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gWUVTOwogfQogCiAtICh2b2lkKWRpc3BsYXkK
IHsKLSAgICBpZiAoX2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UgJiYgX3ByZXBhcmVkRm9yRGlzcGxh
eSkgewotICAgICAgICBzZWxmLmNvbnRlbnRzID0gX2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UtPmFz
TGF5ZXJDb250ZW50cygpOworICAgIGlmIChfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpICYm
IF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKKyAgICAgICAgc2VsZi5jb250ZW50cyA9IF9zd2FwQ2hh
aW4tPmRpc3BsYXlTdXJmYWNlKCktPmFzTGF5ZXJDb250ZW50cygpOwogICAgICAgICBbc2VsZiBy
ZWxvYWRWYWx1ZUZvcktleVBhdGg6QCJjb250ZW50cyJdOwogICAgIH0KICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7CkBAIC0xMDYsMTMgKzEyNCwxNCBAQAogICAgIF9wcmVwYXJlZEZv
ckRpc3BsYXkgPSBOTzsKIH0KIAotLSAodm9pZCopIGRldGFjaENsaWVudAorQGVuZAorCit2b2lk
IFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBBU1NF
UlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICB2b2lkKiByZXN1bHQgPSBfY29udGVudHNC
dWZmZXIuaGFuZGxlOwotICAgIF9jb250ZW50c0J1ZmZlci5oYW5kbGUgPSBudWxscHRyOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAg
IG1fc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5
QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgIFttX2xheWVyIHByZXBhcmVGb3JEaXNwbGF5
XTsKIH0KLUBlbmQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCAzOGRlODU1MmYxZTQ2YTFk
MzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi45OWFkOTE2NTI1OTE4NzNlMGU4M2ZlODc4OTI1ZWNh
MjMzYTFhMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgor
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIgogI2lt
cG9ydCAiU291cmNlR3JhcGhpYy5oIgogI2ltcG9ydCA8Q29yZUltYWdlL0NJQ29udGV4dC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4
MGUzNjU2NDZkNjI3YzdiLi5hZGQ1ZjM1MmFlNGRlNmI2ZDVkYzE5MWU2NzNiNWFhZmE1NmRlOTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtNDgsNyArNDgsNyBAQCBFeHRlbnNp
b25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCog
Y29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdM
KCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZm
ZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBk
c3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBt
YXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0
RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNy
Y1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50
IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVy
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZy
YW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbgogICAgIDo6
Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBk
c3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQs
IHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMjIsNyArMjIyLDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBidWZzKQogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBj
b3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQp
Cit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMc2l6ZWkgY291bnQsIEcKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgK
aW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4NjhiNTQ5OTNhNDQ0NDlhOC4uNDc1MDIyNmVj
ZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
aApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3Bl
bkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBs
b25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBs
b25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25n
IHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJh
bWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gx
LCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRz
dFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCiAgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CkBAIC01Miw5
ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBv
dmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIGJvb2wgc3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2MWZiYTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNm
NmM0ODNlYi4uYjc4OTYwY2I0ODJlNGVmMmFiOThlNDAzOTJhNjM1YmE3ZmZiN2JkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTM2NiwxMSArMzY2LDYgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTHMKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAq
LCBHQ0dMc2l6ZWkgKiwgdm9pZCAqLCBib29sKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhj
NjQuLjZhM2EzOWZlM2ExYmE1YmQyNTk3NzE1ODk0NzU2MWNjYWQ1YWQ0OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTkzLDcgKzkzLDYgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggMzZjM2VmMzhmOThi
OTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMy4uZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZi
NWY2ZTQ5MWZiZTA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAs
MTIgKzEwMCwxMiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgLyogc3JjWDAgKi8sIGxvbmcg
Lyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8sIGxvbmcgLyogc3JjWTEgKi8sIGxvbmcgLyog
ZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxvbmcgLyogZHN0WDEgKi8sIGxvbmcgLyogZHN0
WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAqLywgdW5zaWduZWQgbG9uZyAvKiBmaWx0ZXIg
Ki8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1
bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0K
IAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291
bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewog
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJy
YXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC0yNzcs
NyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwKICAgICBtX2dsRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAg
IGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xF
Uy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1YjczOThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4
My4uNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNmOTlhN2RmYzJmNzhmYjRkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogCiAgICAgLy8gRXh0
ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxv
bmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEs
IGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92
ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwpAQCAt
ODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVz
dG5lc3MgLSByZXNldAogICAgIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGMyNTViMGMxMmY0ZmNi
ZmE0NmRiMDJkNTVjODBiNGNiNzdkMTdiNzAuLjAyNzI4Zjg5Nzg4ZTBiODVlZDEyNmY1Zjk4MWY1
YzFkNjBkZmZkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC01OCw2
ICs1OCw5IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpD
X0NMQVNTIFdlYkdMTGF5ZXI7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKK30KICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkK
IAogI2lmIFVTRShOSUNPU0lBKQpAQCAtODYsNyArODksNyBAQCB0eXBlZGVmIFdURjo6SGFzaE1h
cDxDU3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFtZUhhc2g7CiAKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMUHJpdmF0ZTsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmlu
YWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRl
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0g
RGVzdGluYXRpb246Ok9mZnNjcmVlbik7CkBAIC05NCw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IGNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCk7Cisg
ICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vz
cyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbiYpOworCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0T2Jq
OyB9CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdl
dCgpKTsgfQpAQCAtMTkxLDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0
dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZl
SW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3Rp
dmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3Jt
R0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNv
dW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAg
dm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZh
bHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBAIC0yMTksOCArMjI0LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5p
Zm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lk
IGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBm
aW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTIzNiw3ICsyMzksOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7
CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0
cykgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFt
cGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CkBAIC0yNTQsNyArMjU4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAgICAgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CiAKQEAgLTMxNywxMiArMzIxLDEwIEBAIHB1YmxpYzoKICNpZiAhVVNFKEFOR0xFKQogICAgIHZv
aWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVt
IHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBi
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBj
b25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7
Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBz
cmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdD
R0x1aW50IGxlbmd0aCk7CiAjZW5kaWYKICAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZz
ZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKIAot
ICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwotICAg
IEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9p
ZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdD
R0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOwogICAgIHZv
aWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
bGF5ZXIpIGZpbmFsOwpAQCAtMzg0LDcgKzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFF1
ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVy
eShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICAgICAvLyBnZXRRdWVy
eVBhcmFtZXRlcgotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBx
dWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTHVp
bnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsK
ICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsK
QEAgLTM5Myw4ICszOTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBm
aW5hbDsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CiAgICAgLy8gZ2V0U2Ft
cGxlclBhcmFtZXRlcgotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0
U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdDR0xzeW5jIGZlbmNl
U3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CiAgICAg
R0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jKSBmaW5hbDsKQEAgLTQwMyw3ICs0MDUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBH
Q0dMaW50NjQgdGltZW91dCkgZmluYWw7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgogICAgIC8v
IEZJWE1FIC0gdGhpcyBjYW4gYmUgaW1wbGVtZW50ZWQgYXQgdGhlIFdlYkdMIGxldmVsIGlmIHdl
IHNpZ25hbCB0aGUgV2ViR0xTeW5jIG9iamVjdC4KLSAgICB2b2lkIGdldFN5bmNpdihHQ0dMc3lu
YywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkgZmlu
YWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpIGZpbmFs
OwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFs
OwogICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkg
ZmluYWw7CkBAIC00MjAsNyArNDIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYmluZEJ1ZmZlclJh
bmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVm
ZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogICAgIC8v
IGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KICAg
ICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmluYWw7Ci0gICAgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rv
cjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xp
bnQ+JiBwYXJhbXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1l
dGVyCkBAIC00MjksMTEgKzQzMSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5p
Zm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCi0jaWYg
IVVTRShBTkdMRSkKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0
T2Zmc2V0KTsKLSNlbmRpZgotCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAKICAgICB2b2lkIHBh
aW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0
Jik7CkBAIC01MTUsNyArNTEyLDExIEBAIHB1YmxpYzoKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQog
CiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4qID0gbnVsbHB0cik7CisjZWxzZQogICAgIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3Rp
bmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IHNoYXJlZENvbnRleHQgPSBudWxscHRyKTsKKyNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIG9uY2Ug
YnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5H
TC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2Yg
RXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KQEAgLTUyNyw3ICs1Mjgs
OSBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAg
ICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIAorCisgICAgdm9pZCByZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBH
Q0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CisKICAgICAv
LyBEaWQgdGhlIG1vc3QgcmVjZW50IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4g
YW4gYWNjZXB0YWJsZSBzdGF0ZT8KICAgICB2b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKQEAgLTU0
OCwxMCArNTUxLDEzIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBh
bGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdDsKICAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVm
ZmVyQmFja2luZygpOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qIG1fc3dh
cENoYWluIHsgbnVsbHB0ciB9OworICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSB0aGUgY29udGV4dCBkcmF3cyB0byBhIGltYWdlIGJ1ZmZlci4gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNzkgLgogICAgIFJldGFpblB0cjxXZWJH
TExheWVyPiBtX3dlYkdMTGF5ZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBtX2Nv
bnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3Bs
YXkgbV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwpAQCAtNTc5LDcgKzU4NSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChlbnVtIEFOR0xFU2hh
ZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
c3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8IHN5bWJvbFR5cGUg
PT0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lN
Qk9MX1RZUEVfVkFSWUlORyk7CkBAIC02NzIsNyArNjc4LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICB1c2luZyBCb3VuZFRleHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAgICAgICAg
c3RkOjpwYWlyPEdDR0x1aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6OkludEhhc2g8
R0NHTGVudW0+LCAKKyAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sCiAgICAgICAg
ICAgICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwKICAgICAg
ICAgICAgIFdURjo6UGFpckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVp
bnQ+PgogICAgICAgICA+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNl
LmNwcAppbmRleCA2MzU2ZjgxZjQ4MjFiNmExZWE2YzM1NTdlZGYxZjRlNjg4MTNmNmI5Li42Mjk4
MDM4OGI2NTI0NzljY2I0MzMxYzI1ZmZlZWJiNjZjNmNiNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIEV4dGVuc2lv
bnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogfQogI2VuZGlm
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMo
KTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAg
OjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1f
ZmJvKTsKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQotICAgIDo6Z2xSZWFkUGl4ZWxzKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgOjpnbFJlYWRQaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmRhdGEpOwogICAgIGlm
IChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPT0gbV9tdWx0aXNhbXBs
ZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6
RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYmM0NGNkNTc3ODg2NzIwMzlhZWE0ZjU5
OTk2ZTRkOTRlMWMxYTBmZS4uZDNmNTBkYjNjZDgwNWZjZDk1MDYyMWMxMDAxNzA2Y2FmMjVmNDVh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBA
IC0yMDI5LDIyICsyMDI5LDYgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4g
OjpnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBtYXBwZWROYW1lLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
Ci17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0YSk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCi17Ci0gICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdl
dFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0YSk7Ci19Ci0KIEdDR0xzaXpl
aXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQpAQCAtMjI3OCwxOSArMjI2MiwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhJbWFnZTJERGlyZWN0KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgRwogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJz
dCwgY291bnQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVT
dGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5z
aW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBw
cmltY291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOwogICAgIGNoZWNrR1BVU3Rh
dHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7Ci0gICAgZ2V0RXh0ZW5z
aW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIGdldEV4dGVu
c2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpOwogfQogCiAj
aWYgSEFWRShPUEVOR0xfNCkgJiYgRU5BQkxFKFdFQkdMMikKQEAgLTIzMzUsNDIgKzIzMTksMzAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMaW50cHRyLAogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRy
IHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwg
R0NHTHVpbnQgbGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVy
U3ViRGF0YShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTFNwYW48R0x2b2lkPikKIHsKLSAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjQnl0ZU9mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwogfQogCi0jaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFW
RShPUEVOR0xfRVNfMykKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJS
YW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVu
Z3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
U3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiA6OmdsTWFwQnVmZmVyUmFuZ2Uo
dGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsKLX0KKyNpZiBIQVZFKE9QRU5HTF80KSB8
fCBIQVZFKE9QRU5HTF9FU18zKQogCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQotewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAgIHJldHVybiA6OmdsVW5t
YXBCdWZmZXIodGFyZ2V0KTsKLX0KKyAgICAgICAgcmV0dXJuOworICAgIEdDR0x2b2lkKiBwdHIg
PSA6OmdsTWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisgICAgICAgIHJldHVy
bjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7CisgICAgaWYgKCE6
OmdsVW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKICNlbHNlCi12b2lkKiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0sIEdDR0xpbnRwdHIsIEdDR0xz
aXplaXB0ciwgR0NHTGJpdGZpZWxkKQotewotICAgIHJldHVybiBudWxscHRyOworICAgIFVOVVNF
RF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9Q
QVJBTShkYXRhKTsKKyAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9PUEVSQVRJT04pOworI2VuZGlmCiB9CiAKLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0jZW5kaWYKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CkBAIC0yNzEyLDEx
ICsyNjg0LDEyIEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgcmV0dXJuIDA7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3Jt
R0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpCitHQ0dMdWlu
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2Jq
ZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocXVlcnkpOwog
ICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICBy
ZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y3JlYXRlU2FtcGxlcigpCkBAIC0yNzU2LDE4ICsyNzI5LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVuCiAgICAgVU5VU0VEX1BBUkFNKHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAg
IFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1
cm4gMC5mOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQorCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogR0NHTHN5bmMgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRm
aWVsZCBmbGFncykKQEAgLTI4MDYsMTIgKzI3ODAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dM
aW4KICAgICBVTlVTRURfUEFSQU0odGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN5bmMpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGJ1ZlNpemUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9
CiAKIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKCkKQEAgLTI4OTEsMjEgKzI4NjQsMjMgQEAgVmVjdG9yPEdDR0x1aW50PiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVj
dCBwcm8KICAgICByZXR1cm4geyB9OwogfQogCi0jaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShP
UEVOR0xfRVNfMykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5p
Zm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykKK1Zl
Y3RvcjxHQ0dMaW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3Jt
SW5kaWNlcywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgVmVjdG9yPEdDR0xpbnQ+IHJlc3VsdCh1
bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOworI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BF
TkdMX0VTXzMpCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIDo6
Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5p
Zm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcGFyYW1zLmRhdGEoKSk7CisgICAgOjpnbEdldEFj
dGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5k
aWNlcy5kYXRhKCksIHBuYW1lLCByZXN1bHQuZGF0YSgpKTsKKyNlbmRpZgorICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3Jt
QmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9y
bUJsb2NrTmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BB
UkFNKHVuaWZvcm1CbG9ja05hbWUpOwotCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI5MTMsNyAr
Mjg4OCw2IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBy
b2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7Ci0KICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIH0KIApAQCAtMjkyMywyNyArMjg5Nyw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMCiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKICAgICBV
TlVTRURfUEFSQU0odW5pZm9ybUJsb2NrQmluZGluZyk7CiB9Ci0jZWxzZQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCwgY29u
c3QgVmVjdG9yPEdDR0x1aW50PiYsIEdDR0xlbnVtLCBWZWN0b3I8R0NHTGludD4mKQotewotfQog
Ci1HQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgo
UGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJikKLXsKLSAgICByZXR1cm4gMDsKLX0KLQot
U3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
KFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50KQotewotICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5n
KFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50LCBHQ0dMdWludCkKLXsKLX0KLSNlbmRpZgotCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQogewogICAgIFVOVVNFRF9QQVJBTSh4KTsKICAgICBVTlVTRURfUEFSQU0o
eSk7CkBAIC0yOTU0LDE4ICsyOTA5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgIFVO
VVNFRF9QQVJBTShvZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0
RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQotewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBV
TlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFS
QU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0o
dHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RP
ZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAgICBVTlVTRURf
UEFSQU0ocHJvZ3JhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAK
aW5kZXggMjNkNzRmYTgwZDcwNzkxYmU2MDBkZjU4ZTc1NjE3MzM5NmFhNTUwNS4uYTIyMTgwYjRi
ZjRjZTEwZjE4NTIxMjQwMTFlODhhNDQyNzNiNDFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
U3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwK
ICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQogCi0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICA6OmdsUmVhZFBpeGVscyh4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuZGF0YSk7CiAKICAgICBpZiAo
YXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPT0gbV9tdWx0aXNh
bXBsZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9t
dWx0aXNhbXBsZUZCTyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgICAgIC8v
IFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgogICAg
ICAgICAgICAgaWYgKHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIpIHsKICAgICAgICAg
ICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVu
Y2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSDI0X1NU
RU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5y
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBs
ZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CiAgICAgICAg
ICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkKICAgICAgICAgICAgICAgICAgICAgOjpn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogICAgICAgICAg
ICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKQpAQCAtMTM4LDEyICsxMzgsMTIgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3Rl
bmNpbCkgewogICAgICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5E
RVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxl
Q291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAg
ICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9S
RU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdo
dCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fc3Rl
bmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhdHRy
aWJ1dGVzLmRlcHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVy
KEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgICAgIGV4
dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwg
c2FtcGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSF9DT01QT05FTlQxNiwg
d2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVG
RkVSLCBtX2RlcHRoQnVmZmVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAppbmRleCA2Mjg0NDUzMjUwMzM1MTA3ZmQ1NDk4MjIzMmI4YjllYWVjOGU2
OGNiLi45ZjgzMTdiMThkNTNiN2IzYzE2NjY5YTRjNTExOTkzZWFmMzdjNzc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVT
CiAgICAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzCiAKKyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMCiAgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAK
ICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyCkBAIC0y
MTgsNiArMjE5LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24KIAorICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkKICAgICBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKIAogICAgIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGVkYjZjYTU5NzlkMmY0ZGVmOGIyYjJlNzczZjlk
NjlhZTc4NmU3ZTkuLjRhNjdkZjhlZGMzYjRmNDg5MTg3NzAyZWZiZjA0MWIzZDM0YTkxMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIw
LDYgKzIwLDcgQEAgJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9tb2RlbHMu
cHkKICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgorJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21hYy9jb20u
YXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTEzMSw2
ICsxMzIsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDc1Njc5ZjU1ZjVhZTM5
OWI1ZWFmNDc3ZjE4OTMyNTZiYzI0ODg0NGQuLjdjZDNkYmNjYTM1MGM2ZTM4MTRjMzQwYzM5M2M5
NjNlZGJiOTgxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdApAQCAtMTc1LDYgKzE3NSwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IDM3NzAxYjAxYzNjMWEyYzMwMGUxZGQyZDcyZTZiODUyMzdmNDI0YjUu
Ljk3NmIxYTVhM2U1YzBkMzExNWQ0NDUwYzkwODYxNTcxOWU2ZGVjZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTE3MSw2ICsxNzEsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwK
IAlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
IFwKIAlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwKKwlXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IFwKIAlXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUgXApAQCAtMjI3LDYgKzIyOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAog
CVBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIFwKIAlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQgXAorCUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgXAogCUdQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKIAlHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKIAlHUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IDBlMmU4ODMyYjFlMjBmMWUwZjMxOWQ1ZDlmMjVkNzJjZTFiZjczYWQuLjQ0Yjlm
NjNlMTRjNTBiNzQxOTkzZDZmMzVhNWE5NWY1YWZkODBhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY0
LDYgKzY0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg+
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogI2luY2x1
ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0yOTAsNiArMjk0LDIxIEBAIHZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCisjaWYgRU5BQkxFKFdF
QkdMKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuZW5zdXJl
KGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3Vs
dCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGJvb2wgZm91bmQgPSBtX3Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKK30KKyNlbmRpZgogdm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKICAgICBn
cHVQcm9jZXNzKCkubm93UGxheWluZ01hbmFnZXIoKS5jbGVhck5vd1BsYXlpbmdJbmZvQ2xpZW50
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCmluZGV4IDI2NzhkYmM0ZTVkMzY1ZmFkMjhlOGI0ODI3ODYzNzYyYTNj
NDU3OGQuLjVhZWRmYmI0ZDJjYWM3Yjc2NjBmZjA3MzYwOWQzNzdjNjAxNTg0YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENFbnVt
VHJhaXRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5aW5nTWFuYWdlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KQEAgLTM5LDYgKzQwLDExIEBACiAjaW5j
bHVkZSA8d3RmL0xvZ2dlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKKyNpZiBF
TkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaD4KKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVUHJvY2VzczsKQEAgLTU0LDYgKzYwLDcg
QEAgY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OwogY2xh
c3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29u
ZmlndXJhdGlvbjsKQEAgLTExOSw2ICsxMjYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZvaWQg
cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCisj
aWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisjZW5kaWYKKwogICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOwog
ICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
biwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CiAKQEAgLTE4MCw3ICsxOTIsMTAgQEAgcHJp
dmF0ZToKIAogICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZD4+OwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kTWFwOwotCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHVzaW5nIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OworICAgIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWFwIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7CisjZW5kaWYKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1G
YWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDUxOTRmYjRmNjA4NWQ2MjRkNTk4M2Y2MjUyYzM2NWViMzI3MWYzNDQu
LjlkNTRlMTY0NTk1YjBhMzYxZGZlNGM3NWJmZjQwMThhODU3NTljOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSwxMCBAQAogbWVzc2FnZXMgLT4gR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVS
ZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChX
ZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywg
V2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKQorICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyNlbmRp
ZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCiAgICAgdm9pZCBTZXROb3dQbGF5aW5n
SW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Tm93
UGxheWluZ0luZm8gbm93UGxheWluZ0luZm8pCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTk3MGU1ZDg4NzA1MTZhZDEzNWI3NjVj
ZGE0NTdmNDI1M2FjMDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMCwwICsxLDE0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VC
R0wpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVh
dGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQor
eworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5l
dyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKK30KKworUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICA6IG1fY29udGV4dChHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCAqdGhpcykp
CisgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcykpCisgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAg
ICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0
aGlzKTsKKyAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7CisgICAgU3RyaW5nIGV4dGVu
c2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9O
Uyk7CisgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3Ry
aW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChleHRl
bnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woKQoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCitHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Z3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5nZXQoKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQorICAgICAgICByZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24o
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKK3sKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCgpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJl
Y3ljbGVDb250ZXh0KCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlv
bigpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
V2FzQ2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OnJlY3ljbGVCdWZmZXIoKQoreworICAgIHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1
ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQoQnVmZmVy
IGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBt
X2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Cit9CisKK3ZvaWQqIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQoKQoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdl
KG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUsIG51bGxwdHIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorewor
ICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0
aCwgaGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOworICAgIGF1dG8gZGlzcGxh
eUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIE1hY2hTZW5k
UmlnaHQgc2VuZFJpZ2h0OworICAgIGlmIChkaXNwbGF5QnVmZmVyKQorICAgICAgICBzZW5kUmln
aHQgPSBkaXNwbGF5QnVmZmVyLT5jcmVhdGVTZW5kUmlnaHQoKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHNlbmRSaWdodCkpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmIGV4dGVuc2lvbikKK3sKKyAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgp
Cit7CisgICAgbV9jb250ZXh0LT5tYXJrQ29udGV4dENoYW5nZWQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YmYwNTcyMTAxZDliYzBmMDlmN2RhOTRjOTRlNTMyYmE3ZjdjMzA3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKworI2lu
Y2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNYWNo
U2VuZFJpZ2h0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzczsKKworLy8gR1BVIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0
aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzCisvLyBh
bmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2Vp
dmVkIG1lc3NhZ2VzLgorLy8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVk
IGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHByaXZhdGUgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudAorICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCgpIGZpbmFsOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNv
bm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWlu
dDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTDo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBvc2l0ZSgpIGZpbmFsOwor
ICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZvaWQgcmVjeWNsZUNvbnRl
eHQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24o
KSBmaW5hbDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIG92
ZXJyaWRlcy4KKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIGZpbmFsOworICAgIHZvaWQgcHJl
c2VudChCdWZmZXIpIGZpbmFsOworICAgIHZvaWQqIGRldGFjaENsaWVudCgpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCByZXNoYXBlKGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmKTsKKyAgICB2b2lkIGVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOworICAgIHZvaWQgbm90aWZ5TWFya0NvbnRl
eHRDaGFuZ2VkKCk7CisKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKKworICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4gbV9jb250ZXh0OworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKKyAgICBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWE3MTUyNGQ0MDgxOWJhMDMxMGNiNDIwMTM2
MDc1NjY4Nzg2ODU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
Mjk0IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICog
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291
bnRlZCB7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFj
aFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91
cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNp
b24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorCisgICAgdm9pZCBTZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQz
Ml90IGVycm9yKQorICAgIHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4g
KGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBBY3RpdmVUZXh0dXJlKHVp
bnQzMl90IHRleHR1cmUpCisgICAgdm9pZCBBdHRhY2hTaGFkZXIodWludDMyX3QgcHJvZ3JhbSwg
dWludDMyX3Qgc2hhZGVyKQorICAgIHZvaWQgQmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFy
ZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcgbmFtZSkKKyAgICB2b2lkIEJpbmRCdWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZEZyYW1lYnVmZmVyKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRSZW5kZXJidWZmZXIo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFRleHR1cmUodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmxlbmRDb2xvcihmbG9hdCBy
ZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIEJsZW5k
RXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1
aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgdm9pZCBCbGVuZEZ1bmMo
dWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB2b2lkIEJsZW5kRnVuY1Nl
cGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBo
YSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgdm9pZCBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVp
bnQzMl90IHRhcmdldCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQ2xlYXIodWludDMyX3QgbWFzaykKKyAgICB2b2lkIENsZWFyQ29sb3IoZmxvYXQgcmVk
LCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBDbGVhckRl
cHRoKGZsb2F0IGRlcHRoKQorICAgIHZvaWQgQ2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB2
b2lkIENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhh
KQorICAgIHZvaWQgQ29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weVRl
eEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB2b2lkIENyZWF0ZUJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIENyZWF0ZUZyYW1lYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUHJvZ3JhbSgpIC0+ICh1aW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNoYWRlcih1
aW50MzJfdCBhcmcwKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBDcmVhdGVUZXh0dXJlKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgQ3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB2b2lkIERlbGV0ZUJ1ZmZl
cih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJn
MCkKKyAgICB2b2lkIERlbGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0
ZVJlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlU2hhZGVyKHVpbnQz
Ml90IGFyZzApCisgICAgdm9pZCBEZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBEZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB2b2lkIERlcHRoTWFzayhib29sIGZsYWcp
CisgICAgdm9pZCBEZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHZvaWQg
RGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBEaXNh
YmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50
MzJfdCBpbmRleCkKKyAgICB2b2lkIERyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50MzJfdCBm
aXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50cyh1aW50MzJfdCBtb2Rl
LCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9p
ZCBFbmFibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
dWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBGaW5pc2goKQorICAgIHZvaWQgRmx1c2goKQorICAg
IHZvaWQgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBh
dHRhY2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMpCisg
ICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0
dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWludDMyX3QgYXJnMywgaW50MzJfdCBsZXZl
bCkKKyAgICB2b2lkIEZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgR2VuZXJhdGVN
aXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0QWN0aXZlQXR0cmliKHVpbnQzMl90
IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChi
b29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBh
cmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJn
MCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1l
KSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFN0cmlu
Zyh1aW50MzJfdCBuYW1lKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50
ZWdlcjY0KHVpbnQzMl90IHBuYW1lKSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4
KSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFByb2dy
YW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1
aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbUlu
Zm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBHZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlckluZm9Mb2codWludDMy
X3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50MzJfdCBwcmVj
aXNpb25UeXBlKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZSwgR0NH
TGludCBwcmVjaXNpb24pIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJTb3VyY2UodWlu
dDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGZs
b2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyaSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQz
Ml90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1pdih1aW50MzJf
dCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2
YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcg
bmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lKSAtPiAodWlu
dDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBIaW50KHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB2b2lkIElzQnVmZmVyKHVpbnQzMl90IGFyZzApIC0+
IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNFbmFibGVkKHVpbnQz
Ml90IGNhcCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0Zy
YW1lYnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgSXNQcm9ncmFtKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkgLT4g
KGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1NoYWRlcih1aW50MzJf
dCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzVGV4
dHVyZSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIExpbmVXaWR0aChmbG9hdCBhcmcwKQorICAgIHZvaWQgTGlua1Byb2dyYW0odWludDMy
X3QgYXJnMCkKKyAgICB2b2lkIFBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBh
cmFtKQorICAgIHZvaWQgUG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRzKQor
ICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFNh
bXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB2b2lkIFNjaXNzb3Io
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHZvaWQgU2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyBhcmcxKQorICAgIHZvaWQg
U3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisg
ICAgdm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMs
IGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2sodWludDMy
X3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWlu
dDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6
ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBTdGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJf
dCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisg
ICAgdm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZs
b2F0IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgVW5pZm9ybTFmKGludDMyX3QgbG9j
YXRpb24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3JtMWZ2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtMWkoaW50MzJfdCBs
b2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHZvaWQgVW5pZm9ybTFpdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtMmYoaW50
MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFVuaWZvcm0yZnYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVu
aWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB2b2lk
IFVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PiB2KQorICAgIHZvaWQgVW5pZm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHopCisgICAgdm9pZCBVbmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtM2koaW50MzJfdCBsb2Nh
dGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB2b2lkIFVuaWZvcm0z
aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAg
IHZvaWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHosIGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3JtNGZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtNGkoaW50MzJfdCBsb2Nh
dGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZv
aWQgVW5pZm9ybTRpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wg
dHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVu
aWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDRmdihpbnQz
Ml90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4g
dmFsdWUpCisgICAgdm9pZCBVc2VQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWYWxp
ZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjFmKHVpbnQz
Ml90IGluZGV4LCBmbG9hdCB4KQorICAgIHZvaWQgVmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0
ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFZl
cnRleEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwg
Mj4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZnYodWludDMyX3Qg
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+IHZhbHVlcykKKyAgICB2b2lkIFZl
cnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBm
bG9hdCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJQb2lu
dGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9y
bWFsaXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFZpZXdw
b3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB2b2lkIEJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWlu
dDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJEYXRhMSh1aW50MzJfdCB0YXJnZXQsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBC
dWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBSZWFkblBpeGVsczAoaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgUmVhZG5QaXhlbHMxKGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhJ
bWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJE
MSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJf
dCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4
SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBp
bnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAg
IHZvaWQgQ29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1Yklt
YWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBp
bnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBm
b3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3
QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291
bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQz
Ml90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXko
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVW
ZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheSh1aW50MzJf
dCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRW
ZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weUJ1ZmZlclN1YkRhdGEodWlu
dDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZz
ZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0QnVm
ZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0
YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwg
aW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZ
MCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3Qg
ZmlsdGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IGxheWVyKQorICAgIHZvaWQgSW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMpCisgICAgdm9p
ZCBJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBz
cmMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHZvaWQgVGV4SW1hZ2UzRDAodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4U3ViSW1hZ2UzRDEodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNl
dCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2
b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
aW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2Uz
RDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1h
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3Qg
Ym9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29t
cHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50
MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2
b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3Jt
YXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBHZXRGcmFn
RGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm0xdWkoaW50MzJfdCBsb2Nh
dGlvbiwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlmb3JtMnVpKGludDMyX3QgbG9jYXRpb24s
IHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2b2lkIFVuaWZvcm0zdWkoaW50MzJfdCBs
b2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB2b2lk
IFVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1
aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9pZCBVbmlmb3JtMXVpdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5p
Zm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4g
ZGF0YSkKKyAgICB2b2lkIFVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtNHVpdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5p
Zm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4MmZ2KGlu
dDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQg
VW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4NGZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZv
aWQgVmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGl2KHVpbnQzMl90
IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+IHZhbHVlcykKKyAgICB2b2lk
IFZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHks
IHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpdih1aW50
MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4gdmFsdWVzKQorICAg
IHZvaWQgVmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwg
dWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lk
IERyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJf
dCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIERyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisg
ICAgdm9pZCBDbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVy
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVm
ZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZ2KHVpbnQzMl90
IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2
YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBk
cmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHZvaWQgQ3JlYXRl
UXVlcnkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBE
ZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB2b2lkIElzUXVlcnkodWludDMyX3QgcXVl
cnkpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmVnaW5RdWVy
eSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgRW5kUXVlcnkodWlu
dDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
R2V0UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNhbXBsZXIoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVTYW1w
bGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJc1NhbXBsZXIodWludDMyX3Qgc2FtcGxl
cikgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kU2FtcGxl
cih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgU2FtcGxlclBhcmFt
ZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisg
ICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFt
ZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBz
YW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMy
X3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
RmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MpIC0+ICh1aW50NjRf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU3luYyh1aW50NjRfdCBhcmcw
KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVN5bmMo
dWludDY0X3QgYXJnMCkKKyAgICB2b2lkIENsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVp
bnQzMl90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBm
bGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHZvaWQgR2V0U3luY2kodWludDY0X3QgYXJnMCwg
dWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBp
ZCkKKyAgICB2b2lkIElzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpIC0+IChib29sIHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFRyYW5zZm9ybUZlZWRiYWNrKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgdm9pZCBCZWdpblRyYW5zZm9ybUZlZWRi
YWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgdm9pZCBFbmRUcmFuc2Zvcm1GZWVkYmFj
aygpCisgICAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0s
IFZlY3RvcjxTdHJpbmc+IHZhcnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHZvaWQg
R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGlu
ZGV4KSAtPiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgUmVz
dW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgQmluZEJ1ZmZlckJhc2UodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHZvaWQgQmluZEJ1
ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZl
ciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0VW5pZm9ybUlu
ZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdW5pZm9ybU5hbWVzKSAtPiAo
VmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFj
dGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4gdW5pZm9ybUlu
ZGljZXMsIHVpbnQzMl90IHBuYW1lKSAtPiAoVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3Jh
bSwgU3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJv
Z3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dy
YW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5k
aW5nKQorICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3JhbSwg
dWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJh
bXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXJBTkdMRShpbnQz
Ml90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBp
bnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkx
LCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcw
KQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90
IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJbnNl
cnRFdmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFB1c2hHcm91cE1hcmtlckVY
VChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB2b2lkIERy
YXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9p
ZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwg
aW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorfQorCisj
ZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5l
cmF0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZmZlOGMxZmM3YWZhMTcyZjFiYjljNzM0MjY3NWM1ZGZlNmUx
NzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTAsMCArMSwx
MTgzIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICog
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQg
aW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQorICAgIHZvaWQgc2V0RmFpbE5leHRHUFVT
dGF0dXNDaGVjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKTsKKyAgICB9CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBl
cnJvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3Ip
OworICAgIH0KKyAgICB2b2lkIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50
MzJfdCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRl
eHR1cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1
aW50MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihw
cm9ncmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbih1aW50
MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nJiYgbmFtZSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9
CisgICAgdm9pZCBiaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0K
KyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEp
OworICAgIH0KKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRh
cmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0
YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9h
dCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIH0KKyAgICB2b2lk
IGJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
YmxlbmRFcXVhdGlvbihtb2RlKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJh
dGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKKyAg
ICB9CisgICAgdm9pZCBibGVuZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3Rv
cikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3Ip
OworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWlu
dDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBz
cmNBbHBoYSwgZHN0QWxwaGEpOworICAgIH0KKyAgICB2b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0
dXModWludDMyX3QgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyh0YXJnZXQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgY2xlYXIodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y2xlYXIobWFzayk7CisgICAgfQorICAgIHZvaWQgY2xlYXJDb2xvcihmbG9hdCByZWQs
IGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAg
IHZvaWQgY2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Y2xlYXJEZXB0aChkZXB0aCk7CisgICAgfQorICAgIHZvaWQgY2xlYXJTdGVuY2lsKGludDMyX3Qg
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKHMpOworICAgIH0KKyAg
ICB2b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFs
cGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb2xvck1hc2soc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHJlZCksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihncmVlbiksIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihibHVlKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7
CisgICAgfQorICAgIHZvaWQgY29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGNv
cHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQg
Y3JlYXRlQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Y3JlYXRlRnJhbWVidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVi
dWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGNyZWF0ZVByb2dyYW0oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
UHJvZ3JhbSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgY3JlYXRlUmVuZGVyYnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9i
amVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRleHR1cmUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3VsbEZhY2UodWlu
dDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y3VsbEZhY2UobW9kZSk7Cisg
ICAgfQorICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVG
cmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKHVpbnQz
Ml90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7
CisgICAgfQorICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKTsKKyAgICB9Cisg
ICAgdm9pZCBkZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVsZXRlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUo
dWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShh
cmcwKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMpOworICAgIH0KKyAgICB2b2lkIGRlcHRo
TWFzayhib29sIGZsYWcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4oZmxhZykpOworICAgIH0KKyAgICB2b2lkIGRlcHRoUmFuZ2Uo
ZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRo
UmFuZ2Uoek5lYXIsIHpGYXIpOworICAgIH0KKyAgICB2b2lkIGRldGFjaFNoYWRlcih1aW50MzJf
dCBhcmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXRhY2hT
aGFkZXIoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgZGlzYWJsZSh1aW50MzJfdCBjYXAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGUoY2FwKTsKKyAgICB9CisgICAgdm9p
ZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAg
IHZvaWQgZHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNv
dW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBj
b3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMy
X3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxH
Q0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGUodWludDMyX3QgY2Fw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGUoY2FwKTsKKyAgICB9CisgICAgdm9p
ZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIH0KKyAgICB2
b2lkIGZpbmlzaCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOworICAgIH0K
KyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Zmx1c2goKTsKKyAg
ICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3Qg
YXJnMykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
dGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpOworICAgIH0KKyAg
ICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0
YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVs
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQs
IGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpOworICAgIH0KKyAgICB2b2lkIGZy
b250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcm9udEZh
Y2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAg
IH0KKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBp
bmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lk
IGdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbyBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2
ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QXR0cmli
TG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xp
bnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJh
bWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3RyaW5nKHVpbnQzMl90IG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBu
YW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
VmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXpl
KSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVl
KHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPih2YWx1
ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2VyNjQo
dWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQz
Ml90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGJvb2xlYW4sIDQ+IHZhbHVlKHN0
YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpB
cnJheVJlZmVyZW5jZTxib29sPihyZWludGVycHJldF9jYXN0PGJvb2wqPih2YWx1ZS5kYXRhKCkp
LCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRFcnJvcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Z2V0RXJyb3IoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7
CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hh
ZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRT
aGFkZXJpKGFyZzAsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAy
PiwgaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6OmFy
cmF5PEdDR0xpbnQsIDI+IHJhbmdlIHsgfTsKKyAgICAgICAgR0NHTGludCBwcmVjaXNpb24gPSB7
IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5
cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLCAmcHJlY2lzaW9uKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPihyZWludGVycHJldF9jYXN0
PGludDMyX3QqPihyYW5nZS5kYXRhKCkpLCByYW5nZS5zaXplKCkpLCBwcmVjaXNpb24pOworICAg
IH0KKyAgICB2b2lkIGdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldFNoYWRlclNvdXJjZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmYodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9h
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUZXhQYXJh
bWV0ZXJmKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBnZXRVbmlmb3JtZnYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlv
biwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSks
IDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMy
X3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZh
bHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBs
b2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSks
IHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm11aXYodWludDMyX3Qg
cHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWludCwgND4gdmFsdWUoc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlm
b3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRV
bmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzaXpl
aXB0ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOworICAgIH0KKyAgICB2b2lkIGlzQnVmZmVy
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzQnVmZmVyKGFyZzApOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBjYXAsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
RW5hYmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRnJhbWVidWZmZXIodWludDMyX3Qg
YXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9Cisg
ICAgdm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNQcm9n
cmFtKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFy
ZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVmZmVyKGFyZzApOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2hhZGVy
KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4dHVyZSh1aW50MzJfdCBhcmcwLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgbGluZVdp
ZHRoKGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmVXaWR0aChhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwaXhl
bFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBwb2x5
Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CisgICAgfQorICAgIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBp
bnZlcnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7CisgICAgfQorICAgIHZvaWQgc2Npc3Nv
cihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgfQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIGFyZzEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShhcmcwLCBhcmcxKTsKKyAg
ICB9CisgICAgdm9pZCBzdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWlu
dDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywg
cmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90
IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwg
bWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2sobWFzayk7CisgICAgfQorICAgIHZvaWQg
c3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOworICAg
IH0KKyAgICB2b2lkIHN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWlu
dDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6
ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90
IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZh
aWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB0
ZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFy
YW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFt
ZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZihpbnQzMl90IGxvY2F0aW9uLCBm
bG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24sIHgp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
MWZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxv
YXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFpKGlu
dDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybTFpKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWl2KGludDMyX3Qg
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0
aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJpKGludDMyX3QgbG9j
YXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtMmkobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yaXYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZihsb2NhdGlvbiwg
eCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNmdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0zZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2l2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
M2l2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50
Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZihpbnQz
Ml90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm00ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxv
Y2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2
LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpKGludDMyX3Qg
bG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
NGl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50
Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgy
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGludDMyX3Qg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZh
bHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBi
b29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dXNlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0o
dWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmFsaWRhdGVQcm9ncmFt
KGFyZzApOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBm
bG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwg
eCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48MT4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lk
IHZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSk7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCAyPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJp
YjNmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCAzPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJp
YjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwg
dyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lk
IHZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMy
X3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBz
aXplLCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4obm9ybWFsaXplZCksIHN0cmlkZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdmlld3Bv
cnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMCh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IGFy
ZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRh
KHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmcxKSwgdXNhZ2UpOworICAgIH0K
KyAgICB2b2lkIGJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiYmIGRhdGEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSwgdXNhZ2UpOworICAgIH0K
KyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zm
c2V0KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRh
LmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMwKGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2Fz
dDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
cmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAg
fQorICAgIHZvaWQgdGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRl
eEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9y
ZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0
PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlMkQwKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFn
ZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGlu
dDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4o
b2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMy
X3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
MSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJf
dCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0
LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZCh1
aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1j
b3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2Rl
LCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVp
bnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8
R0NHTGludHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAg
ICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xP
YmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVmVydGV4QXJyYXkoYXJnMCk7CisgICAg
fQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJv
b2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5pc1ZlcnRleEFycmF5KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJh
eSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVmVydGV4QXJy
YXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVh
ZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2
NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8
R0NHTGludHB0cj4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHdyaXRlT2Zm
c2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQg
Z2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0
X3QgZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NH
TGNoYXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDApOworICAgICAg
ICBtX2NvbnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpLCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGludDMy
X3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGlu
dDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEs
IHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0
WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1
ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVp
bnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVu
dCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlRnJh
bWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYm
IGF0dGFjaG1lbnRzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVi
dWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51
bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMsIGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkpLCBhdHRhY2htZW50
cy5zaXplKCkpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCByZWFkQnVm
ZmVyKHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZEJ1ZmZlcihz
cmMpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5y
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4
U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7
CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFn
ZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgp
OworICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQz
Ml90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4
ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBp
bnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRl
cHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdl
M0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50
ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+
KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRDAodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90
IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3Jk
ZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0
PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwg
aW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXpl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXpl
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0
YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRw
dHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGdldEZyYWdEYXRhTG9jYXRpb24odWludDMy
X3QgcHJvZ3JhbSwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFnRGF0YUxv
Y2F0aW9uKHByb2dyYW0sIG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50
MzJfdCB2MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwg
djApOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMy
X3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVp
KGxvY2F0aW9uLCB2MCwgdjEpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWkoaW50MzJfdCBs
b2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWlu
dDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWl2KGlu
dDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTN1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYo
bG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KGlu
dDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xm
bG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNw
b3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0
aSh1aW50MzJfdCBpbmRleCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJf
dCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgs
IHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4mJiB2YWx1ZXMpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVp
bnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lk
IHZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliSTR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0x1aW50Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQz
Ml90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50
cyh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNv
dW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QnVm
ZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIGNsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdih1aW50MzJfdCBidWZmZXIsIGlu
dDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiB2YWx1ZXMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1
ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1
ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVy
ZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZl
cmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVy
LCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOworICAg
IH0KKyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0
ZVF1ZXJ5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBkZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlUXVlcnkocXVlcnkpOworICAgIH0KKyAgICB2b2lkIGlzUXVlcnkodWlu
dDMyX3QgcXVlcnksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUXVlcnkocXVlcnkpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KTsKKyAgICB9
CisgICAgdm9pZCBlbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmVuZFF1ZXJ5KHRhcmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnkodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
UXVlcnkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1
aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWkocXVlcnks
IHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGNyZWF0ZVNhbXBsZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
U2FtcGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgZGVsZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kZWxldGVTYW1wbGVyKHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIGlz
U2FtcGxlcih1aW50MzJfdCBzYW1wbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1NhbXBsZXIoc2Ft
cGxlcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWlu
dDMyX3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZFNhbXBsZXIodW5p
dCwgc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qg
c2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAg
fQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3Qg
cG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFy
YW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGZlbmNlU3luYyh1aW50
MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZsYWdzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzeW5jIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+ZmVuY2VT
eW5jKGNvbmRpdGlvbiwgZmxhZ3MpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKSk7
CisgICAgfQorICAgIHZvaWQgaXNTeW5jKHVpbnQ2NF90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9v
bGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmlzU3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
YXJnMCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dM
c3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgfQorICAgIHZvaWQgY2xp
ZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVv
dXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5jbGllbnRXYWl0U3luYyhyZWludGVycHJldF9jYXN0PEdD
R0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8
R0NHTHVpbnQ2ND4odGltZW91dCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgd2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3Qg
ZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+d2FpdFN5
bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzAp
KSwgZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4odGltZW91dCkpOworICAgIH0KKyAgICB2
b2lkIGdldFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldFN5bmNpKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0
cl90PihhcmcwKSksIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
VHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgIH0KKyAgICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJh
Y2sodWludDMyX3QgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soaWQp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVHJhbnNmb3Jt
RmVlZGJhY2sodGFyZ2V0LCBpZCk7CisgICAgfQorICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5i
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpOworICAgIH0KKyAgICB2b2lkIGVu
ZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kVHJhbnNm
b3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmdz
KHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1
ZmZlck1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpOworICAgIH0KKyAgICB2b2lkIGdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRl
eCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICBtX2NvbnRl
eHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCwgYXJnMik7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lk
IHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5wYXVz
ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVl
ZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFj
aygpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
YmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKTsKKyAgICB9CisgICAgdm9pZCBi
aW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
YnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnNCkp
OworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZl
Y3RvcjxTdHJpbmc+JiYgdW5pZm9ybU5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjx1aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0
b3I8R0NHTHVpbnQ+IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4m
JiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPGludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
VmVjdG9yPEdDR0xpbnQ+IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBu
YW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0luZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0
cmluZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHVpbnQgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtQmxv
Y2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9j
a05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tJbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5n
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlm
b3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gcGFyYW1zKHN0
YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwg
cGFyYW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihwYXJhbXMuZGF0YSgpKSwgcGFyYW1z
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50
MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwg
aW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmls
dGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1l
YnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0
WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY3JlYXRlVmVydGV4QXJyYXlPRVMo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAg
ICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5T0VTKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmluZFZlcnRleEFycmF5T0VTKGFyZzApOwor
ICAgIH0KKyAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcm
JiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0
RXZlbnRNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhU
KFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5wdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZvaWQgcG9wR3JvdXBNYXJr
ZXJFWFQoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucG9wR3Jv
dXBNYXJrZXJFWFQoKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBm
aXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTHZvaWRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQppbmRleCBi
N2JiNjNiMjlhZDgwMjE3MmRmMjdhMTI4OTViYjE5OThmYTRiNmIwLi4yNGM0MzdjYWFlN2Y4Zjlh
OWFmZjkyNzAzZWZjZjlkYTAzMWU0YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21hYy9HUFVQcm9jZXNzTWFjLm1tCkBAIC0zMiw4ICszMiw4IEBACiAjaW1wb3J0ICJTYW5kYm94
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNp
bXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNT
UEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHN5
c2V4aXRzLmg+CiAjaW1wb3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDkgKzQ0LDEyIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdm9pZCBHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhp
bGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKIHsKICNpZiBQTEFURk9STShN
QUMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyNpZiAwCiAgICAgLy8gSGF2aW5nIGEgd2lu
ZG93IHNlcnZlciBjb25uZWN0aW9uIGluIHRoaXMgcHJvY2VzcyB3b3VsZCByZXN1bHQgaW4gc3Bp
biBsb2dzICg8cmRhcjovL3Byb2JsZW0vMTMyMzkxMTk+KS4KLSAgICBPU1N0YXR1cyBlcnJvciA9
IFNldEFwcGxpY2F0aW9uSXNEYWVtb24odHJ1ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChlcnJvciwg
ZXJyb3IgPT0gbm9FcnIpOworICAgIGF1dG8gcmV0dmFsID0gQ0dTU2V0RGVueVdpbmRvd1NlcnZl
ckNvbm5lY3Rpb25zKHRydWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHJldHZhbCA9PSBrQ0dFcnJv
clN1Y2Nlc3MpOworICAgIENHU1NodXRkb3duU2VydmVyQ29ubmVjdGlvbnMoKTsKKyNlbmRpZgog
I2VuZGlmCiAKICAgICBsYXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nl
c3Muc2IuaW4KaW5kZXggZGIwNmU1MzRmN2Y1MWQyZWJkMDM4MjVmNTgyNDVmODQ5NmY4YjE3OS4u
ZWQxMDBiMzZlZDZmNDZkNGFhZjYzNTQ0Nzc4ODJhYjc5M2ExMWJjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2Iu
aW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQ
VVByb2Nlc3Muc2IuaW4KQEAgLTIwNyw2ICsyMDcsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eS1y
ZWdleCAjIl5BQVBMLChEaXNwbGF5UGlwZXxPcGVuQ0xkaXNhYmxlZHxJT0dyYXBoaWNzX0xFUih8
X1JlZ1RhZ18xfF9SZWdUYWdfMHxfQnVzeV8yKXxhbGlhcy1wb2xpY3l8Ym9vdC1kaXNwbGF5fGRp
c3BsYXktYWxpYXN8bXV4LXN3aXRjaC1zdGF0ZXxuZHJ2LWRldnxwcmltYXJ5LWRpc3BsYXl8c2xv
dC1uYW1lKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkFUWSwoY2JpdHN8ZmJfKGxp
bmVieXRlc3xvZmZzZXR8c2l6ZSl8aW50cmV2KSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJBVFks
RGV2aWNlTmFtZSIpIDs7IE5lZWRlZCBieSBNZXRhbCBjb21waWxlcnMKKyAgICAoaW9raXQtcHJv
cGVydHkgIkFUWSxFRklEaXNwbGF5IikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxGYW1pbHlO
YW1lIikgOzsgRGl0dG8KICAgICAoaW9raXQtcHJvcGVydHkgIkFWQ1N1cHBvcnRlZCIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJCYWNrbGlnaHRIYW5kbGUiKQpAQCAtMjE3LDYgKzIxOCw5IEBACiAg
ICAgKGlva2l0LXByb3BlcnR5ICJDYXBzTG9ja0RlbGF5IikKICAgICAoaW9raXQtcHJvcGVydHkg
IkNhc2VTZW5zaXRpdmUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ29uZmlnU3RhdGUiKQorICAg
IChpb2tpdC1wcm9wZXJ0eSAiRFBMYW5lcyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtC
aXQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRFBMaW5rUmF0ZSIpCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJEZXNjcmlwdGlvbiIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXZlbG9wbWVudCIpCiAg
ICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkRldmljZSggQ2hhcmFjdGVyaXN0aWNzfEVxSUQp
IikKQEAgLTIyOSwxMCArMjMzLDE3IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJGYW1pbHkgSUQi
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9yY2VTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiRm9ybWF0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlckVuYWJsZWQi
KQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRnJhbWVidWZmZXJTdGFydGVkIikKICAgICAoaW9raXQt
cHJvcGVydHkgIkdQVUNvbmZpZ3VyYXRpb25WYXJpYWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5
ICJHUFVEQ0NEaXNwbGF5YWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEZWJ1Z051bGxD
bGllbnRNYXNrIikKICAgICAoaW9raXQtcHJvcGVydHkgIkdwdURlYnVnUG9saWN5IikKKyAgICAo
aW9raXQtcHJvcGVydHkgIkdQVVJhd0NvdW50ZXJCdW5kbGVOYW1lIikKKyAgICAoaW9raXQtcHJv
cGVydHkgIkdQVVJhd0NvdW50ZXJQbHVnaW5DbGFzc05hbWUiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiSEVWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJISURQb2ludGVyQWNjZWxl
cmF0aW9uVHlwZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJId0N0eENhY2hlVXBkYXRlIikKICAg
ICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9BY2NlbChEaXNwbGF5UGlwZUNhcGFiaWxpdGll
c3xJbmRleHxUeXBlc3xSZXZpc2lvbikiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5J
TyhDbGFzc3xNYXRjaENhdGVnb3J5fE5hbWVNYXRjaCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1y
ZWdleCAjIl5JT0F1ZGlvQ29udHJvbChDaGFubmVsSUR8SUR8U3ViVHlwZXxVc2FnZXxWYWx1ZSki
KQpAQCAtMjgyLDYgKzI5Myw4IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1BhcmVudE1hdGNo
IikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9QQ0koKENsYXNzfFByaW1hcnl8UHJv
cGVydHl8KU1hdGNofEV4cHJlc3MoQ2FwYWJpbGl0aWVzfExpbmsoU3RhdHVzfENhcGFiaWxpdGll
cykpfE1TSU1vZGV8UmVzb3VyY2VkfFR1bm5lbGxlZCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
SU9QTUlzUG93ZXJNYW5hZ2VkIikKKyAgICAoaW9raXQtcHJvcGVydHkgIklPUGVyc29uYWxpdHlQ
dWJsaXNoZXIiKQorCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPUGxhdGZvcm0oU2Vy
aWFsTnVtYmVyfFVVSUQpIikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUG93ZXJNYW5hZ2VtZW50
IikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUHJvYmVTY29yZSIpCkBAIC0zMTcsNiArMzMwLDcg
QEAKICAgICAoaW9raXQtcHJvcGVydHkgIlByb3RvY29sIENoYXJhY3RlcmlzdGljcyIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJSZW1vdmFibGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAj
Il5SZXNldE9uKExvY2t8VW5sb2NrKU1zIikKKyAgICAoaW9raXQtcHJvcGVydHkgIlNXSVBfcHJv
cGVydGllcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTYWZlRWplY3RSZXF1ZXN0ZWQiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiU2FtcGxlUmF0ZXMiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2Vy
aWFsIE51bWJlciIpCkBAIC0zMzgsNiArMzUyLDcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgImF0
dGFjaGVkLWdwdS1jb250cm9sLXBhdGgiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5h
dWRpby0oY29kZWMtaW5mb3xkZXZpY2UtbXZhbHVlfGRldmljZS1udmFsdWV8c2VsZWN0b3IpIikK
ICAgICAoaW9raXQtcHJvcGVydHkgImF2LXNpZ25hbC10eXBlIikKKyAgICAoaW9raXQtcHJvcGVy
dHkgImJhY2tsaWdodC1QV00tZnJlcSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJiY2RWZXJzaW9u
IikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeKGJvYXJkfGRldmljZXxyZXZpc2lvbnxz
dWJzeXN0ZW18dmVuZG9yKS1pZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJib290LWdhbW1hLXJl
c3RvcmVkIikKQEAgLTM1MCw2ICszNjUsMTEgQEAKICAgICAoaW9raXQtcHJvcGVydHkgImNvbm5l
Y3Rvci10eXBlIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeKGRldmljZXxyZXZpc2lv
bnxzdWJzeXN0ZW0tdmVuZG9yfHRvdWNoLXNpemUpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkg
ImRldmljZV90eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktYnBjIikKKyAgICAo
aW9raXQtcHJvcGVydHkgImRpc3BsYXktY29ubmVjdC1mbGFncyIpCisgICAgKGlva2l0LXByb3Bl
cnR5ICJkaXNwbGF5LWxpbmstY29tcG9uZW50LWJpdHMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAi
ZGlzcGxheS1waXhlbC1jb21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNw
bGF5LXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZHBtIikKICAgICAoaW9raXQtcHJvcGVy
dHkgImVycm9yZGIiKSA7OyBOZWVkZWQgZm9yIE9wZW5HTCBvbiBvbGRlciBoYXJkd2FyZQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiZmlsZXZhdWx0LWltYWdlIikgOzsgTmVlZGVkIGJ5IExhdW5jaFNl
cnZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5oCmluZGV4IDZhNWM2NzI1Y2FhOWJkYjg2N2FiODZiOGM1N2YzNmRlMmM4
OTZkY2YuLmJlN2Y1MjIwYmU5Yjg1Zjg2OGE1ZjgzN2VmZWQ2NmRkZjk1ZjI5NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5oCkBAIC0zOSwxMCArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUxlZ2FjeUNETVByb3h5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDQ3ZjVkMmYyNzBmYTVkZTRmYWRlMTUxNDQ0MjExMTc5
NGVkMzZkMjguLjJjNWU3ZGU3ZDJlNzU2OTYwYTNmM2VjODc2YzhiODI1YzZlNDViNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29w
eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5jcHAKaW5kZXggYTk4Y2ZhNGM5ZjgwMjMxOTA0ZjhlZjBlYWE5MzYyMjlhZmE5NzU5OC4uZmVj
NjVjZjYyYjY2NzRiODMwMGM1MGNkNDMzNDE1ZTkxNTExNDQwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJSZW1vdGVNZWRpYVJlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyLmgKaW5kZXggZDg5YjgwM2Y2YWJmNDFjOGU5ZWRkZTQxNDI3NjkzMjgyNmQx
YjMzOC4uMDgxZWIzMTgwZDAyMTY0YjVhYTNkNTQ4MDZmNzJjN2VkYzBjYjFlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyLmgKQEAgLTI3LDE1ICsyNywxNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCisKICNp
bmNsdWRlIDxXZWJDb3JlL1BvbGljeUNoZWNrZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5
LmgKaW5kZXggNmJmYmZhZmIyMDQ0NzgzMGQ3MzBjMzhjNTVkOTE2MDIyYzIzZDMxNi4uMDZlMzA5
ZTRkNTdlYTA0N2Y1ZWQ4MjkwMjU4YjE5Y2JjZGE2MTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCkBAIC0z
OCw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBE
ZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5jcHAKaW5kZXggMjQ1Y2Y0MGRmYzZmYzcyNDE3NDk5Yzk5NmVlYTk1ZjBh
M2E4ZDY5YS4uODY4MmNkNzk1YTVmNTQ0YWJiNzhlN2MxYjg1ODdiOTY4ODNmOTQ5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNl
QnVmZmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaApp
bmRleCAzOTBjMGNlMWMyN2I2MDhkYzk3YWFmYTUxODYzNjE4ODBjM2FmNGQzLi5jMzM3ODMzM2Mw
MjY2NmRhNjFhYmFjNjQ5NDcwMjEyMWRiNWU4NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaApAQCAtMjcs
OSArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9T
b3VyY2VCdWZmZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtMzgsNyArNDAsNiBAQAogbmFt
ZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAppbmRleCAz
NjAzMTBiN2QxMjFkMjg2ZDhkMTYxZjE4M2FiZDBlNzQ1YjgzNTMzLi44NDNiYjA2ZjdiNTZjNmUz
Y2ZiZWU3OWE3ZTQyODFlZmVlOGY5YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBAIC0yOCwxNCArMjgsMTUg
QEAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0Vu
Y29kZXJJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVj
b2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tCmluZGV4IGY4YWJjMWY0MDVmYzE0Njk0NzViNGQ5MGJhZDNkNTNjYTBmODAxNGUu
LjYxYzQ3MDhhZTk2ZGJjYWE1Njk4MDllZTE5OTViZTgxNmE5MWZmMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCAiTGliV2ViUlRD
Q29kZWNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmgKaW5kZXggNzg4YzVmMDBjMDJmNGYxNDhmZWVjY2QzOGQxMDY4MThiMGQ3ZTk2
MS4uM2FiNGU0YjFjZjFjMTQxMjMwYzEzZTQ1NzZjNWVkNmU2ZWZjMmVkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVH
QVRFKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3Jk
ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCkBAIC0zNiw3ICszNyw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNvY29hLm1tCmluZGV4IDdhNjMzNjM0N2MwMDdlOTdiNzNiNTQzNzc0OTE2ODM4
ZDY0MDM3ZGEuLjFhYTUzY2MyZmI3N2JhZjllMzI2NTA3MjEwODA5ZmQ3NmNmYmJmMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29h
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlckNvY29hLm1tCkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIgogCi0jaW1wb3J0ICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5o
IgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxT
ZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ci5oCmluZGV4IGY2ZWQ4MTFmNTM0MmZlNDg1NTUxNzZmODlkNTE0NTc1NjJjNjY1ODUuLjBiY2Q1
NjczYzkzNDZhZGExMWQ2NTZjM2FkZDUxYmU0ZWRiYzI3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2Fj
eUN1c3RvbVByb3RvY29sSUQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKQEAgLTM5LDEwICs0MCw2IEBAIE9CSkNf
Q0xBU1MgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbjsKIE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90
b2NvbDsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19
IC8vIG5hbWVzcGFjZSBJUEMKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTExMiw0ICsxMDksMyBAQCBwcml2YXRl
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAppbmRleCBkZGJlNGVlZGQ0NDFk
Zjg3YzU1YWQzMzBmMDQyY2NkY2ZhZGZiOTBiLi42NTFmZjI1NGY5MDVjMTZhOTBjYjQ4MmM5Nzcz
ZDRhYzc0Mjk0ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
TWFuYWdlci5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRN
b25pdG9yLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCAzOGFm
MzUwODA3NDY0MjkzYjk1ZmZhZjA1OWZkZWMzNjkwMTc3Mjc0Li45M2YwM2E4MjU1ZjFhZTcxNzM4
M2MwMDI5MGEyNGY5MWNhN2M2NTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5o
IgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkTW9uaXRv
ci5oIgpAQCAtNDQsMTAgKzQ1LDYgQEAgT0JKQ19DTEFTUyBOU1Byb2dyZXNzOwogT0JKQ19DTEFT
UyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2MzQwZjI3YzE2MDVjM2NkNzRiYzY5MDdiN2Q5MWI0N2I3
NjIuLjcyNmRkOTkwYmFmZDQzOTRiNWFmYzAzMmExY2YyMGYxODQ5YzQ5YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAyY2Qx
NjFiMGFjM2U3ODllMjI0NmMwNWIwMTY1ZjFjNzI2NzhmYTUwLi45ODBhMDZmNzgzOWRiZDVlOWY5
ZDUwNDU0MDlhMzNkNzdiMWMwMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYXAuaCIKICNpbmNsdWRlICJOZXR3
b3JrRGF0YVRhc2suaCIKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCmluZGV4IDQ0OWIxM2Q4ZTA3YjJj
ZDA0MmM0YmEzNjM2YWI3OTNkMzdiMWMzZjQuLmM3Nzg4ODExZjAzMmQ1OGY4YjUyNzczNmUxZDIy
Nzg0MTBmOTEzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKIAotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuaAppbmRleCAzMTk2NDE5MGQxNDFkNTQ5ZGEwYmFmMmRjOGJmMjk3YjRlNTgxZTg5Li4w
NDM0YmY4ODA5YTdlYjNlY2MxOGU4ZjY1MGNjMDI3OGFlNmViNTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CkBAIC00MCw3ICs0MSw2IEBAIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERl
Y29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
Y3BwCmluZGV4IDViNDg5Y2M1MzhmN2MwNzE1MTAxMDZjNThmNWMwOTRlYzlhOGUxYjguLjQ4Yzg4
M2JmYzBmYzdkNTAxYzhhNGE0ZTc2ODRjY2MzM2UzOGMxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJl
YW0uaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
aAppbmRleCA1MmVjMzkyNjkwMjE4ZWRlNjY4ZDU1ZTYzOGQ4ZTE3NTAyZmQ2ZWU1Li43MzQyOWEw
Mjc5MDZiNDE2YTM4YzBjNmIzOTQ2YTBkYjlmYjIwNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1FcnJvci5oPgpAQCAtMzcsNyArMzgsNiBAQAogbmFtZXNw
YWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmgKaW5kZXggZDMzY2JmZjEwODljYzEwNWRkMWEwMGJlYmZkZjYxZDMzYzdm
NjZiZC4uZDM3ZDc4MDY5ODNiYmE1NDdjYTBmOTIzNWViNGJmNmI3MzE1NjVhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIuaD4KQEAgLTQzLDcgKzQ0LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogbmFt
ZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNs
YXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKaW5kZXggZGI1Nzk1ZGQyMTdmNDVhZDVm
NjdlMzBiNzkxZjkyZTI3NmMwMjk4Ni4uOTYxZTQ2NDU5YmU3NzE3N2UyNjA1ZTdkODY1MmFkYTgw
MjA5N2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2Nr
ZXRUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNr
LmgKQEAgLTMxLDkgKzMxLDYgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogI2Vs
c2UKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKaW5kZXggZGFjNjkzNTA3ZWIzZWZjZWE2ZDEwOTQ4
MDFiYzAxYjM2ZmUyNjM5ZC4uZTY4MjZlNDdlODM5NTk0MDI4YWY4ZjRhZWQyMzkyYjRiMDVkMmY1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dl
YlNvY2tldFRhc2tDb2NvYS5oCkBAIC0yNywxNSArMjcsMTIgQEAKIAogI2lmIEhBVkUoTlNVUkxT
RVNTSU9OX1dFQlNPQ0tFVCkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogT0JKQ19DTEFT
UyBOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNrOwogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Nlc3Np
b247CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbQppbmRleCA4NTUz
NDg3NDQwNGNlMmJhYTQ0YWU2NTY1NDdkMzcyMjUzMzJlYWI4Li45MGJjNDA5YmZmYjcwYTBlZTll
NzM1OGIzODY3NTk3ZDI5ZjI0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbQpAQCAtMjgsNyArMjgsNiBA
QAogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQogCi0jaW1wb3J0ICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjaW1wb3J0ICJOZXR3
b3JrU29ja2V0Q2hhbm5lbC5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCmluZGV4IDQ1ZmM2NjlkNzY2YTc2MWM1ZDc3M2RjOTVmMDU0MWEzOGUzNmY4
ZTMuLmEzZTcwMTRiNWQ4ZWMwOTczOGZmYTdkNTY2NDU0NTAxMGYwNTM0MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YlNvY2tldFRhc2tTb3VwLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRUUFBhcnNlcnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKaW5kZXggZTQyMWI5ZTFj
NzEzMTg0MzRmNjQ4N2Y1ZmNiNWE2YTg3YmQ3MzkxOS4uMDg4OTIzOTU5ZmU0NjBmZjJiYmE0Yzhj
MDgzOTk4MDY1N2JmMzQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKQEAgLTI1LDE0ICsyNSwxMSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCBlMDBhMGNjZGZhNTg3
NWMwMjhjNTA1MjMxMTQxNzI4ZWU5NWI0MzkyLi5lMzhiYzFjNjBhZjZkY2YwMzY5NjVhYTc4YWFk
YmQ2ZDhkNGI2MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcnJh
eVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgi
CiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTUzLDYgKzU0LDQ4IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVyIHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVy
ZW5jZTxULCBFeHRlbnQ+PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlS
ZWZlcmVuY2U8VCwgRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAgICB7Cisg
ICAgICAgIGlmICghRXh0ZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihh
cnJheVJlZmVyZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXplb2YoVCks
IGFsaWdub2YoVCkpOworICAgIH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VU
eXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIGlmICghRXh0ZW50
KQorICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZSgpOworICAgICAgICBjb25z
dCB1aW50OF90KiBkYXRhID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShFeHRl
bnQgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgICAgICBpZiAoIWRhdGEpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VU
eXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBFeHRlbnQpOworICAgIH0KK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJl
bmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4+IHsKKyAgICB1c2luZyBBcnJheVJl
ZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRl
bnQ+OworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJh
eVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgZW5jb2Rlci5l
bmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5UmVmZXJlbmNlLnNpemUoKSkpOworICAg
ICAgICBpZiAoIWFycmF5UmVmZXJlbmNlLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVuY2Uuc2l6ZSgp
ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9CisgICAgc3RhdGljIE9wdGlvbmFsPEFy
cmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICB1aW50NjRfdCBzaXplOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAg
ICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZSgpOworICAgICAgICBjb25zdCB1aW50OF90
KiBkYXRhID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplICogc2l6ZW9m
KFQpLCBhbGlnbm9mKFQpKTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IFQqPihkYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSk7Cisg
ICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8T3B0
aW9uU2V0PFQ+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkMzJiYjQ1N2E1Yjg4NWYzZDU2
Njg3ZTc5ZjE1YzNhMjY3MWJlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgSVBDIHsKKworaW5saW5lIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlS
ZWZlcmVuY2VEeW5hbWljRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBhcnJheVJlZmVyZW5j
ZUR5bmFtaWNFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRl
bnQ+IHsKK3B1YmxpYzoKKyAgICBBcnJheVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIEFy
cmF5UmVmZXJlbmNlKGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKQorICAgICAgICA6IG1fZGF0
YShkYXRhKQorICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZSA8c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKKyAgICAgICAgOiBtX2RhdGEodmVjdG9y
LmRhdGEoKSkKKyAgICAgICAgLCBtX3NpemUodmVjdG9yLnNpemUoKSkKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQorCisgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCBUKiBkYXRhKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4g
dmVjdG9yKCkgY29uc3QKKyAgICB7CisgICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQobV9kYXRhLCBtX3NpemUpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7IH07CisgICAgc2l6ZV90
IG1fc2l6ZSB7IH07Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4K
K2NsYXNzIEFycmF5UmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBBcnJheVJlZmVyZW5jZSgpID0g
ZGVmYXVsdDsKKworICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXpl
KQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChz
aXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHk+JiB2ZWN0b3IpCisgICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgewor
ICAgICAgICBBU1NFUlQodmVjdG9yLnNpemUoKSA9PSBFeHRlbnQpOworICAgIH0KKworICAgIGNv
bnN0ZXhwciBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhRXh0ZW50OyB9CisKKyAgICBj
b25zdGV4cHIgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBFeHRlbnQ7IH0KKworICAgIGNv
bnN0IFQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKwor
ICAgIFZlY3RvcjxUPiB2ZWN0b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9yPFQ+IHJl
c3VsdDsKKyAgICAgICAgaWYgKCFpc0VtcHR5KCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KG1fZGF0YSwgRXh0ZW50KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgY29uc3QgVCogbV9kYXRhIHsgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KK0FycmF5UmVmZXJlbmNlKGNvbnN0IFdURjo6VmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEFycmF5UmVmZXJlbmNlPFQ+OworCit9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCBlYzNk
MTRhZThmM2VjMjQ3MDU0NzYzY2FlZTkwOWNjMmM4NzVmNWQ4Li5iYmQ3YWJjYjRjZGM2MDQzODJi
MTA2NWUzMzIzODQ0OWM2YWM1OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCkBAIC0yMjcsMTAgKzIyNywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQ3VycmVu
dGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKTsKIAogICAgIHZvaWQgcG9zdENvbm5lY3Rp
b25EaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgpOwotCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMm
JiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlvblNl
dDxTZW5kT3B0aW9uPiA9IHsgfSk7IC8vIFRocmVhZC1zYWZlLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0
aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KTsgLy8gVGhyZWFkLXNhZmUuCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1l
b3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgorICAgIC8vIFN5bmMgc2Vu
ZGVycyBzaG91bGQgY2hlY2sgdGhlIFNlbmRTeW5jUmVzdWx0IGZvciB0cnVlL2ZhbHNlIGluIGNh
c2UgdGhleSBuZWVkIHRvIGtub3cgaWYgdGhlIHJlc3VsdCB3YXMgcmVhbGx5IHJlY2VpdmVkLgor
ICAgIC8vIFN5bmMgc2VuZGVycyBzaG91bGQgaG9sZCBvbiB0byB0aGUgU2VuZFN5bmNSZXN1bHQg
aW4gY2FzZSB0aGV5IHJlZmVyZW5jZSB0aGUgY29udGVudHMgb2YgdGhlIHJlcGx5IHZpYSBEYXRh
UmVmZXJlcmVuY2UgLyBBcnJheVJlZmVyZW5jZS4KKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9
IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5k
U3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBs
eSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5m
aW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0p
OyAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2Fp
dEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0p
OyAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIAogICAgIC8vIFRocmVhZC1zYWZlLgpAQCAtMjQ5
LDcgKzI1MSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNz
YWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNl
dDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmpl
Y3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6
OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0g
eyB9KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSks
IFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRT
eW5jT3B0aW9ucyk7CiAgICAgfQpAQCAtNTUxLDcgKzU1Myw3IEBAIHZvaWQgbW92ZVR1cGxlKHN0
ZDo6dHVwbGU8QS4uLj4mJiBhLCBzdGQ6OnR1cGxlPEIuLi4+JiBiKQogICAgIFR1cGxlTW92ZXI8
c2l6ZW9mLi4uKEEpLCBzdGQ6OnR1cGxlPEEuLi4+LCBzdGQ6OnR1cGxlPEIuLi4+Pjo6bW92ZShX
VEZNb3ZlKGEpLCBiKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9u
OjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucykKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNl
bmRTeW5jUmVzdWx0IENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBU
OjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQs
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIENPTVBJ
TEVfQVNTRVJUKFQ6OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTcwLDE1ICs1NzIsMTUgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJgogICAgIC8vIE5vdyBzZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBh
IHJlcGx5LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5k
U3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92ZShlbmNvZGVyKSwgdGltZW91dCwgc2Vu
ZFN5bmNPcHRpb25zKTsKICAgICBpZiAoIXJlcGx5RGVjb2RlcikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgLy8gRGVjb2RlIHRoZSByZXBseS4KICAg
ICBPcHRpb25hbDx0eXBlbmFtZSBUOjpSZXBseUFyZ3VtZW50cz4gcmVwbHlBcmd1bWVudHM7CiAg
ICAgKnJlcGx5RGVjb2RlciA+PiByZXBseUFyZ3VtZW50czsKICAgICBpZiAoIXJlcGx5QXJndW1l
bnRzKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgbW92
ZVR1cGxlKFdURk1vdmUoKnJlcGx5QXJndW1lbnRzKSwgcmVwbHkpOwotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiByZXBseURlY29kZXI7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgQ29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2Fp
dEZvck9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2Uu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjVmZGE3YmVkMmZlOGM0MDQ5YjU1
ODcwNzlmZDFlMTYzNTRmNGZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0KLSNpbmNsdWRlICJEZWNvZGVyLmgi
Ci0jaW5jbHVkZSAiRW5jb2Rlci5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotdm9pZCBEYXRhUmVm
ZXJlbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyLmVu
Y29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KCp0aGlzKTsKLX0KLQotYm9vbCBEYXRhUmVmZXJl
bmNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSkKLXsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShk
YXRhUmVmZXJlbmNlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKaW5kZXggMzQ1MGMzMWI3M2RkYjZhYTVlZGNlMmFm
ODAwMjk4ODdjNzk4ZTIwNS4uZGJiM2Q2OTI3ZjM0MWM1YWE5M2ZjMTA3M2NiMDc1NmUzY2JhMzdk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaApAQCAtMjUs
NTQgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBE
ZWNvZGVyOwotY2xhc3MgRW5jb2RlcjsKLSAgICAKLWNsYXNzIERhdGFSZWZlcmVuY2UgewotcHVi
bGljOgotICAgIERhdGFSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0KLSAgICBEYXRhUmVmZXJlbmNl
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShkYXRh
KQotICAgICAgICAsIG1fc2l6ZShzaXplKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxz
aXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAgRGF0YVJlZmVyZW5jZShjb25zdCBWZWN0b3I8dWlu
dDhfdCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCi0gICAgICAgIDogbV9kYXRhKHZlY3Rvci5k
YXRhKCkpCi0gICAgICAgICwgbV9zaXplKHZlY3Rvci5zaXplKCkpCi0gICAgewotICAgIH0KLQot
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KLQotICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0IAotICAgIHsgCi0gICAgICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsgCi0gICAgfQotCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHZlY3RvcigpIGNvbnN0Ci0gICAgewotICAgICAgICBWZWN0b3I8dWludDhf
dD4gcmVzdWx0OwotICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9zaXplKTsKLQotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBEYXRhUmVmZXJlbmNlJik7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgdWludDhfdCogbV9kYXRh
IHsgbnVsbHB0ciB9OwotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci19OwordXNpbmcgRGF0YVJl
ZmVyZW5jZSA9IEFycmF5UmVmZXJlbmNlPHVpbnQ4X3QsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4
dGVudD47CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmNwcAppbmRleCA3OGE0NjM4ZWI3MzA1YmZkMTkxMDg3MDY4ZDMwYmNkYjhkZmU4MmFlLi4y
Y2I3OWI3MzFjOGQzNTFhMmQwNTk0NjM2MmM1YWI4YmJhZGJkYzVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtMTg2LDIwICsxODYsMTUgQEAgYm9vbCBEZWNvZGVy
OjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVf
dCBhbGlnbm1lbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEZWNvZGVyOjpkZWNvZGVW
YXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQorY29u
c3QgdWludDhfdCogRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZV90IHNp
emUsIHNpemVfdCBhbGlnbm1lbnQpCiB7Ci0gICAgdWludDY0X3Qgc2l6ZTsKLSAgICBpZiAoIWRl
Y29kZShzaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmICghYWxpZ25C
dWZmZXJQb3NpdGlvbigxLCBzaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
YWxpZ25CdWZmZXJQb3NpdGlvbihhbGlnbm1lbnQsIHNpemUpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBtX2J1ZmZlclBvczsKICAgICBtX2J1
ZmZlclBvcyArPSBzaXplOwogCi0gICAgZGF0YVJlZmVyZW5jZSA9IERhdGFSZWZlcmVuY2UoZGF0
YSwgc2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIGJvb2wg
RGVjb2Rlcjo6cmVtb3ZlQXR0YWNobWVudChBdHRhY2htZW50JiBhdHRhY2htZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IGI3MmRkOGFjZTI3NzNkYjM1NTllMzY2ZGQ5
NTI0ZjIzNDFlNTVlMDYuLjM0NGNlNjg4MmZjOTA5ODRiMmZhNTdiZjljNDhiOTY1MGUwZmY3NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAKIAog
bmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBJbXBvcnRhbmNl
QXNzZXJ0aW9uOwogZW51bSBjbGFzcyBNZXNzYWdlRmxhZ3MgOiB1aW50OF90OwogZW51bSBjbGFz
cyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdDsKQEAgLTc4
LDggKzc3LDkgQEAgcHVibGljOgogCiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7
CiAKLSAgICAvLyBUaGUgZGF0YSBpbiB0aGUgZGF0YSByZWZlcmVuY2UgaGVyZSB3aWxsIG9ubHkg
YmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNvZGVyIG9iamVjdC4K
LSAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJh
eShEYXRhUmVmZXJlbmNlJik7CisgICAgLy8gVGhlIGRhdGEgaW4gdGhlIHJldHVybmVkIHBvaW50
ZXIgaGVyZSB3aWxsIG9ubHkgYmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQXJndW1l
bnREZWNvZGVyIG9iamVjdC4KKyAgICAvLyBSZXR1cm5zIG51bGxwdHIgb24gZmFpbHVyZS4KKyAg
ICBXQVJOX1VOVVNFRF9SRVRVUk4gY29uc3QgdWludDhfdCogZGVjb2RlRml4ZWRMZW5ndGhSZWZl
cmVuY2Uoc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoVCYgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCmluZGV4IGZkNDA5MDc3NGIyYmMyYTc2Mjli
OWMwMmRjNTU0YzRjZGM5OGY1Y2IuLmU4M2EzZTRhZmY0MmE1NzU1MDVkYzhmMDczMTdhMWMxYWMx
OWRlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMTQxLDcgKzE0
Miw3IEBAIHZvaWQgRW5jb2Rlcjo6d3JhcEZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+IG9yaWdpbmFsKQogCiAgICAgb3JpZ2luYWwtPnNldFNob3VsZERpc3BhdGNoTWVzc2FnZVdo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHk6Olllcyk7CiAKLSAgICBlbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJl
bmNlKG9yaWdpbmFsLT5idWZmZXIoKSwgb3JpZ2luYWwtPmJ1ZmZlclNpemUoKSkpOworICAgICp0
aGlzIDw8IERhdGFSZWZlcmVuY2Uob3JpZ2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVy
U2l6ZSgpKTsKIAogICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cyA9IG9yaWdpbmFs
LT5yZWxlYXNlQXR0YWNobWVudHMoKTsKICAgICByZXNlcnZlKGF0dGFjaG1lbnRzLnNpemUoKSk7
CkBAIC0yMTYsMTIgKzIxNyw2IEBAIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpCiAgICAgbWVtY3B5
KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKLXsKLSAg
ICBlbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKSk7Ci0g
ICAgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJl
bmNlLnNpemUoKSwgMSk7Ci19Ci0KIHZvaWQgRW5jb2Rlcjo6YWRkQXR0YWNobWVudChBdHRhY2ht
ZW50JiYgYXR0YWNobWVudCkKIHsKICAgICBtX2F0dGFjaG1lbnRzLmFwcGVuZChXVEZNb3ZlKGF0
dGFjaG1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAppbmRleCAwZWNmNTQx
Zjc3ODU4NTM2ZjFmY2ZhODM2Yjc2ZjI0ODJlNGM5YTExLi5lYTYxOTY3YmUxZWJjYmQ4YjZmYmJh
YThiODVhZjQxOGU4ZDUwY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9FbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBA
IC0zNiw3ICszNiw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogZW51bSBjbGFzcyBNZXNzYWdlRmxhZ3MgOiB1aW50OF90OwogZW51bSBjbGFzcyBNZXNzYWdl
TmFtZSA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9y
U3luY1JlcGx5IDogdWludDhfdDsKQEAgLTYyLDcgKzYxLDYgQEAgcHVibGljOgogICAgIHZvaWQg
d3JhcEZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+KTsKIAogICAgIHZvaWQgZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFs
aWdubWVudCk7Ci0gICAgdm9pZCBlbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjb25zdCBE
YXRhUmVmZXJlbmNlJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9p
Zl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92
ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWU+
KiA9IG51bGxwdHI+CiAgICAgdm9pZCBlbmNvZGUoVCYmIHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXggN2ZkMTgzYTU2YWU5OGIwNjY0NWZmNzUxNDhh
YzI5ODNjNTJlNGFlYi4uNDEyOWQ0ZTJiNDlkNWM4ZmM0MWEyZDY1NGFkY2Q4OWU4NmM2MzdmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTk2LDcgKzk3LDYgQEAgc3Ry
dWN0IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJl
bW92ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBj
bGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kaW5n
VHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewogICAgIHVzaW5nIFR5cGUg
PSBEYXRhUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oCmluZGV4IDQ2ZTIxZDhkOTM2ZjJkOGI1MTY3YjI0OWY4ODExMTZmZmViN2Q0YjkuLjc3NDYx
ZDU1NWI3MjkyYzIwZWJmNTE0YTMwMmQxZGM2ZTc3NzAxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTU0LDkgKzU0LDEwIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiBzZW5kPFU+KG1lc3NhZ2UsIGRlc3RpbmF0aW9uSUQudG9VSW50
NjQoKSwgc2VuZE9wdGlvbnMpOwogICAgIH0KKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IENv
bm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBT
ZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0
ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3lu
Y09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywg
Ik1lc3NhZ2UgaXMgbm90IHN5bmMhIik7CiAKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5j
T3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNl
dDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkpOwogCkBAIC03Miw3ICs3Myw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBUPgotICAg
IGJvb2wgc2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIE9i
amVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25k
czo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMg
PSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFU6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5
bmM8VT4oc3RkOjpmb3J3YXJkPFU+KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggN2Ez
Y2IzMzg3NjM2ZGNhZmNlYWNlYWQ5MWI4NjM5YjdiYTc2MzZjNi4uNTAwZjgzOWRmYWFlOTI5N2Y0
ZGM2M2RjNjYzMDU4NzdiMjJkZjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAKKyNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpAQCAtNDgsNyArNDksNyBAQCB2b2lkIFNoYXJlZEJ1
ZmZlckNvcHk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogT3B0aW9uYWw8U2hhcmVk
QnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZVZh
cmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGEpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKaW5kZXggMmY3
Mjg1YWMwYjRiZDZkZTExZGZlYjlmZTMyOGYwMWM5OTk5NTBhMC4uZTk2ZGZiMWZiZjg5MWNkNGEw
Yzc3NGU4NWM5MDc4NzU4YTZmZTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkVuY29kZXIu
aCIKIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
aW5nUmVmZXJlbmNlLmNwcAppbmRleCA4NTJlZjQzZTAwODYzMWM5ZmFmYTgyMzBjOTE5YzE3YTlk
NGEyOWI2Li4yMTYxMTM5YzMwMTRmMGVhZmIzZGM0N2M4NWRhNDE5MGEyYmEwNjY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2Uu
aCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3Bw
CmluZGV4IDhiMzc0MGY0YjEwMWFkOTBmNTBlZDU3Yzg1MGI5MDMwZmNjNDMwYzIuLjRiMjBjODVh
YzUzNjIzNjQwM2E4M2VhOTczY2RjY2QxMGZkZjcyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC0yOCw3ICsy
OCw2IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOUE9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiTlBS
ZW1vdGVPYmplY3RNYXAuaCIKICNpbmNsdWRlICJOUFJ1bnRpbWVVdGlsaXRpZXMuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApp
bmRleCBhZDRmY2Q5ZDhjY2Y0MmYxMmVlNDg4ZTAxMzQ2YzYxOWE3MDFiOGQyLi5jN2E3MDUzY2Jk
MjZkMjA0NTRjMDQyYzZhY2UxNmNiNTI1MzBmNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
QEAgLTM3LDEwICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci0gICAgY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIExheWVySG9zdGluZ0NvbnRl
eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA1NzNlZDNk
OGVlOWJiZjQxMDMxNjhlNzlhMDU3ZjlkYmRiOWI4Njk1Li42NzMyNDRhNjdlMDk5ZmZiNzE4MDdk
NTU1MGM0NTRmMzYzMWRiMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTIwMyw2ICsyMDMsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfZm9yX25h
bWVzcGFjZShuYW1lc3BhY2UsIGtpbmRfYW5kX3R5cGVzKToKIAogZGVmIHR5cGVzX3RoYXRfY2Fu
bm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsKKyAgICAg
ICAgJ0lQQzo6RGF0YVJlZmVyZW5jZScsCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAg
ICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcnLApAQCAtMjE0LDYgKzIxNSw3IEBAIGRl
ZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJD
b3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywKKyAgICAg
ICAgJ1dlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcycsCiAgICAgICAgICdXZWJD
b3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVk
aWFQbGF5ZXJJZGVudGlmaWVyJywKQEAgLTI0Myw2ICsyNDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9j
YW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkRvd25sb2FkSUQnLAogICAg
ICAgICAnV2ViS2l0OjpHZW9sb2NhdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUnLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQn
LAogICAgICAgICAnV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEJywKQEAgLTUzMCw2ICs1
MzMsNyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAg
ICAgICAnT3B0aW9uU2V0JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJn
dW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAn
VmVjdG9yJzogeydoZWFkZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzog
eydoZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJB
cmd1bWVudENvZGVycy5oIiddfSwKKyAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hl
YWRlcnMnOiBbJyJBcnJheVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6
IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgIH0KIAogICAgIG1hdGNoID0gcmUubWF0Y2go
Jyg/UDx0ZW1wbGF0ZV9uYW1lPi4rPyk8KD9QPHBhcmFtZXRlcl9zdHJpbmc+LispPicsIHRlbXBs
YXRlX3N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCA2MTM0M2Jk
OTQxMDZiNmU3ODlmODNiYzI1ZGU3OWY3YTYwNDA5M2NjLi5jNzgyMzE2ZjMwNTdhM2NhZjlkM2Uy
MDc3YzgxMzI1NTNlNjk3NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5o
IgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiRW5jb2Rlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmgKaW5kZXggN2JhMjA3YWJiMGFjY2M4YTU3MGY1YzY2M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdk
MDNmYWZlMDM5NTg3OTUyYTYzNzhkMWE5YzhmZjJmNzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtODQsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzRGFlbW9uKCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2
aWNlc0NoZWNrSW4oKTsKICAgICB2b2lkIHNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91
Z2hwdXRRT1MpOwogI2VuZGlmCkBAIC0xODQsNCArMTgzLDMgQEAgc3RydWN0IEF1eGlsaWFyeVBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIuLmRhMzczNGM4
NGQ2NTRkOGQwM2NhNzkyNWY3YmQ3NTk5MTNiYzM0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzIyMSw0ICszMjIxLDgyIEBAIE9w
dGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZURhdGE+Pjo6CiAgICAgcmV0dXJuIHsgV1RGTW92ZSgqcmVzdWx0KSB9Owog
fQogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcykKK3sKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYWxwaGE7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRlcHRoOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5z
dGVuY2lsOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbnRpYWxpYXM7CisgICAgZW5jb2Rl
ciA8PCBhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJp
YnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5m
YWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5w
b3dlclByZWZlcmVuY2U7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2Vz
OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5pc1dlYkdMMjsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMubm9FeHRlbnNpb25zOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXZpY2VQ
aXhlbFJhdGlvOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5pbml0aWFsUG93ZXJQcmVmZXJl
bmNlOworI2lmIEVOQUJMRShXRUJYUikKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMueHJDb21w
YXRpYmxlOworI2VuZGlmCit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0
ZXMuYWxwaGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXR0cmlidXRlcy5kZXB0aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnN0ZW5jaWwpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5h
bnRpYWxpYXMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wcmVzZXJ2
ZURyYXdpbmdCdWZmZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0KSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5pc1dlYkdMMikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9ucykpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRldmljZVBp
eGVsUmF0aW8pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXR0cmlidXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNlKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisjZW5kaWYKKyAgICByZXR1cm4gYXR0cmlidXRlczsKK30KKwordm9pZCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZv
JiBhY3RpdmVJbmZvKQoreworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5uYW1lOworICAgIGVu
Y29kZXIgPDwgYWN0aXZlSW5mby50eXBlOworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5zaXpl
OworfQorCitPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvIGFjdGl2ZUluZm87CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJ
bmZvLm5hbWUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYWN0aXZlSW5mby50eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8uc2l6ZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGFjdGl2ZUluZm87Cit9CisKKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggNGE5MzIxNTkxMzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVkNi4u
MWRhZTk2OTVmMzNjMDlkY2Q3YzU4MDM2MDhlMmQ2YWMxNmU5ZmM2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTcxLDYgKzcxLDEzIEBACiAj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnNHdGsuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
VHlwZXNHTC5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYg
ewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTIwMyw2ICsyMTAsMTAgQEAgc3RydWN0IFNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YTsKIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50PFN0cmluZywg
VmVjdG9yPFN0cmluZz4+OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM7CisjZW5kaWYK
KwogbmFtZXNwYWNlIERPTUNhY2hlRW5naW5lIHsKIHN0cnVjdCBDYWNoZUluZm87CiBzdHJ1Y3Qg
UmVjb3JkOwpAQCAtODczLDYgKzg4NCwxOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IHsKIH07CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImKTsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJik7CisgICAgc3RhdGljIE9w
dGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC0xMDQxLDQgKzEwNjUsMTYgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM+IHsKIAogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwordGVtcGxhdGUgPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTFBvd2VyUHJlZmVyZW5jZSwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6RGVmYXVsdCwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6TG93UG93ZXIsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dl
clByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZQorICAgID47Cit9OworI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCBjZjEzMWE5MjFlMDg2MzY1ZGJmNzdmYTk4ZTQxYzFjNzRh
M2U3ZTI1Li5hZGQ5NDliYTUwOGQ4ZTgxNDA4N2ZlZGU3YjA0OGEzZGVjNmNmODVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtMTU4LDYgKzE1OCw5IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzczsKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckRPTUluR1BV
UHJvY2VzczsKICAgICBlbmNvZGVyIDw8IHNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzczsKKyNp
ZiBFTkFCTEUoV0VCR0wpCisgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJv
Y2VzczsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5RGVjb2RlcjsKICAg
ICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcjsKICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCkBAIC01MTAsNiArNTEzLDEwIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5H
UFVQcm9jZXNzKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdM
SW5HUFVQcm9jZXNzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGQ5MWU0NjAzOGYzMDliNTEzMGJm
ZGU1OGRmZjRhOWYxODE5NTFkZmQuLmMyMDYxMjMxMTQzNWJmNGY5MmNmMDZmZTVlMTEyMDVhNGI1
MTEyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKQEAgLTIyOSw2ICsyMjksOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgYm9vbCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9
OwogICAgIGJvb2wgc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBi
b29sIHNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIGJvb2wgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9Owor
I2VuZGlmCiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBi
b29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEFQUF9C
T1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NG
LmNwcAppbmRleCA5YmQ4YTgxNzU0OWY1OGZlMzgzZDcyNWRhNjYzZjNiYzU0Y2EwZDc0Li43N2U5
YjRkNWNjNzUyZmJjZGI2YjY1ZjlhZGMyNjAxOTU2Y2ExNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCAxZDg0
ZTJmZTI2OGYzNDYwZWIyOTc1YzQyYmE5NWQxNGYxZDIzNWNmLi5mYTI2OGQ1ODRhMGZjOGRmODdh
MjFmYTQ1NjA3N2I4YzVkNDJiODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9z
b3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUkKICAgICAvLyBFbmNvZGUgc3RhcnRpbmcgZnJvbSB0aGUg
cm9vdCBjZXJ0aWZpY2F0ZS4KICAgICBmb3IgKHNpemVfdCBpID0gY2VydGlmaWNhdGVzRGF0YUxp
c3Quc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAgICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRl
ID0gY2VydGlmaWNhdGVzRGF0YUxpc3RbaSAtIDFdLmdldCgpOwotICAgICAgICBlbmNvZGVyLmVu
Y29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KElQQzo6RGF0YVJlZmVyZW5jZShjZXJ0aWZpY2F0
ZS0+ZGF0YSwgY2VydGlmaWNhdGUtPmxlbikpOworICAgICAgICBlbmNvZGVyIDw8IElQQzo6RGF0
YVJlZmVyZW5jZShjZXJ0aWZpY2F0ZS0+ZGF0YSwgY2VydGlmaWNhdGUtPmxlbik7CiAgICAgfQog
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY2VydGlmaWNhdGVJbmZvLnRs
c0Vycm9ycygpKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2VydGlm
aWNhdGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENlcnRpZmljYXRlSW5mbyYgYwog
ICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZTsKICAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgY2hhaW5MZW5ndGg7IGkrKykgewogICAgICAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlKSkKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2UpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRl
RGF0YSA9IGdfYnl0ZV9hcnJheV9zaXplZF9uZXcoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlLnNp
emUoKSk7CkBAIC0yNzcsNCArMjc3LDMgQEAgT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3UKICNlbmRp
ZgogCiB9Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDA5MTdmMDFiZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1
YTNmMmVmODYuLjUwY2RlMTJhZmEzYWE3Zjc4YzI3OWVjOGZiODE5NzQ0YjZmYjFlYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtMjYsNiArMjYsNyBAQCBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiBH
UFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5j
cHAKQEAgLTEzNyw3ICsxMzgsNiBAQCBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIEBuby11bmlm
eQogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQ
Qy9BdHRhY2htZW50LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBA
bm8tdW5pZnkKLVBsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIFBsYXRm
b3JtL0lQQy9EZWNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBA
bm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwIEBuby11bmlmeQpAQCAtNjkz
LDMgKzY5Myw1IEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1l
c3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5OTUxODA3MzI4MGU5
Yzk1YTJiMjVmMDBiYzhiZmIzODg3NjIxMjQxLi4xM2ZhNzE1ZTc5NmZjODU5MjMxNGIzZmU3ZjBk
NGVhOWFlZDg5ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02Myw2ICs2Myw3IEBAIEdQ
VVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCiBHUFVQ
cm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKIEdQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCiAKKwogUGxhdGZvcm0vY2YvTW9k
dWxlQ0YuY3BwCiAKIFBsYXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKQEAgLTU3Myw2ICs1NzQsOCBAQCBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1Nl
cnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKK1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCitX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlQ29jb2EubW0KQEAgLTY4NSw2ICs2ODgsNyBAQCBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VSZWNlaXZlci5jcHAKIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKaW5kZXggMmZlMzg2MjU5NDYzYmZiMzYyM2Vi
YmRiNGZlZjVmODM5MzZiMGQzZC4uNzM3YjYyNTgxOTg2NmEwZWNiNTk5YTIxMzBiMzI5MTNlYWYz
OTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2Fk
aW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2Fk
aW5nQ2xpZW50LmgKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEljb25M
b2FkaW5nQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmgKaW5kZXggNGYzOThiNTMwZjYwODU3NWM5NjdiODNjNzRmYTJmNDMyOGY2Y2Uz
Yi4uOGNhOTdlNmU1OTdiZDcxMTBhMGQ3MzhlMGM0YTdjODU2MDNhOGE3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKQEAgLTUzLDcgKzUz
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkg
PSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0
aW9ucyA9IHsgfSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zID0geyB9KTsKKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IElQQzo6Q29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNS
ZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAKICAgICBlbnVtIGNsYXNzIFNo
b3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IDogYm9vbCB7IE5vLCBZZXMgfTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBs
eShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxJUEM6OlNl
bmRPcHRpb24+ID0geyB9LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNo
b3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMpOwpAQCAtNjUsNyArNjYsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiBy
ZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7
IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNP
cHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVv
dXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpAQCAtMTYzLDEyICsxNjQsMTIgQEAgYm9vbCBB
dXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE9wdGlvblNldDwKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVT4gCi1ib29sIEF1eGls
aWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5
JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9u
U2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK0F1eGlsaWFyeVByb2Nl
c3NQcm94eTo6U2VuZFN5bmNSZXN1bHQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhV
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zKQogewogICAgIENPTVBJTEVfQVNTRVJUKFU6OmlzU3luYywgU3luY01lc3Nh
Z2VFeHBlY3RlZCk7CiAKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVHJhY2VTY29wZSBzY29wZShTeW5jTWVz
c2FnZVN0YXJ0LCBTeW5jTWVzc2FnZUVuZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9T
dWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaAppbmRleCA4MjNjMjAyYTg1NmEwMTM2ZGQ5
ZWE3NTlmMGVjZGViYTQ3ZjRmMzYyLi5iNTc3Y2JkZjhlMDc4ZjRmYjRmODczNGQ3YmZkNjA4ZDIw
Mzg4MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhv
cml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oCkBAIC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN1
YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBOYXZpZ2F0aW9uU09B
dXRob3JpemF0aW9uU2Vzc2lvbiwgcHVibGljIEZyYW1lTG9hZFN0YXRlOjpPYnNlcnZlciB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkuaAppbmRleCBmZjk4Yjg0ZmE4OWRiZWZkZDY0NjY2YmJiYTQyZmM5MGNlYzM1NzdmLi4x
MjhhMzk3N2U2M2VlNGY0ZWYxZjIwZWFhZWM4NmQwOGVjYmY1OGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0zNSwxMCArMzYsNiBA
QAogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sTG9hZGVyOwogI2VuZGlmCiAKLW5hbWVzcGFj
ZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNGM3MTg3NGExMGRhOWI1NDFmZWUyODIwODA4YzFl
NTBkM2ZhOTJiLi45ZGIzYTUwOWI5MTRjMDkzY2FmMTY5YTA1ZDY1YjU3ZWQwYzgwMTNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxheWVyVHJl
ZUNvbnRleHQuaCIKICNpbmNsdWRlICJQREZQbHVnaW5JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKQEAgLTgwLDEwICs4MSw2IEBAIGNsYXNzIE9w
ZW5QYW5lbFBhcmFtZXRlcnM7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIH0KIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmNwcAppbmRleCAyNGI2MzNlNDg0ZDJhMzViYTc0ZDQ1ZjEyZWRlMzRhMGY3OGNhMGE2
Li4yNDhlNTNhMDgzZDE5YTBlZjRkODNjMjNiOGNjZTAwMzQ1ZGFhYjA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVk
ZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5o
IgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApp
bmRleCAxMjlhMzQwZjA4OTY0ZDBmZmEyM2EzNzEwMWEwOWE4NTZkM2NjY2IyLi5hNGQ4ZDdjZDgw
NGU2NTYwZGFiZmRlNjExNGZmMDYyMTFiYWQ0N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgogI2luY2x1ZGUgIkNvbnRlbnRXb3JsZFNoYXJlZC5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oIgpAQCAtNDgsMTAgKzQ5LDYgQEAgY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJTdHls
ZVNoZWV0OwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2ZWQxYzY5YzA4ZmM1NTlm
ZTJhM2YzYjkzOTUwZWE4MjhkNjBkNGJmLi5jZWM3M2QxM2QwOThkNzEzMTg0OGFmYjU5M2VmMDcy
NDEwMjE4ZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTU4LDcgKzU4LDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIu
aCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50
aWNhdG9yTWFuYWdlci5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTc5MjcsNiArNzkyNiwxMCBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nl
c3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9j
ZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxl
ZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzID0gcHJlZmVy
ZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFt
ZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQ
cm9jZXNzRm9yTWVkaWFFbmFibGVkKCk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHBhcmFtZXRl
cnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVBy
b2Nlc3NGb3JXZWJHTEVuYWJsZWQoKTsKKyNlbmRpZgorCiAgICAgcGFyYW1ldGVycy5zaG91bGRF
bmFibGVWUDlEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lm
IEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5h
YmxlVlA5U1dEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpICYmICgh
V2ViQ29yZTo6c3lzdGVtSGFzQmF0dGVyeSgpIHx8IHByZWZlcmVuY2VzKCkudnA5U1dEZWNvZGVy
RW5hYmxlZE9uQmF0dGVyeSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggNjQyNDQ2ZjllOWFhNGI1MjExMTQ5MDNiNmYwYjVmNzExZjkxYjJlNS4uNDM3YWI3NTBi
MzVhYjE2M2IyYTU4MGFlODY3MmVkNDYwMTY0NzQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgogI2luY2x1
ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyQWN0aW9u
LmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBAIC0yMDMsNyArMjA0LDYgQEAgZW51bSBj
bGFzcyBJbnNwZWN0b3JUYXJnZXRUeXBlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCBmNDI0NWNlNjVlOWQyZDU2NWIzZjEyNWYz
NDU3YTI1NmZiMzljOWQ0Li5kMjM4YzJhMWE2MDhkYzVhNDYzMmU2YTE5OTc3ZGI2MWJhYjYxMzMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCkBA
IC0zMSwxMCArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBkNDQyYjYyYjUyMjU4
N2Y5MGZhNjg5ZDU2YjIwNjI3NmRlYjQ0ODJiLi44MjVjZDAyNjg4YTI2ODIxOTQxZmY3YTQxOGY0
ZGY1YTk3NWJhMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCkBAIC0zOCwxMCArMzgsNiBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsK
IH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDM1MjhmNDcxZjQ2M2RmNmMxMTMwYTNmYjgzNzc2YmYxYjJhYmVmOTQuLjBiNzY5ZjAzNTRl
YjRmMDMyZDIyMDllYzc5YjhmZTIxOWVmZDg4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjk4LDcgKzY5OCw2IEBACiAJCTJEOTJB
NzdCMjEyQjZBNzEwMEY0OTNGRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUg
LyogQXJndW1lbnRDb2RlcnMuY3BwICovOyB9OwogCQkyRDkyQTc3QzIxMkI2QTcxMDBGNDkzRkQg
LyogQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi87IH07
CiAJCTJEOTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyREEyMTBGNDM3RDEwMDU4
QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAqLzsgfTsKLQkJMkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZE
IC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFDNzUzN0QxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3Bw
ICovOyB9OwogCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ5RDEwRjQzN0Qx
MDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi87IH07CiAJCTJEOTJBNzgwMjEyQjZBNzEwMEY0OTNG
RCAvKiBFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMDMyRDlGMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmNwcCAqLzsgfTsKIAkJ
MkQ5MkE3ODEyMTJCNkE3MTAwRjQ5M0ZEIC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNFRUQwQzE2MUE1MzUz
MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCAqLzsgfTsKQEAgLTEzMDMsNiArMTMw
Miw3IEBACiAJCTdBRkJEMzYzMjFFNTBGMzkwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRkJEMzYyMjFFNTBGMzkwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0Ig
LyogUGVyc2lzdGVuY3lVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMu
aCAqLzsgfTsKKwkJN0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1
NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhD
RDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1
RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9Owog
CQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJD
QTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyog
QVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCAqLzsgfTsK
QEAgLTI3MTksNyArMjcxOSw2IEBACiAJCTFBQzVGRkMxMTc0QkZEMUIwMDAxNDgzRCAvKiBQbHVn
aW5Qcm9jZXNzQXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlTG9hZFN0YXRlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUxvYWRTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyog
RGF0YVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
YXRhUmVmZXJlbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzUzN0Ux
ODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGF0YVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUM3NUExQTFCMzM2ODI3MDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NUExQzFCMzM2OTVFMDA1Njc0NUIgLyog
SGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDM2OSw2ICs0MzY4LDE2IEBACiAJCTdBRkJEMzY1MjFFNTFCQUIwMDVE
QkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7
IHBhdGggPSBDbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyog
UGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQ
ZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYy
NTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY2MjU0QUZE
RUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVB
NzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4
QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5
OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNH
ZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENE
OTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4
Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0Ew
MDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjY1MywxMSArNjY2MiwxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEw
MDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1
RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5
RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMg
LyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyog
QXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFj
aG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5j
cHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywK
LQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJ
CQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlC
QzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUx
MEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKQEAgLTgzMjcsMTEgKzgzMzYsMTYgQEAK
IAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEy
NTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlG
NDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywK
KwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAw
MDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3
MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJh
Y2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZE
RUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5
MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5
MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUw
NjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAg
Ki8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oICovLApAQCAtODM0OSw2ICs4MzYzLDEwIEBACiAJCQkJRjQwOTRDQkMyNTUzMDRB
RjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENC
QjI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCAqLywKIAkJCQk1
NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICov
LAorCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5jcHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAorCQkJCTdCOTA0MTZEMjU1MDEwOEMwMDZF
RUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oICovLAog
CQkJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovLAog
CQkJCTU1MDY0MEEyMjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cCAqLywKIAkJCQk1NTA2NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oICovLApAQCAtMTExNjUsNiArMTExODMsNyBAQAogCQkJCTFBRUZEMkY3MTFEMTgwN0Iw
MDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjBDNEEx
MkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1Jl
cXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2MzRGMjM0RjdDNjQwMEZGQTg2NCAvKiBB
c3luY1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAw
NkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTMyMzMsNyArMTMyNTIs
NiBAQAogCQkJCTJEOTJBNzg1MjEyQjZBQjEwMEY0OTNGRCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2
M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyog
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkz
RkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2
QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OURBQTM4QzI0
Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRM
aW5rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZjkyZGE2YTQ3Zjdl
MjRmMzgzOTlhYTM2OThhMjEyOTBkMzYxZDRhNi4uYzlkYzY4MmI4NzU0OWI4MjUwZGIyMmIyYTFj
ZTIxNTU1MDAwY2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzYsMTAgKzM2LDYgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBQYXltZW50Q29udGFj
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAppbmRleCAyYzBkZjViOWY1NDk2ODQ3ZWQ2NjkxMGJmMmYzOWIyY2RjNjBjYTAyLi41
YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5OTg4NzRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zNSwx
MCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7
Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUyMTJjNjEyNjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGEwNmZiMDA3
NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKK30KKworUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3Nh
Z2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFw
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50
b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdl
UmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wo
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVCdWZmZXIoKTsKKyNlbmRpZgorfQorCitJ
UEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit1aW50
NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0
aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFj
aFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxh
eUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
V1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7Cisg
ICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBD
aGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CisgICAgICAgIHNjLnByZXNlbnQo
eyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOworICAgIH0KKyNlbHNlCisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlz
cGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNw
bGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisjZW5k
aWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFy
a0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11
bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IG5vdCBpbXBs
ZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgdGhlIHJpZ2h0IHdheS4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM0OQorICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3Ry
aW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKSB7
CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVkIG91dCBiZWZvcmUsIHNvIGxvc2UgdGhl
IGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25z
KTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29w
eVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9yY2VDb250ZXh0TG9zdCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQoKQor
eworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAg
ICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkK
K3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47CisgICAgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChjb25uZWN0aW9u
LT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VB
cnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91dCwgc28gcmVwb3J0IGlu
aXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2UgdGhlIGNvbnRleHQuCisg
ICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNv
bnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNh
bGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM5YmM5YWY3YjQwODFl
ZTQzMjJlZDEzNzAzMGNlN2EwNzM3MjUzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
CkBAIC0wLDAgKzEsNDEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRl
eHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlvbgorLy8gY29udmVydHMgdGhlIGludGVy
ZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdlcyBhbmQgc2VuZHMgdGhlIG1lc3NhZ2Vz
IHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vzcy4KKy8vIFRoZSBp
bXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVibGljIFdlYkNvcmU6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgp
IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIHZvaWQgcmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRp
c3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5h
bDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdl
QnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gcGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsKKworICAgIC8vIEZ1bmN0aW9ucyB3aXRo
IGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0
ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2so
KSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5h
bDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOworICAg
IHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5hbDsKKyAgICB2b2lkIGF0
dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZv
aWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmlu
YWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kVGV4dHVy
ZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9p
ZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBm
IGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRFcXVhdGlvbihH
Q0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dM
ZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRG
dW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpIGZpbmFsOworICAgIHZvaWQg
YmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xl
bnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkgZmluYWw7CisgICAgR0NHTGVudW0gY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIHZvaWQgY2xl
YXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAgIHZvaWQgY2xlYXJDb2xvcihHQ0dMY2xh
bXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFs
cGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkgZmluYWw7
CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBzKSBmaW5hbDsKKyAgICB2b2lkIGNvbG9y
TWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVl
LCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5h
bDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJl
bmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2hhZGVyKEdD
R0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVGV4dHVyZSgp
IGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRl
bGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBk
ZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxl
dGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRl
bGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRl
VGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVwdGhGdW5j
KEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQgZGVwdGhNYXNrKEdDR0xib29sZWFuIGZs
YWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xh
bXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGUoR0NH
TGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dM
dWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVu
dHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsK
KyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsK
KyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2
b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7CisgICAgdm9pZCBmcm9udEZhY2UoR0NHTGVu
dW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQp
IGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAgIGJvb2wgZ2V0
QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSBmaW5hbDsKKyAgICB2
b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkg
ZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NHTGludCBnZXRQcm9ncmFtaShQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEJv
b2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFs
OworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNo
bWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xv
ZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAg
ICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBz
aGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiBy
YW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU291
cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFRleFBh
cmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NH
TGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZp
bmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9p
ZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
THVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgR0NHTHNp
emVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUp
IGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVkKEdDR0xlbnVtIGNhcCkgZmluYWw7Cisg
ICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkgZmluYWw7CisgICAgdm9p
ZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgcGl4
ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQg
cG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpIGZpbmFsOwor
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwor
ICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52
ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBzaGFkZXJTb3Vy
Y2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBm
aW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVu
dW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3Rl
bmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFy
YXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNp
bE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7
CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWls
LCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZvaWQgdGV4UGFy
YW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgs
IEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0y
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4
LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dM
ZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkg
ZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmlu
YWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJm
KEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOworICAgIHZv
aWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQg
dykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwg
R0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKSBmaW5h
bDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQg
dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJy
YXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdD
R0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3Jp
dGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwg
R0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFs
OworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOworICAgIHZvaWQgaW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmluYWw7CisgICAgdm9pZCBy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkgZmluYWw7
CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQg
dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZp
bmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBH
Q0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0
YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
Ykk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdD
R0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJh
d0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQg
Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2
KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVz
KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBmaW5hbDsKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVR
dWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1F1
ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQgYmVnaW5RdWVyeShH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQg
ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGdl
dFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1
aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOwor
ICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFs
OworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBh
cmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOworICAgIEdDR0xib29sZWFu
IGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVN5bmMoR0NHTHN5
bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJn
MCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIHZv
aWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQg
dGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZv
cm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFj
ayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVk
YmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIHZv
aWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKSBmaW5hbDsK
KyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCB0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKSBmaW5hbDsKKyAgICB2b2lk
IGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlVHJh
bnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNr
KCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1
aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikgZmluYWw7CisgICAgdm9pZCBiaW5k
QnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9i
amVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIpIGZpbmFsOworICAg
IFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBmaW5hbDsKKyAgICBWZWN0
b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
b25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZp
bmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsKKyAgICBTdHJp
bmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1CbG9ja0Jp
bmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CisgICAgdm9pZCBnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7Cisg
ICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7CisgICAgdm9pZCBi
bGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50
IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dM
aW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmls
dGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0
ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJv
b2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5n
JiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcm
IGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSBmaW5hbDsKKyAgICB2
b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsK
KyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAg
IHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmlt
Y291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFsZm9y
bWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMs
IEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAg
IHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRl
eCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0
YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmluYWw7CisgICAgdm9pZCBnZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWlu
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICAvLyBFbmQgb2YgbGlzdCB1c2Vk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCitwcm90ZWN0ZWQ6CisgICAgLy8gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIHZvaWQgd2FpdFVu
dGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlcyB0byBi
ZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YXNMb3N0KCk7
CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGJv
b2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBm
b2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGVudW0s
IHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9m
KGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50
MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7
CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1Ynl0ZSwgdWludDhfdD4pOworc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hvcnQsIGludDE2X3Q+KTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92
PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGhh
bGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGNs
YW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHZvaWQsIHZv
aWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8UGxhdGZvcm1HTE9iamVjdCwgdWlu
dDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xjaGFyKSA9PSBzaXplb2YodWludDhf
dCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludDY0KSA9PSBzaXplb2YoaW50NjRfdCkp
Oworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2NCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7
CisvLyBHQ0dMc3luYyBhbmQgR0NHTCpwdHIgdHlwZXMgYXJlIHBvaW50ZXJwb2ludGVycy4gT24g
c29tZSBwbGF0Zm9ybXMsIHRoZXkgYXJlIDMyLWJpdC4KKy8vIEN1cnJlbnRseSB3ZSBoYXJkLWNv
ZGUgaXQgYnkgdXNpbmcgPD0sIGFuZCBhc3N1bWUgdGhhdCB3ZSBkbyBub3QgdHJhbnNmZXIgYXJy
YXlzIG9mIHRoZSB0eXBlcy4KK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnRwdHIpIDw9IHNp
emVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHNpemVpcHRyKSA8PSBz
aXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x2b2lkcHRyKSA8PSBz
aXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xzeW5jKSA8PSBzaXpl
b2YodWludDY0X3QpICYmIHNpemVvZihHQ0dMc3luYykgPT0gc2l6ZW9mKGludHB0cl90KSk7Cisv
LyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyYjMyYjJiYzEwMTBl
ZjhlY2QwYWY1Nzc3YWJkNGZhMDhhM2M5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
bWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsK
KyAgICB2b2lkIFdhc0NyZWF0ZWQoU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCisgICAgdm9pZCBXYXNMb3N0KCkKKyAgICB2b2lkIFdhc0No
YW5nZWQoKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MTRhNDQzMTU2MjExY2M3MTg1MTM3MzM4Y2FjYzdjZTUwMzU3OTVjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMCwwICsxLDE2NDcgQEAKKy8q
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wu
IERvIG5vdCBlZGl0LgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNr
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6ZUdM
RXJyb3IoZXJyb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJl
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVU
ZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFk
ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAs
IGluZGV4LCBuYW1lKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEZyYW1l
YnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKEdD
R0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3Jt
R0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kQ29s
b3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NH
TGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24obW9kZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFs
cGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVu
ZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJs
ZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3RvciwgZGZh
Y3RvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0Is
IEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmNT
ZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJD
b2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBH
Q0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhclN0ZW5jaWwoR0NHTGludCBzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb2xvck1h
c2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwg
R0NHTGJvb2xlYW4gYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvbG9yTWFzayhzdGF0aWNfY2FzdDxib29sPihyZWQpLCBzdGF0aWNfY2FzdDxi
b29sPihncmVlbiksIHN0YXRpY19jYXN0PGJvb2w+KGJsdWUpLCBzdGF0aWNfY2FzdDxib29sPihh
bHBoYSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBp
bGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29w
eVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdM
T2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCit7Cisg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVGcmFtZWJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFtZWJ1
ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVm
ZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQ
bGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXIo
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXI6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVUZXh0dXJlKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmUo
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUZyYW1lYnVmZmVyKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVByb2dy
YW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVU
ZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1h
c2soR0NHTGJvb2xlYW4gZmxhZykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJvb2w+KGZsYWcpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aFJhbmdlKHpO
ZWFyLCB6RmFyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
cmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUoR0NHTGVudW0gY2FwKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2Fw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2goKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGaW5pc2goKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmZsdXNoKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Rmx1c2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVm
ZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwg
YXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
R0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVm
ZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5p
Zm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZv
JiBhcmcyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0s
IGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlm
b3JtOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVj
dCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0
cmluZyhHQ0dMZW51bSBuYW1lKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZyhu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
Cit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1j
cHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2Yo
ZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7Cisg
ICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEludGVnZXJ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1j
cHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2Yo
aW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDY0X3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0
dXJuVmFsdWUpOworfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCit7CisgICAgaW50
NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWkocHJv
Z3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dy
YW1pOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xi
b29sZWFuPiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVlUmVw
bHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnY6OlJlcGx5KHZhbHVlUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1
bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUu
YnVmU2l6ZSAqIHNpemVvZihib29sKSk7CisgICAgCit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3I6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0
LCBhdHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dD
R0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0gcG5h
bWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmkoYXJnMCwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dM
U3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQoreworICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4gcmFuZ2VSZXBseTsKKyAgICBpbnQzMl90IHByZWNp
c2lvblJlcGx5ID0geyB9OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRl
clR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9uUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRS
ZXN1bHQpIHsKKyAgICAgICAgbWVtY3B5KHJhbmdlLmRhdGEsIHJhbmdlUmVwbHkuZGF0YSgpLCBy
YW5nZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgaWYgKHByZWNpc2lvbikK
KyAgICAgICAgICAgICpwcmVjaXNpb24gPSBwcmVjaXNpb25SZXBseTsKKyAgICB9Cit9CisKK1N0
cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJj
ZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3Vy
Y2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGZsb2F0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmYodGFy
Z2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFy
YW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVy
aSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRU
ZXhQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAg
ICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisg
ICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6
ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9ncmFt
LCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHko
dmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoaW50
MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5k
YXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50MzJfdCkp
OworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc2l6ZWlwdHIgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJp
Yk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXpl
aXB0cj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50KHRhcmdldCwgbW9kZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc0J1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
RW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5hYmxl
ZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9
CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1l
YnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVi
dWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUp
OworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dy
YW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dy
YW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFtOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwor
R0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1
ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1
ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXIo
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXI6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dM
Ym9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RleHR1cmUoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlua1Byb2dyYW0oYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBw
YXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGl4
ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQoR0NH
TGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0
b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZUNv
dmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJj
ZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgYXJnMSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2hhZGVyU291cmNlKGFyZzAsIGFy
ZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGludCBy
ZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
dGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQg
cmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFzayhtYXNrKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFz
aykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNp
bE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcChHQ0dM
ZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwg
enBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwg
R0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBhcmF0ZShm
YWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmYodGFy
Z2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5h
bWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
di5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGludCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtMWkobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWl2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
aW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJm
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB4
LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBH
Q0dMaW50IHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaXYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90
Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0
aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTNpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xpbnQgeiwgR0NHTGludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtNGl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0
YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgz
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwg
dmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSks
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
Pih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3Jh
bShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVzZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0
ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWYWxpZGF0ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmKGlu
ZGV4LCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdCwgMT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZh
bHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmKGluZGV4
LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdCwgMj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZh
bHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWIzZihpbmRleCwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIz
ZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9h
dCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmdihpbmRleCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRh
KSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIo
R0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4g
bm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYlBvaW50
ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PGJvb2w+KG5vcm1hbGl6ZWQpLCBzdHJp
ZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZpZXdw
b3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZpZXdw
b3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAodGFyZ2V0
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1
ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwg
R0NHTGVudW0gdXNhZ2UpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
LCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJTdWJEYXRhKHRh
cmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFSZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3Vs
dCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZT
aXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEp
LCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRl
eEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZz
ZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNl
dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0
YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3Rh
bmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHBy
aW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KCkKK3sKKyAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJh
eShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheShhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdD
R0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3Jp
dGVPZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRh
cmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1
bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVm
U2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3Jj
WTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQg
ZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBH
Q0dMZW51bSBmaWx0ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAs
IGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFt
ZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQs
IFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZm
ZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSwgeCwgeSwgd2lk
dGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZEJ1ZmZlcihz
cmMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0
YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3Jh
Z2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVs
cywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhl
bHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDEodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1h
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QwKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBm
b3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0
LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTNEKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0Qw
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1
YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0Qw
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xp
bnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0xdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWkobG9j
YXRpb24sIHYwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQg
djEsIEdDR0x1aW50IHYyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBH
Q0dMdWludCB2MiwgR0NHTHVpbnQgdjMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aXYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHN0
YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4
MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3Nl
KSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0
PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0
aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1N
YXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKEdD
R0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
Ykk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwg
R0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwg
eiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSVBvaW50ZXIoaW5k
ZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQg
c3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJz
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVm
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVy
aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGlu
dCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcnVpdihidWZm
ZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3
YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmdihidWZmZXIsIGRy
YXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dM
ZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRl
cHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVF1ZXJ5KCkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeShQ
bGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1F1ZXJ5KHF1ZXJ5KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KEdDR0xlbnVt
IHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFyZ2V0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
Cit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeSh0YXJnZXQsIHBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWk6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVy
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1w
bGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxl
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNhbXBsZXIoR0NHTHVp
bnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBw
YXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBs
ZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
R0NHTGZsb2F0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgZmxv
YXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1l
dGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NH
THN5bmMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNv
bmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkZlbmNlU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+
KHN0YXRpY19jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpOworfQorCitHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMoR0NHTHN5bmMgYXJnMCkKK3sKKyAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJl
dF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5W
YWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU3lu
YyhHQ0dMc3luYyBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0
PGludHB0cl90PihhcmcwKSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRTeW5jKEdD
R0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0
ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRf
dD4odGltZW91dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xp
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2koR0NHTHN5bmMgYXJnMCwg
R0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2Jq
ZWN0IGlkKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2so
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0
LCBpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHBy
aW1pdGl2ZU1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQoreworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dy
YW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zv
cm1GZWVkYmFja1Zhcnlpbmc6OlJlcGx5KGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1
c2VUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3Jt
R0xPYmplY3QgYnVmZmVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBs
YXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGFy
ZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRC
dWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK1ZlY3RvcjxHQ0dMdWludD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4g
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1ZlY3RvcjxHQ0dMaW50PiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkK
K3sKKyAgICBWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtcyhwcm9n
cmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9ja0lu
ZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tO
YW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
U3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9j
a05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHBy
b2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmlu
ZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZv
cm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQoreworICAg
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zUmVwbHk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBh
cmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdjo6UmVwbHkocGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweShw
YXJhbXMuZGF0YSwgcGFyYW1zUmVwbHkuZGF0YSgpLCBwYXJhbXMuYnVmU2l6ZSAqIHNpemVvZihp
bnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVm
ZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NH
TGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwg
R0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVy
QU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRz
dFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxh
dGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhB
cnJheU9FUygpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9F
UygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5
T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVW
ZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0
ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Zl
cnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVy
blZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhU
KGNvbnN0IFN0cmluZyYgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnNFWFQo
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0
LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NH
THZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSht
b2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3Vu
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvciksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5PTElOVAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExl
dmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggYWVm
ODNlMjU4ODg5YTViZTgyNjdhNjhiMWM2OWZlYzVhMzRlMDM4Ni4uNmE0YWRmNWQ2ZDM0YTdjNjkx
YmZmMDBlZWNlMDFmYzdhYTg5NDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApA
QCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmpl
Y3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29s
LCBib29sKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBi
b29sLCBib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDk1YzgzNmU2OTUwNDFkOTdk
MjU5MDM2ZmQ3M2RmZjVjNDZiOGZmOTEuLmM4YzU4MjkwNTBhNTI1OGY5ZDkzMTk3NmI5NWYwNWU1
OTdhNTZiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVBy
b2Nlc3MoKQogCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGllbnQo
KnRoaXMpOwotICAgIGJvb2wgZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmRTeW5jKAorICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmRTeW5jKAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRD
aGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhhcmR3YXJl
U2FtcGxlUmF0ZSgpKSwKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklEKSwgMCk7
CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6
Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0
cmVhbUZvcm1hdDsKICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJP
ZkZyYW1lcyk7Ci0gICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVm
ZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKaW5kZXggYjhm
NDVhNmQ1YmI0ZGI0NjA5ODgwMTI0M2JiNWU5MzE3YjFlM2UyYi4uNjViOGZkMGQ3NzM0N2U5Mzhi
NTY0NTgyMjZiNzhkYTQzYzk3ODkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIgogCisjaW5jbHVkZSAi
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3Rv
cmFnZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKaW5kZXgg
ZTU5ZTFiMDZiNDQ3ZTVkODBjYTYxMDUyYzZjN2EzMmM0YmExNDJlNi4uODE5NDA5MGM5MzNiMmYx
MWE2NDYwYWIzYzE3NzJkMzc2MTYzNzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaApAQCAtMjcsNiArMjcsOSBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmlu
Z0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCAwZGI4NWFlOWJkMjQxZWJhMWJkYTRlNjIyNDQw
ZjYzMjhlMWQ4YTBiLi4yOTdlZWJkYTE5MTg5ZGZlMGNmZTZjMWVkNzY5YWFjYjlkNmQ5MTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKKyNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmgKaW5kZXggYjlhMDFiMDYyNWUzYjdjN2YwMTE4NGE4M2MzNmU1NDkxMjJmMDlhOC4uMTUxNzJj
OWY2MjEwYmY0Zjk1ZTBjNmFhNzkzNmM2MjJlYThkOTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlLmgKQEAgLTQ0LDcgKzQ0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggYjdjZWRiN2U4Mzk0Zjk5YmE5
Y2ZiMGEyYWMyYTk3ODExYjNjNDE4Zi4uNzcwMmQxYjcwMmQxMjE2MmUxOWFiOWE2ZGFhNGM1OTc1
MTg2MmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTMzLDEwICszMyw2IEBACiAjaW5j
bHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZEdlbmVyaWND
dWU7CiBjbGFzcyBJU09XZWJWVFRDdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCAwYzZmNzNkMDcxNDRi
NTYyNjc2OTM2N2M5ZjJhM2E0MDE3ZWFkZTgwLi4xNjhlZjQzNWRkZTU2MTRkMzBmM2JlMjg2NzBh
NDdhZWQ2MTZkZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVT
RShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
LSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxp
YldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKaW5kZXggNzM5YTQ5NmVmNDk0
Y2I0YTYxODU2NmZmYzY0ZDRhMjY0YTc0ZTlkMC4uNGJlYWUwNjIzMTdiYTI2YTYwNjgzZjFmNDUx
MjMzZWIxMDczYWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0UoTElC
V0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVyLmgiCkBAIC00Myw3ICs0NCw2IEBAIHVzaW5n
IENWUGl4ZWxCdWZmZXJQb29sUmVmID0gc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqOwogCiBu
YW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
Y2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCAyZGFkMjAzODQyZjBlNTUz
ZmUzYjQ2MjQ0MWVlOTRmYTI2NDkzYTExLi5jMjhjZTdmMmUxN2U4OWE4ZTUxODZhNzcwNmEyZThh
NDRmNmI3ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiQVBJSW5qZWN0ZWRCdW5kbGVCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1VzZXJDb250ZW50VHlwZXMuaD4KQEAgLTU0LDcgKzU1LDYgQEAgY2xhc3MgRGF0YTsK
IG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2MSw0ICsxNjEs
MyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgKaW5kZXggMzA2NGU5YzRhZmNjMmNmZjU0YTMyNWUyNTMxZWQwNTIyYTAwMTM5My4u
Yjk3OTQ2NTllYWJkMTg0YjM4OWMwNmQxMzJmOGM0MmY4MDUyM2NjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg2NTcxMWIz
NjZjMjhkZjQ4NGI0Y2RjMDdhYTNmY2YzZGNlYmYyZjYuLjY5NDg5NmM5OTdhNDk0MGRiYWIyZGE3
NjU3ODIwYTI3OGFmMWRjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogCi0jaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgKaW5kZXggNTgzZTM3OWM4OWVjZmE5NTMwYjBhYmZhMWM2OWZlYTlkNTM5NjZmYi4uN2Ux
ZDQ5OTQ3MTVmODg0OWNlOGJmZTVlYzM0NTVkNDczNzc4MDBkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1
ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oIgpAQCAtMzYsNyArMzcsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNw
YWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggOTRlZjBkMWZjZTJlNjAxZGY0NDljZmY4NTM5ZmJkMTY0Nzkz
ZWJlMi4uZmY2OWY1NjA5ZTU3N2NhYzc3N2YwNGFmYTc0YWYyMTA3NDg2NGY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRDaGFubmVsLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsTWVz
c2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuaAppbmRleCBmNTM0NzgzNDdlNzc1ZGYzN2VhOTc2MzRjMjMzMDkzMmI0YTE0
ZDI4Li5hZDdmZjE4N2RiYjQzNTNiOWVkM2JjNTdjNWJhMmM0YWE0ZThjZmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTZW5kUXVldWUuaD4KQEAgLTM4LDcgKzM5
LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmlu
ZGV4IGFmMjQyY2QyYjU5NWFjNGE0NDg0Mjk3YmU1ZDVjZmUxOGQ0OGYzMjQuLjdkMDA3MzY5Yjlj
Y2U4NWI4ZjA1NDU3ZDY2NmQxZTQ0NTFiOTZjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgogCi0j
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKaW5kZXggZGQw
ODIwMTA3MTJiOWY1ZGI5ZmViZDg4ZGE2NjliNmRmNjFkMGYyOS4uYjQzY2IyZWZhZDFlMTAxZWUy
NjViOTNkZGU5YjA2MTI3MzZhMDk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
U29ja2V0U3RyZWFtSGFuZGxlLmg+CkBAIC0zMyw3ICszNCw2IEBACiBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCmluZGV4IGNiNDhlMDU3
MzQ4YTJlODY2YjA5MWZmNWFjODcyNjA1Y2ExOTJkZDUuLjMyM2YyNWVlOGZkODFiMDI2MzBkMmYy
NTlhMWFmYjg4NGI0Y2Y1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKQEAgLTM1LDcgKzM1LDYgQEAK
IAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBlYTUzNTk2MDEwOWZlZTZkYzQ4MDVjZjY4OTEy
Nzk4ZWU5YWI2ZjAzLi40MGI0YzhmMjEyOWNmMTIzM2ExYjMxYjg1MTI3ZTdhN2U5ZTNkN2NhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CkBAIC02MCwxMCArNjAsNiBAQCBPQkpDX0NMQVNTIFBERlNlbGVjdGlvbjsKIE9CSkNfQ0xBU1Mg
V0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0OwogT0JKQ19DTEFTUyBXS1BERkxheWVyQ29u
dHJvbGxlckRlbGVnYXRlOwogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7
Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBF
bGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAzMzQ3NjRhY2UyYThjNDM4NTg4YjMx
OTgwNjJmMzY1YTM2NmU4YmRhLi41YjI3MzJmMmM0ZTRjNDgzZWJmODQwODdhOGMyNjM0ZTlkNTQ5
MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTA4LDYgKzEwOCwxMCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oPgogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC05MTIsNiArOTE2LDIyIEBA
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlCiAgICAgcmV0dXJuIG1fcGFnZS5lbnN1cmVSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdN
b2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lm
IEVOQUJMRShXRUJHTCkKKworUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgUGxhdGZvcm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkg
Y29uc3QKK3sKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90
ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIFVOVVNF
RF9WQVJJQUJMRShob3N0V2luZG93RGlzcGxheUlEKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGF0dHJpYnV0ZXMp
OworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFj
aFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwgR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggZWMxNGZkYjE2YzgxY2MxMjcwNmNmY2I1OWU5OWYyY2QzMzc2MGRjOC4u
MTIxNWY5MmEwMzE5NTgwYTBkZGQ5MjEwNTEzZGQyZDVkMzA1MDUxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtMjQzLDcgKzI0MywxMSBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
V2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmlu
YWw7CiAjZW5kaWYKKyNlbmRpZgorCiAKICAgICBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxv
d2VkQ29tcG9zaXRpbmdUcmlnZ2VycygpIGNvbnN0IGZpbmFsCiAgICAgewpAQCAtNDAzLDYgKzQw
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNI
b3Jpem9udGFsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRN
YWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhciB7IGZhbHNlIH07CisKICAgICBXZWJQYWdlJiBt
X3BhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGY2NDIxNDc3YTU2Y2VlMWI0NTlhYjFiNzBkOGRjYWQ5ZDNkYWZjMzQuLmQ0NjMz
ZGRiNmNjNjQ5ODAzYjkyNDU3NTYyNWJmYTUyOGMxN2Q0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MjIsNiArNDIyLDkgQEAgV2ViUGFn
ZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3Mg
eyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB9CiAgICAgLCBtX3No
b3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5H
UFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgcGFyYW1l
dGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgfQorI2lmIEVOQUJMRShXRUJHTCkKKyAg
ICAsIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJl
bmRlcldlYkdMSW5HUFVQcm9jZXNzfQorI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgICwgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBwYXJhbWV0ZXJz
Lm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB9CiAjZW5kaWYKQEAgLTcyNSw3ICs3Mjgs
NiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKFdlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIqIG1hbmFnZXIgPSB3ZWJQcm9jZXNzLnN1cHBsZW1lbnQ8V2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlcj4oKSkKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkobWFuYWdlci0+bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KCkpOwogI2VuZGlm
Ci0gICAgCiAgICAgaWYgKHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yICE9IDEpCiAgICAgICAg
IHNjYWxlVmlldyhwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3Rvcik7CiAKQEAgLTM3OTMsNiArMzc5
NSw5IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJv
Y2Vzc0ZvckNhbnZhc1JlbmRlcmluZyhtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2Vzcyk7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRl
cmluZyhtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQ
cm9jZXNzKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3Mp
OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCkBAIC02OTkw
LDYgKzY5OTUsNyBAQCB2b2lkIFdlYlBhZ2U6OnN5bmNocm9uaXplQ09SU0Rpc2FibGluZ1BhdHRl
cm5zV2l0aE5ldHdvcmtQcm9jZXNzKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyht
X2lkZW50aWZpZXIsIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zKSwgMCk7CiB9CiAKKwogI2lmIEVO
QUJMRShNRURJQV9VU0FHRSkKIHZvaWQgV2ViUGFnZTo6YWRkTWVkaWFVc2FnZU1hbmFnZXJTZXNz
aW9uKE1lZGlhU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBidW5k
bGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHBhZ2VVUkwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZTdmOGMwYTNiNjA0ZTdhYTE1N2M3NDAyMzFl
NTU1NzQ5ZDRlZjdjNy4uMjExMGEzMmY2NzBmMDBmYTI0NGZlNmY5ZDc5NWE2ZGRmNjBkMTcwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIK
ICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJE
cmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTE2MCw3ICsx
NjEsNiBAQCBjbGFzcyBBcnJheTsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9u
OwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJl
ZmVyZW5jZTsKIH0KQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luY1dpdGhEZWxheWVkUmVw
bHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgU2VuZFN5bmNS
ZXN1bHQgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmIHJlcGx5KQogICAgIHsKICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9ja2VkT25TeW5j
aHJvbm91c1JlcGxpZXMoKTsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2Fn
ZSksIFdURk1vdmUocmVwbHkpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0
aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CkBAIC0xODI2LDYgKzE4MjYs
OSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3Mg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9Owor
I2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nl
c3MgeyBmYWxzZSB9OworI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAg
IGJvb2wgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBmYWxzZSB9OwogI2VuZGlm
CkBAIC0yMTgzLDQgKzIxODYsMyBAQCBpbmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRz
TGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBjbwogI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGU1NzVmY2EwMTlmNmIxMmE4ZjRkYWU1
Y2IxZDY4MmRhNGU0MzZlYjkuLjg0ZTI4NDExY2ZkZGQ5MWY5YTVkNDdjMjFkNzFlOWRiNmQ3YzYz
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCkBAIC01MTcsNyArNTE3LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5n
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBJbnRl
cnByZXQgdGhlIGV2ZW50IGltbWVkaWF0ZWx5IHVwb24gcmVjZWl2aW5nIGl0IGluIFVJIHByb2Nl
c3MsIHdpdGhvdXQgc2VuZGluZyB0byBXZWJQcm9jZXNzIGZpcnN0LgogICAgIGJvb2wgZXZlbnRX
YXNIYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxh
eW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6Q2hhciksCisgICAgYXV0byBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVz
KSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciks
CiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50OjpSZXBs
eShldmVudFdhc0hhbmRsZWQpLCBtX2lkZW50aWZpZXIpOwogICAgIHJldHVybiBzZW5kUmVzdWx0
ICYmIGV2ZW50V2FzSGFuZGxlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCBmMmYyMjgyMmM3YjIyM2ZjYTU5Zjk1NTczZDExZGM5OWIxMDM0ODExLi41ODJl
ZTc1ZDk5YTc0MjQyNTRhMzlkYWIyMDZmODQ2MTczNGFkOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTQyLDYgKzE5NDIsMjAgQEAgYm9vbCBXZWJQcm9j
ZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3Nl
KQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lk
IFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChib29sIHVzZUdQVVByb2Nlc3NG
b3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCA9IHVzZUdQVVByb2Nlc3NG
b3JXZWJHTDsKK30KKworYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdG
b3JXZWJHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOwor
fQorCisjZW5kaWYKKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTljNDdkYjRjNDQ3YzBmNGFiNjI3YzA5NGI1ZjY4ZGI1
NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMyNzY0YzRkODUzNzkwOTBiMmNiY2E3M2MxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNDcsNiArMzQ3LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcoYm9vbCk7CiAgICAg
dm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRVc2VS
ZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSk7CisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wpOworICAgIGJv
b2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdDsKKyNlbmRpZgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpAQCAtNjg3LDYgKzY5MSw5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
dXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAg
Ym9vbCBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCB7IGZhbHNlIH07CisjZW5kaWYKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAwMjIyN2I3YjVlNDZjMjQ0NGQ4OWRiNzQ1ZTc2MmE5MGM0ODUzZDkyLi5m
ZTM5YjAzZDlhNWE0OGFmNDE3NGJjZTY5YWNmYjdhNzc2ZmNiZTU1IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAt
MTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Njk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50cyBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBH
UFUgcHJvY2Vzcy4KKyAgICAgICAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJL
aXQgSVBDIGFuZCBpcyBpbmNvbXBsZXRlLgorCisgICAgICAgIEFkZCB0aGUgY29kZSBnZW5lcmF0
b3IgdG8gZ2VuZXJhdGUgdGhlIGltcGxlbWVudGF0aW9uLiBDdXJyZW50bHkKKyAgICAgICAgdGhl
IGdlbmVyYXRvciBnZW5lcmF0ZXMgYSBXZWJLaXQgSVBDIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgIFRoZSBpbnB1dCBkZWZpbml0aW9uIHRvIHRoZSBnZW5lcmF0b3IgaXMgdGhlIHByb3h5IGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGhlYWRlciBmaWxlcy4KKyAgICAgICAgVGhlIG91dHB1dCBv
ZiB0aGUgZ2VuZXJhdG9yIGlzCisgICAgICAgICAgIC0gV2ViS2l0IElQQyBtZXNzYWdlIGRlZmlu
aXRpb24gZmlsZQorICAgICAgICAgICAtIE1lc3NhZ2Ugc2VuZGVyIGNvZGUKKyAgICAgICAgICAg
LSBNZXNzYWdlIHJlY2VpdmVyIGFuZCBwYXlsb2FkIGludm9jYXRpb24gY29kZQorCisgICAgICAg
IFRoZSBnZW5lcmF0b3IgY29udmVydHMgR3JhcGhpY3NDb250ZXh0R0wgR0NHTCAtcHJlZml4ZWQg
dHlwZXMgdG8KKyAgICAgICAgc2l6ZWQgSVBDIHR5cGVzLgorCisgICAgICAgIFRoZSBnZW5lcmF0
b3IgaXMgaW52b2tlZCBkdXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJl
CisgICAgICAgIHN0b3JlZCBpbiB0aGUgcmVwb3NpdG9yeS4KKworICAgICAgICAqIFNjcmlwdHMv
Z2VuZXJhdGUtZ3B1cC13ZWJnbDogQWRkZWQuCisKIDIwMjAtMTItMDEgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkYWJsZS93
cml0YWJsZSB0byBSVENSdHBTRnJhbWVUcmFuc2Zvcm0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMTZiNDIyMjljZjJmODI4YzY2YzdlN2I0MTc3M2MyZWJlNDQzMTE0Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC0w
LDAgKzEsMTA0NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyAtKi0gY29kaW5nOiB1dGYt
OCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRo
ZSBzb3VyY2UgZmlsZXMgZm9yIFdlYkdMIEdQVSBwcm9jZXNzIElQQy4KKyMKKyMgcHl0aG9uMyAt
bSBibGFjayAtbCAxNTAgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisjIHB5dGhv
bjMgLW0gbXlweSBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMKK2ltcG9ydCBh
cmdwYXJzZQoraW1wb3J0IGVudW0KK2ltcG9ydCBwYXRobGliCitpbXBvcnQgcmUKK2ltcG9ydCBz
eXMKK2ltcG9ydCBjb2xsZWN0aW9ucworCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgRGljdCwg
SXRlcmFibGUsIENhbGxhYmxlLCBUdXBsZSwgU2V0LCBPcHRpb25hbCwgR2VuZXJhdG9yLCBJdGVy
YXRvciwgQ291bnRlcgorCityb290X2RpciA9IChwYXRobGliLlBhdGgoX19maWxlX18pLnBhcmVu
dCAvICIuLiIgLyAiLi4iKS5yZXNvbHZlKCkKK2V4dGVuc2lvbnNfaW5wdXRfZm4gPSByb290X2Rp
ciAvICJTb3VyY2UiIC8gIldlYkNvcmUiIC8gInBsYXRmb3JtIiAvICJncmFwaGljcyIgLyAiRXh0
ZW5zaW9uc0dMLmgiCisKK2Z1bmN0aW9uc19pbnB1dF9mbnMgPSBbCisgICAgcm9vdF9kaXIgLyAi
U291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8g
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKK10KK3R5cGVzX2lucHV0X2ZuID0gcm9v
dF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3Jh
cGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworCit0ZW1wbGF0ZV9w
cmVhbWJsZSA9ICIiIi8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorIiIiCitjb250ZXh0X2Z1bmN0aW9uc19mbiA9
IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJHUFVQcm9jZXNzIiAvICJncmFwaGlj
cyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIKK2NvbnRl
eHRfZnVuY3Rpb25zX3RlbXBsYXRlID0gKAorICAgIHRlbXBsYXRlX3ByZWFtYmxlCisgICAgKyAi
IiIvLyBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwcml2YXRlIHNlY3Rpb24g
b2YgdGhlCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbXBsZW1lbnRhdGlvbnMuCisjcHJh
Z21hIG9uY2UKK3t9CisKKyIiIgorKQorY29udGV4dF9tZXNzYWdlc19mbiA9IHJvb3RfZGlyIC8g
IlNvdXJjZSIgLyAiV2ViS2l0IiAvICJHUFVQcm9jZXNzIiAvICJncmFwaGljcyIgLyAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4iCitjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRl
ID0gKAorICAgIHRlbXBsYXRlX3ByZWFtYmxlCisgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMIE5vdFJlZkNvdW50ZWQge3sKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlz
cGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5k
aWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+
ICgpIFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
U3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7
fQorfX0KKworI2VuZGlmCisKKyIiIgorKQorCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiA9
IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8g
ImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJh
dGVkLmNwcCIKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX3RlbXBsYXRlID0gKAorICAgIHRlbXBs
YXRlX3ByZWFtYmxlCisgICAgKyAiIiIKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7ewore30KKworfX0KKworI2Vu
ZGlmCisKKyIiIgorKQorCisKK2RlZiB3cml0ZV9maWxlKGZuLCBuZXdfY29udGVudHMpOgorICAg
IHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgaWYgZi5yZWFk
KCkgPT0gbmV3X2NvbnRlbnRzOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgIGV4Y2VwdDoK
KyAgICAgICAgcGFzcworICAgIHdpdGggb3BlbihmbiwgInciKSBhcyBmOgorICAgICAgICBmLndy
aXRlKG5ld19jb250ZW50cykKKworY2xhc3MgY3BwX3R5cGUob2JqZWN0KToKKyAgICB0eXBlX25h
bWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0cik6CisgICAg
ICAgIHNlbGYudHlwZV9uYW1lID0gdHlwZV9uYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6
CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYudHlwZV9uYW1lKQorCisgICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2VxX18o
c2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUgPT0gb3RoZXIudHlw
ZV9uYW1lCisKKyAgICBkZWYgaXNfdm9pZChzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4g
c2VsZi50eXBlX25hbWUgaW4gWyJ2b2lkIiwgIkdDR0x2b2lkIiwgImNvbnN0IHZvaWQiLCAiY29u
c3QgR0NHTHZvaWQiXQorCisgICAgZGVmIGlzX2NvbnN0KHNlbGYpIC0+IGJvb2w6CisgICAgICAg
IHJldHVybiBzZWxmLnR5cGVfbmFtZS5zdGFydHN3aXRoKCJjb25zdCAiKQorCisgICAgZGVmIGlz
X2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRl
ZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZh
bHNlCisKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9wb2ludGVyKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKSAtPiBib29s
OgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2Vs
ZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5
cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBn
ZXRfZGVjYXlfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICBpZiBzZWxmLmlzX2Nv
bnN0KCk6CisgICAgICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lWzY6
XSkKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXRfcnZhbHVlX3R5cGUoc2VsZikg
LT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFt
ZSArICImJiIpCisKKyAgICBkZWYgZ2V0X3BvaW50ZXJfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUn
OgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIioiKQorCitj
bGFzcyBjcHBfdHlwZV9jb250YWluZXIoY3BwX3R5cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB0eXBlX25hbWUgOiBzdHIsIGNvbnRhaW5lcl9uYW1lIDogc3RyLCBjb250YWluZWRfdHlwZSA6
IGNwcF90eXBlLCBhcml0eSA6IE9wdGlvbmFsW2ludF0gPSBOb25lKToKKyAgICAgICAgY3BwX3R5
cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNvbnRhaW5lcl9uYW1l
ID0gY29udGFpbmVyX25hbWUKKyAgICAgICAgc2VsZi5jb250YWluZWRfdHlwZSA9IGNvbnRhaW5l
ZF90eXBlCisgICAgICAgIHNlbGYuYXJpdHkgPSBhcml0eQorICAgIGRlZiBpc19jb250YWluZXIo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYgaXNfc3BhbihzZWxm
KSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNw
YW4iCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iIGFuZCBzZWxmLmFyaXR5IGlzIE5v
bmUKKyAgICBkZWYgZ2V0X2NvbnRhaW5lcl9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5jb250YWluZXJfbmFtZQorICAgIGRlZiBnZXRfYXJpdHkoc2VsZikgLT4gT3B0aW9uYWxbaW50
XToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXJpdHkKKyAgICBkZWYgZ2V0X2NvbnRhaW5lZF90eXBl
KHNlbGYpIC0+IGNwcF90eXBlOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZQor
ICAgIGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIHNlbGYuY29udGFpbmVkX3R5cGUuaXNfY29uc3QoKQorCitkZWYgY3JlYXRlX2NwcF90eXBl
X2NvbnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5l
cl06CisgICAgbSA9IHJlLm1hdGNoKHIiKFtcdzpdKyk8KC4rKT4kIiwgdHlwZV9uYW1lKQorICAg
IGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGNvbnRhaW5lcl9uYW1lID0gbVsx
XQorICAgIHRlbXBsYXRlcyA9IG1bMl0KKyAgICBhcml0eSA9IE5vbmUKKyAgICBtID0gcmUubWF0
Y2gociIoW14sXSspLFxzKihcZCspIiwgdGVtcGxhdGVzKQorICAgIGlmIG06CisgICAgICAgIHRl
bXBsYXRlcyA9IG1bMV0KKyAgICAgICAgYXJpdHkgPSBpbnQobVsyXSkKKyAgICByZXR1cm4gY3Bw
X3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSwgY29udGFpbmVyX25hbWUsIGdldF9jcHBfdHlwZSh0
ZW1wbGF0ZXMpLCBhcml0eSkKKworY2xhc3MgY3BwX3R5cGVfZnVuY3Rpb24oY3BwX3R5cGUpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIHJldHVybl92YWx1ZV90eXBl
IDogY3BwX3R5cGUsIGFyZ3VtZW50X3R5cGVzIDogTGlzdFtjcHBfdHlwZV0pOgorICAgICAgICBj
cHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYucmV0dXJuX3Zh
bHVlX3R5cGUgID0gcmV0dXJuX3ZhbHVlX3R5cGUKKyAgICAgICAgc2VsZi5hcmd1bWVudF90eXBl
cyA9IGFyZ3VtZW50X3R5cGVzCisKK2RlZiBjcHBfc3BsaXRfYXJnc19zcGVjcyhhcmdzX3NwZWMg
OiBzdHIpIC0+IEl0ZXJhdG9yW3N0cl06CisgICAgICMgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNv
bS9xdWVzdGlvbnMvMzM1MjcyNDUvcHl0aG9uLXNwbGl0LWJ5LWNvbW1hLXNraXBwaW5nLXRoZS1j
b250ZW50LWluc2lkZS1wYXJlbnRoZXNlcworICAgIGNvbW1hID0gciIsKD8hKD86W148XSpcPFte
Pl0qXD4pKltePD5dKlw+KSIKKyAgICByZXR1cm4gZmlsdGVyKE5vbmUsIFthLnN0cmlwKCkgZm9y
IGEgaW4gcmUuc3BsaXQoY29tbWEsIGFyZ3Nfc3BlYy5zdHJpcCgpKV0pCisgICAgCitkZWYgY3Jl
YXRlX2NwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5
cGVfZnVuY3Rpb25dOgorICAgIG0gPSByZS5tYXRjaChyJyguKilcKCguKilcKScsIHR5cGVfbmFt
ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm5fdmFsdWVf
dHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgIGFyZ3NfdHlwZXMgPSBbZ2V0X2NwcF90eXBl
KGEpIGZvciBhIGluIGNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bMl0pXQorICAgIHJldHVybiBjcHBf
dHlwZV9mdW5jdGlvbih0eXBlX25hbWUsIHJldHVybl92YWx1ZV90eXBlLCBhcmdzX3R5cGVzKQor
ICAgICAgICAKKyMgUG9pbnRlciBvciByZWZlcmVyZW5jZQorY2xhc3MgY3BwX3R5cGVfaW5kaXJl
Y3QoY3BwX3R5cGUpOgorICAgIGNhdGVnb3J5IDogc3RyCisgICAgdmFsdWVfdHlwZSA6IGNwcF90
eXBlCisgICAgCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY2F0ZWdv
cnkgOiBzdHIsIHZhbHVlX3R5cGUgOiBjcHBfdHlwZSk6CisgICAgICAgIGNwcF90eXBlLl9faW5p
dF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5jYXRlZ29yeSA9IGNhdGVnb3J5Cisg
ICAgICAgIHNlbGYudmFsdWVfdHlwZSA9IHZhbHVlX3R5cGUKKworICAgIGRlZiBpc19jb25zdF9w
b2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIHNl
bGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNf
Y29uc3RfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAn
JicgYW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19yZWZlcmVuY2Uoc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQor
ICAgIGRlZiBpc19ydmFsdWVfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5j
YXRlZ29yeSA9PSAnJiYnCisgICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi52YWx1ZV90eXBlCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QodHlw
ZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9pbmRpcmVjdF06CisgICAgbSA9IHJl
Lm1hdGNoKHIiY29uc3QgKC4rKSYmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAg
ICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYmJCIsIHR5cGVfbmFtZSkgCisgICAgaWYgbToKKyAgICAg
ICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYmJywgZ2V0X2NwcF90eXBl
KG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJCIsIHR5cGVfbmFtZSkKKyAg
ICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYkIiwgdHlwZV9uYW1lKQor
ICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcm
JywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKylcKiQi
LCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKylc
KiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGly
ZWN0KHR5cGVfbmFtZSwgJyonLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgcmV0dXJuIE5vbmUK
KworCitjbGFzcyBjcHBfZXhwcihvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgZXhw
cjogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIGV4cHI6IHN0
cik6CisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5leHByID0gZXhwcgor
CisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmV4cHIKKworCitD
cHBFeHByQ29udmVydGVyID0gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHBy
XQorCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjYXN0
X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBl
XSwgY3BwX2V4cHJdOgorICAgIGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIo
ZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0
dXJuIGNwcF9leHByKHR5cGUsIGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4ocmVpbnRl
cnByZXRfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAg
IHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIKKworZGVmIGNwcF9yZWlu
dGVycHJldF9jYXN0X3RvX3BvaW50ZXJfdGhyb3VnaChjYXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90
eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdOgorICAgIGRl
ZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBj
cHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInJl
aW50ZXJwcmV0X2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oc3RhdGljX2Nhc3Q8e3N0cihjYXN0X3Ro
cm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0
X2Nhc3RfdG9fcG9pbnRlcgorCitkZWYgY3BwX3N0YXRpY19jYXN0KGV4cHI6IGNwcF9leHByLCB0
eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYi
c3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oe3N0cihleHByKX0pIikKKworCitkZWYgY3Bw
X2ltcGxpY2l0X2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhw
cjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgc3RyKGV4cHIpKQorCisKK2RlZiBjcHBfYXJy
YXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBf
dHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0g
dHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4g
Y3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfShyZWludGVycHJldF9jYXN0PHtlbGVtZW50X3Bv
aW50ZXJfdHlwZX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9LnNpemUoKSkiKQor
CitkZWYgd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252
ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9l
eHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUo
KS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5
cGUpfShyZWludGVycHJldF9jYXN0PGNvbnN0IHtlbGVtZW50X3BvaW50ZXJfdHlwZX0+KHtzdHIo
ZXhwcil9LmRhdGEpLCB7c3RyKGV4cHIpfS5idWZTaXplKSIpCisKK2RlZiBjcHBfbW92ZV9leHBy
KGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIoZXhwci50
eXBlLmdldF9ydmFsdWVfdHlwZSgpLCBmIldURk1vdmUoe3N0cihleHByKX0pIikKKworCitjcHBf
dHlwZXM6IERpY3Rbc3RyLCBjcHBfdHlwZV0gPSB7fQorCitjcHBfdHlwZV9jb25zdHJ1Y3RvcnMg
OiBMaXN0W0NhbGxhYmxlW1tzdHJdLCBPcHRpb25hbFtjcHBfdHlwZV1dXSA9IFsKKyAgICBjcmVh
dGVfY3BwX3R5cGVfZnVuY3Rpb24sCisgICAgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lciwKKyAg
ICBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QKK10KKworZGVmIGdldF9jcHBfdHlwZSh0eXBlX25h
bWU6IHN0cik6CisgICAgciA9IGNwcF90eXBlcy5nZXQodHlwZV9uYW1lLCBOb25lKQorICAgIGlm
IHI6CisgICAgICAgIHJldHVybiByCisgICAgZm9yIHR5cGVfY29uc3RyIGluIGNwcF90eXBlX2Nv
bnN0cnVjdG9yczoKKyAgICAgICAgciA9IHR5cGVfY29uc3RyKHR5cGVfbmFtZSkKKyAgICAgICAg
aWYgcjoKKyAgICAgICAgICAgIGJyZWFrCisgICAgaWYgbm90IHI6CisgICAgICAgIHIgPSBjcHBf
dHlwZSh0eXBlX25hbWUpCisgICAgY3BwX3R5cGVzW3R5cGVfbmFtZV0gPSByCisgICAgcmV0dXJu
IHIKKworCitjbGFzcyBjcHBfYXJnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgdHlwZTog
Y3BwX3R5cGUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFtZTog
c3RyKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnR5cGUgPSB0eXBl
CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7fSB7fSIuZm9ybWF0
KHNlbGYudHlwZSwgc2VsZi5uYW1lKQorCisKK2NsYXNzIGNwcF9kZWNsKG9iamVjdCk6CisgICAg
dHlwZTogY3BwX3R5cGUKKyAgICBuYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
eXBlOiBjcHBfdHlwZSwgbmFtZTogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAg
ICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAg
cmV0dXJuIGYie3N0cihzZWxmLnR5cGUpfSB7c2VsZi5uYW1lfSIKKworCitjbGFzcyBjcHBfYXJn
X2xpc3Qob2JqZWN0KToKKyAgICBhcmdzOiBMaXN0W2NwcF9hcmddCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MK
KworICAgIGRlZiBuYW1lcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihhLm5hbWUg
Zm9yIGEgaW4gc2VsZi5hcmdzKQorCisgICAgZGVmIGV4cHJzKHNlbGYpOgorICAgICAgICByZXR1
cm4gW2NwcF9leHByKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBk
ZWYgZGVjbHMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2RlY2woYS50eXBlLCBhLm5hbWUp
IGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiB0eXBlcyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIFthLnR5cGUgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgIHJldHVybiAiLCAiLmpvaW4oc3RyKGEpIGZvciBhIGluIHNlbGYuYXJncykKKwor
CitjbGFzcyBjcHBfZnVuYyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9h
cmdfbGlzdAorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGlzX2V4dGVuc2lvbjogYm9v
bAorICAgIG92ZXJsb2FkX3N1ZmZpeDogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFt
ZTogc3RyLCByZXR1cm5fdHlwZTogY3BwX3R5cGUsIGFyZ3M6IGNwcF9hcmdfbGlzdCwgaXNfZXh0
ZW5zaW9uOiBib29sKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnJl
dHVybl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAg
ICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLm92ZXJsb2Fk
X3N1ZmZpeCA9ICIiCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGYi
e3NlbGYucmV0dXJuX3R5cGV9IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pIgorCisgICAg
ZGVmIGdldF9hcmdzX2NhdGVnb3JpZXMoc2VsZikgLT4gVHVwbGVbTGlzdFtjcHBfYXJnXSwgTGlz
dFtjcHBfYXJnXV06CisgICAgICAgIGluX2FyZ3MgPSBbXQorICAgICAgICBvdXRfYXJncyA9IFtd
CisgICAgICAgIGZvciBhIGluIHNlbGYuYXJncy5hcmdzOgorICAgICAgICAgICAgI2ZtdDogb2Zm
CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpIG9yIFwKKyAgICAgICAgICAgICAg
ICBhLnR5cGUuaXNfcmVmZXJlbmNlKCk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2Fd
CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIp
IGFuZCAoKChhLnR5cGUuaXNfc3BhbigpIG9yIGEudHlwZS5pc19keW5hbWljX3NwYW4oKSkgYW5k
IG5vdCBhLnR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKSkpOgorICAgICAgICAg
ICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBpbl9hcmdzICs9IFthXQorICAgICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgcmV0dXJuIGlu
X2FyZ3MsIG91dF9hcmdzCisKKyAgICBkZWYgaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLCB0eXBl
OiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgaXNfaW1w
bGVtZW50ZWQoc2VsZik6CisgICAgICAgICMiIGluIGEudHlwZS50eXBlX25hbWUgZm9yIGEgaW4g
c2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICAjaWYg
IkdDR0xzeW5jIiBpbiBzZWxmLnJldHVybl90eXBlLnR5cGVfbmFtZToKKyAgICAgICAgIyAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEubmFtZSA9PSAiYnVmU2l6ZSIgZm9yIGEgaW4g
c2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFu
eShhLnR5cGUuaXNfcG9pbnRlcigpIGFuZCBhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKS5pc192b2lk
KCkgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgIGlmIGFueShub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKGEudHlwZSkgZm9yIGEg
aW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlm
IHNlbGYucmV0dXJuX3R5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoc2VsZi5yZXR1cm5fdHlw
ZSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworCit3
ZWJraXRfaXBjX3R5cGVzOiBEaWN0W2NwcF90eXBlLCBjcHBfdHlwZV0gPSB7fQorCit3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnM6IERpY3RbVHVwbGVbY3BwX3R5cGUsIGNwcF90eXBlXSwgQ3Bw
RXhwckNvbnZlcnRlcl0gPSB7fQorCisKK2RlZiB3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihleHBy
OiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICIiIiBDb252ZXJ0
cyBgZXhwcmAgb2YgdHlwZSBvZiBgc2VsZmAgdG8gYHR5cGVgICIiIgorICAgIGNvbnZlcnQgPSB3
ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuZ2V0KChleHByLnR5cGUsIHR5cGUpLCBOb25lKQor
ICAgIGlmIG5vdCBjb252ZXJ0OgorICAgICAgICBpZiBleHByLnR5cGUgPT0gdHlwZToKKyAgICAg
ICAgICAgIHJldHVybiBleHByCisgICAgICAgIGNvbnZlcnQgPSBjcHBfaW1wbGljaXRfY2FzdAor
ICAgIHJldHVybiBjb252ZXJ0KGV4cHIsIHR5cGUpCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3Nw
YW5fdHJhbnNmZXJfdHlwZSh0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlwZToK
KyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNheV90
eXBlKCkKKyAgICBhcml0eSA9IHR5cGUuZ2V0X2FyaXR5KCkKKyAgICB3ZWJraXRfaXBjX2VsZW1l
bnRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZWxlbWVudF90eXBlXSBpZiBub3QgZWxlbWVudF90
eXBlLmlzX3ZvaWQoKSBlbHNlIGdldF9jcHBfdHlwZSgndWludDhfdCcpCisgICAgaWYgYXJpdHkg
aXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVm
ZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50X3R5cGUpfSwge2FyaXR5fT4iKQorICAgIHJl
dHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19l
bGVtZW50X3R5cGUpfT4iKQorCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlw
ZSh0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlw
ZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGlmIGVs
ZW1lbnRfdHlwZS5pc192b2lkKCk6CisgICAgICAgIGVsZW1lbnRfdHlwZSA9IGdldF9jcHBfdHlw
ZSgnR0NHTGNoYXInKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgIGlu
bGluZV9jYXBhY2l0eSA9IDE2IGlmICJmbG9hdCIgaW4gZWxlbWVudF90eXBlLnR5cGVfbmFtZSBl
bHNlIDQKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIlZlY3Rvcjx7c3RyKGVsZW1lbnRf
dHlwZSl9LCB7c3RyKGlubGluZV9jYXBhY2l0eSl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlw
ZShmInN0ZDo6YXJyYXk8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cih0eXBlLmdldF9hcml0eSgp
KX0+IikKKworZGVmIHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uKGV4cHIgOiBj
cHBfZXhwciwgdHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgcG9p
bnRlcl9jYXN0X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5
cGUoKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgIHJldHVybiBjcHBf
ZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PHtzdHIocG9pbnRlcl9j
YXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisK
KyAgICBhc3NlcnQodHlwZS5pc19zcGFuKCkpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYi
bWFrZUdDR0xTcGFuPHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9PihyZWludGVycHJldF9jYXN0PHtz
dHIocG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSkiKQorCisjIFNlZSBt
ZXNzYWdlcy5weSBmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZQord2Via2l0X2lwY19idWlsdGluX3R5
cGVzID0gc2V0KAorICAgIFsidWludDhfdCIsICJ1aW50MTZfdCIsICJ1aW50MzJfdCIsICJ1aW50
NjRfdCIsICJpbnQ4X3QiLCAiaW50MTZfdCIsICJpbnQzMl90IiwgImludDY0X3QiLCAiYm9vbCIs
ICJmbG9hdCIsICJkb3VibGUiICJib29sIl0KKykKKworCitkZWYgd2Via2l0X2lwY19nZXRfbWVz
c2FnZV9mb3J3YXJkZXJfdHlwZSh0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX3R5cGU6CisgICAgaWYg
dHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1
cm4gdHlwZQorICAgIHJldHVybiB0eXBlLmdldF9ydmFsdWVfdHlwZSgpCisKKworZGVmIHdlYmtp
dF9pcGNfbW92ZV9leHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICBpZiBleHBy
LnR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoKKyAgICAgICAgcmV0
dXJuIGV4cHIKKyAgICByZXR1cm4gY3BwX21vdmVfZXhwcihleHByKQorCisKK2RlZiB3ZWJraXRf
aXBjX21zZ19uYW1lKGZ1bmM6IGNwcF9mdW5jKToKKyAgICByZXR1cm4gZnVuYy5uYW1lWzBdLmNh
cGl0YWxpemUoKSArIGZ1bmMubmFtZVsxOl0gKyBmdW5jLm92ZXJsb2FkX3N1ZmZpeAorCisKK2Ns
YXNzIHdlYmtpdF9pcGNfbXNnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgaW5fYXJnczog
Y3BwX2FyZ19saXN0CisgICAgb3V0X2FyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZ1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gd2Via2l0X2lw
Y19tc2dfbmFtZShmdW5jKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGZ1bmMuZ2V0X2Fy
Z3NfY2F0ZWdvcmllcygpCisgICAgICAgIGlwY19pbl9hcmdzID0gW2NwcF9hcmcod2Via2l0X2lw
Y190eXBlc1thLnR5cGVdLCBhLm5hbWUpIGZvciBhIGluIGluX2FyZ3NdCisgICAgICAgIGlwY19v
dXRfYXJncyA9IFtdCisgICAgICAgIGlmIG5vdCBmdW5jLnJldHVybl90eXBlLmlzX3ZvaWQoKToK
KyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2Z1
bmMucmV0dXJuX3R5cGVdLCAicmV0dXJuVmFsdWUiKV0KKyAgICAgICAgZm9yIGEgaW4gb3V0X2Fy
Z3M6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY190eXBl
c1thLnR5cGVdLCBhLm5hbWUpXQorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2R5bmFtaWNfc3Bh
bigpOgorICAgICAgICAgICAgICAgIGlwY19pbl9hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlw
ZSgidWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUiKV0KKyAgICAgICAgc2VsZi5pbl9hcmdzID0g
Y3BwX2FyZ19saXN0KGlwY19pbl9hcmdzKQorICAgICAgICBzZWxmLm91dF9hcmdzID0gY3BwX2Fy
Z19saXN0KGlwY19vdXRfYXJncykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBp
ZiBsZW4oc2VsZi5vdXRfYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBmIlxuICAgIHZv
aWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkgLT4gKHtzdHIoc2VsZi5vdXRfYXJn
cyl9KSBTeW5jaHJvbm91cyIKKyAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1l
fSh7c3RyKHNlbGYuaW5fYXJncyl9KSIKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9p
bXBsKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgbXNnX25hbWU6IHN0cgorICAgIHJldHVy
bl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgcHJlX2NhbGxf
c3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2Fs
bF9zdG10czogTGlzdFtzdHJdCisgICAgcmV0dXJuX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9l
eHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5u
YW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm1zZ19uYW1lID0gd2Via2l0X2lwY19t
c2dfbmFtZShjcHBfZnVuYykKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJl
dHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAg
ICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMg
PSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMg
PSBbXQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVn
b3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVy
bl90eXBlKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJncyhpbl9hcmdzKQorICAgICAgICBz
ZWxmLnByb2Nlc3Nfb3V0X2FyZ3Mob3V0X2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19jYWxs
KCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGluX2V4cHJzID0gIiwg
Ii5qb2luKFtzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbl9leHByc10pCisgICAgICAgIG91dF9leHBy
cyA9ICIsICIuam9pbihzdHIobykgZm9yIG8gaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgIGlz
X2FzeW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192b2lkKCkgYW5kIGxlbihvdXRfZXhwcnMpID09
IDAKKyAgICAgICAgaWYgaXNfYXN5bmM6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0g
WworICAgICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOyIsCisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZW5k
X3Jlc3VsdCA9ICIiCisgICAgICAgICAgICBpZiBzZWxmLnBvc3RfY2FsbF9zdG10czogCisgICAg
ICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiYXV0byBzZW5kUmVzdWx0ID0gIgorICAgICAgICAg
ICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gWworICAgICAgICAgICAgICAgICAgICAiaWYg
KHNlbmRSZXN1bHQpIiArICgiIHsiIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVs
c2UgIiIpCisgICAgICAgICAgICAgICAgXSArIFsiICAgICIgKyBzIGZvciBzIGluIHNlbGYucG9z
dF9jYWxsX3N0bXRzXSArIFsKKyAgICAgICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2VsZi5w
b3N0X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFt
ZX0oe2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYu
bXNnX25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsiLAorICAgICAgICAgICAgXQorCisKKyAgICBkZWYgcHJvY2Vzc19pbl9hcmdz
KHNlbGYsIGluX2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgaSBpbiBpbl9hcmdz
OgorICAgICAgICAgICAgaWYgaS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2Vs
Zi5pbl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoaS50eXBlLCBp
Lm5hbWUpLCB3ZWJraXRfaXBjX3R5cGVzW2kudHlwZV0pXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0
X2FyZ3Moc2VsZiwgb3V0X2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgbyBpbiBv
dXRfYXJnczoKKyAgICAgICAgICAgIGlmIG8udHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAg
ICAgICAgdmFsdWVfdHlwZSA9IG8udHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICAg
ICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1t2YWx1ZV90eXBlXQor
ICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdmFsdWVfdHlwZSwgby5uYW1l
ICsgIlJlcGx5IikKKyAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntz
dHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICAgICAgZSA9
IGNwcF9leHByKHYudHlwZSwgdi5uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJz
ICs9IFtlXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKKyAgICAg
ICAgICAgICAgICAgICAgI2ZtdDogb2ZmCisgICAgICAgICAgICAgICAgICAgIGYiaWYgKHtvLm5h
bWV9KSIsCisgICAgICAgICAgICAgICAgICAgIGYiICAgICp7by5uYW1lfSA9IHt3ZWJraXRfaXBj
X2NvbnZlcnRfZXhwcihlLCB2YWx1ZV90eXBlKX07IgorICAgICAgICAgICAgICAgICAgICAjZm10
OiBvbgorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsaWYgby50eXBlLmlzX3NwYW4o
KToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28u
dHlwZV0KKyAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUs
IGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0
X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAg
ICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KKyAgICAg
ICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYi
e28ubmFtZX0uYnVmU2l6ZSIpXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRz
ICs9IFsKKyAgICAgICAgICAgICAgICAgICAgZiJtZW1jcHkoe28ubmFtZX0uZGF0YSwge3YubmFt
ZX0uZGF0YSgpLCB7by5uYW1lfS5idWZTaXplICogc2l6ZW9mKHtzdHIod2Via2l0X2lwY190eXBl
LmdldF9jb250YWluZWRfdHlwZSgpKX0pKTsiCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIoby50
eXBlLCBvLm5hbWUpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVy
bl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAg
ICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUK
KyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0K
KyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhwcihpcGNfcmV0dXJuX3R5cGUsICJy
ZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92
YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAg
ICAgIHNlbGYub3V0X2V4cHJzID0gW3JldHVybl92YWx1ZV9leHByXSArIHNlbGYub3V0X2V4cHJz
CisgICAgICAgIHNlbGYucmV0dXJuX3N0bXRzID0gW2YicmV0dXJuIHtzdHIod2Via2l0X2lwY19j
b252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIHJldHVybl90eXBlKSl9OyJdCisKKyAgICBk
ZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJfIiBp
biBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgIHtifSIg
Zm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9z
dF9jYWxsX3N0bXRzICsgc2VsZi5yZXR1cm5fc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIiXG57
c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2Vs
Zi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9Cit7e3tib2R5fQorfX0iIiIKKworCitj
bGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcihvYmplY3QpOgorICAgIG5hbWU6
IHN0cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAor
ICAgIGJvZHk6IExpc3Rbc3RyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBj
cHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKworICAgICAgICBz
ZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdz
ID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLmJvZHkgPSBbIm5vdEltcGxlbWVudGVkKCk7
Il0KKyAgICAgICAgaWYgY3BwX2Z1bmMucmV0dXJuX3R5cGUudHlwZV9uYW1lICE9ICJ2b2lkIjoK
KyAgICAgICAgICAgIHNlbGYuYm9keSArPSBbInJldHVybiB7IH07Il0KKworICAgIGRlZiBfX3N0
cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYu
bmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiXG57XG4gICAgIiArICJcbiAgICAiLmpvaW4o
c2VsZi5ib2R5KSArICJcbn0iCisgICAgICAgIHJldHVybiBmIlxue3N0cihzZWxmLnJldHVybl90
eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxm
LmFyZ3MpfSl7bm9saW50fXtib2R5fSIKKworCitjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93ZWJr
aXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5IEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtp
dF9pcGNfY3BwX3Byb3h5X2ltcGxdCisgICAgdW5pbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9w
cm94eV9wbGFjZWhvbGRlcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFi
bGVbY3BwX2Z1bmNdLCB1bmltcGxlbWVudGVkOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAg
ICBzZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwoZikgZm9yIGYgaW4gZnVu
Y3NdCisgICAgICAgIHNlbGYudW5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhv
bGRlcihmKSBmb3IgZiBpbiB1bmltcGxlbWVudGVkXQorCisgICAgZGVmIGdldF9mdW5jdGlvbnMo
c2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZvciBpIGluIHNlbGYuaW1w
bHMgKyBzZWxmLnVuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdy
aXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiwKKyAgICAg
ICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9m
dW5jdGlvbnMoKSksCisgICAgICAgICkKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBsKG9i
amVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgaXNfZXh0
ZW5zaW9uOiBib29sCisgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3Rt
dHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgaW5fZXhw
cnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIHJl
dHVybl92YWx1ZV9leHByOiBPcHRpb25hbFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5u
YW1lCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gY3BwX2Z1bmMub3ZlcmxvYWRfc3Vm
Zml4CisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9hcmdfbGlzdChbXSkKKyAgICAgICAgc2VsZi5p
c19leHRlbnNpb24gPSBjcHBfZnVuYy5pc19leHRlbnNpb24KKyAgICAgICAgc2VsZi5wcmVfY2Fs
bF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYu
cG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAgICAg
IHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IE5v
bmUKKworICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVybl90
eXBlKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVn
b3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfYXJncyhjcHBfZnVuYy5hcmdzLmFyZ3MsIHNl
dChpbl9hcmdzKSwgc2V0KG91dF9hcmdzKSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQor
CisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgZXh0ID0gImdldEV4dGVuc2lv
bnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVsc2UgIiIKKworICAgICAgICBpbl9leHBycyA9
ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5pbl9leHBycykKKyAgICAgICAgaXNfYXN5
bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMpID09IDAKKworICAgICAgICBjYWxsX2V4cHIgPSBmIm1f
Y29udGV4dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5fZXhwcnN9KSIKKyAgICAgICAgaWYgbm90IHNl
bGYucmV0dXJuX3ZhbHVlX2V4cHI6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yi
e2NhbGxfZXhwcn07Il0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10
cyArPSBbZiJ7c3RyKHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIpfSA9IHtjYWxsX2V4cHJ9OyJdCisg
ICAgICAgIGlmIG5vdCBpc19hc3luYzoKKyAgICAgICAgICAgIG91dF9leHBycyA9ICIsICIuam9p
bihzdHIoZSkgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAgICBzZWxmLnBvc3Rf
Y2FsbF9zdG10cyArPSBbZiJjb21wbGV0aW9uSGFuZGxlcih7b3V0X2V4cHJzfSk7Il0KKworICAg
IGRlZiBwcm9jZXNzX2FyZ3Moc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSwgaW5fYXJnczogU2V0
W2NwcF9hcmddLCBvdXRfYXJnczogU2V0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGEgaW4gYXJn
czoKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAg
ICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBpZiBhIGluIGluX2FyZ3M6CisgICAgICAg
ICAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZyhhKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2FyZyhhKQorICAgICAgICBpZiBzZWxmLm91dF9l
eHByczoKKyAgICAgICAgICAgIG91dF9hcmdfZGVjbHMgPSAiLCAiLmpvaW4oZiJ7c3RyKGUudHlw
ZSl9IiBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYuYXJncy5hcmdz
ICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZShmIkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoe291dF9h
cmdfZGVjbHN9KT4mJiIpLCAiY29tcGxldGlvbkhhbmRsZXIiKV0KKworICAgIGRlZiBwcm9jZXNz
X2luX2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2Nw
cF9hcmcod2Via2l0X2lwY19nZXRfbWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh3ZWJraXRfaXBjX3R5
cGVzW2EudHlwZV0pLCBhLm5hbWUpXQorICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcih3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFt
ZSksIGEudHlwZSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJnKHNlbGYsIGE6IGNwcF9hcmcp
OgorICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgdmFsdWVfYXJn
ID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAg
c2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1
ZV9hcmcubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2Nw
cF9leHByKGEudHlwZSwgZiIme3ZhbHVlX2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgZSA9IGNw
cF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHdlYmtp
dF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZS50eXBlXQorICAgICAgICAgICAg
c2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9pcGNf
dmFsdWVfdHlwZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAg
ICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQor
ICAgICAgICAgICAgc2l6ZV9hcmcgPSBjcHBfYXJnKGdldF9jcHBfdHlwZSgidWludDY0X3QiKSwg
ZiJ7YS5uYW1lfVNpemUiKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW3NpemVfYXJn
XQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0
b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10
cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9KHN0YXRp
Y19jYXN0PHNpemVfdD4oe2EubmFtZX1TaXplKSwgMCk7Il0KKyAgICAgICAgICAgIHNlbGYuaW5f
ZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBmIntzdG9yZV9hcmcubmFtZX0iKV0K
KyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQor
ICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNw
cF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSld
CisgICAgICAgIGVsaWYgYS50eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2lu
c3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgIHN0b3JlX2Fy
ZyA9IGNwcF9hcmcod2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFt
ZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcu
dHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5p
bl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKV0KKyAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAg
ICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9l
eHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSldCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgYS50eXBlLmlzX3JlZmVyZW5jZSgpCisg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAg
ICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEu
bmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3NlbGYubnModmFs
dWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAgICAg
IGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAgICAgICAg
ICBzZWxmLmluX2V4cHJzICs9IFtlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dl
YmtpdF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9pcGNf
dHlwZSkpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90eXBl
OiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAg
ICAgIHJldHVybgorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3Jl
dHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKHJldHVybl90
eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmInty
ZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9fTsi
XQorICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0
X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIGlwY19yZXR1cm5fdHlwZSkpXQor
ICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gcmV0dXJuX3ZhbHVlX2V4cHIKKworICAg
IGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgICAgICB7
Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBzZWxm
LnBvc3RfY2FsbF9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiIgICAgdm9pZCB7c2VsZi5uYW1l
fXtzZWxmLm92ZXJsb2FkX3N1ZmZpeH0oe3N0cihzZWxmLmFyZ3MpfSkKKyAgICB7e3tib2R5fQor
ICAgIH19IiIiCisKKyAgICBkZWYgbnMoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICAj
IFRPRE86IG5hbWVzcGFjZSBpbmZvIGlzIG5vdCBzdG9yZWQgaW4gbmFtZXMuCisgICAgICAgIGlm
IHR5cGUudHlwZV9uYW1lID09ICJBY3RpdmVJbmZvIjoKKyAgICAgICAgICAgIHJldHVybiAiV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OiIgKyBzdHIodHlwZSkKKyAgICAgICAgcmV0dXJuIHN0
cih0eXBlKQorCitkZWYgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcyA6
IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgY291bnRzID0gY29sbGVjdGlvbnMuQ291bnRlcihm
Lm5hbWUgZm9yIGYgaW4gZnVuY3MpCisgICAgc3VmZml4ZXMgOiBDb3VudGVyW3N0cl0gPSBjb2xs
ZWN0aW9ucy5Db3VudGVyKCkKKyAgICBmb3IgZiBpbiBmdW5jczoKKyAgICAgICAgaWYgY291bnRz
W2YubmFtZV0gPiAxOgorICAgICAgICAgICAgZi5vdmVybG9hZF9zdWZmaXggPSBzdHIoc3VmZml4
ZXNbZi5uYW1lXSkKKyAgICAgICAgICAgIHN1ZmZpeGVzLnVwZGF0ZShbZi5uYW1lXSkKKworCitj
bGFzcyBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBp
bXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9pbXBsXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dlYmtp
dF9pcGNfY3BwX2ltcGwoZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9u
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5p
bXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAg
ICAgICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9mdW5j
dGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQor
CisKK2NsYXNzIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGdl
bmVyYXRvci4iCisgICAgbXNnczogTGlzdFt3ZWJraXRfaXBjX21zZ10KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5tc2dz
ID0gW3dlYmtpdF9pcGNfbXNnKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdldF9tZXNz
YWdlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oc3RyKG0pIGZvciBtIGluIHNlbGYu
bXNncykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZShjb250
ZXh0X21lc3NhZ2VzX2ZuLCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdl
dF9tZXNzYWdlcygpKSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM6IHN0ciwgYXJn
X2luZGV4OiBpbnQpOgorICAgIHIgPSBhcmdfc3BlYy5yc3BsaXQoIiAiLCAxKQorICAgIG5hbWUg
PSAiIgorICAgIHR5cGUgPSBOb25lCisgICAgaWYgbGVuKHIpID4gMSBhbmQgclswXSAhPSAiY29u
c3QiOgorICAgICAgICBuYW1lID0gclsxXS5zdHJpcCgpCisgICAgICAgIHR5cGUgPSBnZXRfY3Bw
X3R5cGUoclswXSkKKyAgICBlbHNlOgorICAgICAgICBuYW1lID0gImFyZ3t9Ii5mb3JtYXQoYXJn
X2luZGV4KQorICAgICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKGFyZ19zcGVjKQorICAgIHJldHVy
biBjcHBfYXJnKHR5cGUsIG5hbWUpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19z
cGVjczogSXRlcmFibGVbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRlX2Nw
cF9hcmcoYXJnX3NwZWM9ZSwgYXJnX2luZGV4PWkpIGZvciBpLCBlIGluIGVudW1lcmF0ZShhcmdz
X3NwZWNzKV0pCisKKworZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVj
OiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAgICBy
ZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0dXJu
X3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjcyksIGlzX2V4dGVuc2lv
bj1pc19leHRlbnNpb24pCisKKworZGVmIHJlYWRfbGluZXNfdW50aWwobGluZXMgOiBJdGVyYWJs
ZVtzdHJdLCBtYXRjaCA6IHN0cikgLT4gR2VuZXJhdG9yW3N0ciwgTm9uZSwgTm9uZV06CisgICAg
Zm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIGlmIHJlLm1hdGNoKG1hdGNoLCBsaW5lLnN0cmlw
KCkpOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgeWllbGQgbGluZQorCitkZWYgbWFpbigp
OgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCJ1c2FnZTogJXByb2cgW29w
dGlvbnNdIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBoZWxwPSJQcmludCBzb21lIGRlYnVnIGluZm8gZnJvbSB0aGUgZ2VuZXJhdG9y
IHNjcmlwdCIpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgICMgQ29u
c3RydWN0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUgZnJvbSB3ZWIgcHJvY2VzcyB0
byBHUFUgcHJvY2Vzcy4KKworICAgICMgRklYTUU6IFVudGlsIGV4dGVuc2lvbnMgaGVhZGVyIGlz
IHJlbW92ZWQsIHdlIG5lZWQgdG8gY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAj
IHdpdGggdGhlIGRpc3RpbmN0aW9uIG9mIHdoZXRoZXIgYSBmdW5jdGlvbiBpcyBvciBpcyBub3Qg
YW4gZXh0ZW5zaW9uIGZ1bmN0aW9uLgorICAgIGV4dGVuc2lvbl9zaWduYXR1cmVzIDogU2V0W3N0
cl0gPSBzZXQoKQorICAgIHdpdGggb3BlbihleHRlbnNpb25zX2lucHV0X2ZuKSBhcyBmOgorICAg
ICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNo
KHIiLip2aXJ0dWFsIChcUyspXHMrKFx3KylcKCguKilcKSA9IDA7IiwgbGluZSkKKyAgICAgICAg
ICAgIGlmIG06CisgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZT1tWzJdLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3Bl
Yz1tWzFdLAorICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3Nw
ZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249VHJ1ZSwKKyAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMudXBkYXRl
KFtzdHIoZnVuYyldKQorICAgIGZ1bmNzID0gW10KKyAgICB1bmltcGxlbWVudGVkID0gW10KKyAg
ICBmb3IgZm4gaW4gZnVuY3Rpb25zX2lucHV0X2ZuczoKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBh
cyBmOgorICAgICAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgICAg
ICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRnVuY3Rpb25zIHdpdGggYSBn
ZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdw
dXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAg
Zm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQg
YnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgbSA9IHJl
Lm1hdGNoKHIiXHMqKFxTKylccysoXHcrKVwoKC4qKVwpIGZpbmFsOyIsIGxpbmUpCisgICAgICAg
ICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgZnVuY19uYW1lID0gbVsyXQorICAg
ICAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZT1mdW5jX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5f
c3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBfc3BsaXRf
YXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBmdW5jLmlz
X2V4dGVuc2lvbiA9IHN0cihmdW5jKSBpbiBleHRlbnNpb25fc2lnbmF0dXJlcworICAgICAgICAg
ICAgICAgICAgICBpZiBmdW5jLmlzX2ltcGxlbWVudGVkKCk6CisgICAgICAgICAgICAgICAgICAg
ICAgICBmdW5jcy5hcHBlbmQoZnVuYykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaW1wbGVtZW50ZWQuYXBwZW5kKGZ1bmMpCisKKworICAgIHdl
YmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZmaXgoZnVuY3MpCisgICAgIyBJbml0aWFsaXpl
IFdlYktpdCBJUEMgZ2VuZXJhdGlvbi4gQ29uc3RydWN0IHR5cGUgbWFwcGluZ3MgZm9yIHRoZSB1
c2VkIEMrKyB0eXBlcyAtPiBJUEMgdHlwZXMuCisgICAgIyBUT0RPOiBuYW1lc3BhY2luZyBpc3N1
ZXMuCisgICAgYWlfdHlwZSA9IGdldF9jcHBfdHlwZSgiQWN0aXZlSW5mbyYiKQorICAgIGFpX3Ry
YW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIikKKyAgICB3ZWJraXRfaXBjX3R5cGVzW2FpX3R5cGVdID0gYWlfdHJhbnNmZXJf
dHlwZQorCisgICAgd2l0aCBvcGVuKHR5cGVzX2lucHV0X2ZuKSBhcyBmOgorICAgICAgICBsaW5l
cyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRp
bChsaW5lcywgIi8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0
eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToK
KyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChs
aW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQu
Iik6CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHN0ZDo6aXNf
c2FtZV92PChcdyspLCAoXHcrKT5cKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2dldF9jcHBfdHlwZShtWzFdKV0gPSBnZXRfY3Bw
X3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJl
Lm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcr
KVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5
cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9j
cHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVd
ID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNb
KGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAg
d2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9z
dGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEZJWE1F
OiBIZXJlIHdlIHVzZSA8PSBpbnN0ZWFkIG9mID09IGR1ZSB0byBwb2ludGVycywgc3VjaCBhcyBH
Q0dMc3luYywgR0NHTGludHB0ciwgLi4uLgorICAgICAgICAgICAgIyBUaGlzIGVuZHMgdXAgZmFp
bGluZyBpZiB0aGVyZSBldmVyIGlzIGFycmF5cyBvZiB0aGVzZSB0eXBlcywgc2luY2UgYXJyYXlz
IGFyZSBjdXJyZW50bHkKKyAgICAgICAgICAgICMgcmVpbnRlcnByZXQtY2FzdGVkLgorICAgICAg
ICAgICAgIyBXZWJLaXQgSVBDIHJlcXVpcmVzIG9uZSBzaXplZCB0eXBlLCBidXQgdGhlIHNpemUg
b2YgdGhlc2UgcG9pbnRlci1iYXNlZCB2YWx1ZXMgd2lsbCBjaGFuZ2UKKyAgICAgICAgICAgICMg
YmFzZWQgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0
aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkK
KyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5
cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQor
ICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNf
dHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRp
Y19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXplb2ZcKChcdyspXCkgJiYgc2l6ZW9mXCgo
XHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgor
ICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAg
ICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjcHBf
Y2FzdF90aHJvdWdoX3R5cGUgPSBnZXRfY3BwX3R5cGUobVs0XSkKKyAgICAgICAgICAgICAgICB3
ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9yZWlu
dGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkK
KyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBj
cHBfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNwcF9j
YXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgIyBGb3Ig
YWxsIHR5cGVzIGluIHRoZSBpbnB1dCBBUEksIGZvcm0gY29ycmVzcG9uZGluZyBJUEMgdHlwZXMg
YW5kIGNvbnZlcnNpb25zLgorICAgICMgVE9ETzogdGhpcyBpcyBub3QgZHJpdmVuIGJ5IHRoZSB0
eXBpbmcuCisgICAgYWxsX3R5cGVzID0gc2V0KCkKKyAgICBmb3IgZnVuYyBpbiBmdW5jczoKKyAg
ICAgICBhbGxfdHlwZXMudXBkYXRlKGZ1bmMuYXJncy50eXBlcygpICsgW2Z1bmMucmV0dXJuX3R5
cGVdKQorICAgICMgU29ydCBieSBsZW4gc28gdGhhdCB0ZW1wbGF0ZSBhcmdzIGNvbWUgYmVmb3Jl
IHRlbXBsYXRlcy4KKyAgICBmb3IgY3BwX3R5cGUgaW4gc29ydGVkKGFsbF90eXBlcywga2V5PWxh
bWJkYSB4OiBsZW4oeC50eXBlX25hbWUpKToKKyAgICAgICAgaWYgY3BwX3R5cGUgaW4gd2Via2l0
X2lwY190eXBlczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAKKyAgICAgICAgaWYgY3Bw
X3R5cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3BwX3R5cGUuaXNfc3BhbigpOgorICAgICAgICAg
ICAgdHJhbnNmZXJfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNmZXJfdHlwZShjcHBf
dHlwZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJf
dHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICBpZiBjcHBfdHlwZS5nZXRfY29udGFp
bmVkX3R5cGUoKS5pc19jb25zdCgpOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNf
Y29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IHdlYmtpdF9pcGNfc3Bhbl90
cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICAgICAgICAg
IHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1sodHJhbnNmZXJfdHlwZSwgY3BwX3R5cGUpXSA9
IHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5
cGUoY3BwX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJz
WyhzdG9yZV90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2Fz
dF9jb252ZXJzaW9uCisgICAgICAgIGVsaWYgY3BwX3R5cGUuaXNfcmVmZXJlbmNlKCkgb3IgY3Bw
X3R5cGUuaXNfY29uc3RfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29udGFpbmVyKCk6Cisg
ICAgICAgICAgICB2YWx1ZV90eXBlID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKSBpZiBub3Qg
Y3BwX3R5cGUuaXNfY29udGFpbmVyKCkgZWxzZSBjcHBfdHlwZQorICAgICAgICAgICAgaWYgdmFs
dWVfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgICAgICBjb250YWluZWRfdHlwZSA9
IHZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX2NvbnRhaW5lZF90eXBlID0gd2Via2l0X2lwY190eXBlc1tjb250YWluZWRfdHlwZV0KKyAg
ICAgICAgICAgICAgICBpZiB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID09IGNvbnRhaW5lZF90
eXBlOgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHZh
bHVlX3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0cmFu
c2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKGYie3ZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lcl9uYW1l
KCl9PHtzdHIod2Via2l0X2lwY19jb250YWluZWRfdHlwZSl9PiIpCisgICAgICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlwZQorICAgICAgICAg
ICAgICAgICAgICAjIFRPRE86IEhlcmUgbWlnaHQgYmUgY2FzZSB3aGVyZSBWZWN0b3I8R0NHTGlu
dD4gd2FzIHVzZWQgaW4gdGhlIGludGVyZmFjZSBhbmQgVmVjdG9yPGludDMyX3Q+IGlzIHVzZWQK
KyAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgSVBDIGRlZmluaXRpb24uIFRoZXJlIGlzIG5v
IHNlbnNpYmxlIHdheSB0byBkbyB0aGlzIGF0IHRoZSBtb21lbnQuIFdlIGRvIG5vdCBjb252ZXJ0
LCByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgIyBleHBlY3QgdGhhdCBhbGwgdGhlIGludm9j
YXRpb25zIGFyZSB0YWtlbiBjYXJlIG9mIHRoZSBmYWN0IHRoYXQgR0NHTGludCBpcyB0aGUgc2Ft
ZSB0eXBlIGFzIGludDMyX3QuCisgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIG5vdCBo
b2xkIGZvciBhbGwgdHlwZXMgc3VjaCBhcyBHQ0dMYm9vbGVhbi4KKyAgICAgICAgICAgICAgICAg
ICAgI3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUp
XSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB2YWx1ZV90
eXBlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBl
XSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAKKyAgICAjIFRoZSBpbnB1dCB0byB0
aGUgZ2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUuCisgICAgIyBSdW4g
dGhlIHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBnZW5lcmF0b3JzID0gWworICAgICAgICBjb250
ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcywgdW5pbXBsZW1lbnRlZCks
CisgICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAgICAg
ICAgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgIF0KKyAgICBm
b3IgZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBnLmdlbmVyYXRlKCkKKworICAgIGlmIG9wdGlv
bnMudmVyYm9zZToKKyAgICAgICAgcHJpbnQoIkltcGxlbWVudGVkOiIpCisgICAgICAgIHByaW50
KCIiLmpvaW4oZiIgICAge3N0cihpKX0gZmluYWxcbiIgZm9yIGkgaW4gZnVuY3MpKQorICAgICAg
ICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYiICAgIHtz
dHIodSl9IGZpbmFsXG4iIGZvciB1IGluIHVuaW1wbGVtZW50ZWQpKQorICAgICAgICBwcmludChm
IkltcGxlbWVudGVkOiB7bGVuKGZ1bmNzKX0sIHVuaW1wbGVtZW50ZWQ6IHtsZW4odW5pbXBsZW1l
bnRlZCl9LCB0b3RhbDoge2xlbihmdW5jcykrbGVuKHVuaW1wbGVtZW50ZWQpfSIpCisgICAgICAg
IHByaW50KCJDKysgdHlwZSBtYXAgdG8gV2ViS2l0IElQQyB0eXBlIG1hcDoiKQorICAgICAgICBm
b3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgaW4gd2Via2l0
X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSAtPiB7c3Ry
KHdlYmtpdF9pcGNfdHlwZXNbdF0pfSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZXMgd2l0aG91
dCBXZWJLaXQgSVBDIHR5cGU6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1z
KCk6CisgICAgICAgICAgICBpZiB0IG5vdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAg
ICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IikKKyAgICAgICAgcHJpbnQoIldlYktpdCBJUEMg
dHlwZSBjb252ZXJzaW9ucyIpCisgICAgICAgIGZvciAoYSwgYiksIGNvbnZlcnRlciBpbiB3ZWJr
aXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIHByaW50KGYiICAg
IHtzdHIoYSl9IC0+IHtzdHIoYil9IDoge2NvbnZlcnRlci5fX25hbWVfX30iKQorICAgICAgICBw
cmludCgiRG9uZS4iKQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f
IjoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDhiOTM4ZmExMWY4MTVkMzdlZTgwMzc3
ZmQ2NGIwYmM3M2RjODE0MC4uNzYxNmE3YjcwMTFjZGQxZmY3Yjk4NmY2ZDIzMmIxMzE0OTZiY2U5
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcg
b2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAg
IHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKwor
ICAgICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGUgbWlzc2luZyBmdW5jdGlvbmFs
aXR5LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxlIHRoZSB0ZXN0cyB0aGF0IGFjdHVhbGx5
IHBhc3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBiZWZvcmUgdGhlCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAy
MC0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIHJlYWRhYmxlL3dyaXRhYmxlIHRvIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2
Nzg3MzE4NTMwNTgwMDMzOTBmZDc1MzdkYzBjNi4uZGE1NjM4NjI4OWQ2Yzk0ZDRmZmFlY2E4OWFk
MmJhOTkzYjEwMTZjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zMTcsNiArMzE3LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJl
YWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3Rz
L3dlYmdsIFsgU2tpcCBdCiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lw
IF0KIAord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1z
ZS1mbGlwWS1mYWxzZS5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3Qv
Y2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFRpbWVvdXQgXQor
d2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1k
aXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxOTM0
OSBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFRpbWVv
dXQgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3Jl
aS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmds
L3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5
MzUyIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1s
IFsgRmFpbHVyZSBdCisKIHdlYmdwdSBbIFNraXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdv
cmtzLW9uLWNvbnRyb2wtdHlwZXMuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415128</attachid>
            <date>2020-12-01 04:33:16 -0800</date>
            <delta_ts>2020-12-01 04:44:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201143313.patch</filename>
            <type>text/plain</type>
            <size>568075</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4
OGJkNDA3N2EwYzU0YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQxYTM1
Y2MwMDhhZWE2OWZmZjJjZDkxZDAyMzJlZmEwNzFlN2VkNTQuLjk4MTE1ZTE1Yjc2MzQ5NjFhYzM5
MGRiMjNkNTMwYjczZDI1ZDUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJj
Nzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQw
MGIwZmNlMjQxZWZmYjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiAr
MzU3LDE0IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyMmVkNmNjMjRlNmU2Njg4NjBmNzRjYzllZGQ4NGIzZDlkZGMzMC4uOTUzMWI0
OTI3MWQwZDQwMWFkODIyNzkxZjg0ZWZkODY1N2Q2NmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2
RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07
CisJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsK
IAkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIy
Mjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2
RTcyRjU0RjIyOURDRDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5
NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Niw2
ICsyMjQ2LDggQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkz
NkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjMsOSAr
MTAyMjUsMTQgQEAKIAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEw
MzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4
MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcy
NTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNldHRpbmdzLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNFMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5pZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjEzLDYgKzI2NjIwLDggQEAKIAkJ
CQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJ
CQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQx
ODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJ
N0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2Ft
cGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9T
YW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovLApAQCAtMjY3NzksNiArMjY3ODgsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5
RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBE
NkExMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlC
Mjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJ
CQkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBF
MDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1
OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RB
NTk1OTcyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2
NzkwLDYgKzI2ODAxLDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZC
RDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYx
NkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLywKIAkJCQlDREVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2Vy
LmNwcCAqLywKIAkJCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8sCiAJCQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwICovLApAQCAtMzIwODksNiArMzIxMDEsNyBAQAogCQkJCTdCMTAzMzlFMjU0
OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUz
QyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0MDI1LDYgKzM0MDM4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBF
Q0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAw
MTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIy
RkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVv
U2FtcGxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVj
NzE3NDU5N2YwNmUwZTUwOWU3OGZhYS4uMmY4Y2JmMDg3MDUwYzVmMDg2ODBmMmVkOTdkMWYzMDg4
NjYxYTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3NywyMSArNjc3LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZl
clN1YkRhdGEoKSBjYWxscyB0byB1c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0
ciA9IG1fY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNl
dC51bnNhZmVHZXQoKSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0
aFB0ci51bnNhZmVHZXQoKSAqIGNoZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBo
aWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNw
eShzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5i
eXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICog
ZWxlbWVudFNpemUpOwotCi0gICAgaWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkp
Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgImdldEJ1ZmZlclN1YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZm
ZXIiKTsKLSNlbmRpZgotICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCk7CisgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9m
ZnNldCwgbWFrZUdDR0xTcGFuKHN0YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVz
cygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBj
b3B5TGVuZ3RoICogZWxlbWVudFNpemUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIpCkBAIC0xNzAyLDcgKzE2OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50MzJMaXN0JiYgbGlzdAogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYkk0dWl2IiwgIm5vIGFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBpbnQgc2l6ZSA9IGxpc3QubGVuZ3RoKCk7CiAgICAgaWYgKHNpemUgPCA0
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCAidmVydGV4QXR0cmliSTR1aXYiLCAiYXJyYXkgdG9vIHNtYWxsIik7CkBAIC0xOTY3
LDkgKzE5NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+
Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0
LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8
V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAg
LTIwMTQsNyArMjAwMyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBs
ZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQogCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHVu
aXQgPj0gbV9ib3VuZFNhbXBsZXJzLnNpemUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJpbmRTYW1wbGVyIiwgImludmFs
aWQgdGV4dHVyZSB1bml0Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNTksMTcgKzIwNDgsMTEg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAgICAgICAgaW50IHZh
bHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BWF9MT0Q6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0
IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2Ft
cGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOgorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLm9iamVjdCgp
LCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxp
ZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxMTgsNyArMjEwMSw3IEBA
IEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdMU3lu
YyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImNsaWVudFdhaXRTeW5jIiwgInRpbWVv
dXQgPiBNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTCIpOwogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChmbGFncyAmJiBmbGFncyAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1lOQ19GTFVTSF9DT01NQU5E
U19CSVQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJjbGllbnRXYWl0U3luYyIsICJpbnZhbGlkIGZsYWdzIik7CiAgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CkBAIC0yMTc5LDkg
KzIxNjIsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVs
ZXRlZCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIs
IGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQVNTRVJUKGZl
ZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAKKwogICAg
IGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRi
YWNrIG9iamVjdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjQ4LDcgKzIyMzEsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIVZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tQ
cmltaXRpdmVNb2RlKHByaW1pdGl2ZU1vZGUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJiZWdpblRyYW5zZm9ybUZlZWRiYWNr
IiwgImludmFsaWQgdHJhbnNmb3JtIGZlZWRiYWNrIHByaW1pdGl2ZSBtb2RlIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIyODgsNyArMjI3MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJlbmRUcmFuc2Zvcm1GZWVkYmFjayIs
ICJ0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwogCiAg
ICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVzZWQoZmFsc2UpOwpAQCAtMjI5OSw3
ICsyMjgyLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY28KIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJ0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpT
RVBBUkFURV9BVFRSSUJTOgogICAgICAgICBpZiAodmFyeWluZ3Muc2l6ZSgpID4gbV9tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicykgewpAQCAtMjQ4NSwyNCArMjQ2OCwyNCBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPEdDR0xpbnQ+IHJl
c3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3aXRjaCAocG5hbWUp
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
VFlQRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
eCk7IH0pOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRToKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMdWludD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TklGT1JNX0JMT0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
T0ZGU0VUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQVJSQVlfU1RSSURF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklYX1NUUklERToKLSAg
ICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlm
b3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dCk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5p
Zm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOiB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFt
Lm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgpOyB9KTsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDggKzM1NTUsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoQ2xlYXJDYWxs
ZXJPdGhlcik7CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+
cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmUwM2E4OWZjNjk1M2QyMDAwODJmMjQ5NTQ5
NzYzYmUwNWE5NjE5NS4uNzg0NGFkZTMzMmIxNGMyYzAyY2JiMjRmMjIzNmY3ZGFmNWU3MjBhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTczMiw4ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiAgICAgfQotCi0gICAgYXV0byBjb250ZXh0ID0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFzRWxl
bWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENv
bnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9y
RXZlbnQsCkBAIC00Mzk1LDE1ICs0Mzk0LDEyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoCiAg
ICAgdm9pZCogZGF0YSA9IHBpeGVscy5iYXNlQWRkcmVzcygpOwogCiAjaWYgVVNFKEFOR0xFKQot
ICAgIEdDR0xzaXplaSBsZW5ndGggPSAwOwotICAgIEdDR0xzaXplaSBjb2x1bW5zID0gMDsKLSAg
ICBHQ0dMc2l6ZWkgcm93cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVh
ZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBp
eGVscy5ieXRlTGVuZ3RoKCksICZsZW5ndGgsICZjb2x1bW5zLCAmcm93cywgZGF0YSwgZmFsc2Up
OworICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSkpOwogI2Vsc2UK
ICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCiAgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgZGF0YSk7CiAgICAgZWxzZQotICAgICAgICBt
X2NvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBk
YXRhKTsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKaW5k
ZXggNGE0MjBiZjBhMTE2Y2NjYWI1ZGI4N2EyNmQ4YmEyNDI4MjhmMmQ1NS4uODlhNjNlMzYyMTcx
MjI0YjQxM2E0OTU0MjMxMmUzODM2YjZlYmMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFN5bmMuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViR0xTeW5jOjp1cGRhdGVD
YWNoZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2FsbG93Q2FjaGVVcGRhdGUgPSBmYWxzZTsKLSAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldFN5bmNpdihtX3N5bmMsIEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX1NU
QVRVUywgc2l6ZW9mKG1fc3luY1N0YXR1cyksICZtX3N5bmNTdGF0dXMpOworICAgIG1fc3luY1N0
YXR1cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0U3luY2kobV9zeW5jLCBHcmFw
aGljc0NvbnRleHRHTDo6U1lOQ19TVEFUVVMpOwogICAgIGlmIChtX3N5bmNTdGF0dXMgPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OlVOU0lHTkFMRUQpCiAgICAgICAgIHNjaGVkdWxlQWxsb3dDYWNoZVVw
ZGF0ZShjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ZGFhMzRjYzJkNWQw
Nzk2MmVlMWE2MWM4MjUzYmViNmE5NDY1NDZjLi5jMmE2OWI4NmJjMzE4MTY3YTMzMmNmZmY2ZGVh
ZjRjZjhiMjlmMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MzAsNiArNTMwLDEzIEBA
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlcmluZ01vCiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUltYWdl
QnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMPiBDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jbGllbnQuY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZGlzcGxheUlE
KCkpOworfQorI2VuZGlmCisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpAQCAtNTQzLDYgKzU1MCw3
IEBAIHZvaWQgQ2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lCiAgICAgbV9wYWdlLndpbmRvd1NjcmVlbkRpZENo
YW5nZShkaXNwbGF5SUQsIG5vbWluYWxGcmFtZUludGVydmFsKTsKIAogI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpCisgICAgLy8gVE9ETzogR1BVIHByb2Nl
c3MuIENoYW5nZSB0byBHQ0dMTWFuYWdlciwgbWFrZSBpdCB3b3JrLCByZXR1cm4gbnVsbCBmb3Ig
b3RoZXJzLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLnNjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIHRoaXMpOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaAppbmRleCAyMzMyOGY1NmExOTEyMDQ5ZDQ3OTc2NDFkMDE0MDA1NTE1OTAzNTAyLi5h
ODlkZDFhMWQ4NjVlNTMyOGViMDUwNTc2NTQwZDNmMjMyYTNjZmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmgKQEAgLTg2LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgUGxhdGZvcm1E
aXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIE9wdGlvbmFsPHVuc2lnbmVkPikgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDNhOWUxZDY2OTA5N2U1OTVk
OWI1N2ZjNGNmZjdlNjFhNWQxOGQwYTkuLjhmMThmZGZmMDQ5OTAzNzU4OThiMTdiOTI4Y2MwZTA2
MDBlOTFjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI1LDYgKzMyNSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVybiBudWxscHRy
OyB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9CisjZW5kaWYKKwogICAgIC8vIFBhc3MgbnVsbHB0ciBhcyB0aGUgR3JhcGhpY3NMYXll
ciB0byBkZXRhdGNoIHRoZSByb290IGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290
R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCmluZGV4IDQzZGIxZmZhZTAxMmJiMjE4OTRm
MmNhOTYzMDcyMTQ3NjZhYWRkOWUuLjczODExOGIyMWUzYzMzN2IyZTUzMWM5OTZkMDk5YmQzZTlh
NTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2lu
Y2x1ZGUgIldpZGdldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Myw2ICs2NCwxMCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAw
OwogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmKSBjb25zdCA9IDA7CisjZW5kaWYKKwogICAgIC8vIE1ldGhvZCBmb3IgcmV0cmlldmlu
ZyB0aGUgbmF0aXZlIGNsaWVudCBvZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFn
ZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCA9IDA7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCmluZGV4IGEy
MjUzYzgxYmZlMGEwYmIwOTEwYmRlNmMwZGIyNmFhNzg0NTJmYjMuLjdhZmJhNmVjNTA4ODE5Y2Mx
ZWFiYWRjY2RlMGJiNzlhODM4NDJkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCkBAIC0zNCwxMyArMzQsMTYgQEAgV0VCQ09S
RV9FWFBPUlQgaW50IHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwogCiAjaWYgUExBVEZPUk0o
V0lOKQogaW5saW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQoraW5s
aW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogI2VsaWYgIVBMQVRG
T1JNKENPQ09BKQogaW5saW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiB0cnVlOyB9
CitpbmxpbmUgYm9vbCBpc0luR1BVUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogCiBib29sIGlzSW5XZWJQcm9jZXNzKCk7Citib29sIGlz
SW5HUFVQcm9jZXNzKCk7CiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpOwogCiBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KaW5kZXggZmJkMWQ0M2MwOGY4NmRjM2MxOGVkMjE1
NjBmMDhjZjg3ZmExYWYzOS4uYjA2ZmY0N2RmYzU0MTcyMWY2NGFhMGRlMzhiM2I5MmY4ODM4MjQ2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KQEAgLTk2LDYgKzk2LDEyIEBAIGJvb2wg
aXNJbldlYlByb2Nlc3MoKQogICAgIHJldHVybiBtYWluQnVuZGxlSXNXZWJQcm9jZXNzOwogfQog
Citib29sIGlzSW5HUFVQcm9jZXNzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNH
UFVQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaGFz
UHJlZml4OkAiY29tLmFwcGxlLldlYktpdC5HUFUiXTsKKyAgICByZXR1cm4gbWFpbkJ1bmRsZUlz
R1BVUHJvY2VzczsKK30KKwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0YXRp
YyBib29sIG1haW5CdW5kbGVJc05ldHdvcmtQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl0gaGFzUHJlZml4OkAiY29tLmFwcGxlLldlYktpdC5OZXR3b3Jr
aW5nIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNH
TC5oCmluZGV4IDI2MjdhOWI3ZjQ0NjUxMGNkYzAzNDFkYjg2NzM0NDc0OTUxNDdiODguLjQxYWRk
NzM4ZGRlYTIyMjQ2ZDBiOWIwNjc3OTM0NWRkNjA5OWRjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yNjcsNyArMjY3LDEwIEBA
IHB1YmxpYzoKICAgICAvLyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKICAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBMRVRJT05fU1RBVFVTX0tIUiA9IDB4OTFCMTsKIAot
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRl
cnN0YW5kcy4KKyAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbgorICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSA9IDB4OTNBODsK
KworICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KIAogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAg
ICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20gdGhlIEdMX0FS
Ql9yb2J1c3RuZXNzCkBAIC0yNzksMTAgKzI4MiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBH
Q0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKICAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25n
IHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBs
b25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVu
c2lnbmVkIGxvbmcgZmlsdGVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xp
bnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdD
R0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsKIAog
ICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lk
IHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5z
aWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25l
ZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAKICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygp
ID0gMDsKQEAgLTI5NiwxNSArMjk5LDE1IEBAIHB1YmxpYzoKICAgICAvLyBHTF9FWFRfZGVidWdf
bWFya2VyCiAgICAgdmlydHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpID0gMDsKIAogICAgIC8vIEdMX0FS
Ql9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJzCiAgICAgdmlydHVhbCB2b2lkIGRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAgICAv
LyBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCi0gICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0
dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwog
CiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2aXJ0dWFsIHZvaWQg
cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdD
R0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgPSAwOwpAQCAtMzMyLDcgKzMzNSw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZv
aWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xm
bG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgPSAwOwpAQCAtMzU1LDcgKzM1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0jZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCBpc05WSURJQSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7CkBAIC0zNjcs
NiArMzY4LDcgQEAgcHVibGljOgogICAgIC8vIHRoYXQgbXVzdCBiZSBhdm9pZGVkLiBQb3J0cyBz
aG91bGQgaW1wbGVtZW50IHRoZXNlIGZsYWdzIG9uIHN1Y2ggY29uZmlndXJhdGlvbnMuCiAgICAg
dmlydHVhbCBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7
CisjZW5kaWYKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGRmNGExMTlhMzIwZGFjNmFlYjYzMDZk
NGM1MDk1NTE1ODhhMTk3M2UuLjM0ZDU1NmIwY2M0YTliYjFhZWE3YTVhOTY4YmM2OTViM2EyZTI3
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKQEAgLTI3LDExICsyNywxMyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIgogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpCiAKICNp
bmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKKyNp
bmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFn
ZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCkBAIC00MDMsNiArNDA1LDE1IEBA
IHN0YXRpYyBib29sIHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwgR3JhcGhp
Y3NDb250ZXh0R0w6OkRhdGFGb3JtYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMPiBHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykK
K3sKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IHJlc3VsdDsKKyAgICBpZiAoaG9zdFdp
bmRvdykKKyAgICAgICAgcmVzdWx0ID0gaG9zdFdpbmRvdy0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woYXR0cmlidXRlcyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdyk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KIAogR3JhcGhpY3NDb250ZXh0R0w6OkdyYXBoaWNzQ29udGV4dEdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgRGVzdGluYXRpb24gZGVzdGluYXRp
b24sIEdyYXBoaWNzQ29udGV4dEdMKikKICAgICA6IG1fYXR0cnMoYXR0cnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRl
eCBjOGUyNzlmMzkzYjZjYTgxMjNmY2VlZjdjODliMTI1YzUyZGM2ZWYzLi5iYTcyYjMxYWQ2NTg1
YjRhOWJiNWQ2YWRlZmMxYmYxM2RmNWYzYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTU5LDYgKzU5LDggQEAg
Y2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVjsKICNlbmRpZgogCisK
Ky8vIEJhc2UgY2xhc3MgZm9yIGdyYXBoaWNzIGNvbnRleHQgZm9yIGltcGxlbWVudGluZyBXZWJH
TCByZW5kZXJpbmcgbW9kZWwuCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTCA6IHB1YmxpYyBSZWZD
b3VudGVkPEdyYXBoaWNzQ29udGV4dEdMPiB7CiBwdWJsaWM6CiAgICAgLy8gV2ViR0wgMSBjb25z
dGFudHMuCkBAIC05MTEsMTQgKzkxMywxNyBAQCBwdWJsaWM6CiAgICAgICAgIEdDR0xpbnQgc2l6
ZTsKICAgICB9OwogCisgICAgLy8gQ3JlYXRlcyBhIEdyYXBoaWNzQ29udGV4dEdMIGluc3RhbmNl
IHRvIHJlbmRlciBpbnRvIG9mZnNjcmVlbiBkZXN0aW5hdGlvbiBpbiBjb250ZXh0IG9mIEhvc3RX
aW5kb3cuCisgICAgLy8gSG9zdFdpbmRvdyBtaWdodCBhZmZlY3QgdGhlIGRlY2lzaW9uIHdoaWNo
IGJhY2tlbmQgaXMgdG8gYmUgdXNlZC4KKyAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgSG9zdFdpbmRv
dyopOworCiAgICAgR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
LCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdM
KiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0woKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVudChDbGllbnQmIGNsaWVudCkgeyBt
X2NsaWVudHMuYWRkKCZjbGllbnQpOyB9CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ2xpZW50JiBj
bGllbnQpIHsgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsgfQogCi0gICAgLy8gV2ViR0wgZnVu
Y3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgotCisgICAg
Ly8gV2ViR0wgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xl
bnVtIHRleHR1cmUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKQEAgLTk4MCw3ICs5ODUsNiBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJz
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkq
IGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lKSA9IDA7CiAKQEAgLTEwMjUsMTAgKzEwMjksNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOwogCi0gICAgLy8gZ2V0VmVydGV4QXR0cmliCi0gICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSA9IDA7Ci0KICAgICB2aXJ0dWFsIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpID0gMDsKQEAgLTExMDAsNyAr
MTEwMCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0x2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCAgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKQEAgLTExMjQsOCArMTEyNSw3IEBAIHB1Ymxp
YzoKICAgICAvLyA9PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgogCiAgICAgdmlydHVh
bCB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdy
aXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQs
IEdDR0xzaXplaXB0ciBzaXplKSA9IDA7Ci0gICAgdmlydHVhbCBHQ0dMdm9pZCogbWFwQnVmZmVy
UmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxl
bmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgPSAwOwotICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4g
dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48
R0NHTHZvaWQ+IGRhdGEpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBsYXllcikgPSAwOwpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpID0gMDsKICAgICB2aXJ0dWFsIFBsYXRm
b3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAw
OwogICAgIC8vIGdldFF1ZXJ5UGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCog
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgPSAwOwpAQCAtMTE5Niw4ICsxMTk2
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgPSAwOwogICAgIC8vIGdldFNhbXBs
ZXJQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmly
dHVhbCBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRTYW1wbGVy
UGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSA9IDA7
CiAKICAgICB2aXJ0dWFsIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdD
R0xiaXRmaWVsZCBmbGFncykgPSAwOwogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gaXNTeW5jKEdD
R0xzeW5jKSA9IDA7CkBAIC0xMjA1LDcgKzEyMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBH
Q0dMZW51bSBjbGllbnRXYWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dM
dWludDY0IHRpbWVvdXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpID0gMDsKICAgICAvLyBnZXRT
eW5jUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZp
cnR1YWwgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpID0gMDsKIAog
ICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9i
amVjdCBpZCkgPSAwOwpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxh
dGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6
ZSkgPSAwOwogICAgIC8vIGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBj
YWxscyBhYm92ZS4KICAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGlj
ZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9y
bU5hbWVzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMs
IEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykgPSAwOworICAgIHZpcnR1
YWwgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBu
YW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSA9
IDA7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyCkBAIC0xMjMwLDcgKzEy
MzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSA9IDA7Ci0KKyAg
ICAKICAgICAvLyBPdGhlciBmdW5jdGlvbnMuCiAgICAgR0NHTGZsb2F0IGdldEZsb2F0KEdDR0xl
bnVtIHBuYW1lKTsKICAgICBHQ0dMYm9vbGVhbiBnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKTsK
QEAgLTEzOTQsNyArMTM5NCw2IEBAIGlubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1CiAgICAgcmV0dXJu
IHZhbHVlWzBdOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmlu
ZGV4IDg1YzI5YTRiNmU1NjExMGRjN2JkNzQ3YWUzMzk4N2MzNDAzNzVkZjEuLjNiMDY0YzNlNzY4
ZWNjNGJmMDJiNzYyNWE2ZjFlZGJjYzgwODc0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw3ICsyNSw5IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ0LDEzICs0NiwxNyBAQCB0eXBlZGVmIHVuc2lnbmVkIEdD
R0x1aW50OwogdHlwZWRlZiBmbG9hdCBHQ0dMZmxvYXQ7CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IEdDR0xoYWxmZmxvYXQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xjbGFtcGY7Cit0eXBlZGVmIGNoYXIg
R0NHTGNoYXI7Cit0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Cit0eXBlZGVmIHZv
aWQgR0NHTHZvaWQ7CisKKy8vIFRoZXNlIEdDR0wgdHlwZXMgZG8gbm90IHN0cmljdGx5IG1hdGNo
IHRoZSBHTCB0eXBlcyBhcyBkZWZpbmVkIGluIE9wZW5HTCBFUyAyLjAKKy8vIGhlYWRlciBmaWxl
IGZvciBhbGwgcGxhdGZvcm1zLgogdHlwZWRlZiBpbnRwdHJfdCBHQ0dMaW50cHRyOwogdHlwZWRl
ZiBpbnRwdHJfdCBHQ0dMc2l6ZWlwdHI7Ci10eXBlZGVmIGNoYXIgR0NHTGNoYXI7Cit0eXBlZGVm
IGludHB0cl90IEdDR0x2b2lkcHRyOwogdHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0OwogdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgR0NHTHVpbnQ2NDsKLXR5cGVkZWYgc3RydWN0IF9fR0xz
eW5jKiBHQ0dMc3luYzsKLXR5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKIAogdHlwZWRlZiBHQ0dMdWlu
dCBQbGF0Zm9ybUdMT2JqZWN0OwogCkBAIC01OCwxMyArNjQsMTcgQEAgdHlwZWRlZiBHQ0dMdWlu
dCBQbGF0Zm9ybUdMT2JqZWN0OwogdHlwZWRlZiB1bnNpZ25lZCBHTHVpbnQ7CiAjZW5kaWYKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCk+CitpbmxpbmUgY29uc3RleHByIHNpemVfdCBnY0dMU3BhbkR5bmFtaWNF
eHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gZ2NHTFNwYW5EeW5hbWljRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KIHN0cnVjdCBH
Q0dMU3BhbiB7Ci0gICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXkpCisgICAgZXhwbGljaXQg
R0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBzaXplID0gRXh0ZW50KQogICAgICAgICA6IGRhdGEo
YXJyYXkpCi0gICAgeyB9CisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUg
PT0gRXh0ZW50KTsKKyAgICB9CiAgICAgR0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQogICAg
ICAgICA6IGRhdGEoYXJyYXkpCiAgICAgeyB9CkBAIC03Miw2ICs4MiwxMiBAQCBzdHJ1Y3QgR0NH
TFNwYW4gewogICAgIEdDR0xTcGFuKGNvbnN0IEdDR0xTcGFuPFUsIEV4dGVudD4mIG90aGVyLCBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIHN0
ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCiAgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQogICAg
IHsgfQorICAgIEdDR0xTcGFuKHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAg
IDogZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CisgICAgR0NHTFNwYW4oY29uc3Qgc3RkOjph
cnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAg
ICB7IH0KICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEg
JiYgaSA8IGJ1ZlNpemUpOyByZXR1cm4gZGF0YVtpXTsgfQogICAgIFQmIG9wZXJhdG9yKigpIHsg
UkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBidWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CiAgICAgVCog
ZGF0YTsKQEAgLTc5LDcgKzk1LDcgQEAgc3RydWN0IEdDR0xTcGFuIHsKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgR0NHTFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKT4geworc3RydWN0IEdDR0xTcGFuPFQsIGdjR0xTcGFuRHluYW1pY0V4dGVudD4g
ewogICAgIEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3QgYnVmU2l6ZV8pCiAgICAgICAgIDogZGF0
YShhcnJheSkKICAgICAgICAgLCBidWZTaXplKGJ1ZlNpemVfKQpAQCAtMTIxLDYgKzEzNywxMSBA
QCBzdHJ1Y3QgR0NHTFNwYW48R0NHTHZvaWQ+IHsKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEp
CiAgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQogICAgIHsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dM
U3BhbihXVEY6OlZlY3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5KQorICAgICAgICA6IGRh
dGEoYXJyYXkuZGF0YSgpKQorICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgpICogc2l6ZW9m
KFUpKQorICAgIHsgfQogICAgIEdDR0x2b2lkKiBkYXRhOwogICAgIGNvbnN0IHNpemVfdCBidWZT
aXplOwogfTsKQEAgLTE1Miw4ICsxNzMsMTEgQEAgc3RydWN0IEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05d
KSAtPiBHQ0dMU3BhbjxULCBOPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUdDR0xTcGFuKFdU
Rjo6VmVjdG9yPFQ+JikgLT4gR0NHTFNwYW48VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgTj4KK0dDR0xTcGFuKHN0ZDo6YXJyYXk8VCwgTj4mKSAtPiBHQ0dMU3BhbjxULCBOPjsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorR0NHTFNwYW4oV1RG
OjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JikgLT4gR0NHTFNwYW48VD47CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBHQ0dMU3BhbjxUPiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNv
dW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjczMGYyZjMwNjhmZjAyOTFhZjViZTYwYTVjNWY2ZTFlZWI3YTRhZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5jcHAKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCisgICAgOiBHcmFwaGlj
c0NvbnRleHRHTChhdHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKK30KKworUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZSgpID0gZGVmYXVsdDsKKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIDA7Cit9CisKK0V4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmdldEV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkK
K3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRleHRB
dHRyaWJ1dGVzKCkuaXNXZWJHTDI7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IFRoZSBjYWxs
ZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQor
ICAgICAgICBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICBtX2xheWVyQ29tcG9zaXRl
ZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpt
YXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7Cisg
ICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgaWYgKCFhdHRycy5wcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJzLmRlcHRo
KQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6
OkRFUFRIX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5zdGVuY2lsKQorICAgICAgICAg
ICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVG
RkVSX0JJVDsKKyAgICB9CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9j
bGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaWRDb21wb3NpdGUoKTsKK30KKworYm9vbCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQgYnVm
ZmVycykKK3sKKyAgICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCkucHJlc2VydmVEcmF3aW5nQnVm
ZmVyKQorICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IGJ1ZmZlcnM7Cit9CisKK0dDR0xi
aXRmaWVsZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0
b0NsZWFyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xlYXI7Cit9CisK
K2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjplbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKQoreworICAgIC8vIFJlZGVjbGFyZWQgZm9yIGV4cG9ydCByZWFzb25zLgorICAg
IC8vIEZJWE1FOiBUaGUgd2hvbGUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgR3Jh
cGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOworfQorCitib29s
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJ
bml0aWFsaXplZCgpOworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25z
LmFkZChuYW1lKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBh
dmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykK
K3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJsZUV4dGVuc2lvbnMuc3BsaXQo
JyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAg
IGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykp
CisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworfQorCisj
aWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKworUGxhdGZvcm1MYXllciogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBudWxscHRyOworfQorI2VuZGlmCisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNlOGEwOTE0ZDhlOGUyOWUyZDI4MzEyNTA0
YzRlYjMyMGIxMTljMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTAsMCArMSwx
MTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgUExBVEZPUk0oQ09DT0EpCitjbGFz
cyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKKyNlbmRpZgorCisvLyBBIGJh
c2UgY2xhc3MgZm9yIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHByb3h5IHNpZGUgaW1wbGVtZW50
YXRpb24KKy8vIFRoaXMgaW1wbGVtZW50cyB0aGUgcGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29y
ZSBpbnRlcm5hbCBmdW5jdGlvbmFsaXR5OgorLy8gLSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBt
YW5hZ2VtZW50LgorLy8gLSBDb21wb3NpdGluZyBzdXBwb3J0LgorY2xhc3MgV0VCQ09SRV9FWFBP
UlQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0wsIHB1YmxpYyBFeHRlbnNpb25zR0wgeworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwor
ICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpIG92ZXJyaWRlOworCisgICAg
Ly8gT3RoZXIgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHVzaW5n
IEdyYXBoaWNzQ29udGV4dEdMOjppc0VuYWJsZWQ7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZv
cm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgRXh0ZW5zaW9uc0dMJiBnZXRF
eHRlbnNpb25zKCkgZmluYWw7CisgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBm
aW5hbDsKKyAgICBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVu
Y2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwor
ICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRCdWZm
ZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSBmaW5hbDsKKyAgICBHQ0dMYml0ZmllbGQgZ2V0
QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtMYXll
ckNvbXBvc2l0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZl
cigpIGZpbmFsOworCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAg
IEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKKyNlbmRpZgorICAgIC8vIE90aGVy
IEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBFeHRlbnNpb25zR0w6OmlzRW5hYmxl
ZDsKKyAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5z
dXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25z
dCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVF
eHRlbnNpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSA9IDA7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4mIHBsYXRmb3JtU3dhcENoYWluKCk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxX
ZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CisjZW5kaWYKKworICAgIC8vIEd1YXJkZWQgYnkgd2Fp
dFVudGlsSW5pdGlhbGl6ZWQoKS4KKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRl
bnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKKwor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOworCisgICAgLy8gRklYTUU6
IERyYXdpbmcgYnVmZmVyIGNsZWFyIHRyYWNraW5nIHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgY2xp
ZW50LgorICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKKyAgICBHQ0dMYml0Zmll
bGQgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSB7IDAgfTsKK307CisKK30KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MDJlYTRiNTU3YzY4NmNmZDgyM2QwODFj
NTVlNGEuLjdjMTUxZmEyODUwZjMzYzE0OWE5ZGM4MjIzODFiOGZjYmRlOWNiNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHAKQEAgLTQ2LDI4ICs0Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IEV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nKQogICAgIDogbV9pbml0aWFs
aXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkK
LSAgICAsIG1faXNOVklESUEoZmFsc2UpCi0gICAgLCBtX2lzQU1EKGZhbHNlKQotICAgICwgbV9p
c0ludGVsKGZhbHNlKQotICAgICwgbV9pc0ltYWdpbmF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNSZXN0
cmljdGVkTWF4aW11bVRleHR1cmVTaXplKGZhbHNlKQogICAgICwgbV91c2VJbmRleGVkR2V0U3Ry
aW5nKHVzZUluZGV4ZWRHZXRTdHJpbmcpCiB7Ci0gICAgLy8gRklYTUU6IGlkZWFsbHksIHJlbW92
ZSB0aGlzIGluaXRpYWxpemF0aW9uIGFsdG9nZXRoZXIuIEFOR0xFCi0gICAgLy8gc3Vic3VtZXMg
dGhlIHJlc3BvbnNpYmlsaXR5IGZvciBncmFwaGljcyBkcml2ZXIgd29ya2Fyb3VuZHMuCi0gICAg
bV92ZW5kb3IgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0
cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAgbV9yZW5kZXJlciA9IFN0cmluZyhyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOwotCi0gICAgVmVj
dG9yPFN0cmluZz4gdmVuZG9yQ29tcG9uZW50cyA9IG1fdmVuZG9yLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygi
bnZpZGlhIikpCi0gICAgICAgIG1faXNOVklESUEgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21w
b25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhbWQi
KSkKLSAgICAgICAgbV9pc0FNRCA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29u
dGFpbnMoImludGVsIikpCi0gICAgICAgIG1faXNJbnRlbCA9IHRydWU7Ci0gICAgaWYgKHZlbmRv
ckNvbXBvbmVudHMuY29udGFpbnMoImltYWdpbmF0aW9uIikpCi0gICAgICAgIG1faXNJbWFnaW5h
dGlvbiA9IHRydWU7CiB9CiAKIEV4dGVuc2lvbnNHTEFOR0xFOjp+RXh0ZW5zaW9uc0dMQU5HTEUo
KSA9IGRlZmF1bHQ7CkBAIC0xMDMsNyArODMsNyBAQCBib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpp
c0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1l
KTsKIH0KIAotaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkKK0dMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkK
IHsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOwogfQpAQCAtMTE0LDEw
ICs5NCwxMSBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICBpbnQgc291cmNlTGVuZ3RoID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRl
ciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7CisKICAgICBpZiAo
IXNvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgVmVjdG9y
PEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VS
Q0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCi0gICAgaW50IHJldHVy
bmVkTGVuZ3RoID0gMDsKKyAgICBHQ0dMaW50IHJldHVybmVkTGVuZ3RoID0gMDsKICAgICBnbDo6
R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlciwgc291cmNlTGVuZ3RoLCAmcmV0
dXJuZWRMZW5ndGgsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIXJldHVybmVkTGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTE0Nyw3ICsxMjgsNyBAQCB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiAgICAgbV9pbml0
aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNY
MSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBk
c3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3ZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBz
dXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xNTYsNyArMTM3LDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxv
bmcgc3JjWDEsIGxvbmcKICAgICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kw
LCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIp
OwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWdu
ZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9u
ZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjM1LDcgKzIxNiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogICAgIGdsOjpEcmF3QnVmZmVyc0VY
VChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MywxNSArMjI0
LDE1IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpCiAgICAgZ2w6OkRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lk
cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdsOjpEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxH
THZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7CisgICAg
Z2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCo+KG9mZnNldCksIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0zNTAsNyArMzMx
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bQogICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJJdWl2
Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZv
cm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC00MzEsNyArNDEyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0TXVsdGlzYW1w
bGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmQKICAgICBnbDo6R2V0
TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCB2
YWwpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKK3Zv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQz
OSw3ICs0MjAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbAogICAgIGdsOjpHZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQg
KnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNDU2LDU1ICs0MzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaQogICAg
IGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLXN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwg
aW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAgIC8vIFdlIGNhbiBhc3N1
bWUgdGhpcyBkb2Vzbid0IG92ZXJmbG93IGJlY2F1c2UgdGhlIGNhbGxpbmcgZnVuY3Rpb25zCi0g
ICAgLy8gdXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBpbnQgdG90YWxCeXRlcyA9IHdpZHRo
ICogaGVpZ2h0ICogNDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0g
NCkKLSAgICAgICAgcGl4ZWxzW2kgKyAzXSA9IDI1NTsKLX0KLSNlbmRpZgotCi12b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1
bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZm
ZXJPYmplY3QpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBj
YWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBwcmV2
aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxz
LgotICAgIGdsOjpGbHVzaCgpOwotICAgIGF1dG8gYXR0cnMgPSBtX2NvbnRleHQtPmNvbnRleHRB
dHRyaWJ1dGVzKCk7Ci0gICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBtX2NvbnRleHQt
Pm1faXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBjb25zdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX2NvbnRleHQtPm1fc3Rh
dGU7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9j
b250ZXh0LT5tX211bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIG1fY29udGV4dC0+cmVzb2x2ZU11
bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLSAg
ICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5t
X2Zibyk7Ci0gICAgICAgIGdsOjpGbHVzaCgpOwotICAgIH0KLSAgICAodm9pZCkgbV9jb250ZXh0
LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICBnbDo6UmVhZG5QaXhlbHNS
b2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxl
bmd0aCwgY29sdW1ucywgcm93cywgZGF0YSk7Ci0gICAgR0xlbnVtIGVycm9yID0gZ2w6OkdldEVy
cm9yKCk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0g
bV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKQotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVy
KGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pOwotCi0gICAg
aWYgKGVycm9yKSB7Ci0gICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJpbmcg
dGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4gdGhl
Ci0gICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEgY2hh
bm5lbCBmaXh1cCBiZWxvdy4KLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihl
cnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCAm
JiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4
dC0+bV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9j
b250ZXh0LT5tX211bHRpc2FtcGxlRkJPKSkpCi0gICAgICAgIHdpcGVBbHBoYUNoYW5uZWxGcm9t
UGl4ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihkYXRhKSk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7Ci0j
ZW5kaWYKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAq
cGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzQ0NSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
CiAgICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUyMCw3ICs0NTMsNyBAQCB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUocHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmgKaW5kZXggYTc3MzFkZmQyMGM1ZjAzYTMzNTkwM2ZhYTZlMzhmZjcyZjRiMjMyMy4uY2Jm
NDk4YmQ3YzFhMWFiOWFhNmI3MGZiNWQzOGFjNGI5MmZiMDM1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5oCkBAIC01NiwyMSArNTYsMTIgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAotICAgIHZv
aWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxv
bmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEs
IHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVu
c2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2
b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdD
R0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAs
IEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51
bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwg
R0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
dmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsgfQot
ICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7IH0KKyAgICB2
b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZv
aWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291
bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogICAgIC8vIEdMX0FOR0xFX3Jv
YnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMp
IG92ZXJyaWRlOwpAQCAtOTcsNyArODgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
ZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CkBAIC0xMzAsMTggKzEyMCw4IEBAIHByaXZhdGU6CiAgICAgLy8gV2Vh
ayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKIAotICAgIGJvb2wgbV9pc05WSURJQTsKLSAgICBi
b29sIG1faXNBTUQ7Ci0gICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9vbCBtX2lzSW1hZ2luYXRp
b247Ci0gICAgYm9vbCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOwotICAgIGJv
b2wgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7Ci0KICAgICBib29sIG1f
dXNlSW5kZXhlZEdldFN0cmluZyB7IGZhbHNlIH07CiAKLSAgICBTdHJpbmcgbV92ZW5kb3I7Ci0g
ICAgU3RyaW5nIG1fcmVuZGVyZXI7Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVs
YXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVu
YWJsZWQuCiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCAxMjdhM2I4ZGJhM2MzZjQ0Y2Q3NjVkZDhmYzcx
MWNkZDg3OGRlOWE0Li4xZDYwNGI3MWQ0ODE0ZjU5N2MyYzJmYzg5ZWRjOTY0OGRjMTNjNzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNDQzLDMyICs0NDMsNTMgQEAg
RXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiAg
ICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRh
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICByZWFk
blBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNp
emUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIGRhdGEuZGF0YSwgZmFsc2UpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHJlYWRuUGl4ZWxzSW1w
bCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIDAsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHZvaWQqPihvZmZzZXQpLCB0cnVlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEs
IGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpCiB7Ci0gICAgLy8gRklYTUU6IHJlbW92
ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5l
LiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJl
Zm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBjYWxs
cyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAorICAgIC8vIGFsbCBwcmV2aW91
cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgog
ICAgIGdsOjpGbHVzaCgpOwogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwog
ICAgIEdDR0xlbnVtIGZyYW1lYnVmZmVyVGFyZ2V0ID0gbV9pc0ZvcldlYkdMMiA/IEdyYXBoaWNz
Q29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0g
bV9tdWx0aXNhbXBsZUZCTykgeworICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CisgICAgaWYgKGF0dHJzLmFu
dGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgewogICAg
ICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KEludFJlY3QoeCwgeSwgd2lkdGgs
IGhlaWdodCkpOwogICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0
LCBtX2Zibyk7CiAgICAgICAgIGdsOjpGbHVzaCgpOwogICAgIH0KLSAgICBnbDo6UmVhZFBpeGVs
cyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOwotICAgIGlmIChhdHRy
cy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykK
KyAgICBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBnbDo6UmVhZG5QaXhl
bHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUs
IGxlbmd0aCwgY29sdW1ucywgcm93cywgZGF0YSk7CisgICAgR0xlbnVtIGVycm9yID0gZ2w6Okdl
dEVycm9yKCk7CisgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8g
PT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1
ZmZlclRhcmdldCwgbV9tdWx0aXNhbXBsZUZCTyk7CiAKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgLy8gQU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNSb2J1
c3RBTkdMRSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKKyAgICAgICAgLy8gc3ludGhl
dGljIGVycm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93Lgor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFh
dHRycy5hbHBoYSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1h
dCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpICYmIChtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2ZibyB8fCAo
YXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVG
Qk8pKSkKKyAgICBpZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYmICFhdHRycy5hbHBo
YSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lH
TkVEX0JZVEUpICYmIChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlh
bGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykpKQogICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oZGF0YSkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOwogI2VuZGlmCiB9CiAKLQogLy8gVGhlIGNvbnRlbnRzIG9mIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uIGZvbGxvdywgcG9ydGVkIHRvIHVzZSBBTkdMRS4K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQpAQCAtODk4LDIwICs5MTksMTYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LAogICAgIGdsOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwg
b2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQqIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJl
dHVybiBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsK
LX0KLQotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdD
R0xlbnVtIHRhcmdldCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm4gR0xfRkFMU0U7Ci0KLSAgICByZXR1cm4gZ2w6OlVubWFwQnVmZmVyKHRhcmdldCk7
CisgICAgICAgIHJldHVybjsKKyAgICBHQ0dMdm9pZCogcHRyID0gZ2w6Ok1hcEJ1ZmZlclJhbmdl
KHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOworICAgIGlmICghcHRyKQorICAgICAgICByZXR1cm47CisgICAgbWVtY3B5KGRhdGEu
ZGF0YSwgcHRyLCBkYXRhLmJ1ZlNpemUpOworICAgIGlmICghZ2w6OlVubWFwQnVmZmVyKHRhcmdl
dCkpCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlCdWZm
ZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dM
aW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBz
aXplKQpAQCAtMTAwOCwxNCArMTAyNSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbAogICAg
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihvZmZzZXQpLCAwKSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGlj
ZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykKK1ZlY3RvcjxHQ0dM
aW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywg
R0NHTGVudW0gcG5hbWUpCiB7CisgICAgVmVjdG9yPEdDR0xpbnQ+IHJlc3VsdCh1bmlmb3JtSW5k
aWNlcy5zaXplKCksIDApOwogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAotICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNp
emUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcGFyYW1zLmRhdGEoKSk7CisgICAg
Z2w6OkdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1
bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCByZXN1bHQuZGF0YSgpKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpCkBAIC0yMTAxLDIyICsyMTE5LDYgQEAgR0NH
TGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6OkdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0
QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNp
emUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIzOTIsMTIg
KzIzOTQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkoR0NHTGVu
dW0gdGFyZ2V0KQogICAgIGdsOjpFbmRRdWVyeSh0YXJnZXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihHQ0dMdWludCBpZCwgR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50KiBwYXJhbXMpCitHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UXVlcnlPYmplY3R1aShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAg
R0NHTHVpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBhcmFt
cyk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1
c3RBTkdMRShpZCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVl
OwogfQogCiAvLyBUcmFuc2Zvcm0gRmVlZGJhY2sgRnVuY3Rpb25zCkBAIC0yODM5LDIwICsyODQy
LDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVuCiAgICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJm
KHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1
ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlciwgcG5hbWUsIHZhbHVl
KTsKKyAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5h
bWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLCBw
bmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShz
YW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIEdDR0xzeW5jIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVudW0g
Y29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCkBAIC0yODk1LDEyICsyOTAyLDE0IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5jIHN5bmMsIEdDR0xi
aXRmaWVsZCBmbGFncywgR0NHTGluCiAgICAgZ2w6OldhaXRTeW5jKHN5bmMsIGZsYWdzLCB0aW1l
b3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xz
eW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBz
eW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2
YWx1ZTsKIAotICAgIGdsOjpHZXRTeW5jaXYoc3luYywgcG5hbWUsIGJ1ZlNpemUsIG51bGxwdHIs
IHZhbHVlKTsKKyAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjczNTk3ZjQ3NTNkMGJl
YzFkMDJlN2Q1ZmNmZGM2NDNhOTgzYzg4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmNwcApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKworI2lmIEVOQUJMRShH
UkFQSElDU19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6fkdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCkgPSBkZWZhdWx0OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTllODhjMmY5OWIxY2FhNTgxMTdjNzM5MTFhNTFiNjdkZGU2MzJiYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09DT0Ep
CisKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQW4gaW50ZXJmYWNlIGZvciBpbXBsZW1lbnRpbmcgZnJvbnQgYnVm
ZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2FwCisvLyBjaGFpbiBvZiBJT1N1cmZh
Y2VzLgorLy8gVGhlIGltcGxlbWVudG9yIHdpbGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMg
Zm9yIGRpc3BsYXkuCisvLyBUaGUgY2xpZW50IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJ
T1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRhdGEKKy8vIGJhY2sgb25jZSB0aGUg
SU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90
IG5lY2Nlc3NhcmlseQorLy8gYmUgYWJsZSB0byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYg
Zm9yIHJldXNlLgorLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xT
dXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlzIHdheQorLy8gd2hlbiB0aGUgZGlz
cGxheSBjbGllbnQgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxheSwgdGhlIGNsaWVu
dCBjYW4gY29udGludWUgdXNpbmcKKy8vIHRoZSBleGlzdGluZyBiaW5kaW5nIG9idGFpbmVkIHRo
cm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCk7CisgICAgc3RydWN0IEJ1ZmZl
ciB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1cmZhY2U7
IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCisgICAgICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIg
fTsgLy8gUHJvZHVjZXIgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1cmZh
Y2UpLgorICAgIH07CisgICAgLy8gUmV0dXJucyB0aGUgbWV0YWRhdGEgaGFuZGxlIG9mIGxhc3Qg
dW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgbWF5IHJlY2lldmUgYmFjayBh
bHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2UgaXQgaXMg
YXZhaWxhYmxlIGF0IHRoZQorICAgIC8vIHRpbWUgb2YgdGhlIGNhbGwuCisgICAgLy8gUmV0dXJu
cyBlaXRoZXI6CisgICAgLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1
Ym1pdHRlZC4KKyAgICAvLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2UgYW5kIG5vbi1lbXB0
eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMgYXZhaWxhYmxlCisg
ICAgLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4gdXNlLgorICAgIC8vIC0gU3VyZmFj
ZSBhbmQgaGFuZGxlLgorICAgIHZpcnR1YWwgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSA9IDA7CisK
KyAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50cyBi
dWZmZXIuCisgICAgLy8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlwIG9mIHRoZSBJT1N1
cmZhY2Ugc3VyZmFjZSBpbiB0aGUgYGJ1ZmZlcmAuCisgICAgdmlydHVhbCB2b2lkIHByZXNlbnQo
QnVmZmVyKSA9IDA7CisKKyAgICAvLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRo
ZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCisgICAgLy8gVGhlIGlm
IG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0
IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0aGlzLgorICAgIHZpcnR1
YWwgdm9pZCogZGV0YWNoQ2xpZW50KCkgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDJlMWM3OTllODI4NTNiMzIw
YjhjZWRkZDRhNmZlNWU1MDRhOWQ4OWMuLjc3Y2EyMDBiZDdmZmVmZWQzOThmOTEyYTc5ZDQyNTEz
NDZiZjdkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcu
aCIKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKQEAgLTgxLDcgKzgyLDcgQEAgc3RhdGljIEVHTERpc3BsYXkgSW5pdGlhbGl6ZUVH
TERpc3BsYXkoKQogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwogICAgIEVHTGludCBtaW5v
clZlcnNpb24gPSAwOwogICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLSAgICBib29sIHNob3VsZElu
aXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICFpc0luV2ViUHJvY2VzcygpOwor
ICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIShp
c0luV2ViUHJvY2VzcygpIHx8IGlzSW5HUFVQcm9jZXNzKCkpOwogICAgIGlmIChzaG91bGRJbml0
aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKICAgICAgICAgLy8gRm9yIFdLMSB0
eXBlIEFQSXMgd2UgbmVlZCB0byBzZXQgInZvbGF0aWxlIHBsYXRmb3JtIGNvbnRleHQiIGZvciBz
cGVjaWZpYwogICAgICAgICAvLyBBUElzLCBzaW5jZSBjbGllbnQgY29kZSB3aWxsIGJlIGFibGUg
dG8gb3ZlcnJpZGUgdGhlIHRocmVhZC1nbG9iYWwgY29udGV4dApAQCAtMTM0LDcgKzEzNSw3IEBA
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHCiAgICAgaWYgKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0cygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29u
dGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdp
bmRvdywgZGVzdGluYXRpb24pKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIGhv
c3RXaW5kb3csIG51bGxwdHIsIG51bGxwdHIpKTsKIAogICAgIGlmICghY29udGV4dC0+bV9jb250
ZXh0T2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NywxMyArMTQ4LDE4IEBAIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZShHcmFwaGljc0NvbnRleHRHCiBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wm
IHNoYXJlZENvbnRleHQpCiB7CiAgICAgYXV0byBob3N0V2luZG93ID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaG9zdFdpbmRvd0ZvckNvbnRleHQoJnNo
YXJlZENvbnRleHQpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0V2lu
ZG93LCBzaGFyZWRDb250ZXh0LmRlc3RpbmF0aW9uKCksICZzaGFyZWRDb250ZXh0KSk7CisgICAg
YXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChzaGFy
ZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csICZzaGFyZWRDb250ZXh0
LCBudWxscHRyKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCksIGhvc3RXaW5kb3cpOwogCiAgICAg
cmV0dXJuIGNvbnRleHQ7CiB9CiAKK1JlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycywgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4mIHN3YXBDaGFpbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgbnVsbHB0ciwgJnN3YXBDaGFpbikpOworfQorCiAj
aWYgUExBVEZPUk0oTUFDKSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBl
bmFibGVkIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+LgogCiBzdGF0aWMgdm9pZCBzZXRHUFVCeVJl
Z2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhl
bEZvcm1hdE9iaiwgSU9SZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQpAQCAtMjA0LDggKzIx
MCw4IEBAIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVnaXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRl
eHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMp
CiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdy
YXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCi0gICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywg
ZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCitHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBI
b3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29u
dGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKKyAg
ICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFy
ZWRDb250ZXh0KQogewogICAgIG1faXNGb3JXZWJHTDIgPSBhdHRycy5pc1dlYkdMMjsKIApAQCAt
MjkzLDI2ICsyOTksMjggQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBpZiAobV9pc0Zv
cldlYkdMMikKICAgICAgICAgZ2w6OkVuYWJsZShHcmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZF
X1JFU1RBUlRfRklYRURfSU5ERVgpOwogCisgICAgVmVjdG9yPEFTQ0lJTGl0ZXJhbCwgND4gcmVx
dWlyZWRFeHRlbnNpb25zOworICAgIGlmIChtX2lzRm9yV2ViR0wyKSB7CisgICAgICAgIC8vIEZv
ciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1ZXJpZXMgdG8gd29yay4KKyAgICAgICAgcmVxdWlyZWRF
eHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIl9zKTsKKyAg
ICB9CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBFeHRl
bnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7Ci0KICAgICBpZiAoIW5lZWRz
RUFHTE9uTWFjKCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZXF1
aXJlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAgICAgICJHTF9BTkdMRV90ZXh0dXJlX3JlY3Rh
bmdsZSIsIC8vIEZvciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgotICAgICAgICAgICAgIkdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIsIC8vIEZvciBjcmVhdGluZyB0aGUgRUdMIHN1
cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCi0gICAgICAgIH07Ci0KLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVpcmVkRXh0ZW5zaW9ucyk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKHJlcXVpcmVkRXh0ZW5zaW9u
c1tpXSkpIHsKLSAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4
dGVuc2lvbi4gJXMiLCByZXF1aXJlZEV4dGVuc2lvbnNbaV0pOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4
dHVyZXMuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX3RleHR1
cmVfcmVjdGFuZ2xlIl9zKTsKKyAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3VyZmFj
ZSBmcm9tIGFuIElPU3VyZmFjZS4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgi
R0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKKyAgICB9CiAKLSAgICAgICAgICAg
IGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChyZXF1aXJlZEV4dGVuc2lvbnNbaV0pOworI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgRXh0ZW5zaW9u
c0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIGZvciAoYXV0byYgZXh0ZW5z
aW9uIDogcmVxdWlyZWRFeHRlbnNpb25zKSB7CisgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBw
b3J0cyhleHRlbnNpb24pKSB7CisgICAgICAgICAgICBMT0coV2ViR0wsICJNaXNzaW5nIHJlcXVp
cmVkIGV4dGVuc2lvbi4gJXMiLCBleHRlbnNpb24uY2hhcmFjdGVycygpKTsKKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQorICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0
ZW5zaW9uKTsKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFy
IGlmIE1BQ0NBVEFMWVNUIHNob3VsZCB0YWtlIHRoZXNlIHN0ZXBzIGFzIHdlbGwsIGJ1dCB0aGF0
CiAgICAgLy8gd291bGQgcmVxdWlyZSB0aGUgUGxhdGZvcm1TY3JlZW5NYWMgY29kZSB0byBiZSBl
eHBvc2VkIHRvIENhdGFseXN0IHRvby4KQEAgLTMzMSwxMyArMzM5LDE3IEBAIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0CiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAgICAgYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRp
b24uCiAKLSAgICAvLyBDcmVhdGUgdGhlIFdlYkdMTGF5ZXIKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICAgICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIg
YWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNv
bnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOworICAgIGlmIChzd2FwQ2hhaW4pCisgICAgICAg
IG1fc3dhcENoYWluID0gc3dhcENoYWluOworICAgIGVsc2UgeworICAgICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4
ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKICNpZm5kZWYgTkRFQlVHCi0g
ICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CisgICAgICAgICAg
ICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwogI2VuZGlmCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgICAgIG1fc3dhcENoYWluID0gJlttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKKyAgICB9
CiAKICAgICAvLyBDcmVhdGUgdGhlIHRleHR1cmUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBm
cmFtZWJ1ZmZlci4KICAgICBHTGVudW0gdGV4dHVyZVRhcmdldCA9IElPU3VyZmFjZVRleHR1cmVU
YXJnZXQoKTsKQEAgLTQwNiwxMyArNDE4LDEyIEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp+
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAgICAgICBpZiAobV9wcmVzZXJ2ZURyYXdpbmdC
dWZmZXJGQk8pCiAgICAgICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX3ByZXNl
cnZlRHJhd2luZ0J1ZmZlckZCTyk7CiAgICAgfQotICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVm
ZmVyKQorICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKSB7CiAgICAgICAgIEVHTF9EZXN0
cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpOwotICAgIGlm
IChtX3dlYkdMTGF5ZXIpIHsKLSAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdM
TGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3
YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFu
ZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNs
ZWRCdWZmZXIuaGFuZGxlKTsKLSAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IFttX3dlYkdM
TGF5ZXIgZGV0YWNoQ2xpZW50XTsKKyAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IG1fc3dh
cENoYWluLT5kZXRhY2hDbGllbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRzSGFuZGxlKQogICAg
ICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgY29udGVudHNIYW5kbGUp
OwogICAgIH0KQEAgLTU3NSwxMSArNTg2LDE2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgICAgIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAgICAgLy8gUmVzZXQgdGhlIGZ1dHVy
ZSByZWN5Y2xlZCBidWZmZXIgbm93LCBiZWNhdXNlIGl0IG1vc3QgbGlrZWx5IHdpbGwgbm90IGJl
IHJldXNhYmxlIGF0IHRoZSB0aW1lIGl0IHdpbGwgYmUgcmV1c2VkLgotICAgIGF1dG8gcmVjeWNs
ZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgIGF1dG8gcmVjeWNs
ZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgIGlmIChyZWN5Y2xl
ZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmos
IHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7CiAgICAgcmVjeWNsZWRCdWZmZXIuc3VyZmFjZS5yZXNl
dCgpOworICAgIHJldHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwor
fQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5
QnVmZmVyQmFja2luZygpCit7CisgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpLmlzRW1wdHkoKSk7CiAgICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpj
cmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3Bh
Y2VSZWYoKSk7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
MzcsNyArNjUzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5l
UmVuZGVyZXJzKCkgY29uc3QKICAgICAvLyBmb3IgT3BlbkdMIHRvIGRlY2lkZSB3aGljaCBHUFUg
aXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheSAob25saW5lL29mZmxpbmUpLgogICAgIC8vIE9wZW5H
TCB3aWxsIHRoZW4gY29uc2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRlcmVycywgYXMgb2ZmbGluZSwg
d2hpY2ggbWVhbnMKICAgICAvLyBhbGwgb2ZmbGluZSByZW5kZXJlcnMgbmVlZCB0byBiZSBjb25z
aWRlcmVkIHdoZW4gZmluZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAgICAvLyBJbiBXZWJLaXQgbGVn
YWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZG93U2VydmVyIGNvbm5lY3Rpb24sIGFuZAor
ICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kd1NlcnZl
ciBjb25uZWN0aW9uLCBhbmQKICAgICAvLyBtX2Rpc3BsYXlNYXNrIHdpbGwgbm90IGJlIHNldCBp
biB0aGlzIGNhc2UuCiAgICAgaWYgKHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTY0NiwxMiArNjYyLDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0CiAgICAgLy8gYW5kIE1BQy9N
QUNDQVRBTFlTVCBhbmQgT1BFTkdML09QRU5HTEVTLgogICAgIHJldHVybiB0cnVlOwogI2VuZGlm
Ci0gICAgICAgIAorCiAjaWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQogICAgIGlmICho
YXNMb3dBbmRIaWdoUG93ZXJHUFVzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCi0g
ICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTY4MywxMCArNjk5LDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAvLyBUaGUg
SU9TdXJmYWNlIHdpbGwgYmUgdXNlZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwgc28g
Zmx1c2ggR0wgY29tbWFuZHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3ljbGVk
QnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVk
QnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKIAogICAgIEVHTF9SZWxlYXNl
VGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyLCBFR0xfQkFDS19C
VUZGRVIpOwotICAgIFttX3dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6
IHtXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVy
fV07CisgICAgbV9zd2FwQ2hhaW4tPnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJh
Y2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIH0pOwogICAgIG1fZGlzcGxheUJ1ZmZlclBi
dWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKIAogICAgIGJvb2wgaGFzTmV3QmFja2luZyA9IGZhbHNl
OwpAQCAtNzAwLDcgKzcxNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBh
cmVGb3JEaXNwbGF5KCkKIAogICAgIC8vIEVycm9yIHdpbGwgYmUgaGFuZGxlZCBieSBuZXh0IGNh
bGwgdG8gbWFrZUNvbnRleHRDdXJyZW50KCkgd2hpY2ggd2lsbCBub3RpY2UgbGFjayBvZiBkaXNw
bGF5IGJ1ZmZlci4KICAgICBpZiAoIWhhc05ld0JhY2tpbmcpCi0gICAgICAgIHJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZygpOworICAgICAgICBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVy
QmFja2luZygpOwogCiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGM0MTQwMTViN2IwZjM0YmIyOGJlMzQ1NTA5Yzc0MjllMzFkYWEzYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisjaW1wb3J0ICJX
ZWJHTExheWVyLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1
dGVzKCk7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2ViR0xM
YXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0
aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExh
eWVyIl07CisjZW5kaWYKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKworUGxh
dGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7Cit9CisKKyNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCitHcmFwaGljc0NvbnRleHRHTENWKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6YXNDVigpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisjZW5kaWYKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4m
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVN3YXBDaGFpbigpCit7
CisgICAgcmV0dXJuIFttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKK30KKworfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
LmgKaW5kZXggMTRiMDFlNzA1ZjIwNTMwMWM3Yzk3Y2Y2NmU3MWEwOGJiZjQxZTcwNS4uN2ZlODhh
MmZmNGNlMGY1NTlkNTlkYzFjZDk1MmEzYTdlYTg4MDk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaApAQCAtMjMsNTIgKzIz
LDIyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIklPU3VyZmFjZS5oIgorI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8d3RmL05h
a2VkUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBXZWJHTExheWVyQnVmZmVy
IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBU
aGUgYWN0dWFsIGNvbnRlbnRzLgotICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8gQ2xp
ZW50IHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KLX07Ci19
Ci0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKIC8vIEEgbGF5ZXIgY2xh
c3MgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcg
c3dhcAogLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KLS8vIFRoZSBsYXllciB3aWxsIG93biB0aGUg
SU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgotLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNo
IG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRh
Ci0vLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIs
IHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKLS8vIGJlIGFibGUgdG8gb2J0YWluIHRo
ZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KLS8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRh
ZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3
YXkKLS8vIHdoZW4gdGhlIFdlYkdMTGF5ZXIgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlz
cGxheSwgdGhlIGNsaWVudCBjYW4gY29udGludWUgdXNpbmcKLS8vIHRoZSBleGlzdGluZyBiaW5k
aW5nIG9idGFpbmVkIHRocm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgogQGludGVyZmFj
ZSBXZWJHTExheWVyIDogQ0FMYXllcgogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86
KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFx
dWU7CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dD
b2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKLS8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRs
ZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgbWF5IHJlY2lldmUg
YmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2Ug
aXQgaXMgYXZhaWxhYmxlIGF0IHRoZQotLy8gdGltZSBvZiB0aGUgY2FsbC4KLS8vIFJldHVybnMg
ZWl0aGVyOgotLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRl
ZC4KLS8vIC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRh
IGhhbmRsZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKLS8vICAgYnV0IHRo
ZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KLS8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgotLSAo
V2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcilyZWN5Y2xlQnVmZmVyOwotCi0vLyBQcmVwYXJlcyB0
aGUgbGF5ZXIgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCB0
cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBi
dWZmZXJgLgotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6
V2ViR0xMYXllckJ1ZmZlcilidWZmZXI7Ci0KLS8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5kIHJl
dHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KLS8vIFRo
ZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIg
bXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCi0vLyB0aGlzLgotLSAodm9pZCop
ZGV0YWNoQ2xpZW50OworLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4mKSBzd2FwQ2hhaW47CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KaW5kZXggYzhmNGU3OWY3MzEyZWFh
NmFiMDQ0NjgwODNlYThkMGM4YmVmYTNiYy4uMTY4ZmQ1ZjZjODQyMzdiZGY4YWI5Y2JiY2E2NDA3
Mzk1MDVjOTIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzIsMTMgKzMyLDM5IEBACiAjaW1wb3J0ICJH
cmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKworY2xhc3MgV2ViR0xMYXllclN3YXBDaGFpbiBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViR0xMYXllclN3YXBDaGFpbihXZWJHTExheWVy
KiBsYXllcikgIDogbV9sYXllcihsYXllcikgeyB9OworICAgIH5XZWJHTExheWVyU3dhcENoYWlu
KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIG92ZXJyaWRl
OworICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlm
IChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKKyAgICAgICAgICAgIGlmIChtX3NwYXJlQnVmZmVy
LnN1cmZhY2UtPmlzSW5Vc2UoKSkKKyAgICAgICAgICAgICAgICBtX3NwYXJlQnVmZmVyLnN1cmZh
Y2UucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fc3BhcmVCdWZmZXIpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIHZvaWQqIGRldGFjaENs
aWVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3Vy
ZmFjZSk7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9IG1fZGlzcGxheUJ1ZmZlci5oYW5kbGU7Cisg
ICAgICAgIG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUgPSBudWxscHRyOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlTdXJmYWNlKCkg
eyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAg
QnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBCdWZmZXIgbV9zcGFyZUJ1ZmZlcjsKKyAgICBX
ZWJHTExheWVyKiBjb25zdCBtX2xheWVyOworfTsKIAogQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5
ZXIgewotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX2NvbnRlbnRzQnVmZmVyOwotICAg
IFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX3NwYXJlQnVmZmVyOwotCiAgICAgQk9PTCBfcHJl
cGFyZWRGb3JEaXNwbGF5OworICAgIE9wdGlvbmFsPFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2Fw
Q2hhaW47CiB9CiAKIC0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNl
UGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1ZQpAQCAtNDcsNiAr
NzMsNyBAQAogICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwogICAg
IHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKICAgICBzZWxmLmNvbnRlbnRz
U2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOworICAgIF9zd2FwQ2hhaW4uZW1wbGFjZShzZWxmKTsK
ICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNzMsMzAgKzEwMCwyMSBAQAogICAgIFVOVVNFRF9Q
QVJBTShjb2xvclNwYWNlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KLQotLSAoV2ViQ29yZTo6
V2ViR0xMYXllckJ1ZmZlcikgcmVjeWNsZUJ1ZmZlcgorLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2FwQ2hhaW4KIHsKLSAgICBpZiAoX3NwYXJlQnVm
ZmVyLnN1cmZhY2UpIHsKLSAgICAgICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNl
KCkpCi0gICAgICAgICAgICBfc3BhcmVCdWZmZXIuc3VyZmFjZS5yZXNldCgpOwotICAgICAgICBy
ZXR1cm4gV1RGTW92ZShfc3BhcmVCdWZmZXIpOwotICAgIH0KLSAgICByZXR1cm4geyB9OworICAg
IHJldHVybiBfc3dhcENoYWluLnZhbHVlKCk7CiB9CiAKLS0gKHZvaWQpcHJlcGFyZUZvckRpc3Bs
YXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIGJ1ZmZlcgorLSAodm9p
ZClwcmVwYXJlRm9yRGlzcGxheQogewotICAgIEFTU0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2Up
OwotICAgIF9zcGFyZUJ1ZmZlciA9IFdURk1vdmUoX2NvbnRlbnRzQnVmZmVyKTsKLSAgICBfY29u
dGVudHNCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5
XTsKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gWUVTOwogfQogCiAtICh2b2lkKWRpc3BsYXkK
IHsKLSAgICBpZiAoX2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UgJiYgX3ByZXBhcmVkRm9yRGlzcGxh
eSkgewotICAgICAgICBzZWxmLmNvbnRlbnRzID0gX2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UtPmFz
TGF5ZXJDb250ZW50cygpOworICAgIGlmIChfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpICYm
IF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKKyAgICAgICAgc2VsZi5jb250ZW50cyA9IF9zd2FwQ2hh
aW4tPmRpc3BsYXlTdXJmYWNlKCktPmFzTGF5ZXJDb250ZW50cygpOwogICAgICAgICBbc2VsZiBy
ZWxvYWRWYWx1ZUZvcktleVBhdGg6QCJjb250ZW50cyJdOwogICAgIH0KICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7CkBAIC0xMDYsMTMgKzEyNCwxNCBAQAogICAgIF9wcmVwYXJlZEZv
ckRpc3BsYXkgPSBOTzsKIH0KIAotLSAodm9pZCopIGRldGFjaENsaWVudAorQGVuZAorCit2b2lk
IFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBBU1NF
UlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICB2b2lkKiByZXN1bHQgPSBfY29udGVudHNC
dWZmZXIuaGFuZGxlOwotICAgIF9jb250ZW50c0J1ZmZlci5oYW5kbGUgPSBudWxscHRyOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAg
IG1fc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5
QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgIFttX2xheWVyIHByZXBhcmVGb3JEaXNwbGF5
XTsKIH0KLUBlbmQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCAzOGRlODU1MmYxZTQ2YTFk
MzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi45OWFkOTE2NTI1OTE4NzNlMGU4M2ZlODc4OTI1ZWNh
MjMzYTFhMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgor
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIgogI2lt
cG9ydCAiU291cmNlR3JhcGhpYy5oIgogI2ltcG9ydCA8Q29yZUltYWdlL0NJQ29udGV4dC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4
MGUzNjU2NDZkNjI3YzdiLi5hZGQ1ZjM1MmFlNGRlNmI2ZDVkYzE5MWU2NzNiNWFhZmE1NmRlOTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtNDgsNyArNDgsNyBAQCBFeHRlbnNp
b25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCog
Y29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdM
KCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZm
ZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBk
c3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBt
YXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0
RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNy
Y1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50
IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVy
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZy
YW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbgogICAgIDo6
Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBk
c3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQs
IHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMjIsNyArMjIyLDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBidWZzKQogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBj
b3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQp
Cit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMc2l6ZWkgY291bnQsIEcKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgK
aW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4NjhiNTQ5OTNhNDQ0NDlhOC4uNDc1MDIyNmVj
ZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
aApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3Bl
bkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBs
b25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBs
b25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25n
IHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJh
bWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gx
LCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRz
dFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCiAgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CkBAIC01Miw5
ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBv
dmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIGJvb2wgc3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2MWZiYTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNm
NmM0ODNlYi4uYjc4OTYwY2I0ODJlNGVmMmFiOThlNDAzOTJhNjM1YmE3ZmZiN2JkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTM2NiwxMSArMzY2LDYgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTHMKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAq
LCBHQ0dMc2l6ZWkgKiwgdm9pZCAqLCBib29sKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhj
NjQuLjZhM2EzOWZlM2ExYmE1YmQyNTk3NzE1ODk0NzU2MWNjYWQ1YWQ0OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTkzLDcgKzkzLDYgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggMzZjM2VmMzhmOThi
OTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMy4uZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZi
NWY2ZTQ5MWZiZTA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAs
MTIgKzEwMCwxMiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgLyogc3JjWDAgKi8sIGxvbmcg
Lyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8sIGxvbmcgLyogc3JjWTEgKi8sIGxvbmcgLyog
ZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxvbmcgLyogZHN0WDEgKi8sIGxvbmcgLyogZHN0
WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAqLywgdW5zaWduZWQgbG9uZyAvKiBmaWx0ZXIg
Ki8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dM
aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1
bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAg
ICByZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0K
IAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291
bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewog
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJy
YXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC0yNzcs
NyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwKICAgICBtX2dsRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAg
IGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xF
Uy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1YjczOThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4
My4uNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNmOTlhN2RmYzJmNzhmYjRkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogCiAgICAgLy8gRXh0
ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxv
bmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEs
IGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92
ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwpAQCAt
ODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVz
dG5lc3MgLSByZXNldAogICAgIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGMyNTViMGMxMmY0ZmNi
ZmE0NmRiMDJkNTVjODBiNGNiNzdkMTdiNzAuLjAyNzI4Zjg5Nzg4ZTBiODVlZDEyNmY1Zjk4MWY1
YzFkNjBkZmZkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC01OCw2
ICs1OCw5IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpD
X0NMQVNTIFdlYkdMTGF5ZXI7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKK30KICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkK
IAogI2lmIFVTRShOSUNPU0lBKQpAQCAtODYsNyArODksNyBAQCB0eXBlZGVmIFdURjo6SGFzaE1h
cDxDU3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFtZUhhc2g7CiAKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMUHJpdmF0ZTsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmlu
YWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRl
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0g
RGVzdGluYXRpb246Ok9mZnNjcmVlbik7CkBAIC05NCw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IGNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCk7Cisg
ICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vz
cyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbiYpOworCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0T2Jq
OyB9CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdl
dCgpKTsgfQpAQCAtMTkxLDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0
dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZl
SW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3Rp
dmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3Jt
R0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNv
dW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAg
dm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZh
bHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBAIC0yMTksOCArMjI0LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5p
Zm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lk
IGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBm
aW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTIzNiw3ICsyMzksOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7
CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0
cykgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFt
cGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CkBAIC0yNTQsNyArMjU4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAgICAgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CiAKQEAgLTMxNywxMiArMzIxLDEwIEBAIHB1YmxpYzoKICNpZiAhVVNFKEFOR0xFKQogICAgIHZv
aWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVt
IHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBi
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBj
b25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7
Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBz
cmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdD
R0x1aW50IGxlbmd0aCk7CiAjZW5kaWYKICAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZz
ZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKIAot
ICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwotICAg
IEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9p
ZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdD
R0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOwogICAgIHZv
aWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
bGF5ZXIpIGZpbmFsOwpAQCAtMzg0LDcgKzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFF1
ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVy
eShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICAgICAvLyBnZXRRdWVy
eVBhcmFtZXRlcgotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBx
dWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTHVp
bnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsK
ICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsK
QEAgLTM5Myw4ICszOTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBm
aW5hbDsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CiAgICAgLy8gZ2V0U2Ft
cGxlclBhcmFtZXRlcgotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0
U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdDR0xzeW5jIGZlbmNl
U3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CiAgICAg
R0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jKSBmaW5hbDsKQEAgLTQwMyw3ICs0MDUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBH
Q0dMaW50NjQgdGltZW91dCkgZmluYWw7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgogICAgIC8v
IEZJWE1FIC0gdGhpcyBjYW4gYmUgaW1wbGVtZW50ZWQgYXQgdGhlIFdlYkdMIGxldmVsIGlmIHdl
IHNpZ25hbCB0aGUgV2ViR0xTeW5jIG9iamVjdC4KLSAgICB2b2lkIGdldFN5bmNpdihHQ0dMc3lu
YywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkgZmlu
YWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpIGZpbmFs
OwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFs
OwogICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkg
ZmluYWw7CkBAIC00MjAsNyArNDIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYmluZEJ1ZmZlclJh
bmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVm
ZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogICAgIC8v
IGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KICAg
ICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmluYWw7Ci0gICAgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rv
cjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xp
bnQ+JiBwYXJhbXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1l
dGVyCkBAIC00MjksMTEgKzQzMSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5p
Zm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCi0jaWYg
IVVTRShBTkdMRSkKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0
T2Zmc2V0KTsKLSNlbmRpZgotCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAKICAgICB2b2lkIHBh
aW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0
Jik7CkBAIC01MTUsNyArNTEyLDExIEBAIHB1YmxpYzoKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQog
CiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4qID0gbnVsbHB0cik7CisjZWxzZQogICAgIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3Rp
bmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IHNoYXJlZENvbnRleHQgPSBudWxscHRyKTsKKyNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIG9uY2Ug
YnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5H
TC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2Yg
RXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KQEAgLTUyNyw3ICs1Mjgs
OSBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAg
ICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIAorCisgICAgdm9pZCByZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBH
Q0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CisKICAgICAv
LyBEaWQgdGhlIG1vc3QgcmVjZW50IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4g
YW4gYWNjZXB0YWJsZSBzdGF0ZT8KICAgICB2b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKQEAgLTU0
OCwxMCArNTUxLDEzIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBh
bGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdDsKICAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVm
ZmVyQmFja2luZygpOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qIG1fc3dh
cENoYWluIHsgbnVsbHB0ciB9OworICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSB0aGUgY29udGV4dCBkcmF3cyB0byBhIGltYWdlIGJ1ZmZlci4gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNzkgLgogICAgIFJldGFpblB0cjxXZWJH
TExheWVyPiBtX3dlYkdMTGF5ZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBtX2Nv
bnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3Bs
YXkgbV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwpAQCAtNTc5LDcgKzU4NSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChlbnVtIEFOR0xFU2hh
ZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
c3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8IHN5bWJvbFR5cGUg
PT0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lN
Qk9MX1RZUEVfVkFSWUlORyk7CkBAIC02NzIsNyArNjc4LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICB1c2luZyBCb3VuZFRleHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAgICAgICAg
c3RkOjpwYWlyPEdDR0x1aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6OkludEhhc2g8
R0NHTGVudW0+LCAKKyAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sCiAgICAgICAg
ICAgICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwKICAgICAg
ICAgICAgIFdURjo6UGFpckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVp
bnQ+PgogICAgICAgICA+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNl
LmNwcAppbmRleCA2MzU2ZjgxZjQ4MjFiNmExZWE2YzM1NTdlZGYxZjRlNjg4MTNmNmI5Li42Mjk4
MDM4OGI2NTI0NzljY2I0MzMxYzI1ZmZlZWJiNjZjNmNiNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIEV4dGVuc2lv
bnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogfQogI2VuZGlm
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMo
KTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAg
OjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1f
ZmJvKTsKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQotICAgIDo6Z2xSZWFkUGl4ZWxzKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgOjpnbFJlYWRQaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmRhdGEpOwogICAgIGlm
IChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPT0gbV9tdWx0aXNhbXBs
ZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6
RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYmM0NGNkNTc3ODg2NzIwMzlhZWE0ZjU5
OTk2ZTRkOTRlMWMxYTBmZS4uN2IyZWEwNGEyMDk5NTY1Yzc5MGVhNTdjNjY3YjBkOWM2MGFmNTVi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBA
IC0yMDI5LDIyICsyMDI5LDYgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4g
OjpnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBtYXBwZWROYW1lLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUp
Ci17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0YSk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCi17Ci0gICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdl
dFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0YSk7Ci19Ci0KIEdDR0xzaXpl
aXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQpAQCAtMjI3OCwxOSArMjI2MiwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhJbWFnZTJERGlyZWN0KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgRwogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJz
dCwgY291bnQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVT
dGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5z
aW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBw
cmltY291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOwogICAgIGNoZWNrR1BVU3Rh
dHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7Ci0gICAgZ2V0RXh0ZW5z
aW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIGdldEV4dGVu
c2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpOwogfQogCiAj
aWYgSEFWRShPUEVOR0xfNCkgJiYgRU5BQkxFKFdFQkdMMikKQEAgLTIzMzUsNDIgKzIzMTksMjUg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMaW50cHRyLAogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRy
IHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwg
R0NHTHVpbnQgbGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVy
U3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dM
dm9pZD4gZGF0YSkKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjQnl0ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShkc3RPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwotfQotCiAjaWYg
SEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKLXZvaWQqIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKQotewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
cmV0dXJuIDo6Z2xNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3Mp
OwotfQotCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIo
R0NHTGVudW0gdGFyZ2V0KQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAgIHJldHVybiA6OmdsVW5tYXBCdWZmZXIodGFyZ2V0
KTsKLX0KKyAgICAgICAgcmV0dXJuOworICAgIEdDR0x2b2lkKiBwdHIgPSA6OmdsTWFwQnVmZmVy
UmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1B
UF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisgICAgICAgIHJldHVybjsKKyAgICBtZW1jcHko
ZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7CisgICAgaWYgKCE6OmdsVW5tYXBCdWZmZXIo
dGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfT1BFUkFUSU9OKTsKICNlbHNlCi12b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0sIEdDR0xpbnRwdHIsIEdDR0xzaXplaXB0ciwgR0NHTGJp
dGZpZWxkKQotewotICAgIHJldHVybiBudWxscHRyOworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQp
OworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04p
OworI2VuZGlmCiB9CiAKLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1h
cEJ1ZmZlcihHQ0dMZW51bSkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAs
IEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0
WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRm
aWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CkBAIC0yNzEyLDExICsyNjc5LDExIEBAIFBs
YXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnks
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpCitHQ0dMdWludCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dM
ZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocXVlcnkpOwogICAgIFVOVVNFRF9QQVJB
TShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAog
UGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxlcigp
CkBAIC0yNzU2LDE4ICsyNzIzLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNh
bXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVuCiAgICAgVU5V
U0VEX1BBUkFNKHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShw
bmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMC5mOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQorCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKQEAg
LTI4MDYsMTIgKzI3NzQsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6d2FpdFN5
bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAgICBVTlVTRURf
UEFSQU0odGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2ko
R0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN5bmMp
OwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZlNpemUpOwot
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xP
YmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkK
QEAgLTI4OTEsMjEgKzI4NTgsMjMgQEAgVmVjdG9yPEdDR0x1aW50PiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm8KICAgICByZXR1
cm4geyB9OwogfQogCi0jaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdD
R0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykKK1ZlY3RvcjxHQ0dMaW50PiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVu
dW0gcG5hbWUpCiB7CisgICAgVmVjdG9yPEdDR0xpbnQ+IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5z
aXplKCksIDApOworI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCiAgICAg
QVNTRVJUKHByb2dyYW0pOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIDo6Z2xHZXRBY3RpdmVVbmlm
b3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0
YSgpLCBwbmFtZSwgcGFyYW1zLmRhdGEoKSk7CisgICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYo
cHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBu
YW1lLCByZXN1bHQuZGF0YSgpKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdD
R0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9j
a05hbWUpOwotCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI5MTMsNyArMjg4Miw2IEBAIFN0cmlu
ZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVO
VVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7Ci0KICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIH0KIApAQCAtMjkyMywyNyArMjg5MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMCiAg
ICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKICAgICBVTlVTRURfUEFSQU0odW5p
Zm9ybUJsb2NrQmluZGluZyk7CiB9Ci0jZWxzZQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYsIEdDR0xlbnVtLCBWZWN0b3I8R0NHTGludD4mKQotewotfQotCi1HQ0dMdWludCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVj
dCwgY29uc3QgU3RyaW5nJikKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotU3RyaW5nIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmpl
Y3QsIEdDR0x1aW50KQotewotICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmpl
Y3QsIEdDR0x1aW50LCBHQ0dMdWludCkKLXsKLX0KLSNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQog
ewogICAgIFVOVVNFRF9QQVJBTSh4KTsKICAgICBVTlVTRURfUEFSQU0oeSk7CkBAIC0yOTU0LDE4
ICsyOTAzLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShvZmZz
ZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQg
ZHN0T2Zmc2V0KQotewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAg
ICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGRzdERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotfQotCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMjNkNzRmYTgw
ZDcwNzkxYmU2MDBkZjU4ZTc1NjE3MzM5NmFhNTUwNS4uYTIyMTgwYjRiZjRjZTEwZjE4NTIxMjQw
MTFlODhhNDQyNzNiNDFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4g
ZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAgOjpnbEZs
dXNoKCk7CiAgICAgfQogCi0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuZGF0YSk7CiAKICAgICBpZiAoYXR0cmlidXRlcy5hbnRp
YWxpYXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAg
ICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7
CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBk
ZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgogICAgICAgICAgICAgaWYgKHN1
cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIpIHsKICAgICAgICAgICAgICAgICA6OmdsQmlu
ZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAg
ICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShH
TF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lk
dGgsIGhlaWdodCk7CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBU
SDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgaWYgKGF0
dHJpYnV0ZXMuc3RlbmNpbCkKICAgICAgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRF
UkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIGlmIChhdHRy
aWJ1dGVzLmRlcHRoKQpAQCAtMTM4LDEyICsxMzgsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkgewogICAgICAg
ICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fc3Rl
bmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NURU5D
SUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9u
cy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNh
bXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAg
ICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xf
U1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7
CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZF
UiwgbV9kZXB0aEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdM
X0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAg
ZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJC
VUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7
CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVm
ZmVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApp
bmRleCA2Mjg0NDUzMjUwMzM1MTA3ZmQ1NDk4MjIzMmI4YjllYWVjOGU2OGNiLi45ZjgzMTdiMThk
NTNiN2IzYzE2NjY5YTRjNTExOTkzZWFmMzdjNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTEy
Myw2ICsxMjMsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgR1BVUHJvY2Vzcy9HUFVQcm9jZXNzCiAK
KyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMCiAgICAgR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAKICAgICBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyCkBAIC0yMTgsNiArMjE5LDcgQEAg
c2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24KIAorICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkKICAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkKIAogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CmluZGV4IGVkYjZjYTU5NzlkMmY0ZGVmOGIyYjJlNzczZjlkNjlhZTc4NmU3ZTkuLjRh
NjdkZjhlZGMzYjRmNDg5MTg3NzAyZWZiZjA0MWIzZDM0YTkxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIwLDYgKzIwLDcgQEAgJChK
QVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9tb2RlbHMucHkKICQoSkFWQVNDUklQ
VENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQ
VVByb2Nlc3Muc2IuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTEzMSw2ICsxMzIsNyBAQCAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9X
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDc1Njc5ZjU1ZjVhZTM5OWI1ZWFmNDc3ZjE4OTMy
NTZiYzI0ODg0NGQuLjdjZDNkYmNjYTM1MGM2ZTM4MTRjMzQwYzM5M2M5NjNlZGJiOTgxMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAt
MTc1LDYgKzE3NSwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDM3NzAxYjAxYzNjMWEyYzMwMGUxZGQyZDcyZTZiODUyMzdmNDI0YjUuLjk3NmIxYTVhM2U1YzBk
MzExNWQ0NDUwYzkwODYxNTcxOWU2ZGVjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTE3MSw2ICsxNzEsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwKKwlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzIFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXApA
QCAtMjI3LDYgKzIyOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVBsdWdpblByb2Nlc3Mv
UGx1Z2luUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwK
IAlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAorCUdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgXAogCUdQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDBlMmU4
ODMyYjFlMjBmMWUwZjMxOWQ1ZDlmMjVkNzJjZTFiZjczYWQuLjQ0YjlmNjNlMTRjNTBiNzQxOTkz
ZDZmMzVhNWE5NWY1YWZkODBhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY0LDYgKzY0LDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg+CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNETUZh
Y3RvcnlQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgi
CkBAIC0yOTAsNiArMjk0LDIxIEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVs
ZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJU
X1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQordm9pZCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuZW5zdXJlKGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB9KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VH
cmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIEFTU0VS
VF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKK30KKyNlbmRpZgogdm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKICAgICBncHVQcm9jZXNzKCkubm93
UGxheWluZ01hbmFnZXIoKS5jbGVhck5vd1BsYXlpbmdJbmZvQ2xpZW50KCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDI2NzhkYmM0ZTVkMzY1ZmFkMjhlOGI0ODI3ODYzNzYyYTNjNDU3OGQuLjVhZWRmYmI0
ZDJjYWM3Yjc2NjBmZjA3MzYwOWQzNzdjNjAxNTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlJlbW90ZUF1
ZGlvU2Vzc2lvbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENFbnVtVHJhaXRzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3dQbGF5aW5nTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJv
Y2Vzc0lkZW50aWZpZXIuaD4KQEAgLTM5LDYgKzQwLDExIEBACiAjaW5jbHVkZSA8d3RmL0xvZ2dl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgR1BVUHJvY2VzczsKQEAgLTU0LDYgKzYwLDcgQEAgY2xhc3MgUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsK
IGNsYXNzIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OwogY2xhc3MgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDsKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKQEAg
LTExOSw2ICsxMjYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tl
bmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmlu
Z0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKFdFQkdM
KQorICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZvaWQg
cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisj
ZW5kaWYKKwogICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOwogICAgIHZvaWQgc2V0Tm93
UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgV2ViQ29yZTo6Tm93
UGxheWluZ0luZm8mJik7CiAKQEAgLTE4MCw3ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHVz
aW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4+OwogICAg
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwOwot
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFw
ID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFw
IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7CisjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1f
Y2RtRmFjdG9yeVByb3h5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDUxOTRmYjRmNjA4NWQ2MjRkNTk4M2Y2MjUyYzM2NWViMzI3MWYzNDQuLjlkNTRlMTY0NTk1YjBh
MzYxZGZlNGM3NWJmZjQwMThhODU3NTljOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0yNSw2ICsyNSwxMCBAQAogbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5k
KFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQorI2lmIEVOQUJM
RShXRUJHTCkKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorICAgIHZv
aWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyNlbmRpZgogICAgIHZvaWQgQ2xl
YXJOb3dQbGF5aW5nSW5mbygpCiAgICAgdm9pZCBTZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8gbm93
UGxheWluZ0luZm8pCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZTk3MGU1ZDg4NzA1MTZhZDEzNWI3NjVjZGE0NTdmNDI1M2FjMDJk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
IgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikKKyAgICA6IG1fY29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCAqdGhpcykpCisgICAgLCBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cykpCisgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
PSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBtX2Nv
bnRleHQtPmFkZENsaWVudCgqdGhpcyk7CisgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRl
eHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7CisgICAgU3RyaW5n
IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNH
TDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChleHRlbnNpb25zLCByZXF1ZXN0
YWJsZUV4dGVuc2lvbnMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQoreworICAg
IGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNz
YWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKK30K
KworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICByZXR1
cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6ZGlkQ29tcG9zaXRlKCkKK3sKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Zm9yY2VDb250ZXh0TG9zdCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluOjpCdWZmZXIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVC
dWZmZXIoKQoreworICAgIHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKK3sKKyAg
ICBBU1NFUlQoIW1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIg
PSBXVEZNb3ZlKGJ1ZmZlcik7Cit9CisKK3ZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpk
ZXRhY2hDbGllbnQoKQoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZl
ci5oYW5kbGUsIG51bGxwdHIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpy
ZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlmICh3aWR0aCAm
JiBoZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAg
ICBlbHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
VEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jb250
ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdURk1v
dmUobV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0
OworICAgIGlmIChkaXNwbGF5QnVmZmVyKQorICAgICAgICBzZW5kUmlnaHQgPSBkaXNwbGF5QnVm
ZmVyLT5jcmVhdGVTZW5kUmlnaHQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNl
bmRSaWdodCkpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRl
bnNpb25FbmFibGVkKFN0cmluZyYmIGV4dGVuc2lvbikKK3sKKyAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgbV9jb250
ZXh0LT5tYXJrQ29udGV4dENoYW5nZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmYwNTcyMTAxZDliYzBm
MDlmN2RhOTRjOTRlNTMyYmE3ZjdjMzA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTAsMCAr
MSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUv
RXh0ZW5zaW9uc0dMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsK
KworLy8gR1BVIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1l
c3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzCisvLyBhbmQgaXNzdWVzIHJlYWwg
R3JhcGhpY3NDb250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgor
Ly8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkNsaWVudAorICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIGZp
bmFsOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IG92
ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBvc2l0ZSgpIGZpbmFsOworICAgIHZvaWQgZm9yY2VD
b250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKSBmaW5hbDsKKyAg
ICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBmaW5hbDsKKworICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIG92ZXJyaWRlcy4KKyAgICBC
dWZmZXIgcmVjeWNsZUJ1ZmZlcigpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIGZp
bmFsOworICAgIHZvaWQqIGRldGFjaENsaWVudCgpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMg
dG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCByZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KTsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmKTsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoU3RyaW5nJiYpOworICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisK
KyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAv
LyBOT0xJTlQKKworICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9j
b250ZXh0OworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbjo6QnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZWE3MTUyNGQ0MDgxOWJhMDMxMGNiNDIwMTM2MDc1NjY4Nzg2ODU3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjk0IEBACisvKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBu
b3QgZWRpdC4KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVz
c2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CisgICAgdm9p
ZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNw
bGF5QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAg
dm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBO
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorCisgICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1
c0NoZWNrKCkKKyAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQorICAg
IHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBBY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUp
CisgICAgdm9pZCBBdHRhY2hTaGFkZXIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qgc2hhZGVy
KQorICAgIHZvaWQgQmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGlu
ZGV4LCBTdHJpbmcgbmFtZSkKKyAgICB2b2lkIEJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVu
LCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb24odWludDMy
X3QgbW9kZSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdC
LCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgdm9pZCBCbGVuZEZ1bmModWludDMyX3Qgc2ZhY3Rv
ciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB2b2lkIEJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90
IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0
QWxwaGEpCisgICAgdm9pZCBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQzMl90IHRhcmdldCkg
LT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ2xlYXIodWlu
dDMyX3QgbWFzaykKKyAgICB2b2lkIENsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwg
ZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBDbGVhckRlcHRoKGZsb2F0IGRlcHRo
KQorICAgIHZvaWQgQ2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB2b2lkIENvbG9yTWFzayhi
b29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHZvaWQgQ29t
cGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weVRleEltYWdlMkQodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJv
cmRlcikKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50
MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZUJ1
ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENy
ZWF0ZUZyYW1lYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQ3JlYXRlUHJvZ3JhbSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNoYWRlcih1aW50MzJfdCBhcmcwKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVUZXh0
dXJlKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3Vs
bEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB2b2lkIERlbGV0ZUJ1ZmZlcih1aW50MzJfdCBhcmcw
KQorICAgIHZvaWQgRGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERl
bGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVJlbmRlcmJ1ZmZlcih1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBEZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZXB0aEZ1bmModWlu
dDMyX3QgZnVuYykKKyAgICB2b2lkIERlcHRoTWFzayhib29sIGZsYWcpCisgICAgdm9pZCBEZXB0
aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHZvaWQgRGV0YWNoU2hhZGVyKHVp
bnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBEaXNhYmxlKHVpbnQzMl90IGNh
cCkKKyAgICB2b2lkIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAg
ICB2b2lkIERyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBj
b3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBFbmFibGUodWludDMy
X3QgY2FwKQorICAgIHZvaWQgRW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgp
CisgICAgdm9pZCBGaW5pc2goKQorICAgIHZvaWQgRmx1c2goKQorICAgIHZvaWQgRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50
MzJfdCByZW5kZXJidWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgdm9pZCBGcmFtZWJ1
ZmZlclRleHR1cmUyRCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQz
Ml90IHRleHRhcmdldCwgdWludDMyX3QgYXJnMywgaW50MzJfdCBsZXZlbCkKKyAgICB2b2lkIEZy
b250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgR2VuZXJhdGVNaXBtYXAodWludDMyX3Qg
dGFyZ2V0KQorICAgIHZvaWQgR2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZv
cm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVl
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nIG5hbWUp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QnVmZmVy
UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFN0cmluZyh1aW50MzJfdCBuYW1l
KSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RmxvYXR2
KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEludGVnZXJ2KHVpbnQz
Ml90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0KHVpbnQzMl90
IHBuYW1lKSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4KSAtPiAoaW50NjRfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFByb2dyYW1pKHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNp
emUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3Qg
YXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4g
KGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJpKHVp
bnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0
cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclByZWNpc2lv
bkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNpb25UeXBlKSAtPiAo
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZSwgR0NHTGludCBwcmVjaXNpb24p
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCkgLT4g
KFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFRleFBhcmFtZXRl
cmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1
aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1pdih1aW50MzJfdCBwcm9ncmFtLCBpbnQz
Ml90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybXVpdih1aW50
MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDY0X3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBIaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
bW9kZSkKKyAgICB2b2lkIElzQnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNFbmFibGVkKHVpbnQzMl90IGNhcCkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0ZyYW1lYnVmZmVyKHVpbnQz
Ml90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNQ
cm9ncmFtKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgSXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1NoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9v
bCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzVGV4dHVyZSh1aW50MzJfdCBh
cmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIExpbmVXaWR0
aChmbG9hdCBhcmcwKQorICAgIHZvaWQgTGlua1Byb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2
b2lkIFBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQg
UG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRzKQorICAgIHZvaWQgUmVuZGVy
YnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFNhbXBsZUNvdmVyYWdlKGZs
b2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB2b2lkIFNjaXNzb3IoaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2hhZGVyU291
cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyBhcmcxKQorICAgIHZvaWQgU3RlbmNpbEZ1bmModWlu
dDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2ls
RnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1
aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB2
b2lkIFN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgbWFzaykKKyAg
ICB2b2lkIFN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3Qg
enBhc3MpCisgICAgdm9pZCBTdGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJf
dCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBUZXhQYXJh
bWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAg
IHZvaWQgVGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBpbnQz
Ml90IHBhcmFtKQorICAgIHZvaWQgVW5pZm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgp
CisgICAgdm9pZCBVbmlmb3JtMWZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJf
dCB4KQorICAgIHZvaWQgVW5pZm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwg
ZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0yaShpbnQzMl90
IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB2b2lkIFVuaWZvcm0yaXYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQg
VW5pZm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisg
ICAgdm9pZCBVbmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB2b2lkIFVuaWZvcm0zaXYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTRm
KGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisg
ICAgdm9pZCBVbmlmb3JtNGZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVW5pZm9ybTRpdihp
bnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9p
ZCBVbmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgzZnYo
aW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBi
b29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9p
ZCBVc2VQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWYWxpZGF0ZVByb2dyYW0odWlu
dDMyX3QgYXJnMCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9h
dCB4KQorICAgIHZvaWQgVmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0LCAxPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZih1aW50
MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmdih1
aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4gdmFsdWVzKQorICAg
IHZvaWQgVmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHopCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQsIDM+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmKHVp
bnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZv
aWQgVmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGlu
ZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJf
dCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFZpZXdwb3J0KGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIEJ1ZmZl
ckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisg
ICAgdm9pZCBCdWZmZXJEYXRhMSh1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4gZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJTdWJEYXRhKHVp
bnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+IGRhdGEpCisgICAgdm9pZCBSZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgUmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50
MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhJbWFnZTJEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAg
dm9pZCBUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBi
b3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHZvaWQgVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3Nl
ZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRl
ciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
eG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
dWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qg
aW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2Vk
KHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJp
bWNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGlu
dDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmlt
Y291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50
MzJfdCBkaXZpc29yKQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXkoKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheSh1aW50
MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKSAtPiAoYm9v
bCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheSh1aW50
MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdl
dCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdy
aXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0QnVmZmVyU3ViRGF0YSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0
RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwg
aW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RY
MSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZv
aWQgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRh
Y2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxheWVyKQor
ICAgIHZvaWQgSW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMpCisgICAgdm9pZCBJbnZhbGlkYXRlU3Vi
RnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHZvaWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgdm9pZCBS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNh
bXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgdm9pZCBUZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
cywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGRlcHRoKQorICAgIHZvaWQgVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1h
dCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisg
ICAgdm9pZCBUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1
aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90
IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zm
c2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb3B5
VGV4U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENvbXByZXNzZWRU
ZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwg
aW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90
IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1Yklt
YWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBp
bnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1h
Z2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBHZXRGcmFnRGF0YUxvY2F0aW9uKHVp
bnQzMl90IHByb2dyYW0sIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3Qg
djApCisgICAgdm9pZCBVbmlmb3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1
aW50MzJfdCB2MSkKKyAgICB2b2lkIFVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMy
X3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB2b2lkIFVuaWZvcm00dWkoaW50
MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWlu
dDMyX3QgdjMpCisgICAgdm9pZCBVbmlmb3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTJ1aXYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lk
IFVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtNHVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4M2Z2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4
MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAg
IHZvaWQgVW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVmVydGV4QXR0cmli
STRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQz
Ml90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0
dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVp
bnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0
cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwg
aW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdSYW5nZUVsZW1l
bnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdCdWZm
ZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBDbGVhckJ1
ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVydWl2KHVpbnQzMl90
IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJf
dCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZXMpCisgICAgdm9p
ZCBDbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9h
dCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHZvaWQgQ3JlYXRlUXVlcnkoKSAtPiAodWlu
dDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVRdWVyeSh1aW50
MzJfdCBxdWVyeSkKKyAgICB2b2lkIElzUXVlcnkodWludDMyX3QgcXVlcnkpIC0+IChib29sIHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmVnaW5RdWVyeSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgRW5kUXVlcnkodWludDMyX3QgdGFyZ2V0KQor
ICAgIHZvaWQgR2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UXVlcnlPYmplY3R1
aSh1aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNhbXBsZXIoKSAtPiAodWludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVTYW1wbGVyKHVpbnQzMl90IHNh
bXBsZXIpCisgICAgdm9pZCBJc1NhbXBsZXIodWludDMyX3Qgc2FtcGxlcikgLT4gKGJvb2wgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kU2FtcGxlcih1aW50MzJfdCB1bml0
LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qg
c2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBTYW1wbGVy
UGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0p
CisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJf
dCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRmVuY2VTeW5jKHVpbnQz
Ml90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIElzU3luYyh1aW50NjRfdCBhcmcwKSAtPiAoYm9vbCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVN5bmModWludDY0X3QgYXJnMCkK
KyAgICB2b2lkIENsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCB1
aW50NjRfdCB0aW1lb3V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0
aW1lb3V0KQorICAgIHZvaWQgR2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB2b2lkIElz
VHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgQmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgaWQpCisgICAgdm9pZCBCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHBy
aW1pdGl2ZU1vZGUpCisgICAgdm9pZCBFbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+
IHZhcnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHZvaWQgR2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2
b2lkIFBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgUmVzdW1lVHJhbnNmb3JtRmVl
ZGJhY2soKQorICAgIHZvaWQgQmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHZvaWQgQmluZEJ1ZmZlclJhbmdlKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zm
c2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0VW5pZm9ybUluZGljZXModWludDMyX3Qg
cHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdW5pZm9ybU5hbWVzKSAtPiAoVmVjdG9yPHVpbnQzMl90
PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1zKHVp
bnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4gdW5pZm9ybUluZGljZXMsIHVpbnQzMl90
IHBuYW1lKSAtPiAoVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIHVuaWZv
cm1CbG9ja05hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVu
aWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHZvaWQg
R2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9y
bUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQz
Ml90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBp
bnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNr
LCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRl
VmVydGV4QXJyYXlPRVMoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNW
ZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzApIC0+IChTdHJp
bmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJbnNlcnRFdmVudE1hcmtlckVY
VChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcgYXJnMCkK
KyAgICB2b2lkIFBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB2b2lkIERyYXdCdWZmZXJzRVhUKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwg
aW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1
aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorfQorCisjZW5kaWYKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZmZlOGMxZmM3YWZhMTcyZjFiYjljNzM0MjY3NWM1ZGZlNmUxNzZlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTAsMCArMSwxMTgzIEBACisvKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBu
b3QgZWRpdC4KKy8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUg
c2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9u
cy4KKyNwcmFnbWEgb25jZQorICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAg
ICB9CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgIH0KKyAgICB2
b2lkIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPm1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIH0K
KyAgICB2b2lkIGF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIp
OworICAgIH0KKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50
MzJfdCBpbmRleCwgU3RyaW5nJiYgbmFtZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymlu
ZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBiaW5k
QnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRG
cmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2
b2lkIGJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7Cisg
ICAgfQorICAgIHZvaWQgYmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcx
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpOwor
ICAgIH0KKyAgICB2b2lkIGJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQg
Ymx1ZSwgZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29sb3Io
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb24o
dWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvbiht
b2RlKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9k
ZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVu
ZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9pZCBi
bGVuZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAgICB2
b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1
aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxw
aGEpOworICAgIH0KKyAgICB2b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFy
Z2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Y2xlYXIodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFz
ayk7CisgICAgfQorICAgIHZvaWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBm
bG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJD
b2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0
aChmbG9hdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0
aCk7CisgICAgfQorICAgIHZvaWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFz
ayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jb2xvck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlZCks
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihibHVlKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAgIHZv
aWQgY29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jb21waWxlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBib3JkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOwor
ICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50
MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVidWZm
ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0
ZVByb2dyYW0oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlUmVuZGVyYnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgY3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZv
cm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmNyZWF0ZVNoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQg
ZGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRl
bGV0ZUJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihh
cmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZv
aWQgZGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVT
aGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hh
ZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9Cisg
ICAgdm9pZCBkZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+ZGVwdGhGdW5jKGZ1bmMpOworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZsYWcp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4oZmxhZykpOworICAgIH0KKyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZs
b2F0IHpGYXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpG
YXIpOworICAgIH0KKyAgICB2b2lkIGRldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJf
dCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwgYXJn
MSk7CisgICAgfQorICAgIHZvaWQgZGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmRpc2FibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5
cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAgfQor
ICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQz
Ml90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJh
d0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZz
ZXQpKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5lbmFibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZsdXNo
KCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9pZCBm
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1l
bnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMy
X3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRl
eHRhcmdldCwgYXJnMywgbGV2ZWwpOworICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50MzJf
dCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CisgICAg
fQorICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdl
dEFjdGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
byYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZv
IGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlQXR0
cmliKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUsIFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZv
cm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwg
V1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWludDMy
X3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlv
bihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwg
cG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0U3RyaW5nKHVpbnQzMl90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3Ry
aW5nKG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2
YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9h
dCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQq
Pih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRl
Z2Vydih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNp
emVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5h
bWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1
ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGludDY0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGdldFByb2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52
KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVf
dD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUs
IHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxi
b29sPihyZWludGVycHJldF9jYXN0PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRFcnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXJyb3Io
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgZ2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQ
cm9ncmFtSW5mb0xvZyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmko
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyaSh1aW50MzJfdCBh
cmcwLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGFyZzAsIHBu
YW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJp
bmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRTaGFkZXJJbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
KHVpbnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiwgaW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6OmFycmF5PEdDR0xpbnQsIDI+
IHJhbmdlIHsgfTsKKyAgICAgICAgR0NHTGludCBwcmVjaXNpb24gPSB7IH07CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5
cGUsIHJhbmdlLCAmcHJlY2lzaW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihyYW5n
ZS5kYXRhKCkpLCByYW5nZS5zaXplKCkpLCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdl
dFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNv
dXJjZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwg
cG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRV
bmlmb3JtZnYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFs
dWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQs
IDE2PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBt
X2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJl
dF9jYXN0PGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgZ2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVp
bnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3Rv
cjxHQ0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOwor
ICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJf
dCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIFZlY3RvcjxHQ0dMdWludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2
YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZS5kYXRh
KCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24o
dWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24oYXJnMCwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5k
ZXgsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJp
Yk9mZnNldChpbmRleCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aGlu
dCh0YXJnZXQsIG1vZGUpOworICAgIH0KKyAgICB2b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzQnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlz
RW5hYmxlZCh1aW50MzJfdCBjYXAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRW5hYmxlZChjYXApOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGlzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+aXNGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dy
YW0odWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGlzUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmlzUmVuZGVyYnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVy
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2hhZGVyKGFyZzApOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGlzVGV4dHVyZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xl
YW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5p
c1RleHR1cmUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJv
b2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBsaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5saW5rUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJf
dCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxT
dG9yZWkocG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0
IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25P
ZmZzZXQoZmFjdG9yLCB1bml0cyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFn
ZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVy
U3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9Cisg
ICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4oaW52ZXJ0KSk7CisgICAgfQorICAgIHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGlu
dDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQg
c2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIGFyZzEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBz
dGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAg
ICB9CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90
IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQor
ICAgIHZvaWQgc3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c3RlbmNpbE1hc2sobWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBh
cmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5zdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0
ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOwor
ICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90
IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAg
ICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5h
bWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJm
KHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSks
IHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFpKGludDMyX3QgbG9jYXRpb24s
IGludDMyX3QgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9u
LCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtMWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0y
ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm0yZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3Qg
eCwgaW50MzJfdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmkobG9jYXRp
b24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTNmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYu
ZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2koaW50MzJfdCBs
b2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtM2l2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT51bmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVu
aWZvcm00ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpKGludDMyX3QgbG9jYXRpb24sIGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0
YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wg
dHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVzZVBy
b2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dXNlUHJvZ3Jh
bShhcmcwKTsKKyAgICB9CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFyZzApOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCAxPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48MT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJm
KHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiYm
IHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4
LCBtYWtlR0NHTFNwYW48Mj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1
ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVpbnQzMl90IGlu
ZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliM2Z2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiYm
IHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4
LCBtYWtlR0NHTFNwYW48Mz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1
ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGlu
ZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYlBv
aW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBu
b3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdmlld3BvcnQoaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9p
ZCBidWZmZXJEYXRhMCh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVz
YWdlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihhcmcxKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZl
ckRhdGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRh
dGEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRh
KHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZl
clN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJT
dWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50
MzJfdCB0eXBlLCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFT
aXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRh
LmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMxKGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4
SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVs
cy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDEo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJf
dCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXpl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAg
fQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdl
U2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0
KSk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBp
bnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQs
IHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQz
Ml90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwg
aW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50
c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zm
c2V0KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKHVp
bnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBj
cmVhdGVWZXJ0ZXhBcnJheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVWZXJ0ZXhB
cnJheSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZGVsZXRlVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNW
ZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5
KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVmVydGV4QXJyYXkoYXJnMCk7CisgICAg
fQorICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMy
X3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0
LCB1aW50NjRfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5QnVmZmVyU3Vi
RGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ocmVh
ZE9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nh
c3Q8R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0
YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGNoYXIsIDQ+IGRhdGEo
c3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdl
dEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBk
YXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAsIGludDMy
X3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGlu
dDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ss
IHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxpdEZyYW1lYnVm
ZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZ
MSwgbWFzaywgZmlsdGVyKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXll
cih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUs
IGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2
ZWwsIGxheWVyKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMy
X3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRzKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRz
LmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+JiYgYXR0YWNobWVudHMsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkpLCBhdHRhY2htZW50cy5zaXplKCkpLCB4LCB5
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCByZWFkQnVmZmVyKHVpbnQzMl90IHNy
YykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMpOworICAgIH0KKyAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdl
dCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZv
aWQgdGV4U3RvcmFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBk
ZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2
ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIH0KKyAgICB2
b2lkIHRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1h
Z2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhl
bHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihw
aXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1Yklt
YWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBp
bnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAg
IH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwg
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9Cisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1h
Z2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBy
ZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0
LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBk
ZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOwor
ICAgIH0KKyAgICB2b2lkIGdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3Ry
aW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0s
IG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90
IHYxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwg
djEpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMy
X3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQz
Ml90IHYyLCB1aW50MzJfdCB2MykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1
aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24sIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1
aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00
dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24sIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXg0eDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0
cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDN4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSks
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0
YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYo
aW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2
KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRl
eCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdCwgND4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRl
eEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQz
Ml90IHosIHVpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
Ykk0dWkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0
dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiYmIHZh
bHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgs
IG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVz
LmRhdGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJf
dCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJUG9p
bnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihv
ZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2Rl
LCB1aW50MzJfdCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0
eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdSYW5n
ZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dM
aW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVycyhJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRy
YXdCdWZmZXJzKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4o
YnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVy
aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVm
ZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMaW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBjbGVhckJ1ZmZlcnVpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFs
dWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYodWludDMyX3QgYnVm
ZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFs
dWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4o
dmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1
ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwg
aW50MzJfdCBzdGVuY2lsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZp
KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOworICAgIH0KKyAgICB2b2lkIGNy
ZWF0ZVF1ZXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxl
dGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
UXVlcnkocXVlcnkpOworICAgIH0KKyAgICB2b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzUXVlcnkocXVlcnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJlZ2lu
UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBlbmRR
dWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5
KHRhcmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnkodGFyZ2V0LCBw
bmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0
ZVNhbXBsZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2FtcGxlcigpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVTYW1wbGVyKHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIGlzU2FtcGxlcih1aW50MzJf
dCBzYW1wbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgYmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7Cisg
ICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMy
X3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBs
ZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBh
cmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVy
LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmKHVp
bnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZs
b2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBs
ZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQz
Ml90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQ
YXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24s
IHVpbnQzMl90IGZsYWdzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzeW5jIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5jKGNvbmRpdGlvbiwg
ZmxhZ3MpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKSk7CisgICAgfQorICAgIHZv
aWQgaXNTeW5jKHVpbnQ2NF90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU3luYyhyZWludGVy
cHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAg
ICB9CisgICAgdm9pZCBkZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlbGV0ZVN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgfQorICAgIHZvaWQgY2xpZW50V2FpdFN5bmModWlu
dDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5jbGllbnRXYWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTHVpbnQ2ND4odGlt
ZW91dCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgd2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3Qg
dGltZW91dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+d2FpdFN5bmMocmVpbnRlcnByZXRf
Y2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRp
Y19jYXN0PEdDR0xpbnQ2ND4odGltZW91dCkpOworICAgIH0KKyAgICB2b2lkIGdldFN5bmNpKHVp
bnQ2NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN5bmNpKHJl
aW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIHBu
YW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9i
amVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50
MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2soaWQpOworICAgIH0KKyAgICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlk
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0
LCBpZCk7CisgICAgfQorICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBw
cmltaXRpdmVNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZl
ZWRiYWNrKHByaW1pdGl2ZU1vZGUpOworICAgIH0KKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRi
YWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsK
KyAgICB9CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dy
YW0sIFZlY3RvcjxTdHJpbmc+JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwg
dmFyeWluZ3MsIGJ1ZmZlck1vZGUpOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIHBhdXNlVHJhbnNmb3Jt
RmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRi
YWNrKCk7CisgICAgfQorICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVp
bnQzMl90IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlckJhc2Uo
dGFyZ2V0LCBpbmRleCwgYnVmZmVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2Uo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRC
dWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+
KG9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnNCkpOworICAgIH0KKyAgICB2
b2lkIGdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYg
dW5pZm9ybU5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50MzJfdD4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQ+IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4mJiB1bmlmb3JtSW5kaWNl
cywgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGludDMyX3Q+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQ+
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGdldFVuaWZvcm1CbG9ja0luZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIHVuaWZvcm1C
bG9ja05hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFt
LCB1bmlmb3JtQmxvY2tOYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5n
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZv
cm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0lu
ZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwg
dWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVf
dD4ocGFyYW1zU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGludDMyX3QqPihwYXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xp
bnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVm
ZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50
MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwg
aW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3Jj
WDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNr
LCBmaWx0ZXIpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRl
eEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5kZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBp
c1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5pc1ZlcnRleEFycmF5T0VTKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRW
ZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuYmluZFZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lk
IGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAg
ICB9CisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJFWFQo
YXJnMCk7CisgICAgfQorICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBNYXJr
ZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQoKTsK
KyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5k
cmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51
bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBj
b3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBw
cmltY291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8R0NHTHZvaWRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZp
c29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQppbmRleCBiN2JiNjNiMjlhZDgwMjE3
MmRmMjdhMTI4OTViYjE5OThmYTRiNmIwLi4yNGM0MzdjYWFlN2Y4ZjlhOWFmZjkyNzAzZWZjZjlk
YTAzMWU0YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVBy
b2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNz
TWFjLm1tCkBAIC0zMiw4ICszMiw4IEBACiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KLSNpbXBvcnQg
PHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1w
b3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTQ0LDkgKzQ0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdm9p
ZCBHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKKyNpZiAwCiAgICAgLy8gSGF2aW5nIGEgd2luZG93IHNlcnZlciBjb25u
ZWN0aW9uIGluIHRoaXMgcHJvY2VzcyB3b3VsZCByZXN1bHQgaW4gc3BpbiBsb2dzICg8cmRhcjov
L3Byb2JsZW0vMTMyMzkxMTk+KS4KLSAgICBPU1N0YXR1cyBlcnJvciA9IFNldEFwcGxpY2F0aW9u
SXNEYWVtb24odHJ1ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChlcnJvciwgZXJyb3IgPT0gbm9FcnIp
OworICAgIGF1dG8gcmV0dmFsID0gQ0dTU2V0RGVueVdpbmRvd1NlcnZlckNvbm5lY3Rpb25zKHRy
dWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHJldHZhbCA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAg
IENHU1NodXRkb3duU2VydmVyQ29ubmVjdGlvbnMoKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBs
YXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KaW5kZXgg
ZGIwNmU1MzRmN2Y1MWQyZWJkMDM4MjVmNTgyNDVmODQ5NmY4YjE3OS4uZWQxMDBiMzZlZDZmNDZk
NGFhZjYzNTQ0Nzc4ODJhYjc5M2ExMWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4K
QEAgLTIwNyw2ICsyMDcsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5BQVBMLChE
aXNwbGF5UGlwZXxPcGVuQ0xkaXNhYmxlZHxJT0dyYXBoaWNzX0xFUih8X1JlZ1RhZ18xfF9SZWdU
YWdfMHxfQnVzeV8yKXxhbGlhcy1wb2xpY3l8Ym9vdC1kaXNwbGF5fGRpc3BsYXktYWxpYXN8bXV4
LXN3aXRjaC1zdGF0ZXxuZHJ2LWRldnxwcmltYXJ5LWRpc3BsYXl8c2xvdC1uYW1lKSIpCiAgICAg
KGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkFUWSwoY2JpdHN8ZmJfKGxpbmVieXRlc3xvZmZzZXR8
c2l6ZSl8aW50cmV2KSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJBVFksRGV2aWNlTmFtZSIpIDs7
IE5lZWRlZCBieSBNZXRhbCBjb21waWxlcnMKKyAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxFRklE
aXNwbGF5IikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxGYW1pbHlOYW1lIikgOzsgRGl0dG8K
ICAgICAoaW9raXQtcHJvcGVydHkgIkFWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJCYWNrbGlnaHRIYW5kbGUiKQpAQCAtMjE3LDYgKzIxOCw5IEBACiAgICAgKGlva2l0LXByb3Bl
cnR5ICJDYXBzTG9ja0RlbGF5IikKICAgICAoaW9raXQtcHJvcGVydHkgIkNhc2VTZW5zaXRpdmUi
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ29uZmlnU3RhdGUiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiRFBMYW5lcyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtCaXQiKQorICAgIChpb2tp
dC1wcm9wZXJ0eSAiRFBMaW5rUmF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXNjcmlwdGlv
biIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXZlbG9wbWVudCIpCiAgICAgKGlva2l0LXByb3Bl
cnR5LXJlZ2V4ICMiXkRldmljZSggQ2hhcmFjdGVyaXN0aWNzfEVxSUQpIikKQEAgLTIyOSwxMCAr
MjMzLDE3IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJGYW1pbHkgSUQiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiRm9yY2VTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9ybWF0cyIp
CisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlckVuYWJsZWQiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiRnJhbWVidWZmZXJTdGFydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkdQVUNv
bmZpZ3VyYXRpb25WYXJpYWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEQ0NEaXNwbGF5
YWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEZWJ1Z051bGxDbGllbnRNYXNrIikKICAg
ICAoaW9raXQtcHJvcGVydHkgIkdwdURlYnVnUG9saWN5IikKKyAgICAoaW9raXQtcHJvcGVydHkg
IkdQVVJhd0NvdW50ZXJCdW5kbGVOYW1lIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0Nv
dW50ZXJQbHVnaW5DbGFzc05hbWUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSEVWQ1N1cHBvcnRl
ZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJISURQb2ludGVyQWNjZWxlcmF0aW9uVHlwZSIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJId0N0eENhY2hlVXBkYXRlIikKICAgICAoaW9raXQtcHJvcGVy
dHktcmVnZXggIyJeSU9BY2NlbChEaXNwbGF5UGlwZUNhcGFiaWxpdGllc3xJbmRleHxUeXBlc3xS
ZXZpc2lvbikiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JTyhDbGFzc3xNYXRjaENh
dGVnb3J5fE5hbWVNYXRjaCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0F1ZGlv
Q29udHJvbChDaGFubmVsSUR8SUR8U3ViVHlwZXxVc2FnZXxWYWx1ZSkiKQpAQCAtMjgyLDYgKzI5
Myw4IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1BhcmVudE1hdGNoIikKICAgICAoaW9raXQt
cHJvcGVydHktcmVnZXggIyJeSU9QQ0koKENsYXNzfFByaW1hcnl8UHJvcGVydHl8KU1hdGNofEV4
cHJlc3MoQ2FwYWJpbGl0aWVzfExpbmsoU3RhdHVzfENhcGFiaWxpdGllcykpfE1TSU1vZGV8UmVz
b3VyY2VkfFR1bm5lbGxlZCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QTUlzUG93ZXJNYW5h
Z2VkIikKKyAgICAoaW9raXQtcHJvcGVydHkgIklPUGVyc29uYWxpdHlQdWJsaXNoZXIiKQorCiAg
ICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPUGxhdGZvcm0oU2VyaWFsTnVtYmVyfFVVSUQp
IikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUG93ZXJNYW5hZ2VtZW50IikKICAgICAoaW9raXQt
cHJvcGVydHkgIklPUHJvYmVTY29yZSIpCkBAIC0zMTcsNiArMzMwLDcgQEAKICAgICAoaW9raXQt
cHJvcGVydHkgIlByb3RvY29sIENoYXJhY3RlcmlzdGljcyIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJSZW1vdmFibGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5SZXNldE9uKExvY2t8
VW5sb2NrKU1zIikKKyAgICAoaW9raXQtcHJvcGVydHkgIlNXSVBfcHJvcGVydGllcyIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJTYWZlRWplY3RSZXF1ZXN0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiU2FtcGxlUmF0ZXMiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2VyaWFsIE51bWJlciIpCkBA
IC0zMzgsNiArMzUyLDcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgImF0dGFjaGVkLWdwdS1jb250
cm9sLXBhdGgiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5hdWRpby0oY29kZWMtaW5m
b3xkZXZpY2UtbXZhbHVlfGRldmljZS1udmFsdWV8c2VsZWN0b3IpIikKICAgICAoaW9raXQtcHJv
cGVydHkgImF2LXNpZ25hbC10eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgImJhY2tsaWdodC1Q
V00tZnJlcSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJiY2RWZXJzaW9uIikKICAgICAoaW9raXQt
cHJvcGVydHktcmVnZXggIyJeKGJvYXJkfGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW18dmVuZG9y
KS1pZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJib290LWdhbW1hLXJlc3RvcmVkIikKQEAgLTM1
MCw2ICszNjUsMTEgQEAKICAgICAoaW9raXQtcHJvcGVydHkgImNvbm5lY3Rvci10eXBlIikKICAg
ICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeKGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW0tdmVu
ZG9yfHRvdWNoLXNpemUpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImRldmljZV90eXBlIikK
KyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktYnBjIikKKyAgICAoaW9raXQtcHJvcGVydHkg
ImRpc3BsYXktY29ubmVjdC1mbGFncyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWxp
bmstY29tcG9uZW50LWJpdHMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1waXhlbC1j
b21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXR5cGUiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiZHBtIikKICAgICAoaW9raXQtcHJvcGVydHkgImVycm9yZGIiKSA7
OyBOZWVkZWQgZm9yIE9wZW5HTCBvbiBvbGRlciBoYXJkd2FyZQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiZmlsZXZhdWx0LWltYWdlIikgOzsgTmVlZGVkIGJ5IExhdW5jaFNlcnZpY2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5o
CmluZGV4IDZhNWM2NzI1Y2FhOWJkYjg2N2FiODZiOGM1N2YzNmRlMmM4OTZkY2YuLmJlN2Y1MjIw
YmU5Yjg1Zjg2OGE1ZjgzN2VmZWQ2NmRkZjk1ZjI5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zOSwxMCAr
MzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKLW5h
bWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFJlbW90ZUxlZ2FjeUNETVByb3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHku
Y3BwCmluZGV4IDQ3ZjVkMmYyNzBmYTVkZTRmYWRlMTUxNDQ0MjExMTc5NGVkMzZkMjguLjJjNWU3
ZGU3ZDJlNzU2OTYwYTNmM2VjODc2YzhiODI1YzZlNDViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0xlZ2FjeUNETS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKaW5kZXggYTk4
Y2ZhNGM5ZjgwMjMxOTA0ZjhlZjBlYWE5MzYyMjlhZmE5NzU5OC4uZmVjNjVjZjYyYjY2NzRiODMw
MGM1MGNkNDMzNDE1ZTkxNTExNDQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCkBAIC0y
OSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVJlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgK
aW5kZXggZDg5YjgwM2Y2YWJmNDFjOGU5ZWRkZTQxNDI3NjkzMjgyNmQxYjMzOC4uMDgxZWIzMTgw
ZDAyMTY0YjVhYTNkNTQ4MDZmNzJjN2VkYzBjYjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgK
QEAgLTI3LDE1ICsyNywxNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3Jl
L1BvbGljeUNoZWNrZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKaW5kZXggNmJmYmZh
ZmIyMDQ0NzgzMGQ3MzBjMzhjNTVkOTE2MDIyYzIzZDMxNi4uMDZlMzA5ZTRkNTdlYTA0N2Y1ZWQ4
MjkwMjU4YjE5Y2JjZGE2MTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCkBAIC0zOCw3ICszOCw2IEBACiBu
YW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5j
cHAKaW5kZXggMjQ1Y2Y0MGRmYzZmYzcyNDE3NDk5Yzk5NmVlYTk1ZjBhM2E4ZDY5YS4uODY4MmNk
Nzk1YTVmNTQ0YWJiNzhlN2MxYjg1ODdiOTY4ODNmOTQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3Bw
CkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU09VUkNFKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaAppbmRleCAzOTBjMGNlMWMy
N2I2MDhkYzk3YWFmYTUxODYzNjE4ODBjM2FmNGQzLi5jMzM3ODMzM2MwMjY2NmRhNjFhYmFjNjQ5
NDcwMjEyMWRiNWU4NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaApAQCAtMjcsOSArMjcsMTEgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNl
QnVmZmVySWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtMzgsNyArNDAsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAppbmRleCAzNjAzMTBiN2QxMjFkMjg2
ZDhkMTYxZjE4M2FiZDBlNzQ1YjgzNTMzLi44NDNiYjA2ZjdiNTZjNmUzY2ZiZWU3OWE3ZTQyODFl
ZmVlOGY5YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBAIC0yOCwxNCArMjgsMTUgQEAKICNpZiBVU0UoTElC
V0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVy
LmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KIAogbmFt
ZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4
IGY4YWJjMWY0MDVmYzE0Njk0NzViNGQ5MGJhZDNkNTNjYTBmODAxNGUuLjYxYzQ3MDhhZTk2ZGJj
YWE1Njk4MDllZTE5OTViZTgxNmE5MWZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMjgsNyArMjgs
NiBAQAogCiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMu
aCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5k
ZXggNzg4YzVmMDBjMDJmNGYxNDhmZWVjY2QzOGQxMDY4MThiMGQ3ZTk2MS4uM2FiNGU0YjFjZjFj
MTQxMjMwYzEzZTQ1NzZjNWVkNmU2ZWZjMmVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5Lmgi
CkBAIC0zNiw3ICszNyw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29h
Lm1tCmluZGV4IDdhNjMzNjM0N2MwMDdlOTdiNzNiNTQzNzc0OTE2ODM4ZDY0MDM3ZGEuLjFhYTUz
Y2MyZmI3N2JhZjllMzI2NTA3MjEwODA5ZmQ3NmNmYmJmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1t
CkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkxlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5oIgogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1w
b3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiTmV0
d29ya1Byb2Nlc3MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCmluZGV4IGY2ZWQ4
MTFmNTM0MmZlNDg1NTUxNzZmODlkNTE0NTc1NjJjNjY1ODUuLjBiY2Q1NjczYzkzNDZhZGExMWQ2
NTZjM2FkZDUxYmU0ZWRiYzI3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29s
SUQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc1N1cHBsZW1lbnQuaCIKQEAgLTM5LDEwICs0MCw2IEBAIE9CSkNfQ0xBU1MgTlNVUkxTZXNz
aW9uQ29uZmlndXJhdGlvbjsKIE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbDsKICNlbmRpZgog
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19IC8vIG5hbWVzcGFjZSBJ
UEMKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKQEAgLTExMiw0ICsxMDksMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmNwcAppbmRleCBkZGJlNGVlZGQ0NDFkZjg3YzU1YWQzMzBmMDQy
Y2NkY2ZhZGZiOTBiLi42NTFmZjI1NGY5MDVjMTZhOTBjYjQ4MmM5NzczZDRhYzc0Mjk0ZWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNb25pdG9yLmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCAzOGFmMzUwODA3NDY0MjkzYjk1
ZmZhZjA1OWZkZWMzNjkwMTc3Mjc0Li45M2YwM2E4MjU1ZjFhZTcxNzM4M2MwMDI5MGEyNGY5MWNh
N2M2NTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRv
d25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgpAQCAtNDQsMTAg
KzQ1LDYgQEAgT0JKQ19DTEFTUyBOU1Byb2dyZXNzOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25E
b3dubG9hZFRhc2s7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmlu
ZGV4IDMzMjE2MzQwZjI3YzE2MDVjM2NkNzRiYzY5MDdiN2Q5MWI0N2I3NjIuLjcyNmRkOTkwYmFm
ZDQzOTRiNWFmYzAzMmExY2YyMGYxODQ5YzQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFu
YWdlci5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJOZXR3b3JrTG9hZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAyY2QxNjFiMGFjM2U3ODllMjI0
NmMwNWIwMTY1ZjFjNzI2NzhmYTUwLi45ODBhMDZmNzgzOWRiZDVlOWY5ZDUwNDU0MDlhMzNkNzdi
MWMwMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIK
QEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldENoYW5uZWwuY3BwCmluZGV4IDQ0OWIxM2Q4ZTA3YjJjZDA0MmM0YmEzNjM2YWI3
OTNkMzdiMWMzZjQuLmM3Nzg4ODExZjAzMmQ1OGY4YjUyNzczNmUxZDIyNzg0MTBmOTEzYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAppbmRleCAz
MTk2NDE5MGQxNDFkNTQ5ZGEwYmFmMmRjOGJmMjk3YjRlNTgxZTg5Li4wNDM0YmY4ODA5YTdlYjNl
Y2MxOGU4ZjY1MGNjMDI3OGFlNmViNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1RpbWVyLmg+CkBAIC00MCw3ICs0MSw2IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDViNDg5
Y2M1MzhmN2MwNzE1MTAxMDZjNThmNWMwOTRlYzlhOGUxYjguLjQ4Yzg4M2JmYzBmYzdkNTAxYzhh
NGE0ZTc2ODRjY2MzM2UzOGMxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW0uaCIKIAotI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAppbmRleCA1MmVjMzky
NjkwMjE4ZWRlNjY4ZDU1ZTYzOGQ4ZTE3NTAyZmQ2ZWU1Li43MzQyOWEwMjc5MDZiNDE2YTM4YzBj
NmIzOTQ2YTBkYjlmYjIwNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2Nr
ZXRTdHJlYW1FcnJvci5oPgpAQCAtMzcsNyArMzgsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgK
aW5kZXggZDMzY2JmZjEwODljYzEwNWRkMWEwMGJlYmZkZjYxZDMzYzdmNjZiZC4uZDM3ZDc4MDY5
ODNiYmE1NDdjYTBmOTIzNWViNGJmNmI3MzE1NjVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
ZXRjaElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KQEAgLTQz
LDcgKzQ0LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBj
bGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTb2NrZXRUYXNrLmgKaW5kZXggZGI1Nzk1ZGQyMTdmNDVhZDVmNjdlMzBiNzkxZjkyZTI3
NmMwMjk4Ni4uOTYxZTQ2NDU5YmU3NzE3N2UyNjA1ZTdkODY1MmFkYTgwMjA5N2I1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKQEAgLTMxLDkgKzMx
LDYgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogI2Vsc2UKIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRU
YXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0
VGFza0NvY29hLmgKaW5kZXggZGFjNjkzNTA3ZWIzZWZjZWE2ZDEwOTQ4MDFiYzAxYjM2ZmUyNjM5
ZC4uZTY4MjZlNDdlODM5NTk0MDI4YWY4ZjRhZWQyMzkyYjRiMDVkMmY1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2Nv
YS5oCkBAIC0yNywxNSArMjcsMTIgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tF
VCkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25X
ZWJTb2NrZXRUYXNrOwogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Nlc3Npb247CiBjbGFzcyBOZXR3
b3JrU2Vzc2lvbkNvY29hOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbQppbmRleCA4NTUzNDg3NDQwNGNlMmJhYTQ0
YWU2NTY1NDdkMzcyMjUzMzJlYWI4Li45MGJjNDA5YmZmYjcwYTBlZTllNzM1OGIzODY3NTk3ZDI5
ZjI0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dl
YlNvY2tldFRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgSEFWRShO
U1VSTFNFU1NJT05fV0VCU09DS0VUKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1w
b3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjaW1wb3J0ICJOZXR3b3JrU29ja2V0Q2hhbm5l
bC5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCmlu
ZGV4IDQ1ZmM2NjlkNzY2YTc2MWM1ZDc3M2RjOTVmMDU0MWEzOGUzNmY4ZTMuLmEzZTcwMTRiNWQ4
ZWMwOTczOGZmYTdkNTY2NDU0NTAxMGYwNTM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3Vw
LmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvSFRUUFBhcnNlcnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKaW5kZXggZTQyMWI5ZTFjNzEzMTg0MzRmNjQ4N2Y1
ZmNiNWE2YTg3YmQ3MzkxOS4uMDg4OTIzOTU5ZmU0NjBmZjJiYmE0YzhjMDgzOTk4MDY1N2JmMzQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tl
dFRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNv
Y2tldFRhc2tTb3VwLmgKQEAgLTI1LDE0ICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAotbmFt
ZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCBlMDBhMGNjZGZhNTg3NWMwMjhjNTA1MjMxMTQx
NzI4ZWU5NWI0MzkyLi5lMzhiYzFjNjBhZjZkY2YwMzY5NjVhYTc4YWFkYmQ2ZDhkNGI2MjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSA8dXRp
bGl0eT4KQEAgLTUzLDYgKzU0LDQ4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1w
bGVBcmd1bWVudENvZGVyIHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+
PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgRXh0
ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJy
YXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIGlmICghRXh0
ZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5k
YXRhKCkpLCBhcnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOwor
ICAgIH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIGlmICghRXh0ZW50KQorICAgICAgICAgICAg
cmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZSgpOworICAgICAgICBjb25zdCB1aW50OF90KiBkYXRh
ID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShFeHRlbnQgKiBzaXplb2YoVCks
IGFsaWdub2YoVCkpOworICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBFeHRlbnQpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVm
ZXJlbmNlRHluYW1pY0V4dGVudD4+IHsKKyAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBB
cnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUm
IGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGFycmF5UmVmZXJlbmNlLnNpemUoKSkpOworICAgICAgICBpZiAoIWFycmF5
UmVmZXJlbmNlLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJy
YXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpICogc2l6ZW9mKFQpLCBh
bGlnbm9mKFQpKTsKKyAgICB9CisgICAgc3RhdGljIE9wdGlvbmFsPEFycmF5UmVmZXJlbmNlVHlw
ZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICB1aW50NjRfdCBzaXpl
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIEFy
cmF5UmVmZXJlbmNlVHlwZSgpOworICAgICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQp
KTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0
IFQqPihkYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSk7CisgICAgfQorfTsKKwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8T3B0aW9uU2V0PFQ+PiB7CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE9wdGlvblNldDxU
PiYgb3B0aW9uU2V0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FycmF5UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJl
ZmVyZW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkMzJiYjQ1N2E1Yjg4NWYzZDU2Njg3ZTc5ZjE1YzNhMjY3
MWJlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJh
eVJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKKworaW5saW5lIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlSZWZlcmVuY2VEeW5hbWlj
RXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+
CitjbGFzcyBBcnJheVJlZmVyZW5jZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBB
cnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+IHsKK3B1YmxpYzoK
KyAgICBBcnJheVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIEFycmF5UmVmZXJlbmNlKGNv
bnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgICAg
ICAsIG1fc2l6ZShzaXplKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlu
bGluZUNhcGFjaXR5PgorICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eT4mIHZlY3RvcikKKyAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKKyAgICAg
ICAgLCBtX3NpemUodmVjdG9yLnNpemUoKSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QK
KyAgICB7CisgICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
bV9kYXRhLCBtX3NpemUpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2
YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7IH07CisgICAgc2l6ZV90IG1fc2l6ZSB7IH07Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KK2NsYXNzIEFycmF5UmVm
ZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBBcnJheVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAg
IEFycmF5UmVmZXJlbmNlKGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKQorICAgICAgICA6IG1f
ZGF0YShkYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4
dGVudCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAg
ICBBcnJheVJlZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3Ip
CisgICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgeworICAgICAgICBBU1NFUlQo
dmVjdG9yLnNpemUoKSA9PSBFeHRlbnQpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiAhRXh0ZW50OyB9CisKKyAgICBjb25zdGV4cHIgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBFeHRlbnQ7IH0KKworICAgIGNvbnN0IFQqIGRhdGEoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIFZlY3RvcjxUPiB2
ZWN0b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKKyAgICAgICAg
aWYgKCFpc0VtcHR5KCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgRXh0ZW50
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3Qg
VCogbV9kYXRhIHsgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KK0FycmF5UmVmZXJlbmNlKGNvbnN0IFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5PiYpIC0+IEFycmF5UmVmZXJlbmNlPFQ+OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCBlYzNkMTRhZThmM2VjMjQ3MDU0
NzYzY2FlZTkwOWNjMmM4NzVmNWQ4Li5iYmQ3YWJjYjRjZGM2MDQzODJiMTA2NWUzMzIzODQ0OWM2
YWM1OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0yMjcs
MTAgKzIyNywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1l
c3NhZ2VBc0ludmFsaWQoKTsKIAogICAgIHZvaWQgcG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29u
bmVjdGlvbldvcmtRdWV1ZSgpOwotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
Qz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFu
ZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxTZW5kT3B0aW9uPiA9
IHsgfSk7IC8vIFRocmVhZC1zYWZlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2Vu
ZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRp
b24+IHNlbmRPcHRpb25zID0geyB9KTsgLy8gVGhyZWFkLXNhZmUuCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiBy
ZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6
aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7
IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgorICAgIC8vIFN5bmMgc2VuZGVycyBzaG91bGQgY2hl
Y2sgdGhlIFNlbmRTeW5jUmVzdWx0IGZvciB0cnVlL2ZhbHNlIGluIGNhc2UgdGhleSBuZWVkIHRv
IGtub3cgaWYgdGhlIHJlc3VsdCB3YXMgcmVhbGx5IHJlY2VpdmVkLgorICAgIC8vIFN5bmMgc2Vu
ZGVycyBzaG91bGQgaG9sZCBvbiB0byB0aGUgU2VuZFN5bmNSZXN1bHQgaW4gY2FzZSB0aGV5IHJl
ZmVyZW5jZSB0aGUgY29udGVudHMgb2YgdGhlIHJlcGx5IHZpYSBEYXRhUmVmZXJlcmVuY2UgLyBB
cnJheVJlZmVyZW5jZS4KKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9u
U2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVh
ZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVh
ZCBvbmx5LgogICAgIAogICAgIC8vIFRocmVhZC1zYWZlLgpAQCAtMjQ5LDcgKzI1MSw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBU
OjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkp
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAg
ICAgfQpAQCAtNTUxLDcgKzU1Myw3IEBAIHZvaWQgbW92ZVR1cGxlKHN0ZDo6dHVwbGU8QS4uLj4m
JiBhLCBzdGQ6OnR1cGxlPEIuLi4+JiBiKQogICAgIFR1cGxlTW92ZXI8c2l6ZW9mLi4uKEEpLCBz
dGQ6OnR1cGxlPEEuLi4+LCBzdGQ6OnR1cGxlPEIuLi4+Pjo6bW92ZShXVEZNb3ZlKGEpLCBiKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0
aW9ucykKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IENv
bm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIENPTVBJTEVfQVNTRVJUKFQ6Omlz
U3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtNTcwLDE1ICs1NzIsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJgog
ICAgIC8vIE5vdyBzZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2Uoc3lu
Y1JlcXVlc3RJRCwgV1RGTW92ZShlbmNvZGVyKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsK
ICAgICBpZiAoIXJlcGx5RGVjb2RlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgLy8gRGVjb2RlIHRoZSByZXBseS4KICAgICBPcHRpb25hbDx0eXBl
bmFtZSBUOjpSZXBseUFyZ3VtZW50cz4gcmVwbHlBcmd1bWVudHM7CiAgICAgKnJlcGx5RGVjb2Rl
ciA+PiByZXBseUFyZ3VtZW50czsKICAgICBpZiAoIXJlcGx5QXJndW1lbnRzKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgbW92ZVR1cGxlKFdURk1vdmUo
KnJlcGx5QXJndW1lbnRzKSwgcmVwbHkpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBy
ZXBseURlY29kZXI7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyMjVmZGE3YmVkMmZlOGM0MDQ5YjU1ODcwNzlmZDFlMTYzNTRm
NGZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCi0KLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5j
b2Rlci5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotdm9pZCBEYXRhUmVmZXJlbmNlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVu
Z3RoQnl0ZUFycmF5KCp0aGlzKTsKLX0KLQotYm9vbCBEYXRhUmVmZXJlbmNlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKLXsKLSAgICByZXR1
cm4gZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVmZXJlbmNlKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmgKaW5kZXggMzQ1MGMzMWI3M2RkYjZhYTVlZGNlMmFmODAwMjk4ODdjNzk4ZTIw
NS4uZGJiM2Q2OTI3ZjM0MWM1YWE5M2ZjMTA3M2NiMDc1NmUzY2JhMzdkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaApAQCAtMjUsNTQgKzI1LDEwIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIkFycmF5
UmVmZXJlbmNlLmgiCiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEZWNvZGVyOwotY2xhc3Mg
RW5jb2RlcjsKLSAgICAKLWNsYXNzIERhdGFSZWZlcmVuY2UgewotcHVibGljOgotICAgIERhdGFS
ZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0KLSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAgICAgICAsIG1f
c2l6ZShzaXplKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+Ci0gICAgRGF0YVJlZmVyZW5jZShjb25zdCBWZWN0b3I8dWludDhfdCwgaW5saW5lQ2Fw
YWNpdHk+JiB2ZWN0b3IpCi0gICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCi0gICAgICAg
ICwgbV9zaXplKHZlY3Rvci5zaXplKCkpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KLQotICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IAotICAg
IHsgCi0gICAgICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIG1fZGF0YTsgCi0gICAgfQotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcigpIGNvbnN0Ci0gICAgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAg
ICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9zaXplKTsKLQotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KLQotICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBEYXRhUmVmZXJlbmNl
Jik7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgdWludDhfdCogbV9kYXRhIHsgbnVsbHB0ciB9Owot
ICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci19OwordXNpbmcgRGF0YVJlZmVyZW5jZSA9IEFycmF5
UmVmZXJlbmNlPHVpbnQ4X3QsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47CiAKIH0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA3
OGE0NjM4ZWI3MzA1YmZkMTkxMDg3MDY4ZDMwYmNkYjhkZmU4MmFlLi4yY2I3OWI3MzFjOGQzNTFh
MmQwNTk0NjM2MmM1YWI4YmJhZGJkYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmNwcApAQCAtMTg2LDIwICsxODYsMTUgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExl
bmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEZWNvZGVyOjpkZWNvZGVWYXJpYWJsZUxlbmd0aEJ5
dGVBcnJheShEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQorY29uc3QgdWludDhfdCogRGVj
b2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZV90IHNpemUsIHNpemVfdCBhbGln
bm1lbnQpCiB7Ci0gICAgdWludDY0X3Qgc2l6ZTsKLSAgICBpZiAoIWRlY29kZShzaXplKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbigx
LCBzaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghYWxpZ25CdWZmZXJQb3Np
dGlvbihhbGlnbm1lbnQsIHNpemUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNv
bnN0IHVpbnQ4X3QqIGRhdGEgPSBtX2J1ZmZlclBvczsKICAgICBtX2J1ZmZlclBvcyArPSBzaXpl
OwogCi0gICAgZGF0YVJlZmVyZW5jZSA9IERhdGFSZWZlcmVuY2UoZGF0YSwgc2l6ZSk7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIGJvb2wgRGVjb2Rlcjo6cmVtb3Zl
QXR0YWNobWVudChBdHRhY2htZW50JiBhdHRhY2htZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCmluZGV4IGI3MmRkOGFjZTI3NzNkYjM1NTllMzY2ZGQ5NTI0ZjIzNDFlNTVlMDYu
LjM0NGNlNjg4MmZjOTA5ODRiMmZhNTdiZjljNDhiOTY1MGUwZmY3NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAKIAogbmFtZXNwYWNlIElQQyB7
CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBJbXBvcnRhbmNlQXNzZXJ0aW9uOwogZW51
bSBjbGFzcyBNZXNzYWdlRmxhZ3MgOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGREaXNwYXRj
aFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdDsKQEAgLTc4LDggKzc3LDkgQEAgcHVi
bGljOgogCiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKLSAgICAvLyBUaGUg
ZGF0YSBpbiB0aGUgZGF0YSByZWZlcmVuY2UgaGVyZSB3aWxsIG9ubHkgYmUgdmFsaWQgZm9yIHRo
ZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNvZGVyIG9iamVjdC4KLSAgICBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNl
Jik7CisgICAgLy8gVGhlIGRhdGEgaW4gdGhlIHJldHVybmVkIHBvaW50ZXIgaGVyZSB3aWxsIG9u
bHkgYmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNvZGVyIG9iamVj
dC4KKyAgICAvLyBSZXR1cm5zIG51bGxwdHIgb24gZmFpbHVyZS4KKyAgICBXQVJOX1VOVVNFRF9S
RVRVUk4gY29uc3QgdWludDhfdCogZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZV90LCBz
aXplX3QgYWxpZ25tZW50KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoVCYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0VuY29kZXIuY3BwCmluZGV4IGZkNDA5MDc3NGIyYmMyYTc2MjliOWMwMmRjNTU0YzRjZGM5
OGY1Y2IuLmU4M2EzZTRhZmY0MmE1NzU1MDVkYzhmMDczMTdhMWMxYWMxOWRlYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZs
YWdzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMTQxLDcgKzE0Miw3IEBAIHZvaWQgRW5j
b2Rlcjo6d3JhcEZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IG9yaWdpbmFsKQog
CiAgICAgb3JpZ2luYWwtPnNldFNob3VsZERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5KFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk6Olllcyk7CiAKLSAg
ICBlbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShEYXRhUmVmZXJlbmNlKG9yaWdpbmFsLT5i
dWZmZXIoKSwgb3JpZ2luYWwtPmJ1ZmZlclNpemUoKSkpOworICAgICp0aGlzIDw8IERhdGFSZWZl
cmVuY2Uob3JpZ2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKTsKIAogICAg
IFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cyA9IG9yaWdpbmFsLT5yZWxlYXNlQXR0YWNo
bWVudHMoKTsKICAgICByZXNlcnZlKGF0dGFjaG1lbnRzLnNpemUoKSk7CkBAIC0yMTYsMTIgKzIx
Nyw2IEBAIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpCiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwg
c2l6ZSk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXko
Y29uc3QgRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKLXsKLSAgICBlbmNvZGUoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKSk7Ci0gICAgZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgMSk7
Ci19Ci0KIHZvaWQgRW5jb2Rlcjo6YWRkQXR0YWNobWVudChBdHRhY2htZW50JiYgYXR0YWNobWVu
dCkKIHsKICAgICBtX2F0dGFjaG1lbnRzLmFwcGVuZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAppbmRleCAwZWNmNTQxZjc3ODU4NTM2ZjFmY2Zh
ODM2Yjc2ZjI0ODJlNGM5YTExLi5lYTYxOTY3YmUxZWJjYmQ4YjZmYmJhYThiODVhZjQxOGU4ZDUw
Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC0zNiw3ICszNiw2IEBA
CiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwogZW51bSBjbGFzcyBN
ZXNzYWdlRmxhZ3MgOiB1aW50OF90OwogZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90
OwogZW51bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWlu
dDhfdDsKQEAgLTYyLDcgKzYxLDYgQEAgcHVibGljOgogICAgIHZvaWQgd3JhcEZvclRlc3Rpbmco
c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+KTsKIAogICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7Ci0gICAg
dm9pZCBlbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJik7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2Vu
dW08dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxU
Pj4+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2Nv
bnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWU+KiA9IG51bGxwdHI+CiAg
ICAgdm9pZCBlbmNvZGUoVCYmIHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKaW5kZXggN2ZkMTgzYTU2YWU5OGIwNjY0NWZmNzUxNDhhYzI5ODNjNTJlNGFlYi4u
NDEyOWQ0ZTJiNDlkNWM4ZmM0MWEyZDY1NGFkY2Q4OWU4NmM2MzdmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTk2LDcgKzk3LDYgQEAgc3RydWN0IENvZGluZ1R5cGUg
ewogICAgIHR5cGVkZWYgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2Vf
dDxUPj4gVHlwZTsKIH07CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlOwogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kaW5nVHlwZTxjb25zdCBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewogICAgIHVzaW5nIFR5cGUgPSBEYXRhUmVmZXJlbmNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IDQ2ZTIx
ZDhkOTM2ZjJkOGI1MTY3YjI0OWY4ODExMTZmZmViN2Q0YjkuLjc3NDYxZDU1NWI3MjkyYzIwZWJm
NTE0YTMwMmQxZGM2ZTc3NzAxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmgKQEAgLTU0LDkgKzU0LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBzZW5kPFU+KG1lc3NhZ2UsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2VuZE9wdGlv
bnMpOwogICAgIH0KKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRT
eW5jUmVzdWx0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5m
aW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0p
CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgbm90
IHN5bmMhIik7CiAKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0
ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3lu
Y09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkpOwogCkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmMo
VSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8
VD4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwg
T3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2Vu
ZFN5bmNSZXN1bHQgc2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVw
bHksIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0g
U2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VT4oc3RkOjpmb3J3
YXJkPFU+KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggN2EzY2IzMzg3NjM2ZGNhZmNl
YWNlYWQ5MWI4NjM5YjdiYTc2MzZjNi4uNTAwZjgzOWRmYWFlOTI5N2Y0ZGM2M2RjNjYzMDU4Nzdi
MjJkZjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
RW5jb2Rlci5oIgpAQCAtNDgsNyArNDksNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogT3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hh
cmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGE7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0
ZUFycmF5KGRhdGEpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IGlmIChkYXRhLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKaW5kZXggMmY3Mjg1YWMwYjRiZDZkZTEx
ZGZlYjlmZTMyOGYwMWM5OTk5NTBhMC4uZTk2ZGZiMWZiZjg5MWNkNGEwYzc3NGU4NWM5MDc4NzU4
YTZmZTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAKKyNpbmNs
dWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIAogbmFtZXNwYWNl
IElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZl
cmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNw
cAppbmRleCA4NTJlZjQzZTAwODYzMWM5ZmFmYTgyMzBjOTE5YzE3YTlkNGEyOWI2Li4yMTYxMTM5
YzMwMTRmMGVhZmIzZGM0N2M4NWRhNDE5MGEyYmEwNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKIAorI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDhiMzc0MGY0
YjEwMWFkOTBmNTBlZDU3Yzg1MGI5MDMwZmNjNDMwYzIuLjRiMjBjODVhYzUzNjIzNjQwM2E4M2Vh
OTczY2RjY2QxMGZkZjcyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJOUE9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiTlBSZW1vdGVPYmplY3RNYXAu
aCIKICNpbmNsdWRlICJOUFJ1bnRpbWVVdGlsaXRpZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCBhZDRmY2Q5ZDhj
Y2Y0MmYxMmVlNDg4ZTAxMzQ2YzYxOWE3MDFiOGQyLi5jN2E3MDUzY2JkMjZkMjA0NTRjMDQyYzZh
Y2UxNmNiNTI1MzBmNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpbkNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKQEAgLTM3LDEwICszOCw2
IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KIAotbmFtZXNwYWNlIElQQyB7Ci0gICAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIExheWVySG9zdGluZ0NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA1NzNlZDNkOGVlOWJiZjQxMDMxNjhl
NzlhMDU3ZjlkYmRiOWI4Njk1Li42NzMyNDRhNjdlMDk5ZmZiNzE4MDdkNTU1MGM0NTRmMzYzMWRi
MTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIwMyw2
ICsyMDMsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfZm9yX25hbWVzcGFjZShuYW1lc3Bh
Y2UsIGtpbmRfYW5kX3R5cGVzKToKIAogZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRf
ZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsKKyAgICAgICAgJ0lQQzo6RGF0YVJl
ZmVyZW5jZScsCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScs
CiAgICAgICAgICdTdHJpbmcnLApAQCAtMjE0LDYgKzIxNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nh
bm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9y
V29ya2VySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcycsCiAgICAgICAgICdXZWJDb3JlOjpMaWJXZWJSVENT
b2NrZXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlm
aWVyJywKQEAgLTI0Myw2ICsyNDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2Fy
ZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAgICAnV2ViS2l0OjpH
ZW9sb2NhdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUn
LAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2Vi
S2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEJywKQEAgLTUzMCw2ICs1MzMsNyBAQCBkZWYgY2xh
c3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAgICAnT3B0aW9uU2V0
JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVh
ZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnVmVjdG9yJzogeydoZWFk
ZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFkZXJzJzogWyc8
dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5o
IiddfSwKKyAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRlcnMnOiBbJyJBcnJh
eVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29k
ZXJzLmgiJ119LAogICAgIH0KIAogICAgIG1hdGNoID0gcmUubWF0Y2goJyg/UDx0ZW1wbGF0ZV9u
YW1lPi4rPyk8KD9QPHBhcmFtZXRlcl9zdHJpbmc+LispPicsIHRlbXBsYXRlX3N0cmluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCA2MTM0M2JkOTQxMDZiNmU3ODlmODNi
YzI1ZGU3OWY3YTYwNDA5M2NjLi5jNzgyMzE2ZjMwNTdhM2NhZjlkM2UyMDc3YzgxMzI1NTNlNjk3
NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogCisjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rl
ci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggN2JhMjA3
YWJiMGFjY2M4YTU3MGY1YzY2M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdkMDNmYWZlMDM5NTg3OTUy
YTYzNzhkMWE5YzhmZjJmNzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4
aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nl
c3MuaApAQCAtODQsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBzZXRB
cHBsaWNhdGlvbklzRGFlbW9uKCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsK
ICAgICB2b2lkIHNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91Z2hwdXRRT1MpOwogI2Vu
ZGlmCkBAIC0xODQsNCArMTgzLDMgQEAgc3RydWN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDljMjZkYjRl
OWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIuLmRhMzczNGM4NGQ2NTRkOGQwM2NhNzky
NWY3YmQ3NTk5MTNiYzM0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMzIyMSw0ICszMjIxLDgyIEBAIE9wdGlvbmFsPFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURh
dGE+Pjo6CiAgICAgcmV0dXJuIHsgV1RGTW92ZSgqcmVzdWx0KSB9OwogfQogCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykK
K3sKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYWxwaGE7CisgICAgZW5jb2RlciA8PCBhdHRy
aWJ1dGVzLmRlcHRoOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5zdGVuY2lsOworICAgIGVu
Y29kZXIgPDwgYXR0cmlidXRlcy5hbnRpYWxpYXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LnByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlc2VydmVE
cmF3aW5nQnVmZmVyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5mYWlsSWZNYWpvclBlcmZv
cm1hbmNlQ2F2ZWF0OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2U7
CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzOworICAgIGVuY29kZXIg
PDwgYXR0cmlidXRlcy5pc1dlYkdMMjsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMubm9FeHRl
bnNpb25zOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvOworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNlOworI2lmIEVOQUJM
RShXRUJYUikKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlOworI2VuZGlm
Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cmlidXRlczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYWxwaGEpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5kZXB0aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLnN0ZW5jaWwpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbnRpYWxpYXMpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YXR0cmlidXRlcy5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0KSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucG93ZXJQ
cmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5pc1dlYkdMMikp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShh
dHRyaWJ1dGVzLm5vRXh0ZW5zaW9ucykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVz
LnhyQ29tcGF0aWJsZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKyAg
ICByZXR1cm4gYXR0cmlidXRlczsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiBhY3RpdmVJbmZvKQor
eworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5uYW1lOworICAgIGVuY29kZXIgPDwgYWN0aXZl
SW5mby50eXBlOworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5zaXplOworfQorCitPcHRpb25h
bDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFj
dGl2ZUluZm87CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLm5hbWUpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZl
SW5mby50eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGFjdGl2ZUluZm8uc2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIGFjdGl2ZUluZm87Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXgg
NGE5MzIxNTkxMzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVkNi4uMWRhZTk2OTVmMzNjMDlk
Y2Q3YzU4MDM2MDhlMmQ2YWMxNmU5ZmM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTcxLDYgKzcxLDEzIEBACiAjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnNHdGsuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dEdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzVHlwZXNHTC5oPgorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNl
bmRSaWdodDsKQEAgLTIwMyw2ICsyMTAsMTAgQEAgc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YTsKIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50PFN0cmluZywgVmVjdG9yPFN0cmluZz4+
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKK3N0
cnVjdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM7CisjZW5kaWYKKwogbmFtZXNwYWNlIERP
TUNhY2hlRW5naW5lIHsKIHN0cnVjdCBDYWNoZUluZm87CiBzdHJ1Y3QgUmVjb3JkOwpAQCAtODcz
LDYgKzg4NCwxOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IHsKIH07CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+
IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMDQxLDQg
KzEwNjUsMTYgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5z
dGFuY2U6OkhEQ1BTdGF0dXM+IHsKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShXRUJHTCkKKwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZSwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVm
YXVsdCwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93
UG93ZXIsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okhp
Z2hQZXJmb3JtYW5jZQorICAgID47Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBjZjEzMWE5MjFlMDg2MzY1ZGJmNzdmYTk4ZTQxYzFjNzRhM2U3ZTI1Li5hZGQ5NDli
YTUwOGQ4ZTgxNDA4N2ZlZGU3YjA0OGEzZGVjNmNmODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTU4LDYgKzE1OCw5
IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJv
Y2VzczsKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzczsKICAgICBl
bmNvZGVyIDw8IHNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzczsKKyNpZiBFTkFCTEUoV0VCR0wp
CisgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzczsKKyNlbmRpZgog
ICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5RGVjb2RlcjsKICAgICBlbmNvZGVyIDw8IHNo
b3VsZEVuYWJsZVZQOVNXRGVjb2RlcjsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBA
IC01MTAsNiArNTEzLDEwIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCmluZGV4IGQ5MWU0NjAzOGYzMDliNTEzMGJmZGU1OGRmZjRhOWYxODE5
NTFkZmQuLmMyMDYxMjMxMTQzNWJmNGY5MmNmMDZmZTVlMTEyMDVhNGI1MTEyYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIy
OSw2ICsyMjksOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9v
bCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hv
dWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFBsYXlN
ZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wg
c2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAgICAgYm9v
bCBzaG91bGRFbmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVuYWJs
ZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCA5YmQ4
YTgxNzU0OWY1OGZlMzgzZDcyNWRhNjYzZjNiYzU0Y2EwZDc0Li43N2U5YjRkNWNjNzUyZmJjZGI2
YjY1ZjlhZGMyNjAxOTU2Y2ExNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1
bWVudENvZGVyc0NGLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNp
bmNsdWRlICJFbmNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3Vw
L1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291
cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCAxZDg0ZTJmZTI2OGYzNDYwZWIy
OTc1YzQyYmE5NWQxNGYxZDIzNWNmLi5mYTI2OGQ1ODRhMGZjOGRmODdhMjFmYTQ1NjA3N2I4YzVk
NDJiODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDZXJ0
aWZpY2F0ZUkKICAgICAvLyBFbmNvZGUgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCBjZXJ0aWZpY2F0
ZS4KICAgICBmb3IgKHNpemVfdCBpID0gY2VydGlmaWNhdGVzRGF0YUxpc3Quc2l6ZSgpOyBpID4g
MDsgLS1pKSB7CiAgICAgICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlID0gY2VydGlmaWNhdGVz
RGF0YUxpc3RbaSAtIDFdLmdldCgpOwotICAgICAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxlTGVu
Z3RoQnl0ZUFycmF5KElQQzo6RGF0YVJlZmVyZW5jZShjZXJ0aWZpY2F0ZS0+ZGF0YSwgY2VydGlm
aWNhdGUtPmxlbikpOworICAgICAgICBlbmNvZGVyIDw8IElQQzo6RGF0YVJlZmVyZW5jZShjZXJ0
aWZpY2F0ZS0+ZGF0YSwgY2VydGlmaWNhdGUtPmxlbik7CiAgICAgfQogCiAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY2VydGlmaWNhdGVJbmZvLnRsc0Vycm9ycygpKTsKQEAg
LTEwMCw3ICsxMDAsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIENlcnRpZmljYXRlSW5mbyYgYwogICAgIEdSZWZQdHI8R1Rs
c0NlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZTsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwg
Y2hhaW5MZW5ndGg7IGkrKykgewogICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2VydGlmaWNh
dGVEYXRhUmVmZXJlbmNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFibGVMZW5n
dGhCeXRlQXJyYXkoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlKSkKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2UpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0YSA9IGdfYnl0ZV9h
cnJheV9zaXplZF9uZXcoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlLnNpemUoKSk7CkBAIC0yNzcs
NCArMjc3LDMgQEAgT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJn
dW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3UKICNlbmRpZgogCiB9Ci0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CmluZGV4IDA5MTdmMDFiZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1YTNmMmVmODYuLjUwY2Rl
MTJhZmEzYWE3Zjc4YzI3OWVjOGZiODE5NzQ0YjZmYjFlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjYs
NiArMjYsNyBAQCBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQ
cm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiBHUFVQcm9jZXNzL2dyYXBo
aWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKQEAgLTEzNyw3ICsx
MzgsNiBAQCBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNw
cCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKLVBsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9EZWNvZGVy
LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRm
b3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwIEBuby11bmlmeQpAQCAtNjkzLDMgKzY5Myw1IEBAIFdl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcAorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5OTUxODA3MzI4MGU5Yzk1YTJiMjVmMDBiYzhi
ZmIzODg3NjIxMjQxLi4xM2ZhNzE1ZTc5NmZjODU5MjMxNGIzZmU3ZjBkNGVhOWFlZDg5ODhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02Myw2ICs2Myw3IEBAIEdQVVByb2Nlc3MvbWVkaWEv
Y29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCiBHUFVQcm9jZXNzL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lm1tCiAKKwogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKIFBs
YXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJD
b2NvYS5jcHAKQEAgLTU3Myw2ICs1NzQsOCBAQCBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVu
dFNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKK1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2Eu
bW0KQEAgLTY4NSw2ICs2ODgsNyBAQCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1lc3NhZ2VSZWNlaXZlci5jcHAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VS
ZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
Y29uTG9hZGluZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25M
b2FkaW5nQ2xpZW50LmgKaW5kZXggMmZlMzg2MjU5NDYzYmZiMzYyM2ViYmRiNGZlZjVmODM5MzZi
MGQzZC4uNzM3YjYyNTgxOTg2NmEwZWNiNTk5YTIxMzBiMzI5MTNlYWYzOTZkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKQEAg
LTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5k
ZXggNGYzOThiNTMwZjYwODU3NWM5NjdiODNjNzRmYTJmNDMyOGY2Y2UzYi4uOGNhOTdlNmU1OTdi
ZDcxMTBhMGQ3MzhlMGM0YTdjODU2MDNhOGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgPSAwOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0g
MV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9
KTsKKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFN0YXJ0UHJvY2Vz
c1Rocm90dGxlckFjdGl2aXR5IDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9
LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vz
c1Rocm90dGxlckFjdGl2aXR5OjpZZXMpOwpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgYm9vbCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRl
bnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNl
dDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5
bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHks
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9z
LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0
aW9ucyk7CiAgICAgfQpAQCAtMTYzLDEyICsxNjQsMTIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNl
dDwKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVT4gCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PElQQzo6U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK0F1eGlsaWFyeVByb2Nlc3NQcm94eTo6U2VuZFN5
bmNSZXN1bHQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlw
ZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0
aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQog
ewogICAgIENPTVBJTEVfQVNTRVJUKFU6OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CiAK
ICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgVHJhY2VTY29wZSBzY29wZShTeW5jTWVzc2FnZVN0YXJ0LCBTeW5j
TWVzc2FnZUVuZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb24uaAppbmRleCA4MjNjMjAyYTg1NmEwMTM2ZGQ5ZWE3NTlmMGVjZGViYTQ3
ZjRmMzYyLi5iNTc3Y2JkZjhlMDc4ZjRmYjRmODczNGQ3YmZkNjA4ZDIwMzg4MDYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJh
bWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCkBA
IC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN1YkZyYW1lU09BdXRob3Jp
emF0aW9uU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBOYXZpZ2F0aW9uU09BdXRob3JpemF0aW9uU2Vz
c2lvbiwgcHVibGljIEZyYW1lTG9hZFN0YXRlOjpPYnNlcnZlciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRleCBm
Zjk4Yjg0ZmE4OWRiZWZkZDY0NjY2YmJiYTQyZmM5MGNlYzM1NzdmLi4xMjhhMzk3N2U2M2VlNGY0
ZWYxZjIwZWFhZWM4NmQwOGVjYmY1OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0zNSwxMCArMzYsNiBAQAogT0JKQ19DTEFTUyBX
S0N1c3RvbVByb3RvY29sTG9hZGVyOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCBjNGM3MTg3NGExMGRhOWI1NDFmZWUyODIwODA4YzFlNTBkM2ZhOTJiLi45ZGIz
YTUwOWI5MTRjMDkzY2FmMTY5YTA1ZDY1YjU3ZWQwYzgwMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNp
bmNsdWRlICJQREZQbHVnaW5JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUuaCIKQEAgLTgwLDEwICs4MSw2IEBAIGNsYXNzIE9wZW5QYW5lbFBhcmFtZXRl
cnM7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNs
YXNzIEN1cnNvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRl
eCAyNGI2MzNlNDg0ZDJhMzViYTc0ZDQ1ZjEyZWRlMzRhMGY3OGNhMGE2Li4yNDhlNTNhMDgzZDE5
YTBlZjRkODNjMjNiOGNjZTAwMzQ1ZGFhYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIkFQ
SVVzZXJTdHlsZVNoZWV0LmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCAxMjlhMzQwZjA4
OTY0ZDBmZmEyM2EzNzEwMWEwOWE4NTZkM2NjY2IyLi5hNGQ4ZDdjZDgwNGU2NTYwZGFiZmRlNjEx
NGZmMDYyMTFiYWQ0N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNv
bnRlbnRXb3JsZFNoYXJlZC5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtNDgsMTAg
KzQ5LDYgQEAgY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogfQogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2ZWQxYzY5YzA4ZmM1NTlmZTJhM2YzYjkzOTUwZWE4
MjhkNjBkNGJmLi5jZWM3M2QxM2QwOThkNzEzMTg0OGFmYjU5M2VmMDcyNDEwMjE4ZTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU4LDcgKzU4LDYgQEAK
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5o
IgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5Lmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
UHJveHkuaCIKQEAgLTc5MjcsNiArNzkyNiwxMCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5j
ZXMoKS51c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFt
ZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQ
cm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUGxh
eU1lZGlhSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFF
bmFibGVkKCk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVy
V2ViR0xJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JXZWJHTEVu
YWJsZWQoKTsKKyNlbmRpZgorCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVy
ID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJMRShWUDkpICYm
IFBMQVRGT1JNKENPQ09BKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVy
ID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpICYmICghV2ViQ29yZTo6c3lzdGVt
SGFzQmF0dGVyeSgpIHx8IHByZWZlcmVuY2VzKCkudnA5U1dEZWNvZGVyRW5hYmxlZE9uQmF0dGVy
eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjQyNDQ2Zjll
OWFhNGI1MjExMTQ5MDNiNmYwYjVmNzExZjkxYjJlNS4uNDM3YWI3NTBiMzVhYjE2M2IyYTU4MGFl
ODY3MmVkNDYwMTY0NzQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29u
dGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51
Q29udGV4dERhdGEuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyQWN0aW9uLmgiCiAjaW5jbHVkZSAi
RWRpdGluZ1JhbmdlLmgiCkBAIC0yMDMsNyArMjA0LDYgQEAgZW51bSBjbGFzcyBJbnNwZWN0b3JU
YXJnZXRUeXBlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogY2xhc3Mg
U2hhcmVkQnVmZmVyQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXIuaAppbmRleCBmNDI0NWNlNjVlOWQyZDU2NWIzZjEyNWYzNDU3YTI1NmZiMzljOWQ0
Li5kMjM4YzJhMWE2MDhkYzVhNDYzMmU2YTE5OTc3ZGI2MWJhYjYxMzMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCkBAIC0zMSwxMCArMzEsNiBA
QAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBkNDQyYjYyYjUyMjU4N2Y5MGZhNjg5ZDU2YjIw
NjI3NmRlYjQ0ODJiLi44MjVjZDAyNjg4YTI2ODIxOTQxZmY3YTQxOGY0ZGY1YTk3NWJhMTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zOCwxMCAr
MzgsNiBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKIH0KIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM1MjhmNDcxZjQ2
M2RmNmMxMTMwYTNmYjgzNzc2YmYxYjJhYmVmOTQuLjBiNzY5ZjAzNTRlYjRmMDMyZDIyMDllYzc5
YjhmZTIxOWVmZDg4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNjk4LDcgKzY5OCw2IEBACiAJCTJEOTJBNzdCMjEyQjZBNzEwMEY0
OTNGRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2Rl
cnMuY3BwICovOyB9OwogCQkyRDkyQTc3QzIxMkI2QTcxMDBGNDkzRkQgLyogQXR0YWNobWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFOTY2
QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi87IH07CiAJCTJEOTJBNzdEMjEy
QjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyREEyMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0
aW9uLmNwcCAqLzsgfTsKLQkJMkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVu
Y2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFD
NzUzN0QxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovOyB9OwogCQkyRDky
QTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVj
b2Rlci5jcHAgKi87IH07CiAJCTJEOTJBNzgwMjEyQjZBNzEwMEY0OTNGRCAvKiBFbmNvZGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlG
MTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODEyMTJCNkE3
MTAwRjQ5M0ZEIC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNFRUQwQzE2MUE1MzUzMDBBRUI0RjUgLyogTWVz
c2FnZVJlY2VpdmVyTWFwLmNwcCAqLzsgfTsKQEAgLTEzMDMsNiArMTMwMiw3IEBACiAJCTdBRkJE
MzYzMjFFNTBGMzkwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzYyMjFF
NTBGMzkwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLzsgfTsK
IAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lV
dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FG
QkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLzsgfTsKKwkJN0Ix
REIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMg
LyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0Iw
QkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdL
UGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0Mx
QTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTI3MTksNyArMjcx
OSw2IEBACiAJCTFBQzVGRkMxMTc0QkZEMUIwMDAxNDgzRCAvKiBQbHVnaW5Qcm9jZXNzQXR0cmli
dXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5Qcm9jZXNzQXR0
cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3OTE4M0E5RkRB
MDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQYWdlTG9hZFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUxvYWRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1
IC8qIERhdGFSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0
YVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NUExQTFCMzM2
ODI3MDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQUM3NUExQzFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRp
c2FibGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSGFu
Z0RldGVjdGlvbkRpc2FibGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDM2OSw2ICs0MzY4LDE2IEBACiAJCTdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHBhdGggPSBDbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGls
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZl
cmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFG
IC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5
MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQx
NjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2
OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAv
KiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1Bs
dWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjY1MywxMSArNjY2MiwxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1
bWVudENvZGVyLmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50
Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRD
b2RlcnMuaCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVu
Y2UuaCAqLywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAg
Ki8sCiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJ
CQlCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMw
MzJEQTMxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4
M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNC
RTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0Qx
MDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVB
IC8qIERlY29kZXIuaCAqLywKQEAgLTgzMjcsMTEgKzgzMzYsMTYgQEAKIAkJCQk3MjdBN0YzMzI0
MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0Uz
IC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdF
MDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1
NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJ
NzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICov
LAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYw
MDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJ
CQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmggKi8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkz
MSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAw
QUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQw
OUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApA
QCAtODM0OSw2ICs4MzYzLDEwIEBACiAJCQkJRjQwOTRDQkMyNTUzMDRBRjAwM0Q3M0UzIC8qIERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCQjI1NTMwNEFGMDAzRDcz
RTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCAqLywKIAkJCQk1NUFEMDk0MzI0MDhBMEU2
MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAorCQkJCTdCOTA0MTY5
MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8sCisJCQkJ
N0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8s
CisJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluICovLAorCQkJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oICovLAogCQkJCTU1QUQwOTQyMjQw
OEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEEyMjQw
NzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLywKIAkJCQk1NTA2
NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICovLApAQCAt
MTExNjUsNiArMTExODMsNyBAQAogCQkJCTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1
bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUy
IC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMx
NzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFBRkE2MzRGMjM0RjdDNjQwMEZGQTg2NCAvKiBBc3luY1JldmFsaWRhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFj
aG1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTMyMzMsNyArMTMyNTIsNiBAQAogCQkJCTJEOTJB
Nzg1MjEyQjZBQjEwMEY0OTNGRCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4
dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYg
LyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVy
ZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyog
RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OURBQTM4QzI0Q0JBMUE4MDA3OTNENzUg
LyogRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBDNTZG
RTIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2OThh
MjEyOTBkMzYxZDRhNi4uYzlkYzY4MmI4NzU0OWI4MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2VjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIElQ
QyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBQYXltZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAy
YzBkZjViOWY1NDk2ODQ3ZWQ2NjkxMGJmMmYzOWIyY2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0YWQ3
ZjFiNDQwN2FlNzIwNGM4NGE5OTg4NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zNSwxMCArMzUsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUw
YzliN2NmNWIyZTc5YjA3N2QwMzUyMTJjNjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2
YjA5ZDY4ZDAyN2JiNTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCww
ICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
UmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5KGF0dHJpYnV0ZXMpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmIGF0dHJzKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0
cnMpCit7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVz
c2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhp
cyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwg
MCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KCkKK3sKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJl
Y2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpLCAwKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3
YXBDaGFpbigpLnJlY3ljbGVCdWZmZXIoKTsKKyNlbmRpZgorfQorCitJUEM6OkNvbm5lY3Rpb24q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpCit7CisgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJl
bnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9y
RGlzcGxheSgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRSaWdodCBkaXNw
bGF5QnVmZmVyU2VuZFJpZ2h0OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdo
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIGRpc3Bs
YXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5
QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgaWYgKGRpc3BsYXlC
dWZmZXIpIHsKKyAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOworICAgICAg
ICBzYy5yZWN5Y2xlQnVmZmVyKCk7CisgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3Bs
YXlCdWZmZXIpLCBudWxscHRyIH0pOworICAgIH0KKyNlbHNlCisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisjZW5kaWYKKyAgICBtYXJrTGF5
ZXJDb21wb3NpdGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChleHRlbnNpb24pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5
TWFya0NvbnRleHRDaGFuZ2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFu
Z2VkKCkKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNl
IGl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgdGhlIHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM0OQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1Jl
ZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVk
RXh0ZW5zaW9ucykKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAgIC8vIElu
aXRpYWxpemF0aW9uIHRpbWVkIG91dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93Lgor
ICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6
ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZElu
aXRpYWxpemUgPSB0cnVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Ondhc0xvc3QoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xp
ZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0
byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlz
cGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9k
aWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
Y29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MsIElQQzo6V2Fp
dEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91dCwgc28gcmVwb3J0IGluaXRpYWxpemVkIHdpdGgg
ZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2UgdGhlIGNvbnRleHQuCisgICAgd2FzQ3JlYXRlZCgi
IiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRleHQgYXMgbG9zdCwg
YnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwgc3RhY2suCit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkNjljYWY5ZGMwM2M1MjRiMTAwYTliNmI3NmNm
MGFkNzk5YTBkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNDEy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViIHBy
b2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBpbnRlcmZhY2Uu
IFRoZSBpbXBsZW1lbnRhdGlvbgorLy8gY29udmVydHMgdGhlIGludGVyZmFjZSB0byBhIHNlcXVl
bmNlIG9mIElQQyBtZXNzYWdlcyBhbmQgc2VuZHMgdGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vzcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKKyAgICA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5PgorICAgICwgcHVibGljIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpIGZpbmFsOworCisgICAg
Ly8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsK
KyAgICB1c2luZyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNF
bmFibGVkOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikgZmluYWw7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5h
bDsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEoKSBmaW5hbDsKKworICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGlt
cGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNj
cmlwdC4KKyAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2
b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlVGV4
dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5hbDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBi
aW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZp
bmFsOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3Jt
R0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdD
R0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFt
cGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBm
aW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBH
Q0dMZW51bSBtb2RlQWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNm
YWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJh
dGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBH
Q0dMZW51bSBkc3RBbHBoYSkgZmluYWw7CisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxk
IG1hc2spIGZpbmFsOworICAgIHZvaWQgY2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNs
YW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkgZmluYWw7CisgICAgdm9pZCBjbGVh
clN0ZW5jaWwoR0NHTGludCBzKSBmaW5hbDsKKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVh
biByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBh
bHBoYSkgZmluYWw7CisgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7
CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dy
YW0oKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZp
bmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApIGZp
bmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsOworICAgIHZv
aWQgY3VsbEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVCdWZmZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMp
IGZpbmFsOworICAgIHZvaWQgZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOworICAg
IHZvaWQgZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFs
OworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1H
TE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBmaW5h
bDsKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmlu
YWw7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCBlbmFibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlz
aCgpIGZpbmFsOworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVu
dW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsOworICAg
IHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGlu
dCBsZXZlbCkgZmluYWw7CisgICAgdm9pZCBmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7
CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIGJv
b2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5k
ZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcy
KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBh
cmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3Ry
aW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9p
ZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZp
bmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRl
eCkgZmluYWw7CisgICAgR0NHTGludCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVt
IGdldEVycm9yKCkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNo
YWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAg
U3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dM
ZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCog
cHJlY2lzaW9uKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQg
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dM
aW50PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBm
aW5hbDsKKyAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRl
eEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAg
IHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIEdD
R0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NH
TGJvb2xlYW4gaXNFbmFibGVkKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4g
aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29s
ZWFuIGlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29s
ZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NH
TGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dM
Ym9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lk
IGxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgcG9seWdvbk9mZnNldChH
Q0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxl
Q292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAg
ICB2b2lkIHNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdD
R0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lk
IHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGlu
dCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVp
bnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZh
Y2UsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZh
aWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCBzdGVu
Y2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFp
bCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZv
aWQgdGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwg
R0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9p
ZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2YWxp
ZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwg
MT4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4
LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmli
MmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVz
KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9y
bWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1
ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwg
R0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lk
IHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29y
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhB
cnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVy
dGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0
ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weUJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xp
bnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBm
aW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgYmxp
dEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZp
bmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSBm
aW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBy
ZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2
ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5h
bDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIEdDR0xpbnQg
Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0x1aW50IHYwKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBH
Q0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0
YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQg
eiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5
LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0
dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBm
aW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dM
aW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdD
R0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2
b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdD
R0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdM
T2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xP
YmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVu
dW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2Jq
ZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpIGZpbmFsOworICAgIHZvaWQgZGVsZXRl
U2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIEdDR0xib29sZWFu
IGlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgYmlu
ZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsK
KyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFt
ZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0
IHBhcmFtKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKKyAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBH
Q0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3lu
YyBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7
CisgICAgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxk
IGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMoR0NH
THN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7
CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmlu
YWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkg
ZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2Jq
ZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGVuZFRy
YW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlp
bmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2so
KSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAg
dm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0
Zm9ybUdMT2JqZWN0IGJ1ZmZlcikgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdD
R0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMdWlu
dD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0
QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NH
THVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1
aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5p
Zm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrQmluZGluZykgZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CisgICAgR0NHTGludCBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJB
TkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlVmVydGV4QXJyYXlPRVMoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhB
cnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgU3RyaW5nIGdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgcmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93
cywgR0NHTHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFsZm9y
bWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJp
NjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBm
aW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0
KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFuaV92
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5P
TElOVAorICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHZhbCkgZmluYWw7CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xm
bG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmlu
YWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMdWludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2
NCogcGFyYW1zKSBmaW5hbDsKKyAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdw
dXAtd2ViZ2wgc2NyaXB0LgorCitwcm90ZWN0ZWQ6CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQo
KSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAg
ICB2b2lkIHdhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYg
cmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3YXND
aGFuZ2VkKCk7CisKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGJvb2wgbV9kaWRJbml0aWFs
aXplIHsgZmFsc2UgfTsKKyAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVy
YXRlKCkgfTsKK307CisKKy8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0
IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlw
dC4KK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7Citz
dGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZV92PEdDR0x1Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWVfdjxHQ0dMc2hvcnQsIGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTHVzaG9ydCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTGludCwgaW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dM
c2l6ZWksIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQs
IHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxv
YXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2
X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsK
K3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8UGxhdGZvcm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRp
Y19hc3NlcnQoc2l6ZW9mKEdDR0xjaGFyKSA9PSBzaXplb2YodWludDhfdCkpOworc3RhdGljX2Fz
c2VydChzaXplb2YoR0NHTGludDY0KSA9PSBzaXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2Vy
dChzaXplb2YoR0NHTHVpbnQ2NCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisvLyBHQ0dMc3luYyBh
bmQgR0NHTCpwdHIgdHlwZXMgYXJlIHBvaW50ZXJzLiBPbiBzb21lIHBsYXRmb3JtcywgdGhleSBh
cmUgMzItYml0LgorLy8gQ3VycmVudGx5IHdlIGhhcmQtY29kZSBpdCBieSB1c2luZyA8PSwgYW5k
IGFzc3VtZSB0aGF0IHdlIGRvIG5vdCB0cmFuc2ZlciBhcnJheXMgb2YgdGhlIHR5cGVzLgorc3Rh
dGljX2Fzc2VydChzaXplb2YoR0NHTGludHB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0
aWNfYXNzZXJ0KHNpemVvZihHQ0dMc2l6ZWlwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3Rh
dGljX2Fzc2VydChzaXplb2YoR0NHTHZvaWRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3Rh
dGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMpIDw9IHNpemVvZih1aW50NjRfdCkgJiYgc2l6ZW9m
KEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRyX3QpKTsKKy8vIEVuZCBvZiBsaXN0IHVzZWQgYnkg
Z2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNz
YWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJiMmJjMTAxMGVmOGVjZDBhZjU3NzdhYmQ0ZmEwOGEz
YzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZChT
dHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykK
KyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2FzQ2hhbmdlZCgpOworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNGE0NDMxNTYyMTFjYzcxODUxMzcz
MzhjYWNjN2NlNTAzNTc5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNH
ZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBp
cyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2V0RmFpbE5l
eHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5
bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvciksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVyZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
aW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJn
MSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1
ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJn
ZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NH
TGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24oR0NHTGVu
dW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0
ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2Rl
UkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0
b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dM
ZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdC
LCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0Zmll
bGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBH
Q0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQ29sb3IocmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xh
bXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50
IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFy
U3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdD
R0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0
YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nh
c3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVBy
b2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFt
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2Jq
ZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUoKQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZShHQ0dMZW51
bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
dWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNo
YWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1
bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRo
RnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2so
c3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZShHQ0dM
Y2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVj
dCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlKEdDR0xlbnVt
IGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlz
YWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1
aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Fy
cmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMobW9k
ZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBt
b2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVu
dHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2goKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZm
ZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBh
dHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyb250
RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1h
cChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3Rp
dmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZl
SW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dy
YW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVB
dHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworYm9vbCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVl
LCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwg
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRp
b246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRl
cmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpCit7
CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZsb2F0dihHQ0dMZW51
bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1
ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6
OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJl
cGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUu
YnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6
OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJl
cGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisK
K0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQoR0NH
TGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NChwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xp
bnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50
ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVy
blZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
cm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQoreworICAg
IGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29s
ZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQoreworICAg
IElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xl
YW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZh
bHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGJvb2wp
KTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJn
MCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmko
UGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitT
dHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5m
b0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJ
bmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdl
LCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9y
bWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkgeworICAgICAgICBtZW1j
cHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2Yo
aW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lzaW9uKQorICAgICAgICAgICAgKnByZWNpc2lv
biA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGZs
b2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAg
IGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRh
dGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7Cisg
ICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJl
cGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZT
aXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJl
cGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5
LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1
ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZVJlcGx5OworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFs
dWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAo
c2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgp
LCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQoreworICAg
IHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1
ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVm
ZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwor
R0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKEdDR0xl
bnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlua1By
b2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBp
eGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0p
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxv
YXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZm
ZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKEdD
R0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19j
YXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3NvcihHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBo
ZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
dGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMo
ZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NH
TGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5j
U2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxN
YXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tT
ZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1h
c2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpm
YWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51
bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFz
cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24s
IHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShs
b2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0y
ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4
LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQg
eCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
TGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJf
dCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xm
bG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00
aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
di5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJv
Z3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKEdD
R0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAx
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAy
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5k
YXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKEdD
R0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dM
ZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZh
bHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGlu
dCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkg
c3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwg
c3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdo
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
cHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFy
Z2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0
YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkp
OworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxz
MSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRl
eFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1h
Z2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
cmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291
bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVy
dGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0
ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRl
VmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
R0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJy
YXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJh
eTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdD
R0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRy
IGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
cHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0
YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5Owor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRh
dGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3Qp
KTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJh
bWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NH
TGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwg
R0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVy
KHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwg
bWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0
dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQs
IGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZh
bGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5k
YXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0
dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0
YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3Jh
Z2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDAodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhl
bHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21w
cmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNz
ZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
aW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VT
aXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29t
cHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0Qx
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQg
djEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9j
YXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2
MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2KGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+
KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBz
dGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6
LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2
YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6
LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFs
dWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFu
Z2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50
cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xl
YXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+
KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVm
ZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRh
KSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBz
dGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
bGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQoreworICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1
ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9v
bGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkoR0NH
TGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVl
cnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1
aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcigp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVy
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBs
ZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJh
bWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQg
ZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBm
bGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5
bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzAp
KSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZp
ZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0
IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90
PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAg
ICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRm
b3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNr
KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJh
bnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWlu
Z3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWlu
Z3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8m
IGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVw
bHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGF1c2VUcmFu
c2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2so
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVU
cmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNl
KHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2Uo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5k
ZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVp
bnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworVmVj
dG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5k
aWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlm
b3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1J
bmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2
ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50
PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIFZlY3RvcjxpbnQzMl90
PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9y
bXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpCit7CisgICAgdWludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRl
eDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQoreworICAgIFN0cmluZyByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5k
ZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1C
bG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1C
bG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHBy
b2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBs
eShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBs
eS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNy
Y1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKK3sKKyAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJp
bmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVu
dE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25z
dCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3Vw
TWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVm
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVy
bmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9i
amVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
b29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgLy8g
Tk9MSU5UCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5h
bWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xmbG9hdCogdmFsKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFO
R0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVp
bnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5
T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBhZWY4M2UyNTg4ODlhNWJlODI2N2E2OGIx
YzY5ZmVjNWEzNGUwMzg2Li42YTRhZGY1ZDZkMzRhN2M2OTFiZmYwMGVlY2UwMWZjN2FhODk0MDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC04MTgsNyArODE4LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQs
IEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCitib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xp
bnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5jcHAKaW5kZXggOTVjODM2ZTY5NTA0MWQ5N2QyNTkwMzZmZDczZGZmNWM0NmI4ZmY5
MS4uYzhjNTgyOTA1MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5N2E1NmIzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAKICAgICBhdXRvJiBj
b25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7Ci0gICAgYm9vbCBkaWRT
dWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCisgICAgYXV0byBkaWRT
dWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCiAgICAgICAgIE1lc3Nh
Z2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlv
bihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1
dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkpLAogICAgICAg
ICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVz
dGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsKIApAQCAtMTAwLDcgKzEwMCw3IEBA
IHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkK
ICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwogICAgIGdldEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwogICAgIG1fcmluZ0J1ZmZl
ci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJhbWVzKTsKLSAgICBtX2F1ZGlv
QnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQp
OworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRpb0J1
ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
U291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAppbmRleCBiOGY0NWE2ZDViYjRkYjQ2MDk4ODAxMjQz
YmI1ZTkzMTdiMWUzZTJiLi42NWI4ZmQwZDc3MzQ3ZTkzOGI1NjQ1ODIyNmI3OGRhNDNjOTc4OTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcApAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291
cmNlUHJvdmlkZXJNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaAppbmRleCBlNTllMWIwNmI0NDdlNWQ4MGNhNjEw
NTJjNmM3YTMyYzRiYTE0MmU2Li44MTk0MDkwYzkzM2IyZjExYTY0NjBhYjNjMTc3MmQzNzYxNjM3
MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCkBAIC0yNyw2
ICsyNyw5IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVBsYXllcklkZW50aWZpZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3Bw
CmluZGV4IDBkYjg1YWU5YmQyNDFlYmExYmRhNGU2MjI0NDBmNjMyOGUxZDhhMGIuLjI5N2VlYmRh
MTkxODlkZmUwY2ZlNmMxZWQ3NjlhYWNiOWQ2ZDkxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyQ29weS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCBiOWEwMWIwNjI1ZTNi
N2M3ZjAxMTg0YTgzYzM2ZTU0OTEyMmYwOWE4Li4xNTE3MmM5ZjYyMTBiZjRmOTVlMGM2YWE3OTM2
YzYyMmVhOGQ5M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApAQCAtNDQsNyArNDQs
NiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVt
b3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuaAppbmRleCBiN2NlZGI3ZTgzOTRmOTliYTljZmIwYTJhYzJhOTc4MTFiM2M0MThm
Li43NzAyZDFiNzAyZDEyMTYyZTE5YWI5YTZkYWE0YzU5NzUxODYyZjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuaApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
Lmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSW5iYW5kR2VuZXJpY0N1ZTsKIGNsYXNzIElTT1dlYlZUVEN1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCmluZGV4IDBjNmY3M2QwNzE0NGI1NjI2NzY5MzY3YzlmMmEzYTQwMTdl
YWRlODAuLjE2OGVmNDM1ZGRlNTYxNGQzMGYzYmUyODY3MGE0N2FlZDYxNmRlMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxpYldl
YlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNz
YWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuaAppbmRleCA3MzlhNDk2ZWY0OTRjYjRhNjE4NTY2ZmZjNjRkNGEyNjRh
NzRlOWQwLi40YmVhZTA2MjMxN2JhMjZhNjA2ODNmMWY0NTEyMzNlYjEwNzNhYTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2Rlcklk
ZW50aWZpZXIuaCIKQEAgLTQzLDcgKzQ0LDYgQEAgdXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYg
PSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IDJkYWQyMDM4NDJmMGU1NTNmZTNiNDYyNDQxZWU5NGZhMjY0OTNh
MTEuLmMyOGNlN2YyZTE3ZTg5YThlNTE4NmE3NzA2YTJlOGE0NGY2YjdlMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZUJ1
bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRUeXBl
cy5oPgpAQCAtNTQsNyArNTUsNiBAQCBjbGFzcyBEYXRhOwogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBEZWNvZGVyOwogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDQgKzE2MSwzIEBAIHByaXZhdGU6CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAzMDY0ZTlj
NGFmY2MyY2ZmNTRhMzI1ZTI1MzFlZDA1MjJhMDAxMzkzLi5iOTc5NDY1OWVhYmQxODRiMzg5YzA2
ZDEzMmY4YzQyZjgwNTIzY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMzQsMTAgKzM0
LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODY1NzExYjM2NmMyOGRmNDg0YjRjZGMwN2FhM2Zj
ZjNkY2ViZjJmNi4uNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4MjBhMjc4YWYxZGM2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODNlMzc5Yzg5
ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZiLi43ZTFkNDk5NDcxNWY4ODQ5Y2U4YmZlNWVj
MzQ1NWQ0NzM3NzgwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2Uu
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC0zNiw3ICszNyw2IEBA
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5
NGVmMGQxZmNlMmU2MDFkZjQ0OWNmZjg1MzlmYmQxNjQ3OTNlYmUyLi5mZjY5ZjU2MDllNTc3Y2Fj
Nzc3ZjA0YWZhNzRhZjIxMDc0ODY0Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKIAotI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGY1
MzQ3ODM0N2U3NzVkZjM3ZWE5NzYzNGMyMzMwOTMyYjRhMTRkMjguLmFkN2ZmMTg3ZGJiNDM1M2I5
ZWQzYmM1N2M1YmEyYzRhYTRlOGNmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya1NlbmRRdWV1ZS5oPgpAQCAtMzgsNyArMzksNiBAQAogbmFtZXNwYWNlIElQQyB7
CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5kZXggYWYyNDJjZDJiNTk1YWM0YTQ0
ODQyOTdiZTVkNWNmZTE4ZDQ4ZjMyNC4uN2QwMDczNjliOWNjZTg1YjhmMDU0NTdkNjY2ZDFlNDQ1
MWI5NmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtT
b2NrZXRTdHJlYW1NZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCBkZDA4MjAxMDcxMmI5ZjVkYjlmZWJkODhk
YTY2OWI2ZGY2MWQwZjI5Li5iNDNjYjJlZmFkMWUxMDFlZTI2NWI5M2RkZTliMDYxMjczNmEwOTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGUuaD4K
QEAgLTMzLDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNs
YXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDU29ja2V0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDU29ja2V0LmgKaW5kZXggY2I0OGUwNTczNDhhMmU4NjZiMDkxZmY1YWM4NzI2
MDVjYTE5MmRkNS4uMzIzZjI1ZWU4ZmQ4MWIwMjYzMGQyZjI1OWExYWZiODg0YjRjZjVlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENTb2NrZXQuaApAQCAtMzUsNyArMzUsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CmluZGV4IGVhNTM1OTYwMTA5ZmVlNmRjNDgwNWNmNjg5MTI3OThlZTlhYjZmMDMuLjQwYjRjOGYy
MTI5Y2YxMjMzYTFiMzFiODUxMjdlN2E3ZTllM2Q3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTYwLDEwICs2MCw2IEBAIE9C
SkNfQ0xBU1MgUERGU2VsZWN0aW9uOwogT0JKQ19DTEFTUyBXS1BERlBsdWdpbkFjY2Vzc2liaWxp
dHlPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGU7CiAKLW5h
bWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEuLjVi
MjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRlOWQ1NDkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYsMjIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgp
LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorCitSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0
Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdAoreworICAgIGlmICghV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5kb3dE
aXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7CisjZWxzZQorICAgIHJldHVybiBu
dWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJh
bWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYzE0ZmRi
MTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4Li4xMjE1ZjkyYTAzMTk1ODBhMGRkZDky
MTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDEx
IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgorI2VuZGlmCisK
IAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJz
KCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMsNiArNDA3LDcgQEAgcHJpdmF0ZToKIAogICAg
IG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBm
YWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Ny
b2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjY0MjE0NzdhNTZj
ZWUxYjQ1OWFiMWI3MGQ4ZGNhZDlkM2RhZmMzNC4uZDQ2MzNkZGI2Y2M2NDk4MDNiOTI0NTc1NjI1
YmZhNTI4YzE3ZDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTQyMiw2ICs0MjIsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAg
LCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9j
ZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgfQogICAgICwgbV9z
aG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUlu
R1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAgICwgbV9zaG91bGRSZW5kZXJXZWJH
TEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3N9
CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX25lZWRzSW5B
cHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2
YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzI1LDcgKzcyOCw2IEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciogbWFuYWdlciA9IHdlYlBy
b2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyPigpKQogICAgICAgICBt
X3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShtYW5hZ2VyLT5t
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYKLSAgICAKICAgICBpZiAocGFyYW1l
dGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAgICAgICAgc2NhbGVWaWV3KHBhcmFtZXRlcnMu
dmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5Myw2ICszNzk1LDkgQEAgdm9pZCBXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5n
KG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyRE9N
SW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9j
ZXNzRm9yTWVkaWEobV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpOworI2lmIEVOQUJMRShX
RUJHTCkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yV2Vi
R0wobV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzcyk7CisjZW5kaWYKICNlbmRpZgogCiAj
aWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKQEAgLTY5OTAsNiArNjk5NSw3IEBAIHZvaWQgV2Vi
UGFnZTo6c3luY2hyb25pemVDT1JTRGlzYWJsaW5nUGF0dGVybnNXaXRoTmV0d29ya1Byb2Nlc3Mo
KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6U2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1faWRlbnRpZmllciwgbV9jb3JzRGlz
YWJsaW5nUGF0dGVybnMpLCAwKTsKIH0KIAorCiAjaWYgRU5BQkxFKE1FRElBX1VTQUdFKQogdm9p
ZCBXZWJQYWdlOjphZGRNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24oTWVkaWFTZXNzaW9uSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcGFnZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCBlN2Y4YzBhM2I2MDRlN2FhMTU3Yzc0MDIzMWU1NTU3NDlkNGVmN2M3Li4yMTEwYTMy
ZjY3MGYwMGZhMjQ0ZmU2ZjlkNzk1YTZkZGY2MGQxNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0
cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2lu
Y2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMTYwLDcgKzE2MSw2IEBAIGNsYXNzIEFycmF5Owog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpAQCAtMTI1Nyw3
ICsxMjU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLSAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luY1dpdGhEZWxh
eWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewog
ICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRPblN5bmNocm9ub3VzUmVwbGllcygpOwogICAg
ICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIFNl
Y29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJv
Y2Vzc1dpbGxTdXNwZW5kKTsKQEAgLTE4MjYsNiArMTgyNiw5IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3Vs
ZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAg
IGJvb2wgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYK
ICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93
c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYKQEAgLTIxODMsNCArMjE4NiwzIEBA
IGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShj
b25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KaW5kZXggZTU3NWZjYTAxOWY2YjEyYThmNGRhZTVjYjFkNjgyZGE0ZTQzNmViOS4uODRl
Mjg0MTFjZmRkZDkxZjlhNWQ0N2MyMWQ3MWU5ZGI2ZDdjNjM0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTUxNyw3ICs1
MTcsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQmIGV2ZW50KQogCiAgICAgLy8gRklYTUU6IEludGVycHJldCB0aGUgZXZlbnQgaW1tZWRp
YXRlbHkgdXBvbiByZWNlaXZpbmcgaXQgaW4gVUkgcHJvY2Vzcywgd2l0aG91dCBzZW5kaW5nIHRv
IFdlYlByb2Nlc3MgZmlyc3QuCiAgICAgYm9vbCBldmVudFdhc0hhbmRsZWQgPSBmYWxzZTsKLSAg
ICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRL
ZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpLCBwbGF0Zm9ybUV2
ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChl
ZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBl
KCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKICAgICAgICAgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQ6OlJlcGx5KGV2ZW50V2FzSGFuZGxlZCksIG1f
aWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGYyZjIyODIyYzdi
MjIzZmNhNTlmOTU1NzNkMTFkYzk5YjEwMzQ4MTEuLjU4MmVlNzVkOTlhNzQyNDI1NGEzOWRhYjIw
NmY4NDYxNzM0YWQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTE5NDIsNiArMTk0MiwyMCBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJl
bmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UpCiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KKworI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0VXNlR1BV
UHJvY2Vzc0ZvcldlYkdMKGJvb2wgdXNlR1BVUHJvY2Vzc0ZvcldlYkdMKQoreworICAgIG1fdXNl
R1BVUHJvY2Vzc0ZvcldlYkdMID0gdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQorCitib29sIFdl
YlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKKyNlbmRpZgorCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCBlOWM0N2RiNGM0NDdjMGY0YWI2MjdjMDk0YjVmNjhkYjU2NWE5YTZjLi4xYTU4NWFjMTQyYjE4
MzI3NjRjNGQ4NTM3OTA5MGIyY2JjYTczYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTM0Nyw2ICszNDcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlR1BV
UHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhib29sKTsKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NG
b3JNZWRpYShib29sKTsKICAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJD
b3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBzZXRV
c2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCk7CisgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3JXZWJHTCgpIGNvbnN0OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkp
CkBAIC02ODcsNiArNjkxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zv
ckNhbnZhc1JlbmRlcmluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JE
T01SZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yTWVkaWEg
eyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zv
cldlYkdMIHsgZmFsc2UgfTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAyMjI3Yjdi
NWU0NmMyNDQ0ZDg5ZGI3NDVlNzYyYTkwYzQ4NTNkOTIuLmZlMzliMDNkOWE1YTQ4YWY0MTc0YmNl
NjlhY2ZiN2E3NzZmY2JlNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0xMi0wMSAgS2ltbW8gS2lubnVuZW4g
IDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgcmVtb3Rl
IHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVSBwcm9jZXNzLgorICAgICAgICBD
dXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMgYW5kIGlzIGluY29tcGxl
dGUuCisKKyAgICAgICAgQWRkIHRoZSBjb2RlIGdlbmVyYXRvciB0byBnZW5lcmF0ZSB0aGUgaW1w
bGVtZW50YXRpb24uIEN1cnJlbnRseQorICAgICAgICB0aGUgZ2VuZXJhdG9yIGdlbmVyYXRlcyBh
IFdlYktpdCBJUEMgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgVGhlIGlucHV0IGRlZmluaXRp
b24gdG8gdGhlIGdlbmVyYXRvciBpcyB0aGUgcHJveHkgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
aGVhZGVyIGZpbGVzLgorICAgICAgICBUaGUgb3V0cHV0IG9mIHRoZSBnZW5lcmF0b3IgaXMKKyAg
ICAgICAgICAgLSBXZWJLaXQgSVBDIG1lc3NhZ2UgZGVmaW5pdGlvbiBmaWxlCisgICAgICAgICAg
IC0gTWVzc2FnZSBzZW5kZXIgY29kZQorICAgICAgICAgICAtIE1lc3NhZ2UgcmVjZWl2ZXIgYW5k
IHBheWxvYWQgaW52b2NhdGlvbiBjb2RlCisKKyAgICAgICAgVGhlIGdlbmVyYXRvciBjb252ZXJ0
cyBHcmFwaGljc0NvbnRleHRHTCBHQ0dMIC1wcmVmaXhlZCB0eXBlcyB0bworICAgICAgICBzaXpl
ZCBJUEMgdHlwZXMuCisKKyAgICAgICAgVGhlIGdlbmVyYXRvciBpcyBpbnZva2VkIGR1cmluZyBk
ZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgc3RvcmVkIGluIHRo
ZSByZXBvc2l0b3J5LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOiBB
ZGRlZC4KKwogMjAyMC0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRhYmxlL3dyaXRhYmxlIHRvIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmds
IGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNmI0MjIy
OWNmMmY4MjhjNjZjN2U3YjQxNzczYzJlYmU0NDMxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAsMCArMSwxMDQ0IEBACisjIS91c3Iv
YmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIHNvdXJjZSBmaWxlcyBmb3IgV2Vi
R0wgR1BVIHByb2Nlc3MgSVBDLgorIworIyBweXRob24zIC1tIGJsYWNrIC1sIDE1MCBUb29scy9T
Y3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMgcHl0aG9uMyAtbSBteXB5IFRvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZW51bQor
aW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25z
CisKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJdGVyYWJsZSwgQ2FsbGFibGUsIFR1
cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJhdG9yLCBDb3VudGVyCisKK3Jvb3Rf
ZGlyID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50IC8gIi4uIiAvICIuLiIpLnJlc29s
dmUoKQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViQ29y
ZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRlbnNpb25zR0wuaCIKKworZnVuY3Rp
b25zX2lucHV0X2ZucyA9IFsKKyAgICByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAi
V2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oIgorXQordHlwZXNfaW5wdXRfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldl
YktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oIgorCisKK3RlbXBsYXRlX3ByZWFtYmxlID0gIiIiLyogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90
IGVkaXQuCisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAv
ICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUg
PSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIi8vIFRoaXMgZmlsZSBzaG91bGQg
YmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQore30KKworIiIiCisp
Citjb250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8g
IkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNz
YWdlcy5pbiIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJl
YW1ibGUKKyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7ewor
ICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmln
aHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNlbmRpZgorI2lmICFQTEFURk9STShDT0NP
QSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMKKyNlbmRp
ZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQorICAg
IHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3t9Cit9fQorCisjZW5kaWYKKworIiIi
CispCisKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAv
ICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIgorY29udGV4dF9wcm94
eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIi
IgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCitu
YW1lc3BhY2UgV2ViS2l0IHt7Cit7fQorCit9fQorCisjZW5kaWYKKworIiIiCispCisKKworZGVm
IHdyaXRlX2ZpbGUoZm4sIG5ld19jb250ZW50cyk6CisgICAgdHJ5OgorICAgICAgICB3aXRoIG9w
ZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBpZiBmLnJlYWQoKSA9PSBuZXdfY29udGVudHM6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuCisgICAgZXhjZXB0OgorICAgICAgICBwYXNzCisgICAgd2l0
aCBvcGVuKGZuLCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUobmV3X2NvbnRlbnRzKQorCitj
bGFzcyBjcHBfdHlwZShvYmplY3QpOgorICAgIHR5cGVfbmFtZTogc3RyCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyKToKKyAgICAgICAgc2VsZi50eXBlX25hbWUgPSB0
eXBlX25hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50
eXBlX25hbWUKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2go
c2VsZi50eXBlX25hbWUpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAg
IHJldHVybiBzZWxmLnR5cGVfbmFtZSA9PSBvdGhlci50eXBlX25hbWUKKworICAgIGRlZiBpc192
b2lkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSBpbiBbInZv
aWQiLCAiR0NHTHZvaWQiLCAiY29uc3Qgdm9pZCIsICJjb25zdCBHQ0dMdm9pZCJdCisKKyAgICBk
ZWYgaXNfY29uc3Qoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1l
LnN0YXJ0c3dpdGgoImNvbnN0ICIpCisKKyAgICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJv
b2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlw
ZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19zcGFu
KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2R5bmFt
aWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBp
c19wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVm
IGlzX2NvbnN0X3BvaW50ZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisK
KyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gRmFsc2UKKworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUn
OgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9kZWNheV90eXBlKHNlbGYpIC0+
ICdjcHBfdHlwZSc6CisgICAgICAgIGlmIHNlbGYuaXNfY29uc3QoKToKKyAgICAgICAgICAgIHJl
dHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWVbNjpdKQorICAgICAgICByZXR1cm4gc2Vs
ZgorCisgICAgZGVmIGdldF9ydmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAg
ICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIiYmIikKKworICAgIGRlZiBn
ZXRfcG9pbnRlcl90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRf
Y3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiKiIpCisKK2NsYXNzIGNwcF90eXBlX2NvbnRhaW5l
cihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY29u
dGFpbmVyX25hbWUgOiBzdHIsIGNvbnRhaW5lZF90eXBlIDogY3BwX3R5cGUsIGFyaXR5IDogT3B0
aW9uYWxbaW50XSA9IE5vbmUpOgorICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBl
X25hbWUpCisgICAgICAgIHNlbGYuY29udGFpbmVyX25hbWUgPSBjb250YWluZXJfbmFtZQorICAg
ICAgICBzZWxmLmNvbnRhaW5lZF90eXBlID0gY29udGFpbmVkX3R5cGUKKyAgICAgICAgc2VsZi5h
cml0eSA9IGFyaXR5CisgICAgZGVmIGlzX2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJl
dHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIKKyAgICBkZWYgaXNfZHluYW1p
Y19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1l
ID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMgTm9uZQorICAgIGRlZiBnZXRfY29udGFp
bmVyX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lCisgICAg
ZGVmIGdldF9hcml0eShzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICByZXR1cm4gc2Vs
Zi5hcml0eQorICAgIGRlZiBnZXRfY29udGFpbmVkX3R5cGUoc2VsZikgLT4gY3BwX3R5cGU6Cisg
ICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlCisgICAgZGVmIGlzX291dHB1dF9idWZm
ZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlw
ZS5pc19jb25zdCgpCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6
IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFpbmVyXToKKyAgICBtID0gcmUubWF0Y2go
ciIoW1x3Ol0rKTwoLispPiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJl
dHVybiBOb25lCisgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCisgICAgdGVtcGxhdGVzID0gbVsy
XQorICAgIGFyaXR5ID0gTm9uZQorICAgIG0gPSByZS5tYXRjaChyIihbXixdKyksXHMqKFxkKyki
LCB0ZW1wbGF0ZXMpCisgICAgaWYgbToKKyAgICAgICAgdGVtcGxhdGVzID0gbVsxXQorICAgICAg
ICBhcml0eSA9IGludChtWzJdKQorICAgIHJldHVybiBjcHBfdHlwZV9jb250YWluZXIodHlwZV9u
YW1lLCBjb250YWluZXJfbmFtZSwgZ2V0X2NwcF90eXBlKHRlbXBsYXRlcyksIGFyaXR5KQorCitj
bGFzcyBjcHBfdHlwZV9mdW5jdGlvbihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHR5cGVfbmFtZSA6IHN0ciwgcmV0dXJuX3ZhbHVlX3R5cGUgOiBjcHBfdHlwZSwgYXJndW1lbnRf
dHlwZXMgOiBMaXN0W2NwcF90eXBlXSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYs
IHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfdHlwZSAgPSByZXR1cm5fdmFs
dWVfdHlwZQorICAgICAgICBzZWxmLmFyZ3VtZW50X3R5cGVzID0gYXJndW1lbnRfdHlwZXMKKwor
ZGVmIGNwcF9zcGxpdF9hcmdzX3NwZWNzKGFyZ3Nfc3BlYyA6IHN0cikgLT4gSXRlcmF0b3Jbc3Ry
XToKKyAgICAgIyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMzUyNzI0NS9w
eXRob24tc3BsaXQtYnktY29tbWEtc2tpcHBpbmctdGhlLWNvbnRlbnQtaW5zaWRlLXBhcmVudGhl
c2VzCisgICAgY29tbWEgPSByIiwoPyEoPzpbXjxdKlw8W14+XSpcPikqW148Pl0qXD4pIgorICAg
IHJldHVybiBmaWx0ZXIoTm9uZSwgW2Euc3RyaXAoKSBmb3IgYSBpbiByZS5zcGxpdChjb21tYSwg
YXJnc19zcGVjLnN0cmlwKCkpXSkKKyAgICAKK2RlZiBjcmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24o
dHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9mdW5jdGlvbl06CisgICAgbSA9
IHJlLm1hdGNoKHInKC4qKVwoKC4qKVwpJywgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAg
ICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybl92YWx1ZV90eXBlID0gZ2V0X2NwcF90eXBlKG1b
MV0pCisgICAgYXJnc190eXBlcyA9IFtnZXRfY3BwX3R5cGUoYSkgZm9yIGEgaW4gY3BwX3NwbGl0
X2FyZ3Nfc3BlY3MobVsyXSldCisgICAgcmV0dXJuIGNwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFt
ZSwgcmV0dXJuX3ZhbHVlX3R5cGUsIGFyZ3NfdHlwZXMpCisgICAgICAgIAorIyBQb2ludGVyIG9y
IHJlZmVyZXJlbmNlCitjbGFzcyBjcHBfdHlwZV9pbmRpcmVjdChjcHBfdHlwZSk6CisgICAgY2F0
ZWdvcnkgOiBzdHIKKyAgICB2YWx1ZV90eXBlIDogY3BwX3R5cGUKKyAgICAKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjYXRlZ29yeSA6IHN0ciwgdmFsdWVfdHlwZSA6
IGNwcF90eXBlKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQor
ICAgICAgICBzZWxmLmNhdGVnb3J5ID0gY2F0ZWdvcnkKKyAgICAgICAgc2VsZi52YWx1ZV90eXBl
ID0gdmFsdWVfdHlwZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVm
IGlzX3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBh
bmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgc2VsZi5pc19jb25zdCgp
CisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdv
cnkgPT0gJyYnIGFuZCBub3Qgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3J2YWx1ZV9yZWZl
cmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJicKKyAgICBk
ZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlX3R5cGUK
KworZGVmIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlv
bmFsW2NwcF90eXBlX2luZGlyZWN0XToKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiYk
IiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLisp
JiYkIiwgdHlwZV9uYW1lKSAKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5k
aXJlY3QodHlwZV9uYW1lLCAnJiYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1h
dGNoKHIiY29uc3QgKC4rKSYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBt
ID0gcmUubWF0Y2gociIoLispJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0
dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYnLCBnZXRfY3BwX3R5cGUobVsxXSkp
CisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBu
b3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBp
ZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnKicsIGdl
dF9jcHBfdHlwZShtWzFdKSkKKyAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIGNwcF9leHByKG9i
amVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBleHByOiBzdHIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgZXhwcjogc3RyKToKKyAgICAgICAgc2VsZi50eXBl
ID0gdHlwZQorICAgICAgICBzZWxmLmV4cHIgPSBleHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwcgorCisKK0NwcEV4cHJDb252ZXJ0ZXIgPSBDYWxs
YWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdCisKKworZGVmIGNwcF9yZWludGVy
cHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5
cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVm
IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcihleHByOiBjcHBfZXhwciwgdHlwZTog
Y3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJz
dGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9PihyZWludGVycHJldF9jYXN0PHtzdHIoY2FzdF90
aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0dXJuIGNwcF9yZWludGVycHJl
dF9jYXN0X2Zyb21fcG9pbnRlcgorCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRl
cl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBf
ZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0
X3RvX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoK
KyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYicmVpbnRlcnByZXRfY2FzdDx7dHlwZS50
eXBlX25hbWV9PihzdGF0aWNfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhw
cil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyCisKK2Rl
ZiBjcHBfc3RhdGljX2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBf
ZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBl
X25hbWV9Pih7c3RyKGV4cHIpfSkiKQorCisKK2RlZiBjcHBfaW1wbGljaXRfY2FzdChleHByOiBj
cHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhw
cih0eXBlLCBzdHIoZXhwcikpCisKKworZGVmIGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2Nv
bnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3Bw
X2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlw
ZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIo
dHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8e2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHBy
KX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisKK2RlZiB3ZWJraXRfaXBjX3NwYW5f
dHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIs
IHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2lu
dGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQor
ICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qge2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSksIHtzdHIoZXhw
cil9LmJ1ZlNpemUpIikKKworZGVmIGNwcF9tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNw
cF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcihleHByLnR5cGUuZ2V0X3J2YWx1ZV90eXBlKCks
IGYiV1RGTW92ZSh7c3RyKGV4cHIpfSkiKQorCisKK2NwcF90eXBlczogRGljdFtzdHIsIGNwcF90
eXBlXSA9IHt9CisKK2NwcF90eXBlX2NvbnN0cnVjdG9ycyA6IExpc3RbQ2FsbGFibGVbW3N0cl0s
IE9wdGlvbmFsW2NwcF90eXBlXV1dID0gWworICAgIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbiwK
KyAgICBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9pbmRp
cmVjdAorXQorCitkZWYgZ2V0X2NwcF90eXBlKHR5cGVfbmFtZTogc3RyKToKKyAgICByID0gY3Bw
X3R5cGVzLmdldCh0eXBlX25hbWUsIE5vbmUpCisgICAgaWYgcjoKKyAgICAgICAgcmV0dXJuIHIK
KyAgICBmb3IgdHlwZV9jb25zdHIgaW4gY3BwX3R5cGVfY29uc3RydWN0b3JzOgorICAgICAgICBy
ID0gdHlwZV9jb25zdHIodHlwZV9uYW1lKQorICAgICAgICBpZiByOgorICAgICAgICAgICAgYnJl
YWsKKyAgICBpZiBub3QgcjoKKyAgICAgICAgciA9IGNwcF90eXBlKHR5cGVfbmFtZSkKKyAgICBj
cHBfdHlwZXNbdHlwZV9uYW1lXSA9IHIKKyAgICByZXR1cm4gcgorCisKK2NsYXNzIGNwcF9hcmco
b2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICB0eXBlOiBjcHBfdHlwZQorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLm5h
bWUgPSBuYW1lCisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKworICAgIGRlZiBfX3N0cl9fKHNl
bGYpOgorICAgICAgICByZXR1cm4gInt9IHt9Ii5mb3JtYXQoc2VsZi50eXBlLCBzZWxmLm5hbWUp
CisKKworY2xhc3MgY3BwX2RlY2wob2JqZWN0KToKKyAgICB0eXBlOiBjcHBfdHlwZQorICAgIG5h
bWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBz
dHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUK
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7c3RyKHNlbGYudHlw
ZSl9IHtzZWxmLm5hbWV9IgorCisKK2NsYXNzIGNwcF9hcmdfbGlzdChvYmplY3QpOgorICAgIGFy
Z3M6IExpc3RbY3BwX2FyZ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzOiBMaXN0W2Nw
cF9hcmddKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworCisgICAgZGVmIG5hbWVzKHNlbGYp
OgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKGEubmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisK
KyAgICBkZWYgZXhwcnMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2V4cHIoYS50eXBlLCBh
Lm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiBkZWNscyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIFtjcHBfZGVjbChhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQor
CisgICAgZGVmIHR5cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2EudHlwZSBmb3IgYSBpbiBz
ZWxmLmFyZ3NdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIu
am9pbihzdHIoYSkgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisKK2NsYXNzIGNwcF9mdW5jKG9iamVj
dCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgcmV0dXJuX3R5
cGU6IGNwcF90eXBlCisgICAgaXNfZXh0ZW5zaW9uOiBib29sCisgICAgb3ZlcmxvYWRfc3VmZml4
OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBj
cHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246IGJvb2wpOgorICAgICAg
ICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlw
ZQorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0g
aXNfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gIiIKKworICAgIGRl
ZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7c2VsZi5yZXR1cm5fdHlwZX0ge3Nl
bGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSkiCisKKyAgICBkZWYgZ2V0X2FyZ3NfY2F0ZWdvcmll
cyhzZWxmKSAtPiBUdXBsZVtMaXN0W2NwcF9hcmddLCBMaXN0W2NwcF9hcmddXToKKyAgICAgICAg
aW5fYXJncyA9IFtdCisgICAgICAgIG91dF9hcmdzID0gW10KKyAgICAgICAgZm9yIGEgaW4gc2Vs
Zi5hcmdzLmFyZ3M6CisgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgIGlmIGEudHlw
ZS5pc19wb2ludGVyKCkgb3IgXAorICAgICAgICAgICAgICAgIGEudHlwZS5pc19yZWZlcmVuY2Uo
KToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikgYW5kICgoKGEudHlwZS5pc19zcGFu
KCkgb3IgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpKSBhbmQgbm90IGEudHlwZS5nZXRfY29udGFp
bmVkX3R5cGUoKS5pc19jb25zdCgpKSk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2Fd
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluX2FyZ3MgKz0gW2FdCisgICAg
ICAgICAgICAjZm10OiBvbgorICAgICAgICByZXR1cm4gaW5fYXJncywgb3V0X2FyZ3MKKworICAg
IGRlZiBpc19pbXBsZW1lbnRlZF90eXBlKHNlbGYsIHR5cGU6IGNwcF90eXBlKToKKyAgICAgICAg
aWYgdHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZChzZWxmKToKKyAgICAg
ICAgIyIgaW4gYS50eXBlLnR5cGVfbmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAg
ICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICNpZiAiR0NHTHN5bmMiIGluIHNlbGYucmV0
dXJuX3R5cGUudHlwZV9uYW1lOgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICBp
ZiBhbnkoYS5uYW1lID09ICJidWZTaXplIiBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEudHlwZS5pc19wb2ludGVyKCkg
YW5kIGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLmlzX3ZvaWQoKSBmb3IgYSBpbiBzZWxmLmFyZ3Mu
YXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KG5vdCBzZWxm
LmlzX2ltcGxlbWVudGVkX3R5cGUoYS50eXBlKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6Cisg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5fdHlwZS5pc19w
b2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbm90IHNlbGYu
aXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLnJldHVybl90eXBlKToKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK3dlYmtpdF9pcGNfdHlwZXM6IERpY3Rb
Y3BwX3R5cGUsIGNwcF90eXBlXSA9IHt9CisKK3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyczog
RGljdFtUdXBsZVtjcHBfdHlwZSwgY3BwX3R5cGVdLCBDcHBFeHByQ29udmVydGVyXSA9IHt9CisK
KworZGVmIHdlYmtpdF9pcGNfY29udmVydF9leHByKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBf
dHlwZSkgLT4gY3BwX2V4cHI6CisgICAgIiIiIENvbnZlcnRzIGBleHByYCBvZiB0eXBlIG9mIGBz
ZWxmYCB0byBgdHlwZWAgIiIiCisgICAgY29udmVydCA9IHdlYmtpdF9pcGNfdHlwZXNfY29udmVy
dGVycy5nZXQoKGV4cHIudHlwZSwgdHlwZSksIE5vbmUpCisgICAgaWYgbm90IGNvbnZlcnQ6Cisg
ICAgICAgIGlmIGV4cHIudHlwZSA9PSB0eXBlOgorICAgICAgICAgICAgcmV0dXJuIGV4cHIKKyAg
ICAgICAgY29udmVydCA9IGNwcF9pbXBsaWNpdF9jYXN0CisgICAgcmV0dXJuIGNvbnZlcnQoZXhw
ciwgdHlwZSkKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKHR5cGUg
OiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlwZSA9IHR5
cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGFyaXR5ID0gdHlw
ZS5nZXRfYXJpdHkoKQorICAgIHdlYmtpdF9pcGNfZWxlbWVudF90eXBlID0gd2Via2l0X2lwY190
eXBlc1tlbGVtZW50X3R5cGVdIGlmIG5vdCBlbGVtZW50X3R5cGUuaXNfdm9pZCgpIGVsc2UgZ2V0
X2NwcF90eXBlKCd1aW50OF90JykKKyAgICBpZiBhcml0eSBpcyBub3QgTm9uZToKKyAgICAgICAg
cmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBj
X2VsZW1lbnRfdHlwZSl9LCB7YXJpdHl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQ
Qzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9PiIpCisKKwor
CitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKHR5cGU6IGNwcF90eXBlX2NvbnRh
aW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVk
X3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgaWYgZWxlbWVudF90eXBlLmlzX3ZvaWQoKToK
KyAgICAgICAgZWxlbWVudF90eXBlID0gZ2V0X2NwcF90eXBlKCdHQ0dMY2hhcicpCisgICAgaWYg
dHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgaW5saW5lX2NhcGFjaXR5ID0gMTYgaWYg
ImZsb2F0IiBpbiBlbGVtZW50X3R5cGUudHlwZV9uYW1lIGVsc2UgNAorICAgICAgICByZXR1cm4g
Z2V0X2NwcF90eXBlKGYiVmVjdG9yPHtzdHIoZWxlbWVudF90eXBlKX0sIHtzdHIoaW5saW5lX2Nh
cGFjaXR5KX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYic3RkOjphcnJheTx7c3RyKGVs
ZW1lbnRfdHlwZSl9LCB7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4iKQorCitkZWYgd2Via2l0X2lw
Y19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24oZXhwciA6IGNwcF9leHByLCB0eXBlIDogY3BwX3R5
cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBwb2ludGVyX2Nhc3RfdHlwZSA9IHR5cGUu
Z2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgaWYgdHlwZS5pc19k
eW5hbWljX3NwYW4oKToKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYibWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIp
fS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXplKCkpIikKKworICAgIGFzc2VydCh0eXBlLmlzX3Nw
YW4oKSkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW48e3N0cih0eXBl
LmdldF9hcml0eSgpKX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9
Pih7c3RyKGV4cHIpfS5kYXRhKCkpKSIpCisKKyMgU2VlIG1lc3NhZ2VzLnB5IGZ1bmN0aW9uX3Bh
cmFtZXRlcl90eXBlCit3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXMgPSBzZXQoCisgICAgWyJ1aW50
OF90IiwgInVpbnQxNl90IiwgInVpbnQzMl90IiwgInVpbnQ2NF90IiwgImludDhfdCIsICJpbnQx
Nl90IiwgImludDMyX3QiLCAiaW50NjRfdCIsICJib29sIiwgImZsb2F0IiwgImRvdWJsZSIgImJv
b2wiXQorKQorCisKK2RlZiB3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHR5
cGU6IGNwcF90eXBlKSAtPiBjcHBfdHlwZToKKyAgICBpZiB0eXBlLnR5cGVfbmFtZSBpbiB3ZWJr
aXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVybiB0eXBlCisgICAgcmV0dXJuIHR5
cGUuZ2V0X3J2YWx1ZV90eXBlKCkKKworCitkZWYgd2Via2l0X2lwY19tb3ZlX2V4cHIoZXhwcjog
Y3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIGlmIGV4cHIudHlwZS50eXBlX25hbWUgaW4gd2Vi
a2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1cm4gZXhwcgorICAgIHJldHVybiBj
cHBfbW92ZV9leHByKGV4cHIpCisKKworZGVmIHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYzogY3Bw
X2Z1bmMpOgorICAgIHJldHVybiBmdW5jLm5hbWVbMF0uY2FwaXRhbGl6ZSgpICsgZnVuYy5uYW1l
WzE6XSArIGZ1bmMub3ZlcmxvYWRfc3VmZml4CisKKworY2xhc3Mgd2Via2l0X2lwY19tc2cob2Jq
ZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBpbl9hcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBvdXRf
YXJnczogY3BwX2FyZ19saXN0CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuYzogY3BwX2Z1
bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmMpCisgICAg
ICAgIGluX2FyZ3MsIG91dF9hcmdzID0gZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAg
ICAgaXBjX2luX2FyZ3MgPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFt
ZSkgZm9yIGEgaW4gaW5fYXJnc10KKyAgICAgICAgaXBjX291dF9hcmdzID0gW10KKyAgICAgICAg
aWYgbm90IGZ1bmMucmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgaXBjX291dF9h
cmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbZnVuYy5yZXR1cm5fdHlwZV0sICJyZXR1
cm5WYWx1ZSIpXQorICAgICAgICBmb3IgYSBpbiBvdXRfYXJnczoKKyAgICAgICAgICAgIGlwY19v
dXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSldCisg
ICAgICAgICAgICBpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAg
aXBjX2luX2FyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5h
bWV9U2l6ZSIpXQorICAgICAgICBzZWxmLmluX2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX2luX2Fy
Z3MpCisgICAgICAgIHNlbGYub3V0X2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX291dF9hcmdzKQor
CisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmLm91dF9hcmdzLmFy
Z3MpOgorICAgICAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNl
bGYuaW5fYXJncyl9KSAtPiAoe3N0cihzZWxmLm91dF9hcmdzKX0pIFN5bmNocm9ub3VzIgorICAg
ICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0p
IgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKKyAgICBuYW1l
OiBzdHIKKyAgICBtc2dfbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAg
YXJnczogY3BwX2FyZ19saXN0CisKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAg
Y2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAg
ICByZXR1cm5fc3RtdHM6IExpc3Rbc3RyXQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQor
ICAgIG91dF9leHByczogTGlzdFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBj
cHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisg
ICAgICAgIHNlbGYubXNnX25hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGNwcF9mdW5jKQorICAg
ICAgICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2Vs
Zi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10K
KyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3Rt
dHMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5f
ZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIGluX2FyZ3Ms
IG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYu
cHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIHNlbGYu
cHJvY2Vzc19pbl9hcmdzKGluX2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJncyhv
dXRfYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQorCisgICAgZGVmIHByb2Nlc3Nf
Y2FsbChzZWxmKToKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oW3N0cihpKSBmb3IgaSBp
biBzZWxmLmluX2V4cHJzXSkKKyAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihvKSBm
b3IgbyBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgaXNfYXN5bmMgPSBzZWxmLnJldHVybl90
eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykgPT0gMAorICAgICAgICBpZiBpc19hc3lu
YzoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtp
bl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7IiwKKyAgICAgICAgICAg
IF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gIiIKKyAgICAgICAg
ICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0bXRzOiAKKyAgICAgICAgICAgICAgICBzZW5kX3Jlc3Vs
dCA9ICJhdXRvIHNlbmRSZXN1bHQgPSAiCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxf
c3RtdHMgPSBbCisgICAgICAgICAgICAgICAgICAgICJpZiAoc2VuZFJlc3VsdCkiICsgKCIgeyIg
aWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAg
ICBdICsgWyIgICAgIiArIHMgZm9yIHMgaW4gc2VsZi5wb3N0X2NhbGxfc3RtdHNdICsgWworICAg
ICAgICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVs
c2UgIiIpCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9
IFsKKyAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRf
ZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOyIsCisgICAgICAg
ICAgICBdCisKKworICAgIGRlZiBwcm9jZXNzX2luX2FyZ3Moc2VsZiwgaW5fYXJnczogTGlzdFtj
cHBfYXJnXSk6CisgICAgICAgIGZvciBpIGluIGluX2FyZ3M6CisgICAgICAgICAgICBpZiBpLnR5
cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihpLnR5cGUsIGkubmFtZSksIHdlYmtpdF9pcGNfdHlw
ZXNbaS50eXBlXSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJncyhzZWxmLCBvdXRfYXJnczog
TGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBvIGluIG91dF9hcmdzOgorICAgICAgICAgICAg
aWYgby50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICB2YWx1ZV90eXBlID0gby50
eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5
cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3ZhbHVlX3R5cGVdCisgICAgICAgICAgICAgICAgdiA9IGNw
cF9hcmcod2Via2l0X2lwY192YWx1ZV90eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAg
ICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFt
ZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgICAgICBlID0gY3BwX2V4cHIodi50eXBlLCB2Lm5h
bWUpCisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2VdCisgICAgICAgICAgICAg
ICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgICAgICAjZm10OiBv
ZmYKKyAgICAgICAgICAgICAgICAgICAgZiJpZiAoe28ubmFtZX0pIiwKKyAgICAgICAgICAgICAg
ICAgICAgZiIgICAgKntvLm5hbWV9ID0ge3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHZhbHVl
X3R5cGUpfTsiCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9uCisgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgZWxpZiBvLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgICAgIHdl
YmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQorICAgICAgICAgICAgICAg
IGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkK
KyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJS
ZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYu
dHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyAr
PSBbY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpXQorICAgICAgICAgICAgICAgIGlmIG8udHlwZS5p
c19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBb
Y3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJzaXplX3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCisg
ICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAg
ICAgICBmIm1lbWNweSh7by5uYW1lfS5kYXRhLCB7di5uYW1lfS5kYXRhKCksIHtvLm5hbWV9LmJ1
ZlNpemUgKiBzaXplb2Yoe3N0cih3ZWJraXRfaXBjX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkp
fSkpOyIKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcihvLnR5cGUsIG8ubmFtZSldCisKKyAgICBk
ZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAg
ICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBpcGNfcmV0dXJuX3R5
cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVf
ZXhwciA9IGNwcF9leHByKGlwY19yZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAg
c2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVy
bl92YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBb
cmV0dXJuX3ZhbHVlX2V4cHJdICsgc2VsZi5vdXRfZXhwcnMKKyAgICAgICAgc2VsZi5yZXR1cm5f
c3RtdHMgPSBbZiJyZXR1cm4ge3N0cih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFs
dWVfZXhwciwgcmV0dXJuX3R5cGUpKX07Il0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAg
ICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYubmFtZSBlbHNlICIiCisg
ICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxs
X3N0bXRzICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKyBzZWxmLnJl
dHVybl9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiJcbntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdz
KX0pe25vbGludH0KK3t7e2JvZHl9Cit9fSIiIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3By
b3h5X3BsYWNlaG9sZGVyKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6
IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgYm9keTogTGlzdFtzdHJdCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2Vs
Zi5uYW1lID0gY3BwX2Z1bmMubmFtZQorCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBjcHBf
ZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisgICAg
ICAgIHNlbGYuYm9keSA9IFsibm90SW1wbGVtZW50ZWQoKTsiXQorICAgICAgICBpZiBjcHBfZnVu
Yy5yZXR1cm5fdHlwZS50eXBlX25hbWUgIT0gInZvaWQiOgorICAgICAgICAgICAgc2VsZi5ib2R5
ICs9IFsicmV0dXJuIHsgfTsiXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5v
bGludCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAg
Ym9keSA9ICJcbntcbiAgICAiICsgIlxuICAgICIuam9pbihzZWxmLmJvZHkpICsgIlxufSIKKyAg
ICAgICAgcmV0dXJuIGYiXG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9e2JvZHl9
IgorCisKK2NsYXNzIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVj
dCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgQysrIGltcGxlbWVudGF0aW9u
IGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbF0K
KyAgICB1bmltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyXQorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10sIHVuaW1wbGVt
ZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0
X2lwY19jcHBfcHJveHlfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKyAgICAgICAgc2VsZi51bmlt
cGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKGYpIGZvciBmIGluIHVuaW1w
bGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJu
ICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBscyArIHNlbGYudW5pbXBscykKKwor
ICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAgICAg
IGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9m
dW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAg
KQorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIK
KyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBpc19leHRlbnNpb246IGJvb2wKKyAgICBwcmVf
Y2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9z
dF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAg
ICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgcmV0dXJuX3ZhbHVlX2V4cHI6IE9wdGlv
bmFsW2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVu
Yyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5vdmVy
bG9hZF9zdWZmaXggPSBjcHBfZnVuYy5vdmVybG9hZF9zdWZmaXgKKyAgICAgICAgc2VsZi5hcmdz
ID0gY3BwX2FyZ19saXN0KFtdKQorICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGNwcF9mdW5j
LmlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAg
c2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQor
ICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbXQor
ICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gTm9uZQorCisgICAgICAgIHNlbGYucHJv
Y2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIGluX2FyZ3Ms
IG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYu
cHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3MuYXJncywgc2V0KGluX2FyZ3MpLCBzZXQob3V0X2Fy
Z3MpKQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxs
KHNlbGYpOgorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9ucygpLiIgaWYgc2VsZi5pc19leHRl
bnNpb24gZWxzZSAiIgorCisgICAgICAgIGluX2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3Ig
ZSBpbiBzZWxmLmluX2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IGxlbihzZWxmLm91dF9leHBy
cykgPT0gMAorCisgICAgICAgIGNhbGxfZXhwciA9IGYibV9jb250ZXh0LT57ZXh0fXtzZWxmLm5h
bWV9KHtpbl9leHByc30pIgorICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoK
KyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFtmIntzdHIoc2VsZi5yZXR1
cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxfZXhwcn07Il0KKyAgICAgICAgaWYgbm90IGlzX2FzeW5j
OgorICAgICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxm
Lm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFtmImNvbXBs
ZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9KTsiXQorCisgICAgZGVmIHByb2Nlc3NfYXJncyhzZWxm
LCBhcmdzOiBMaXN0W2NwcF9hcmddLCBpbl9hcmdzOiBTZXRbY3BwX2FyZ10sIG91dF9hcmdzOiBT
ZXRbY3BwX2FyZ10pOgorICAgICAgICBmb3IgYSBpbiBhcmdzOgorICAgICAgICAgICAgaWYgYS50
eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAg
ICAgICAgICAgIGlmIGEgaW4gaW5fYXJnczoKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Nf
aW5fYXJnKGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vz
c19vdXRfYXJnKGEpCisgICAgICAgIGlmIHNlbGYub3V0X2V4cHJzOgorICAgICAgICAgICAgb3V0
X2FyZ19kZWNscyA9ICIsICIuam9pbihmIntzdHIoZS50eXBlKX0iIGZvciBlIGluIHNlbGYub3V0
X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90
eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh7b3V0X2FyZ19kZWNsc30pPiYmIiksICJjb21w
bGV0aW9uSGFuZGxlciIpXQorCisgICAgZGVmIHByb2Nlc3NfaW5fYXJnKHNlbGYsIGE6IGNwcF9h
cmcpOgorICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9t
ZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSksIGEubmFtZSld
CisgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9l
eHByKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSwgYS50eXBlKV0KKworICAgIGRl
ZiBwcm9jZXNzX291dF9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIGlmIGEudHlwZS5p
c19wb2ludGVyKCk6CisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRf
dmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9
IFtmIntzdHIodmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0gPSB7eyB9fTsi
XQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoYS50eXBlLCBmIiZ7dmFs
dWVfYXJnLm5hbWV9IildCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUs
IHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Vi
a2l0X2lwY190eXBlc1tlLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Vi
a2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY192YWx1ZV90eXBlKV0KKyAgICAgICAg
ZWxpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICBhc3NlcnQoaXNpbnN0
YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICBzaXplX2FyZyA9
IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpCisgICAg
ICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbc2l6ZV9hcmddCisgICAgICAgICAgICBzdG9yZV9h
cmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShhLnR5cGUpLCBhLm5h
bWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIoc3RvcmVfYXJn
LnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0oc3RhdGljX2Nhc3Q8c2l6ZV90Pih7YS5uYW1l
fVNpemUpLCAwKTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3Rv
cmVfYXJnLnR5cGUsIGYie3N0b3JlX2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgd2Via2l0X2lw
Y190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9l
eHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUs
IHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUu
aXNfc3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlw
ZV9jb250YWluZXIpKQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBj
X2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5w
cmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcu
bmFtZSl9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihz
dG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpXQorICAgICAgICAgICAgd2Via2l0X2lwY190
eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBy
cyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0
b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGFzc2VydCBhLnR5cGUuaXNfcmVmZXJlbmNlKCkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAgICAgdmFsdWVfYXJnID0g
Y3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c2VsZi5ucyh2YWx1ZV9hcmcudHlwZSl9IHtzdHIodmFs
dWVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgZSA9IGNwcF9leHByKHZhbHVlX2Fy
Zy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2Vd
CisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Vi
a2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY190eXBlKSldCisKKyAgICBkZWYgcHJv
Y2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAg
aWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlw
Y19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJl
dHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIocmV0dXJuX3R5cGUsICJyZXR1cm5WYWx1ZSIpCisg
ICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92YWx1ZV9leHByLnR5cGV9
IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAgICAgIHNlbGYub3V0X2V4
cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1
cm5fdmFsdWVfZXhwciwgaXBjX3JldHVybl90eXBlKSldCisgICAgICAgIHNlbGYucmV0dXJuX3Zh
bHVlX2V4cHIgPSByZXR1cm5fdmFsdWVfZXhwcgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6Cisg
ICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAgICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVf
Y2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzKQorICAg
ICAgICByZXR1cm4gZiIiIiAgICB2b2lkIHtzZWxmLm5hbWV9e3NlbGYub3ZlcmxvYWRfc3VmZml4
fSh7c3RyKHNlbGYuYXJncyl9KQorICAgIHt7e2JvZHl9CisgICAgfX0iIiIKKworICAgIGRlZiBu
cyhzZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAgICMgVE9ETzogbmFtZXNwYWNlIGluZm8g
aXMgbm90IHN0b3JlZCBpbiBuYW1lcy4KKyAgICAgICAgaWYgdHlwZS50eXBlX25hbWUgPT0gIkFj
dGl2ZUluZm8iOgorICAgICAgICAgICAgcmV0dXJuICJXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6IiArIHN0cih0eXBlKQorICAgICAgICByZXR1cm4gc3RyKHR5cGUpCisKK2RlZiB3ZWJraXRf
aXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzIDogSXRlcmFibGVbY3BwX2Z1bmNdKToK
KyAgICBjb3VudHMgPSBjb2xsZWN0aW9ucy5Db3VudGVyKGYubmFtZSBmb3IgZiBpbiBmdW5jcykK
KyAgICBzdWZmaXhlcyA6IENvdW50ZXJbc3RyXSA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoKQorICAg
IGZvciBmIGluIGZ1bmNzOgorICAgICAgICBpZiBjb3VudHNbZi5uYW1lXSA+IDE6CisgICAgICAg
ICAgICBmLm92ZXJsb2FkX3N1ZmZpeCA9IHN0cihzdWZmaXhlc1tmLm5hbWVdKQorICAgICAgICAg
ICAgc3VmZml4ZXMudXBkYXRlKFtmLm5hbWVdKQorCisKK2NsYXNzIGNvbnRleHRfY3BwX3dlYmtp
dF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIEMr
KyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9pcGNf
Y3BwX2ltcGxdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9m
dW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfaW1wbChmKSBmb3Ig
ZiBpbiBmdW5jc10KKworICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1
cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBzZWxmLmltcGxzKQorCisgICAgZGVmIGdlbmVy
YXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9mdW5j
dGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQo
c2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3MgY29udGV4dF9tc2df
d2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgV2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZ2VuZXJhdG9yLiIKKyAgICBtc2dzOiBM
aXN0W3dlYmtpdF9pcGNfbXNnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVy
YWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLm1zZ3MgPSBbd2Via2l0X2lwY19tc2coZikg
Zm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gIiIuam9pbihzdHIobSkgZm9yIG0gaW4gc2VsZi5tc2dzKQorCisgICAgZGVmIGdlbmVy
YXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKGNvbnRleHRfbWVzc2FnZXNfZm4sIGNvbnRl
eHRfbWVzc2FnZXNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X21lc3NhZ2VzKCkpKQorCisKK2Rl
ZiBjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYzogc3RyLCBhcmdfaW5kZXg6IGludCk6CisgICAgciA9
IGFyZ19zcGVjLnJzcGxpdCgiICIsIDEpCisgICAgbmFtZSA9ICIiCisgICAgdHlwZSA9IE5vbmUK
KyAgICBpZiBsZW4ocikgPiAxIGFuZCByWzBdICE9ICJjb25zdCI6CisgICAgICAgIG5hbWUgPSBy
WzFdLnN0cmlwKCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShyWzBdKQorICAgIGVsc2U6
CisgICAgICAgIG5hbWUgPSAiYXJne30iLmZvcm1hdChhcmdfaW5kZXgpCisgICAgICAgIHR5cGUg
PSBnZXRfY3BwX3R5cGUoYXJnX3NwZWMpCisgICAgcmV0dXJuIGNwcF9hcmcodHlwZSwgbmFtZSkK
KworCitkZWYgY3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzOiBJdGVyYWJsZVtzdHJdKToK
KyAgICByZXR1cm4gY3BwX2FyZ19saXN0KFtjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYz1lLCBhcmdf
aW5kZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nfc3BlY3MpXSkKKworCitkZWYgY3Jl
YXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVjczogTGlz
dFtzdHJdLCBpc19leHRlbnNpb246IGJvb2wpOgorICAgIHJldHVybiBjcHBfZnVuYyhuYW1lPW5h
bWUsIHJldHVybl90eXBlPWdldF9jcHBfdHlwZShyZXR1cm5fc3BlYyksIGFyZ3M9Y3JlYXRlX2Nw
cF9hcmdfbGlzdChhcmdzX3NwZWNzKSwgaXNfZXh0ZW5zaW9uPWlzX2V4dGVuc2lvbikKKworCitk
ZWYgcmVhZF9saW5lc191bnRpbChsaW5lcyA6IEl0ZXJhYmxlW3N0cl0sIG1hdGNoIDogc3RyKSAt
PiBHZW5lcmF0b3Jbc3RyLCBOb25lLCBOb25lXToKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAg
ICAgICAgaWYgcmUubWF0Y2gobWF0Y2gsIGxpbmUuc3RyaXAoKSk6CisgICAgICAgICAgICBicmVh
aworICAgICAgICB5aWVsZCBsaW5lCisKK2RlZiBtYWluKCk6CisgICAgcGFyc2VyID0gYXJncGFy
c2UuQXJndW1lbnRQYXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10iKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlByaW50
IHNvbWUgZGVidWcgaW5mbyBmcm9tIHRoZSBnZW5lcmF0b3Igc2NyaXB0IikKKyAgICBvcHRpb25z
ID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVu
Y3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzLgorCisgICAg
IyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMgcmVtb3ZlZCwgd2UgbmVlZCB0byBj
b21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICMgd2l0aCB0aGUgZGlzdGluY3Rpb24g
b2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBhbiBleHRlbnNpb24gZnVuY3Rpb24u
CisgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3RyXSA9IHNldCgpCisgICAgd2l0aCBv
cGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGYucmVh
ZGxpbmVzKCk6CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnZpcnR1YWwgKFxTKylccyso
XHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAg
ICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAgICAgICAgICBuYW1lPW1b
Ml0sCisgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAg
ICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAg
ICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUoW3N0cihmdW5jKV0pCisgICAgZnVu
Y3MgPSBbXQorICAgIHVuaW1wbGVtZW50ZWQgPSBbXQorICAgIGZvciBmbiBpbiBmdW5jdGlvbnNf
aW5wdXRfZm5zOgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBsaW5l
cyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIGZvciBfIGluIHJlYWRfbGluZXNf
dW50aWwobGluZXMsICIvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlv
bi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6Cisg
ICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVz
X3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmds
IHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2gociJccyooXFMrKVxzKyhc
dyspXCgoLiopXCkgZmluYWw7IiwgbGluZSkKKyAgICAgICAgICAgICAgICBpZiBtOgorICAgICAg
ICAgICAgICAgICAgICBmdW5jX25hbWUgPSBtWzJdCisgICAgICAgICAgICAgICAgICAgIGZ1bmMg
PSBjcmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMp
IGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNf
aW1wbGVtZW50ZWQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5j
KQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5p
bXBsZW1lbnRlZC5hcHBlbmQoZnVuYykKKworCisgICAgd2Via2l0X2lwY19yZXNvbHZlX292ZXJs
b2FkX3N1ZmZpeChmdW5jcykKKyAgICAjIEluaXRpYWxpemUgV2ViS2l0IElQQyBnZW5lcmF0aW9u
LiBDb25zdHJ1Y3QgdHlwZSBtYXBwaW5ncyBmb3IgdGhlIHVzZWQgQysrIHR5cGVzIC0+IElQQyB0
eXBlcy4KKyAgICAjIFRPRE86IG5hbWVzcGFjaW5nIGlzc3Vlcy4KKyAgICBhaV90eXBlID0gZ2V0
X2NwcF90eXBlKCJBY3RpdmVJbmZvJiIpCisgICAgYWlfdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBf
dHlwZSgiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8iKQorICAgIHdlYmtp
dF9pcGNfdHlwZXNbYWlfdHlwZV0gPSBhaV90cmFuc2Zlcl90eXBlCisKKyAgICB3aXRoIG9wZW4o
dHlwZXNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygp
KQorICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gVGhlIEdDR0wg
dHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2Vk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgcGFzcworICAg
ICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3Qg
dXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgIG0gPSBy
ZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc3RkOjppc19zYW1lX3Y8KFx3KyksIChcdyspPlwp
OyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZXNbZ2V0X2NwcF90eXBlKG1bMV0pXSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3Nl
cnRcKHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAg
ICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFd
KQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0g
PSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZl
cnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgRklYTUU6IEhlcmUgd2UgdXNlIDw9IGluc3Rl
YWQgb2YgPT0gZHVlIHRvIHBvaW50ZXJzLCBzdWNoIGFzIEdDR0xzeW5jLCBHQ0dMaW50cHRyLCAu
Li4uCisgICAgICAgICAgICAjIFRoaXMgZW5kcyB1cCBmYWlsaW5nIGlmIHRoZXJlIGV2ZXIgaXMg
YXJyYXlzIG9mIHRoZXNlIHR5cGVzLCBzaW5jZSBhcnJheXMgYXJlIGN1cnJlbnRseQorICAgICAg
ICAgICAgIyByZWludGVycHJldC1jYXN0ZWQuCisgICAgICAgICAgICAjIFdlYktpdCBJUEMgcmVx
dWlyZXMgb25lIHNpemVkIHR5cGUsIGJ1dCB0aGUgc2l6ZSBvZiB0aGVzZSBwb2ludGVyLWJhc2Vk
IHZhbHVlcyB3aWxsIGNoYW5nZQorICAgICAgICAgICAgIyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0u
CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3
KylcKSA8PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAg
ICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAg
ICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9p
cGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGljX2Nh
c3QKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBl
LCBjcHBfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgY29udGludWUK
KyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcr
KVwpIDw9IHNpemVvZlwoKFx3KylcKSAmJiBzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcr
KVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5
cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9j
cHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNwcF9jYXN0X3Rocm91Z2hfdHlwZSA9IGdl
dF9jcHBfdHlwZShtWzRdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5
cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRl
cnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2lu
dGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfcmVpbnRl
cnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAjIEZvciBhbGwgdHlwZXMgaW4gdGhlIGlucHV0
IEFQSSwgZm9ybSBjb3JyZXNwb25kaW5nIElQQyB0eXBlcyBhbmQgY29udmVyc2lvbnMuCisgICAg
IyBUT0RPOiB0aGlzIGlzIG5vdCBkcml2ZW4gYnkgdGhlIHR5cGluZy4KKyAgICBhbGxfdHlwZXMg
PSBzZXQoKQorICAgIGZvciBmdW5jIGluIGZ1bmNzOgorICAgICAgIGFsbF90eXBlcy51cGRhdGUo
ZnVuYy5hcmdzLnR5cGVzKCkgKyBbZnVuYy5yZXR1cm5fdHlwZV0pCisgICAgIyBTb3J0IGJ5IGxl
biBzbyB0aGF0IHRlbXBsYXRlIGFyZ3MgY29tZSBiZWZvcmUgdGVtcGxhdGVzLgorICAgIGZvciBj
cHBfdHlwZSBpbiBzb3J0ZWQoYWxsX3R5cGVzLCBrZXk9bGFtYmRhIHg6IGxlbih4LnR5cGVfbmFt
ZSkpOgorICAgICAgICBpZiBjcHBfdHlwZSBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAg
ICAgY29udGludWUKKyAgICAgIAorICAgICAgICBpZiBjcHBfdHlwZS5pc19keW5hbWljX3NwYW4o
KSBvciBjcHBfdHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gd2Vi
a2l0X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBlLmdldF92YWx1ZV90eXBlKCkK
KyAgICAgICAgICAgIGlmIGNwcF90eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCk6
CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwg
dHJhbnNmZXJfdHlwZSldID0gd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnBy
ZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252
ZXJ0ZXJzWyh0cmFuc2Zlcl90eXBlLCBjcHBfdHlwZSldID0gd2Via2l0X2lwY19tYWtlX2djZ2xz
cGFuX2NvbnZlcnNpb24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RvcmVf
dHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShjcHBfdHlwZSkKKyAgICAgICAg
ICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHN0b3JlX3R5cGUsIHRyYW5zZmVy
X3R5cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAg
ZWxpZiBjcHBfdHlwZS5pc19yZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5pc19jb25zdF9yZWZlcmVu
Y2UoKSBvciBjcHBfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgIHZhbHVlX3R5cGUg
PSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpIGlmIG5vdCBjcHBfdHlwZS5pc19jb250YWluZXIo
KSBlbHNlIGNwcF90eXBlCisgICAgICAgICAgICBpZiB2YWx1ZV90eXBlLmlzX2NvbnRhaW5lcigp
OgorICAgICAgICAgICAgICAgIGNvbnRhaW5lZF90eXBlID0gdmFsdWVfdHlwZS5nZXRfY29udGFp
bmVkX3R5cGUoKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUgPSB3
ZWJraXRfaXBjX3R5cGVzW2NvbnRhaW5lZF90eXBlXQorICAgICAgICAgICAgICAgIGlmIHdlYmtp
dF9pcGNfY29udGFpbmVkX3R5cGUgPT0gY29udGFpbmVkX3R5cGU6CisgICAgICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5
cGUoZiJ7dmFsdWVfdHlwZS5nZXRfY29udGFpbmVyX25hbWUoKX08e3N0cih3ZWJraXRfaXBjX2Nv
bnRhaW5lZF90eXBlKX0+IikKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tj
cHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBlCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogSGVy
ZSBtaWdodCBiZSBjYXNlIHdoZXJlIFZlY3RvcjxHQ0dMaW50PiB3YXMgdXNlZCBpbiB0aGUgaW50
ZXJmYWNlIGFuZCBWZWN0b3I8aW50MzJfdD4gaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICAj
IGluIHRoZSBJUEMgZGVmaW5pdGlvbi4gVGhlcmUgaXMgbm8gc2Vuc2libGUgd2F5IHRvIGRvIHRo
aXMgYXQgdGhlIG1vbWVudC4gV2UgZG8gbm90IGNvbnZlcnQsIHJhdGhlcgorICAgICAgICAgICAg
ICAgICAgICAjIGV4cGVjdCB0aGF0IGFsbCB0aGUgaW52b2NhdGlvbnMgYXJlIHRha2VuIGNhcmUg
b2YgdGhlIGZhY3QgdGhhdCBHQ0dMaW50IGlzIHRoZSBzYW1lIHR5cGUgYXMgaW50MzJfdC4KKyAg
ICAgICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgbm90IGhvbGQgZm9yIGFsbCB0eXBlcyBzdWNo
IGFzIEdDR0xib29sZWFuLgorICAgICAgICAgICAgICAgICAgICAjd2Via2l0X2lwY190eXBlc19j
b252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3JlaW50ZXJw
cmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3
ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gY3BwX3R5cGUuZ2V0X3ZhbHVl
X3R5cGUoKQorICAgIAorICAgICMgVGhlIGlucHV0IHRvIHRoZSBnZW5lcmF0b3JzIGlzIGxpc3Qg
b2YgZnVuY3Rpb25zIHRvIHJlbW90ZS4KKyAgICAjIFJ1biB0aGUgdmFyaW91cyBnZW5lcmF0b3Jz
LgorICAgIGdlbmVyYXRvcnMgPSBbCisgICAgICAgIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9p
cGNfZ2VuZXJhdG9yKGZ1bmNzLCB1bmltcGxlbWVudGVkKSwKKyAgICAgICAgY29udGV4dF9tc2df
d2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgICAgICBjb250ZXh0X2NwcF93ZWJraXRf
aXBjX2dlbmVyYXRvcihmdW5jcyksCisgICAgXQorICAgIGZvciBnIGluIGdlbmVyYXRvcnM6Cisg
ICAgICAgIGcuZ2VuZXJhdGUoKQorCisgICAgaWYgb3B0aW9ucy52ZXJib3NlOgorICAgICAgICBw
cmludCgiSW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIuam9pbihmIiAgICB7c3RyKGkp
fSBmaW5hbFxuIiBmb3IgaSBpbiBmdW5jcykpCisgICAgICAgIHByaW50KCJVbmltcGxlbWVudGVk
OiIpCisgICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAge3N0cih1KX0gZmluYWxcbiIgZm9yIHUg
aW4gdW5pbXBsZW1lbnRlZCkpCisgICAgICAgIHByaW50KGYiSW1wbGVtZW50ZWQ6IHtsZW4oZnVu
Y3MpfSwgdW5pbXBsZW1lbnRlZDoge2xlbih1bmltcGxlbWVudGVkKX0sIHRvdGFsOiB7bGVuKGZ1
bmNzKStsZW4odW5pbXBsZW1lbnRlZCl9IikKKyAgICAgICAgcHJpbnQoIkMrKyB0eXBlIG1hcCB0
byBXZWJLaXQgSVBDIHR5cGUgbWFwOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNwcF90eXBlcy5p
dGVtcygpOgorICAgICAgICAgICAgaWYgdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAg
ICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IC0+IHtzdHIod2Via2l0X2lwY190eXBlc1t0XSl9
IikKKyAgICAgICAgcHJpbnQoIkMrKyB0eXBlcyB3aXRob3V0IFdlYktpdCBJUEMgdHlwZToiKQor
ICAgICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQg
bm90IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0
cih0KX0iKQorICAgICAgICBwcmludCgiV2ViS2l0IElQQyB0eXBlIGNvbnZlcnNpb25zIikKKyAg
ICAgICAgZm9yIChhLCBiKSwgY29udmVydGVyIGluIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVy
cy5pdGVtcygpOgorICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cihhKX0gLT4ge3N0cihiKX0g
OiB7Y29udmVydGVyLl9fbmFtZV9ffSIpCisgICAgICAgIHByaW50KCJEb25lLiIpCisgICAgcmV0
dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KG1haW4o
KSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA0OGI5MzhmYTExZjgxNWQzN2VlODAzNzdmZDY0YjBiYzczZGM4MTQwLi43NjE2
YTdiNzAxMWNkZDFmZjdiOTg2ZjZkMjMyYjEzMTQ5NmJjZTliIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9m
IEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBs
ZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEFkZHMgdGVzdCBleHBl
Y3RhdGlvbnMgZm9yIHRoZSBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkuIERvZXMgbm90IHlldAorICAg
ICAgICBlbmFibGUgdGhlIHRlc3RzIHRoYXQgYWN0dWFsbHkgcGFzcyBidXQgd2hpY2ggd2VyZSBz
a2lwcGVkIGJlZm9yZSB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBn
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTEyLTAxICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVhZGFibGUv
d3JpdGFibGUgdG8gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBhMjI1MjhmYTFiMjY3ODczMTg1MzA1ODAwMzM5MGZkNzUz
N2RjMGM2Li5kYTU2Mzg2Mjg5ZDZjOTRkNGZmYWVjYTg5YWQyYmE5OTNiMTAxNmM5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMxNyw2ICszMTcsMTQgQEAg
aHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYWxsb3dl
ZC13aXRoLWNyZWRlbnRpYWxzLmh0bWwKIGh0dHAvdGVzdHMvd2ViZ2wgWyBTa2lwIF0KIGpzL3No
YXJlZC1hcnJheS1idWZmZXItd2ViZ2wuaHRtbCBbIFNraXAgXQogCit3ZWJraXQub3JnL2IvMjE4
MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLWZhbHNlLmh0bWwgWyBU
aW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8yMTgxODQgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2Uy
RC1tc2UtZmxpcFktdHJ1ZS5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMjE5MzQ5IGZh
c3QvY2FudmFzL3dlYmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5o
dG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMjE5MzQ5IGZhc3QvY2FudmFzL3dlYmdsL3dl
YmdsY29udGV4dGNoYW5nZWRldmVudC5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMjE5
MzUxIGZhc3QvY2FudmFzL3dlYmdsL2dsLXBpeGVsc3RvcmVpLmh0bWwgWyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8yMTkzNTEgZmFzdC9jYW52YXMvd2ViZ2wvcHJlbXVsdGlwbHlhbHBoYS10ZXN0
Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTkzNTIgZmFzdC9jYW52YXMvd2ViZ2wv
bG9zZS1jb250ZXh0LW9uLXN0YXR1cy1mYWlsdXJlLmh0bWwgWyBGYWlsdXJlIF0KKwogd2ViZ3B1
IFsgU2tpcCBdCiAKIGFjY2Vzc2liaWxpdHkvcHJlc3Mtd29ya3Mtb24tY29udHJvbC10eXBlcy5o
dG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415129</attachid>
            <date>2020-12-01 04:44:26 -0800</date>
            <delta_ts>2020-12-01 05:58:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201144422.patch</filename>
            <type>text/plain</type>
            <size>568686</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAz
Nzg5YWEzODM5NDBkMjU3NDEyNGJjMmZmNDNlN2VlYzRhZTk1MGQ1Li5jMDcwYmQzNjZmOGZiOWJj
NjU4ZWNkZDVjYzk3YzJiMTZkNWY2ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNDYsNiAr
MTI0Niw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFl
ZDhlYWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgyZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1
ODk3MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCAr
MzExLDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZDFhMzVjYzAwOGFlYTY5ZmZmMmNk
OTFkMDIzMmVmYTA3MWU3ZWQ1NC4uOTgxMTVlMTViNzYzNDk2MWFjMzkwZGIyM2Q1MzBiNzNkMjVk
NTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzIsNiArMTk3Miw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDY2ODc1MmM3OTUyNmJjNmNkMTQzYzJl
ZjY1OTZmMTRjN2IwNzMzZWQuLmJiNGJhZDg3ZGZjYWU0MGI3ZmU0ZDAwYjBmY2UyNDFlZmZiOWQ1
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzU3LDEyICszNTcsMTQgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMjIyZWQ2
Y2MyNGU2ZTY2ODg2MGY3NGNjOWVkZDg0YjNkOWRkYzMwLi45NTMxYjQ5MjcxZDBkNDAxYWQ4MjI3
OTFmODRlZmQ4NjU3ZDY2YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDUyLDcgKzIwNTIsNyBAQAogCQk2RTQ3RTY2MTEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFC
Q0Q1MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFE
MjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEw
MEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgw
RThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lv
bnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0
MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURD
RDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMw
MEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRl
bXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjQ2LDYgKzIyNDYsOCBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDEx
NDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4
MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3
NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkw
NkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDIyMyw5ICsxMDIyNSwxNCBAQAogCQk3
QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0Ix
NjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBD
NzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDgg
LyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFG
M0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3Bw
LmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJF
RjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNGMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5l
cmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjY2MTMsNiArMjY2MjAsOCBAQAogCQkJCTA3NEU4MkI5MThBNjlG
MEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmggKi8sCisJCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKKwkJCQk3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkw
NzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJ
CTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJ
CTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0yNjc3
OSw2ICsyNjc4OCw4IEBACiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKIAkJCQlCNTMyMEQ2QTEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0Mw
MDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKKwkJCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
LAorCQkJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4
NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLApAQCAtMjY3OTAsNiArMjY4MDEsNyBA
QAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3Bl
bkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLAogCQkJCUNERUIz
RDcyMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovLAogCQkJCUNE
RUIzRDczMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCAqLywKIAkJCQlD
RDhGNjY3MDI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8s
CkBAIC0zMjA4OSw2ICszMjEwMSw3IEBACiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcy
MUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQw
MDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQw
MjUsNiArMzQwMzgsNyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQw
MEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlB
MjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5
MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3Rl
UGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAv
KiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCAxZGJkMDU1ZDc4MTUzY2ZkNWM3MTc0NTk3ZjA2ZTBlNTA5
ZTc4ZmFhLi4yZjhjYmYwODcwNTBjNWYwODY4MGYyZWQ5N2QxZjMwODg2NjFhMDExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtNjc3LDIxICs2NzcsMTIgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJn
ZXRCdWZmZXJTdWJEYXRhIiwgIlBhcmFtZXRlcnMgd291bGQgcmVhZCBvdXRzaWRlIHRoZSBib3Vu
ZHMgb2YgdGhlIHNvdXJjZSBidWZmZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAK
KwogICAgIGlmICghY29weUxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0
LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAvLyBGSVhNRTogQ29hbGVzY2UgbXVsdGlwbGUgZ2V0QnVmZmVyU3ViRGF0YSgpIGNhbGxz
IHRvIHVzZSBhIHNpbmdsZSBtYXAoKSBjYWxsCi0gICAgdm9pZCogcHRyID0gbV9jb250ZXh0LT5t
YXBCdWZmZXJSYW5nZSh0YXJnZXQsIGNoZWNrZWRTcmNCeXRlT2Zmc2V0LnVuc2FmZUdldCgpLCBz
dGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGNoZWNrZWRDb3B5TGVuZ3RoUHRyLnVuc2FmZUdldCgp
ICogY2hlY2tlZEVsZW1lbnRTaXplLnVuc2FmZUdldCgpKSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1B
UF9SRUFEX0JJVCk7Ci0gICAgaWYgKHB0cikKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNo
YXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRz
dE9mZnNldCAqIGVsZW1lbnRTaXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7Ci0K
LSAgICBpZiAoIW1fY29udGV4dC0+dW5tYXBCdWZmZXIodGFyZ2V0KSkKLSAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0QnVm
ZmVyU3ViRGF0YSIsICJGYWlsZWQgd2hpbGUgdW5tYXBwaW5nIGJ1ZmZlciIpOwotI2VuZGlmCi0g
ICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBtX2Nv
bnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzcmNCeXRlT2Zmc2V0LCBtYWtlR0NHTFNw
YW4oc3RhdGljX2Nhc3Q8Y2hhcio+KGRzdERhdGEtPmJhc2VBZGRyZXNzKCkpICsgZHN0RGF0YS0+
Ynl0ZU9mZnNldCgpICsgZHN0T2Zmc2V0ICogZWxlbWVudFNpemUsIGNvcHlMZW5ndGggKiBlbGVt
ZW50U2l6ZSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlcikKQEAgLTE3MDIs
NyArMTY5Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1
aXYoR0NHTHVpbnQgaW5kZXgsIFVpbnQzMkxpc3QmJiBsaXN0CiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTR1
aXYiLCAibm8gYXJyYXkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlu
dCBzaXplID0gbGlzdC5sZW5ndGgoKTsKICAgICBpZiAoc2l6ZSA8IDQpIHsKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0ZXhB
dHRyaWJJNHVpdiIsICJhcnJheSB0b28gc21hbGwiKTsKQEAgLTE5NjcsOSArMTk1OCw3IEBAIFdl
YkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVyKFdlYkdMUXVl
cnkmIHF1ZXJ5LCBHQ0dMZW51bSBwCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVp
dihxdWVyeS5vYmplY3QoKSwgcG5hbWUsICZyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0
dWkocXVlcnkub2JqZWN0KCksIHBuYW1lKSk7CiB9CiAKIFJlZlB0cjxXZWJHTFNhbXBsZXI+IFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjAxNCw3ICsyMDAzLDcg
QEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0
LCBXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAodW5pdCA+PSBtX2JvdW5kU2Ft
cGxlcnMuc2l6ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX1ZBTFVFLCAiYmluZFNhbXBsZXIiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQi
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1OSwxNyArMjA0OCwxMSBAQCBXZWJHTEFueSBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyKFdlYkdMU2FtcGxlciYgc2Ft
cGxlciwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRF
UjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUjoKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUzoKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX1dSQVBfVDogewotICAgICAgICBpbnQgdmFsdWUgPSAwOwotICAgICAg
ICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLm9iamVjdCgpLCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+
Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDoKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6IHsKLSAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwotICAg
ICAgICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyLm9iamVjdCgpLCBw
bmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6CisgICAgICAgIHJldHVybiBtX2NvbnRl
eHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIub2JqZWN0KCksIHBuYW1lKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9FTlVNLCAiZ2V0U2FtcGxlclBhcmFtZXRlciIsICJJbnZhbGlkIHBuYW1lIik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjExOCw3ICsyMTAxLDcgQEAgR0NHTGVudW0gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMoV2ViR0xTeW5jJiBzeW5jLCBHQ0dMYml0
ZmllbGQgZmwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfT1BFUkFUSU9OLCAiY2xpZW50V2FpdFN5bmMiLCAidGltZW91dCA+IE1BWF9DTElFTlRf
V0FJVF9USU1FT1VUX1dFQkdMIik7CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6
V0FJVF9GQUlMRURfV0VCR0w7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGZsYWdzICYmIGZsYWdz
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImNs
aWVudFdhaXRTeW5jIiwgImludmFsaWQgZmxhZ3MiKTsKICAgICAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dEdMOjpXQUlUX0ZBSUxFRF9XRUJHTDsKQEAgLTIxNzksOSArMjE2Miw5IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjayogZmVlCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICFmZWVkYmFja09iamVjdCB8fCBmZWVkYmFja09iamVjdC0+aXNEZWxldGVkKCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tPYmplY3Qp
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQoZmVlZGJhY2tPYmplY3QgIT0g
bV9kZWZhdWx0VHJhbnNmb3JtRmVlZGJhY2spOwotICAgIAorCiAgICAgaWYgKGZlZWRiYWNrT2Jq
ZWN0LT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgImF0
dGVtcHQgdG8gZGVsZXRlIGFuIGFjdGl2ZSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0Iik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTIyNDgsNyArMjIzMSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIGlmICghVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ByaW1pdGl2ZU1vZGUocHJp
bWl0aXZlTW9kZSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImJlZ2luVHJhbnNmb3JtRmVlZGJhY2siLCAiaW52YWxpZCB0cmFu
c2Zvcm0gZmVlZGJhY2sgcHJpbWl0aXZlIG1vZGUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjI4
OCw3ICsyMjcxLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1G
ZWVkYmFjaygpCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX09QRVJBVElPTiwgImVuZFRyYW5zZm9ybUZlZWRiYWNrIiwgInRyYW5zZm9ybSBmZWVk
YmFjayBpcyBub3QgYWN0aXZlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAg
ICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CiAKICAgICBtX2JvdW5kVHJhbnNm
b3JtRmVlZGJhY2stPnNldFBhdXNlZChmYWxzZSk7CkBAIC0yMjk5LDcgKzIyODIsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoV2ViR0xQ
cm9ncmFtJiBwcm9ncmFtLCBjbwogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3MiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHN3aXRjaCAoYnVm
ZmVyTW9kZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNFUEFSQVRFX0FUVFJJQlM6
CiAgICAgICAgIGlmICh2YXJ5aW5ncy5zaXplKCkgPiBtX21heFRyYW5zZm9ybUZlZWRiYWNrU2Vw
YXJhdGVBdHRyaWJzKSB7CkBAIC0yNDg1LDI0ICsyNDY4LDI0IEBAIFdlYkdMQW55IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwg
Y29uc3QKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdM
UHJvZ3JhbU9yU2hhZGVyKCJnZXRBY3RpdmVVbmlmb3JtcyIsICZwcm9ncmFtKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRp
Y2VzLnNpemUoKSwgMCk7Ci0gICAgCiAgICAgc3dpdGNoIChwbmFtZSkgewotICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fVFlQRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRBY3Rp
dmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUsIHJlc3Vs
dCk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9UWVBFOiB7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVj
dCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcChb
XShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xlbnVtPih4KTsgfSk7Ci0gICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9TSVpFOgotICAgICAgICBtX2NvbnRleHQtPmdl
dEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwg
cmVzdWx0KTsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9TSVpF
OiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhw
cm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4g
cmVzdWx0Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50Pih4KTsg
fSk7CisgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfSU5E
RVg6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9PRkZTRVQ6CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9BUlJBWV9TVFJJREU6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9NQVRSSVhfU1RSSURFOgotICAgICAgICBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKLSAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lTX1JPV19NQUpPUjoKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5h
bWUsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1z
KHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6IHsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZv
cm1JbmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeCk7IH0pOworICAgIH0KICAgICBkZWZhdWx0Ogog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVN
LCAiZ2V0QWN0aXZlVW5pZm9ybXMiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTM1NzIsOCArMzU1NSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHCiAKICAgICBjbGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKIAotICAg
IEdDR0xzaXplaSBsZW5ndGgsIGNvbHVtbnMsIHJvd3M7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkucmVhZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIDAsICZsZW5ndGgsICZjb2x1bW5zLCAmcm93cywgcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4ob2Zmc2V0KSwgdHJ1ZSk7CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEFycmF5QnVmZmVyVmlldyYgZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAppbmRleCAyZTAzYTg5ZmM2OTUzZDIwMDA4MmYyNDk1NDk3NjNiZTA1YTk2MTk1Li43
ODQ0YWRlMzMyYjE0YzJjMDJjYmIyNGYyMjM2ZjdkYWY1ZTcyMGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cApAQCAtNzMyLDggKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgICAgIHJl
bmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gcmVuZGVy
aW5nQ29udGV4dDsKICAgICB9Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpOworICAgIGF1dG8gY29udGV4
dCA9IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdyk7CiAg
ICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNFbGVtZW50KSB7CiAgICAgICAg
ICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVudCwKQEAgLTQzOTUs
MTUgKzQzOTQsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB2b2lkKiBkYXRhID0g
cGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0gICAgR0NHTHNpemVpIGxl
bmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAgIEdDR0xzaXplaSByb3dz
ID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVzdEFO
R0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgo
KSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7CisgICAgbV9jb250ZXh0
LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dM
U3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmIChtX2lzUm9i
dXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
cmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMu
Ynl0ZUxlbmd0aCgpLCBkYXRhKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29udGV4dC0+cmVhZFBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICBt
X2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
bWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVuZ3RoKCkpKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAppbmRleCA0YTQyMGJmMGExMTZj
Y2NhYjVkYjg3YTI2ZDhiYTI0MjgyOGYyZDU1Li44OWE2M2UzNjIxNzEyMjRiNDEzYTQ5NTQyMzEy
ZTM4MzZiNmViYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBXZWJHTFN5bmM6OnVwZGF0ZUNhY2hlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYWxsb3dD
YWNoZVVwZGF0ZSA9IGZhbHNlOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
U3luY2l2KG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTLCBzaXplb2YobV9z
eW5jU3RhdHVzKSwgJm1fc3luY1N0YXR1cyk7CisgICAgbV9zeW5jU3RhdHVzID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaShtX3N5bmMsIEdyYXBoaWNzQ29udGV4dEdMOjpT
WU5DX1NUQVRVUyk7CiAgICAgaWYgKG1fc3luY1N0YXR1cyA9PSBHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdOQUxFRCkKICAgICAgICAgc2NoZWR1bGVBbGxvd0NhY2hlVXBkYXRlKGNvbnRleHQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDRkYWEzNGNjMmQ1ZDA3OTYyZWUxYTYxYzgyNTNi
ZWI2YTk0NjU0NmMuLmMyYTY5Yjg2YmMzMTgxNjdhMzMyY2ZmZjZkZWFmNGNmOGIyOWYzNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUzMCw2ICs1MzAsMTMgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW8KICAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IENocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5jcmVh
dGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBkaXNwbGF5SUQoKSk7Cit9CisjZW5kaWYK
KwogUGxhdGZvcm1EaXNwbGF5SUQgQ2hyb21lOjpkaXNwbGF5SUQoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BhZ2UuZGlzcGxheUlEKCk7CkBAIC01NDMsNiArNTUwLDcgQEAgdm9pZCBDaHJvbWU6
OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9wdGlv
bmFsPHVuc2lnbmUKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwg
bm9taW5hbEZyYW1lSW50ZXJ2YWwpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoR1JB
UEhJQ1NfQ09OVEVYVF9HTCkKKyAgICAvLyBUT0RPOiBHUFUgcHJvY2Vzcy4gQ2hhbmdlIHRvIEdD
R0xNYW5hZ2VyLCBtYWtlIGl0IHdvcmssIHJldHVybiBudWxsIGZvciBvdGhlcnMuCiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NyZWVuRGlkQ2hh
bmdlKGRpc3BsYXlJRCwgdGhpcyk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDIz
MzI4ZjU2YTE5MTIwNDlkNDc5NzY0MWQwMTQwMDU1MTU5MDM1MDIuLmE4OWRkMWExZDg2NWU1MzI4
ZWIwNTA1NzY1NDBkM2YyMzJhM2NmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtODYsNiArODYs
MTAgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlk
ZTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYp
IGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggM2E5ZTFkNjY5MDk3ZTU5NWQ5YjU3ZmM0Y2ZmN2U2MWE1
ZDE4ZDBhOS4uOGYxOGZkZmYwNDk5MDM3NTg5OGIxN2I5MjhjYzBlMDYwMGU5MWM3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMjUsNiArMzI1LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAorI2lmIEVOQUJM
RShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgor
CiAgICAgLy8gUGFzcyBudWxscHRyIGFzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRldGF0Y2ggdGhl
IHJvb3QgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZy
YW1lJiwgR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVmlld092
ZXJsYXlHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKaW5kZXggNDNkYjFmZmFlMDEyYmIyMTg5NGYyY2E5NjMwNzIxNDc2NmFh
ZGQ5ZS4uNzM4MTE4YjIxZTNjMzM3YjJlNTMxYzk5NmQwOTliZDNlOWE1NjliMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSAiV2lkZ2V0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYzLDYgKzY0LDEwIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0ID0g
MDsKKyNlbmRpZgorCiAgICAgLy8gTWV0aG9kIGZvciByZXRyaWV2aW5nIHRoZSBuYXRpdmUgY2xp
ZW50IG9mIHRoZSBwYWdlLgogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3Jt
UGFnZUNsaWVudCgpIGNvbnN0ID0gMDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKaW5kZXggYTIyNTNjODFiZmUwYTBiYjA5
MTBiZGU2YzBkYjI2YWE3ODQ1MmZiMy4uN2FmYmE2ZWM1MDg4MTljYzFlYWJhZGNjZGUwYmI3OWE4
Mzg0MmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmgKQEAgLTM0LDEzICszNCwxNiBAQCBXRUJDT1JFX0VYUE9SVCBpbnQgcHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKICNpZiBQTEFURk9STShXSU4pCiBpbmxpbmUgYm9v
bCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc0luR1BV
UHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZWxpZiAhUExBVEZPUk0oQ09DT0EpCiBpbmxp
bmUgYm9vbCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBib29sIGlz
SW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAKIGJvb2wgaXNJbldlYlByb2Nlc3MoKTsKK2Jvb2wgaXNJbkdQVVByb2Nlc3MoKTsK
IGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNzKCk7CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3NDb2NvYS5tbQppbmRleCBmYmQxZDQzYzA4Zjg2ZGMzYzE4ZWQyMTU2MGYwOGNmODdmYTFhZjM5
Li5iMDZmZjQ3ZGZjNTQxNzIxZjY0YWEwZGUzOGIzYjkyZjg4MzgyNDZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3NDb2NvYS5tbQpAQCAtOTYsNiArOTYsMTIgQEAgYm9vbCBpc0luV2ViUHJvY2Vzcygp
CiAgICAgcmV0dXJuIG1haW5CdW5kbGVJc1dlYlByb2Nlc3M7CiB9CiAKK2Jvb2wgaXNJbkdQVVBy
b2Nlc3MoKQoreworICAgIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc0dQVVByb2Nlc3MgPSBbW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBoYXNQcmVmaXg6QCJjb20uYXBw
bGUuV2ViS2l0LkdQVSJdOworICAgIHJldHVybiBtYWluQnVuZGxlSXNHUFVQcm9jZXNzOworfQor
CiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgc3RhdGljIGJvb2wgbWFpbkJ1bmRs
ZUlzTmV0d29ya1Byb2Nlc3MgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSBoYXNQcmVmaXg6QCJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmciXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMjYyN2E5
YjdmNDQ2NTEwY2RjMDM0MWRiODY3MzQ0NzQ5NTE0N2I4OC4uNDFhZGQ3MzhkZGVhMjIyNDZkMGI5
YjA2Nzc5MzQ1ZGQ2MDk5ZGMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI2Nyw3ICsyNjcsMTAgQEAgcHVibGljOgogICAgIC8v
IEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOwogCi0gICAgLy8gV2ViR0wgZnVu
Y3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgorICAgIC8v
IEdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFID0gMHg5M0E4OworCisgICAgLy8gV2ViR0wg
ZnVuY3Rpb25zLgogCiAgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKICAgICAvLyBOb3RlOiBUaGlz
IG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZlcnMgZnJvbSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKQEAg
LTI3OSwxMCArMjgyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2Js
aXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3Jj
WTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcg
ZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0
ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBs
ZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpID0gMDsKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgdmlydHVh
bCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwpAQCAtMjk2LDE1
ICsyOTksMTUgQEAgcHVibGljOgogICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAv
IEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291
bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwg
R0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBHTF9BTkdM
RV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0
QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBH
Q0dMdm9pZCogcGl4ZWxzKSA9IDA7CkBAIC0zMzIsNyArMzM1LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wg
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CkBA
IC0zNTUsNyArMzU3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VY
VChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
dm9pZCogZGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxv
YXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
KiBwYXJhbXMpID0gMDsKLSNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKQEAgLTM2Nyw2ICszNjgsNyBAQCBwdWJs
aWM6CiAgICAgLy8gdGhhdCBtdXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQg
dGhlc2UgZmxhZ3Mgb24gc3VjaCBjb25maWd1cmF0aW9ucy4KICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKKyNlbmRpZgogCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5jcHAKaW5kZXggZGY0YTExOWEzMjBkYWM2YWViNjMwNmQ0YzUwOTU1MTU4OGExOTcz
ZS4uMzRkNTU2YjBjYzRhOWJiMWFlYTdhNWE5NjhiYzY5NWIzYTJlMjc4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNw
cApAQCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgi
CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIAogI2luY2x1ZGUgIkV4dGVuc2lv
bnNHTC5oIgogI2luY2x1ZGUgIkZvcm1hdENvbnZlcnRlci5oIgorI2luY2x1ZGUgIkhvc3RXaW5k
b3cuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTQwMyw2ICs0MDUsMTUgQEAgc3RhdGljIGJvb2wgcGFj
a1BpeGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLCBHcmFwaGljc0NvbnRleHRHTDo6RGF0
YUZvcm1hdAogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTD4gcmVzdWx0OworICAgIGlmIChob3N0V2luZG93KQorICAgICAgICBy
ZXN1bHQgPSBob3N0V2luZG93LT5jcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQogCiBHcmFwaGljc0NvbnRleHRHTDo6R3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dHJzLCBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250
ZXh0R0wqKQogICAgIDogbV9hdHRycyhhdHRycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGM4ZTI3OWYzOTNiNmNh
ODEyM2ZjZWVmN2M4OWIxMjVjNTJkYzZlZjMuLmJhNzJiMzFhZDY1ODViNGE5YmI1ZDZhZGVmYzFi
ZjEzZGY1ZjNiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTksNiArNTksOCBAQCBjbGFzcyBJbWFnZURhdGE7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWOwogI2VuZGlmCiAKKworLy8gQmFzZSBjbGFzcyBm
b3IgZ3JhcGhpY3MgY29udGV4dCBmb3IgaW1wbGVtZW50aW5nIFdlYkdMIHJlbmRlcmluZyBtb2Rl
bC4KIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3ND
b250ZXh0R0w+IHsKIHB1YmxpYzoKICAgICAvLyBXZWJHTCAxIGNvbnN0YW50cy4KQEAgLTkxMSwx
NCArOTEzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgR0NHTGludCBzaXplOwogICAgIH07CiAKKyAg
ICAvLyBDcmVhdGVzIGEgR3JhcGhpY3NDb250ZXh0R0wgaW5zdGFuY2UgdG8gcmVuZGVyIGludG8g
b2Zmc2NyZWVuIGRlc3RpbmF0aW9uIGluIGNvbnRleHQgb2YgSG9zdFdpbmRvdy4KKyAgICAvLyBI
b3N0V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFja2VuZCBpcyB0byBi
ZSB1c2VkLgorICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBIb3N0V2luZG93Kik7CisKICAgICBHcmFw
aGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIERlc3RpbmF0aW9uID0g
RGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0wqIHNoYXJlZENvbnRleHQg
PSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTCgpID0gZGVmYXVsdDsK
IAogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5hZGQoJmNs
aWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVu
dHMucmVtb3ZlKCZjbGllbnQpOyB9CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0
IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCi0KKyAgICAvLyBXZWJHTCBmdW5jdGlv
bnMuCiAgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kQXR0
cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOwpAQCAtOTgwLDcgKzk4NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlVW5pZm9y
bShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3Jt
R0xPYmplY3QqIHNoYWRlcnMpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIApAQCAt
MTAyNSwxMCArMTAyOSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRVbmlm
b3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAK
LSAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpID0gMDsKLQogICAg
IHZpcnR1YWwgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBoaW50KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gbW9kZSkgPSAwOwpAQCAtMTEwMCw3ICsxMTAwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWQqIGRhdGEpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsICBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkgPSAwOwpAQCAtMTEyNCw4ICsxMTI1LDcgQEAgcHVibGljOgogICAgIC8vID09PT09
PT09PT0gV2ViR0wgMiBlbnRyeSBwb2ludHMuCiAKICAgICB2aXJ0dWFsIHZvaWQgY29weUJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xp
bnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNp
emUpID0gMDsKLSAgICB2aXJ0dWFsIEdDR0x2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0Zmll
bGQgYWNjZXNzKSA9IDA7Ci0gICAgdmlydHVhbCBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7
CkBAIC0xMTg3LDcgKzExODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuZFF1ZXJ5
KEdDR0xlbnVtIHRhcmdldCkgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBnZXRR
dWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAgICAgLy8gZ2V0UXVl
cnlQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgPSAwOworICAg
IHZpcnR1YWwgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVNhbXBsZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7CkBAIC0xMTk2LDggKzExOTYsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGZsb2F0IHBhcmFtKSA9IDA7CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAg
IHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBn
ZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwg
R0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdz
KSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMpID0gMDsKQEAg
LTEyMDUsNyArMTIwNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGNsaWVudFdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZs
YWdzLCBHQ0dMaW50NjQgdGltZW91dCkgPSAwOwogICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U3luY2l2KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdl
dFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSA9IDA7CkBA
IC0xMjIyLDcgKzEyMjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXJS
YW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1
ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSA9IDA7CiAgICAgLy8g
Z2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1c2UgZ2V0UGFyYW1ldGVyIGNhbGxzIGFib3ZlLgogICAg
IHZpcnR1YWwgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUs
IFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8R0NHTGlu
dD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0
b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAg
IHZpcnR1YWwgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpID0gMDsKICAgICAvLyBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKQEAgLTEyMzAsNyArMTIzMCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tC
aW5kaW5nKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpID0gMDsKLQorICAgIAogICAgIC8vIE90aGVy
IGZ1bmN0aW9ucy4KICAgICBHQ0dMZmxvYXQgZ2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpOwogICAg
IEdDR0xib29sZWFuIGdldEJvb2xlYW4oR0NHTGVudW0gcG5hbWUpOwpAQCAtMTM5NCw3ICsxMzk0
LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6OmdldEFjdGl2ZVVuaWZvcm1C
bG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1cm4gdmFsdWVbMF07CiB9CiAK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKaW5kZXggODVjMjlhNGI2ZTU2
MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3NjhlY2M0YmYwMmI3NjI1YTZm
MWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQgR0NHTHVpbnQ7CiB0eXBlZGVm
IGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0NHTGhhbGZmbG9hdDsK
IHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKKwor
Ly8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0Y2ggdGhlIEdMIHR5cGVzIGFz
IGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZpbGUgZm9yIGFsbCBwbGF0Zm9y
bXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBlZGVmIGludHB0cl90IEdDR0xz
aXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVkZWYgaW50cHRyX3QgR0NHTHZv
aWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdDR0xzeW5jOwot
dHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmpl
Y3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmpl
Y3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4K
K2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW47CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0IEdDR0xTcGFuIHsKLSAgICBl
eHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJh
eSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0YShhcnJheSkKLSAgICB7IH0K
KyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAg
IH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAgICAgICAgIDogZGF0YShhcnJh
eSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBHQ0dMU3BhbiB7CiAgICAgR0NH
TFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0g
bnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAgICAgeyB9CisgICAgR0NHTFNw
YW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRh
dGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6OmFycmF5PFQsIEV4dGVudD4m
IGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQogICAgIFQmIG9w
ZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBpIDwgYnVmU2l6ZSk7
IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkgeyBSRUxFQVNFX0FTU0VSVChk
YXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBUKiBkYXRhOwpAQCAtNzksNyAr
OTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0
cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7Citz
dHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50PiB7CiAgICAgR0NHTFNwYW4o
VCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgICAg
ICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDExIEBAIHN0cnVjdCBHQ0dMU3Bh
bjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKICAgICAgICAgLCBidWZT
aXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9y
PFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkp
CisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXplb2YoVSkpCisgICAgeyB9CiAg
ICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7CiB9OwpAQCAtMTUy
LDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQs
IE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAt
PiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorR0NHTFNwYW4o
c3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihXVEY6OlZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIEdD
R0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMwZjJmMzA2OGZmMDI5
MWFmNWJlNjBhNWM1ZjZlMWVlYjdhNGFmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNw
cApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJz
KQoreworICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgPSBkZWZh
dWx0OworCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gMDsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworRXh0
ZW5zaW9uc0dMJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9u
cygpCit7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQoreworfQorCitHcmFwaGlj
c0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
eyB9OworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMy
Q29tcGxpYW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0ZXMoKS5pc1dl
YkdMMjsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0Nv
bnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogVGhlIGNhbGxlciBzaG91bGQgdHJhY2sg
dGhpcyBzdGF0ZS4KKyAgICBpZiAobV9sYXllckNvbXBvc2l0ZWQpCisgICAgICAgIG5vdGlmeU1h
cmtDb250ZXh0Q2hhbmdlZCgpOworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0
ZWQoKQoreworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1ZTsKKyAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBpZiAoIWF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
cikgeworICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0cnMuZGVwdGgpCisgICAgICAgICAgICBt
X2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJ
VDsKKyAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpCisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1
dG9DbGVhciB8PSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgIH0K
KyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAg
ICBjbGllbnQtPmRpZENvbXBvc2l0ZSgpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xh
eWVyQ29tcG9zaXRlZDsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCBidWZmZXJzKQoreworICAgIGlm
ICghY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgICAgIG1f
YnVmZmVyc1RvQXV0b0NsZWFyID0gYnVmZmVyczsKK30KKworR0NHTGJpdGZpZWxkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9DbGVhcjsKK30KKworYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCit7Cisg
ICAgLy8gUmVkZWNsYXJlZCBmb3IgZXhwb3J0IHJlYXNvbnMuCisgICAgLy8gRklYTUU6IFRoZSB3
aG9sZSBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICBHcmFwaGljc0NvbnRleHRHTDo6
ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3
YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJs
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7Cisg
ICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJs
ZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQobmFtZSk7CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworICAg
IH0KK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVk
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVk
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lv
bnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKQoreworICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZm9yIChhdXRvJiBleHRl
bnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRp
YWxpemUoKQoreworfQorCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisjZW5kaWYKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40Y2U4YTA5MTRkOGU4ZTI5ZTJkMjgzMTI1MDRjNGViMzIwYjExOWMxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiRXh0ZW5z
aW9uc0dMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExB
VEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZiBQ
TEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgV2ViR0xMYXllcjsKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluOworI2VuZGlmCisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgcHJveHkgc2lkZSBpbXBsZW1lbnRhdGlvbgorLy8gVGhpcyBp
bXBsZW1lbnRzIHRoZSBwYXJ0cyB0aGF0IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0
aW9uYWxpdHk6CisvLyAtIERyYXdpbmcgYnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCisvLyAt
IENvbXBvc2l0aW5nIHN1cHBvcnQuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4
dGVuc2lvbnNHTCB7CitwdWJsaWM6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0
R0w6OmlzRW5hYmxlZDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRm
b3JtVGV4dHVyZSgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5h
bDsKKyAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNv
bXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihH
Q0dMYml0ZmllbGQpIGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xl
YXIoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyhJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CisKKyNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0
R0xDViogYXNDVigpIGZpbmFsOworI2VuZGlmCisgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3Zl
cnJpZGVzLgorICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOworICAgIGJvb2wgc3Vw
cG9ydHMoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxh
YmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAg
IHZpcnR1YWwgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2Fw
Q2hhaW4oKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXpl
KCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKKyNlbmRpZgorCisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXpl
ZCgpLgorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFz
aFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJp
bmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIg
Y2xlYXIgdHJhY2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBt
X2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1
dG9DbGVhciA9IHsgMCB9OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
aW5kZXggMjgzZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2ZkODIzZDA4MWM1NWU0YS4uN2MxNTFmYTI4
NTBmMzNjMTQ5YTlkYzgyMjM4MWI4ZmNiZGU5Y2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cApAQCAtNDYsMjggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRXh0ZW5zaW9uc0dMQU5H
TEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBi
b29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0
ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9pc05WSURJ
QShmYWxzZSkKLSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0g
ICAgLCBtX2lzSW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemUoZmFsc2UpCiAgICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdl
dFN0cmluZykKIHsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwgcmVtb3ZlIHRoaXMgaW5pdGlhbGl6
YXRpb24gYWx0b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJzdW1lcyB0aGUgcmVzcG9uc2liaWxp
dHkgZm9yIGdyYXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4KLSAgICBtX3ZlbmRvciA9IFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1ZFTkRPUikp
KTsKLSAgICBtX3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsOjpHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2ZW5k
b3JDb21wb25lbnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgn
ICcpOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJudmlkaWEiKSkKLSAgICAg
ICAgbV9pc05WSURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMo
ImF0aSIpIHx8IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIpKQotICAgICAgICBtX2lz
QU1EID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW50ZWwiKSkK
LSAgICAgICAgbV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250
YWlucygiaW1hZ2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0aW9uID0gdHJ1ZTsKIH0K
IAogRXh0ZW5zaW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKQEAg
LTEwMyw3ICs4Myw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OmlzRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1pbnQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQorR0xpbnQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7CiB9CkBAIC0xMTQsMTAgKzk0LDExIEBAIFN0cmlu
ZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGludCBz
b3VyY2VMZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVE
X1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKKwogICAgIGlmICghc291cmNlTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNv
dXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUg
aW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwor
ICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwogICAgIGdsOjpHZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFt
ZS5kYXRhKCkpOwogICAgIGlmICghcmV0dXJuZWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwpAQCAtMTQ3LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omlu
aXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxl
RXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFt
ZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBs
b25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBs
b25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKQEAgLTE1Niw3ICsxMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpi
bGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZwog
ICAgIGdsOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwg
ZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFs
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzUsNyArMjE2
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGJ1ZnMpCiAgICAgZ2w6OkRyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwg
YnVmcy5kYXRhKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQzLDE1ICsyMjQsMTUgQEAgdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2kKICAgICBnbDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZp
cnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKKyAgICBnbDo6RHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVy
dGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM1MCw3ICszMzEsNyBAQCB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRl
eCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0MTIs
NyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUocG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM5LDcgKzQyMCw3IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC00NTYs
NTUgKzQzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpCiAgICAgZ2w6OkdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwog
fQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotc3RhdGljIHZv
aWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNp
Z25lZCBjaGFyKiBwaXhlbHMpCi17Ci0gICAgLy8gV2UgY2FuIGFzc3VtZSB0aGlzIGRvZXNuJ3Qg
b3ZlcmZsb3cgYmVjYXVzZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMKLSAgICAvLyB1c2UgY2hlY2tl
ZCBhcml0aG1ldGljLgotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0Owot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBwaXhl
bHNbaSArIDNdID0gMjU1OwotfQotI2VuZGlmCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJl
YWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAq
cm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRy
aXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBj
YWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCi0gICAgZ2w6OkZsdXNo
KCk7Ci0gICAgYXV0byBhdHRycyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKLSAg
ICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1fY29udGV4dC0+bV9pc0ZvcldlYkdMMiA/
IEdyYXBoaWNzQ29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSOwotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGlj
c0NvbnRleHRHTFN0YXRlJiBzdGF0ZSA9IG1fY29udGV4dC0+bV9zdGF0ZTsKLSAgICBpZiAoYXR0
cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlz
YW1wbGVGQk8pIHsKLSAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVj
ZXNzYXJ5KEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgICAgICBnbDo6QmluZEZy
YW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fZmJvKTsKLSAgICAgICAg
Z2w6OkZsdXNoKCk7Ci0gICAgfQotICAgICh2b2lkKSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHks
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCBy
b3dzLCBkYXRhKTsKLSAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKLSAgICBpZiAo
YXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVs
dGlzYW1wbGVGQk8pCi0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJn
ZXQsIG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgLy8gQU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNS
b2J1c3RBTkdMRSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKLSAgICAgICAgLy8gc3lu
dGhldGljIGVycm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93
LgotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBpZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYmICFhdHRycy5hbHBoYSAm
JiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVE
X0JZVEUpICYmIChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX2ZibyB8fCAoYXR0
cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlz
YW1wbGVGQk8pKSkKLSAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhl
aWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKLSNlbmRpZgotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC01MTIsNyArNDQ1LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNTIwLDcgKzQ1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sCiAg
ICAgZ2w6OkdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQordm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBhNzcz
MWRmZDIwYzVmMDNhMzM1OTAzZmFhNmUzOGZmNzJmNGIyMzIzLi5jYmY0OThiZDdjMWExYWI5YWE2
YjcwZmI1ZDM4YWM0YjkyZmIwMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTU2LDIxICs1
NiwxMiBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZm
ZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBk
c3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBt
YXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
c2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0
aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVm
ZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NH
TGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwg
R0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJh
d0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KSBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lz
TlZJRElBOyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0K
LSAgICBib29sIGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBi
b29sIGlzSW1hZ2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0K
LSAgICBTdHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAg
IGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVy
biBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJl
c1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQorICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpIG92ZXJyaWRlOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1v
cnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVp
ICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CkBAIC05
Nyw3ICs4OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEs
IGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsK
QEAgLTEzMCwxOCArMTIwLDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0
byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCog
bV9jb250ZXh0OwogCi0gICAgYm9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAg
ICBib29sIG1faXNJbnRlbDsKLSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1f
cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsKLQogICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3Ry
aW5nIHsgZmFsc2UgfTsKIAotICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5k
ZXJlcjsKLQogICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBv
aW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29s
IG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xD
b2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwCmluZGV4IDEyN2EzYjhkYmEzYzNmNDRjZDc2NWRkOGZjNzExY2RkODc4ZGU5YTQuLjFk
NjA0YjcxZDQ4MTRmNTk3YzJjMmZjODllZGM5NjQ4ZGMxM2M3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwCkBAIC00NDMsMzIgKzQ0Myw1MyBAQCBFeHRlbnNpb25zR0wmIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICAgICByZXR1cm4gKm1fZXh0
ZW5zaW9uczsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgZGF0YS5kYXRhLCBmYWxzZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRl
cnByZXRfY2FzdDxHQ0dMdm9pZCo+KG9mZnNldCksIHRydWUpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSog
Y29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9Q
aXhlbEJ1ZmZlck9iamVjdCkKIHsKLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVz
aCBjYWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBw
cmV2aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4
ZWxzLgogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZl
ciBidWcgaXMgZml4ZWQsIGkuZS4sCisgICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxs
cyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgZ2w6OkZsdXNoKCk7
CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgR0NHTGVudW0gZnJh
bWVidWZmZXJUYXJnZXQgPSBtX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURf
RlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgaWYgKGF0
dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJP
KSB7CisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdM
U3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKKyAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRl
LmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CiAgICAgICAgIHJlc29sdmVNdWx0
aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAg
ICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fZmJvKTsKICAgICAg
ICAgZ2w6OkZsdXNoKCk7CiAgICAgfQotICAgIGdsOjpSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBt
X3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQorICAgIG1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5z
LCByb3dzLCBkYXRhKTsKKyAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKKyAgICBp
ZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxl
RkJPKQogICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX211
bHRpc2FtcGxlRkJPKTsKIAorICAgIGlmIChlcnJvcikgeworICAgICAgICAvLyBBTkdMRSBkZXRl
Y3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlv
bi4gU3VyZmFjZSB0aGlzIGluIHRoZQorICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwg
YW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIChm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllU
RSkgJiYgKG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMg
JiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykpKQorICAgIGlmICgh
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpC
R1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0
YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2ZibyB8fCAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCiAgICAgICAgIHdpcGVBbHBoYUNoYW5u
ZWxGcm9tUGl4ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihk
YXRhKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCk7CiAjZW5kaWYKIH0KIAotCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pCkBAIC04OTgsMjAgKzkxOSwxNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsCiAgICAgZ2w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVm
U2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1h
cEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXpl
aXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGdsOjpNYXBCdWZm
ZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwotfQotCi1HQ0dMYm9vbGVh
biBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQot
ewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxT
RTsKLQotICAgIHJldHVybiBnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIEdDR0x2b2lkKiBwdHIgPSBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQs
IGRhdGEuYnVmU2l6ZSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYg
KCFwdHIpCisgICAgICAgIHJldHVybjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEu
YnVmU2l6ZSk7CisgICAgaWYgKCFnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNl
dCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpCkBAIC0xMDA4LDE0
ICsxMDI1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsCiAgICAgY29tcHJlc3NlZFRleFN1
YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5h
bWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkK
IHsKKyAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7
CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgZ2w6OkdldEFj
dGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5k
aWNlcy5kYXRhKCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICBnbDo6R2V0QWN0aXZlVW5p
Zm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRh
dGEoKSwgcG5hbWUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdD
R0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdD
R0xlbnVtIHRhcmdldCkKQEAgLTIxMDEsMjIgKzIxMTksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjbwogICAgIHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRm
OCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZs
b2F0PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5h
bWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRy
aWJpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFs
dWUuZGF0YSk7Ci19Ci0KIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjM5MiwxMiArMjM5NCwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiAgICAg
Z2w6OkVuZFF1ZXJ5KHRhcmdldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFF1ZXJ5T2JqZWN0dWl2KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQq
IHBhcmFtcykKK0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVj
dHVpKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMdWludCB2YWx1ZSA9
IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFt
ZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIC8vIFRyYW5z
Zm9ybSBGZWVkYmFjayBGdW5jdGlvbnMKQEAgLTI4MzksMjAgKzI4NDIsMjQgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW4KICAgICBnbDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUs
IHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7
CisgICAgR0NHTGZsb2F0IHZhbHVlID0gMC5mOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwg
JnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAK
LSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7Cisg
ICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAx
LCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogR0NHTHN5bmMgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xi
aXRmaWVsZCBmbGFncykKQEAgLTI4OTUsMTIgKzI5MDIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBH
Q0dMaW4KICAgICBnbDo6V2FpdFN5bmMoc3luYywgZmxhZ3MsIHRpbWVvdXQpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBu
YW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6
OkdldFN5bmNpdihzeW5jLCBwbmFtZSwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUpOworICAgIGds
OjpHZXRTeW5jaXYoc3luYywgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzM1OTdmNDc1M2QwYmVjMWQwMmU3ZDVmY2ZkYzY0
M2E5ODNjODhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0w
LDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
R0wpICYmIFBMQVRGT1JNKENPQ09BKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjp+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4oKSA9IGRlZmF1bHQ7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWU4OGMyZjk5
YjFjYWE1ODExN2M3MzkxMWE1MWI2N2RkZTYzMmJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUkFQSElDU19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIklP
U3VyZmFjZS5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBBbiBpbnRlcmZhY2UgZm9yIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdlbWVudCBv
ZiBhIDMtYnVmZmVyaW5nIHN3YXAKKy8vIGNoYWluIG9mIElPU3VyZmFjZXMuCisvLyBUaGUgaW1w
bGVtZW50b3Igd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KKy8v
IFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2ls
bCByZWNlaXZlIHRoZSBtZXRhZGF0YQorLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJl
ZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5Cisv
LyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCisvLyBF
eGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBh
cyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5CisvLyB3aGVuIHRoZSBkaXNwbGF5IGNsaWVudCBpcyBk
b25lIHdpdGggdGhlIElPU3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1
c2luZworLy8gdGhlIGV4aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVy
IHJlY3ljbGUgbG9naWMuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4oKTsKKyAgICBzdHJ1Y3QgQnVmZmVyIHsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBj
b250ZW50cy4KKyAgICAgICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OyAvLyBQcm9kdWNlciBz
cGVjaWZpYyBtZXRhZGF0YSBoYW5kbGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCisgICAgfTsKKyAg
ICAvLyBSZXR1cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMg
YnVmZmVyLgorICAgIC8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hp
cCBvZiB0aGUgY29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhl
CisgICAgLy8gdGltZSBvZiB0aGUgY2FsbC4KKyAgICAvLyBSZXR1cm5zIGVpdGhlcjoKKyAgICAv
LyAtIEVtcHR5IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVkLgorICAgIC8v
IC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRs
ZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKKyAgICAvLyAgIGJ1dCB0aGUg
c3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCisgICAgLy8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCisg
ICAgdmlydHVhbCBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpID0gMDsKKworICAgIC8vIFByZXBhcmVz
IHRoZSB0YXJnZXQgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBD
bGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3VyZmFjZSBzdXJmYWNlIGlu
IHRoZSBgYnVmZmVyYC4KKyAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsKKwor
ICAgIC8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVu
dHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KKyAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVy
cyBoYXZlIGJlZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxl
ZCBiZWZvcmUgY2FsbGluZworICAgIC8vIHRoaXMuCisgICAgdmlydHVhbCB2b2lkKiBkZXRhY2hD
bGllbnQoKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggMmUxYzc5OWU4Mjg1M2IzMjBiOGNlZGRkNGE2ZmU1ZTUw
NGE5ZDg5Yy4uNzdjYTIwMGJkN2ZmZWZlZDM5OGY5MTJhNzlkNDI1MTM0NmJmN2QyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yMCw3ICsyMCw3IEBA
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW1wb3J0ICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
ci5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtODEs
NyArODIsNyBAQCBzdGF0aWMgRUdMRGlzcGxheSBJbml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAg
RUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CiAgICAgRUdMaW50IG1pbm9yVmVyc2lvbiA9IDA7CiAg
ICAgRUdMRGlzcGxheSBkaXNwbGF5OwotICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xh
dGlsZUNvbnRleHRTdXBwb3J0ID0gIWlzSW5XZWJQcm9jZXNzKCk7CisgICAgYm9vbCBzaG91bGRJ
bml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQgPSAhKGlzSW5XZWJQcm9jZXNzKCkg
fHwgaXNJbkdQVVByb2Nlc3MoKSk7CiAgICAgaWYgKHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRp
bGVDb250ZXh0U3VwcG9ydCkgewogICAgICAgICAvLyBGb3IgV0sxIHR5cGUgQVBJcyB3ZSBuZWVk
IHRvIHNldCAidm9sYXRpbGUgcGxhdGZvcm0gY29udGV4dCIgZm9yIHNwZWNpZmljCiAgICAgICAg
IC8vIEFQSXMsIHNpbmNlIGNsaWVudCBjb2RlIHdpbGwgYmUgYWJsZSB0byBvdmVycmlkZSB0aGUg
dGhyZWFkLWdsb2JhbCBjb250ZXh0CkBAIC0xMzQsNyArMTM1LDcgQEAgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dEcKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYo
bmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBkZXN0aW5hdGlv
bikpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCA9IGFkb3B0
UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdpbmRvdywgbnVsbHB0
ciwgbnVsbHB0cikpOwogCiAgICAgaWYgKCFjb250ZXh0LT5tX2NvbnRleHRPYmopCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTQ3LDEzICsxNDgsMTggQEAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dEcKIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCkK
IHsKICAgICBhdXRvIGhvc3RXaW5kb3cgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5ob3N0V2luZG93Rm9yQ29udGV4dCgmc2hhcmVkQ29udGV4dCk7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChz
aGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csIHNoYXJlZENvbnRl
eHQuZGVzdGluYXRpb24oKSwgJnNoYXJlZENvbnRleHQpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgJnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENv
bnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdpbmRvdyk7CiAKICAgICByZXR1cm4gY29udGV4dDsK
IH0KIAorUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgc3dhcENoYWluKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJz
LCBudWxscHRyLCBudWxscHRyLCAmc3dhcENoYWluKSk7Cit9CisKICNpZiBQTEFURk9STShNQUMp
IC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBiZSBqdXN0IGVuYWJsZWQgLSBzZWUgPHJk
YXI6Ly81MzA2Mjc5ND4uCiAKIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVnaXN0cnlJRChDR0xDb250
ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0T2JqLCBJT1Jl
Z2lzdHJ5R1BVSUQgcHJlZmVycmVkR1BVSUQpCkBAIC0yMDQsOCArMjEwLDggQEAgc3RhdGljIHZv
aWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxG
b3JtYXRPYmogcGl4ZWwKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0w6
OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVk
Q29udGV4dCkKLSAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBkZXN0aW5hdGlvbiwgc2hh
cmVkQ29udGV4dCkKK0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3csIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0LCBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dhcENoYWluKQorICAgIDogR3JhcGhpY3NDb250
ZXh0R0woYXR0cnMsIERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIHNoYXJlZENvbnRleHQpCiB7CiAg
ICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJzLmlzV2ViR0wyOwogCkBAIC0yOTMsMjYgKzI5OSwyOCBA
QCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAg
ICBnbDo6RW5hYmxlKEdyYXBoaWNzQ29udGV4dEdMOjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9J
TkRFWCk7CiAKKyAgICBWZWN0b3I8QVNDSUlMaXRlcmFsLCA0PiByZXF1aXJlZEV4dGVuc2lvbnM7
CisgICAgaWYgKG1faXNGb3JXZWJHTDIpIHsKKyAgICAgICAgLy8gRm9yIFdlYkdMIDIuMCBvY2Ns
dXNpb24gcXVlcmllcyB0byB3b3JrLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5k
KCJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iX3MpOworICAgIH0KICNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5z
aW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKLQogICAgIGlmICghbmVlZHNFQUdMT25NYWMoKSkgewot
ICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHJlcXVpcmVkRXh0ZW5zaW9uc1td
ID0gewotICAgICAgICAgICAgIkdMX0FOR0xFX3RleHR1cmVfcmVjdGFuZ2xlIiwgLy8gRm9yIElP
U3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAgICAgICAgICAiR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4IiwgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3VyZmFjZSBmcm9tIGFuIElP
U3VyZmFjZS4KLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgocmVxdWlyZWRFeHRlbnNpb25zKTsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMocmVxdWlyZWRFeHRlbnNpb25zW2ldKSkgewotICAgICAg
ICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIHJl
cXVpcmVkRXh0ZW5zaW9uc1tpXSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQorICAgICAgICAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KKyAgICAgICAg
cmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3Mp
OworICAgICAgICAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJm
YWNlLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9m
b3JtYXRfQkdSQTg4ODgiX3MpOworICAgIH0KIAotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1
cmVFbmFibGVkKHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSk7CisjZW5kaWYgLy8gUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMg
PSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4
dGVuc2lvbnMpIHsKKyAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikp
IHsKKyAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiAl
cyIsIGV4dGVuc2lvbi5jaGFyYWN0ZXJzKCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CisgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOwogICAgIH0K
LSNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgTUFDQ0FUQUxZU1Qg
c2hvdWxkIHRha2UgdGhlc2Ugc3RlcHMgYXMgd2VsbCwgYnV0IHRoYXQKICAgICAvLyB3b3VsZCBy
ZXF1aXJlIHRoZSBQbGF0Zm9ybVNjcmVlbk1hYyBjb2RlIHRvIGJlIGV4cG9zZWQgdG8gQ2F0YWx5
c3QgdG9vLgpAQCAtMzMxLDEzICszMzksMTcgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAg
ICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7
IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAotICAgIC8vIENy
ZWF0ZSB0aGUgV2ViR0xMYXllcgotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
ICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhE
ZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0
dHJzLmFscGhhXSk7CisgICAgaWYgKHN3YXBDaGFpbikKKyAgICAgICAgbV9zd2FwQ2hhaW4gPSBz
d2FwQ2hhaW47CisgICAgZWxzZSB7CisgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UworICAgICAgICAgICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2Nd
IGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRz
T3BhcXVlOiFhdHRycy5hbHBoYV0pOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgW21fd2ViR0xM
YXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKKyAgICAgICAgICAgIFttX3dlYkdMTGF5ZXIg
c2V0TmFtZTpAIldlYkdMIExheWVyIl07CiAjZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCisgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgbV9zd2Fw
Q2hhaW4gPSAmW21fd2ViR0xMYXllciBzd2FwQ2hhaW5dOworICAgIH0KIAogICAgIC8vIENyZWF0
ZSB0aGUgdGV4dHVyZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVyLgogICAg
IEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpOwpAQCAtNDA2
LDEzICs0MTgsMTIgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6On5HcmFwaGljc0NvbnRleHRH
TE9wZW5HTCgpCiAgICAgICAgIGlmIChtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZCTykKICAgICAg
ICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVy
RkJPKTsKICAgICB9Ci0gICAgaWYgKG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpCisgICAgaWYgKG1f
ZGlzcGxheUJ1ZmZlclBidWZmZXIpIHsKICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlz
cGxheU9iaiwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcik7Ci0gICAgaWYgKG1fd2ViR0xMYXllcikg
ewotICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVm
ZmVyXTsKKyAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xl
QnVmZmVyKCk7CiAgICAgICAgIGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgICAg
ICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUp
OwotICAgICAgICBhdXRvIGNvbnRlbnRzSGFuZGxlID0gW21fd2ViR0xMYXllciBkZXRhY2hDbGll
bnRdOworICAgICAgICBhdXRvIGNvbnRlbnRzSGFuZGxlID0gbV9zd2FwQ2hhaW4tPmRldGFjaENs
aWVudCgpOwogICAgICAgICBpZiAoY29udGVudHNIYW5kbGUpCiAgICAgICAgICAgICBFR0xfRGVz
dHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBjb250ZW50c0hhbmRsZSk7CiAgICAgfQpAQCAtNTc1
LDExICs1ODYsMTYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nKCkKICAgICAgICAgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9O
T19TVVJGQUNFOwogICAgIH0KICAgICAvLyBSZXNldCB0aGUgZnV0dXJlIHJlY3ljbGVkIGJ1ZmZl
ciBub3csIGJlY2F1c2UgaXQgbW9zdCBsaWtlbHkgd2lsbCBub3QgYmUgcmV1c2FibGUgYXQgdGhl
IHRpbWUgaXQgd2lsbCBiZSByZXVzZWQuCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dl
YkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dh
cENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAgaWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkK
ICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIu
aGFuZGxlKTsKICAgICByZWN5Y2xlZEJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgcmV0dXJu
IGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7Cit9CiAKK2Jvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkK
K3sKKyAgICBBU1NFUlQoIWdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsK
ICAgICBhdXRvIGJhY2tpbmcgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5h
bEZyYW1lYnVmZmVyU2l6ZSgpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKICAgICBp
ZiAoIWJhY2tpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzNyw3ICs2NTMsNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25z
dAogICAgIC8vIGZvciBPcGVuR0wgdG8gZGVjaWRlIHdoaWNoIEdQVSBpcyBjb25uZWN0ZWQgdG8g
YSBkaXNwbGF5IChvbmxpbmUvb2ZmbGluZSkuCiAgICAgLy8gT3BlbkdMIHdpbGwgdGhlbiBjb25z
aWRlciBhbGwgR1BVcywgb3IgcmVuZGVyZXJzLCBhcyBvZmZsaW5lLCB3aGljaCBtZWFucwogICAg
IC8vIGFsbCBvZmZsaW5lIHJlbmRlcmVycyBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgd2hlbiBmaW5k
aW5nIGEgcGl4ZWwgZm9ybWF0LgotICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwg
c3RpbGwgYmUgYSBXaW5kb3dTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCisgICAgLy8gSW4gV2ViS2l0
IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmR3U2VydmVyIGNvbm5lY3Rpb24sIGFu
ZAogICAgIC8vIG1fZGlzcGxheU1hc2sgd2lsbCBub3QgYmUgc2V0IGluIHRoaXMgY2FzZS4KICAg
ICBpZiAocHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtNjQ2LDEyICs2NjIsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dP
ZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKICAgICAvLyBhbmQgTUFDL01BQ0NBVEFMWVNUIGFuZCBP
UEVOR0wvT1BFTkdMRVMuCiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICAgICAgCisKICNp
ZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wpCiAgICAgaWYgKGhhc0xvd0FuZEhpZ2hQb3dl
ckdQVXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICAKKwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtNjgzLDEwICs2OTksMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIC8vIFRoZSBJT1N1cmZhY2Ugd2lsbCBi
ZSB1c2VkIGZyb20gb3RoZXIgZ3JhcGhpY3Mgc3Vic3lzdGVtLCBzbyBmbHVzaCBHTCBjb21tYW5k
cy4KICAgICBnbDo6Rmx1c2goKTsKIAotICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJH
TExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBD
aGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogCiAgICAgRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3Bs
YXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgW21f
d2ViR0xMYXllciBwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czoge1dURk1vdmUobV9kaXNw
bGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZlclBidWZmZXJ9XTsKKyAgICBtX3N3YXBD
aGFpbi0+cHJlc2VudCh7IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxh
eUJ1ZmZlclBidWZmZXIgfSk7CiAgICAgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19T
VVJGQUNFOwogCiAgICAgYm9vbCBoYXNOZXdCYWNraW5nID0gZmFsc2U7CkBAIC03MDAsNyArNzE2
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQog
CiAgICAgLy8gRXJyb3Igd2lsbCBiZSBoYW5kbGVkIGJ5IG5leHQgY2FsbCB0byBtYWtlQ29udGV4
dEN1cnJlbnQoKSB3aGljaCB3aWxsIG5vdGljZSBsYWNrIG9mIGRpc3BsYXkgYnVmZmVyLgogICAg
IGlmICghaGFzTmV3QmFja2luZykKLSAgICAgICAgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5n
KCk7CisgICAgICAgIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAKICAg
ICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQxNDAxNWI3YjBm
MzRiYjI4YmUzNDU1MDljNzQyOWUzMWRhYTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYS5tbQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKyNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKKyNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKK3sKKyAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhb
W1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQ
aXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOworI2lmbmRlZiBOREVCVUcK
KyAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKKyNlbmRpZgor
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworCitQbGF0Zm9ybUxheWVyKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fd2ViR0xMYXllci5nZXQoKTsKK30KKworI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzQ29udGV4dEdMQ1YqIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjphc0NWKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRp
ZgorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENoYWluKCkKK3sKKyAgICByZXR1cm4gW21f
d2ViR0xMYXllciBzd2FwQ2hhaW5dOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAppbmRleCAxNGIwMWU3
MDVmMjA1MzAxYzdjOTdjZjY2ZTcxYTA4YmJmNDFlNzA1Li43ZmU4OGEyZmY0Y2UwZjU1OWQ1OWRj
MWNkOTUyYTNhN2VhODgwOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCkBAIC0yMyw1MiArMjMsMjIgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiSU9TdXJmYWNlLmgiCisjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpD
b3JlLmg+CisjaW1wb3J0IDxtZW1vcnk+CiAjaW1wb3J0IDx3dGYvTmFrZWRQdHIuaD4KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IFdlYkdMTGF5ZXJCdWZmZXIgewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1cmZhY2U7IC8vIFRoZSBhY3R1YWwgY29udGVu
dHMuCi0gICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OyAvLyBDbGllbnQgc3BlY2lmaWMgbWV0
YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1cmZhY2UpLgotfTsKLX0KLQogQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogLy8gQSBsYXllciBjbGFzcyBpbXBsZW1lbnRpbmcg
ZnJvbnQgYnVmZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2FwCiAvLyBjaGFpbiBv
ZiBJT1N1cmZhY2VzLgotLy8gVGhlIGxheWVyIHdpbGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVz
ZXMgZm9yIGRpc3BsYXkuCi0vLyBUaGUgY2xpZW50IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFj
aCBJT1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRhdGEKLS8vIGJhY2sgb25jZSB0
aGUgSU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkg
bm90IG5lY2Nlc3NhcmlseQotLy8gYmUgYWJsZSB0byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNl
bGYgZm9yIHJldXNlLgotLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBF
R0xTdXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlzIHdheQotLy8gd2hlbiB0aGUg
V2ViR0xMYXllciBpcyBkb25lIHdpdGggdGhlIElPU3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50
IGNhbiBjb250aW51ZSB1c2luZwotLy8gdGhlIGV4aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhy
b3VnaCB0aGUgYnVmZmVyIHJlY3ljbGUgbG9naWMuCiBAaW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBD
QUxheWVyCiAKIC0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4
ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1ZTsKIAogLSAoQ0dJbWFn
ZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29s
b3JTcGFjZTsKIAotLy8gUmV0dXJucyB0aGUgbWV0YWRhdGEgaGFuZGxlIG9mIGxhc3QgdW51c2Vk
IGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93
bmVyc2hpcCBvZiB0aGUgY29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUg
YXQgdGhlCi0vLyB0aW1lIG9mIHRoZSBjYWxsLgotLy8gUmV0dXJucyBlaXRoZXI6Ci0vLyAtIEVt
cHR5IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVkLgotLy8gLSBCdWZmZXIg
d2l0aCBlbXB0eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSBy
ZWN5Y2xlZCBidWZmZXIgd2FzIGF2YWlsYWJsZQotLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3Rp
bGwgaW4gdXNlLgotLy8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCi0tIChXZWJDb3JlOjpXZWJHTExh
eWVyQnVmZmVyKXJlY3ljbGVCdWZmZXI7Ci0KLS8vIFByZXBhcmVzIHRoZSBsYXllciBmb3IgZGlz
cGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgotLy8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3du
ZXJzaGlwIG9mIHRoZSBJT1N1cmZhY2Ugc3VyZmFjZSBpbiB0aGUgYGJ1ZmZlcmAuCi0tICh2b2lk
KXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
KWJ1ZmZlcjsKLQotLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVu
dCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgotLy8gVGhlIGlmIG11bHRpcGxlIGJ1
ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBj
YWxsZWQgYmVmb3JlIGNhbGxpbmcKLS8vIHRoaXMuCi0tICh2b2lkKilkZXRhY2hDbGllbnQ7Cist
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFp
bjsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbQppbmRleCBjOGY0ZTc5ZjczMTJlYWE2YWIwNDQ2ODA4M2VhOGQw
YzhiZWZhM2JjLi4xNjhmZDVmNmM4NDIzN2JkZjhhYjljYmJjYTY0MDczOTUwNWM5MjAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2ltcG9ydCAi
Y29uZmlnLmgiCkBAIC0zMiwxMyArMzIsMzkgQEAKICNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5o
IgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1
YXJ0ekNvcmVTUEkuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9P
cHRpb25hbC5oPgorCitjbGFzcyBXZWJHTExheWVyU3dhcENoYWluIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBXZWJHTExheWVyU3dhcENoYWluKFdlYkdMTGF5ZXIqIGxheWVyKSAgOiBtX2xh
eWVyKGxheWVyKSB7IH07CisgICAgfldlYkdMTGF5ZXJTd2FwQ2hhaW4oKSBvdmVycmlkZSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgQnVmZmVyIHJl
Y3ljbGVCdWZmZXIoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIu
c3VyZmFjZSkgeworICAgICAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVz
ZSgpKQorICAgICAgICAgICAgICAgIG1fc3BhcmVCdWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAg
ICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9zcGFyZUJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICAgICAg
dm9pZCogcmVzdWx0ID0gbV9kaXNwbGF5QnVmZmVyLmhhbmRsZTsKKyAgICAgICAgbV9kaXNwbGF5
QnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheVN1cmZhY2UoKSB7IHJldHVybiBtX2Rpc3Bs
YXlCdWZmZXIuc3VyZmFjZS5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBCdWZmZXIgbV9kaXNwbGF5
QnVmZmVyOworICAgIEJ1ZmZlciBtX3NwYXJlQnVmZmVyOworICAgIFdlYkdMTGF5ZXIqIGNvbnN0
IG1fbGF5ZXI7Cit9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXllciB7Ci0gICAgV2ViQ29y
ZTo6V2ViR0xMYXllckJ1ZmZlciBfY29udGVudHNCdWZmZXI7Ci0gICAgV2ViQ29yZTo6V2ViR0xM
YXllckJ1ZmZlciBfc3BhcmVCdWZmZXI7Ci0KICAgICBCT09MIF9wcmVwYXJlZEZvckRpc3BsYXk7
CisgICAgT3B0aW9uYWw8V2ViR0xMYXllclN3YXBDaGFpbj4gX3N3YXBDaGFpbjsKIH0KIAogLSAo
aWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRl
bnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCkBAIC00Nyw2ICs3Myw3IEBACiAgICAgc2Vs
Zi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7CiAgICAgc2VsZi5jb250ZW50c09w
YXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwogICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBp
eGVsUmF0aW87CisgICAgX3N3YXBDaGFpbi5lbXBsYWNlKHNlbGYpOwogICAgIHJldHVybiBzZWxm
OwogfQogCkBAIC03MywzMCArMTAwLDIxIEBACiAgICAgVU5VU0VEX1BBUkFNKGNvbG9yU3BhY2Up
OwogICAgIHJldHVybiBudWxscHRyOwogfQotCi0tIChXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
KSByZWN5Y2xlQnVmZmVyCistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbiYpIHN3YXBDaGFpbgogewotICAgIGlmIChfc3BhcmVCdWZmZXIuc3VyZmFjZSkgewot
ICAgICAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKLSAgICAgICAgICAg
IF9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKF9z
cGFyZUJ1ZmZlcik7Ci0gICAgfQotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIF9zd2FwQ2hh
aW4udmFsdWUoKTsKIH0KIAotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czoo
V2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgYnVmZmVyCistICh2b2lkKXByZXBhcmVGb3JEaXNw
bGF5CiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgX3NwYXJlQnVm
ZmVyID0gV1RGTW92ZShfY29udGVudHNCdWZmZXIpOwotICAgIF9jb250ZW50c0J1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKTsKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXldOwogICAgIF9wcmVwYXJl
ZEZvckRpc3BsYXkgPSBZRVM7CiB9CiAKIC0gKHZvaWQpZGlzcGxheQogewotICAgIGlmIChfY29u
dGVudHNCdWZmZXIuc3VyZmFjZSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7Ci0gICAgICAgIHNl
bGYuY29udGVudHMgPSBfY29udGVudHNCdWZmZXIuc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCk7
CisgICAgaWYgKF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCkgJiYgX3ByZXBhcmVkRm9yRGlz
cGxheSkgeworICAgICAgICBzZWxmLmNvbnRlbnRzID0gX3N3YXBDaGFpbi0+ZGlzcGxheVN1cmZh
Y2UoKS0+YXNMYXllckNvbnRlbnRzKCk7CiAgICAgICAgIFtzZWxmIHJlbG9hZFZhbHVlRm9yS2V5
UGF0aDpAImNvbnRlbnRzIl07CiAgICAgfQogICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxm
KTsKQEAgLTEwNiwxMyArMTI0LDE0IEBACiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IE5POwog
fQogCi0tICh2b2lkKikgZGV0YWNoQ2xpZW50CitAZW5kCisKK3ZvaWQgV2ViR0xMYXllclN3YXBD
aGFpbjo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQogewotICAgIEFTU0VSVCghX3NwYXJlQnVmZmVy
LnN1cmZhY2UpOwotICAgIHZvaWQqIHJlc3VsdCA9IF9jb250ZW50c0J1ZmZlci5oYW5kbGU7Ci0g
ICAgX2NvbnRlbnRzQnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgbV9zcGFyZUJ1ZmZlciA9
IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3Zl
KGJ1ZmZlcik7CisgICAgW21fbGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldOwogfQotQGVuZAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4NTUyZjFlNDZhMWQzNzBhZTZkYzI3ODlhMWVj
NjY3NGJhMTIuLjk5YWQ5MTY1MjU5MTg3M2UwZTgzZmU4Nzg5MjVlY2EyMzNhMWExYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTM2
LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCisjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCiAjaW1wb3J0ICJTb3VyY2VHcmFw
aGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0Lmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0wuY3BwCmluZGV4IDdlYzgxY2Y0YWU1NzcyY2FlOTcyODhiYzgwZTM2NTY0NmQ2MjdjN2Iu
LmFkZDVmMzUyYWU0ZGU2YjZkNWRjMTkxZTY3M2I1YWFmYTU2ZGU5NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0wuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6RXh0
ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVz
CiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAK
IAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBs
b25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkw
LCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxv
bmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01Niw3
ICs1Niw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBz
cmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uCiAgICAgOjpnbEJsaXRGcmFtZWJ1ZmZl
ckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0
WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3
aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiAj
ZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHMKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVp
IHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwgRwogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJE
aXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25z
R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCA0OTYyODljZWEw
ZTZhMDlkNmRiNzMxZjg2OGI1NDk5M2E0NDQ0OWE4Li40NzUwMjI2ZWNlY2VmNDQzOTZlOTkzODY3
NmNiNjM5YmU4MzQzN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC00MCw4ICs0MCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVuR0woKTsKIAogICAgIC8v
IEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3Jj
WDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcg
ZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWdu
ZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdD
R0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEs
IEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0
WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJh
eU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKQEAgLTUyLDkgKzUyLDkgQEAgcHVibGlj
OgogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
cmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlk
ZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRy
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJy
aWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6
OlN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAppbmRleCA0M2I1MTYxZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2YzQ4M2ViLi5iNzg5NjBj
YjQ4MmU0ZWYyYWI5OGU0MDM5MmE2MzViYTdmZmI3YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMzY2LDExICszNjYsNiBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVt
LCBHQ0dMcwogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNS
b2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2
b2lkICosIGJvb2wpCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRu
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkg
KiwgR0NHTGZsb2F0ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5k
ZXggYmZlNDUyMTU0M2ZmNGIyNzIxMzdmMzQ0Y2VlNGEyMmQ4ZmIyOGM2NC4uNmEzYTM5ZmUzYTFi
YTViZDI1OTc3MTU4OTQ3NTYxY2NhZDVhZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uaApAQCAtOTMsNyArOTMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1
c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpk
YXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lk
IGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3
YmFjZWZjYmI4YWMzLi5lMWU0M2JmNTM5Mjg4NWEyNGZiYjMzY2IyNmI1ZjZlNDkxZmJlMDczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMiArMTAwLDEyIEBAIHZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlN
Ryh1bnNpZ25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXIobG9uZyAvKiBzcmNYMCAqLywgbG9uZyAvKiBzcmNZMCAqLywgbG9u
ZyAvKiBzcmNYMSAqLywgbG9uZyAvKiBzcmNZMSAqLywgbG9uZyAvKiBkc3RYMCAqLywgbG9uZyAv
KiBkc3RZMCAqLywgbG9uZyAvKiBkc3RYMSAqLywgbG9uZyAvKiBkc3RZMSAqLywgdW5zaWduZWQg
bG9uZyAvKiBtYXNrICovLCB1bnNpZ25lZCBsb25nIC8qIGZpbHRlciAqLykKK3ZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQsIEdDR0xpbnQsIEdD
R0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xi
aXRmaWVsZCwgR0NHTGVudW0pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50
ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQor
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1
MSw3ICsyNTEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpnZXRuVW5pZm9ybWl2RVhU
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTAogICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAg
ICAgaWYgKCFtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjY0LDcgKzI2
NCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHCiAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdD
R0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fZ2xE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LAogICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSht
b2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKCFtX2dsVmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRl
eCAwMTdhNDViNzM5OGQwOTkyZWQxNDc2N2YwNzY3ZTA0YjQ2NDE2MjgzLi41Yzc2MDM3ZmE3YmM2
ZThlZWUzZTY3M2Y5OWE3ZGZjMmY3OGZiNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
aApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb24zRCBtZXRob2Rz
CiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBi
bGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBz
cmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5z
aWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQg
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKICAg
ICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CkBAIC04Nyw5ICs4Nyw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHJlc2V0CiAg
ICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYzI1NWIwYzEyZjRmY2JmYTQ2ZGIwMmQ1NWM4MGI0
Y2I3N2QxN2I3MC4uMDI3MjhmODk3ODhlMGI4NWVkMTI2ZjVmOTgxZjVjMWQ2MGRmZmRlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTU4LDYgKzU4LDkgQEAKICNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgV2ViR0xMYXll
cjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluOworfQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgVVNFKE5JQ09T
SUEpCkBAIC04Niw3ICs4OSw3IEBAIHR5cGVkZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2
NF90PiBTaGFkZXJOYW1lSGFzaDsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2
YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFw
aGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zm
c2NyZWVuKTsKQEAgLTk0LDYgKzk3LDggQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlU2hhcmVkKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KTsKKyAgICBzdGF0aWMgUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
Jik7CisKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0woKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHRPYmo7IH0KICAgICBQbGF0Zm9y
bUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGV4dHVy
ZTsgfQogICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0KCkpOyB9CkBAIC0xOTEs
NyArMTk2LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CiAgICAgYm9v
bCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5k
ZXgsIEFjdGl2ZUluZm8mKSBmaW5hbDsKICAgICBib29sIGdldEFjdGl2ZVVuaWZvcm1JbXBsKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKLSAg
ICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xz
aXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVy
cykgZmluYWw7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xP
YmplY3QqIHNoYWRlcnMpOwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKICAgICB2b2lkIGdldEJvb2xlYW52
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOwogICAg
IEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKQEAgLTIxOSw4ICsyMjQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRVbmlm
b3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZh
bHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmli
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAgIEdDR0xz
aXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKIAogICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1v
ZGUpIGZpbmFsOwpAQCAtMjM2LDcgKzIzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBpeGVsU3Rv
cmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHBvbHln
b25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKSBmaW5hbDsKIAotICAg
IHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRh
dGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKIAogICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
IGZpbmFsOwogICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJv
b2xlYW4gaW52ZXJ0KSBmaW5hbDsKQEAgLTI1NCw3ICsyNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKSBmaW5hbDsKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsK
LSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsgCisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKIApAQCAtMzE3LDEyICsz
MjEsMTAgQEAgcHVibGljOgogI2lmICFVU0UoQU5HTEUpCiAgICAgdm9pZCBidWZmZXJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIGRzdEJ5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0Rh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsKLSAgICB2b2lkIGdldEJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNv
bnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsK
ICNlbmRpZgogICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwg
R0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3
cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogCi0gICAgdm9pZCogbWFwQnVm
ZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRy
IGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgZmluYWw7Ci0gICAgR0NHTGJvb2xlYW4gdW5t
YXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+
IGRhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwg
R0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RY
MCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZp
ZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRl
eHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3Jt
R0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgZmluYWw7CkBA
IC0zODQsNyArMzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFy
Z2V0KSBmaW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIC8vIGdldFF1ZXJ5UGFyYW1ldGVyCi0gICAg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVj
dHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRl
U2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOwpAQCAtMzkzLDggKzM5NSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOwogICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0g
ICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1w
bGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBH
Q0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNv
bmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKSBmaW5hbDsKICAgICBHQ0dMYm9vbGVhbiBpc1N5
bmMoR0NHTHN5bmMpIGZpbmFsOwpAQCAtNDAzLDcgKzQwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0
KSBmaW5hbDsKICAgICAvLyBnZXRTeW5jUGFyYW1ldGVyCiAgICAgLy8gRklYTUUgLSB0aGlzIGNh
biBiZSBpbXBsZW1lbnRlZCBhdCB0aGUgV2ViR0wgbGV2ZWwgaWYgd2Ugc2lnbmFsIHRoZSBXZWJH
TFN5bmMgb2JqZWN0LgotICAgIHZvaWQgZ2V0U3luY2l2KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50
IGdldFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CiAgICAgdm9pZCBkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKQEAgLTQyMCw3
ICs0MjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7CiAgICAgLy8gZ2V0SW5kZXhlZFBhcmFt
ZXRlciAtPiB1c2UgZ2V0UGFyYW1ldGVyIGNhbGxzIGFib3ZlLgogICAgIFZlY3RvcjxHQ0dMdWlu
dD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBmaW5hbDsKLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZv
cm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5p
Zm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykgZmlu
YWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBm
aW5hbDsKICAgICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKQEAgLTQyOSwxMSAr
NDMxLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKLSNpZiAhVVNFKEFOR0xFKQotICAg
IHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KTsKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpOwotI2VuZGlm
Ci0KICAgICAvLyBIZWxwZXIgbWV0aG9kcy4KIAogICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhjb25z
dCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmKTsKQEAgLTUxNSw3ICs1
MTIsMTEgQEAgcHVibGljOgogI2VuZGlmIC8vICFVU0UoQU5HTEUpCiAKIHByaXZhdGU6CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNo
YXJlZENvbnRleHQgPSBudWxscHRyLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biogPSBudWxscHRyKTsKKyNlbHNlCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5h
dGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9
IG51bGxwdHIpOworI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1Ymxp
YyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIC8vIENhbGxl
ZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wgdGhh
dCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgpAQCAtNTI3LDcgKzUyOCw5IEBAIHByaXZhdGU6CiAg
ICAgLy8gaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25z
dCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVB
dHRyaWJ1dGVzKCk7Ci0gICAgCisKKyAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKKwogICAgIC8vIERpZCB0aGUgbW9zdCBy
ZWNlbnQgZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0
YXRlPwogICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIApAQCAtNTQ4LDEwICs1NTEsMTMgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGFsbG93T2ZmbGluZVJlbmRl
cmVycygpIGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7Cisg
ICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wg
YmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tp
bmcsIHZvaWQqIHBidWZmZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyAgICBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRy
IH07CisgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0
IGRyYXdzIHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xM
YXllcjsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxw
dHIgfTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmog
eyBudWxscHRyIH07CkBAIC01NzksNyArNTg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwg
aXNWYWxpZChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwKGVudW0gQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5
bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzeW1ib2xUeXBlID09IFNI
QURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUgfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9M
X1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9WQVJZSU5H
KTsKQEAgLTY3Miw3ICs2NzgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHVzaW5nIEJvdW5kVGV4
dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0sCiAgICAgICAgICAgICBzdGQ6OnBhaXI8R0NHTHVp
bnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sIAorICAg
ICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwKICAgICAgICAgICAgIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LAogICAgICAgICAgICAgV1RGOjpQYWly
SGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+CiAgICAgICAgID47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDYzNTZm
ODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2ODgxM2Y2YjkuLjYyOTgwMzg4YjY1MjQ3OWNjYjQz
MzFjMjVmZmVlYmI2NmM2Y2I1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEJhc2UuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRh
KQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCkBAIC00NDcsNyAr
NDQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsQmluZEZyYW1lYnVm
ZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgICAgICA6
OmdsRmx1c2goKTsKICAgICB9Ci0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuZGF0YSk7CiAgICAgaWYgKGF0dHJzLmFudGlhbGlh
cyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6
OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9t
dWx0aXNhbXBsZUZCTyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4ODY3MjAzOWFlYTRmNTk5OTZlNGQ5NGUxYzFhMGZl
Li43YjJlYTA0YTIwOTk1NjVjNzkwZWE1N2M2NjdiMGQ5YzYwYWY1NWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTIwMjksMjIgKzIwMjks
NiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiA6OmdsR2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sIG1hcHBlZE5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4
QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYo
aW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMjc4LDE5
ICsyMjYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkREaXJl
Y3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4
dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNv
dW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAg
Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0
eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0
cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0
dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBIQVZFKE9QRU5HTF80
KSAmJiBFTkFCTEUoV0VCR0wyKQpAQCAtMjMzNSw0MiArMjMxOSwyNSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xpbnRwdHIsCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwg
Y29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewot
ICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNCeXRlT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19Ci0KICNpZiBIQVZFKE9QRU5HTF80KSB8
fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1
ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0
ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCi17CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gOjpnbE1hcEJ1
ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29s
ZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQp
Ci17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEdMX0ZB
TFNFOwotCi0gICAgcmV0dXJuIDo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpOwotfQorICAgICAgICBy
ZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IDo6Z2xNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9m
ZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKKyAg
ICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEsIHB0ciwg
ZGF0YS5idWZTaXplKTsKKyAgICBpZiAoITo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpKQorICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04p
OwogI2Vsc2UKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShH
Q0dMZW51bSwgR0NHTGludHB0ciwgR0NHTHNpemVpcHRyLCBHQ0dMYml0ZmllbGQpCi17Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BB
UkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CisjZW5kaWYKIH0KIAot
R0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVt
KQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwg
R0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZ
MCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xl
bnVtIGZpbHRlcikKIHsKQEAgLTI3MTIsMTEgKzI2NzksMTEgQEAgUGxhdGZvcm1HTE9iamVjdCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmEKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUs
IEdDR0x1aW50KiB2YWx1ZSkKK0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRR
dWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBV
TlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTYW1wbGVyKCkKQEAgLTI3NTYsMTggKzI3
MjMsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4KICAgICBVTlVTRURfUEFSQU0ocGFyYW0p
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVy
ZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2
YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBV
TlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVT
RURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwLmY7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUpCisKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAg
VU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVy
biAwOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdD
R0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjgwNiwxMiArMjc3NCwx
MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3luYyBzeW5j
LCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIFVOVVNFRF9QQVJBTSh0aW1lb3V0KTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5
bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpCitH
Q0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBH
Q0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAgICAgVU5VU0VEX1BB
UkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAtMjg5MSwyMSArMjg1
OCwyMyBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlm
b3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiB7IH07CiB9CiAKLSNp
ZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
b25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZl
Y3RvcjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAg
ICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7CisjaWYg
SEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKICAgICBBU1NFUlQocHJvZ3JhbSk7
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCi0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwg
dW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCBwYXJh
bXMuZGF0YSgpKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3Jt
SW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3VsdC5kYXRh
KCkpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAgIFVOVVNFRF9QQVJB
TShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrTmFtZSk7Ci0KICAgICBy
ZXR1cm4gMDsKIH0KIApAQCAtMjkxMyw3ICsyODgyLDYgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3IKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKHVuaWZv
cm1CbG9ja0luZGV4KTsKLQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCkBAIC0yOTIz
LDI3ICsyODkxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2Nr
QmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0wKICAgICBVTlVTRURfUEFSQU0o
dW5pZm9ybUJsb2NrSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tCaW5kaW5n
KTsKIH0KLSNlbHNlCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiwgR0NHTGVudW0s
IFZlY3RvcjxHQ0dMaW50PiYpCi17Ci19Ci0KLUdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcm
KQotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQpCi17
Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdD
R0x1aW50KQotewotfQotI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5KTsKQEAgLTI5NTQsMTggKzI5MDMsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFS
QU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShm
b3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGlu
dD4gcGFyYW1zKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAyM2Q3NGZhODBkNzA3OTFiZTYwMGRmNThl
NzU2MTczMzk2YWE1NTA1Li5hMjIxODBiNGJmNGNlMTBmMTg1MjEyNDAxMWU4OGE0NDI3M2I0MWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC00MCw3ICs0
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRh
dGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDcgKzU4LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsRmx1c2goKTsKICAgICB9CiAK
LSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRh
dGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgZGF0YS5kYXRhKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBtX3N0YXRl
LmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKQEAgLTEzMCw3ICsxMzAs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRT
aXplJiBzaXplKQogICAgICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVy
ZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgICAgICBpZiAoc3VwcG9ydFBhY2tlZERlcHRo
U3RlbmNpbEJ1ZmZlcikgewogICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdM
X1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgICAgIGV4
dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwg
c2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2ls
KQogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpCkBA
IC0xMzgsMTIgKzEzOCwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBl
RkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7CiAgICAgICAgICAgICAgICAgICAgIDo6
Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKLSAg
ICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgsIHdpZHRo
LCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NU
RU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgOjpnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1F
TlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpIHsKICAgICAgICAgICAgICAg
ICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVy
KTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09NUE9ORU5U
MTYsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291
bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAg
ICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBU
SF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDYyODQ0NTMyNTAz
MzUxMDdmZDU0OTgyMjMyYjhiOWVhZWM4ZTY4Y2IuLjlmODMxN2IxOGQ1M2I3YjNjMTY2NjlhNGM1
MTE5OTNlYWYzN2M3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTIzLDYgKzEyMyw3IEBAIHNl
dChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MKICAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAorICAgIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIKQEAgLTIxOCw2ICsyMTksNyBAQCBzZXQoV2ViS2l0X01FU1NB
R0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbgog
CisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Qg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZWRi
NmNhNTk3OWQyZjRkZWY4YjJiMmU3NzNmOWQ2OWFlNzg2ZTdlOS4uNGE2N2RmOGVkYzNiNGY0ODkx
ODc3MDJlZmJmMDQxYjNkMzRhOTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiArMjAsNyBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMTMxLDYgKzEzMiw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVu
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5t
ZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKaW5kZXggNzU2NzlmNTVmNWFlMzk5YjVlYWY0NzdmMTg5MzI1NmJjMjQ4ODQ0ZC4uN2Nk
M2RiY2NhMzUwYzZlMzgxNGMzNDBjMzkzYzk2M2VkYmI5ODExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNzUsNiArMTc1LDEyIEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMzc3MDFiMDFjM2MxYTJj
MzAwZTFkZDJkNzJlNmI4NTIzN2Y0MjRiNS4uOTc2YjFhNWEzZTVjMGQzMTE1ZDQ0NTBjOTA4NjE1
NzE5ZTZkZWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTcxLDYgKzE3MSw3
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAogCVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MgXAogCVdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAogCVdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCkBAIC0yMjcsNiArMjI4LDcg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzIFwK
IAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAogCUdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCisJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMGUyZTg4MzJiMWUyMGYxZTBmMzE5
ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2UxNGM1MGI3NDE5OTNkNmYzNWE1YTk1ZjVhZmQ4
MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiArNjQsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdMKQor
I2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisjZW5kaWYKKwogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCiAj
aW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKQEAgLTI5MCw2ICsyOTQs
MjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFj
a2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBm
b3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBb
Jl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0
dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH0pOwor
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisK
K3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdM
KEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
Cit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAucmVtb3Zl
KGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwg
Zm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFy
Tm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQbGF5aW5nTWFuYWdlcigp
LmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMjY3OGRiYzRl
NWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4ZC4uNWFlZGZiYjRkMmNhYzdiNzY2MGZmMDcz
NjA5ZDM3N2M2MDE1ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisKICNpbmNs
dWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
d1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgpAQCAtMzksNiArNDAsMTEgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBH
UFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworY2xh
c3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIHN0
cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwpAQCAtMTE5LDYgKzEyNiwxMSBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlR3JhcGhpY3ND
b250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAgICAgdm9p
ZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29s
IHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYmKTsK
IApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7Ci0KKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTE5NGZiNGY2MDg1ZDYy
NGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1NGUxNjQ1OTViMGEzNjFkZmU0Yzc1YmZmNDAx
OGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDEw
IEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hN
ZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICAgICB2b2lk
IFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZv
aWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9pZCBSZWxlYXNlR3JhcGhp
Y3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJbmZv
KCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5mbykKICNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVlOTcwZTVkODg3MDUxNmFkMTM1Yjc2NWNkYTQ1N2Y0MjUzYWMwMmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgorI2luY2x1ZGUgPHd0
Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KQorICAgIDogbV9jb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQ
cm9jZXNzKGF0dHJpYnV0ZXMsICp0aGlzKSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sK
KyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+
bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIG1fY29udGV4dC0+YWRkQ2xpZW50
KCp0aGlzKTsKKyAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdy
YXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRl
bnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dMOjpSRVFVRVNUQUJMRV9F
WFRFTlNJT05TX0FOR0xFKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpXYXNDcmVhdGVkKGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCit7CisgICAgaWYgKGF1dG8qIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkp
CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9V
SW50NjQoKSk7Cit9CisKK0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCitJUEM6OkNvbm5lY3Rp
b24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0Cit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJldHVybiAmZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBudWxscHRyOworfQorCit1
aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50
b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaWRDb21wb3Np
dGUoKQoreworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRM
b3N0KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpXYXNMb3N0KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaXNwYXRj
aENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46
OkJ1ZmZlciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUJ1ZmZlcigpCit7CisgICAg
cmV0dXJuIFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQoreworICAgIEFTU0VSVCghbV9kaXNw
bGF5QnVmZmVyLnN1cmZhY2UpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKK30KKwordm9pZCogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRldGFjaENsaWVudCgpCit7
CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9kaXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUoaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCit7CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkKKyAgICAg
ICAgbV9jb250ZXh0LT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOworICAgIGVsc2UKKyAgICAgICAg
Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpw
cmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdo
dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JE
aXNwbGF5KCk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlCdWZm
ZXIuc3VyZmFjZSk7CisgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgaWYgKGRpc3Bs
YXlCdWZmZXIpCisgICAgICAgIHNlbmRSaWdodCA9IGRpc3BsYXlCdWZmZXItPmNyZWF0ZVNlbmRS
aWdodCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3Ry
aW5nJiYgZXh0ZW5zaW9uKQoreworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoZXh0ZW5zaW9uKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBtX2NvbnRleHQtPm1hcmtDb250ZXh0
Q2hhbmdlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiZjA1NzIxMDFkOWJjMGYwOWY3ZGE5NGM5NGU1MzJi
YTdmN2MzMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBHUFUgcHJvY2Vz
cyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZXMgYWJvdXQgR3Jh
cGhpY3NDb250ZXh0R0wgY2FsbHMKKy8vIGFuZCBpc3N1ZXMgcmVhbCBHcmFwaGljc0NvbnRleHRH
TCBjYWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCisvLyBUaGUgaW1wbGVtZW50
YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBmaW5hbAorICAg
IDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50
CisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkgZmluYWw7CisKKyAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIgb3ZlcnJpZGVzLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVz
LgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5h
bDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgorICAgIHZv
aWQgZGlkQ29tcG9zaXRlKCkgZmluYWw7CisgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCkgZmlu
YWw7CisgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hD
b250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpIGZpbmFsOworCisgICAgLy8gR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgorICAgIEJ1ZmZlciByZWN5Y2xlQnVm
ZmVyKCkgZmluYWw7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgZmluYWw7CisgICAgdm9pZCog
ZGV0YWNoQ2xpZW50KCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4K
KyAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5k
UmlnaHQmJik+JiYpOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJik7
CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKworI2luY2x1ZGUgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAg
UmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vh
a1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyOworICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZm
ZXIgbV9kaXNwbGF5QnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVl
YTcxNTI0ZDQwODE5YmEwMzEwY2I0MjAxMzYwNzU2Njg3ODY4NTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOTQgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUg
aXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQ
cmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNo
cm9ub3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9y
RGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0
Q2hhbmdlZCgpCisKKyAgICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHZv
aWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgdm9pZCBNb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB2b2lkIEF0dGFj
aFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgdm9pZCBCaW5k
QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyBuYW1l
KQorICAgIHZvaWQgQmluZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisg
ICAgdm9pZCBCaW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQor
ICAgIHZvaWQgQmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEp
CisgICAgdm9pZCBCaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisg
ICAgdm9pZCBCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZs
b2F0IGFscGhhKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHZv
aWQgQmxlbmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVB
bHBoYSkKKyAgICB2b2lkIEJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFj
dG9yKQorICAgIHZvaWQgQmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJf
dCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB2b2lk
IENoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0KSAtPiAodWludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDbGVhcih1aW50MzJfdCBtYXNrKQorICAg
IHZvaWQgQ2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9h
dCBhbHBoYSkKKyAgICB2b2lkIENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgdm9pZCBDbGVh
clN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHZvaWQgQ29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdy
ZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgdm9pZCBDb21waWxlU2hhZGVyKHVpbnQz
Ml90IGFyZzApCisgICAgdm9pZCBDb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHZvaWQg
Q29weVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlRnJhbWVidWZmZXIo
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVQ
cm9ncmFtKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
Q3JlYXRlUmVuZGVyYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgQ3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+ICh1aW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRleHR1cmUoKSAtPiAodWludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDdWxsRmFjZSh1aW50MzJfdCBt
b2RlKQorICAgIHZvaWQgRGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxl
dGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50
MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisg
ICAgdm9pZCBEZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVRleHR1
cmUodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAg
IHZvaWQgRGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB2b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5l
YXIsIGZsb2F0IHpGYXIpCisgICAgdm9pZCBEZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWlu
dDMyX3QgYXJnMSkKKyAgICB2b2lkIERpc2FibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRHJhd0FycmF5
cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHZvaWQg
RHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9p
ZCBFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIEZpbmlz
aCgpCisgICAgdm9pZCBGbHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZl
cnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1
aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90
IG1vZGUpCisgICAgdm9pZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9p
ZCBHZXRBY3RpdmVBdHRyaWIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChi
b29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBh
cmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9n
cmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRB
dHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0U3RyaW5nKHVpbnQzMl90IG5hbWUpIC0+IChTdHJpbmcgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGbG9hdHYodWludDMyX3QgcG5hbWUs
IHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2
NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUpIC0+IChpbnQ2
NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0aSh1aW50
MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
cG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJy
YXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRFcnJvcigp
IC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRh
Y2htZW50LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5n
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90
IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUpIC0+IChJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3QsIDI+IHJhbmdlLCBHQ0dMaW50IHByZWNpc2lvbikgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9y
bWZ2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6
ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVp
bnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGlu
dDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0
aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRl
eCwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHZvaWQg
SXNCdWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBJc0VuYWJsZWQodWludDMyX3QgY2FwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIElzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1Byb2dyYW0odWludDMyX3Qg
YXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1JlbmRl
cmJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIElzU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgSXNUZXh0dXJlKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgTGluZVdpZHRoKGZsb2F0IGFyZzApCisg
ICAgdm9pZCBMaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgUGl4ZWxTdG9yZWko
dWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZs
b2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wg
aW52ZXJ0KQorICAgIHZvaWQgU2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBTaGFkZXJTb3VyY2UodWludDMyX3QgYXJn
MCwgU3RyaW5nIGFyZzEpCisgICAgdm9pZCBTdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQz
Ml90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxGdW5jU2VwYXJhdGUodWlu
dDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisg
ICAgdm9pZCBTdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2tT
ZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE9w
KHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lk
IFN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90
IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFRleFBhcmFtZXRlcmYodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBUZXhQYXJhbWV0
ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAg
dm9pZCBVbmlmb3JtMWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB2b2lkIFVuaWZv
cm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAg
ICB2b2lkIFVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgdm9pZCBV
bmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
dikKKyAgICB2b2lkIFVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5
KQorICAgIHZvaWQgVW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMy
X3QgeCwgaW50MzJfdCB5KQorICAgIHZvaWQgVW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJf
dCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0z
ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2
b2lkIFVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50
MzJfdCB6KQorICAgIHZvaWQgVW5pZm9ybTNpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtNGYoaW50MzJfdCBsb2NhdGlv
biwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFVuaWZvcm00
ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2
b2lkIFVuaWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50
MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBVbmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgy
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9u
LCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAg
dm9pZCBVbmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVzZVByb2dyYW0odWlu
dDMyX3QgYXJnMCkKKyAgICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgVmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQs
IDE+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9h
dCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRy
aWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lk
IFZlcnRleEF0dHJpYjNmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dCwgMz4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0
ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+IHZhbHVlcykK
KyAgICB2b2lkIFZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6
ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHZvaWQgVmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YTAodWludDMyX3Qg
dGFyZ2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlckRh
dGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhLCB1
aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1
aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2
b2lkIFJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0
YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCkKKyAgICB2b2lkIFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlMkQx
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJ
bWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwg
aW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVs
cykKKyAgICB2b2lkIFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDEodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdl
U2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQw
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90
IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQs
IGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisg
ICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2
NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwg
aW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9p
ZCBEcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWlu
dDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lk
IFZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisg
ICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBJc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBDb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0
ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2
NF90IGFyZzQpCisgICAgdm9pZCBHZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWlu
dDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlcihpbnQz
Ml90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBp
bnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkx
LCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRl
eHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90
IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgdm9pZCBJbnZhbGlk
YXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiBhdHRhY2htZW50cykKKyAgICB2b2lkIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50
MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFjaG1lbnRzLCBp
bnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAg
dm9pZCBSZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQg
VGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRl
eFN0b3JhZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgp
CisgICAgdm9pZCBUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdl
M0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1h
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3Qg
Ym9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB2b2lkIFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAg
dm9pZCBUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMy
X3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQz
Ml90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTNEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlv
ZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlM0QwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwg
aW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAg
ICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBk
ZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlv
ZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB2b2lkIEdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwg
U3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgVW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB2b2lkIFVu
aWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAg
IHZvaWQgVW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3Qg
djEsIHVpbnQzMl90IHYyKQorICAgIHZvaWQgVW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1
aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB2
b2lkIFVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTN1aXYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2
b2lkIFVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAg
dm9pZCBVbmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4
Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgyZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0
cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5k
ZXgsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lk
IFZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRl
eCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB2
b2lkIFZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50
MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9k
ZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIENsZWFyQnVmZmVyaXYodWludDMyX3Qg
YnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
dmFsdWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJ1aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90
IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlcykKKyAgICB2
b2lkIENsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZmko
dWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90
IHN0ZW5jaWwpCisgICAgdm9pZCBDcmVhdGVRdWVyeSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAg
IHZvaWQgSXNRdWVyeSh1aW50MzJfdCBxdWVyeSkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBCZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVl
cnkpCisgICAgdm9pZCBFbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRRdWVy
eSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5
LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQ3JlYXRlU2FtcGxlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIERlbGV0ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lk
IElzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEJpbmRTYW1wbGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBs
ZXIpCisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJf
dCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQz
Ml90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIEdldFNh
bXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxv
YXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVy
aSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBGZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1
aW50MzJfdCBmbGFncykgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgSXNTeW5jKHVpbnQ2NF90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgRGVsZXRlU3luYyh1aW50NjRfdCBhcmcwKQorICAgIHZvaWQgQ2xpZW50
V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQp
IC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFdhaXRTeW5j
KHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgdm9p
ZCBHZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygp
IC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHZvaWQgSXNUcmFuc2Zvcm1GZWVkYmFj
ayh1aW50MzJfdCBpZCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBCaW5kVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAg
ICB2b2lkIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAg
ICB2b2lkIEVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdmFyeWluZ3MsIHVpbnQz
Ml90IGJ1ZmZlck1vZGUpCisgICAgdm9pZCBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGF1c2VUcmFuc2Zv
cm1GZWVkYmFjaygpCisgICAgdm9pZCBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9p
ZCBCaW5kQnVmZmVyQmFzZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBidWZmZXIpCisgICAgdm9pZCBCaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFy
ZzQpCisgICAgdm9pZCBHZXRVbmlmb3JtSW5kaWNlcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8
U3RyaW5nPiB1bmlmb3JtTmFtZXMpIC0+IChWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwg
VmVjdG9yPHVpbnQzMl90PiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUpIC0+IChWZWN0
b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3Jt
QmxvY2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSkgLT4g
KHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5p
Zm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRl
eCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm1C
bG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgs
IHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWlu
dDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMy
X3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGlu
dDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRl
cikKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygp
IC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZl
cnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
QmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBHZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQor
ICAgIHZvaWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUG9wR3Jv
dXBNYXJrZXJFWFQoKQorICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50
MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3Vu
dCkKKyAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGlu
dDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmlt
Y291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IGRpdmlzb3IpCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmZmU4YzFmYzdh
ZmExNzJmMWJiOWM3MzQyNjc1YzVkZmU2ZTE3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlv
bnNHZW5lcmF0ZWQuaApAQCAtMCwwICsxLDExODMgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUg
aXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorLy8gVGhp
cyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQor
Ly8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNl
CisgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOworICAgIH0KKyAgICB2b2lkIHN5
bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAgfQorICAgIHZvaWQgbW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CisgICAgfQorICAgIHZvaWQgYXR0YWNo
U2hhZGVyKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgfQorICAgIHZv
aWQgYmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJp
bmcmJiBuYW1lKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24o
YXJnMCwgaW5kZXgsIG5hbWUpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVm
ZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1
ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBi
aW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQg
YmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBo
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KKyAg
ICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBt
b2RlQWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0
ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuYyh1aW50MzJf
dCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5i
bGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3Rvcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jU2Vw
YXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhh
LCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5j
U2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgfQorICAg
IHZvaWQgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjbGVhcih1aW50MzJfdCBt
YXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICB9CisgICAg
dm9pZCBjbGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0
IGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckRlcHRoKGZsb2F0IGRlcHRoKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsKKyAgICB9CisgICAg
dm9pZCBjbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
bGVhclN0ZW5jaWwocyk7CisgICAgfQorICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29s
IGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNvbG9yTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4oYWxwaGEpKTsKKyAgICB9CisgICAgdm9pZCBjb21waWxlU2hhZGVy
KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIo
YXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisgICAgfQorICAgIHZvaWQg
Y29weVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVGcmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVSZW5kZXJidWZmZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVT
aGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hh
ZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgY3JlYXRlVGV4dHVyZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVh
dGVUZXh0dXJlKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAg
ICB9CisgICAgdm9pZCBjdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5jdWxsRmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIodWlu
dDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzAp
OworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIGRlbGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVsZXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJi
dWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVu
ZGVyYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1aW50MzJfdCBh
cmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoYXJnMCk7CisgICAg
fQorICAgIHZvaWQgZGVsZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVu
Yyh1aW50MzJfdCBmdW5jKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVu
Yyk7CisgICAgfQorICAgIHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZGVwdGhNYXNrKHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihmbGFnKSk7Cisg
ICAgfQorICAgIHZvaWQgZGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgfQorICAg
IHZvaWQgZGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihhcmcwLCBhcmcxKTsKKyAgICB9CisgICAg
dm9pZCBkaXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlz
YWJsZShjYXApOworICAgIH0KKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50
MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUs
IGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxl
bWVudHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwg
Y291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAg
ICB2b2lkIGVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVu
YWJsZShjYXApOworICAgIH0KKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQz
Ml90IGluZGV4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZmluaXNoKCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZmluaXNoKCk7CisgICAgfQorICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5mbHVzaCgpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVu
ZGVyYnVmZmVydGFyZ2V0LCB1aW50MzJfdCBhcmczKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZl
cnRhcmdldCwgYXJnMyk7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVp
bnQzMl90IGFyZzMsIGludDMyX3QgbGV2ZWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBs
ZXZlbCk7CisgICAgfQorICAgIHZvaWQgZnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmZyb250RmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZW5l
cmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdl
bmVyYXRlTWlwbWFwKHRhcmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5k
ZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92
ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9n
cmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYXJnMik7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsK
KyAgICB9CisgICAgdm9pZCBnZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcm
JiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTdHJp
bmcodWludDMyX3QgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBnZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3Rh
dGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRG
bG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEoKSks
IHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXJ2KHVpbnQzMl90IHBu
YW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBWZWN0b3I8R0NHTGludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUp
LCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGdldEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xpbnQ2NCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEludGVnZXI2NChwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdl
cjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJv
Z3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUs
IHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVm
ZXJlbmNlPGJvb2w+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3Rv
cjxHQ0dMYm9vbGVhbiwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAw
KTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0
X2Nhc3Q8Ym9vbCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIGdldEVycm9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFcnJvcigpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1l
bnQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtSW5m
b0xvZyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoYXJnMCwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVy
SW5mb0xvZyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2co
YXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsK
KyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVy
VHlwZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+LCBpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIHN0ZDo6YXJyYXk8R0NHTGludCwgMj4gcmFuZ2UgeyB9OworICAg
ICAgICBHQ0dMaW50IHByZWNpc2lvbiA9IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVj
aXNpb24pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3QsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHJhbmdlLmRhdGEoKSksIHJhbmdl
LnNpemUoKSksIHByZWNpc2lvbik7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKGFyZzApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1mdih1aW50MzJf
dCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRp
Y19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5p
Zm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2
YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3Jt
aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXpl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZh
bHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50
NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9y
PEdDR0x1aW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOwor
ICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVl
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBT
dHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBu
YW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTHNpemVpcHRyIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBw
bmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7
CisgICAgfQorICAgIHZvaWQgaXNCdWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xi
b29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+aXNCdWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNFbmFibGVkKHVpbnQzMl90
IGNhcCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNFbmFibGVkKGNhcCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgaXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0ZyYW1l
YnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcw
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5pc1Byb2dyYW0oYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
aXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJi
dWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNTaGFkZXIodWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+aXNTaGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNU
ZXh0dXJlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVGV4dHVyZShhcmcwKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgdm9pZCBsaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+bGluZVdpZHRoKGFyZzApOworICAgIH0KKyAgICB2b2lkIGxpbmtQcm9ncmFt
KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKGFy
ZzApOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90
IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFy
YW0pOworICAgIH0KKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1
bml0cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVu
aXRzKTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZUNv
dmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihpbnZlcnQp
KTsKKyAgICB9CisgICAgdm9pZCBzY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Npc3Nv
cih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzaGFkZXJTb3VyY2UodWlu
dDMyX3QgYXJnMCwgU3RyaW5nJiYgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hh
ZGVyU291cmNlKGFyZzAsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQz
Ml90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0
ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCBy
ZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5j
U2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2ls
TWFzayh1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFz
ayhtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVpbnQzMl90IGZh
Y2UsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNr
U2VwYXJhdGUoZmFjZSwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90
IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+c3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQg
c3RlbmNpbE9wU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3Qg
emZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2ls
T3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHRl
eFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0p
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwg
cGFyYW0pOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0xZihsb2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmdihp
bnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0xaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRp
b24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEo
KSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRp
b24sIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0y
Zihsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihs
b2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYu
ZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBs
b2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90
IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtM2kobG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaXYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihs
b2NhdGlvbiwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHks
IGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
NGkobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5z
cG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFu
c3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2
YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFr
ZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgp
KSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBh
cmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0K
KyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52YWxpZGF0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFs
dWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1h
a2VHQ0dMU3BhbjwxPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5k
YXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgs
IGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YjJmKGluZGV4LCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMy
X3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+JiYgdmFsdWVzKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjwy
PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7Cisg
ICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNm
KGluZGV4LCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMy
X3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+JiYgdmFsdWVzKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjwz
PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7Cisg
ICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRl
eEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWI0ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFs
dWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1h
a2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5k
YXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBp
bmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMy
X3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQp
KTsKKyAgICB9CisgICAgdm9pZCB2aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdw
b3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVp
bnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlw
dHI+KGFyZzEpLCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTEodWludDMyX3Qg
dGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNh
Z2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpLCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1aW50MzJf
dCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYm
IGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCByZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IGRhdGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdD
R0xjaGFyLCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQz
Ml90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVh
ZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxH
Q0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVs
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4o
cGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwg
aW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZz
ZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXpl
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
aW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGlu
dDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAg
ICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJf
dCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3Vu
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUs
IGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQp
OworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVp
bnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRp
dmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVW
ZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQz
Ml90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmJpbmRWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5
QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwg
dWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQs
IHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGlj
X2Nhc3Q8R0NHTGludHB0cj4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+
KGFyZzQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdl
dCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXpl
X3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0
YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIGRhdGEpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBibGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJf
dCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50
MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kw
LCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIp
OworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCBsYXllcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAg
IH0KKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNo
bWVudHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVy
KHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2ht
ZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFy
Z2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFj
aG1lbnRzLmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSksIHgsIHksIHdpZHRoLCBoZWlnaHQp
OworICAgIH0KKyAgICB2b2lkIHJlYWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5yZWFkQnVmZmVyKHNyYyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0
YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9Cisg
ICAgdm9pZCB0ZXhTdG9yYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlM0Qo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDAo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3Jk
ZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwg
aW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lk
IHRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBw
aXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBk
ZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29w
eVRleFN1YkltYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRl
eEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQor
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNl
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90
IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBm
b3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQg
Z2V0RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
MXVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT51bmlmb3JtMXVpKGxvY2F0aW9uLCB2MCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3Qg
djEsIHVpbnQzMl90IHYyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxv
Y2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpKGludDMyX3Qg
bG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90
IHYzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwg
djEsIHYyLCB2Myk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
MnVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVp
bnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTN1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFr
ZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aXYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wg
dHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZs
b2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgyeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bv
c2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRh
LmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4
MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0
eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwg
ZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJf
dCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYg
ZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0
aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihpbnQzMl90IGxvY2F0aW9u
LCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGlu
dDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVy
dGV4QXR0cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRp
dihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+
KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aSh1aW50
MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3Qg
dykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwg
eSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90
IHNpemUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXpl
LCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0K
KyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0
LCB1aW50MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwg
c3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkp
OworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1
ZnMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZm
ZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHZh
bHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRy
YXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2
YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVm
ZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xl
YXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7Cisg
ICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJh
d2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZXMpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwg
dmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkodWludDMyX3Qg
YnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVm
ZmVyLCBkZXB0aCwgc3RlbmNpbCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90
IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeShxdWVyeSk7Cisg
ICAgfQorICAgIHZvaWQgaXNRdWVyeSh1aW50MzJfdCBxdWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29s
ZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
aXNRdWVyeShxdWVyeSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJv
b2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblF1
ZXJ5KHRhcmdldCwgcXVlcnkpOworICAgIH0KKyAgICB2b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRh
cmdldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9
CisgICAgdm9pZCBnZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0x1aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2FtcGxlcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVTYW1wbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQz
Ml90IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2Ft
cGxlcik7CisgICAgfQorICAgIHZvaWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmlzU2FtcGxlcihzYW1wbGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5k
U2FtcGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJf
dCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2Ft
cGxlciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1
aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7
CisgICAgfQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwg
dWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2Ft
cGxlciwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWlu
dDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxl
ciwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgZmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTHN5bmMgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5mZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0
PGludHB0cl90PihyZXR1cm5WYWx1ZSkpKTsKKyAgICB9CisgICAgdm9pZCBpc1N5bmModWludDY0
X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5
bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGRl
bGV0ZVN5bmModWludDY0X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50
MzJfdCBmbGFncywgdWludDY0X3QgdGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNsaWVudFdh
aXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90Pihh
cmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMdWludDY0Pih0aW1lb3V0KSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB3YWl0U3lu
Yyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT53YWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTGludDY0
Pih0aW1lb3V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3luY2kodWludDY0X3QgYXJnMCwgdWlu
dDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3luY2kocmVpbnRlcnByZXRfY2FzdDxH
Q0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVHJhbnNmb3Jt
RmVlZGJhY2soKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAg
IH0KKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgfQor
ICAgIHZvaWQgaXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xi
b29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+aXNUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFRyYW5z
Zm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKTsKKyAgICB9Cisg
ICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZl
TW9kZSk7CisgICAgfQorICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lk
IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmlu
Zz4mJiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVy
TW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQz
Ml90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8g
YXJnMiB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9Cisg
ICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZl
ckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBi
dWZmZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0
X3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdl
dCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUlu
ZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB1bmlmb3JtTmFtZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9n
cmFtLCB1bmlmb3JtTmFtZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXModWludDMyX3Qg
cHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90PiYmIHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8aW50MzJfdD4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2Nr
SW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgdW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJf
dCB1bmlmb3JtQmxvY2tJbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxv
Y2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1CbG9j
a0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVp
bnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9j
a0JpbmRpbmcpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQz
Ml90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwg
dWludDY0X3QgcGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxHQ0dMaW50LCA0PiBwYXJhbXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNTaXplKSwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwg
dW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJf
dCo+KHBhcmFtcy5kYXRhKCkpLCBwYXJhbXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5n
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90
IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQz
Ml90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1
aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5ibGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gx
LCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAg
fQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNy
ZWF0ZVZlcnRleEFycmF5T0VTKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVModWludDMy
X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0
ZVZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXlPRVMo
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4
QXJyYXlPRVMoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJv
b2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5i
aW5kVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlu
c2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKKyAgICB9Cisg
ICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKKyAg
ICB9CisgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtlckVYVCgpOworICAgIH0KKyAgICB2b2lk
IGRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkp
LCBidWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHBy
aW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAg
fQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50
MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1j
b3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9p
ZHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUo
aW5kZXgsIGRpdmlzb3IpOworICAgIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21h
Yy9HUFVQcm9jZXNzTWFjLm1tCmluZGV4IGI3YmI2M2IyOWFkODAyMTcyZGYyN2ExMjg5NWJiMTk5
OGZhNGI2YjAuLjI0YzQzN2NhYWU3ZjhmOWE5YWZmOTI3MDNlZmNmOWRhMDMxZTRjNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KQEAgLTMyLDgg
KzMyLDggQEAKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNp
bXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElT
ZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQs
OSArNDQsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB2b2lkIEdQVVByb2Nlc3M6Omlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQor
I2lmIDAKICAgICAvLyBIYXZpbmcgYSB3aW5kb3cgc2VydmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBw
cm9jZXNzIHdvdWxkIHJlc3VsdCBpbiBzcGluIGxvZ3MgKDxyZGFyOi8vcHJvYmxlbS8xMzIzOTEx
OT4pLgotICAgIE9TU3RhdHVzIGVycm9yID0gU2V0QXBwbGljYXRpb25Jc0RhZW1vbih0cnVlKTsK
LSAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBlcnJvciA9PSBub0Vycik7CisgICAgYXV0byByZXR2
YWwgPSBDR1NTZXREZW55V2luZG93U2VydmVyQ29ubmVjdGlvbnModHJ1ZSk7CisgICAgUkVMRUFT
RV9BU1NFUlQocmV0dmFsID09IGtDR0Vycm9yU3VjY2Vzcyk7CisgICAgQ0dTU2h1dGRvd25TZXJ2
ZXJDb25uZWN0aW9ucygpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGxhdW5jaFNlcnZpY2VzQ2hl
Y2tJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBw
bGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgppbmRleCBkYjA2ZTUzNGY3ZjUxZDJl
YmQwMzgyNWY1ODI0NWY4NDk2ZjhiMTc5Li5lZDEwMGIzNmVkNmY0NmQ0YWFmNjM1NDQ3Nzg4MmFi
NzkzYTExYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5h
cHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgpAQCAtMjA3LDYgKzIwNyw3
IEBACiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkFBUEwsKERpc3BsYXlQaXBlfE9wZW5D
TGRpc2FibGVkfElPR3JhcGhpY3NfTEVSKHxfUmVnVGFnXzF8X1JlZ1RhZ18wfF9CdXN5XzIpfGFs
aWFzLXBvbGljeXxib290LWRpc3BsYXl8ZGlzcGxheS1hbGlhc3xtdXgtc3dpdGNoLXN0YXRlfG5k
cnYtZGV2fHByaW1hcnktZGlzcGxheXxzbG90LW5hbWUpIikKICAgICAoaW9raXQtcHJvcGVydHkt
cmVnZXggIyJeQVRZLChjYml0c3xmYl8obGluZWJ5dGVzfG9mZnNldHxzaXplKXxpbnRyZXYpIikK
ICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxEZXZpY2VOYW1lIikgOzsgTmVlZGVkIGJ5IE1ldGFs
IGNvbXBpbGVycworICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEVGSURpc3BsYXkiKQogICAgIChp
b2tpdC1wcm9wZXJ0eSAiQVRZLEZhbWlseU5hbWUiKSA7OyBEaXR0bwogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiQVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkJhY2tsaWdodEhhbmRs
ZSIpCkBAIC0yMTcsNiArMjE4LDkgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIkNhcHNMb2NrRGVs
YXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ2FzZVNlbnNpdGl2ZSIpCiAgICAgKGlva2l0LXBy
b3BlcnR5ICJDb25maWdTdGF0ZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExhbmVzIikKKyAg
ICAoaW9raXQtcHJvcGVydHkgIkRQTGlua0JpdCIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExp
bmtSYXRlIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRlc2NyaXB0aW9uIikKICAgICAoaW9raXQt
cHJvcGVydHkgIkRldmVsb3BtZW50IikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeRGV2
aWNlKCBDaGFyYWN0ZXJpc3RpY3N8RXFJRCkiKQpAQCAtMjI5LDEwICsyMzMsMTcgQEAKICAgICAo
aW9raXQtcHJvcGVydHkgIkZhbWlseSBJRCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JjZVN1
cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JtYXRzIikKKyAgICAoaW9raXQtcHJv
cGVydHkgIkZyYW1lYnVmZmVyRW5hYmxlZCIpCisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1
ZmZlclN0YXJ0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVQ29uZmlndXJhdGlvblZhcmlh
YmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURDQ0Rpc3BsYXlhYmxlIikKKyAgICAoaW9r
aXQtcHJvcGVydHkgIkdQVURlYnVnTnVsbENsaWVudE1hc2siKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiR3B1RGVidWdQb2xpY3kiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVUmF3Q291bnRlckJ1
bmRsZU5hbWUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVUmF3Q291bnRlclBsdWdpbkNsYXNz
TmFtZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJIRVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQt
cHJvcGVydHkgIkhJRFBvaW50ZXJBY2NlbGVyYXRpb25UeXBlIikKKyAgICAoaW9raXQtcHJvcGVy
dHkgIkh3Q3R4Q2FjaGVVcGRhdGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0Fj
Y2VsKERpc3BsYXlQaXBlQ2FwYWJpbGl0aWVzfEluZGV4fFR5cGVzfFJldmlzaW9uKSIpCiAgICAg
KGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPKENsYXNzfE1hdGNoQ2F0ZWdvcnl8TmFtZU1hdGNo
KSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPQXVkaW9Db250cm9sKENoYW5uZWxJ
RHxJRHxTdWJUeXBlfFVzYWdlfFZhbHVlKSIpCkBAIC0yODIsNiArMjkzLDggQEAKICAgICAoaW9r
aXQtcHJvcGVydHkgIklPUGFyZW50TWF0Y2giKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAj
Il5JT1BDSSgoQ2xhc3N8UHJpbWFyeXxQcm9wZXJ0eXwpTWF0Y2h8RXhwcmVzcyhDYXBhYmlsaXRp
ZXN8TGluayhTdGF0dXN8Q2FwYWJpbGl0aWVzKSl8TVNJTW9kZXxSZXNvdXJjZWR8VHVubmVsbGVk
KSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1BNSXNQb3dlck1hbmFnZWQiKQorICAgIChpb2tp
dC1wcm9wZXJ0eSAiSU9QZXJzb25hbGl0eVB1Ymxpc2hlciIpCisKICAgICAoaW9raXQtcHJvcGVy
dHktcmVnZXggIyJeSU9QbGF0Zm9ybShTZXJpYWxOdW1iZXJ8VVVJRCkiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiSU9Qb3dlck1hbmFnZW1lbnQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qcm9i
ZVNjb3JlIikKQEAgLTMxNyw2ICszMzAsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiUHJvdG9j
b2wgQ2hhcmFjdGVyaXN0aWNzIikKICAgICAoaW9raXQtcHJvcGVydHkgIlJlbW92YWJsZSIpCiAg
ICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXlJlc2V0T24oTG9ja3xVbmxvY2spTXMiKQorICAg
IChpb2tpdC1wcm9wZXJ0eSAiU1dJUF9wcm9wZXJ0aWVzIikKICAgICAoaW9raXQtcHJvcGVydHkg
IlNhZmVFamVjdFJlcXVlc3RlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTYW1wbGVSYXRlcyIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJTZXJpYWwgTnVtYmVyIikKQEAgLTMzOCw2ICszNTIsNyBA
QAogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXR0YWNoZWQtZ3B1LWNvbnRyb2wtcGF0aCIpCiAgICAg
KGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXmF1ZGlvLShjb2RlYy1pbmZvfGRldmljZS1tdmFsdWV8
ZGV2aWNlLW52YWx1ZXxzZWxlY3RvcikiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXYtc2lnbmFs
LXR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiYmFja2xpZ2h0LVBXTS1mcmVxIikKICAgICAo
aW9raXQtcHJvcGVydHkgImJjZFZlcnNpb24iKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAj
Il4oYm9hcmR8ZGV2aWNlfHJldmlzaW9ufHN1YnN5c3RlbXx2ZW5kb3IpLWlkIikKICAgICAoaW9r
aXQtcHJvcGVydHkgImJvb3QtZ2FtbWEtcmVzdG9yZWQiKQpAQCAtMzUwLDYgKzM2NSwxMSBAQAog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiY29ubmVjdG9yLXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0
eS1yZWdleCAjIl4oZGV2aWNlfHJldmlzaW9ufHN1YnN5c3RlbS12ZW5kb3J8dG91Y2gtc2l6ZSkt
aWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZGV2aWNlX3R5cGUiKQorICAgIChpb2tpdC1wcm9w
ZXJ0eSAiZGlzcGxheS1icGMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1jb25uZWN0
LWZsYWdzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktbGluay1jb21wb25lbnQtYml0
cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXBpeGVsLWNvbXBvbmVudC1iaXRzIikK
KyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJkcG0iKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZXJyb3JkYiIpIDs7IE5lZWRlZCBmb3IgT3Bl
bkdMIG9uIG9sZGVyIGhhcmR3YXJlCiAgICAgKGlva2l0LXByb3BlcnR5ICJmaWxldmF1bHQtaW1h
Z2UiKSA7OyBOZWVkZWQgYnkgTGF1bmNoU2VydmljZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggNmE1YzY3MjVj
YWE5YmRiODY3YWI4NmI4YzU3ZjM2ZGUyYzg5NmRjZi4uYmU3ZjUyMjBiZTliODVmODY4YTVmODM3
ZWZlZDY2ZGRmOTVmMjk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTM5LDEwICszOSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVt
b3RlTGVnYWN5Q0RNUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggNDdmNWQy
ZjI3MGZhNWRlNGZhZGUxNTE0NDQyMTExNzk0ZWQzNmQyOC4uMmM1ZTdkZTdkMmU3NTY5NjBhM2Yz
ZWM4NzZjOGI4MjVjNmU0NWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5
Q0RNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBhOThjZmE0YzlmODAyMzE5MDRm
OGVmMGVhYTkzNjIyOWFmYTk3NTk4Li5mZWM2NWNmNjJiNjY3NGI4MzAwYzUwY2Q0MzM0MTVlOTE1
MTE0NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2UuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAppbmRleCBkODliODAzZjZh
YmY0MWM4ZTllZGRlNDE0Mjc2OTMyODI2ZDFiMzM4Li4wODFlYjMxODBkMDIxNjRiNWFhM2Q1NDgw
NmY3MmM3ZWRjMGNiMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaApAQCAtMjcsMTUgKzI3LDE2
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFS
ZXNvdXJjZUlkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvUG9saWN5Q2hlY2tlci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29u
bmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCA2YmZiZmFmYjIwNDQ3ODMwZDczMGMz
OGM1NWQ5MTYwMjJjMjNkMzE2Li4wNmUzMDllNGQ1N2VhMDQ3ZjVlZDgyOTAyNThiMTljYmNkYTYx
OTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTM4LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewog
Y2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAppbmRleCAyNDVjZjQw
ZGZjNmZjNzI0MTc0OTljOTk2ZWVhOTVmMGEzYThkNjlhLi44NjgyY2Q3OTVhNWY1NDRhYmI3OGU3
YzFiODU4N2I5Njg4M2Y5NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTI5LDcgKzI5LDYg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IDM5MGMwY2UxYzI3YjYwOGRjOTdhYWZhNTE4
NjM2MTg4MGMzYWY0ZDMuLmMzMzc4MzMzYzAyNjY2ZGE2MWFiYWM2NDk0NzAyMTIxZGI1ZTg2YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oCkBAIC0yNyw5ICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVy
LmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CkBAIC0zOCw3ICs0MCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247
CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IDM2MDMxMGI3ZDEyMWQyODZkOGQxNjFmMTgzYWJkMGU3
NDViODM1MzMuLjg0M2JiMDZmN2I1NmM2ZTNjZmJlZTc5YTdlNDI4MWVmZWU4ZjlhNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5LmgKQEAgLTI4LDE0ICsyOCwxNSBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUg
PFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggZjhhYmMxZjQwNWZjMTQ2
OTQ3NWI0ZDkwYmFkM2Q1M2NhMGY4MDE0ZS4uNjFjNDcwOGFlOTZkYmNhYTU2OTgwOWVlMTk5NWJl
ODE2YTkxZmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0Uo
TElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0j
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGli
V2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCA3ODhjNWYwMGMwMmY0
ZjE0OGZlZWNjZDM4ZDEwNjgxOGIwZDdlOTYxLi4zYWI0ZTRiMWNmMWMxNDEyMzBjMTNlNDU3NmM1
ZWQ2ZTZlZmMyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAgLTM2LDcgKzM3LDYg
QEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggN2E2MzM2
MzQ3YzAwN2U5N2I3M2I1NDM3NzQ5MTY4MzhkNjQwMzdkYS4uMWFhNTNjYzJmYjc3YmFmOWUzMjY1
MDcyMTA4MDlmZDc2Y2ZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMv
Q29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTI2LDcgKzI2LDYg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgiCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgog
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZjZlZDgxMWY1MzQyZmU0ODU1NTE3
NmY4OWQ1MTQ1NzU2MmM2NjU4NS4uMGJjZDU2NzNjOTM0NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJj
MjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90
b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5o
IgpAQCAtMzksMTAgKzQwLDYgQEAgT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9u
OwogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0gLy8gbmFtZXNwYWNlIElQQwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpA
QCAtMTEyLDQgKzEwOSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwCmluZGV4IGRkYmU0ZWVkZDQ0MWRmODdjNTVhZDMzMGYwNDJjY2RjZmFkZmI5MGIuLjY1
MWZmMjU0ZjkwNWMxNmE5MGNiNDgyYzk3NzNkNGFjNzQyOTRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgi
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKICNpbmNsdWRlICJEb3dubG9hZFBy
b3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oCmluZGV4IDM4YWYzNTA4MDc0NjQyOTNiOTVmZmFmMDU5ZmRlYzM2OTAx
NzcyNzQuLjkzZjAzYTgyNTVmMWFlNzE3MzgzYzAwMjkwYTI0ZjkxY2E3YzY1ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRNb25pdG9yLmgiCkBAIC00NCwxMCArNDUsNiBAQCBPQkpDX0NM
QVNTIE5TUHJvZ3Jlc3M7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKICNl
bmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdj
MTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4uNzI2ZGQ5OTBiYWZkNDM5NGI1YWZjMDMyYTFj
ZjIwZjE4NDljNDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAKLSNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAxNjVmMWM3MjY3
OGZhNTAuLjk4MGEwNmY3ODM5ZGJkNWU5ZjlkNTA0NTQwOWEzM2Q3N2IxYzAzODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3du
bG9hZE1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgpAQCAtNDksNyArNTAsNiBA
QCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5u
ZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggNDQ5YjEzZDhlMDdiMmNkMDQyYzRiYTM2MzZhYjc5M2QzN2IxYzNmNC4uYzc3
ODg4MTFmMDMyZDU4ZjhiNTI3NzM2ZTFkMjI3ODQxMGY5MTNhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2
LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0
Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIK
ICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDMxOTY0MTkwZDE0MWQ1NDlk
YTBiYWYyZGM4YmYyOTdiNGU1ODFlODkuLjA0MzRiZjg4MDlhN2ViM2VjYzE4ZThmNjUwY2MwMjc4
YWU2ZWI1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KQEAg
LTQwLDcgKzQxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNWI0ODljYzUzOGY3YzA3MTUxMDEw
NmM1OGY1YzA5NGVjOWE4ZTFiOC4uNDhjODgzYmZjMGZjN2Q1MDFjOGE0YTRlNzY4NGNjYzMzZTM4
YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCmluZGV4IDUyZWMzOTI2OTAyMThlZGU2NjhkNTVl
NjM4ZDhlMTc1MDJmZDZlZTUuLjczNDI5YTAyNzkwNmI0MTZhMzhjMGM2YjM5NDZhMGRiOWZiMjA2
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+
CkBAIC0zNyw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBj
bGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkMzNjYmZmMTA4
OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi5kMzdkNzgwNjk4M2JiYTU0N2NhMGY5MjM1
ZWI0YmY2YjczMTU2NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgpAQCAtNDMsNyArNDQsNiBAQCBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
b2NrZXRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2su
aAppbmRleCBkYjU3OTVkZDIxN2Y0NWFkNWY2N2UzMGI3OTFmOTJlMjc2YzAyOTg2Li45NjFlNDY0
NTliZTc3MTc3ZTI2MDVlN2Q4NjUyYWRhODAyMDk3YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUg
IldlYlNvY2tldFRhc2tTb3VwLmgiCiAjZWxzZQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7Ci19CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAppbmRl
eCBkYWM2OTM1MDdlYjNlZmNlYTZkMTA5NDgwMWJjMDFiMzZmZTI2MzlkLi5lNjgyNmU0N2U4Mzk1
OTQwMjhhZjhmNGFlZDIzOTJiNGIwNWQyZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKQEAgLTI3LDE1ICsy
NywxMiBAQAogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQogCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s7CiAK
LW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29j
a2V0VGFza0NvY29hLm1tCmluZGV4IDg1NTM0ODc0NDA0Y2UyYmFhNDRhZTY1NjU0N2QzNzIyNTMz
MmVhYjguLjkwYmM0MDliZmZiNzBhMGVlOWU3MzU4YjM4Njc1OTdkMjlmMjRlMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFz
a0NvY29hLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJT
T0NLRVQpCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNz
aW9uQ29jb2EuaCIKICNpbXBvcnQgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW1wb3J0IDxG
b3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKaW5kZXggNDVmYzY2OWQ3NjZh
NzYxYzVkNzczZGM5NWYwNTQxYTM4ZTM2ZjhlMy4uYTNlNzAxNGI1ZDhlYzA5NzM4ZmZhN2Q1NjY0
NTQ1MDEwZjA1MzQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tl
dFRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuaAppbmRleCBlNDIxYjllMWM3MTMxODQzNGY2NDg3ZjVmY2I1YTZhODdiZDczOTE5
Li4wODg5MjM5NTlmZTQ2MGZmMmJiYTRjOGMwODM5OTgwNjU3YmYzNDhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaApA
QCAtMjUsMTQgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29y
a1NvY2tldENoYW5uZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCmluZGV4IGUwMGEwY2NkZmE1ODc1YzAyOGM1MDUyMzExNDE3MjhlZTk1YjQzOTIuLmUz
OGJjMWM2MGFmNmRjZjAzNjk2NWFhNzhhYWRiZDZkOGQ0YjYyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtNTMsNiAr
NTQsNDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIg
ewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVj
dCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKKyAgICB1c2luZyBB
cnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUm
IGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5UmVm
ZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQorICAgIHN0YXRp
YyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZl
cmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29k
ZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKEV4dGVudCAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7Cisg
ICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4o
ZGF0YSksIEV4dGVudCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0
ZW50Pj4geworICAgIHVzaW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQs
IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2Up
CisgICAgeworICAgICAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJy
YXlSZWZlcmVuY2Uuc2l6ZSgpKSk7CisgICAgICAgIGlmICghYXJyYXlSZWZlcmVuY2Uuc2l6ZSgp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRh
KCkpLCBhcnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAg
IH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBl
KCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVu
Z3RoUmVmZXJlbmNlKHNpemUgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgICAgICBpZiAo
IWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
QXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8VD4+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uU2V0PFQ+JiBvcHRpb25TZXQpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVu
Y2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2QzMmJiNDU3YTViODg1ZjNkNTY2ODdlNzlmMTVjM2EyNjcxYmU2NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKQEAg
LTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxp
bWl0cz4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitpbmxp
bmUgY29uc3RleHByIHNpemVfdCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6
ZV90IEV4dGVudCA9IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4KK2NsYXNzIEFycmF5UmVm
ZXJlbmNlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlPFQs
IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4geworcHVibGljOgorICAgIEFycmF5UmVmZXJl
bmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6
ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV9zaXplKHNpemUp
CisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Cisg
ICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9y
KQorICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQorICAgICAgICAsIG1fc2l6ZSh2ZWN0
b3Iuc2l6ZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbV9zaXplOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQorICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbV9kYXRh
OworICAgIH0KKworICAgIFZlY3RvcjxUPiB2ZWN0b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAg
VmVjdG9yPFQ+IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7
CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3Qg
VCogbV9kYXRhIHsgfTsKKyAgICBzaXplX3QgbV9zaXplIHsgfTsKK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVuY2UgeworcHVibGlj
OgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZlcmVuY2Uo
Y29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUgPT0gRXh0ZW50KTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEFycmF5UmVmZXJlbmNl
KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKKyAgICAgICAgOiBtX2Rh
dGEodmVjdG9yLmRhdGEoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2ZWN0b3Iuc2l6ZSgpID09
IEV4dGVudCk7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICFFeHRlbnQ7IH0KKworICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIEV4dGVudDsgfQorCisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0Cisg
ICAgeworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICBpZiAoIWlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBFeHRlbnQpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBtX2RhdGEgeyB9Owor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorQXJyYXlS
ZWZlcmVuY2UoY29uc3QgV1RGOjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JikgLT4gQXJyYXlS
ZWZlcmVuY2U8VD47CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCmluZGV4IGVjM2QxNGFlOGYzZWMyNDcwNTQ3NjNjYWVlOTA5Y2MyYzg3
NWY1ZDguLmJiZDdhYmNiNGNkYzYwNDM4MmIxMDY1ZTMzMjM4NDQ5YzZhYzU5NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTIyNywxMCArMjI3LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIG1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgp
OwogCiAgICAgdm9pZCBwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVl
KCk7Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRo
QXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+ID0geyB9KTsgLy8gVGhyZWFk
LXNhZmUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMg
PSB7IH0pOyAvLyBUaHJlYWQtc2FmZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNl
bmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRp
b25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhy
ZWFkIG9ubHkuCisgICAgLy8gU3luYyBzZW5kZXJzIHNob3VsZCBjaGVjayB0aGUgU2VuZFN5bmNS
ZXN1bHQgZm9yIHRydWUvZmFsc2UgaW4gY2FzZSB0aGV5IG5lZWQgdG8ga25vdyBpZiB0aGUgcmVz
dWx0IHdhcyByZWFsbHkgcmVjZWl2ZWQuCisgICAgLy8gU3luYyBzZW5kZXJzIHNob3VsZCBob2xk
IG9uIHRvIHRoZSBTZW5kU3luY1Jlc3VsdCBpbiBjYXNlIHRoZXkgcmVmZXJlbmNlIHRoZSBjb250
ZW50cyBvZiB0aGUgcmVwbHkgdmlhIERhdGFSZWZlcmVyZW5jZSAvIEFycmF5UmVmZXJlbmNlLgor
ICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+OworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0
aW9uPiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgCiAg
ICAgLy8gVGhyZWFkLXNhZmUuCkBAIC0yNDksNyArMjUxLDcgQEAgcHVibGljOgogCiAgICAgLy8g
TWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
ICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHks
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vj
b25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5j
T3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2Vu
ZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQu
dG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC01NTEsNyAr
NTUzLDcgQEAgdm9pZCBtb3ZlVHVwbGUoc3RkOjp0dXBsZTxBLi4uPiYmIGEsIHN0ZDo6dHVwbGU8
Qi4uLj4mIGIpCiAgICAgVHVwbGVNb3ZlcjxzaXplb2YuLi4oQSksIHN0ZDo6dHVwbGU8QS4uLj4s
IHN0ZDo6dHVwbGU8Qi4uLj4+Ojptb3ZlKFdURk1vdmUoYSksIGIpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVv
dXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQordGVtcGxhdGU8
dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVDo6aXNTeW5jLCBTeW5jTWVzc2Fn
ZUV4cGVjdGVkKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01
NzAsMTUgKzU3MiwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNl
bmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmCiAgICAgLy8gTm93IHNlbmQg
dGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVwbHkuCiAgICAgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZN
b3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIGlmICghcmVwbHlE
ZWNvZGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICAvLyBEZWNvZGUgdGhlIHJlcGx5LgogICAgIE9wdGlvbmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJn
dW1lbnRzPiByZXBseUFyZ3VtZW50czsKICAgICAqcmVwbHlEZWNvZGVyID4+IHJlcGx5QXJndW1l
bnRzOwogICAgIGlmICghcmVwbHlBcmd1bWVudHMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICBtb3ZlVHVwbGUoV1RGTW92ZSgqcmVwbHlBcmd1bWVudHMp
LCByZXBseSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHJlcGx5RGVjb2RlcjsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDIyNWZkYTdiZWQyZmU4YzQwNDliNTU4NzA3OWZkMWUxNjM1NGY0ZmEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKLQotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVz
cGFjZSBJUEMgewotCi12b2lkIERhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAotewotICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoKnRo
aXMpOwotfQotCi1ib29sIERhdGFSZWZlcmVuY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewotICAgIHJldHVybiBkZWNvZGVyLmRlY29k
ZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFSZWZlcmVuY2UpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaAppbmRl
eCAzNDUwYzMxYjczZGRiNmFhNWVkY2UyYWY4MDAyOTg4N2M3OThlMjA1Li5kYmIzZDY5MjdmMzQx
YzVhYTkzZmMxMDczY2IwNzU2ZTNjYmEzN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw1NCArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKIAog
bmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotICAgIAot
Y2xhc3MgRGF0YVJlZmVyZW5jZSB7Ci1wdWJsaWM6Ci0gICAgRGF0YVJlZmVyZW5jZSgpID0gZGVm
YXVsdDsKLQotICAgIERhdGFSZWZlcmVuY2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEpCi0gICAgICAgICwgbV9zaXplKHNpemUpCi0gICAg
ewotICAgIH0KLQotICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBEYXRh
UmVmZXJlbmNlKGNvbnN0IFZlY3Rvcjx1aW50OF90LCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikK
LSAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKLSAgICAgICAgLCBtX3NpemUodmVjdG9y
LnNpemUoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIW1fc2l6ZTsgfQotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgCi0gICAgeyAKLSAgICAgICAgaWYg
KGlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4g
bV9kYXRhOyAKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQobV9kYXRhLCBtX3NpemUpOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0g
ICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIERhdGFSZWZlcmVuY2UmKTsKLQotcHJpdmF0ZToK
LSAgICBjb25zdCB1aW50OF90KiBtX2RhdGEgeyBudWxscHRyIH07Ci0gICAgc2l6ZV90IG1fc2l6
ZSB7IDAgfTsKLX07Cit1c2luZyBEYXRhUmVmZXJlbmNlID0gQXJyYXlSZWZlcmVuY2U8dWludDhf
dCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDc4YTQ2MzhlYjczMDViZmQx
OTEwODcwNjhkMzBiY2RiOGRmZTgyYWUuLjJjYjc5YjczMWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhi
YmFkYmRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xODYs
MjAgKzE4NiwxNSBAQCBib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIERlY29kZXI6OmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UpCitjb25zdCB1aW50OF90KiBEZWNvZGVyOjpkZWNvZGVGaXhl
ZExlbmd0aFJlZmVyZW5jZShzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKIHsKLSAgICB1
aW50NjRfdCBzaXplOwotICAgIGlmICghZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCi0gICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKDEsIHNpemUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKGFsaWdubWVudCwg
c2l6ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY29uc3QgdWludDhfdCogZGF0
YSA9IG1fYnVmZmVyUG9zOwogICAgIG1fYnVmZmVyUG9zICs9IHNpemU7CiAKLSAgICBkYXRhUmVm
ZXJlbmNlID0gRGF0YVJlZmVyZW5jZShkYXRhLCBzaXplKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZGF0YTsKIH0KIAogYm9vbCBEZWNvZGVyOjpyZW1vdmVBdHRhY2htZW50KEF0dGFj
aG1lbnQmIGF0dGFjaG1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXgg
YjcyZGQ4YWNlMjc3M2RiMzU1OWUzNjZkZDk1MjRmMjM0MWU1NWUwNi4uMzQ0Y2U2ODgyZmM5MDk4
NGIyZmE1N2JmOWM0OGI5NjUwZTBmZjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaApAQCAtNDAsNyArNDAsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKIGNsYXNzIEltcG9ydGFuY2VBc3NlcnRpb247CiBlbnVtIGNsYXNzIE1lc3NhZ2VG
bGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNzgsOCArNzcsOSBAQCBwdWJsaWM6CiAKICAgICBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwg
c2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIAotICAgIC8vIFRoZSBkYXRhIGluIHRoZSBkYXRh
IHJlZmVyZW5jZSBoZXJlIHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRo
ZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgotICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmKTsKKyAgICAvLyBUaGUg
ZGF0YSBpbiB0aGUgcmV0dXJuZWQgcG9pbnRlciBoZXJlIHdpbGwgb25seSBiZSB2YWxpZCBmb3Ig
dGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgorICAgIC8vIFJldHVy
bnMgbnVsbHB0ciBvbiBmYWlsdXJlLgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBjb25zdCB1aW50
OF90KiBkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQp
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Fy
aXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShUJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAK
aW5kZXggZmQ0MDkwNzc0YjJiYzJhNzYyOWI5YzAyZGM1NTRjNGNkYzk4ZjVjYi4uZTgzYTNlNGFm
ZjQyYTU3NTUwNWRjOGYwNzMxN2ExYzFhYzE5ZGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRW5jb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJFbmNvZGVyLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CkBAIC0xNDEsNyArMTQyLDcgQEAgdm9pZCBFbmNvZGVyOjp3cmFwRm9yVGVz
dGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gb3JpZ2luYWwpCiAKICAgICBvcmlnaW5hbC0+
c2V0U2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlz
cGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTo6WWVzKTsKIAotICAgIGVuY29kZVZhcmlhYmxl
TGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2Uob3JpZ2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5h
bC0+YnVmZmVyU2l6ZSgpKSk7CisgICAgKnRoaXMgPDwgRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+
YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJTaXplKCkpOwogCiAgICAgVmVjdG9yPEF0dGFjaG1l
bnQ+IGF0dGFjaG1lbnRzID0gb3JpZ2luYWwtPnJlbGVhc2VBdHRhY2htZW50cygpOwogICAgIHJl
c2VydmUoYXR0YWNobWVudHMuc2l6ZSgpKTsKQEAgLTIxNiwxMiArMjE3LDYgQEAgdm9pZCBFbmNv
ZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUsIHNpemVfdCBhbGkKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdm9p
ZCBFbmNvZGVyOjplbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJl
bmNlJiBkYXRhUmVmZXJlbmNlKQotewotICAgIGVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4o
ZGF0YVJlZmVyZW5jZS5zaXplKCkpKTsKLSAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoZGF0YVJl
ZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpLCAxKTsKLX0KLQogdm9pZCBFbmNv
ZGVyOjphZGRBdHRhY2htZW50KEF0dGFjaG1lbnQmJiBhdHRhY2htZW50KQogewogICAgIG1fYXR0
YWNobWVudHMuYXBwZW5kKFdURk1vdmUoYXR0YWNobWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRW5jb2Rlci5oCmluZGV4IDBlY2Y1NDFmNzc4NTg1MzZmMWZjZmE4MzZiNzZmMjQ4MmU0Yzlh
MTEuLmVhNjE5NjdiZTFlYmNiZDhiNmZiYmFhOGI4NWFmNDE4ZThkNTBjY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIElQ
QyB7CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVp
bnQ4X3Q7CiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIFNo
b3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNjIsNyAr
NjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2Rlcj4pOwogCiAgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKLSAgICB2b2lkIGVuY29kZVZhcmlh
YmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZlcmVuY2UmKTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlICYmICFz
dGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92
ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICB2b2lkIGVuY29kZShU
JiYgdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3Nh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA3
ZmQxODNhNTZhZTk4YjA2NjQ1ZmY3NTE0OGFjMjk4M2M1MmU0YWViLi40MTI5ZDRlMmI0OWQ1Yzhm
YzQxYTJkNjU0YWRjZDg5ZTg2YzYzN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SGFuZGxlTWVzc2FnZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIApAQCAtOTYsNyArOTcsNiBAQCBzdHJ1Y3QgQ29kaW5nVHlwZSB7CiAgICAgdHlwZWRlZiBz
dGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsK
IAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmPiB7CiAgICAgdXNpbmcgVHlwZSA9IERhdGFSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggNDZlMjFkOGQ5MzZmMmQ4YjUxNjdi
MjQ5Zjg4MTExNmZmZWI3ZDRiOS4uNzc0NjFkNTU1YjcyOTJjMjBlYmY1MTRhMzAyZDFkYzZlNzc3
MDExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAt
NTQsOSArNTQsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVz
c2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAg
IHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmlu
aXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQor
ICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKIApAQCAt
NjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZp
bml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkK
KyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vj
b25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pCiAgICAgewogICAgICAgICBBU1NFUlQobWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSk7CiAKQEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlw
ZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5k
U3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRp
ZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0
eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBzZW5kU3luYzxVPihzdGQ6OmZvcndhcmQ8VT4obWVzc2FnZSks
IFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRT
eW5jT3B0aW9ucyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcAppbmRleCA3YTNjYjMzODc2MzZkY2FmY2VhY2VhZDkxYjg2MzliN2Jh
NzYzNmM2Li41MDBmODM5ZGZhYWU5Mjk3ZjRkYzYzZGM2NjMwNTg3N2IyMmRmMmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNv
cHkuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCkBAIC00
OCw3ICs0OSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiBPcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YSkpCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmNwcAppbmRleCAyZjcyODVhYzBiNGJkNmRlMTFkZmViOWZlMzI4ZjAxYzk5
OTk1MGEwLi5lOTZkZmIxZmJmODkxY2Q0YTBjNzc0ZTg1YzkwNzg3NThhNmZlODI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwCmluZGV4IDg1MmVmNDNl
MDA4NjMxYzlmYWZhODIzMGM5MTljMTdhOWQ0YTI5YjYuLjIxNjExMzljMzAxNGYwZWFmYjNkYzQ3
Yzg1ZGE0MTkwYTJiYTA2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmluZ1JlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
aW5nUmVmZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgIkVuY29kZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOGIzNzQwZjRiMTAxYWQ5MGY1MGVkNTdj
ODUwYjkwMzBmY2M0MzBjMi4uNGIyMGM4NWFjNTM2MjM2NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5QT2Jq
ZWN0UHJveHkuaCIKICNpbmNsdWRlICJOUFJlbW90ZU9iamVjdE1hcC5oIgogI2luY2x1ZGUgIk5Q
UnVudGltZVV0aWxpdGllcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IGFkNGZjZDlkOGNjZjQyZjEyZWU0ODhlMDEz
NDZjNjE5YTcwMWI4ZDIuLmM3YTcwNTNjYmQyNmQyMDQ1NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzcsMTAgKzM4LDYgQEAKICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi1uYW1lc3BhY2Ug
SVBDIHsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CmluZGV4IDU3M2VkM2Q4ZWU5YmJmNDEwMzE2OGU3OWEwNTdmOWRiZGI5Yjg2
OTUuLjY3MzI0NGE2N2UwOTlmZmI3MTgwN2Q1NTUwYzQ1NGYzNjMxZGIxMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjAzLDYgKzIwMyw3IEBAIGRlZiBm
b3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfbmFtZXNwYWNlKG5hbWVzcGFjZSwga2luZF9hbmRfdHlw
ZXMpOgogCiBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
IHJldHVybiBmcm96ZW5zZXQoWworICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAg
ICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmlu
ZycsCkBAIC0yMTQsNiArMjE1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRf
ZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJywKICAgICAgICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXIn
LAogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLApAQCAtMjQzLDYg
KzI0NSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgICAgICdXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYktpdDo6RG93bmxvYWRJRCcsCiAgICAgICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRp
ZmllcicsCisgICAgICAgICdXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJL
aXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3Rv
bVByb3RvY29sSUQnLApAQCAtNTMwLDYgKzUzMyw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFk
ZXJzKHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBb
Jzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1l
bnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVj
dG9yLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCIn
XX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJn
dW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAn
SVBDOjpBcnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10s
ICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAg
fQogCiAgICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9QPHRlbXBsYXRlX25hbWU+Lis/KTwoP1A8cGFy
YW1ldGVyX3N0cmluZz4uKyk+JywgdGVtcGxhdGVfc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSURhdGEuY3BwCmluZGV4IDYxMzQzYmQ5NDEwNmI2ZTc4OWY4M2JjMjVkZTc5ZjdhNjA0MDkz
Y2MuLmM3ODIzMTZmMzA1N2EzY2FmOWQzZTIwNzdjODEzMjU1M2U2OTc1NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElEYXRhLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAppbmRleCA3YmEyMDdhYmIwYWNjYzhhNTcwZjVj
NjYzZjQ2Y2FhMjRhODI2ZDkxLi4zMWZkN2QwM2ZhZmUwMzk1ODc5NTJhNjM3OGQxYTljOGZmMmY3
OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCkBAIC04NCw3ICs4
NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9v
bCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNEYWVt
b24oKTsKICAgICB2b2lkIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwogICAgIHZvaWQgc2V0UU9T
KGludCBsYXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFPUyk7CiAjZW5kaWYKQEAgLTE4NCw0ICsx
ODMsMyBAQCBzdHJ1Y3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOWMyNmRiNGU5YTlmNmJhNzJlNDgyMGJi
NDA2YzJjZmJkZTExM2U5Yi4uZGEzNzM0Yzg0ZDY1NGQ4ZDAzY2E3OTI1ZjdiZDc1OTkxM2JjMzRh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0zMjIxLDQgKzMyMjEsODIgQEAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0
YT4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1
cm4geyBXVEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIg
PDwgYXR0cmlidXRlcy5hbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7Cisg
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLmFudGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFs
cGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7Cisg
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7Cisg
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8
IGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlz
V2ViR0wyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRy
aWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVu
Y29kZXIgPDwgYXR0cmlidXRlcy54ckNvbXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJp
YnV0ZXMuc3RlbmNpbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxp
ZWRBbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJ
Zk1ham9yUGVyZm9ybWFuY2VDYXZlYXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5zaGFyZVJlc291cmNlcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRl
bnNpb25zKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dl
clByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShX
RUJYUikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1
dGVzOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8
PCBhY3RpdmVJbmZvLm5hbWU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAg
ZW5jb2RlciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZl
SW5mby5zaXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0
aXZlSW5mbzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2Jj
ZGU1NWUyMTFlMTdjNGJlZGVmMTcwNWQ2Li4xZGFlOTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZh
YzE2ZTlmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaApAQCAtNzEsNiArNzEsMTMgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNs
dWRlICJBcnJheVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
R0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAz
LDYgKzIxMCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURC
S2V5UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlczsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewog
c3RydWN0IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNvcmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbj4gewogfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsK
KyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1
cz4gewogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTFBvd2VyUHJlZmVyZW5jZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAor
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisg
ICAgPjsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTky
MWUwODYzNjVkYmY3N2ZhOThlNDFjMWM3NGEzZTdlMjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVk
ZTdiMDQ4YTNkZWM2Y2Y4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29k
ZXIgPDwgc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxk
UGxheU1lZGlhSW5HUFVQcm9jZXNzOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8
IHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBz
aG91bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dE
ZWNvZGVyOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAg
QEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
aW5kZXggZDkxZTQ2MDM4ZjMwOWI1MTMwYmZkZTU4ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzEx
NDM1YmY0ZjkyY2YwNmZlNWUxMTIwNWE0YjUxMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0
cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNh
bnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQ
VVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNz
IHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJH
TEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQ
OURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsg
ZmFsc2UgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDliZDhhODE3NTQ5ZjU4ZmUzODNk
NzI1ZGE2NjNmM2JjNTRjYTBkNzQuLjc3ZTliNGQ1Y2M3NTJmYmNkYjZiNjVmOWFkYzI2MDE5NTZj
YTE0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJz
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnNDRi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1NvdXAuY3BwCmluZGV4IDFkODRlMmZlMjY4ZjM0NjBlYjI5NzVjNDJiYTk1ZDE0ZjFk
MjM1Y2YuLmZhMjY4ZDU4NGEwZmM4ZGY4N2EyMWZhNDU2MDc3YjhjNWQ0MmI4NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNT
b3VwLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJ
bmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENlcnRpZmljYXRlSQogICAgIC8v
IEVuY29kZSBzdGFydGluZyBmcm9tIHRoZSByb290IGNlcnRpZmljYXRlLgogICAgIGZvciAoc2l6
ZV90IGkgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAg
ICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdFtpIC0gMV0u
Z2V0KCk7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoSVBD
OjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKSk7Cisg
ICAgICAgIGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBj
ZXJ0aWZpY2F0ZS0+bGVuKTsKICAgICB9CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVp
bnQzMl90PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgQ2VydGlmaWNhdGVJbmZvJiBjCiAgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNl
cnRpZmljYXRlOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjaGFpbkxlbmd0aDsgaSsr
KSB7CiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7
Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjZXJ0
aWZpY2F0ZURhdGFSZWZlcmVuY2UpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRp
ZmljYXRlRGF0YVJlZmVyZW5jZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyhj
ZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI3Nyw0ICsyNzcsMyBAQCBPcHRp
b25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+ICBBcmd1bWVudENvZGVyPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdQogI2VuZGlmCiAKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDkxN2Yw
MWJlMWM5ZjhjYWEyYWJmN2YwZjg5MGY4OTVhM2YyZWY4Ni4uNTBjZGUxMmFmYTNhYTdmNzhjMjc5
ZWM4ZmI4MTk3NDRiNmZiMWVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApAQCAtMTM3LDcgKzEzOCw2IEBAIFBsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
Y3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwIEBuby11bmlmeQogUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIEBuby11bmlmeQotUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQog
UGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmlu
ZGluZy5jcHAgQG5vLXVuaWZ5CkBAIC02OTMsMyArNjkzLDUgQEAgV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAK
IFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisK
K1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDk5NTE4MDczMjgwZTljOTVhMmIyNWYwMGJjOGJmYjM4ODc2MjEyNDEuLjEz
ZmE3MTVlNzk2ZmM4NTkyMzE0YjNmZTdmMGQ0ZWE5YWVkODk4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTYzLDYgKzYzLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Q29jb2EubW0KIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlclByb3h5LmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkubW0KIAorCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKIAogUGxhdGZvcm0vY2xhc3NpZmll
ci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcApAQCAtNTcz
LDYgKzU3NCw4IEBAIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCiBXZWJQcm9j
ZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9p
bnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjg1LDYgKzY4
OCw3IEBAIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApp
bmRleCAyZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNkLi43MzdiNjI1ODE5
ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAK
ICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1l
c3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA0ZjM5OGI1MzBmNjA4
NTc1Yzk2N2I4M2M3NGZhMmY0MzI4ZjZjZTNiLi44Y2E5N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRh
N2M4NTYwM2E4YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlh
cnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaApAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQcm9j
ZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJ
UEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOworICAgIHVzaW5nIFNl
bmRTeW5jUmVzdWx0ID0gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlw
ZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0
ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0g
eyB9KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZp
dHkgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJv
Y2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZp
dHk6Olllcyk7CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNz
YWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6
OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBy
ZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3Rp
bmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBA
IC0xNjMsMTIgKzE2NCwxMiBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYg
bWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiAKLWJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zKQorQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpTZW5kU3luY1Jlc3VsdCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNl
dDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9B
U1NFUlQoVTo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAogICAgIGlmICghbV9jb25u
ZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBUcmFjZVNjb3BlIHNjb3BlKFN5bmNNZXNzYWdlU3RhcnQsIFN5bmNNZXNzYWdlRW5kKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9u
L1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5o
CmluZGV4IDgyM2MyMDJhODU2YTAxMzZkZDllYTc1OWYwZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRm
OGUwNzhmNGZiNGY4NzM0ZDdiZmQ2MDhkMjAzODgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlv
blNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6
YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZp
bmFsIDogcHVibGljIE5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJh
bWVMb2FkU3RhdGU6Ok9ic2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCmluZGV4IGZmOThiODRmYTg5ZGJlZmRk
NjQ2NjZiYmJhNDJmYzkwY2VjMzU3N2YuLjEyOGEzOTc3ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4
ZWNiZjU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90
b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KQEAgLTM1LDEwICszNiw2IEBACiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXI7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwot
fQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0Yzcx
ODc0YTEwZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQzZmE5MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYx
NjlhMDVkNjViNTdlZDBjODAxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBERlBsdWdp
bklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpA
QCAtODAsMTAgKzgxLDYgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDI0YjYzM2U0ODRkMmEz
NWJhNzRkNDVmMTJlZGUzNGEwZjc4Y2EwYTYuLjI0OGU1M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2Nl
MDAzNDVkYWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQu
aCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlw
dEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDEyOWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAx
YTA5YTg1NmQzY2NjYjIuLmE0ZDhkN2NkODA0ZTY1NjBkYWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxkU2hhcmVk
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC00OCwxMCArNDksNiBAQCBjbGFzcyBV
c2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDZlZDFjNjljMDhmYzU1OWZlMmEzZjNiOTM5NTBlYTgyOGQ2MGQ0YmYuLmNlYzcz
ZDEzZDA5OGQ3MTMxODQ4YWZiNTkzZWYwNzI0MTAyMThlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTgsNyArNTgsNiBAQAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3
aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNzky
Nyw2ICs3OTI2LDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5Ojpj
cmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5z
aG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nl
c3NGb3JDYW52YXNSZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5k
ZXJET01JbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JET01SZW5k
ZXJpbmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nl
c3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vz
cyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvcldlYkdMRW5hYmxlZCgpOworI2VuZGlm
CisKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgPSBwcmVmZXJlbmNlcygp
LnZwOURlY29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxFKFZQOSkgJiYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygp
LnZwOURlY29kZXJFbmFibGVkKCkgJiYgKCFXZWJDb3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwg
cHJlZmVyZW5jZXMoKS52cDlTV0RlY29kZXJFbmFibGVkT25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2
ZjBiNWY3MTFmOTFiMmU1Li40MzdhYjc1MGIzNWFiMTYzYjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNs
dWRlc0NoaWxkRnJhbWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5j
bHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIK
QEAgLTIwMyw3ICsyMDQsNiBAQCBlbnVtIGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50
OF90OwogfQogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBE
ZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4
IGY0MjQ1Y2U2NWU5ZDJkNTY1YjNmMTI1ZjM0NTdhMjU2ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRj
NWE0NjMyZTZhMTk5NzdkYjYxYmFiNjEzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5oCmluZGV4IGQ0NDJiNjJiNTIyNTg3ZjkwZmE2ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgy
NWNkMDI2ODhhMjY4MjE5NDFmZjdhNDE4ZjRkZjVhOTc1YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM4LDEwICszOCw2IEBAIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzUyOGY0NzFmNDYzZGY2YzExMzBhM2ZiODM3
NzZiZjFiMmFiZWY5NC4uMGI3NjlmMDM1NGViNGYwMzJkMjIwOWVjNzliOGZlMjE5ZWZkODg5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC02OTgsNyArNjk4LDYgQEAKIAkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50
Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJ
CTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0My
NCAvKiBBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8q
IENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9Owot
CQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3
MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0
OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsK
IAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVB
IC8qIEVuY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVz
c2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAu
Y3BwICovOyB9OwpAQCAtMTMwMyw2ICsxMzAyLDcgQEAKIAkJN0FGQkQzNjMyMUU1MEYzOTAwNURC
QUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8q
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2NzIxRTUx
QkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFC
MDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJ
CTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1
REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAw
RTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5j
ZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBX
S1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
MUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkg
LyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtMjcxOSw3ICsyNzE5LDYgQEAKIAkJMUFDNUZG
QzExNzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdl
TG9hZFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VM
b2FkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5
RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYWdlTG9hZFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFB
Qzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5j
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBI
YW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGFuZ0RldGVjdGlvbkRpc2FibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
Qzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJs
ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzY5LDYgKzQzNjgsMTYg
QEAKIAkJN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDsgcGF0aCA9IENsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdB
RkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FG
QkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NTI1NEFGREVBMDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4
QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQbHVnaW5JbmZvcm1h
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjUzLDExICs2NjYyLDEx
IEBACiAJCQkJMUFFRkQyNzgxMUQxNkM4MTAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXIuaCAqLywK
IAkJCQkxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2RlcnMuY3BwICovLAog
CQkJCTFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oICovLAorCQkJ
CTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovLAogCQkJCUJD
RUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLywKIAkJCQlCQ0VFOTY2
QjExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oICovLAogCQkJCUJDMDMyREEyMTBGNDM3
RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAqLywKIAkJCQlCQzAzMkRBMzEwRjQzN0QxMDA1
OEMxNUEgLyogQ29ubmVjdGlvbi5oICovLAotCQkJCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAv
KiBEYXRhUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyog
RGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNv
ZGVyLmNwcCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5oICov
LApAQCAtODMyNywxMSArODMzNiwxNiBAQAogCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAv
KiBjb2NvYSAqLywKIAkJCQlGNDA5NENCQTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RX
cml0ZXJIYW5kbGUuY3BwICovLAogCQkJCUY0MDk0Q0I5MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNw
bGF5TGlzdFdyaXRlckhhbmRsZS5oICovLAorCQkJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAv
KiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdBN0YzOTI0MDc4OEYx
MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJNzI3QTdGMzcy
NDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAg
Ki8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0
Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJE
N0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKKwkJCQk3
QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAgKi8sCisJCQkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCAqLywKKwkJCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QkU3MjY1NzI1NzRG
NjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVy
YXRlZC5jcHAgKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUw
NDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCkBAIC04MzQ5LDYgKzgzNjMs
MTAgQEAKIAkJCQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUuY3BwICovLAogCQkJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCisJCQkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLywKKwkJCQk3QjkwNDE2QTI1NEFGRUE3
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLywKKwkJCQk3QjkwNDE2ODI1
NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8s
CisJCQkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
RnVuY3Rpb25zR2VuZXJhdGVkLmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8q
IFJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8q
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAogCQkJCTU1MDY0MEEzMjQwNzFBNjEwMEFB
RTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggKi8sCkBAIC0xMTE2NSw2ICsxMTE4Myw3
IEBACiAJCQkJMUFFRkQyRjcxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUFGMEM0QTEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2Rl
cnNDRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3NUM0NEEyMUFBMzE3MTAwMDAzN0QwIC8qIEFy
Z3VtZW50Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCMURCMjY2MjU2NjhDRTEw
MDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1RTc3Mjgx
ODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFG
QTYzNEYyMzRGN0M2NDAwRkZBODY0IC8qIEFzeW5jUmV2YWxpZGF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0VFOTY2RDExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzIzMyw3ICsxMzI1Miw2IEBACiAJCQkJMkQ5MkE3ODUyMTJCNkFCMTAwRjQ5
M0ZEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
OTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTJEOTJBNzdFMjEyQjZBNzEwMEY0OTNGRCAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5REFBMzhDMjRDQkExQTgwMDc5M0Q3NSAvKiBEZWZhdWx0V2ViQnJv
d3NlckNoZWNrcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMEM1NkZFMjI5RjFERUEwMEJEMzNF
NyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuaAppbmRleCBmOTJkYTZhNDdmN2UyNGYzODM5OWFhMzY5OGEyMTI5MGQzNjFkNGE2Li5j
OWRjNjgyYjg3NTQ5YjgyNTBkYjIyYjJhMWNlMjE1NTUwMDBjZWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oCkBAIC0zNiwxMCArMzYsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBheW1lbnRDb29yZGlu
YXRvcjsKIGNsYXNzIFBheW1lbnRDb250YWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDJjMGRmNWI5ZjU0OTY4NDdl
ZDY2OTEwYmYyZjM5YjJjZGM2MGNhMDIuLjViZThiOTk3NTIwYzRhZDdmMWI0NDA3YWU3MjA0Yzg0
YTk5ODg3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM1LDEwICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtI
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJ
UEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE3OTE4ZTRiNTBjOWI3Y2Y1YjJlNzliMDc3
ZDAzNTIxMmM2MTI2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciA9IE9iamVjdElkZW50
aWZpZXI8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM0YTA2ZmIwMDc2YWNkM2ZkMzJiM2E0YjZiMDlkNjhkMDI3YmI1ODgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0wLDAgKzEsMTY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQ
VVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoYXR0cmlidXRl
cykpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCisg
ICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKK3sKKyAgICBJUEM6
Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAo
KTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRH
TChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKK30KKworUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQor
eworICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VS
ZWNlaXZlck1hcCgpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciks
IDApOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHBsYXRmb3JtU3dhcENoYWluKCkucmVjeWNs
ZUJ1ZmZlcigpOworI2VuZGlmCit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJl
dHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sK
KyAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOworICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdo
dDsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3
aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKK3sKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmln
aHQ7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVw
YXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQp
LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikgeworICAgICAg
ICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dhcENoYWluKCk7CisgICAgICAgIHNjLnJlY3ljbGVCdWZm
ZXIoKTsKKyAgICAgICAgc2MucHJlc2VudCh7IFdURk1vdmUoZGlzcGxheUJ1ZmZlciksIG51bGxw
dHIgfSk7CisgICAgfQorI2Vsc2UKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyNlbmRpZgorICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5n
ZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQoreworICAgIC8v
IEZJWE1FOiBDdXJyZW50bHkgbm90IGltcGxlbWVudGVkIGJlY2F1c2UgaXQncyBub3QgY2xlYXIg
dGhpcyBpcyB0aGUgcmlnaHQgd2F5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5MzQ5CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUmVmUHRyPEltYWdlRGF0YT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFn
ZURhdGEoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChTdHJpbmcm
JiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQorewor
ICAgIGlmIChtX2RpZEluaXRpYWxpemUpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6YXRpb24gdGlt
ZWQgb3V0IGJlZm9yZSwgc28gbG9zZSB0aGUgY29udGV4dCBub3cuCisgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbml0aWFsaXplKGF2YWlsYWJsZUV4dGVu
c2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCgpCit7Cisg
ICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAg
Y2xpZW50LT5mb3JjZUNvbnRleHRMb3N0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6d2FzQ2hhbmdlZCgpCit7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5
VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaXNwYXRjaENvbnRleHRDaGFu
Z2VkTm90aWZpY2F0aW9uKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FpdFVudGlsSW5pdGlhbGl6ZWQoKQoreworICAgIGlmIChtX2RpZEluaXRpYWxpemUpCisg
ICAgICAgIHJldHVybjsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCk7CisgICAgaWYgKGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
PE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkPihtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRl
cnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gVGltZWQgb3V0LCBzbyByZXBvcnQgaW5pdGlhbGl6ZWQgd2l0aCBkdW1teSBkYXRhLiBXZSBz
aG91bGQgbG9zZSB0aGUgY29udGV4dC4KKyAgICB3YXNDcmVhdGVkKCIiLCAiIik7CisgICAgLy8g
RklYTUU6IE5lZWQgdG8gbWFyayB0aGUgY29udGV4dCBhcyBsb3N0LCBidXQgaXQncyBub3Qgc2Fm
ZSB0byBmb3JjZSBsb3N0IGluIHRoaXMgY2FsbCBzdGFjay4KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZGQ2OWNhZjlkYzAzYzUyNGIxMDBhOWI2Yjc2Y2YwYWQ3OTlhMGQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTAsMCArMSw0MTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBXZWIgcHJvY2VzcyBzaWRlIGltcGxl
bWVudGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGludGVyZmFjZS4gVGhlIGltcGxlbWVudGF0
aW9uCisvLyBjb252ZXJ0cyB0aGUgaW50ZXJmYWNlIHRvIGEgc2VxdWVuY2Ugb2YgSVBDIG1lc3Nh
Z2VzIGFuZCBzZW5kcyB0aGUgbWVzc2FnZXMgdG8KKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IGluIEdQVSBwcm9jZXNzLgorLy8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJh
dGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgorY2xhc3Mg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBmaW5hbAorICAgIDogcHVibGljIElQQzo6TWVz
c2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+CisgICAgLCBw
dWJsaWMgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIH5SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIgb3ZlcnJpZGVzLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJp
ZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZSBvdmVycmlkZXMuCisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOworICAgIHVzaW5nIFdlYkNv
cmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7CisgICAgdm9p
ZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsK
KyAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgc2lt
dWxhdGVDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpIGZpbmFs
OworCisgICAgLy8gRnVuY3Rpb25zIHdpdGggYSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRo
aXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorICAgIHZvaWQg
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsOworICAgIHZvaWQgc3ludGhlc2l6ZUdM
RXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOworICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhl
dGljRXJyb3JMaXN0KCkgZmluYWw7CisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRl
eHR1cmUpIGZpbmFsOworICAgIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpIGZpbmFsOworICAgIHZvaWQgYmluZEF0dHJp
YkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBi
aW5kUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBm
aW5hbDsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9i
amVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdD
R0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7
CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQg
YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBo
YSkgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0g
ZGZhY3RvcikgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNS
R0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhh
KSBmaW5hbDsKKyAgICBHQ0dMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRh
cmdldCkgZmluYWw7CisgICAgdm9pZCBjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykgZmluYWw7Cisg
ICAgdm9pZCBjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dM
Y2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQgY2xlYXJEZXB0
aChHQ0dMY2xhbXBmIGRlcHRoKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyU3RlbmNpbChHQ0dMaW50
IHMpIGZpbmFsOworICAgIHZvaWQgY29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xl
YW4gZ3JlZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhhKSBmaW5hbDsKKyAg
ICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2
b2lkIGNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
QnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigp
IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUHJvZ3JhbSgpIGZpbmFsOworICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUmVuZGVyYnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZv
cm1HTE9iamVjdCBjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkgZmluYWw7CisgICAgUGxhdGZv
cm1HTE9iamVjdCBjcmVhdGVUZXh0dXJlKCkgZmluYWw7CisgICAgdm9pZCBjdWxsRmFjZShHQ0dM
ZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBkZXB0aEZ1bmMoR0NHTGVudW0gZnVuYykgZmluYWw7CisgICAgdm9p
ZCBkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykgZmluYWw7CisgICAgdm9pZCBkZXB0aFJhbmdl
KEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikgZmluYWw7CisgICAgdm9pZCBkZXRh
Y2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZp
bmFsOworICAgIHZvaWQgZGlzYWJsZShHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIHZvaWQgZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGRy
YXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50KSBm
aW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGVu
YWJsZShHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgZmluaXNoKCkgZmluYWw7CisgICAg
dm9pZCBmbHVzaCgpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZl
clRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHRleHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczLCBHQ0dMaW50IGxldmVsKSBmaW5hbDsK
KyAgICB2b2lkIGZyb250RmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdlbmVy
YXRlTWlwbWFwKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgYm9vbCBnZXRBY3RpdmVBdHRy
aWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYg
YXJnMikgZmluYWw7CisgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAgIEdD
R0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJp
bmcmIG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U3RyaW5nKEdD
R0xlbnVtIG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVnZXJ2KEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGlu
dDY0IGdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludDY0IGdl
dEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICBH
Q0dMaW50IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5h
bDsKKyAgICBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7Cisg
ICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzAsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVy
SW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZ2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5
cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pIGZpbmFs
OworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKKyAgICBHQ0dMZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxv
YXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5h
bDsKKyAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5n
JiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBoaW50KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNCdWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0VuYWJs
ZWQoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNQcm9ncmFtKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNSZW5kZXJidWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NoYWRl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVGV4dHVy
ZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgbGluZVdpZHRoKEdDR0xm
bG9hdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmtQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3Is
IEdDR0xmbG9hdCB1bml0cykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHQ0dMY2xh
bXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpIGZpbmFsOworICAgIHZvaWQgc2Npc3NvcihH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBm
aW5hbDsKKyAgICB2b2lkIHNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NH
TGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBh
cmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQg
bWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNrKSBmaW5hbDsK
KyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFz
aykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZh
aWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKEdD
R0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFz
cykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwg
R0NHTGludCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2YoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2koR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVzZVByb2dyYW0oUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpIGZpbmFs
OworICAgIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBH
Q0dMZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHks
IEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpIGZpbmFsOworICAgIHZv
aWQgdmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMp
IGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NH
TGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6
ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB2aWV3cG9ydChH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBm
aW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIg
YXJnMSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkg
ZmluYWw7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NH
THZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7
CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7Cisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0
KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsK
KyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVy
dGV4QXJyYXkoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5KFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51
bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0
LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIpIGZpbmFsOworICAgIHZvaWQg
Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
U3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NH
TGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwg
R0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZ
MSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCBm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXll
cikgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpIGZpbmFsOworICAgIHZvaWQg
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVu
dW0gc3JjKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRl
eFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwor
ICAgIHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lk
IHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2
b2lkIHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4
U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
em9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFnRGF0YUxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0xdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjApIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NH
THVpbnQgdjEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dM
dWludCB2MiwgR0NHTHVpbnQgdjMpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgz
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZp
bmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0
dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdD
R0x1aW50IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQg
dmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdD
R0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9m
ZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpIGZpbmFs
OworICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQg
Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJm
aShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBH
Q0dMaW50IHN0ZW5jaWwpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnko
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZp
bmFsOworICAgIEdDR0xib29sZWFuIGlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmlu
YWw7CisgICAgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSkgZmluYWw7CisgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFs
OworICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdM
T2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVTYW1wbGVyKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTYW1wbGVyKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9pZCBiaW5kU2FtcGxlcihHQ0dMdWlu
dCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOwor
ICAgIEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0
ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAg
IEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFn
cykgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBj
bGllbnRXYWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50
NjQgdGltZW91dCkgZmluYWw7CisgICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdl
dFN5bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICBHQ0dM
Ym9vbGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOwor
ICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1H
TE9iamVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xl
bnVtIHByaW1pdGl2ZU1vZGUpIGZpbmFsOworICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2so
KSBmaW5hbDsKKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1
ZmZlck1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIp
IGZpbmFsOworICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZv
aWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXJC
YXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVm
ZmVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0cikgZmluYWw7CisgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5k
aWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlm
b3JtTmFtZXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1J
bmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJs
b2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1C
bG9ja05hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5n
KSBmaW5hbDsKKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3Jj
WDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQg
ZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xi
aXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2Ft
cGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9F
UygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBpbnNlcnRF
dmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcHVzaEdy
b3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwb3BHcm91
cE1hcmtlckVYVCgpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lk
cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIGZpbmFs
OworICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4
ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQq
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSBmaW5hbDsK
KyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSBmaW5hbDsgLy8gTk9MSU5UCisgICAgdm9pZCBn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSBm
aW5hbDsKKyAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQb2ludGVydlJvYnVz
dEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRl
eFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOworICAg
IHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkg
ZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmlu
YWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdM
RShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpIGZpbmFs
OworICAgIC8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQu
CisKK3Byb3RlY3RlZDoKKyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBv
dmVycmlkZXMuCisgICAgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpIGZpbmFsOworCitwcml2
YXRlOgorICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQgd2FzQ3JlYXRl
ZChTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNp
b25zKTsKKyAgICB2b2lkIHdhc0xvc3QoKTsKKyAgICB2b2lkIHdhc0NoYW5nZWQoKTsKKworICAg
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxzZSB9Owor
ICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciB7IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworfTsKKwor
Ly8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUg
bGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0Lgorc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWVfdjxHQ0dMZW51bSwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKEdDR0xib29sZWFuKSA9PSBzaXplb2YoYm9vbCkpOworc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWVfdjxHQ0dMYml0ZmllbGQsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PEdDR0xieXRlLCBpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
R0NHTHVieXRlLCB1aW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xz
aG9ydCwgaW50MTZfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdXNob3J0
LCB1aW50MTZfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMaW50LCBpbnQz
Ml90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xzaXplaSwgaW50MzJfdD4p
Oworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWludCwgdWludDMyX3Q+KTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGZsb2F0LCBmbG9hdD4pOworc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMaGFsZmZsb2F0LCB1aW50MTZfdD4pOworc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMY2xhbXBmLCBmbG9hdD4pOworc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWVfdjxHQ0dMdm9pZCwgdm9pZD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWVfdjxQbGF0Zm9ybUdMT2JqZWN0LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2Yo
R0NHTGNoYXIpID09IHNpemVvZih1aW50OF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dM
aW50NjQpID09IHNpemVvZihpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMdWlu
dDY0KSA9PSBzaXplb2YodWludDY0X3QpKTsKKy8vIEdDR0xzeW5jIGFuZCBHQ0dMKnB0ciB0eXBl
cyBhcmUgcG9pbnRlcnMuIE9uIHNvbWUgcGxhdGZvcm1zLCB0aGV5IGFyZSAzMi1iaXQuCisvLyBD
dXJyZW50bHkgd2UgaGFyZC1jb2RlIGl0IGJ5IHVzaW5nIDw9LCBhbmQgYXNzdW1lIHRoYXQgd2Ug
ZG8gbm90IHRyYW5zZmVyIGFycmF5cyBvZiB0aGUgdHlwZXMuCitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihHQ0dMaW50cHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KEdDR0xzaXplaXB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihHQ0dMdm9pZHB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihHQ0dMc3luYykgPD0gc2l6ZW9mKHVpbnQ2NF90KSAmJiBzaXplb2YoR0NHTHN5bmMpID09IHNp
emVvZihpbnRwdHJfdCkpOworLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdl
YmdsIHNjcmlwdC4KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVmMmIzMmIyYmMxMDEwZWY4ZWNkMGFmNTc3N2FiZDRmYTA4YTNjOTAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgTm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBXYXNDcmVhdGVkKFN0cmluZyBhdmFpbGFibGVF
eHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQorICAgIHZvaWQgV2FzTG9z
dCgpCisgICAgdm9pZCBXYXNDaGFuZ2VkKCk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzE0YTQ0MzE1NjIxMWNjNzE4NTEzNzMzOGNhY2M3Y2U1MDM1Nzk1
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKQEAg
LTAsMCArMSwxNjQ3IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNr
KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3Io
R0NHTGVudW0gZXJyb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlN5bnRoZXNpemVHTEVycm9yKGVycm9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1
cmUoR0NHTGVudW0gdGV4dHVyZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmF0dGFj
aFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBdHRhY2hT
aGFkZXIocHJvZ3JhbSwgc2hhZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRB
dHRyaWJMb2NhdGlvbihhcmcwLCBpbmRleCwgbmFtZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyKHRhcmdldCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFJlbmRl
cmJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUoR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBH
Q0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uKG1v
ZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVS
R0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZh
Y3RvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Qmxl
bmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJh
dGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBH
Q0dMZW51bSBkc3RBbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RB
bHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51
bSB0YXJnZXQpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKHRhcmdldCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1czo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhcihtYXNrKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4s
IEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyRGVwdGgoZGVw
dGgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKEdDR0xpbnQgcykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJTdGVuY2lsKHMpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4s
IEdDR0xib29sZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb2xvck1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4o
cmVkKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxib29sPihibHVlKSwg
c3RhdGljX2Nhc3Q8Ym9vbD4oYWxwaGEpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVCdWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyKCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlRnJhbWVidWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlRnJhbWVidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQ
bGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVByb2dy
YW0oKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlUmVuZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRm
b3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKEdD
R0xlbnVtIGFyZzApCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXIoYXJn
MCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgdWludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkN1bGxGYWNlKG1vZGUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlQnVmZmVyKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxl
dGVGcmFtZWJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVByb2dyYW0oUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUmVuZGVy
YnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2hhZGVyKGFyZzApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMoR0NHTGVudW0gZnVuYykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoTWFzayhzdGF0aWNfY2FzdDxib29s
PihmbGFnKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdD
R0xjbGFtcGYgekZhcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcw
LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUoR0NHTGVudW0gY2FwKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwg
dHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5h
YmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RW5hYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShHQ0dMdWludCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZmluaXNoKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RmluaXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCgpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQs
IEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBh
cmczLCBHQ0dMaW50IGxldmVsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRh
cmdldCwgYXJnMywgbGV2ZWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKEdDR0xlbnVtIG1v
ZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyb250
RmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdlbmVyYXRlTWlwbWFwKEdDR0xlbnVtIHRhcmdl
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2VuZXJh
dGVNaXBtYXAodGFyZ2V0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCiti
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQorewor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHkocmV0
dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWlu
dCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0
aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QWN0aXZlVW5pZm9ybTo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sK
KyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJp
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkKK3sKKyAgICBTdHJpbmcgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTdHJpbmcobmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U3RyaW5nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZh
bHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0djo6UmVwbHkodmFsdWVSZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1
ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVS
ZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2Vydjo6UmVwbHkodmFsdWVSZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1
ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludDY0IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKK3sK
KyAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0KHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQ6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludDY0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50
IGluZGV4KQoreworICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpKHBuYW1lLCBp
bmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJuVmFsdWUpOworfQorCitH
Q0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRQcm9ncmFtaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVy
ZW5jZTxib29sPiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVl
LmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52
OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVS
ZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoYm9vbCkpOworICAgIAorfQorCitH
Q0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCit7CisgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xp
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmk6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkK
K3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJn
ZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFk
ZXJpKGFyZzAsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nKGFyZzApLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2c6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0g
cHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNp
c2lvbikKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlUmVwbHk7
CisgICAgaW50MzJfdCBwcmVjaXNpb25SZXBseSA9IHsgfTsKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJhbmdl
UmVwbHksIHByZWNpc2lvblJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIGlmIChzZW5kUmVzdWx0KSB7CisgICAgICAgIG1lbWNweShyYW5nZS5kYXRhLCBy
YW5nZVJlcGx5LmRhdGEoKSwgcmFuZ2UuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAg
ICAgIGlmIChwcmVjaXNpb24pCisgICAgICAgICAgICAqcHJlY2lzaW9uID0gcHJlY2lzaW9uUmVw
bHk7CisgICAgfQorfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTaGFkZXJTb3VyY2UoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2hhZGVyU291cmNlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dD
R0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgZmxvYXQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xm
bG9hdD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBs
eTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2OjpSZXBs
eSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5k
YXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sK
KyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdjo6UmVwbHkodmFsdWVSZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3Vs
dCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5i
dWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQoreworICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
dWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAg
ICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUg
KiBzaXplb2YodWludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1M
b2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRVbmlmb3JtTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHNp
emVpcHRyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNl
dChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDY0X3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoaW5kZXgsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQ6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9k
ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SGludCh0
YXJnZXQsIG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xi
b29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzQnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXIoYXJnMCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQoR0NHTGVudW0gY2FwKQoreworICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc0VuYWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc0VuYWJsZWQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29s
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29s
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNQcm9ncmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihy
ZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNSZW5kZXJidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVy
blZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNUZXh0dXJlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4
dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdpZHRoKEdDR0xm
bG9hdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpMaW5lV2lkdGgoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkxpbmtQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkoR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9seWdvbk9mZnNldChm
YWN0b3IsIHVuaXRzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwg
R0NHTGJvb2xlYW4gaW52ZXJ0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcm
IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNo
YWRlclNvdXJjZShhcmcwLCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdDR0xl
bnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2sp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dM
ZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBm
dW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2soR0NHTHVpbnQgbWFz
aykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNp
bE1hc2sobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVt
IGZhY2UsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpw
YXNzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVu
Y2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFy
YXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51
bSB6cGFzcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
U3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFy
YW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZihsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTFmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0yZihsb2NhdGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYu
ZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmkobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMml2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwg
R0NHTGZsb2F0IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlv
biwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00Zihsb2NhdGlv
biwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5
LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0
cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0
YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bv
c2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVc2VQcm9ncmFtKGFyZzApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQcm9ncmFt
KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIx
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWIxZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIy
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWIyZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDM+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAz
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0Zihp
bmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVt
IHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxib29s
Pihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NHTGVu
dW0gdXNhZ2UpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJ1ZmZlckRhdGEwKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2FnZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0
YSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlYWRuUGl4ZWxzMCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEu
YnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMw
OjpSZXBseShkYXRhUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBs
eS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSks
IHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDAodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21w
cmVzc2VkVGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpLCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihpbmRl
eCwgZGl2aXNvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZv
cm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJh
eSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5k
VmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zm
c2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1ZmZlclN1YkRhdGEo
cmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWFkT2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGFyZzQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZm
ZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0
YTo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVw
bHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50
IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dM
aW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBH
Q0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBz
cmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgbGF5ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4
dHVyZSwgbGV2ZWwsIGxheWVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0
ZUZyYW1lYnVmZmVyKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMu
YnVmU2l6ZSksIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZEJ1ZmZl
cihHQ0dMZW51bSBzcmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2
ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRl
eEltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhT
dWJJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxz
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1h
Z2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bXByZXNzZWRUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QxKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVy
LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRh
dGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwg
aW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0
aW9uKHByb2dyYW0sIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEZyYWdEYXRhTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0x1aW50IHYwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtMXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwg
djAsIHYxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
THVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2
MiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyLCB2MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0z
dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJp
eDJ4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+
KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xpbnQgeiwgR0NHTGludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFs
dWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
Ykk0dWkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1
aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
Ykk0dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZz
ZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRl
eEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xl
bnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBl
bmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnMoSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0
YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1
ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFy
QnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZmkoYnVm
ZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVRdWVyeSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVy
eSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUXVlcnkocXVlcnkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnkodGFy
Z2V0LCBxdWVyeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRh
cmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9i
amVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnko
dGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVl
cnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2Jq
ZWN0dWkocXVlcnksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRRdWVyeU9iamVjdHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3Jt
R0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2FtcGxlcigpCit7
CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBs
ZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTYW1wbGVyKHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzU2FtcGxlcihzYW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1NhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIo
dW5pdCwgc2FtcGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVy
aShzYW1wbGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRl
cmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBh
cmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1w
bGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK0dDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmYoc2Ft
cGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBs
ZXJQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK0dDR0xzeW5jIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZl
bmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKK3sKKyAgICB1
aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKTsK
K30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKEdD
R0xzeW5jIGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYyhzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGllbnRXYWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1
aW50NjQgdGltZW91dCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5j
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSks
IGZsYWdzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMoR0NH
THN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6V2FpdFN5bmMoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3Ms
IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5
bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTeW5jaShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oYXJnMCkpLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U3luY2k6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVj
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygp
Cit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2soaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVl
ZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFu
c2Zvcm1GZWVkYmFjayhpZCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNU
cmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihy
ZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBpZCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRyYW5z
Zm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1v
ZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVm
ZmVyTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc3VtZVRyYW5zZm9ybUZlZWRiYWNr
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1
aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwg
YnVmZmVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xzaXplaXB0ciBhcmc0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitWZWN0b3I8R0NHTHVpbnQ+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKK3sKKyAg
ICBWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwg
dW5pZm9ybU5hbWVzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtSW5kaWNlczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitWZWN0b3I8R0NHTGlu
dD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNl
cywgR0NHTGVudW0gcG5hbWUpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVu
aWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4OjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybUJsb2NrQmlu
ZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1Jl
cGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJs
b2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0
KQorICAgICAgICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1z
LmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAg
IGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RY
MCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
emVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxl
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVmVydGV4QXJyYXlPRVMoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFy
cmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1N0cmlu
ZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
bnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3Vw
TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtl
ckVYVCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
aW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpLCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUo
aW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1
c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3Ms
IEdDR0x2b2lkKiBwaXhlbHMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVy
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZl
cnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSAvLyBOT0xJTlQKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxv
YXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dm9pZCoqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVu
aWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCmluZGV4IGFlZjgzZTI1ODg4OWE1YmU4MjY3YTY4YjFjNjlmZWM1YTM0ZTAzODYu
LjZhNGFkZjVkNmQzNGE3YzY5MWJmZjAwZWVjZTAxZmM3YWE4OTQwMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29ucwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRl
eCA5NWM4MzZlNjk1MDQxZDk3ZDI1OTAzNmZkNzNkZmY1YzQ2YjhmZjkxLi5jOGM1ODI5MDUwYTUy
NThmOWQ5MzE5NzZiOTVmMDVlNTk3YTU2YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNv
bm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKLSAgICBib29sIGRpZFN1Y2NlZWQgPSBjb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKKyAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZpY2VJ
ZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwgc2Ft
cGxlUmF0ZSgpLCBoYXJkd2FyZVNhbXBsZVJhdGUoKSksCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHko
ZGVzdGluYXRpb25JRCksIDApOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CiAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShzdHJl
YW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOwotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFr
ZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CisgICAgbV9hdWRpb0J1
ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFt
Rm9ybWF0KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1h
bmFnZXIuY3BwCmluZGV4IGI4ZjQ1YTZkNWJiNGRiNDYwOTg4MDEyNDNiYjVlOTMxN2IxZTNlMmIu
LjY1YjhmZDBkNzczNDdlOTM4YjU2NDU4MjI2Yjc4ZGE0M2M5Nzg5MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuaCIKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyTWFuYWdlci5oCmluZGV4IGU1OWUxYjA2YjQ0N2U1ZDgwY2E2MTA1MmM2YzdhMzJjNGJhMTQy
ZTYuLjgxOTQwOTBjOTMzYjJmMTFhNjQ2MGFiM2MxNzcyZDM3NjE2MzcxMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxh
eWVySWRlbnRpZmllci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggMGRiODVhZTli
ZDI0MWViYTFiZGE0ZTYyMjQ0MGY2MzI4ZTFkOGEwYi4uMjk3ZWViZGExOTE4OWRmZTBjZmU2YzFl
ZDc2OWFhY2I5ZDZkOTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGI5YTAxYjA2MjVlM2I3YzdmMDExODRhODNjMzZl
NTQ5MTIyZjA5YTguLjE1MTcyYzlmNjIxMGJmNGY5NWUwYzZhYTc5MzZjNjIyZWE4ZDkzZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC00NCw3ICs0NCw2IEBACiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCmluZGV4
IGI3Y2VkYjdlODM5NGY5OWJhOWNmYjBhMmFjMmE5NzgxMWIzYzQxOGYuLjc3MDJkMWI3MDJkMTIx
NjJlMTlhYjlhNmRhYTRjNTk3NTE4NjJmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0z
MywxMCArMzMsNiBAQAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaD4KIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBJbmJhbmRHZW5lcmljQ3VlOwogY2xhc3MgSVNPV2ViVlRUQ3VlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAK
aW5kZXggMGM2ZjczZDA3MTQ0YjU2MjY3NjkzNjdjOWYyYTNhNDAxN2VhZGU4MC4uMTY4ZWY0MzVk
ZGU1NjE0ZDMwZjNiZTI4NjcwYTQ3YWVkNjE2ZGUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5o
CmluZGV4IDczOWE0OTZlZjQ5NGNiNGE2MTg1NjZmZmM2NGQ0YTI2NGE3NGU5ZDAuLjRiZWFlMDYy
MzE3YmEyNmE2MDY4M2YxZjQ1MTIzM2ViMTA3M2FhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVj
b2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgpAQCAt
NDMsNyArNDQsNiBAQCB1c2luZyBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4
ZWxCdWZmZXJQb29sKjsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5k
ZXggMmRhZDIwMzg0MmYwZTU1M2ZlM2I0NjI0NDFlZTk0ZmEyNjQ5M2ExMS4uYzI4Y2U3ZjJlMTdl
ODlhOGU1MTg2YTc3MDZhMmU4YTQ0ZjZiN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFR5cGVzLmg+CkBAIC01NCw3ICs1
NSw2IEBAIGNsYXNzIERhdGE7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBjbGFz
cyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0xNjEsNCArMTYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMwNjRlOWM0YWZjYzJjZmY1NGEzMjVl
MjUzMWVkMDUyMmEwMDEzOTMuLmI5Nzk0NjU5ZWFiZDE4NGIzODljMDZkMTMyZjhjNDJmODA1MjNj
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5h
bWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA4NjU3MTFiMzY2YzI4ZGY0ODRiNGNkYzA3YWEzZmNmM2RjZWJmMmY2Li42OTQ4
OTZjOTk3YTQ5NDBkYmFiMmRhNzY1NzgyMGEyNzhhZjFkYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0y
Niw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJmYTFj
NjlmZWE5ZDUzOTY2ZmIuLjdlMWQ0OTk0NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3Mzc3ODAwZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNz
IEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk0ZWYwZDFmY2UyZTYwMWRm
NDQ5Y2ZmODUzOWZiZDE2NDc5M2ViZTIuLmZmNjlmNTYwOWU1NzdjYWM3NzdmMDRhZmE3NGFmMjEw
NzQ4NjRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3
b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZjUzNDc4MzQ3ZTc3NWRmMzdl
YTk3NjM0YzIzMzA5MzJiNGExNGQyOC4uYWQ3ZmYxODdkYmI0MzUzYjllZDNiYzU3YzViYTJjNGFh
NGU4Y2ZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2VuZFF1
ZXVlLmg+CkBAIC0zOCw3ICszOSw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rp
b247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0U3RyZWFtLmNwcAppbmRleCBhZjI0MmNkMmI1OTVhYzRhNDQ4NDI5N2JlNWQ1Y2ZlMThk
NDhmMzI0Li43ZDAwNzM2OWI5Y2NlODViOGYwNTQ1N2Q2NjZkMWU0NDUxYjk2YzUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5j
cHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRTdHJlYW0uaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbU1lc3Nh
Z2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5oCmluZGV4IGRkMDgyMDEwNzEyYjlmNWRiOWZlYmQ4OGRhNjY5YjZkZjYxZDBmMjku
LmI0M2NiMmVmYWQxZTEwMWVlMjY1YjkzZGRlOWIwNjEyNzM2YTA5NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRsZS5oPgpAQCAtMzMsNyArMzQsNiBA
QAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXQuaAppbmRleCBjYjQ4ZTA1NzM0OGEyZTg2NmIwOTFmZjVhYzg3MjYwNWNhMTkyZGQ1Li4zMjNm
MjVlZThmZDgxYjAyNjMwZDJmMjU5YTFhZmI4ODRiNGNmNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5o
CkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggZWE1MzU5NjAx
MDlmZWU2ZGM0ODA1Y2Y2ODkxMjc5OGVlOWFiNmYwMy4uNDBiNGM4ZjIxMjljZjEyMzNhMWIzMWI4
NTEyN2U3YTdlOWUzZDdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaApAQCAtNjAsMTAgKzYwLDYgQEAgT0JKQ19DTEFTUyBQREZTZWxl
Y3Rpb247CiBPQkpDX0NMQVNTIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdDsKIE9CSkNf
Q0xBU1MgV0tQREZMYXllckNvbnRyb2xsZXJEZWxlZ2F0ZTsKIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBWE9i
amVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMzM0
NzY0YWNlMmE4YzQzODU4OGIzMTk4MDYyZjM2NWEzNjZlOGJkYS4uNWIyNzMyZjJjNGU0YzQ4M2Vi
Zjg0MDg3YThjMjYzNGU5ZDU0OTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEwOCw2
ICsxMDgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpA
QCAtOTEyLDYgKzkxNiwyMiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZQogICAgIHJldHVybiBt
X3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZm
ZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisKK1JlZlB0cjxHcmFwaGljc0NvbnRl
eHRHTD4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFBsYXRmb3JtRGlzcGxheUlEIGhv
c3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0Cit7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBVTlVTRURfVkFSSUFCTEUoaG9zdFdpbmRvd0Rpc3BsYXlJRCk7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZShhdHRyaWJ1dGVzKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYK
K30KKworI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5
ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGVjMTRmZGIxNmM4MWNjMTI3MDZjZmNi
NTllOTlmMmNkMzM3NjBkYzguLjEyMTVmOTJhMDMxOTU4MGEwZGRkOTIxMDUxM2RkMmQ1ZDMwNTA1
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI0Myw3ICsyNDMsMTEgQEAgcHJpdmF0ZToKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0IGZp
bmFsOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dE
aXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCisjZW5kaWYKKwogCiAgICAgQ29tcG9zaXRp
bmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBmaW5hbAog
ICAgIHsKQEAgLTQwMyw2ICs0MDcsNyBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBib29sIG1f
Y2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAgICAgbXV0
YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXIgeyBmYWxzZSB9
OworCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmNjQyMTQ3N2E1NmNlZTFiNDU5YWIxYjcwZDhk
Y2FkOWQzZGFmYzM0Li5kNDYzM2RkYjZjYzY0OTgwM2I5MjQ1NzU2MjViZmE1MjhjMTdkNGIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDIy
LDYgKzQyMiw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fc2hvdWxkUmVuZGVy
Q2FudmFzSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVBy
b2Nlc3MgfQogICAgICwgbV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJz
LnNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB9CiAgICAgLCBtX3Nob3VsZFBsYXlNZWRpYUlu
R1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIH0KKyNp
ZiBFTkFCTEUoV0VCR0wpCisgICAgLCBtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsg
cGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzc30KKyNlbmRpZgogI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAsIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5
UXVpcmtzIHsgcGFyYW1ldGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgfQogI2Vu
ZGlmCkBAIC03MjUsNyArNzI4LDYgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmIChX
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKiBtYW5hZ2VyID0gd2ViUHJvY2Vzcy5zdXBwbGVtZW50
PFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI+KCkpCiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3Mo
KS5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1hbmFnZXItPm1lZGlhS2V5U3RvcmFnZURp
cmVjdG9yeSgpKTsKICNlbmRpZgotICAgIAogICAgIGlmIChwYXJhbWV0ZXJzLnZpZXdTY2FsZUZh
Y3RvciAhPSAxKQogICAgICAgICBzY2FsZVZpZXcocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3Ip
OwogCkBAIC0zNzkzLDYgKzM3OTUsOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5kZXJD
YW52YXNJbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQ
VVByb2Nlc3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MpOwog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShtX3No
b3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJlbmRl
cldlYkdMSW5HUFVQcm9jZXNzKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RF
U1RJTkdfQVBJKQpAQCAtNjk5MCw2ICs2OTk1LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJvbml6
ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDT1JT
RGlzYWJsaW5nUGF0dGVybnMobV9pZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyks
IDApOwogfQogCisKICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFkZE1l
ZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGU3ZjhjMGEz
YjYwNGU3YWExNTdjNzQwMjMxZTU1NTc0OWQ0ZWY3YzcuLjIxMTBhMzJmNjcwZjAwZmEyNDRmZTZm
OWQ3OTVhNmRkZjYwZDE3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGls
ZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9h
ZElELmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiRWRpdGluZ1Jh
bmdlLmgiCkBAIC0xNjAsNyArMTYxLDYgQEAgY2xhc3MgQXJyYXk7CiAKIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVy
OwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wgc2Vu
ZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJl
cGx5KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNlbEdl
c3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNSZXBsaWVzKCk7CiAgICAgICAgIHJldHVybiBzZW5k
U3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgU2Vjb25kczo6aW5maW5pdHko
KSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQp
OwpAQCAtMTgyNiw2ICsxODI2LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUmVuZGVy
Q2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUmVuZGVyRE9N
SW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQ
cm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3Nob3VsZFJl
bmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKICAgICBib29sIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtz
IHsgZmFsc2UgfTsKICNlbmRpZgpAQCAtMjE4Myw0ICsyMTg2LDMgQEAgaW5saW5lIGJvb2wgV2Vi
UGFnZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZy
YW1lJikgY28KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBlNTc1
ZmNhMDE5ZjZiMTJhOGY0ZGFlNWNiMWQ2ODJkYTRlNDM2ZWI5Li44NGUyODQxMWNmZGRkOTFmOWE1
ZDQ3YzIxZDcxZTlkYjZkN2M2MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNTE3LDcgKzUxNyw3IEBAIGJvb2wgV2Vi
UGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAK
ICAgICAvLyBGSVhNRTogSW50ZXJwcmV0IHRoZSBldmVudCBpbW1lZGlhdGVseSB1cG9uIHJlY2Vp
dmluZyBpdCBpbiBVSSBwcm9jZXNzLCB3aXRob3V0IHNlbmRpbmcgdG8gV2ViUHJvY2VzcyBmaXJz
dC4KICAgICBib29sIGV2ZW50V2FzSGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgc2VuZFJlc3Vs
dCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0
YXRlKFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpLAorICAgIGF1dG8gc2VuZFJlc3VsdCA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNob3Vs
ZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkNoYXIpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRl
cnByZXRLZXlFdmVudDo6UmVwbHkoZXZlbnRXYXNIYW5kbGVkKSwgbV9pZGVudGlmaWVyKTsKICAg
ICByZXR1cm4gc2VuZFJlc3VsdCAmJiBldmVudFdhc0hhbmRsZWQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjJmMjI4MjJjN2IyMjNmY2E1OWY5NTU3M2Qx
MWRjOTliMTAzNDgxMS4uNTgyZWU3NWQ5OWE3NDI0MjU0YTM5ZGFiMjA2Zjg0NjE3MzRhZDlhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk0Miw2ICsxOTQy
LDIwIEBAIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJlbmRl
cmluZ1B1cnBvc2UgcHVycG9zZSkKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCisjaWYg
RU5BQkxFKFdFQkdMKQordm9pZCBXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0wo
Ym9vbCB1c2VHUFVQcm9jZXNzRm9yV2ViR0wpCit7CisgICAgbV91c2VHUFVQcm9jZXNzRm9yV2Vi
R0wgPSB1c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzczo6c2hvdWxk
VXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdAoreworICAgIHJldHVybiBtX3VzZUdQ
VVByb2Nlc3NGb3JXZWJHTDsKK30KKworI2VuZGlmCisKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQ
OSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU5YzQ3ZGI0YzQ0N2Mw
ZjRhYjYyN2MwOTRiNWY2OGRiNTY1YTlhNmMuLjFhNTg1YWMxNDJiMTgzMjc2NGM0ZDg1Mzc5MDkw
YjJjYmNhNzNjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzQ3
LDYgKzM0NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVu
ZGVyaW5nKGJvb2wpOwogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wpOwog
ICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1
cnBvc2UpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JX
ZWJHTChib29sKTsKKyAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkg
Y29uc3Q7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4Nyw2ICs2OTEs
OSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5n
IHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYSB7IGZhbHNlIH07CisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgeyBmYWxzZSB9
OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDIyMjdiN2I1ZTQ2YzI0NDRkODlkYjc0
NWU3NjJhOTBjNDg1M2Q5Mi4uZmUzOWIwM2Q5YTVhNDhhZjQxNzRiY2U2OWFjZmI3YTc3NmZjYmU1
NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFw
aGljc0NvbnRleHRHTCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVtZW50
YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQyBhbmQgaXMgaW5jb21wbGV0ZS4KKworICAgICAgICBB
ZGQgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbi4gQ3Vy
cmVudGx5CisgICAgICAgIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGVzIGEgV2ViS2l0IElQQyBpbXBs
ZW1lbnRhdGlvbi4KKworICAgICAgICBUaGUgaW5wdXQgZGVmaW5pdGlvbiB0byB0aGUgZ2VuZXJh
dG9yIGlzIHRoZSBwcm94eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBoZWFkZXIgZmlsZXMuCisg
ICAgICAgIFRoZSBvdXRwdXQgb2YgdGhlIGdlbmVyYXRvciBpcworICAgICAgICAgICAtIFdlYktp
dCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGZpbGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHNlbmRl
ciBjb2RlCisgICAgICAgICAgIC0gTWVzc2FnZSByZWNlaXZlciBhbmQgcGF5bG9hZCBpbnZvY2F0
aW9uIGNvZGUKKworICAgICAgICBUaGUgZ2VuZXJhdG9yIGNvbnZlcnRzIEdyYXBoaWNzQ29udGV4
dEdMIEdDR0wgLXByZWZpeGVkIHR5cGVzIHRvCisgICAgICAgIHNpemVkIElQQyB0eXBlcy4KKwor
ICAgICAgICBUaGUgZ2VuZXJhdG9yIGlzIGludm9rZWQgZHVyaW5nIGRldmVsb3BtZW50IHRpbWUg
YW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBzdG9yZWQgaW4gdGhlIHJlcG9zaXRvcnkuCisK
KyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6IEFkZGVkLgorCiAyMDIwLTEy
LTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgcmVhZGFibGUvd3JpdGFibGUgdG8gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2YjQyMjI5Y2YyZjgyOGM2NmM3ZTdi
NDE3NzNjMmViZTQ0MzExNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbApAQCAtMCwwICsxLDEwNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMK
KyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIFRoaXMg
c2NyaXB0IGdlbmVyYXRlcyB0aGUgc291cmNlIGZpbGVzIGZvciBXZWJHTCBHUFUgcHJvY2VzcyBJ
UEMuCisjCisjIHB5dGhvbjMgLW0gYmxhY2sgLWwgMTUwIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbAorIyBweXRob24zIC1tIG15cHkgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsCisjCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBlbnVtCitpbXBvcnQgcGF0aGxpYgor
aW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgY29sbGVjdGlvbnMKKworZnJvbSB0eXBpbmcg
aW1wb3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9u
YWwsIEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIKKworcm9vdF9kaXIgPSAocGF0aGxpYi5Q
YXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCitleHRlbnNpb25z
X2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIg
LyAiZ3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgorCitmdW5jdGlvbnNfaW5wdXRfZm5zID0g
WworICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJH
UFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCitdCit0
eXBlc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9j
ZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmgiCisKKwordGVtcGxhdGVfcHJlYW1ibGUgPSAiIiIvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyIiIgorY29u
dGV4dF9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BV
UHJvY2VzcyIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmgiCitjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0
ZV9wcmVhbWJsZQorICAgICsgIiIiLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0
aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1w
bGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCit7fQorCisiIiIKKykKK2NvbnRleHRfbWVzc2Fn
ZXNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAi
Z3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIgorY29udGV4
dF9tZXNzYWdlc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIi
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CisgICAgdm9pZCBSZXNoYXBl
KGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVy
KSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1
cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKQore30KK319CisKKyNlbmRpZgorCisiIiIKKykKKworY29udGV4dF9w
cm94eV9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2Vi
UHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAiCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1w
bGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJLaXQg
e3sKK3t9CisKK319CisKKyNlbmRpZgorCisiIiIKKykKKworCitkZWYgd3JpdGVfZmlsZShmbiwg
bmV3X2NvbnRlbnRzKToKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoKKyAg
ICAgICAgICAgIGlmIGYucmVhZCgpID09IG5ld19jb250ZW50czoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4KKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKyAgICB3aXRoIG9wZW4oZm4sICJ3Iikg
YXMgZjoKKyAgICAgICAgZi53cml0ZShuZXdfY29udGVudHMpCisKK2NsYXNzIGNwcF90eXBlKG9i
amVjdCk6CisgICAgdHlwZV9uYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBl
X25hbWUgOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGVfbmFtZSA9IHR5cGVfbmFtZQorCisgICAg
ZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAg
ZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnR5cGVfbmFtZSkK
KworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1l
CisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlw
ZV9uYW1lID09IG90aGVyLnR5cGVfbmFtZQorCisgICAgZGVmIGlzX3ZvaWQoc2VsZikgLT4gYm9v
bDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lIGluIFsidm9pZCIsICJHQ0dMdm9pZCIs
ICJjb25zdCB2b2lkIiwgImNvbnN0IEdDR0x2b2lkIl0KKworICAgIGRlZiBpc19jb25zdChzZWxm
KSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUuc3RhcnRzd2l0aCgiY29u
c3QgIikKKworICAgIGRlZiBpc19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+
IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcG9pbnRl
cihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19yZWZl
cmVuY2Uoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNf
Y29uc3RfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisg
ICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVy
biBzZWxmCisKKyAgICBkZWYgZ2V0X2RlY2F5X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAg
ICAgICAgaWYgc2VsZi5pc19jb25zdCgpOgorICAgICAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlw
ZShzZWxmLnR5cGVfbmFtZVs2Ol0pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgZ2V0
X3J2YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3Bw
X3R5cGUoc2VsZi50eXBlX25hbWUgKyAiJiYiKQorCisgICAgZGVmIGdldF9wb2ludGVyX3R5cGUo
c2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5
cGVfbmFtZSArICIqIikKKworY2xhc3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBlKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjb250YWluZXJfbmFtZSA6IHN0
ciwgY29udGFpbmVkX3R5cGUgOiBjcHBfdHlwZSwgYXJpdHkgOiBPcHRpb25hbFtpbnRdID0gTm9u
ZSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAg
c2VsZi5jb250YWluZXJfbmFtZSA9IGNvbnRhaW5lcl9uYW1lCisgICAgICAgIHNlbGYuY29udGFp
bmVkX3R5cGUgPSBjb250YWluZWRfdHlwZQorICAgICAgICBzZWxmLmFyaXR5ID0gYXJpdHkKKyAg
ICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBUcnVlCisg
ICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFp
bmVyX25hbWUgPT0gIkdDR0xTcGFuIgorICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4g
Ym9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUgPT0gIkdDR0xTcGFuIiBh
bmQgc2VsZi5hcml0eSBpcyBOb25lCisgICAgZGVmIGdldF9jb250YWluZXJfbmFtZShzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUKKyAgICBkZWYgZ2V0X2FyaXR5KHNl
bGYpIC0+IE9wdGlvbmFsW2ludF06CisgICAgICAgIHJldHVybiBzZWxmLmFyaXR5CisgICAgZGVm
IGdldF9jb250YWluZWRfdHlwZShzZWxmKSAtPiBjcHBfdHlwZToKKyAgICAgICAgcmV0dXJuIHNl
bGYuY29udGFpbmVkX3R5cGUKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+
IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlLmlzX2NvbnN0KCkKKwor
ZGVmIGNyZWF0ZV9jcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25h
bFtjcHBfdHlwZV9jb250YWluZXJdOgorICAgIG0gPSByZS5tYXRjaChyIihbXHc6XSspPCguKyk+
JCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBj
b250YWluZXJfbmFtZSA9IG1bMV0KKyAgICB0ZW1wbGF0ZXMgPSBtWzJdCisgICAgYXJpdHkgPSBO
b25lCisgICAgbSA9IHJlLm1hdGNoKHIiKFteLF0rKSxccyooXGQrKSIsIHRlbXBsYXRlcykKKyAg
ICBpZiBtOgorICAgICAgICB0ZW1wbGF0ZXMgPSBtWzFdCisgICAgICAgIGFyaXR5ID0gaW50KG1b
Ml0pCisgICAgcmV0dXJuIGNwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUsIGNvbnRhaW5lcl9u
YW1lLCBnZXRfY3BwX3R5cGUodGVtcGxhdGVzKSwgYXJpdHkpCisKK2NsYXNzIGNwcF90eXBlX2Z1
bmN0aW9uKGNwcF90eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3Ry
LCByZXR1cm5fdmFsdWVfdHlwZSA6IGNwcF90eXBlLCBhcmd1bWVudF90eXBlcyA6IExpc3RbY3Bw
X3R5cGVdKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAg
ICAgICBzZWxmLnJldHVybl92YWx1ZV90eXBlICA9IHJldHVybl92YWx1ZV90eXBlCisgICAgICAg
IHNlbGYuYXJndW1lbnRfdHlwZXMgPSBhcmd1bWVudF90eXBlcworCitkZWYgY3BwX3NwbGl0X2Fy
Z3Nfc3BlY3MoYXJnc19zcGVjIDogc3RyKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAjIGh0dHBz
Oi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMzNTI3MjQ1L3B5dGhvbi1zcGxpdC1ieS1j
b21tYS1za2lwcGluZy10aGUtY29udGVudC1pbnNpZGUtcGFyZW50aGVzZXMKKyAgICBjb21tYSA9
IHIiLCg/ISg/OltePF0qXDxbXj5dKlw+KSpbXjw+XSpcPikiCisgICAgcmV0dXJuIGZpbHRlcihO
b25lLCBbYS5zdHJpcCgpIGZvciBhIGluIHJlLnNwbGl0KGNvbW1hLCBhcmdzX3NwZWMuc3RyaXAo
KSldKQorICAgIAorZGVmIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUgOiBzdHIp
IC0+IE9wdGlvbmFsW2NwcF90eXBlX2Z1bmN0aW9uXToKKyAgICBtID0gcmUubWF0Y2gocicoLiop
XCgoLiopXCknLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25l
CisgICAgcmV0dXJuX3ZhbHVlX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICBhcmdzX3R5
cGVzID0gW2dldF9jcHBfdHlwZShhKSBmb3IgYSBpbiBjcHBfc3BsaXRfYXJnc19zcGVjcyhtWzJd
KV0KKyAgICByZXR1cm4gY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lLCByZXR1cm5fdmFsdWVf
dHlwZSwgYXJnc190eXBlcykKKyAgICAgICAgCisjIFBvaW50ZXIgb3IgcmVmZXJlcmVuY2UKK2Ns
YXNzIGNwcF90eXBlX2luZGlyZWN0KGNwcF90eXBlKToKKyAgICBjYXRlZ29yeSA6IHN0cgorICAg
IHZhbHVlX3R5cGUgOiBjcHBfdHlwZQorICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBl
X25hbWUgOiBzdHIsIGNhdGVnb3J5IDogc3RyLCB2YWx1ZV90eXBlIDogY3BwX3R5cGUpOgorICAg
ICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY2F0
ZWdvcnkgPSBjYXRlZ29yeQorICAgICAgICBzZWxmLnZhbHVlX3R5cGUgPSB2YWx1ZV90eXBlCisK
KyAgICBkZWYgaXNfY29uc3RfcG9pbnRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0
ZWdvcnkgPT0gJyonIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBub3Qgc2VsZi5pc19j
b25zdCgpCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcmVm
ZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicgYW5kIG5v
dCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcnZhbHVlX3JlZmVyZW5jZShzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYmJworICAgIGRlZiBnZXRfdmFsdWVfdHlw
ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVfdHlwZQorCitkZWYgY3JlYXRlX2Nw
cF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfaW5k
aXJlY3RdOgorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJiQiLCB0eXBlX25hbWUpCisg
ICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJiQiLCB0eXBlX25hbWUp
IAorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUs
ICcmJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLisp
JiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIigu
KykmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5k
aXJlY3QodHlwZV9uYW1lLCAnJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0
Y2gociJjb25zdCAoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBt
ID0gcmUubWF0Y2gociIoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAgIHJl
dHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcqJywgZ2V0X2NwcF90eXBlKG1bMV0p
KQorICAgIHJldHVybiBOb25lCisKKworY2xhc3MgY3BwX2V4cHIob2JqZWN0KToKKyAgICB0eXBl
OiBjcHBfdHlwZQorICAgIGV4cHI6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6
IGNwcF90eXBlLCBleHByOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAg
IHNlbGYuZXhwciA9IGV4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5leHByCisKKworQ3BwRXhwckNvbnZlcnRlciA9IENhbGxhYmxlW1tjcHBfZXhwciwg
Y3BwX3R5cGVdLCBjcHBfZXhwcl0KKworCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9w
b2ludGVyX3Rocm91Z2goY2FzdF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVb
W2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0
X2Nhc3RfZnJvbV9wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3Bw
X2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBl
LnR5cGVfbmFtZX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9Pih7
c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2lu
dGVyCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY2FzdF90
aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0s
IGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcihleHBy
OiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4g
Y3BwX2V4cHIodHlwZSwgZiJyZWludGVycHJldF9jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHN0YXRp
Y19jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0
dXJuIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIKKworZGVmIGNwcF9zdGF0aWNfY2Fz
dChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJldHVy
biBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHtzdHIoZXhw
cil9KSIpCisKKworZGVmIGNwcF9pbXBsaWNpdF9jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBlOiBj
cHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIHN0cihleHBy
KSkKKworCitkZWYgY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBj
cHBfZXhwciwgdHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVt
ZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJf
dHlwZSgpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnBy
ZXRfY2FzdDx7ZWxlbWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3Ry
KGV4cHIpfS5zaXplKCkpIikKKworZGVmIHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3Jl
aW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGVf
Y29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUu
Z2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNwcF9l
eHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB7ZWxlbWVudF9w
b2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKSwge3N0cihleHByKX0uYnVmU2l6ZSkiKQor
CitkZWYgY3BwX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAgcmV0
dXJuIGNwcF9leHByKGV4cHIudHlwZS5nZXRfcnZhbHVlX3R5cGUoKSwgZiJXVEZNb3ZlKHtzdHIo
ZXhwcil9KSIpCisKKworY3BwX3R5cGVzOiBEaWN0W3N0ciwgY3BwX3R5cGVdID0ge30KKworY3Bw
X3R5cGVfY29uc3RydWN0b3JzIDogTGlzdFtDYWxsYWJsZVtbc3RyXSwgT3B0aW9uYWxbY3BwX3R5
cGVdXV0gPSBbCisgICAgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uLAorICAgIGNyZWF0ZV9jcHBf
dHlwZV9jb250YWluZXIsCisgICAgY3JlYXRlX2NwcF90eXBlX2luZGlyZWN0CitdCisKK2RlZiBn
ZXRfY3BwX3R5cGUodHlwZV9uYW1lOiBzdHIpOgorICAgIHIgPSBjcHBfdHlwZXMuZ2V0KHR5cGVf
bmFtZSwgTm9uZSkKKyAgICBpZiByOgorICAgICAgICByZXR1cm4gcgorICAgIGZvciB0eXBlX2Nv
bnN0ciBpbiBjcHBfdHlwZV9jb25zdHJ1Y3RvcnM6CisgICAgICAgIHIgPSB0eXBlX2NvbnN0cih0
eXBlX25hbWUpCisgICAgICAgIGlmIHI6CisgICAgICAgICAgICBicmVhaworICAgIGlmIG5vdCBy
OgorICAgICAgICByID0gY3BwX3R5cGUodHlwZV9uYW1lKQorICAgIGNwcF90eXBlc1t0eXBlX25h
bWVdID0gcgorICAgIHJldHVybiByCisKKworY2xhc3MgY3BwX2FyZyhvYmplY3QpOgorICAgIG5h
bWU6IHN0cgorICAgIHR5cGU6IGNwcF90eXBlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlw
ZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAg
ICAgc2VsZi50eXBlID0gdHlwZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJl
dHVybiAie30ge30iLmZvcm1hdChzZWxmLnR5cGUsIHNlbGYubmFtZSkKKworCitjbGFzcyBjcHBf
ZGVjbChvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgbmFtZTogc3RyCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNl
bGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIHJldHVybiBmIntzdHIoc2VsZi50eXBlKX0ge3NlbGYubmFtZX0i
CisKKworY2xhc3MgY3BwX2FyZ19saXN0KG9iamVjdCk6CisgICAgYXJnczogTGlzdFtjcHBfYXJn
XQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAg
ICBzZWxmLmFyZ3MgPSBhcmdzCisKKyAgICBkZWYgbmFtZXMoc2VsZik6CisgICAgICAgIHJldHVy
biAiLCAiLmpvaW4oYS5uYW1lIGZvciBhIGluIHNlbGYuYXJncykKKworICAgIGRlZiBleHBycyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZXhwcihhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4g
c2VsZi5hcmdzXQorCisgICAgZGVmIGRlY2xzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2NwcF9k
ZWNsKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgdHlwZXMo
c2VsZik6CisgICAgICAgIHJldHVybiBbYS50eXBlIGZvciBhIGluIHNlbGYuYXJnc10KKworICAg
IGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKHN0cihhKSBmb3Ig
YSBpbiBzZWxmLmFyZ3MpCisKKworY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKKyAgICBuYW1lOiBz
dHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAg
ICBpc19leHRlbnNpb246IGJvb2wKKyAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBj
cHBfYXJnX2xpc3QsIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgICAgIHNlbGYubmFtZSA9IG5h
bWUKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIHNlbGYu
YXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBpc19leHRlbnNpb24KKyAg
ICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSAiIgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgIHJldHVybiBmIntzZWxmLnJldHVybl90eXBlfSB7c2VsZi5uYW1lfSh7c3RyKHNl
bGYuYXJncyl9KSIKKworICAgIGRlZiBnZXRfYXJnc19jYXRlZ29yaWVzKHNlbGYpIC0+IFR1cGxl
W0xpc3RbY3BwX2FyZ10sIExpc3RbY3BwX2FyZ11dOgorICAgICAgICBpbl9hcmdzID0gW10KKyAg
ICAgICAgb3V0X2FyZ3MgPSBbXQorICAgICAgICBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJnczoKKyAg
ICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKSBv
ciBcCisgICAgICAgICAgICAgICAgYS50eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAgICAgICAg
ICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEudHlwZSwg
Y3BwX3R5cGVfY29udGFpbmVyKSBhbmQgKCgoYS50eXBlLmlzX3NwYW4oKSBvciBhLnR5cGUuaXNf
ZHluYW1pY19zcGFuKCkpIGFuZCBub3QgYS50eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2Nv
bnN0KCkpKToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgaW5fYXJncyArPSBbYV0KKyAgICAgICAgICAgICNmbXQ6IG9u
CisgICAgICAgIHJldHVybiBpbl9hcmdzLCBvdXRfYXJncworCisgICAgZGVmIGlzX2ltcGxlbWVu
dGVkX3R5cGUoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiB0eXBlLmlzX2NvbnN0
X3BvaW50ZXIoKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1
ZQorCisgICAgZGVmIGlzX2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICAjIiBpbiBhLnR5cGUu
dHlwZV9uYW1lIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgIyAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgI2lmICJHQ0dMc3luYyIgaW4gc2VsZi5yZXR1cm5fdHlwZS50eXBlX25h
bWU6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLm5hbWUgPT0g
ImJ1ZlNpemUiIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICBpZiBhbnkoYS50eXBlLmlzX3BvaW50ZXIoKSBhbmQgYS50eXBlLmdldF92
YWx1ZV90eXBlKCkuaXNfdm9pZCgpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkobm90IHNlbGYuaXNfaW1wbGVtZW50ZWRf
dHlwZShhLnR5cGUpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICBpZiBzZWxmLnJldHVybl90eXBlLmlzX3BvaW50ZXIoKToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90
eXBlKHNlbGYucmV0dXJuX3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
IHJldHVybiBUcnVlCisKKword2Via2l0X2lwY190eXBlczogRGljdFtjcHBfdHlwZSwgY3BwX3R5
cGVdID0ge30KKword2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzOiBEaWN0W1R1cGxlW2NwcF90
eXBlLCBjcHBfdHlwZV0sIENwcEV4cHJDb252ZXJ0ZXJdID0ge30KKworCitkZWYgd2Via2l0X2lw
Y19jb252ZXJ0X2V4cHIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhw
cjoKKyAgICAiIiIgQ29udmVydHMgYGV4cHJgIG9mIHR5cGUgb2YgYHNlbGZgIHRvIGB0eXBlYCAi
IiIKKyAgICBjb252ZXJ0ID0gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLmdldCgoZXhwci50
eXBlLCB0eXBlKSwgTm9uZSkKKyAgICBpZiBub3QgY29udmVydDoKKyAgICAgICAgaWYgZXhwci50
eXBlID09IHR5cGU6CisgICAgICAgICAgICByZXR1cm4gZXhwcgorICAgICAgICBjb252ZXJ0ID0g
Y3BwX2ltcGxpY2l0X2Nhc3QKKyAgICByZXR1cm4gY29udmVydChleHByLCB0eXBlKQorCisKK2Rl
ZiB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5zZmVyX3R5cGUodHlwZSA6IGNwcF90eXBlX2NvbnRh
aW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVk
X3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgYXJpdHkgPSB0eXBlLmdldF9hcml0eSgpCisg
ICAgd2Via2l0X2lwY19lbGVtZW50X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2VsZW1lbnRfdHlw
ZV0gaWYgbm90IGVsZW1lbnRfdHlwZS5pc192b2lkKCkgZWxzZSBnZXRfY3BwX3R5cGUoJ3VpbnQ4
X3QnKQorICAgIGlmIGFyaXR5IGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90
eXBlKGYiSVBDOjpBcnJheVJlZmVyZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0s
IHthcml0eX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpBcnJheVJlZmVyZW5j
ZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0+IikKKworCisKK2RlZiB3ZWJraXRfaXBj
X2dldF9zcGFuX3N0b3JlX3R5cGUodHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlw
ZToKKyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNh
eV90eXBlKCkKKyAgICBpZiBlbGVtZW50X3R5cGUuaXNfdm9pZCgpOgorICAgICAgICBlbGVtZW50
X3R5cGUgPSBnZXRfY3BwX3R5cGUoJ0dDR0xjaGFyJykKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNf
c3BhbigpOgorICAgICAgICBpbmxpbmVfY2FwYWNpdHkgPSAxNiBpZiAiZmxvYXQiIGluIGVsZW1l
bnRfdHlwZS50eXBlX25hbWUgZWxzZSA0CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJW
ZWN0b3I8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cihpbmxpbmVfY2FwYWNpdHkpfT4iKQorICAg
IHJldHVybiBnZXRfY3BwX3R5cGUoZiJzdGQ6OmFycmF5PHtzdHIoZWxlbWVudF90eXBlKX0sIHtz
dHIodHlwZS5nZXRfYXJpdHkoKSl9PiIpCisKK2RlZiB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5f
Y29udmVyc2lvbihleHByIDogY3BwX2V4cHIsIHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+
IGNwcF9leHByOgorICAgIHBvaW50ZXJfY2FzdF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5
cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3BhbigpOgor
ICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIo
ZXhwcil9LnNpemUoKSkiKQorCisgICAgYXNzZXJ0KHR5cGUuaXNfc3BhbigpKQorICAgIHJldHVy
biBjcHBfZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3Bhbjx7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4o
cmVpbnRlcnByZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRh
dGEoKSkpIikKKworIyBTZWUgbWVzc2FnZXMucHkgZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUKK3dl
YmtpdF9pcGNfYnVpbHRpbl90eXBlcyA9IHNldCgKKyAgICBbInVpbnQ4X3QiLCAidWludDE2X3Qi
LCAidWludDMyX3QiLCAidWludDY0X3QiLCAiaW50OF90IiwgImludDE2X3QiLCAiaW50MzJfdCIs
ICJpbnQ2NF90IiwgImJvb2wiLCAiZmxvYXQiLCAiZG91YmxlIiAiYm9vbCJdCispCisKKworZGVm
IHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUodHlwZTogY3BwX3R5cGUpIC0+
IGNwcF90eXBlOgorICAgIGlmIHR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90
eXBlczoKKyAgICAgICAgcmV0dXJuIHR5cGUKKyAgICByZXR1cm4gdHlwZS5nZXRfcnZhbHVlX3R5
cGUoKQorCisKK2RlZiB3ZWJraXRfaXBjX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3Bw
X2V4cHI6CisgICAgaWYgZXhwci50eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5f
dHlwZXM6CisgICAgICAgIHJldHVybiBleHByCisgICAgcmV0dXJuIGNwcF9tb3ZlX2V4cHIoZXhw
cikKKworCitkZWYgd2Via2l0X2lwY19tc2dfbmFtZShmdW5jOiBjcHBfZnVuYyk6CisgICAgcmV0
dXJuIGZ1bmMubmFtZVswXS5jYXBpdGFsaXplKCkgKyBmdW5jLm5hbWVbMTpdICsgZnVuYy5vdmVy
bG9hZF9zdWZmaXgKKworCitjbGFzcyB3ZWJraXRfaXBjX21zZyhvYmplY3QpOgorICAgIG5hbWU6
IHN0cgorICAgIGluX2FyZ3M6IGNwcF9hcmdfbGlzdAorICAgIG91dF9hcmdzOiBjcHBfYXJnX2xp
c3QKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNl
bGYubmFtZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYykKKyAgICAgICAgaW5fYXJncywgb3V0
X2FyZ3MgPSBmdW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBpcGNfaW5fYXJncyA9
IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSBmb3IgYSBpbiBpbl9h
cmdzXQorICAgICAgICBpcGNfb3V0X2FyZ3MgPSBbXQorICAgICAgICBpZiBub3QgZnVuYy5yZXR1
cm5fdHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmco
d2Via2l0X2lwY190eXBlc1tmdW5jLnJldHVybl90eXBlXSwgInJldHVyblZhbHVlIildCisgICAg
ICAgIGZvciBhIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBf
YXJnKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKV0KKyAgICAgICAgICAgIGlmIGEu
dHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICBpcGNfaW5fYXJncyArPSBb
Y3BwX2FyZyhnZXRfY3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIildCisgICAg
ICAgIHNlbGYuaW5fYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfaW5fYXJncykKKyAgICAgICAgc2Vs
Zi5vdXRfYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfb3V0X2FyZ3MpCisKKyAgICBkZWYgX19zdHJf
XyhzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYub3V0X2FyZ3MuYXJncyk6CisgICAgICAgICAg
ICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIC0+
ICh7c3RyKHNlbGYub3V0X2FyZ3MpfSkgU3luY2hyb25vdXMiCisgICAgICAgIHJldHVybiBmIlxu
ICAgIHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkiCisKKworY2xhc3Mgd2Vi
a2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIG1zZ19u
YW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJnX2xp
c3QKKworICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBMaXN0
W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHJldHVybl9zdG10czog
TGlzdFtzdHJdCisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBM
aXN0W2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVu
Yyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5tc2df
bmFtZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoY3BwX2Z1bmMpCisgICAgICAgIHNlbGYucmV0dXJu
X3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVu
Yy5hcmdzCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNh
bGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAg
IHNlbGYucmV0dXJuX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAg
ICAgIHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBf
ZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92
YWx1ZShjcHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZ3Mo
aW5fYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmdzKG91dF9hcmdzKQorICAgICAg
ICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAg
ICAgICBpbl9leHBycyA9ICIsICIuam9pbihbc3RyKGkpIGZvciBpIGluIHNlbGYuaW5fZXhwcnNd
KQorICAgICAgICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIHNlbGYub3V0
X2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IHNlbGYucmV0dXJuX3R5cGUuaXNfdm9pZCgpIGFu
ZCBsZW4ob3V0X2V4cHJzKSA9PSAwCisgICAgICAgIGlmIGlzX2FzeW5jOgorICAgICAgICAgICAg
c2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsiLAorICAgICAgICAgICAgXQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiIgorICAgICAgICAgICAgaWYgc2VsZi5wb3N0
X2NhbGxfc3RtdHM6IAorICAgICAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gImF1dG8gc2VuZFJl
c3VsdCA9ICIKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFsKKyAgICAg
ICAgICAgICAgICAgICAgImlmIChzZW5kUmVzdWx0KSIgKyAoIiB7IiBpZiBsZW4oc2VsZi5wb3N0
X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0gKyBbIiAgICAiICsg
cyBmb3IgcyBpbiBzZWxmLnBvc3RfY2FsbF9zdG10c10gKyBbCisgICAgICAgICAgICAgICAgICAg
ICgifSIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAg
ICAgIGYie3NlbmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9leHByc30pLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7IiwKKyAgICAgICAgICAgIF0KKworCisgICAg
ZGVmIHByb2Nlc3NfaW5fYXJncyhzZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAg
ICAgZm9yIGkgaW4gaW5fYXJnczoKKyAgICAgICAgICAgIGlmIGkudHlwZS5pc19jb25zdF9wb2lu
dGVyKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHBy
KGNwcF9leHByKGkudHlwZSwgaS5uYW1lKSwgd2Via2l0X2lwY190eXBlc1tpLnR5cGVdKV0KKwor
ICAgIGRlZiBwcm9jZXNzX291dF9hcmdzKHNlbGYsIG91dF9hcmdzOiBMaXN0W2NwcF9hcmddKToK
KyAgICAgICAgZm9yIG8gaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpZiBvLnR5cGUuaXNfcG9p
bnRlcigpOgorICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBvLnR5cGUuZ2V0X3ZhbHVlX3R5
cGUoKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNf
dHlwZXNbdmFsdWVfdHlwZV0KKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBj
X3ZhbHVlX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVf
Y2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0gPSB7eyB9fTsiXQor
ICAgICAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2LnR5cGUsIHYubmFtZSkKKyAgICAgICAgICAg
ICAgICBzZWxmLm91dF9leHBycyArPSBbZV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2Fs
bF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAgICAg
ICAgICAgICBmImlmICh7by5uYW1lfSkiLAorICAgICAgICAgICAgICAgICAgICBmIiAgICAqe28u
bmFtZX0gPSB7d2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgdmFsdWVfdHlwZSl9OyIKKyAgICAg
ICAgICAgICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBl
bGlmIG8udHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0g
d2Via2l0X2lwY190eXBlc1tvLnR5cGVdCisgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFu
Y2Uod2Via2l0X2lwY190eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgICAg
IHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAgICAg
ICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5h
bWUpfTsiXQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5
cGUsIHYubmFtZSldCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3Bhbigp
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3Bw
X3R5cGUoInNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KKyAgICAgICAgICAgICAgICBz
ZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgIGYibWVtY3B5KHtv
Lm5hbWV9LmRhdGEsIHt2Lm5hbWV9LmRhdGEoKSwge28ubmFtZX0uYnVmU2l6ZSAqIHNpemVvZih7
c3RyKHdlYmtpdF9pcGNfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKSl9KSk7IgorICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhw
cnMgKz0gW2NwcF9leHByKG8udHlwZSwgby5uYW1lKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVy
bl92YWx1ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5f
dHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5yZXR1cm5f
dHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNf
dHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIo
aXBjX3JldHVybl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0
bXRzICs9IFtmIntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhw
cn0gPSB7eyB9fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtyZXR1cm5fdmFsdWVfZXhw
cl0gKyBzZWxmLm91dF9leHBycworICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtmInJldHVy
biB7c3RyKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCByZXR1cm5f
dHlwZSkpfTsiXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIg
Ly8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICIi
LmpvaW4oZiJcbiAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNh
bGxfc3RtdHMgKyBzZWxmLnBvc3RfY2FsbF9zdG10cyArIHNlbGYucmV0dXJuX3N0bXRzKQorICAg
ICAgICByZXR1cm4gZiIiIlxue3N0cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fQore3t7
Ym9keX0KK319IiIiCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXIo
b2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBh
cmdzOiBjcHBfYXJnX2xpc3QKKyAgICBib2R5OiBMaXN0W3N0cl0KKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVu
Yy5uYW1lCisKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90eXBl
CisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5ib2R5ID0g
WyJub3RJbXBsZW1lbnRlZCgpOyJdCisgICAgICAgIGlmIGNwcF9mdW5jLnJldHVybl90eXBlLnR5
cGVfbmFtZSAhPSAidm9pZCI6CisgICAgICAgICAgICBzZWxmLmJvZHkgKz0gWyJyZXR1cm4geyB9
OyJdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJ
TlQiIGlmICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIlxue1xuICAg
ICIgKyAiXG4gICAgIi5qb2luKHNlbGYuYm9keSkgKyAiXG59IgorICAgICAgICByZXR1cm4gZiJc
bntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ontz
ZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH17Ym9keX0iCisKKworY2xhc3MgY29u
dGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAg
ICBpbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsXQorICAgIHVuaW1wbHM6IExp
c3Rbd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXJdCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSwgdW5pbXBsZW1lbnRlZDogSXRlcmFibGVb
Y3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9p
bXBsKGYpIGZvciBmIGluIGZ1bmNzXQorICAgICAgICBzZWxmLnVuaW1wbHMgPSBbd2Via2l0X2lw
Y19jcHBfcHJveHlfcGxhY2Vob2xkZXIoZikgZm9yIGYgaW4gdW5pbXBsZW1lbnRlZF0KKworICAg
IGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihp
KSBmb3IgaSBpbiBzZWxmLmltcGxzICsgc2VsZi51bmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRl
KHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9m
dW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0
ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3Mgd2Vi
a2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9h
cmdfbGlzdAorICAgIGlzX2V4dGVuc2lvbjogYm9vbAorICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0
W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6IExp
c3Rbc3RyXQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlz
dFtjcHBfZXhwcl0KKyAgICByZXR1cm5fdmFsdWVfZXhwcjogT3B0aW9uYWxbY3BwX2V4cHJdCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2Vs
Zi5uYW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNw
cF9mdW5jLm92ZXJsb2FkX3N1ZmZpeAorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3Qo
W10pCisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCisg
ICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3RtdHMg
PSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5f
ZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIHNlbGYucmV0
dXJuX3ZhbHVlX2V4cHIgPSBOb25lCisKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1
ZShjcHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBf
ZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2FyZ3MoY3Bw
X2Z1bmMuYXJncy5hcmdzLCBzZXQoaW5fYXJncyksIHNldChvdXRfYXJncykpCisgICAgICAgIHNl
bGYucHJvY2Vzc19jYWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAg
IGV4dCA9ICJnZXRFeHRlbnNpb25zKCkuIiBpZiBzZWxmLmlzX2V4dGVuc2lvbiBlbHNlICIiCisK
KyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYuaW5fZXhw
cnMpCisgICAgICAgIGlzX2FzeW5jID0gbGVuKHNlbGYub3V0X2V4cHJzKSA9PSAwCisKKyAgICAg
ICAgY2FsbF9leHByID0gZiJtX2NvbnRleHQtPntleHR9e3NlbGYubmFtZX0oe2luX2V4cHJzfSki
CisgICAgICAgIGlmIG5vdCBzZWxmLnJldHVybl92YWx1ZV9leHByOgorICAgICAgICAgICAgc2Vs
Zi5jYWxsX3N0bXRzICs9IFtmIntjYWxsX2V4cHJ9OyJdCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yie3N0cihzZWxmLnJldHVybl92YWx1ZV9leHByKX0g
PSB7Y2FsbF9leHByfTsiXQorICAgICAgICBpZiBub3QgaXNfYXN5bmM6CisgICAgICAgICAgICBv
dXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAg
ICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gW2YiY29tcGxldGlvbkhhbmRsZXIoe291
dF9leHByc30pOyJdCisKKyAgICBkZWYgcHJvY2Vzc19hcmdzKHNlbGYsIGFyZ3M6IExpc3RbY3Bw
X2FyZ10sIGluX2FyZ3M6IFNldFtjcHBfYXJnXSwgb3V0X2FyZ3M6IFNldFtjcHBfYXJnXSk6Cisg
ICAgICAgIGZvciBhIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfY29uc3RfcG9p
bnRlcigpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgaWYgYSBp
biBpbl9hcmdzOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmcoYSkKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmcoYSkKKyAg
ICAgICAgaWYgc2VsZi5vdXRfZXhwcnM6CisgICAgICAgICAgICBvdXRfYXJnX2RlY2xzID0gIiwg
Ii5qb2luKGYie3N0cihlLnR5cGUpfSIgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAg
ICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoZiJDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHtvdXRfYXJnX2RlY2xzfSk+JiYiKSwgImNvbXBsZXRpb25IYW5kbGVyIild
CisKKyAgICBkZWYgcHJvY2Vzc19pbl9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIHNl
bGYuYXJncy5hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVy
X3R5cGUod2Via2l0X2lwY190eXBlc1thLnR5cGVdKSwgYS5uYW1lKV0KKyAgICAgICAgc2VsZi5p
bl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIod2Via2l0X2lwY190
eXBlc1thLnR5cGVdLCBhLm5hbWUpLCBhLnR5cGUpXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0X2Fy
ZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKToKKyAg
ICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEu
bmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2YWx1ZV9h
cmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICBz
ZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihhLnR5cGUsIGYiJnt2YWx1ZV9hcmcubmFtZX0iKV0K
KyAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUp
CisgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2Uu
dHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRf
ZXhwcihlLCB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19k
eW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwgY3Bw
X3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgIHNpemVfYXJnID0gY3BwX2FyZyhnZXRfY3Bw
X3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIikKKyAgICAgICAgICAgIHNlbGYuYXJn
cy5hcmdzICs9IFtzaXplX2FyZ10KKyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9hcmcod2Vi
a2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAgICAgICAg
IHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtzdHIoc3Rv
cmVfYXJnLm5hbWUpfShzdGF0aWNfY2FzdDxzaXplX3Q+KHthLm5hbWV9U2l6ZSksIDApOyJdCisg
ICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgZiJ7
c3RvcmVfYXJnLm5hbWV9IildCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRf
aXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUp
LCB3ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19zcGFuKCk6CisgICAg
ICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisg
ICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVf
dHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9
IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0ge3sgfX07Il0K
KyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBz
dG9yZV9hcmcubmFtZSldCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBj
X3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBj
X2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3
ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGEudHlw
ZS5pc19yZWZlcmVuY2UoKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lw
Y190eXBlc1thLnR5cGVdCisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5n
ZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRz
ICs9IFtmIntzZWxmLm5zKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9IHt7
IH19OyJdCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2Fy
Zy5uYW1lKQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbZV0KKyAgICAgICAgICAgIHNl
bGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRf
ZXhwcihlLCB3ZWJraXRfaXBjX3R5cGUpKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92YWx1
ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlwZS5p
c192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaXBjX3JldHVybl90eXBlID0g
d2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIg
PSBjcHBfZXhwcihyZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVf
Y2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9l
eHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9p
cGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCBp
cGNfcmV0dXJuX3R5cGUpKV0KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IHJldHVy
bl92YWx1ZV9leHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgYm9keSA9ICIi
LmpvaW4oZiJcbiAgICAgICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2Vs
Zi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIi
ICAgIHZvaWQge3NlbGYubmFtZX17c2VsZi5vdmVybG9hZF9zdWZmaXh9KHtzdHIoc2VsZi5hcmdz
KX0pCisgICAge3t7Ym9keX0KKyAgICB9fSIiIgorCisgICAgZGVmIG5zKHNlbGYsIHR5cGU6IGNw
cF90eXBlKToKKyAgICAgICAgIyBUT0RPOiBuYW1lc3BhY2UgaW5mbyBpcyBub3Qgc3RvcmVkIGlu
IG5hbWVzLgorICAgICAgICBpZiB0eXBlLnR5cGVfbmFtZSA9PSAiQWN0aXZlSW5mbyI6CisgICAg
ICAgICAgICByZXR1cm4gIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjoiICsgc3RyKHR5cGUp
CisgICAgICAgIHJldHVybiBzdHIodHlwZSkKKworZGVmIHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVy
bG9hZF9zdWZmaXgoZnVuY3MgOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgIGNvdW50cyA9IGNv
bGxlY3Rpb25zLkNvdW50ZXIoZi5uYW1lIGZvciBmIGluIGZ1bmNzKQorICAgIHN1ZmZpeGVzIDog
Q291bnRlcltzdHJdID0gY29sbGVjdGlvbnMuQ291bnRlcigpCisgICAgZm9yIGYgaW4gZnVuY3M6
CisgICAgICAgIGlmIGNvdW50c1tmLm5hbWVdID4gMToKKyAgICAgICAgICAgIGYub3ZlcmxvYWRf
c3VmZml4ID0gc3RyKHN1ZmZpeGVzW2YubmFtZV0pCisgICAgICAgICAgICBzdWZmaXhlcy51cGRh
dGUoW2YubmFtZV0pCisKKworY2xhc3MgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Io
b2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgQysrIGltcGxlbWVudGF0aW9u
IGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfaW1wbF0KKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAg
c2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQorCisg
ICAgZGVmIGdldF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3Ry
KGkpIGZvciBpIGluIHNlbGYuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAg
ICAgIHdyaXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc19mbiwKKyAgICAg
ICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5jdGlv
bnMoKSksCisgICAgICAgICkKKworCitjbGFzcyBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVy
YXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBXZWJLaXQgSVBDIG1l
c3NhZ2UgZGVmaW5pdGlvbiBnZW5lcmF0b3IuIgorICAgIG1zZ3M6IExpc3Rbd2Via2l0X2lwY19t
c2ddCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6
CisgICAgICAgIHNlbGYubXNncyA9IFt3ZWJraXRfaXBjX21zZyhmKSBmb3IgZiBpbiBmdW5jc10K
KworICAgIGRlZiBnZXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiIi5qb2luKHN0
cihtKSBmb3IgbSBpbiBzZWxmLm1zZ3MpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAg
ICAgIHdyaXRlX2ZpbGUoY29udGV4dF9tZXNzYWdlc19mbiwgY29udGV4dF9tZXNzYWdlc190ZW1w
bGF0ZS5mb3JtYXQoc2VsZi5nZXRfbWVzc2FnZXMoKSkpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJn
KGFyZ19zcGVjOiBzdHIsIGFyZ19pbmRleDogaW50KToKKyAgICByID0gYXJnX3NwZWMucnNwbGl0
KCIgIiwgMSkKKyAgICBuYW1lID0gIiIKKyAgICB0eXBlID0gTm9uZQorICAgIGlmIGxlbihyKSA+
IDEgYW5kIHJbMF0gIT0gImNvbnN0IjoKKyAgICAgICAgbmFtZSA9IHJbMV0uc3RyaXAoKQorICAg
ICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKHJbMF0pCisgICAgZWxzZToKKyAgICAgICAgbmFtZSA9
ICJhcmd7fSIuZm9ybWF0KGFyZ19pbmRleCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShh
cmdfc3BlYykKKyAgICByZXR1cm4gY3BwX2FyZyh0eXBlLCBuYW1lKQorCisKK2RlZiBjcmVhdGVf
Y3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgorICAgIHJldHVybiBjcHBf
YXJnX2xpc3QoW2NyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3IgaSwg
ZSBpbiBlbnVtZXJhdGUoYXJnc19zcGVjcyldKQorCisKK2RlZiBjcmVhdGVfY3BwX2Z1bmMobmFt
ZTogc3RyLCByZXR1cm5fc3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVu
c2lvbjogYm9vbCk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9
Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nf
c3BlY3MpLCBpc19leHRlbnNpb249aXNfZXh0ZW5zaW9uKQorCisKK2RlZiByZWFkX2xpbmVzX3Vu
dGlsKGxpbmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltzdHIs
IE5vbmUsIE5vbmVdOgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBpZiByZS5tYXRj
aChtYXRjaCwgbGluZS5zdHJpcCgpKToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHlpZWxk
IGxpbmUKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNl
cigidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS12
ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUHJpbnQgc29tZSBkZWJ1ZyBpbmZv
IGZyb20gdGhlIGdlbmVyYXRvciBzY3JpcHQiKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2Vf
YXJncygpCisKKyAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3Rl
IGZyb20gd2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCisKKyAgICAjIEZJWE1FOiBVbnRpbCBl
eHRlbnNpb25zIGhlYWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUgdGhlIGlt
cGxlbWVudGF0aW9uCisgICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVyIGEgZnVu
Y3Rpb24gaXMgb3IgaXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4KKyAgICBleHRlbnNpb25f
c2lnbmF0dXJlcyA6IFNldFtzdHJdID0gc2V0KCkKKyAgICB3aXRoIG9wZW4oZXh0ZW5zaW9uc19p
bnB1dF9mbikgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAg
ICAgICAgIG0gPSByZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkgPSAw
OyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVh
dGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVj
cz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgaXNfZXh0
ZW5zaW9uPVRydWUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGV4dGVuc2lv
bl9zaWduYXR1cmVzLnVwZGF0ZShbc3RyKGZ1bmMpXSkKKyAgICBmdW5jcyA9IFtdCisgICAgdW5p
bXBsZW1lbnRlZCA9IFtdCisgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6CisgICAg
ICAgIHdpdGggb3BlbihmbikgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRs
aW5lcygpKQorICAgICAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8v
IEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMg
dXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBw
YXNzCisKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIv
LyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAg
ICAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIlxzKihcUyspXHMrKFx3KylcKCguKilcKSBmaW5h
bDsiLCBsaW5lKQorICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgIGZ1
bmNfbmFtZSA9IG1bMl0KKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVu
YygKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVuY19uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBpc19leHRlbnNpb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICAgICAgZnVuYy5pc19leHRlbnNpb24gPSBzdHIoZnVuYykgaW4gZXh0ZW5zaW9uX3Np
Z25hdHVyZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgZnVuYy5pc19pbXBsZW1lbnRlZCgpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKGZ1bmMpCisgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmltcGxlbWVudGVkLmFwcGVu
ZChmdW5jKQorCisKKyAgICB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNz
KQorICAgICMgSW5pdGlhbGl6ZSBXZWJLaXQgSVBDIGdlbmVyYXRpb24uIENvbnN0cnVjdCB0eXBl
IG1hcHBpbmdzIGZvciB0aGUgdXNlZCBDKysgdHlwZXMgLT4gSVBDIHR5cGVzLgorICAgICMgVE9E
TzogbmFtZXNwYWNpbmcgaXNzdWVzLgorICAgIGFpX3R5cGUgPSBnZXRfY3BwX3R5cGUoIkFjdGl2
ZUluZm8mIikKKyAgICBhaV90cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKCJXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyIpCisgICAgd2Via2l0X2lwY190eXBlc1thaV90
eXBlXSA9IGFpX3RyYW5zZmVyX3R5cGUKKworICAgIHdpdGggb3Blbih0eXBlc19pbnB1dF9mbikg
YXMgZjoKKyAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgIGZvciBf
IGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9s
bG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1
cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBsaW5lIGlu
IHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0
aWNfYXNzZXJ0XChzdGQ6OmlzX3NhbWVfdjwoXHcrKSwgKFx3Kyk+XCk7IiwgbGluZSkKKyAgICAg
ICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tnZXRfY3BwX3R5
cGUobVsxXSldID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY29udGludWUK
KyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcr
KVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAg
ICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAg
ICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lw
Y190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2Fz
dAorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUs
IGNwcF90eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICAgICAgIyBGSVhNRTogSGVyZSB3ZSB1c2UgPD0gaW5zdGVhZCBvZiA9PSBkdWUgdG8g
cG9pbnRlcnMsIHN1Y2ggYXMgR0NHTHN5bmMsIEdDR0xpbnRwdHIsIC4uLi4KKyAgICAgICAgICAg
ICMgVGhpcyBlbmRzIHVwIGZhaWxpbmcgaWYgdGhlcmUgZXZlciBpcyBhcnJheXMgb2YgdGhlc2Ug
dHlwZXMsIHNpbmNlIGFycmF5cyBhcmUgY3VycmVudGx5CisgICAgICAgICAgICAjIHJlaW50ZXJw
cmV0LWNhc3RlZC4KKyAgICAgICAgICAgICMgV2ViS2l0IElQQyByZXF1aXJlcyBvbmUgc2l6ZWQg
dHlwZSwgYnV0IHRoZSBzaXplIG9mIHRoZXNlIHBvaW50ZXItYmFzZWQgdmFsdWVzIHdpbGwgY2hh
bmdlCisgICAgICAgICAgICAjIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgICAgIG0g
PSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVvZlwo
KFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNw
cF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBn
ZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90
eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0
ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBj
cHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9
IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9mXCgo
XHcrKVwpICYmIHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQor
ICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlw
ZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisg
ICAgICAgICAgICAgICAgY3BwX2Nhc3RfdGhyb3VnaF90eXBlID0gZ2V0X2NwcF90eXBlKG1bNF0p
CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQor
ICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlw
Y190eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjcHBf
Y2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252
ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X3RvX3Bv
aW50ZXJfdGhyb3VnaChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgY29u
dGludWUKKworICAgICMgRm9yIGFsbCB0eXBlcyBpbiB0aGUgaW5wdXQgQVBJLCBmb3JtIGNvcnJl
c3BvbmRpbmcgSVBDIHR5cGVzIGFuZCBjb252ZXJzaW9ucy4KKyAgICAjIFRPRE86IHRoaXMgaXMg
bm90IGRyaXZlbiBieSB0aGUgdHlwaW5nLgorICAgIGFsbF90eXBlcyA9IHNldCgpCisgICAgZm9y
IGZ1bmMgaW4gZnVuY3M6CisgICAgICAgYWxsX3R5cGVzLnVwZGF0ZShmdW5jLmFyZ3MudHlwZXMo
KSArIFtmdW5jLnJldHVybl90eXBlXSkKKyAgICAjIFNvcnQgYnkgbGVuIHNvIHRoYXQgdGVtcGxh
dGUgYXJncyBjb21lIGJlZm9yZSB0ZW1wbGF0ZXMuCisgICAgZm9yIGNwcF90eXBlIGluIHNvcnRl
ZChhbGxfdHlwZXMsIGtleT1sYW1iZGEgeDogbGVuKHgudHlwZV9uYW1lKSk6CisgICAgICAgIGlm
IGNwcF90eXBlIGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgCisgICAgICAgIGlmIGNwcF90eXBlLmlzX2R5bmFtaWNfc3BhbigpIG9yIGNwcF90eXBlLmlz
X3NwYW4oKToKKyAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFu
X3RyYW5zZmVyX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2Nw
cF90eXBlXSA9IHRyYW5zZmVyX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAgaWYg
Y3BwX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKToKKyAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90eXBlKV0g
PSB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNp
b24KKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHRyYW5zZmVy
X3R5cGUsIGNwcF90eXBlKV0gPSB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lvbgor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdG9yZV90eXBlID0gd2Via2l0X2lw
Y19nZXRfc3Bhbl9zdG9yZV90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9p
cGNfdHlwZXNfY29udmVydGVyc1soc3RvcmVfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2Fy
cmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICBlbGlmIGNwcF90eXBlLmlz
X3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2NvbnN0X3JlZmVyZW5jZSgpIG9yIGNwcF90eXBl
LmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAgdmFsdWVfdHlwZSA9IGNwcF90eXBlLmdldF92
YWx1ZV90eXBlKCkgaWYgbm90IGNwcF90eXBlLmlzX2NvbnRhaW5lcigpIGVsc2UgY3BwX3R5cGUK
KyAgICAgICAgICAgIGlmIHZhbHVlX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAgICAg
ICAgY29udGFpbmVkX3R5cGUgPSB2YWx1ZV90eXBlLmdldF9jb250YWluZWRfdHlwZSgpCisgICAg
ICAgICAgICAgICAgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNb
Y29udGFpbmVkX3R5cGVdCisgICAgICAgICAgICAgICAgaWYgd2Via2l0X2lwY19jb250YWluZWRf
dHlwZSA9PSBjb250YWluZWRfdHlwZToKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190
eXBlc1tjcHBfdHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZShmInt2YWx1ZV90eXBl
LmdldF9jb250YWluZXJfbmFtZSgpfTx7c3RyKHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUpfT4i
KQorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHRyYW5z
ZmVyX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBIZXJlIG1pZ2h0IGJlIGNhc2Ug
d2hlcmUgVmVjdG9yPEdDR0xpbnQ+IHdhcyB1c2VkIGluIHRoZSBpbnRlcmZhY2UgYW5kIFZlY3Rv
cjxpbnQzMl90PiBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIElQQyBkZWZp
bml0aW9uLiBUaGVyZSBpcyBubyBzZW5zaWJsZSB3YXkgdG8gZG8gdGhpcyBhdCB0aGUgbW9tZW50
LiBXZSBkbyBub3QgY29udmVydCwgcmF0aGVyCisgICAgICAgICAgICAgICAgICAgICMgZXhwZWN0
IHRoYXQgYWxsIHRoZSBpbnZvY2F0aW9ucyBhcmUgdGFrZW4gY2FyZSBvZiB0aGUgZmFjdCB0aGF0
IEdDR0xpbnQgaXMgdGhlIHNhbWUgdHlwZSBhcyBpbnQzMl90LgorICAgICAgICAgICAgICAgICAg
ICAjIFRoaXMgd2lsbCBub3QgaG9sZCBmb3IgYWxsIHR5cGVzIHN1Y2ggYXMgR0NHTGJvb2xlYW4u
CisgICAgICAgICAgICAgICAgICAgICN3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90
eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJz
aW9uCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNb
Y3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc1tjcHBfdHlwZV0gPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgCisg
ICAgIyBUaGUgaW5wdXQgdG8gdGhlIGdlbmVyYXRvcnMgaXMgbGlzdCBvZiBmdW5jdGlvbnMgdG8g
cmVtb3RlLgorICAgICMgUnVuIHRoZSB2YXJpb3VzIGdlbmVyYXRvcnMuCisgICAgZ2VuZXJhdG9y
cyA9IFsKKyAgICAgICAgY29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVu
Y3MsIHVuaW1wbGVtZW50ZWQpLAorICAgICAgICBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVy
YXRvcihmdW5jcyksCisgICAgICAgIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1
bmNzKSwKKyAgICBdCisgICAgZm9yIGcgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgZy5nZW5lcmF0
ZSgpCisKKyAgICBpZiBvcHRpb25zLnZlcmJvc2U6CisgICAgICAgIHByaW50KCJJbXBsZW1lbnRl
ZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIoaSl9IGZpbmFsXG4iIGZvciBp
IGluIGZ1bmNzKSkKKyAgICAgICAgcHJpbnQoIlVuaW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJp
bnQoIiIuam9pbihmIiAgICB7c3RyKHUpfSBmaW5hbFxuIiBmb3IgdSBpbiB1bmltcGxlbWVudGVk
KSkKKyAgICAgICAgcHJpbnQoZiJJbXBsZW1lbnRlZDoge2xlbihmdW5jcyl9LCB1bmltcGxlbWVu
dGVkOiB7bGVuKHVuaW1wbGVtZW50ZWQpfSwgdG90YWw6IHtsZW4oZnVuY3MpK2xlbih1bmltcGxl
bWVudGVkKX0iKQorICAgICAgICBwcmludCgiQysrIHR5cGUgbWFwIHRvIFdlYktpdCBJUEMgdHlw
ZSBtYXA6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAgICAg
ICAgICBpZiB0IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIg
ICAge3N0cih0KX0gLT4ge3N0cih3ZWJraXRfaXBjX3R5cGVzW3RdKX0iKQorICAgICAgICBwcmlu
dCgiQysrIHR5cGVzIHdpdGhvdXQgV2ViS2l0IElQQyB0eXBlOiIpCisgICAgICAgIGZvciBfLCB0
IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdCBub3QgaW4gd2Via2l0X2lw
Y190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSIpCisgICAgICAg
IHByaW50KCJXZWJLaXQgSVBDIHR5cGUgY29udmVyc2lvbnMiKQorICAgICAgICBmb3IgKGEsIGIp
LCBjb252ZXJ0ZXIgaW4gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLml0ZW1zKCk6CisgICAg
ICAgICAgICBwcmludChmIiAgICB7c3RyKGEpfSAtPiB7c3RyKGIpfSA6IHtjb252ZXJ0ZXIuX19u
YW1lX199IikKKyAgICAgICAgcHJpbnQoIkRvbmUuIikKKyAgICByZXR1cm4gMAorCisKK2lmIF9f
bmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ4Yjkz
OGZhMTFmODE1ZDM3ZWU4MDM3N2ZkNjRiMGJjNzNkYzgxNDAuLjc2MTZhN2I3MDExY2RkMWZmN2I5
ODZmNmQyMzJiMTMxNDk2YmNlOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0xMi0wMSAg
S2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0
R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVz
aW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgQWRkcyB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgdGhl
IG1pc3NpbmcgZnVuY3Rpb25hbGl0eS4gRG9lcyBub3QgeWV0CisgICAgICAgIGVuYWJsZSB0aGUg
dGVzdHMgdGhhdCBhY3R1YWxseSBwYXNzIGJ1dCB3aGljaCB3ZXJlIHNraXBwZWQgYmVmb3JlIHRo
ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMjAtMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkYWJsZS93cml0YWJsZSB0byBSVENS
dHBTRnJhbWVUcmFuc2Zvcm0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IGEyMjUyOGZhMWIyNjc4NzMxODUzMDU4MDAzMzkwZmQ3NTM3ZGMwYzYuLmRhNTYzODYy
ODlkNmM5NGQ0ZmZhZWNhODlhZDJiYTk5M2IxMDE2YzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nl
c3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzE3LDYgKzMxNywxNCBAQCBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1hbGxvd2VkLXdpdGgtY3JlZGVudGlh
bHMuaHRtbAogaHR0cC90ZXN0cy93ZWJnbCBbIFNraXAgXQoganMvc2hhcmVkLWFycmF5LWJ1ZmZl
ci13ZWJnbC5odG1sIFsgU2tpcCBdCiAKK3dlYmtpdC5vcmcvYi8yMTgxODQgZmFzdC9jYW52YXMv
d2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFktZmFsc2UuaHRtbCBbIFRpbWVvdXQgXQord2Via2l0
Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS10cnVl
Lmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9jYW52YXMvd2ViZ2wv
Y29udGV4dC11cGRhdGUtb24tZGlzcGxheS1jb25maWd1cmF0aW9uLmh0bWwgWyBUaW1lb3V0IF0K
K3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdl
ZGV2ZW50Lmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8yMTkzNTEgZmFzdC9jYW52YXMv
d2ViZ2wvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxOTM1
MSBmYXN0L2NhbnZhcy93ZWJnbC9wcmVtdWx0aXBseWFscGhhLXRlc3QuaHRtbCBbIEZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzIxOTM1MiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24t
c3RhdHVzLWZhaWx1cmUuaHRtbCBbIEZhaWx1cmUgXQorCiB3ZWJncHUgWyBTa2lwIF0KIAogYWNj
ZXNzaWJpbGl0eS9wcmVzcy13b3Jrcy1vbi1jb250cm9sLXR5cGVzLmh0bWwgWyBTa2lwIF0K
</data>
<flag name="commit-queue"
          id="432251"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415131</attachid>
            <date>2020-12-01 05:57:04 -0800</date>
            <delta_ts>2020-12-01 08:17:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201155702.patch</filename>
            <type>text/plain</type>
            <size>582167</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAz
Nzg5YWEzODM5NDBkMjU3NDEyNGJjMmZmNDNlN2VlYzRhZTk1MGQ1Li5jMDcwYmQzNjZmOGZiOWJj
NjU4ZWNkZDVjYzk3YzJiMTZkNWY2ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNDYsNiAr
MTI0Niw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFl
ZDhlYWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgyZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1
ODk3MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCAr
MzExLDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZDFhMzVjYzAwOGFlYTY5ZmZmMmNk
OTFkMDIzMmVmYTA3MWU3ZWQ1NC4uOTgxMTVlMTViNzYzNDk2MWFjMzkwZGIyM2Q1MzBiNzNkMjVk
NTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzIsNiArMTk3Miw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDY2ODc1MmM3OTUyNmJjNmNkMTQzYzJl
ZjY1OTZmMTRjN2IwNzMzZWQuLmJiNGJhZDg3ZGZjYWU0MGI3ZmU0ZDAwYjBmY2UyNDFlZmZiOWQ1
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzU3LDEyICszNTcsMTQgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMjIyZWQ2
Y2MyNGU2ZTY2ODg2MGY3NGNjOWVkZDg0YjNkOWRkYzMwLi45NTMxYjQ5MjcxZDBkNDAxYWQ4MjI3
OTFmODRlZmQ4NjU3ZDY2YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDUyLDcgKzIwNTIsNyBAQAogCQk2RTQ3RTY2MTEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFC
Q0Q1MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFE
MjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEw
MEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgw
RThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lv
bnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0
MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURD
RDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMw
MEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRl
bXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjQ2LDYgKzIyNDYsOCBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDEx
NDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4
MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3
NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkw
NkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDIyMyw5ICsxMDIyNSwxNCBAQAogCQk3
QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0Ix
NjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBD
NzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDgg
LyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFG
M0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3Bw
LmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJF
RjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNGMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5l
cmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjY2MTMsNiArMjY2MjAsOCBAQAogCQkJCTA3NEU4MkI5MThBNjlG
MEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmggKi8sCisJCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKKwkJCQk3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkw
NzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJ
CTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJ
CTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0yNjc3
OSw2ICsyNjc4OCw4IEBACiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKIAkJCQlCNTMyMEQ2QTEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0Mw
MDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKKwkJCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
LAorCQkJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4
NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLApAQCAtMjY3OTAsNiArMjY4MDEsNyBA
QAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3Bl
bkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLAogCQkJCUNERUIz
RDcyMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovLAogCQkJCUNE
RUIzRDczMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCAqLywKIAkJCQlD
RDhGNjY3MDI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8s
CkBAIC0zMjA4OSw2ICszMjEwMSw3IEBACiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcy
MUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQw
MDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQw
MjUsNiArMzQwMzgsNyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQw
MEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlB
MjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5
MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3Rl
UGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAv
KiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCAxZGJkMDU1ZDc4MTUzY2ZkNWM3MTc0NTk3ZjA2ZTBlNTA5
ZTc4ZmFhLi4yZjhjYmYwODcwNTBjNWYwODY4MGYyZWQ5N2QxZjMwODg2NjFhMDExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtNjc3LDIxICs2NzcsMTIgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJn
ZXRCdWZmZXJTdWJEYXRhIiwgIlBhcmFtZXRlcnMgd291bGQgcmVhZCBvdXRzaWRlIHRoZSBib3Vu
ZHMgb2YgdGhlIHNvdXJjZSBidWZmZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAK
KwogICAgIGlmICghY29weUxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0
LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAvLyBGSVhNRTogQ29hbGVzY2UgbXVsdGlwbGUgZ2V0QnVmZmVyU3ViRGF0YSgpIGNhbGxz
IHRvIHVzZSBhIHNpbmdsZSBtYXAoKSBjYWxsCi0gICAgdm9pZCogcHRyID0gbV9jb250ZXh0LT5t
YXBCdWZmZXJSYW5nZSh0YXJnZXQsIGNoZWNrZWRTcmNCeXRlT2Zmc2V0LnVuc2FmZUdldCgpLCBz
dGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGNoZWNrZWRDb3B5TGVuZ3RoUHRyLnVuc2FmZUdldCgp
ICogY2hlY2tlZEVsZW1lbnRTaXplLnVuc2FmZUdldCgpKSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1B
UF9SRUFEX0JJVCk7Ci0gICAgaWYgKHB0cikKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNo
YXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRz
dE9mZnNldCAqIGVsZW1lbnRTaXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7Ci0K
LSAgICBpZiAoIW1fY29udGV4dC0+dW5tYXBCdWZmZXIodGFyZ2V0KSkKLSAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0QnVm
ZmVyU3ViRGF0YSIsICJGYWlsZWQgd2hpbGUgdW5tYXBwaW5nIGJ1ZmZlciIpOwotI2VuZGlmCi0g
ICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBtX2Nv
bnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzcmNCeXRlT2Zmc2V0LCBtYWtlR0NHTFNw
YW4oc3RhdGljX2Nhc3Q8Y2hhcio+KGRzdERhdGEtPmJhc2VBZGRyZXNzKCkpICsgZHN0RGF0YS0+
Ynl0ZU9mZnNldCgpICsgZHN0T2Zmc2V0ICogZWxlbWVudFNpemUsIGNvcHlMZW5ndGggKiBlbGVt
ZW50U2l6ZSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlcikKQEAgLTE3MDIs
NyArMTY5Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1
aXYoR0NHTHVpbnQgaW5kZXgsIFVpbnQzMkxpc3QmJiBsaXN0CiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTR1
aXYiLCAibm8gYXJyYXkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlu
dCBzaXplID0gbGlzdC5sZW5ndGgoKTsKICAgICBpZiAoc2l6ZSA8IDQpIHsKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0ZXhB
dHRyaWJJNHVpdiIsICJhcnJheSB0b28gc21hbGwiKTsKQEAgLTE5NjcsOSArMTk1OCw3IEBAIFdl
YkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVyKFdlYkdMUXVl
cnkmIHF1ZXJ5LCBHQ0dMZW51bSBwCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVp
dihxdWVyeS5vYmplY3QoKSwgcG5hbWUsICZyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0
dWkocXVlcnkub2JqZWN0KCksIHBuYW1lKSk7CiB9CiAKIFJlZlB0cjxXZWJHTFNhbXBsZXI+IFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjAxNCw3ICsyMDAzLDcg
QEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0
LCBXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAodW5pdCA+PSBtX2JvdW5kU2Ft
cGxlcnMuc2l6ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX1ZBTFVFLCAiYmluZFNhbXBsZXIiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQi
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1OSwxNyArMjA0OCwxMSBAQCBXZWJHTEFueSBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyKFdlYkdMU2FtcGxlciYgc2Ft
cGxlciwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRF
UjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUjoKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUzoKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX1dSQVBfVDogewotICAgICAgICBpbnQgdmFsdWUgPSAwOwotICAgICAg
ICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLm9iamVjdCgpLCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+
Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDoKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6IHsKLSAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwotICAg
ICAgICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyLm9iamVjdCgpLCBw
bmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6CisgICAgICAgIHJldHVybiBtX2NvbnRl
eHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIub2JqZWN0KCksIHBuYW1lKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9FTlVNLCAiZ2V0U2FtcGxlclBhcmFtZXRlciIsICJJbnZhbGlkIHBuYW1lIik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjExOCw3ICsyMTAxLDcgQEAgR0NHTGVudW0gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMoV2ViR0xTeW5jJiBzeW5jLCBHQ0dMYml0
ZmllbGQgZmwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfT1BFUkFUSU9OLCAiY2xpZW50V2FpdFN5bmMiLCAidGltZW91dCA+IE1BWF9DTElFTlRf
V0FJVF9USU1FT1VUX1dFQkdMIik7CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6
V0FJVF9GQUlMRURfV0VCR0w7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGZsYWdzICYmIGZsYWdz
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImNs
aWVudFdhaXRTeW5jIiwgImludmFsaWQgZmxhZ3MiKTsKICAgICAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dEdMOjpXQUlUX0ZBSUxFRF9XRUJHTDsKQEAgLTIxNzksOSArMjE2Miw5IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjayogZmVlCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICFmZWVkYmFja09iamVjdCB8fCBmZWVkYmFja09iamVjdC0+aXNEZWxldGVkKCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tPYmplY3Qp
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQoZmVlZGJhY2tPYmplY3QgIT0g
bV9kZWZhdWx0VHJhbnNmb3JtRmVlZGJhY2spOwotICAgIAorCiAgICAgaWYgKGZlZWRiYWNrT2Jq
ZWN0LT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgImF0
dGVtcHQgdG8gZGVsZXRlIGFuIGFjdGl2ZSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0Iik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTIyNDgsNyArMjIzMSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIGlmICghVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ByaW1pdGl2ZU1vZGUocHJp
bWl0aXZlTW9kZSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImJlZ2luVHJhbnNmb3JtRmVlZGJhY2siLCAiaW52YWxpZCB0cmFu
c2Zvcm0gZmVlZGJhY2sgcHJpbWl0aXZlIG1vZGUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjI4
OCw3ICsyMjcxLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1G
ZWVkYmFjaygpCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX09QRVJBVElPTiwgImVuZFRyYW5zZm9ybUZlZWRiYWNrIiwgInRyYW5zZm9ybSBmZWVk
YmFjayBpcyBub3QgYWN0aXZlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAg
ICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CiAKICAgICBtX2JvdW5kVHJhbnNm
b3JtRmVlZGJhY2stPnNldFBhdXNlZChmYWxzZSk7CkBAIC0yMjk5LDcgKzIyODIsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoV2ViR0xQ
cm9ncmFtJiBwcm9ncmFtLCBjbwogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3MiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHN3aXRjaCAoYnVm
ZmVyTW9kZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNFUEFSQVRFX0FUVFJJQlM6
CiAgICAgICAgIGlmICh2YXJ5aW5ncy5zaXplKCkgPiBtX21heFRyYW5zZm9ybUZlZWRiYWNrU2Vw
YXJhdGVBdHRyaWJzKSB7CkBAIC0yNDg1LDI0ICsyNDY4LDI0IEBAIFdlYkdMQW55IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwg
Y29uc3QKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdM
UHJvZ3JhbU9yU2hhZGVyKCJnZXRBY3RpdmVVbmlmb3JtcyIsICZwcm9ncmFtKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRp
Y2VzLnNpemUoKSwgMCk7Ci0gICAgCiAgICAgc3dpdGNoIChwbmFtZSkgewotICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fVFlQRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRBY3Rp
dmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUsIHJlc3Vs
dCk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9UWVBFOiB7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVj
dCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcChb
XShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xlbnVtPih4KTsgfSk7Ci0gICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9TSVpFOgotICAgICAgICBtX2NvbnRleHQtPmdl
dEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwg
cmVzdWx0KTsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9TSVpF
OiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhw
cm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4g
cmVzdWx0Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50Pih4KTsg
fSk7CisgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfSU5E
RVg6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9PRkZTRVQ6CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9BUlJBWV9TVFJJREU6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9NQVRSSVhfU1RSSURFOgotICAgICAgICBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKLSAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lTX1JPV19NQUpPUjoKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5h
bWUsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1z
KHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6IHsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZv
cm1JbmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeCk7IH0pOworICAgIH0KICAgICBkZWZhdWx0Ogog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVN
LCAiZ2V0QWN0aXZlVW5pZm9ybXMiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTM1NzIsOCArMzU1NSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHCiAKICAgICBjbGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKIAotICAg
IEdDR0xzaXplaSBsZW5ndGgsIGNvbHVtbnMsIHJvd3M7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkucmVhZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIDAsICZsZW5ndGgsICZjb2x1bW5zLCAmcm93cywgcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4ob2Zmc2V0KSwgdHJ1ZSk7CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEFycmF5QnVmZmVyVmlldyYgZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAppbmRleCAyZTAzYTg5ZmM2OTUzZDIwMDA4MmYyNDk1NDk3NjNiZTA1YTk2MTk1Li43
ODQ0YWRlMzMyYjE0YzJjMDJjYmIyNGYyMjM2ZjdkYWY1ZTcyMGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cApAQCAtNzMyLDggKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgICAgIHJl
bmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gcmVuZGVy
aW5nQ29udGV4dDsKICAgICB9Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpOworICAgIGF1dG8gY29udGV4
dCA9IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdyk7CiAg
ICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNFbGVtZW50KSB7CiAgICAgICAg
ICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVudCwKQEAgLTQzOTUs
MTUgKzQzOTQsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB2b2lkKiBkYXRhID0g
cGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0gICAgR0NHTHNpemVpIGxl
bmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAgIEdDR0xzaXplaSByb3dz
ID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVzdEFO
R0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgo
KSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7CisgICAgbV9jb250ZXh0
LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dM
U3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmIChtX2lzUm9i
dXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
cmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMu
Ynl0ZUxlbmd0aCgpLCBkYXRhKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29udGV4dC0+cmVhZFBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICBt
X2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
bWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVuZ3RoKCkpKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAppbmRleCA0YTQyMGJmMGExMTZj
Y2NhYjVkYjg3YTI2ZDhiYTI0MjgyOGYyZDU1Li44OWE2M2UzNjIxNzEyMjRiNDEzYTQ5NTQyMzEy
ZTM4MzZiNmViYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBXZWJHTFN5bmM6OnVwZGF0ZUNhY2hlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYWxsb3dD
YWNoZVVwZGF0ZSA9IGZhbHNlOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
U3luY2l2KG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTLCBzaXplb2YobV9z
eW5jU3RhdHVzKSwgJm1fc3luY1N0YXR1cyk7CisgICAgbV9zeW5jU3RhdHVzID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaShtX3N5bmMsIEdyYXBoaWNzQ29udGV4dEdMOjpT
WU5DX1NUQVRVUyk7CiAgICAgaWYgKG1fc3luY1N0YXR1cyA9PSBHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdOQUxFRCkKICAgICAgICAgc2NoZWR1bGVBbGxvd0NhY2hlVXBkYXRlKGNvbnRleHQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDRkYWEzNGNjMmQ1ZDA3OTYyZWUxYTYxYzgyNTNi
ZWI2YTk0NjU0NmMuLmMyYTY5Yjg2YmMzMTgxNjdhMzMyY2ZmZjZkZWFmNGNmOGIyOWYzNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUzMCw2ICs1MzAsMTMgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW8KICAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IENocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5jcmVh
dGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBkaXNwbGF5SUQoKSk7Cit9CisjZW5kaWYK
KwogUGxhdGZvcm1EaXNwbGF5SUQgQ2hyb21lOjpkaXNwbGF5SUQoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BhZ2UuZGlzcGxheUlEKCk7CkBAIC01NDMsNiArNTUwLDcgQEAgdm9pZCBDaHJvbWU6
OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9wdGlv
bmFsPHVuc2lnbmUKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwg
bm9taW5hbEZyYW1lSW50ZXJ2YWwpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoR1JB
UEhJQ1NfQ09OVEVYVF9HTCkKKyAgICAvLyBUT0RPOiBHUFUgcHJvY2Vzcy4gQ2hhbmdlIHRvIEdD
R0xNYW5hZ2VyLCBtYWtlIGl0IHdvcmssIHJldHVybiBudWxsIGZvciBvdGhlcnMuCiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NyZWVuRGlkQ2hh
bmdlKGRpc3BsYXlJRCwgdGhpcyk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDIz
MzI4ZjU2YTE5MTIwNDlkNDc5NzY0MWQwMTQwMDU1MTU5MDM1MDIuLmE4OWRkMWExZDg2NWU1MzI4
ZWIwNTA1NzY1NDBkM2YyMzJhM2NmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtODYsNiArODYs
MTAgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlk
ZTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYp
IGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggM2E5ZTFkNjY5MDk3ZTU5NWQ5YjU3ZmM0Y2ZmN2U2MWE1
ZDE4ZDBhOS4uOGYxOGZkZmYwNDk5MDM3NTg5OGIxN2I5MjhjYzBlMDYwMGU5MWM3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMjUsNiArMzI1LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAorI2lmIEVOQUJM
RShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgor
CiAgICAgLy8gUGFzcyBudWxscHRyIGFzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRldGF0Y2ggdGhl
IHJvb3QgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZy
YW1lJiwgR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVmlld092
ZXJsYXlHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKaW5kZXggNDNkYjFmZmFlMDEyYmIyMTg5NGYyY2E5NjMwNzIxNDc2NmFh
ZGQ5ZS4uNzM4MTE4YjIxZTNjMzM3YjJlNTMxYzk5NmQwOTliZDNlOWE1NjliMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSAiV2lkZ2V0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYzLDYgKzY0LDEwIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0ID0g
MDsKKyNlbmRpZgorCiAgICAgLy8gTWV0aG9kIGZvciByZXRyaWV2aW5nIHRoZSBuYXRpdmUgY2xp
ZW50IG9mIHRoZSBwYWdlLgogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3Jt
UGFnZUNsaWVudCgpIGNvbnN0ID0gMDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKaW5kZXggYTIyNTNjODFiZmUwYTBiYjA5
MTBiZGU2YzBkYjI2YWE3ODQ1MmZiMy4uN2FmYmE2ZWM1MDg4MTljYzFlYWJhZGNjZGUwYmI3OWE4
Mzg0MmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmgKQEAgLTM0LDEzICszNCwxNiBAQCBXRUJDT1JFX0VYUE9SVCBpbnQgcHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKICNpZiBQTEFURk9STShXSU4pCiBpbmxpbmUgYm9v
bCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc0luR1BV
UHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZWxpZiAhUExBVEZPUk0oQ09DT0EpCiBpbmxp
bmUgYm9vbCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBib29sIGlz
SW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAKIGJvb2wgaXNJbldlYlByb2Nlc3MoKTsKK2Jvb2wgaXNJbkdQVVByb2Nlc3MoKTsK
IGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNzKCk7CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3NDb2NvYS5tbQppbmRleCBmYmQxZDQzYzA4Zjg2ZGMzYzE4ZWQyMTU2MGYwOGNmODdmYTFhZjM5
Li5iMDZmZjQ3ZGZjNTQxNzIxZjY0YWEwZGUzOGIzYjkyZjg4MzgyNDZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3NDb2NvYS5tbQpAQCAtOTYsNiArOTYsMTIgQEAgYm9vbCBpc0luV2ViUHJvY2Vzcygp
CiAgICAgcmV0dXJuIG1haW5CdW5kbGVJc1dlYlByb2Nlc3M7CiB9CiAKK2Jvb2wgaXNJbkdQVVBy
b2Nlc3MoKQoreworICAgIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc0dQVVByb2Nlc3MgPSBbW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBoYXNQcmVmaXg6QCJjb20uYXBw
bGUuV2ViS2l0LkdQVSJdOworICAgIHJldHVybiBtYWluQnVuZGxlSXNHUFVQcm9jZXNzOworfQor
CiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgc3RhdGljIGJvb2wgbWFpbkJ1bmRs
ZUlzTmV0d29ya1Byb2Nlc3MgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSBoYXNQcmVmaXg6QCJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmciXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMjYyN2E5
YjdmNDQ2NTEwY2RjMDM0MWRiODY3MzQ0NzQ5NTE0N2I4OC4uNDFhZGQ3MzhkZGVhMjIyNDZkMGI5
YjA2Nzc5MzQ1ZGQ2MDk5ZGMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI2Nyw3ICsyNjcsMTAgQEAgcHVibGljOgogICAgIC8v
IEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOwogCi0gICAgLy8gV2ViR0wgZnVu
Y3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgorICAgIC8v
IEdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFID0gMHg5M0E4OworCisgICAgLy8gV2ViR0wg
ZnVuY3Rpb25zLgogCiAgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKICAgICAvLyBOb3RlOiBUaGlz
IG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZlcnMgZnJvbSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKQEAg
LTI3OSwxMCArMjgyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2Js
aXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3Jj
WTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcg
ZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0
ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBs
ZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpID0gMDsKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgdmlydHVh
bCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwpAQCAtMjk2LDE1
ICsyOTksMTUgQEAgcHVibGljOgogICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAv
IEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291
bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwg
R0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBHTF9BTkdM
RV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0
QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBH
Q0dMdm9pZCogcGl4ZWxzKSA9IDA7CkBAIC0zMzIsNyArMzM1LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wg
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CkBA
IC0zNTUsNyArMzU3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VY
VChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
dm9pZCogZGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxv
YXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
KiBwYXJhbXMpID0gMDsKLSNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKQEAgLTM2Nyw2ICszNjgsNyBAQCBwdWJs
aWM6CiAgICAgLy8gdGhhdCBtdXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQg
dGhlc2UgZmxhZ3Mgb24gc3VjaCBjb25maWd1cmF0aW9ucy4KICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKKyNlbmRpZgogCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5jcHAKaW5kZXggZGY0YTExOWEzMjBkYWM2YWViNjMwNmQ0YzUwOTU1MTU4OGExOTcz
ZS4uMzRkNTU2YjBjYzRhOWJiMWFlYTdhNWE5NjhiYzY5NWIzYTJlMjc4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNw
cApAQCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgi
CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIAogI2luY2x1ZGUgIkV4dGVuc2lv
bnNHTC5oIgogI2luY2x1ZGUgIkZvcm1hdENvbnZlcnRlci5oIgorI2luY2x1ZGUgIkhvc3RXaW5k
b3cuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTQwMyw2ICs0MDUsMTUgQEAgc3RhdGljIGJvb2wgcGFj
a1BpeGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLCBHcmFwaGljc0NvbnRleHRHTDo6RGF0
YUZvcm1hdAogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTD4gcmVzdWx0OworICAgIGlmIChob3N0V2luZG93KQorICAgICAgICBy
ZXN1bHQgPSBob3N0V2luZG93LT5jcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQogCiBHcmFwaGljc0NvbnRleHRHTDo6R3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dHJzLCBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250
ZXh0R0wqKQogICAgIDogbV9hdHRycyhhdHRycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGM4ZTI3OWYzOTNiNmNh
ODEyM2ZjZWVmN2M4OWIxMjVjNTJkYzZlZjMuLmJhNzJiMzFhZDY1ODViNGE5YmI1ZDZhZGVmYzFi
ZjEzZGY1ZjNiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTksNiArNTksOCBAQCBjbGFzcyBJbWFnZURhdGE7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWOwogI2VuZGlmCiAKKworLy8gQmFzZSBjbGFzcyBm
b3IgZ3JhcGhpY3MgY29udGV4dCBmb3IgaW1wbGVtZW50aW5nIFdlYkdMIHJlbmRlcmluZyBtb2Rl
bC4KIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3ND
b250ZXh0R0w+IHsKIHB1YmxpYzoKICAgICAvLyBXZWJHTCAxIGNvbnN0YW50cy4KQEAgLTkxMSwx
NCArOTEzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgR0NHTGludCBzaXplOwogICAgIH07CiAKKyAg
ICAvLyBDcmVhdGVzIGEgR3JhcGhpY3NDb250ZXh0R0wgaW5zdGFuY2UgdG8gcmVuZGVyIGludG8g
b2Zmc2NyZWVuIGRlc3RpbmF0aW9uIGluIGNvbnRleHQgb2YgSG9zdFdpbmRvdy4KKyAgICAvLyBI
b3N0V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFja2VuZCBpcyB0byBi
ZSB1c2VkLgorICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBIb3N0V2luZG93Kik7CisKICAgICBHcmFw
aGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIERlc3RpbmF0aW9uID0g
RGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0wqIHNoYXJlZENvbnRleHQg
PSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTCgpID0gZGVmYXVsdDsK
IAogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5hZGQoJmNs
aWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVu
dHMucmVtb3ZlKCZjbGllbnQpOyB9CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0
IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCi0KKyAgICAvLyBXZWJHTCBmdW5jdGlv
bnMuCiAgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kQXR0
cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOwpAQCAtOTgwLDcgKzk4NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlVW5pZm9y
bShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3Jt
R0xPYmplY3QqIHNoYWRlcnMpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIApAQCAt
MTAyNSwxMCArMTAyOSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRVbmlm
b3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAK
LSAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpID0gMDsKLQogICAg
IHZpcnR1YWwgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBoaW50KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gbW9kZSkgPSAwOwpAQCAtMTEwMCw3ICsxMTAwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWQqIGRhdGEpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsICBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkgPSAwOwpAQCAtMTEyNCw4ICsxMTI1LDcgQEAgcHVibGljOgogICAgIC8vID09PT09
PT09PT0gV2ViR0wgMiBlbnRyeSBwb2ludHMuCiAKICAgICB2aXJ0dWFsIHZvaWQgY29weUJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xp
bnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNp
emUpID0gMDsKLSAgICB2aXJ0dWFsIEdDR0x2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0Zmll
bGQgYWNjZXNzKSA9IDA7Ci0gICAgdmlydHVhbCBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7
CkBAIC0xMTg3LDcgKzExODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuZFF1ZXJ5
KEdDR0xlbnVtIHRhcmdldCkgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBnZXRR
dWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAgICAgLy8gZ2V0UXVl
cnlQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgPSAwOworICAg
IHZpcnR1YWwgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVNhbXBsZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7CkBAIC0xMTk2LDggKzExOTYsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGZsb2F0IHBhcmFtKSA9IDA7CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAg
IHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBn
ZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwg
R0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdz
KSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMpID0gMDsKQEAg
LTEyMDUsNyArMTIwNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGNsaWVudFdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZs
YWdzLCBHQ0dMaW50NjQgdGltZW91dCkgPSAwOwogICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U3luY2l2KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdl
dFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSA9IDA7CkBA
IC0xMjIyLDcgKzEyMjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXJS
YW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1
ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSA9IDA7CiAgICAgLy8g
Z2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1c2UgZ2V0UGFyYW1ldGVyIGNhbGxzIGFib3ZlLgogICAg
IHZpcnR1YWwgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUs
IFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8R0NHTGlu
dD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0
b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAg
IHZpcnR1YWwgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpID0gMDsKICAgICAvLyBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKQEAgLTEyMzAsNyArMTIzMCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tC
aW5kaW5nKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpID0gMDsKLQorICAgIAogICAgIC8vIE90aGVy
IGZ1bmN0aW9ucy4KICAgICBHQ0dMZmxvYXQgZ2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpOwogICAg
IEdDR0xib29sZWFuIGdldEJvb2xlYW4oR0NHTGVudW0gcG5hbWUpOwpAQCAtMTM5NCw3ICsxMzk0
LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6OmdldEFjdGl2ZVVuaWZvcm1C
bG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1cm4gdmFsdWVbMF07CiB9CiAK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKaW5kZXggODVjMjlhNGI2ZTU2
MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3NjhlY2M0YmYwMmI3NjI1YTZm
MWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQgR0NHTHVpbnQ7CiB0eXBlZGVm
IGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0NHTGhhbGZmbG9hdDsK
IHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKKwor
Ly8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0Y2ggdGhlIEdMIHR5cGVzIGFz
IGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZpbGUgZm9yIGFsbCBwbGF0Zm9y
bXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBlZGVmIGludHB0cl90IEdDR0xz
aXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVkZWYgaW50cHRyX3QgR0NHTHZv
aWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdDR0xzeW5jOwot
dHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmpl
Y3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmpl
Y3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4K
K2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW47CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0IEdDR0xTcGFuIHsKLSAgICBl
eHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJh
eSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0YShhcnJheSkKLSAgICB7IH0K
KyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAg
IH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAgICAgICAgIDogZGF0YShhcnJh
eSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBHQ0dMU3BhbiB7CiAgICAgR0NH
TFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0g
bnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAgICAgeyB9CisgICAgR0NHTFNw
YW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRh
dGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6OmFycmF5PFQsIEV4dGVudD4m
IGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQogICAgIFQmIG9w
ZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBpIDwgYnVmU2l6ZSk7
IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkgeyBSRUxFQVNFX0FTU0VSVChk
YXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBUKiBkYXRhOwpAQCAtNzksNyAr
OTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0
cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7Citz
dHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50PiB7CiAgICAgR0NHTFNwYW4o
VCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgICAg
ICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDExIEBAIHN0cnVjdCBHQ0dMU3Bh
bjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKICAgICAgICAgLCBidWZT
aXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9y
PFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkp
CisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXplb2YoVSkpCisgICAgeyB9CiAg
ICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7CiB9OwpAQCAtMTUy
LDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQs
IE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAt
PiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorR0NHTFNwYW4o
c3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihXVEY6OlZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIEdD
R0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMwZjJmMzA2OGZmMDI5
MWFmNWJlNjBhNWM1ZjZlMWVlYjdhNGFmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNw
cApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJz
KQoreworICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgPSBkZWZh
dWx0OworCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gMDsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworRXh0
ZW5zaW9uc0dMJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9u
cygpCit7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQoreworfQorCitHcmFwaGlj
c0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
eyB9OworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMy
Q29tcGxpYW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0ZXMoKS5pc1dl
YkdMMjsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0Nv
bnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogVGhlIGNhbGxlciBzaG91bGQgdHJhY2sg
dGhpcyBzdGF0ZS4KKyAgICBpZiAobV9sYXllckNvbXBvc2l0ZWQpCisgICAgICAgIG5vdGlmeU1h
cmtDb250ZXh0Q2hhbmdlZCgpOworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0
ZWQoKQoreworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1ZTsKKyAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBpZiAoIWF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
cikgeworICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0cnMuZGVwdGgpCisgICAgICAgICAgICBt
X2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJ
VDsKKyAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpCisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1
dG9DbGVhciB8PSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgIH0K
KyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAg
ICBjbGllbnQtPmRpZENvbXBvc2l0ZSgpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xh
eWVyQ29tcG9zaXRlZDsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCBidWZmZXJzKQoreworICAgIGlm
ICghY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgICAgIG1f
YnVmZmVyc1RvQXV0b0NsZWFyID0gYnVmZmVyczsKK30KKworR0NHTGJpdGZpZWxkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9DbGVhcjsKK30KKworYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCit7Cisg
ICAgLy8gUmVkZWNsYXJlZCBmb3IgZXhwb3J0IHJlYXNvbnMuCisgICAgLy8gRklYTUU6IFRoZSB3
aG9sZSBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICBHcmFwaGljc0NvbnRleHRHTDo6
ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3
YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJs
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7Cisg
ICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJs
ZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQobmFtZSk7CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworICAg
IH0KK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVk
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVk
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lv
bnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKQoreworICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZm9yIChhdXRvJiBleHRl
bnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRp
YWxpemUoKQoreworfQorCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisjZW5kaWYKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40Y2U4YTA5MTRkOGU4ZTI5ZTJkMjgzMTI1MDRjNGViMzIwYjExOWMxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiRXh0ZW5z
aW9uc0dMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExB
VEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZiBQ
TEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgV2ViR0xMYXllcjsKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluOworI2VuZGlmCisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgcHJveHkgc2lkZSBpbXBsZW1lbnRhdGlvbgorLy8gVGhpcyBp
bXBsZW1lbnRzIHRoZSBwYXJ0cyB0aGF0IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0
aW9uYWxpdHk6CisvLyAtIERyYXdpbmcgYnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCisvLyAt
IENvbXBvc2l0aW5nIHN1cHBvcnQuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4
dGVuc2lvbnNHTCB7CitwdWJsaWM6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0
R0w6OmlzRW5hYmxlZDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRm
b3JtVGV4dHVyZSgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5h
bDsKKyAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNv
bXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihH
Q0dMYml0ZmllbGQpIGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xl
YXIoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyhJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CisKKyNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0
R0xDViogYXNDVigpIGZpbmFsOworI2VuZGlmCisgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3Zl
cnJpZGVzLgorICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOworICAgIGJvb2wgc3Vw
cG9ydHMoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxh
YmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAg
IHZpcnR1YWwgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2Fw
Q2hhaW4oKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXpl
KCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKKyNlbmRpZgorCisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXpl
ZCgpLgorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFz
aFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJp
bmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIg
Y2xlYXIgdHJhY2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBt
X2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1
dG9DbGVhciA9IHsgMCB9OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
aW5kZXggMjgzZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2ZkODIzZDA4MWM1NWU0YS4uN2MxNTFmYTI4
NTBmMzNjMTQ5YTlkYzgyMjM4MWI4ZmNiZGU5Y2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cApAQCAtNDYsMjggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRXh0ZW5zaW9uc0dMQU5H
TEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBi
b29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0
ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9pc05WSURJ
QShmYWxzZSkKLSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0g
ICAgLCBtX2lzSW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemUoZmFsc2UpCiAgICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdl
dFN0cmluZykKIHsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwgcmVtb3ZlIHRoaXMgaW5pdGlhbGl6
YXRpb24gYWx0b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJzdW1lcyB0aGUgcmVzcG9uc2liaWxp
dHkgZm9yIGdyYXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4KLSAgICBtX3ZlbmRvciA9IFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1ZFTkRPUikp
KTsKLSAgICBtX3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsOjpHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2ZW5k
b3JDb21wb25lbnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgn
ICcpOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJudmlkaWEiKSkKLSAgICAg
ICAgbV9pc05WSURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMo
ImF0aSIpIHx8IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIpKQotICAgICAgICBtX2lz
QU1EID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW50ZWwiKSkK
LSAgICAgICAgbV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250
YWlucygiaW1hZ2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0aW9uID0gdHJ1ZTsKIH0K
IAogRXh0ZW5zaW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKQEAg
LTEwMyw3ICs4Myw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OmlzRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1pbnQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQorR0xpbnQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7CiB9CkBAIC0xMTQsMTAgKzk0LDExIEBAIFN0cmlu
ZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGludCBz
b3VyY2VMZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVE
X1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKKwogICAgIGlmICghc291cmNlTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNv
dXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUg
aW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwor
ICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwogICAgIGdsOjpHZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFt
ZS5kYXRhKCkpOwogICAgIGlmICghcmV0dXJuZWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwpAQCAtMTQ3LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omlu
aXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxl
RXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFt
ZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBs
b25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBs
b25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKQEAgLTE1Niw3ICsxMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpi
bGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZwog
ICAgIGdsOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwg
ZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFs
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzUsNyArMjE2
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGJ1ZnMpCiAgICAgZ2w6OkRyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwg
YnVmcy5kYXRhKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQzLDE1ICsyMjQsMTUgQEAgdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2kKICAgICBnbDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZp
cnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKKyAgICBnbDo6RHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVy
dGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM1MCw3ICszMzEsNyBAQCB2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRl
eCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0MTIs
NyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9i
dXN0QU5HTEUocG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM5LDcgKzQyMCw3IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC00NTYs
NTUgKzQzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpCiAgICAgZ2w6OkdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwog
fQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotc3RhdGljIHZv
aWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNp
Z25lZCBjaGFyKiBwaXhlbHMpCi17Ci0gICAgLy8gV2UgY2FuIGFzc3VtZSB0aGlzIGRvZXNuJ3Qg
b3ZlcmZsb3cgYmVjYXVzZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMKLSAgICAvLyB1c2UgY2hlY2tl
ZCBhcml0aG1ldGljLgotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0Owot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBwaXhl
bHNbaSArIDNdID0gMjU1OwotfQotI2VuZGlmCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJl
YWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAq
cm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKLXsKLSAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRy
aXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBj
YWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCi0gICAgZ2w6OkZsdXNo
KCk7Ci0gICAgYXV0byBhdHRycyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKLSAg
ICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1fY29udGV4dC0+bV9pc0ZvcldlYkdMMiA/
IEdyYXBoaWNzQ29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSOwotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGlj
c0NvbnRleHRHTFN0YXRlJiBzdGF0ZSA9IG1fY29udGV4dC0+bV9zdGF0ZTsKLSAgICBpZiAoYXR0
cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlz
YW1wbGVGQk8pIHsKLSAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVj
ZXNzYXJ5KEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgICAgICBnbDo6QmluZEZy
YW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fZmJvKTsKLSAgICAgICAg
Z2w6OkZsdXNoKCk7Ci0gICAgfQotICAgICh2b2lkKSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHks
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCBy
b3dzLCBkYXRhKTsKLSAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKLSAgICBpZiAo
YXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVs
dGlzYW1wbGVGQk8pCi0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJn
ZXQsIG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgLy8gQU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNS
b2J1c3RBTkdMRSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKLSAgICAgICAgLy8gc3lu
dGhldGljIGVycm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93
LgotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBpZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYmICFhdHRycy5hbHBoYSAm
JiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVE
X0JZVEUpICYmIChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX2ZibyB8fCAoYXR0
cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlz
YW1wbGVGQk8pKSkKLSAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhl
aWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKLSNlbmRpZgotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC01MTIsNyArNDQ1LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNTIwLDcgKzQ1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sCiAg
ICAgZ2w6OkdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQordm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBhNzcz
MWRmZDIwYzVmMDNhMzM1OTAzZmFhNmUzOGZmNzJmNGIyMzIzLi5jYmY0OThiZDdjMWExYWI5YWE2
YjcwZmI1ZDM4YWM0YjkyZmIwMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTU2LDIxICs1
NiwxMiBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZm
ZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBk
c3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBt
YXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
c2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0
aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVm
ZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NH
TGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwg
R0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJh
d0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KSBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lz
TlZJRElBOyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0K
LSAgICBib29sIGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBi
b29sIGlzSW1hZ2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0K
LSAgICBTdHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAg
IGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVy
biBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJl
c1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQorICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpIG92ZXJyaWRlOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1v
cnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVp
ICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CkBAIC05
Nyw3ICs4OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEs
IGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsK
QEAgLTEzMCwxOCArMTIwLDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0
byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCog
bV9jb250ZXh0OwogCi0gICAgYm9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAg
ICBib29sIG1faXNJbnRlbDsKLSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1f
cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsKLQogICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3Ry
aW5nIHsgZmFsc2UgfTsKIAotICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5k
ZXJlcjsKLQogICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBv
aW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29s
IG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xD
b2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwCmluZGV4IDEyN2EzYjhkYmEzYzNmNDRjZDc2NWRkOGZjNzExY2RkODc4ZGU5YTQuLjFk
NjA0YjcxZDQ4MTRmNTk3YzJjMmZjODllZGM5NjQ4ZGMxM2M3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwCkBAIC00NDMsMzIgKzQ0Myw1MyBAQCBFeHRlbnNpb25zR0wmIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICAgICByZXR1cm4gKm1fZXh0
ZW5zaW9uczsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgZGF0YS5kYXRhLCBmYWxzZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRl
cnByZXRfY2FzdDxHQ0dMdm9pZCo+KG9mZnNldCksIHRydWUpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSog
Y29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9Q
aXhlbEJ1ZmZlck9iamVjdCkKIHsKLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVz
aCBjYWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBw
cmV2aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4
ZWxzLgogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZl
ciBidWcgaXMgZml4ZWQsIGkuZS4sCisgICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxs
cyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgZ2w6OkZsdXNoKCk7
CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgR0NHTGVudW0gZnJh
bWVidWZmZXJUYXJnZXQgPSBtX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURf
RlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgaWYgKGF0
dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJP
KSB7CisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdM
U3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKKyAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRl
LmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CiAgICAgICAgIHJlc29sdmVNdWx0
aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAg
ICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fZmJvKTsKICAgICAg
ICAgZ2w6OkZsdXNoKCk7CiAgICAgfQotICAgIGdsOjpSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBt
X3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQorICAgIG1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5z
LCByb3dzLCBkYXRhKTsKKyAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKKyAgICBp
ZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxl
RkJPKQogICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX211
bHRpc2FtcGxlRkJPKTsKIAorICAgIGlmIChlcnJvcikgeworICAgICAgICAvLyBBTkdMRSBkZXRl
Y3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlv
bi4gU3VyZmFjZSB0aGlzIGluIHRoZQorICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwg
YW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIChm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllU
RSkgJiYgKG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMg
JiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykpKQorICAgIGlmICgh
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpC
R1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0
YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2ZibyB8fCAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCiAgICAgICAgIHdpcGVBbHBoYUNoYW5u
ZWxGcm9tUGl4ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihk
YXRhKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCk7CiAjZW5kaWYKIH0KIAotCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pCkBAIC04OTgsMjAgKzkxOSwxNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsCiAgICAgZ2w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVm
U2l6ZSwgZGF0YS5kYXRhKTsKIH0KIAotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1h
cEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXpl
aXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGdsOjpNYXBCdWZm
ZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwotfQotCi1HQ0dMYm9vbGVh
biBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQot
ewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxT
RTsKLQotICAgIHJldHVybiBnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIEdDR0x2b2lkKiBwdHIgPSBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQs
IGRhdGEuYnVmU2l6ZSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYg
KCFwdHIpCisgICAgICAgIHJldHVybjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEu
YnVmU2l6ZSk7CisgICAgaWYgKCFnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNl
dCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpCkBAIC0xMDA4LDE0
ICsxMDI1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsCiAgICAgY29tcHJlc3NlZFRleFN1
YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5h
bWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkK
IHsKKyAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7
CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgZ2w6OkdldEFj
dGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5k
aWNlcy5kYXRhKCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICBnbDo6R2V0QWN0aXZlVW5p
Zm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRh
dGEoKSwgcG5hbWUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdD
R0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdD
R0xlbnVtIHRhcmdldCkKQEAgLTIxMDEsMjIgKzIxMTksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjbwogICAgIHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRm
OCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZs
b2F0PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5h
bWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRy
aWJpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFs
dWUuZGF0YSk7Ci19Ci0KIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjM5MiwxMiArMjM5NCwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiAgICAg
Z2w6OkVuZFF1ZXJ5KHRhcmdldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFF1ZXJ5T2JqZWN0dWl2KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQq
IHBhcmFtcykKK0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVj
dHVpKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMdWludCB2YWx1ZSA9
IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFt
ZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIC8vIFRyYW5z
Zm9ybSBGZWVkYmFjayBGdW5jdGlvbnMKQEAgLTI4MzksMjAgKzI4NDIsMjQgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW4KICAgICBnbDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUs
IHBhcmFtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCogdmFsdWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7
CisgICAgR0NHTGZsb2F0IHZhbHVlID0gMC5mOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwg
JnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAK
LSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7Cisg
ICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAx
LCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogR0NHTHN5bmMgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xi
aXRmaWVsZCBmbGFncykKQEAgLTI4OTUsMTIgKzI5MDIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBH
Q0dMaW4KICAgICBnbDo6V2FpdFN5bmMoc3luYywgZmxhZ3MsIHRpbWVvdXQpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBu
YW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6
OkdldFN5bmNpdihzeW5jLCBwbmFtZSwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUpOworICAgIGds
OjpHZXRTeW5jaXYoc3luYywgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzM1OTdmNDc1M2QwYmVjMWQwMmU3ZDVmY2ZkYzY0
M2E5ODNjODhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0w
LDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
R0wpICYmIFBMQVRGT1JNKENPQ09BKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjp+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4oKSA9IGRlZmF1bHQ7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWU4OGMyZjk5
YjFjYWE1ODExN2M3MzkxMWE1MWI2N2RkZTYzMmJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUkFQSElDU19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIklP
U3VyZmFjZS5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBBbiBpbnRlcmZhY2UgZm9yIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdlbWVudCBv
ZiBhIDMtYnVmZmVyaW5nIHN3YXAKKy8vIGNoYWluIG9mIElPU3VyZmFjZXMuCisvLyBUaGUgaW1w
bGVtZW50b3Igd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KKy8v
IFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2ls
bCByZWNlaXZlIHRoZSBtZXRhZGF0YQorLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJl
ZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5Cisv
LyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCisvLyBF
eGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBh
cyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5CisvLyB3aGVuIHRoZSBkaXNwbGF5IGNsaWVudCBpcyBk
b25lIHdpdGggdGhlIElPU3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1
c2luZworLy8gdGhlIGV4aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVy
IHJlY3ljbGUgbG9naWMuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4oKTsKKyAgICBzdHJ1Y3QgQnVmZmVyIHsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBj
b250ZW50cy4KKyAgICAgICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OyAvLyBQcm9kdWNlciBz
cGVjaWZpYyBtZXRhZGF0YSBoYW5kbGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCisgICAgfTsKKyAg
ICAvLyBSZXR1cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMg
YnVmZmVyLgorICAgIC8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hp
cCBvZiB0aGUgY29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhl
CisgICAgLy8gdGltZSBvZiB0aGUgY2FsbC4KKyAgICAvLyBSZXR1cm5zIGVpdGhlcjoKKyAgICAv
LyAtIEVtcHR5IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVkLgorICAgIC8v
IC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRs
ZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKKyAgICAvLyAgIGJ1dCB0aGUg
c3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCisgICAgLy8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCisg
ICAgdmlydHVhbCBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpID0gMDsKKworICAgIC8vIFByZXBhcmVz
IHRoZSB0YXJnZXQgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBD
bGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3VyZmFjZSBzdXJmYWNlIGlu
IHRoZSBgYnVmZmVyYC4KKyAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsKKwor
ICAgIC8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVu
dHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KKyAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVy
cyBoYXZlIGJlZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxl
ZCBiZWZvcmUgY2FsbGluZworICAgIC8vIHRoaXMuCisgICAgdmlydHVhbCB2b2lkKiBkZXRhY2hD
bGllbnQoKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggMmUxYzc5OWU4Mjg1M2IzMjBiOGNlZGRkNGE2ZmU1ZTUw
NGE5ZDg5Yy4uN2Q2NTFlZDJjOTJhMzM2NGQzMTM3NWIxNjM5YzkwZDYxMmU3ZTM4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yMCw3ICsyMCw3IEBA
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW1wb3J0ICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
ci5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtODEs
NyArODIsNyBAQCBzdGF0aWMgRUdMRGlzcGxheSBJbml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAg
RUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CiAgICAgRUdMaW50IG1pbm9yVmVyc2lvbiA9IDA7CiAg
ICAgRUdMRGlzcGxheSBkaXNwbGF5OwotICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xh
dGlsZUNvbnRleHRTdXBwb3J0ID0gIWlzSW5XZWJQcm9jZXNzKCk7CisgICAgYm9vbCBzaG91bGRJ
bml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQgPSAhKGlzSW5XZWJQcm9jZXNzKCkg
fHwgaXNJbkdQVVByb2Nlc3MoKSk7CiAgICAgaWYgKHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRp
bGVDb250ZXh0U3VwcG9ydCkgewogICAgICAgICAvLyBGb3IgV0sxIHR5cGUgQVBJcyB3ZSBuZWVk
IHRvIHNldCAidm9sYXRpbGUgcGxhdGZvcm0gY29udGV4dCIgZm9yIHNwZWNpZmljCiAgICAgICAg
IC8vIEFQSXMsIHNpbmNlIGNsaWVudCBjb2RlIHdpbGwgYmUgYWJsZSB0byBvdmVycmlkZSB0aGUg
dGhyZWFkLWdsb2JhbCBjb250ZXh0CkBAIC0xMzQsNyArMTM1LDcgQEAgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dEcKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYo
bmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBkZXN0aW5hdGlv
bikpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCA9IGFkb3B0
UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdpbmRvdywgbnVsbHB0
ciwgbnVsbHB0cikpOwogCiAgICAgaWYgKCFjb250ZXh0LT5tX2NvbnRleHRPYmopCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTQ3LDEzICsxNDgsMTggQEAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dEcKIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCkK
IHsKICAgICBhdXRvIGhvc3RXaW5kb3cgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5ob3N0V2luZG93Rm9yQ29udGV4dCgmc2hhcmVkQ29udGV4dCk7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChz
aGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csIHNoYXJlZENvbnRl
eHQuZGVzdGluYXRpb24oKSwgJnNoYXJlZENvbnRleHQpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgJnNoYXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENv
bnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdpbmRvdyk7CiAKICAgICByZXR1cm4gY29udGV4dDsK
IH0KIAorUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJzLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dhcENoYWluKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJz
LCBudWxscHRyLCBudWxscHRyLCBzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykg
Ly8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRh
cjovLzUzMDYyNzk0Pi4KIAogc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRl
eHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVn
aXN0cnlHUFVJRCBwcmVmZXJyZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBAQCBzdGF0aWMgdm9p
ZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZv
cm1hdE9iaiBwaXhlbAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHRHTDo6
RGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRD
b250ZXh0KQotICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3RpbmF0aW9uLCBzaGFy
ZWRDb250ZXh0KQorR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBHcmFwaGljc0NvbnRl
eHRHTChhdHRycywgRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAg
ICBtX2lzRm9yV2ViR0wyID0gYXR0cnMuaXNXZWJHTDI7CiAKQEAgLTI5MywyNiArMjk5LDI4IEBA
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgaWYgKG1faXNGb3JXZWJHTDIpCiAgICAgICAg
IGdsOjpFbmFibGUoR3JhcGhpY3NDb250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lO
REVYKTsKIAorICAgIFZlY3RvcjxBU0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsK
KyAgICBpZiAobV9pc0ZvcldlYkdMMikgeworICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1
c2lvbiBxdWVyaWVzIHRvIHdvcmsuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQo
IkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiJfcyk7CisgICAgfQogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNp
b25zID0gZ2V0RXh0ZW5zaW9ucygpOwotCiAgICAgaWYgKCFuZWVkc0VBR0xPbk1hYygpKSB7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogcmVxdWlyZWRFeHRlbnNpb25zW10g
PSB7Ci0gICAgICAgICAgICAiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiLCAvLyBGb3IgSU9T
dXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KLSAgICAgICAgICAgICJHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODgiLCAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9T
dXJmYWNlLgotICAgICAgICB9OwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RG
X0FSUkFZX0xFTkdUSChyZXF1aXJlZEV4dGVuc2lvbnMpOyArK2kpIHsKLSAgICAgICAgICAgIGlm
ICghZXh0ZW5zaW9ucy5zdXBwb3J0cyhyZXF1aXJlZEV4dGVuc2lvbnNbaV0pKSB7Ci0gICAgICAg
ICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgcmVx
dWlyZWRFeHRlbnNpb25zW2ldKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9CisgICAgICAgIC8vIEZvciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgorICAgICAgICBy
ZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSJfcyk7
CisgICAgICAgIC8vIEZvciBjcmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZh
Y2UuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF90ZXh0dXJlX2Zv
cm1hdF9CR1JBODg4OCJfcyk7CisgICAgfQogCi0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3Vy
ZUVuYWJsZWQocmVxdWlyZWRFeHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9
IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0
ZW5zaW9ucykgeworICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0ZW5zaW9uKSkg
eworICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVz
IiwgZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKyAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQot
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0KICNpZiBQ
TEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUNDQVRBTFlTVCBz
aG91bGQgdGFrZSB0aGVzZSBzdGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8vIHdvdWxkIHJl
cXVpcmUgdGhlIFBsYXRmb3JtU2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0byBDYXRhbHlz
dCB0b28uCkBAIC0zMzEsMTMgKzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAg
IHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsg
Ly8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0gICAgLy8gQ3Jl
YXRlIHRoZSBXZWJHTExheWVyCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
ICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERl
dmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0
cnMuYWxwaGFdKTsKKyAgICBpZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3
YXBDaGFpbjsKKyAgICBlbHNlIHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10g
aW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNP
cGFxdWU6IWF0dHJzLmFscGhhXSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV93ZWJHTExh
eWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworICAgICAgICAgICAgW21fd2ViR0xMYXllciBz
ZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKICNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKKyAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3N3YXBD
aGFpbiA9ICZbbV93ZWJHTExheWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8gQ3JlYXRl
IHRoZSB0ZXh0dXJlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAg
R0xlbnVtIHRleHR1cmVUYXJnZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBAIC00MDYs
MTMgKzQxOCwxMiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKCkKICAgICAgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQogICAgICAg
ICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJG
Qk8pOwogICAgIH0KLSAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBpZiAobV9k
aXNwbGF5QnVmZmVyUGJ1ZmZlcikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNw
bGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExheWVyKSB7
Ci0gICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZm
ZXJdOworICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVC
dWZmZXIoKTsKICAgICAgICAgaWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgICAg
IEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7
Ci0gICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFjaENsaWVu
dF07CisgICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0YWNoQ2xp
ZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVHTF9EZXN0
cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBAIC01NzUs
MTEgKzU4NiwxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxh
eUJ1ZmZlckJhY2tpbmcoKQogICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05P
X1NVUkZBQ0U7CiAgICAgfQogICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQgYnVmZmVy
IG5vdywgYmVjYXVzZSBpdCBtb3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBhdCB0aGUg
dGltZSBpdCB3aWxsIGJlIHJldXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2Vi
R0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2Fw
Q2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQog
ICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5o
YW5kbGUpOwogICAgIHJlY3ljbGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICByZXR1cm4g
YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQor
eworICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwog
ICAgIGF1dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFs
RnJhbWVidWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAgIGlm
ICghYmFja2luZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0
CiAgICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3RlZCB0byBh
IGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVuIGNvbnNp
ZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5zCiAgICAg
Ly8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGZpbmRp
bmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBz
dGlsbCBiZSBhIFdpbmRvd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBXZWJLaXQg
bGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlvbiwgYW5k
CiAgICAgLy8gbV9kaXNwbGF5TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNlLgogICAg
IGlmIChwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC02NDYsMTIgKzY2MiwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09m
ZmxpbmVSZW5kZXJlcnMoKSBjb25zdAogICAgIC8vIGFuZCBNQUMvTUFDQ0FUQUxZU1QgYW5kIE9Q
RU5HTC9PUEVOR0xFUy4KICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICAKKwogI2lm
IEhBVkUoQVBQTEVfR1JBUEhJQ1NfQ09OVFJPTCkKICAgICBpZiAoaGFzTG93QW5kSGlnaFBvd2Vy
R1BVcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIAorCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC02ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJl
IHVzZWQgZnJvbSBvdGhlciBncmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRz
LgogICAgIGdsOjpGbHVzaCgpOwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdM
TGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENo
YWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxh
eU9iaiwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93
ZWJHTExheWVyIHByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3Bs
YXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENo
YWluLT5wcmVzZW50KHsgV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5
QnVmZmVyUGJ1ZmZlciB9KTsKICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NV
UkZBQ0U7CiAKICAgICBib29sIGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAK
ICAgICAvLyBFcnJvciB3aWxsIGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0
Q3VycmVudCgpIHdoaWNoIHdpbGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAg
aWYgKCFoYXNOZXdCYWNraW5nKQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmco
KTsKKyAgICAgICAgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAg
IG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYz
NGJiMjhiZTM0NTUwOWM3NDI5ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZUNvY29hLm1tCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxp
emUoKQoreworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtb
V2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBp
eGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV93ZWJHTExheWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQorR3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OmFzQ1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlm
CisKK0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93
ZWJHTExheWVyIHN3YXBDaGFpbl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcw
NWYyMDUzMDFjN2M5N2NmNjZlNzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMx
Y2Q5NTJhM2E3ZWE4ODA5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaW1wb3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KKyNpbXBvcnQgPG1lbW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1zdHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50
cy4KLSAgICB2b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRh
ZGF0YSBoYW5kbGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBm
cm9udCBidWZmZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9m
IElPU3VyZmFjZXMuCi0vLyBUaGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNl
cyBmb3IgZGlzcGxheS4KLS8vIFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNo
IElPU3VyZmFjZSBhbmQgd2lsbCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRo
ZSBJT1N1cmZhY2UgaGFzIGJlZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBu
b3QgbmVjY2Vzc2FyaWx5Ci0vLyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2Vs
ZiBmb3IgcmV1c2UuCi0vLyBFeGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVH
TFN1cmZhY2UgYmluZGluZyBhcyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBX
ZWJHTExheWVyIGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQg
Y2FuIGNvbnRpbnVlIHVzaW5nCi0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJv
dWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENB
TGF5ZXIKIAogLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhl
bFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdl
UmVmKWNvcHlJbWFnZVNuYXBzaG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xv
clNwYWNlOwogCi0vLyBSZXR1cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQg
Y29udGVudHMgYnVmZmVyLgotLy8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3du
ZXJzaGlwIG9mIHRoZSBjb250ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBh
dCB0aGUKLS8vIHRpbWUgb2YgdGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1w
dHkgYnVmZmVyIGlmIG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3
aXRoIGVtcHR5IHN1cmZhY2UgYW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJl
Y3ljbGVkIGJ1ZmZlciB3YXMgYXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGls
bCBpbiB1c2UuCi0vLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5
ZXJCdWZmZXIpcmVjeWNsZUJ1ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNw
bGF5IHdpdGggYSBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25l
cnNoaXAgb2YgdGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQp
cHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIp
YnVmZmVyOwotCi0vLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50
IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVm
ZmVycyBoYXZlIGJlZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNh
bGxlZCBiZWZvcmUgY2FsbGluZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0g
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWlu
OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBj
OGJlZmEzYmMuLjE2OGZkNWY2Yzg0MjM3YmRmOGFiOWNiYmNhNjQwNzM5NTA1YzkyMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXll
ci5tbQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJj
b25maWcuaCIKQEAgLTMyLDEzICszMiwzOSBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVh
cnR6Q29yZVNQSS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL09w
dGlvbmFsLmg+CisKK2NsYXNzIFdlYkdMTGF5ZXJTd2FwQ2hhaW4gZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAg
IGV4cGxpY2l0IFdlYkdMTGF5ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5
ZXIobGF5ZXIpIHsgfTsKKyAgICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVm
YXVsdDsKKyAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBCdWZmZXIgcmVj
eWNsZUJ1ZmZlcigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5z
dXJmYWNlKSB7CisgICAgICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNl
KCkpCisgICAgICAgICAgICAgICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShtX3NwYXJlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgICAgICB2
b2lkKiByZXN1bHQgPSBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlOworICAgICAgICBtX2Rpc3BsYXlC
dWZmZXIuaGFuZGxlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgV2ViQ29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5U3VyZmFjZSgpIHsgcmV0dXJuIG1fZGlzcGxh
eUJ1ZmZlci5zdXJmYWNlLmdldCgpOyB9Citwcml2YXRlOgorICAgIEJ1ZmZlciBtX2Rpc3BsYXlC
dWZmZXI7CisgICAgQnVmZmVyIG1fc3BhcmVCdWZmZXI7CisgICAgV2ViR0xMYXllciogY29uc3Qg
bV9sYXllcjsKK307CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBXZWJDb3Jl
OjpXZWJHTExheWVyQnVmZmVyIF9jb250ZW50c0J1ZmZlcjsKLSAgICBXZWJDb3JlOjpXZWJHTExh
eWVyQnVmZmVyIF9zcGFyZUJ1ZmZlcjsKLQogICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsK
KyAgICBPcHRpb25hbDxXZWJHTExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChp
ZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVu
dHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKQEAgLTQ3LDYgKzczLDcgQEAKICAgICBzZWxm
LnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKICAgICBzZWxmLmNvbnRlbnRzT3Bh
cXVlID0gY29udGVudHNPcGFxdWU7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4
ZWxSYXRpbzsKKyAgICBfc3dhcENoYWluLmVtcGxhY2Uoc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKQEAgLTczLDMwICsxMDAsMjEgQEAKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Ci0KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIp
IHJlY3ljbGVCdWZmZXIKKy0gKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluJikgc3dhcENoYWluCiB7Ci0gICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7Ci0g
ICAgICAgIGlmIChfc3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAgICAgICAg
X3NwYXJlQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoX3Nw
YXJlQnVmZmVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gX3N3YXBDaGFp
bi52YWx1ZSgpOwogfQogCi0tICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihX
ZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKSBidWZmZXIKKy0gKHZvaWQpcHJlcGFyZUZvckRpc3Bs
YXkKIHsKLSAgICBBU1NFUlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBfc3BhcmVCdWZm
ZXIgPSBXVEZNb3ZlKF9jb250ZW50c0J1ZmZlcik7Ci0gICAgX2NvbnRlbnRzQnVmZmVyID0gV1RG
TW92ZShidWZmZXIpOwogICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheV07CiAgICAgX3ByZXBhcmVk
Rm9yRGlzcGxheSA9IFlFUzsKIH0KIAogLSAodm9pZClkaXNwbGF5CiB7Ci0gICAgaWYgKF9jb250
ZW50c0J1ZmZlci5zdXJmYWNlICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2Vs
Zi5jb250ZW50cyA9IF9jb250ZW50c0J1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKTsK
KyAgICBpZiAoX3N3YXBDaGFpbi0+ZGlzcGxheVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNw
bGF5KSB7CisgICAgICAgIHNlbGYuY29udGVudHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFj
ZSgpLT5hc0xheWVyQ29udGVudHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQ
YXRoOkAiY29udGVudHMiXTsKICAgICB9CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYp
OwpAQCAtMTA2LDEzICsxMjQsMTQgQEAKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9
CiAKLS0gKHZvaWQqKSBkZXRhY2hDbGllbnQKK0BlbmQKKwordm9pZCBXZWJHTExheWVyU3dhcENo
YWluOjpwcmVzZW50KEJ1ZmZlciBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIu
c3VyZmFjZSk7Ci0gICAgdm9pZCogcmVzdWx0ID0gX2NvbnRlbnRzQnVmZmVyLmhhbmRsZTsKLSAg
ICBfY29udGVudHNCdWZmZXIuaGFuZGxlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX3NwYXJlQnVmZmVyID0g
V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXIpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKKyAgICBbbV9sYXllciBwcmVwYXJlRm9yRGlzcGxheV07CiB9Ci1AZW5kCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2UubW0KaW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2
Njc0YmExMi4uOTlhZDkxNjUyNTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYs
NiArMzYsNyBAQAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcu
aCIKICNpbXBvcnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBo
aWMuaCIKICNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5jcHAKaW5kZXggN2VjODFjZjRhZTU3NzJjYWU5NzI4OGJjODBlMzY1NjQ2ZDYyN2M3Yi4u
YWRkNWYzNTJhZTRkZTZiNmQ1ZGMxOTFlNjczYjVhYWZhNTZkZTk1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRl
bnNpb25zR0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMK
IEV4dGVuc2lvbnNHTE9wZW5HTDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxv
bmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAs
IGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u
ZyBmaWx0ZXIpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU2LDcg
KzU2LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNy
Y1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb24KICAgICA6OmdsQmxpdEZyYW1lYnVmZmVy
RVhUKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZ
MSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICNl
bmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMcwogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVu
dHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBl
LCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25z
R0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ5NjI4OWNlYTBl
NmEwOWQ2ZGI3MzFmODY4YjU0OTkzYTQ0NDQ5YTguLjQ3NTAyMjZlY2VjZWY0NDM5NmU5OTM4Njc2
Y2I2MzliZTgzNDM3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTQwLDggKzQwLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9wZW5HTCgpOwogCiAgICAgLy8g
RXh0ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNY
MCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBk
c3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25l
ZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5z
aWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQg
bG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NH
TGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwg
R0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZ
MSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwpAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NH
THNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRy
YXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
ZGl2aXNvcikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJp
ZGU7CiAKIHByb3RlY3RlZDoKICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFdURjo6
U3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
CmluZGV4IDQzYjUxNjFmYmE3NzhmOGZiNDM4NGIxYmMyZGIzOGVjZjZjNDgzZWIuLmI3ODk2MGNi
NDgyZTRlZjJhYjk4ZTQwMzkyYTYzNWJhN2ZmYjdiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uY3BwCkBAIC0zNjYsMTEgKzM2Niw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0s
IEdDR0xzCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1Jv
YnVzdEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZv
aWQgKiwgYm9vbCkKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5V
bmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMZmxvYXQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRl
eCBiZmU0NTIxNTQzZmY0YjI3MjEzN2YzNDRjZWU0YTIyZDhmYjI4YzY0Li42YTNhMzlmZTNhMWJh
NWJkMjU5NzcxNTg5NDc1NjFjY2FkNWFkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCkBAIC05Myw3ICs5Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0
ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVz
dEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDM2YzNlZjM4Zjk4Yjk5YWYwMTE1MDY5OTE0Mjdi
YWNlZmNiYjhhYzMuLmUxZTQzYmY1MzkyODg1YTI0ZmJiMzNjYjI2YjVmNmU0OTFmYmUwNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMTAwLDEyICsxMDAsMTIgQEAgdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1H
KHVuc2lnbmVkIGxvbmcgdGFyZ2UKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmJsaXRGcmFtZWJ1ZmZlcihsb25nIC8qIHNyY1gwICovLCBsb25nIC8qIHNyY1kwICovLCBsb25n
IC8qIHNyY1gxICovLCBsb25nIC8qIHNyY1kxICovLCBsb25nIC8qIGRzdFgwICovLCBsb25nIC8q
IGRzdFkwICovLCBsb25nIC8qIGRzdFgxICovLCBsb25nIC8qIGRzdFkxICovLCB1bnNpZ25lZCBs
b25nIC8qIG1hc2sgKi8sIHVuc2lnbmVkIGxvbmcgLyogZmlsdGVyICovKQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCwgR0NHTGludCwgR0NH
TGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGJp
dGZpZWxkLCBHQ0dMZW51bSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRl
cm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUx
LDcgKzI1MSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmdldG5Vbmlmb3JtaXZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMCiAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAg
ICBpZiAoIW1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC0yNjQsNyArMjY0
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0cKICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NH
THZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMc2l6ZWkgY291bnQsCiAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1v
ZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGlu
dHB0cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNv
cikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fZ2xWZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4
IDAxN2E0NWI3Mzk4ZDA5OTJlZDE0NzY3ZjA3NjdlMDRiNDY0MTYyODMuLjVjNzYwMzdmYTdiYzZl
OGVlZTNlNjczZjk5YTdkZmMyZjc4ZmI0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5o
CkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMK
ICAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJs
aXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNy
Y1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNp
Z25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5z
aWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25l
ZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBi
bGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50
IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dM
aW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmls
dGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogICAg
IHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKQEAgLTg3LDkgKzg3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBv
dmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKSBvdmVycmlkZTsKIAogICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gcmVzZXQKICAg
ICBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBjMjU1YjBjMTJmNGZjYmZhNDZkYjAyZDU1YzgwYjRj
Yjc3ZDE3YjcwLi44YWNkZjMyYjUyMTZjMzViYThhZTZmMzNkNTgyYjg3ZGU1NDI5NjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNTgsNiArNTgsOSBAQAogI2lmIFBM
QVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFTUyBXZWJHTExheWVy
OworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW47Cit9CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICNpZiBVU0UoTklDT1NJ
QSkKQEAgLTg2LDcgKzg5LDcgQEAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0
X3Q+IFNoYWRlck5hbWVIYXNoOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTFByaXZh
dGU7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBo
aWNzQ29udGV4dEdMCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAogewogcHVibGljOgogICAgIHN0YXRp
YyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZz
Y3JlZW4pOwpAQCAtOTQsNiArOTcsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVTaGFyZWQoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wmIHNoYXJlZENvbnRleHQpOworICAgIHN0YXRpYyBSZWY8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4q
KTsKKwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRl
eHRHTCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dE9iajsgfQogICAgIFBsYXRmb3Jt
R0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90ZXh0dXJl
OyB9CiAgICAgQ0FMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KQEAgLTE5MSw3
ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKICAgICBib29s
IGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpIGZpbmFsOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybUltcGwoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwotICAg
IHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNp
emVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJz
KSBmaW5hbDsKKyAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9i
amVjdCogc2hhZGVycyk7CiAgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0Qm9vbGVhbnYo
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CiAgICAg
R0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOwpAQCAtMjE5LDggKzIyNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFVuaWZv
cm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFs
dWUpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmpl
Y3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJm
dihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFs
dWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTHNp
emVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOwogCiAgICAgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9k
ZSkgZmluYWw7CkBAIC0yMzYsNyArMjM5LDggQEAgcHVibGljOgogICAgIHZvaWQgcGl4ZWxTdG9y
ZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOwogICAgIHZvaWQgcG9seWdv
bk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpIGZpbmFsOwogCi0gICAg
dm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0
YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZp
bmFsOwogCiAgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
ZmluYWw7CiAgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9v
bGVhbiBpbnZlcnQpIGZpbmFsOwpAQCAtMjU0LDcgKzI1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpIGZpbmFsOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwot
ICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOyAKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkgZmluYWw7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCkBAIC0zMTcsMTIgKzMy
MSwxMCBAQCBwdWJsaWM6CiAjaWYgIVVTRShBTkdMRSkKICAgICB2b2lkIGJ1ZmZlckRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwogICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwotICAgIHZvaWQgZ2V0QnVm
ZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29u
c3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwog
I2VuZGlmCiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBH
Q0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdy
aXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7CiAKLSAgICB2b2lkKiBtYXBCdWZm
ZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIg
bGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSBmaW5hbDsKLSAgICBHQ0dMYm9vbGVhbiB1bm1h
cEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4g
ZGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKQEAg
LTM4NCw3ICszODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJn
ZXQpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2
b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0
dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAg
UGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVT
YW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CkBAIC0zOTMsOCArMzk1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOwogICAgIC8vIGdldFNhbXBsZXJQYXJhbWV0ZXIKLSAg
ICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJm
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdD
R0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29u
ZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOwogICAgIEdDR0xib29sZWFuIGlzU3lu
YyhHQ0dMc3luYykgZmluYWw7CkBAIC00MDMsNyArNDA1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
d2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQp
IGZpbmFsOwogICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKICAgICAvLyBGSVhNRSAtIHRoaXMgY2Fu
IGJlIGltcGxlbWVudGVkIGF0IHRoZSBXZWJHTCBsZXZlbCBpZiB3ZSBzaWduYWwgdGhlIFdlYkdM
U3luYyBvYmplY3QuCi0gICAgdm9pZCBnZXRTeW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQg
Z2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0
ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOwpAQCAtNDIwLDcg
KzQyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1l
dGVyIC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgVmVjdG9yPEdDR0x1aW50
PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9y
bXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlm
b3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSBmaW5h
bDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOwogCiAgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpIGZp
bmFsOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcgpAQCAtNDI5LDExICs0
MzEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1
aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAg
dm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpOwotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCk7Ci0jZW5kaWYK
LQogICAgIC8vIEhlbHBlciBtZXRob2RzLgogCiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwpAQCAtNTE1LDcgKzUx
MiwxMSBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gIVVTRShBTkdMRSkKIAogcHJpdmF0ZToKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hh
cmVkQ29udGV4dCA9IG51bGxwdHIsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiA9IG51bGxwdHIpOworI2Vsc2UKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0
aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0g
bnVsbHB0cik7CisjZW5kaWYKIAogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGlj
IGVudHJ5IHBvaW50cyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgLy8gQ2FsbGVk
IG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0
IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCkBAIC01MjcsNyArNTI4LDkgQEAgcHJpdmF0ZToKICAg
ICAvLyBpbXBsZW1lbnRhdGlvbi4KICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0
IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0
dHJpYnV0ZXMoKTsKLSAgICAKKworICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJv
b2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOworCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJl
Y2VudCBkcmF3aW5nIG9wZXJhdGlvbiBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3Rh
dGU/CiAgICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwogCkBAIC01NDgsMTAgKzU1MSwxMyBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVy
ZXJzKCkgY29uc3Q7CiAgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAg
ICBib29sIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBi
aW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2lu
Zywgdm9pZCogcGJ1ZmZlcik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBtX3N3YXBDaGFpbiB7IG51bGxwdHIg
fTsKKyAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQg
ZHJhd3MgdG8gYSBpbWFnZSBidWZmZXIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4MTc5IC4KICAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExh
eWVyOwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0
ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7
IG51bGxwdHIgfTsKQEAgLTU3OSw3ICs1ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBp
c1ZhbGlkKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
U2hhZGVyU3ltYm9sTWFwJiBzeW1ib2xNYXAoZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3lt
Ym9sVHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN5bWJvbFR5cGUgPT0gU0hB
REVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xf
VFlQRV9VTklGT1JNIHx8IHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1ZBUllJTkcp
OwpAQCAtNjcyLDcgKzY3OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdXNpbmcgQm91bmRUZXh0
dXJlTWFwID0gSGFzaE1hcDxHQ0dMZW51bSwKICAgICAgICAgICAgIHN0ZDo6cGFpcjxHQ0dMdWlu
dCwgR0NHTGVudW0+LAotICAgICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwgCisgICAg
ICAgICAgICBXVEY6OkludEhhc2g8R0NHTGVudW0+LAogICAgICAgICAgICAgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4sCiAgICAgICAgICAgICBXVEY6OlBhaXJI
YXNoVHJhaXRzPFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj4KICAgICAgICAgPjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNjM1NmY4
MWY0ODIxYjZhMWVhNmMzNTU3ZWRmMWY0ZTY4ODEzZjZiOS4uNjI5ODAzODhiNjUyNDc5Y2NiNDMz
MWMyNWZmZWViYjY2YzZjYjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQmFzZS5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEp
CiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKQEAgLTQ0Nyw3ICs0
NDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZm
ZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIDo6
Z2xGbHVzaCgpOwogICAgIH0KLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5kYXRhKTsKICAgICBpZiAoYXR0cnMuYW50aWFsaWFz
ICYmIG1fc3RhdGUuYm91bmREcmF3RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX211
bHRpc2FtcGxlRkJPKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b21tb24uY3BwCmluZGV4IGJjNDRjZDU3Nzg4NjcyMDM5YWVhNGY1OTk5NmU0ZDk0ZTFjMWEwZmUu
LjljMmJiOWRjZjJiNmU0ODQyZDFjYjY2ZTY5YjFiMGVhZmE5NTYxMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQogCiAgICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNT
T1JfVEVTVCwgR0xfRkFMU0UpOwogICAgIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcgc2NvcGVkRGl0
aGVyKEdMX0RJVEhFUiwgR0xfRkFMU0UpOwotICAgIAorCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZC
TyA9IHJlc2hhcGVGQk9zKEludFNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAgLy8gSW5pdGlh
bGl6ZSByZW5kZXJidWZmZXJzIHRvIDAuCkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRm
YWN0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIDo6Z2xCbGVuZEZ1bmMoc2ZhY3RvciwgZGZh
Y3Rvcik7Ci19ICAgICAgIAorfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVu
ZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0g
c3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKQogewpAQCAtNjQzLDExICs2NDMsMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IHNoYWRlcikKICAgICBMT0coV2ViR0wsICItLS0gYmVnaW4gdHJhbnNsYXRlZCBzaGFkZXIgc291
cmNlIC0tLVxuJXNcbi0tLSBlbmQgdHJhbnNsYXRlZCBzaGFkZXIgc291cmNlIC0tLSIsIHRyYW5z
bGF0ZWRTaGFkZXJQdHIpOwogCiAgICAgOjpnbFNoYWRlclNvdXJjZShzaGFkZXIsIDEsICZ0cmFu
c2xhdGVkU2hhZGVyUHRyLCAmdHJhbnNsYXRlZFNoYWRlckxlbmd0aCk7Ci0gICAgCisKICAgICA6
OmdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwotICAgIAorCiAgICAgaW50IGNvbXBpbGVTdGF0dXM7
Ci0gICAgCisKICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBDT01QSUxFX1NUQVRVUywgJmNv
bXBpbGVTdGF0dXMpOwogCiAgICAgU2hhZGVyU291cmNlTWFwOjppdGVyYXRvciByZXN1bHQgPSBt
X3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CkBAIC04OTQsOSArODk0LDkgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0wKICAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4
LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmRhdGEo
KSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisK
ICAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNI
QURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIFN0cmluZyhuYW1lLmRhdGEoKSwgbmFtZUxlbmd0
aCkpOwotICAgIAorCiAjaWZuZGVmIE5ERUJVRwogICAgIFN0cmluZyB1bmlmb3JtTmFtZShuYW1l
LmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdMLCAiUHJvZ3JhbSAlZCBpcyBtYXBw
aW5nIGFjdGl2ZSBhdHRyaWJ1dGUgJWQgZnJvbSAnJXMnIHRvICclcyciLCBwcm9ncmFtLCBpbmRl
eCwgdW5pZm9ybU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luYWxOYW1lLnV0ZjgoKS5kYXRhKCkp
OwpAQCAtOTE2LDcgKzkxNiw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFj
dGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50CiAgICAgICAgIGdl
dE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6
QUNUSVZFX0FUVFJJQlVURVMsICZzeW1ib2xDb3VudCk7CiAgICAgICAgIHJlc3VsdCA9IG1fc2hh
ZGVyUHJvZ3JhbVN5bWJvbENvdW50TWFwLmZpbmQocHJvZ3JhbSk7CiAgICAgfQotICAgIAorCiAg
ICAgQWN0aXZlU2hhZGVyU3ltYm9sQ291bnRzJiBzeW1ib2xDb3VudHMgPSByZXN1bHQtPnZhbHVl
OwogICAgIEdDR0x1aW50IHJhd0luZGV4ID0gKGluZGV4IDwgc3ltYm9sQ291bnRzLmZpbHRlcmVk
VG9BY3R1YWxBdHRyaWJ1dGVJbmRleE1hcC5zaXplKCkpID8gc3ltYm9sQ291bnRzLmZpbHRlcmVk
VG9BY3R1YWxBdHRyaWJ1dGVJbmRleE1hcFtpbmRleF0gOiAtMTsKIApAQCAtOTQzLDE0ICs5NDMs
MTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0cKICAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybShw
cm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUs
IG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKKwogICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUo
cHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0sIFN0cmluZyhuYW1lLmRhdGEoKSwg
bmFtZUxlbmd0aCkpOwotICAgIAorCiAjaWZuZGVmIE5ERUJVRwogICAgIFN0cmluZyB1bmlmb3Jt
TmFtZShuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdMLCAiUHJvZ3JhbSAl
ZCBpcyBtYXBwaW5nIGFjdGl2ZSB1bmlmb3JtICVkIGZyb20gJyVzJyB0byAnJXMnIiwgcHJvZ3Jh
bSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51dGY4KCku
ZGF0YSgpKTsKICNlbmRpZgotICAgIAorCiAgICAgaW5mby5uYW1lID0gb3JpZ2luYWxOYW1lOwog
ICAgIGluZm8udHlwZSA9IHR5cGU7CiAgICAgaW5mby5zaXplID0gc2l6ZTsKQEAgLTk2NSwxMCAr
OTY1LDEwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm0o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWluCiAgICAgICAgIGdldE5vbkJ1aWx0SW5B
Y3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLCBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZP
Uk1TLCAmc3ltYm9sQ291bnQpOwogICAgICAgICByZXN1bHQgPSBtX3NoYWRlclByb2dyYW1TeW1i
b2xDb3VudE1hcC5maW5kKHByb2dyYW0pOwogICAgIH0KLSAgICAKKwogICAgIEFjdGl2ZVNoYWRl
clN5bWJvbENvdW50cyYgc3ltYm9sQ291bnRzID0gcmVzdWx0LT52YWx1ZTsKICAgICBHQ0dMdWlu
dCByYXdJbmRleCA9IChpbmRleCA8IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0dWFsVW5pZm9y
bUluZGV4TWFwLnNpemUoKSkgPyBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVhbFVuaWZvcm1J
bmRleE1hcFtpbmRleF0gOiAtMTsKLSAgICAKKwogICAgIHJldHVybiBnZXRBY3RpdmVVbmlmb3Jt
SW1wbChwcm9ncmFtLCByYXdJbmRleCwgaW5mbyk7CiB9CiAKQEAgLTEwNjksNyArMTA2OSw3IEBA
IFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgQU5HCiAgICAgR0NHTHNpemVpIGNvdW50OwogICAgIFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyc1syXTsKICAgICBnZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwg
MiwgJmNvdW50LCBzaGFkZXJzKTsKLSAgICAKKwogICAgIGZvciAoR0NHTHNpemVpIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3lt
Ym9sSW5TaGFkZXJTb3VyY2VNYXAoc2hhZGVyc1tpXSwgc3ltYm9sVHlwZSwgbmFtZSk7CiAgICAg
ICAgIGlmIChvcmlnaW5hbE5hbWUpCkBAIC0xMTA3LDcgKzExMDcsNyBAQCBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Om1hcHBlZFN5bWJvbE5hbWUoUGxhdGZvcm1HTE9iamVjdCBzaGFk
ZXJzWzJdLCBzaQogICAgICAgICAgICAgU2hhZGVyU291cmNlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcnNbaV0pOwogICAgICAgICAgICAgaWYgKHJl
c3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBjb25zdCBTaGFkZXJTeW1ib2xNYXAmIHN5
bWJvbE1hcCA9IHJlc3VsdC0+dmFsdWUuc3ltYm9sTWFwKHN0YXRpY19jYXN0PGVudW0gQU5HTEVT
aGFkZXJTeW1ib2xUeXBlPihzeW1ib2xUeXBlKSk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHN5bWJvbEVudHJ5IDogc3ltYm9sTWFwKSB7CiAgICAgICAgICAgICAgICAgaWYgKG5hbWUg
PT0gc3ltYm9sRW50cnkudmFsdWUubWFwcGVkTmFtZS5jX3N0cigpKQpAQCAtMTY4Miw3ICsxNjgy
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkoUGxh
dGZvcm1HTE9iamVjdCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm47
Ci0gICAgCisKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTE2OTUsNyArMTY5NSw3IEBAIEdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiB7CiAgICAgaWYgKCFh
cnJheSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotICAgIAorCiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCkBAIC0xODE4LDcgKzE4
MTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXROb25CdWlsdEluQWN0aXZl
U3ltYm9sQ291bnQoUGxhdGZvcm1HTE9iamVjdCBwcgogCiAgICAgICAgIHN5bWJvbENvdW50cy5m
aWx0ZXJlZFRvQWN0dWFsQXR0cmlidXRlSW5kZXhNYXAuYXBwZW5kKGkpOwogICAgIH0KLSAgICAK
KwogICAgIC8vIERvIHRoZSBzYW1lIGZvciB1bmlmb3Jtcy4KICAgICBHQ0dMaW50IHVuaWZvcm1D
b3VudCA9IDA7CiAgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBBQ1RJVkVfVU5JRk9STVMs
ICZ1bmlmb3JtQ291bnQpOwpAQCAtMTgyNywxMCArMTgyNywxMCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQoUGxhdGZvcm1HTE9i
amVjdCBwcgogICAgICAgICBnZXRBY3RpdmVVbmlmb3JtSW1wbChwcm9ncmFtLCBpLCBpbmZvKTsK
ICAgICAgICAgaWYgKGluZm8ubmFtZS5zdGFydHNXaXRoKCJnbF8iKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVh
bFVuaWZvcm1JbmRleE1hcC5hcHBlbmQoaSk7CiAgICAgfQotICAgIAorCiAgICAgKnZhbHVlID0g
c3ltYm9sQ291bnRzLmNvdW50Rm9yVHlwZShwbmFtZSk7CiB9CiAKQEAgLTE4NDEsNyArMTg0MSw3
IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcnNbMl0sCiAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbiByZWdFeHAoIndlYmdsX1swMTIzNDU2Nzg5YWJjZGVmQUJDREVGXSsiKTsKIAogICAgIFN0
cmluZ0J1aWxkZXIgcHJvY2Vzc2VkTG9nOwotICAgIAorCiAgICAgLy8gQU5HTEUgaW5zZXJ0cyBh
ICIjZXh0ZW5zaW9uIiBsaW5lIGludG8gdGhlIHNoYWRlciBzb3VyY2UgdGhhdAogICAgIC8vIGNh
dXNlcyBhIHdhcm5pbmcgaW4gc29tZSBjb21waWxlcnMuIFRoZXJlIGlzIG5vIHBvaW50IHNob3dp
bmcKICAgICAvLyB0aGlzIHdhcm5pbmcgdG8gdGhlIHVzZXIgc2luY2UgdGhleSBkaWRuJ3Qgd3Jp
dGUgdGhlIGNvZGUgdGhhdApAQCAtMTg4MCw3ICsxODgwLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0p
CiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdM
X0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsgCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIEdMc2l6ZWkg
c2l6ZSA9IDA7CiAgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOwpAQCAtMTkxMSw3ICsx
OTExLDcgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaShQbGF0
Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG4KIAogCiAgICAgY29uc3QgYXV0byYgcmVz
dWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwotICAgIAorCiAgICAgc3dpdGNo
IChwbmFtZSkgewogICAgIGNhc2UgREVMRVRFX1NUQVRVUzoKICAgICBjYXNlIFNIQURFUl9UWVBF
OgpAQCAtMTk0Myw3ICsxOTQzLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogCiAgICAgY29uc3QgYXV0
byYgcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogICAgIGlmIChyZXN1
bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsg
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGNvbnN0IFNoYWRlclNvdXJjZUVudHJ5
JiBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7CiAgICAgaWYgKCFlbnRyeS5pc1ZhbGlkKQpAQCAtMTk1
Miw3ICsxOTUyLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJ
bmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogICAgIEdMaW50IGxlbmd0aCA9IDA7CiAg
ICAgOjpnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsK
ICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBWZWN0b3I8R0xjaGFy
PiBpbmZvKGxlbmd0aCk7CkBAIC0xOTcxLDcgKzE5NzEsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKIAog
ICAgIGNvbnN0IGF1dG8mIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsK
ICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICByZXR1
cm4gU3RyaW5nKCk7IAorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZS5zb3VyY2U7CiB9CkBAIC0yMDI5LDIyICsyMDI5LDYgQEAgR0NHTGludCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY28KICAgICByZXR1cm4gOjpnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBt
YXBwZWROYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBw
bmFtZSwgdmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFs
dWUuZGF0YSk7Ci19Ci0KIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjI3OCwxOSArMjI2MiwxOSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJERGlyZWN0KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgRwogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBj
b3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0Fy
cmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0
ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHBy
aW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2Rl
LCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5k
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmlt
Y291bnQpOwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRp
dmlzb3IpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgs
IGRpdmlzb3IpOworICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUo
aW5kZXgsIGRpdmlzb3IpOwogfQogCiAjaWYgSEFWRShPUEVOR0xfNCkgJiYgRU5BQkxFKFdFQkdM
MikKQEAgLTIzMzUsNDIgKzIzMTksMjUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMaW50cHRyLAogfQogI2Vu
ZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERh
dGEsIEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjQnl0ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRzdERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShsZW5ndGgpOwotfQotCiAjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNf
MykKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0
ZmllbGQgYWNjZXNzKQotewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIDo6Z2xNYXBCdWZmZXJSYW5nZSh0YXJnZXQs
IG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwotfQotCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQotewotICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAgIHJldHVy
biA6OmdsVW5tYXBCdWZmZXIodGFyZ2V0KTsKLX0KKyAgICAgICAgcmV0dXJuOworICAgIEdDR0x2
b2lkKiBwdHIgPSA6OmdsTWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6
ZSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisgICAg
ICAgIHJldHVybjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7Cisg
ICAgaWYgKCE6OmdsVW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKICNlbHNlCi12b2lkKiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0sIEdDR0xpbnRw
dHIsIEdDR0xzaXplaXB0ciwgR0NHTGJpdGZpZWxkKQotewotICAgIHJldHVybiBudWxscHRyOwor
ICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAg
IFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOworI2VuZGlmCiB9CiAKLUdDR0xib29sZWFuIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSkKLXsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0jZW5kaWYKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxpdEZy
YW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdD
R0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEs
IEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CkBA
IC0yNzEyLDExICsyNjc5LDExIEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2
KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUp
CitHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aShQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
cXVlcnkpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVl
KTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlU2FtcGxlcigpCkBAIC0yNzU2LDE4ICsyNzIzLDE5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVuCiAgICAgVU5VU0VEX1BBUkFNKHBhcmFtKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dMZmxvYXQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBs
ZXIpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsK
KyAgICByZXR1cm4gMC5mOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
KQorCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShwbmFt
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogR0NHTHN5
bmMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24s
IEdDR0xiaXRmaWVsZCBmbGFncykKQEAgLTI4MDYsMTIgKzI3NzQsMTEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZs
YWdzLCBHQ0dMaW4KICAgICBVTlVTRURfUEFSQU0odGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN5bmMpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGJ1ZlNpemUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKQEAgLTI4OTEsMjEgKzI4NTgsMjMgQEAgVmVjdG9yPEdD
R0x1aW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZv
cm1HTE9iamVjdCBwcm8KICAgICByZXR1cm4geyB9OwogfQogCi0jaWYgSEFWRShPUEVOR0xfNCkg
fHwgSEFWRShPUEVOR0xfRVNfMykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBh
cmFtcykKK1ZlY3RvcjxHQ0dMaW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+
JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgVmVjdG9yPEdDR0xpbnQ+
IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOworI2lmIEhBVkUoT1BFTkdMXzQpIHx8
IEhBVkUoT1BFTkdMX0VTXzMpCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNp
emUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcGFyYW1zLmRhdGEoKSk7CisgICAg
OjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1
bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCByZXN1bHQuZGF0YSgpKTsKKyNlbmRpZgorICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgdW5pZm9ybUJsb2NrTmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAg
VU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja05hbWUpOwotCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAg
LTI5MTMsNyArMjg4Miw2IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7Ci0K
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIApAQCAtMjkyMywyNyArMjg5MSw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMCiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4
KTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrQmluZGluZyk7CiB9Ci0jZWxzZQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9i
amVjdCwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYsIEdDR0xlbnVtLCBWZWN0b3I8R0NHTGludD4m
KQotewotfQogCi1HQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJs
b2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJikKLXsKLSAgICByZXR1cm4g
MDsKLX0KLQotU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50KQotewotICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxv
Y2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50LCBHQ0dMdWludCkKLXsKLX0KLSNl
bmRpZgotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewogICAgIFVOVVNFRF9QQVJBTSh4KTsKICAgICBVTlVT
RURfUEFSQU0oeSk7CkBAIC0yOTU0LDE4ICsyOTAzLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LAogICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQotewotICAgIFVOVVNFRF9QQVJBTSh4
KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBV
TlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVT
RURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOwotICAgIFVOVVNFRF9Q
QVJBTShkc3RPZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAg
ICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xFUy5jcHAKaW5kZXggMjNkNzRmYTgwZDcwNzkxYmU2MDBkZjU4ZTc1NjE3MzM5NmFhNTUwNS4u
YTIyMTgwYjRiZjRjZTEwZjE4NTIxMjQwMTFlODhhNDQyNzNiNDFlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQogCi0gICAgOjpnbFJlYWRQaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICA6OmdsUmVh
ZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuZGF0YSk7CiAK
ICAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPT0g
bV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAg
ICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZl
IGl0LgogICAgICAgICAgICAgaWYgKHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIpIHsK
ICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1f
ZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9E
RVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICAgICAgZXh0
ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZG
RVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7
CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkKICAgICAgICAgICAgICAg
ICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVO
Q0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwog
ICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKQpAQCAtMTM4LDEyICsxMzgsMTIg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMuc3RlbmNpbCkgewogICAgICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZl
cihHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgICAg
IGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZF
Uiwgc2FtcGxlQ291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lk
dGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZG
RVIsIG1fc3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVu
ZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0gICAgICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRF
UkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSF9DT01Q
T05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xf
UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IDY4MGE1MjlkNjc1ZGQ2MWI5OGNlZThhMzlmMTQxNWY3OTMwYjhmOWIuLjRlMDgyYWRm
MmEwZWYyNDEyNzI4ZWU3ZGZkMjU0MGY2NzZlYTIwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4
IDYyODQ0NTMyNTAzMzUxMDdmZDU0OTgyMjMyYjhiOWVhZWM4ZTY4Y2IuLjlmODMxN2IxOGQ1M2I3
YjNjMTY2NjlhNGM1MTE5OTNlYWYzN2M3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTIzLDYg
KzEyMyw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAorICAg
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAogICAgIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIKQEAgLTIxOCw2ICsyMTksNyBAQCBzZXQo
V2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbgogCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggZWRiNmNhNTk3OWQyZjRkZWY4YjJiMmU3NzNmOWQ2OWFlNzg2ZTdlOS4uNGE2N2Rm
OGVkYzNiNGY0ODkxODc3MDJlZmJmMDQxYjNkMzRhOTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiArMjAsNyBAQCAkKEpBVkFT
Q1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBUQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BV
UHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJv
Y2Vzcy5zYi5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTMxLDYgKzEzMiw3IEBAICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggNzU2NzlmNTVmNWFlMzk5YjVlYWY0NzdmMTg5MzI1NmJj
MjQ4ODQ0ZC4uN2NkM2RiY2NhMzUwYzZlMzgxNGMzNDBjMzkzYzk2M2VkYmI5ODExYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNzUs
NiArMTc1LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMzc3
MDFiMDFjM2MxYTJjMzAwZTFkZDJkNzJlNmI4NTIzN2Y0MjRiNS4uOTc2YjFhNWEzZTVjMGQzMTE1
ZDQ0NTBjOTA4NjE1NzE5ZTZkZWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
MTcxLDYgKzE3MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAogCVdlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
XAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCkBAIC0y
MjcsNiArMjI4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Qcm9jZXNzIFwKIAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAogCUdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCisJR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMGUyZTg4MzJi
MWUyMGYxZTBmMzE5ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2UxNGM1MGI3NDE5OTNkNmYz
NWE1YTk1ZjVhZmQ4MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiArNjQsMTAgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNlbmRpZgogCisjaWYgRU5B
QkxFKFdFQkdMKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisjZW5kaWYK
KwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKQEAg
LTI5MCw2ICsyOTQsMjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNl
UmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIH0pOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBo
aWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xNYXAucmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VO
VVNFRChmb3VuZCwgZm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQbGF5
aW5nTWFuYWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5k
ZXggMjY3OGRiYzRlNWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4ZC4uNWFlZGZiYjRkMmNh
YzdiNzY2MGZmMDczNjA5ZDM3N2M2MDE1ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9T
ZXNzaW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
SWRlbnRpZmllci5oPgpAQCAtMzksNiArNDAsMTEgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBHUFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBjbGFzcyBSZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogY2xh
c3MgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eTsKIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwpAQCAtMTE5
LDYgKzEyNiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFj
a2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisg
ICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxl
YXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRp
ZgorCiAgICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAgdm9pZCBzZXROb3dQbGF5
aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBXZWJDb3JlOjpOb3dQbGF5
aW5nSW5mbyYmKTsKIApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7Ci0KKyNp
ZiBFTkFCTEUoV0VCR0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9y
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1G
YWN0b3J5UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTE5
NGZiNGY2MDg1ZDYyNGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1NGUxNjQ1OTViMGEzNjFk
ZmU0Yzc1YmZmNDAxOGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTI1LDYgKzI1LDEwIEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdh
bnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2Vi
S2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cikKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9pZCBS
ZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBDbGVhck5v
d1BsYXlpbmdJbmZvKCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5
aW5nSW5mbykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5YWZlMDU5YTQxNmM2ODEwNmUwMGE0ZjhlN2JiNGI5YThjNTQ5YTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgor
CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29u
dGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mp
KQorICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0g
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250
ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0
LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmluZyBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6
OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFi
bGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBp
ZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2Fn
ZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25z
dAoreworICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisK
K0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJu
ICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmRpZENvbXBvc2l0ZSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OmZvcmNlQ29udGV4dExvc3QoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlm
ICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVp
Z2h0KTsKKyAgICBlbHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKworI2lmICFQ
TEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JE
aXNwbGF5KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpCit9CisjZW5kaWYKKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJiBleHRl
bnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChl
eHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTY2YmMwYTg5ZDdhMWQ3ZWVmZDk5NDEwMGViOWEzYjk3Yjg0OWJlNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCituYW1lc3BhY2UgV1RGIHsK
K2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBwcm9jZXNzIHNpZGUg
aW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0Nv
bnRleHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxz
IGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKworcHJvdGVjdGVk
OgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4p
OworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5l
Y3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0
X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRH
TDo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBvc2l0ZSgpIGZpbmFsOworICAg
IHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZvaWQgcmVjeWNsZUNvbnRleHQo
KSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBm
aW5hbDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQgcmVzaGFw
ZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNp
b25FbmFibGVkKFN0cmluZyYmKTsKKyAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgp
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxh
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgPSAwOwor
I2Vsc2UKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCk7CisjZW5kaWYKKworI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAor
CisgICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7Cisg
ICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M7CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYTcx
NTI0ZDQwODE5YmEwMzEwY2I0MjAxMzYwNzU2Njg3ODY4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOTQgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMg
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVw
YXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9u
b3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlz
cGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hh
bmdlZCgpCisKKyAgICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHZvaWQg
U3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgdm9pZCBNb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB2b2lkIEF0dGFjaFNo
YWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgdm9pZCBCaW5kQXR0
cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyBuYW1lKQor
ICAgIHZvaWQgQmluZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAg
dm9pZCBCaW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAg
IHZvaWQgQmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisg
ICAgdm9pZCBCaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAg
dm9pZCBCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0
IGFscGhhKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHZvaWQg
QmxlbmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBo
YSkKKyAgICB2b2lkIEJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9y
KQorICAgIHZvaWQgQmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBk
c3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB2b2lkIENo
ZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0KSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHZv
aWQgQ2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBh
bHBoYSkKKyAgICB2b2lkIENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgdm9pZCBDbGVhclN0
ZW5jaWwoaW50MzJfdCBzKQorICAgIHZvaWQgQ29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVu
LCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgdm9pZCBDb21waWxlU2hhZGVyKHVpbnQzMl90
IGFyZzApCisgICAgdm9pZCBDb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHZvaWQgQ29w
eVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlRnJhbWVidWZmZXIoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVQcm9n
cmFtKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3Jl
YXRlUmVuZGVyYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQ3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRleHR1cmUoKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDdWxsRmFjZSh1aW50MzJfdCBtb2Rl
KQorICAgIHZvaWQgRGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVG
cmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBEZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVRleHR1cmUo
dWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHZv
aWQgRGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB2b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5lYXIs
IGZsb2F0IHpGYXIpCisgICAgdm9pZCBEZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMy
X3QgYXJnMSkKKyAgICB2b2lkIERpc2FibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRHJhd0FycmF5cyh1
aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHZvaWQgRHJh
d0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVp
bnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIEZpbmlzaCgp
CisgICAgdm9pZCBGbHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRh
cmdldCwgdWludDMyX3QgYXJnMykKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50
MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90IG1v
ZGUpCisgICAgdm9pZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBH
ZXRBY3RpdmVBdHRyaWIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29s
IHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcy
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFt
LCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBdHRy
aWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0U3RyaW5nKHVpbnQzMl90IG5hbWUpIC0+IChTdHJpbmcgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90
IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0aSh1aW50MzJf
dCBwbmFtZSwgdWludDMyX3QgaW5kZXgpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5h
bWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0Qm9v
bGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlS
ZWZlcmVuY2U8Ym9vbD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRFcnJvcigpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2ht
ZW50LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMy
X3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
R2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNo
YWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3QsIDI+IHJhbmdlLCBHQ0dMaW50IHByZWNpc2lvbikgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWZ2
KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkg
LT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2
NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMy
X3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9u
KHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwg
dWludDMyX3QgcG5hbWUpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgSXNC
dWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBJc0VuYWJsZWQodWludDMyX3QgY2FwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIElzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1Byb2dyYW0odWludDMyX3QgYXJn
MCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1JlbmRlcmJ1
ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIElzU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgSXNUZXh0dXJlKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgTGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAg
dm9pZCBMaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgUGl4ZWxTdG9yZWkodWlu
dDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZsb2F0
IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52
ZXJ0KQorICAgIHZvaWQgU2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwg
U3RyaW5nIGFyZzEpCisgICAgdm9pZCBTdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90
IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMy
X3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAg
dm9pZCBTdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2tTZXBh
cmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE9wKHVp
bnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFN0
ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpm
YWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJp
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9p
ZCBVbmlmb3JtMWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB2b2lkIFVuaWZvcm0x
ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2
b2lkIFVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgdm9pZCBVbmlm
b3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikK
KyAgICB2b2lkIFVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQor
ICAgIHZvaWQgVW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3Qg
eCwgaW50MzJfdCB5KQorICAgIHZvaWQgVW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBs
b2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0zZnYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lk
IFVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB6KQorICAgIHZvaWQgVW5pZm9ybTNpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwg
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFVuaWZvcm00ZnYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lk
IFVuaWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBVbmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyZnYo
aW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBi
b29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9p
ZCBVbmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVzZVByb2dyYW0odWludDMy
X3QgYXJnMCkKKyAgICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgVmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgdm9pZCBWZXJ0
ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+
IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4
LCBmbG9hdCB5KQorICAgIHZvaWQgVmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIz
Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFZl
cnRleEF0dHJpYjNmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwg
Mz4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0ZnYo
dWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+IHZhbHVlcykKKyAg
ICB2b2lkIFZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwg
dWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgVmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YTAodWludDMyX3QgdGFy
Z2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlckRhdGEx
KHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhLCB1aW50
MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50
NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lk
IFJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNp
emUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB2b2lkIFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlMkQxKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFn
ZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykK
KyAgICB2b2lkIFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6
ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGlu
dDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAg
dm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50
MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBE
cmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMy
X3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIFZl
cnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAg
dm9pZCBDcmVhdGVWZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBJc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBDb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRh
cmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90
IGFyZzQpCisgICAgdm9pZCBHZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0
X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90
IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQz
Ml90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1
aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1
cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRl
eHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgdm9pZCBJbnZhbGlkYXRl
RnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiBhdHRhY2htZW50cykKKyAgICB2b2lkIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJf
dCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFjaG1lbnRzLCBpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9p
ZCBSZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4
U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0
b3JhZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisg
ICAgdm9pZCBUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlM0Qx
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9y
ZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9p
ZCBUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
eG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTNEKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlM0QwKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50
MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2
b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
aW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB2b2lkIEdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3Ry
aW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
VW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB2b2lkIFVuaWZv
cm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHZv
aWQgVW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEs
IHVpbnQzMl90IHYyKQorICAgIHZvaWQgVW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50
MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB2b2lk
IFVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTN1aXYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lk
IFVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9p
ZCBVbmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mng0
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgyZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAg
dm9pZCBVbmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4
NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgs
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZl
cnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwg
dWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB2b2lk
IFZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJf
dCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwg
dWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlw
ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIENsZWFyQnVmZmVyaXYodWludDMyX3QgYnVm
ZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFs
dWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJ1aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRy
YXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lk
IENsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZmkodWlu
dDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0
ZW5jaWwpCisgICAgdm9pZCBDcmVhdGVRdWVyeSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHZv
aWQgSXNRdWVyeSh1aW50MzJfdCBxdWVyeSkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBCZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkp
CisgICAgdm9pZCBFbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1
aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQ3JlYXRlU2FtcGxlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIERlbGV0ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIElz
U2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEJpbmRTYW1wbGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIp
CisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBw
bmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90
IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIEdldFNhbXBs
ZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyaSh1
aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBGZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50
MzJfdCBmbGFncykgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgSXNTeW5jKHVpbnQ2NF90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgRGVsZXRlU3luYyh1aW50NjRfdCBhcmcwKQorICAgIHZvaWQgQ2xpZW50V2Fp
dFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFdhaXRTeW5jKHVp
bnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgdm9pZCBH
ZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVRyYW5z
Zm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHZvaWQgSXNUcmFuc2Zvcm1GZWVkYmFjayh1
aW50MzJfdCBpZCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBC
aW5kVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB2
b2lkIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2
b2lkIEVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdmFyeWluZ3MsIHVpbnQzMl90
IGJ1ZmZlck1vZGUpCisgICAgdm9pZCBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMy
X3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGF1c2VUcmFuc2Zvcm1G
ZWVkYmFjaygpCisgICAgdm9pZCBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBC
aW5kQnVmZmVyQmFzZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBi
dWZmZXIpCisgICAgdm9pZCBCaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQp
CisgICAgdm9pZCBHZXRVbmlmb3JtSW5kaWNlcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3Ry
aW5nPiB1bmlmb3JtTmFtZXMpIC0+IChWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVj
dG9yPHVpbnQzMl90PiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUpIC0+IChWZWN0b3I8
aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtQmxv
Y2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9y
bUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkg
LT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm1CbG9j
a0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVp
bnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxv
Y2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMy
X3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJs
aXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qg
c3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMy
X3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikK
KyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRl
eEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQz
Ml90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmlu
ZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAg
IHZvaWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUG9wR3JvdXBN
YXJrZXJFWFQoKQorICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJf
dCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkK
KyAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMy
X3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291
bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVp
bnQzMl90IGRpdmlzb3IpCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdjNDBjOTg1Y2I3ZDI3MjI4NjlhNWRmZjk2OTE5NDcwNzdh
ZjQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMCwwICsxLDk2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYg
UExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
PgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4g
eworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgZmluYWw7CisKKyAgICAvLyBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiBvdmVycmlkZXMuCisgICAgQnVmZmVy
IHJlY3ljbGVCdWZmZXIoKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBmaW5hbDsK
KyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBmaW5hbDsKK3ByaXZhdGU6CisgICAgR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7Cit9Owor
Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoYXR0cmli
dXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKSk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMsIHRoaXMpKQorewor
fQorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQoreworICAgIHJldHVybiBXVEZN
b3ZlKG1fZGlzcGxheUJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQoreworICAgIEFTU0VSVCghbV9kaXNwbGF5QnVm
ZmVyLnN1cmZhY2UpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKK30K
Kwordm9pZCogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGV0YWNoQ2xpZW50KCkKK3sK
KyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlLCBudWxscHRy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlz
cGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Cisg
ICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7
CisgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpCisg
ICAgICAgIHNlbmRSaWdodCA9IGRpc3BsYXlCdWZmZXItPmNyZWF0ZVNlbmRSaWdodCgpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlmZmU4YzFmYzdhZmExNzJmMWJiOWM3MzQyNjc1YzVkZmU2ZTE3NmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMCwwICsxLDExODMgQEAK
Ky8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2Vi
Z2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUg
cHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVt
ZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0No
ZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVj
aygpOworICAgIH0KKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAg
fQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29s
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRl
eHR1cmUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7
CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hhZGVyKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90
IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0s
IHNoYWRlcik7CisgICAgfQorICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFy
ZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcmJiBuYW1lKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpOworICAgIH0KKyAgICB2
b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZv
aWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAg
fQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFy
ZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBh
cmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwg
YXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVu
LCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymxl
bmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRF
cXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVx
dWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50
MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIH0KKyAg
ICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3Rvcik7CisgICAg
fQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBk
c3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhh
LCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50
MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRh
cmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
bGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQg
Z3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICB9CisgICAgdm9pZCBj
bGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckRl
cHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwocyk7CisgICAgfQorICAgIHZvaWQg
Y29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oYWxwaGEpKTsKKyAgICB9
CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weVRleElt
YWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGJvcmRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleEltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJv
cmRlcik7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVC
dWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVG
cmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVQcm9ncmFt
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
UmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVGV4dHVyZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjdWxsRmFjZSh1aW50MzJfdCBt
b2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jdWxsRmFjZShtb2RlKTsKKyAgICB9Cisg
ICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1l
YnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0odWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9
CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lk
IGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVGV4dHVyZSh1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKGFyZzApOwor
ICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CisgICAgfQorICAgIHZvaWQgZGVwdGhNYXNrKGJv
b2wgZmxhZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAgfQorICAgIHZvaWQgZGVwdGhSYW5nZShmbG9hdCB6
TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6
TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAs
IHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihh
cmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOworICAgIH0KKyAgICB2b2lkIGRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBk
cmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsK
KyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRw
dHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGVuYWJsZSh1aW50MzJfdCBjYXApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOworICAgIH0KKyAgICB2b2lkIGVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZmlu
aXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZmluaXNoKCk7CisgICAgfQorICAgIHZv
aWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mbHVzaCgpOworICAgIH0KKyAg
ICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
YXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1aW50MzJfdCBhcmczKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQs
IGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyk7CisgICAgfQorICAgIHZvaWQg
ZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50
LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGludDMyX3QgbGV2ZWwpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNo
bWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7CisgICAgfQorICAgIHZvaWQgZnJvbnRGYWNl
KHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyb250RmFjZShtb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CisgICAgfQorICAg
IHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRB
Y3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0
aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFy
ZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bShwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9pZCBnZXRBdHRyaWJMb2NhdGlv
bih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEF0dHJp
YkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcmko
dGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmcodWludDMyX3QgbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBT
dHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gdmFsdWUoc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEo
KSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NCh1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5k
ZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
cG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0
Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMYm9vbGVhbiwgND4gdmFsdWUoc3RhdGljX2Nh
c3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRCb29sZWFu
dihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVm
ZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KHZhbHVlLmRhdGEoKSksIHZhbHVl
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEVycm9yKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVu
dW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRFcnJvcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50
LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJpKHVp
bnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmko
YXJnMCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNp
b25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+LCBpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0ZDo6YXJyYXk8R0NH
TGludCwgMj4gcmFuZ2UgeyB9OworICAgICAgICBHQ0dMaW50IHByZWNpc2lvbiA9IHsgfTsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJl
Y2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJf
dCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNpemUoKSksIHByZWNpc2lvbik7CisgICAgfQorICAg
IHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5n
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
U2hhZGVyU291cmNlKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50
NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdD
R0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2Nh
dGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXpl
KSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFt
LCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxz
aXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYo
cHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZh
bHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1M
b2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50
MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHNpemVpcHRyIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VmVy
dGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGhp
bnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAgfQorICAgIHZvaWQgaXNCdWZmZXIodWludDMy
X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNCdWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAg
IHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNhcCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNFbmFibGVk
KGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1Byb2dyYW0oYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
aXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTaGFkZXIoYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBsaW5lV2lkdGgoZmxv
YXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGluZVdpZHRoKGFyZzApOworICAg
IH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmVp
KHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHBvbHlnb25PZmZz
ZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZm
ZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5k
ZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwor
ICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsKKyAgICB9CisgICAgdm9pZCBzY2lzc29yKGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9Cisg
ICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nJiYgYXJnMSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFyZzAsIGFyZzEpOworICAgIH0KKyAg
ICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBt
YXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1h
c2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwg
dWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsK
KyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2ls
TWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CisgICAgfQorICAg
IHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6
cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6
cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUodWludDMyX3QgZmFjZSwg
dWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBh
c3MpOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBh
cmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFt
ZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJh
bSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlvbiwgeCk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYu
ZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWkoaW50MzJfdCBs
b2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWko
bG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xaXYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwg
di5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwg
aW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0y
aShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJpdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZs
b2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaShp
bnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmKGludDMyX3QgbG9j
YXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24s
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgp
KSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGkoaW50MzJfdCBsb2NhdGlv
biwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihpbnQz
Ml90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4m
JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbSh1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52YWxpZGF0ZVByb2dyYW0oYXJnMCk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKKyAgICB9CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIy
ZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2YodWlu
dDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIz
ZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliNGYodWlu
dDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBl
LCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5
cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB2aWV3cG9ydChpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0K
KyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWlu
dDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0
LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzEpLCB1c2FnZSk7CisgICAgfQorICAgIHZv
aWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1
ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpLCB1c2FnZSk7CisgICAgfQorICAgIHZv
aWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgp
KSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBpeGVsczAoaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVf
dD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBp
eGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBi
b3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lk
Kj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJ
bWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UyRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVy
LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQx
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBp
bWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29t
cHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQp
KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMy
X3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0
LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5j
ZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRp
dmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0
ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVmVy
dGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJv
b2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5KHVpbnQz
Ml90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRWZXJ0ZXhBcnJheShhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0
LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3Jp
dGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlC
dWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4od3JpdGVPZmZzZXQpLCBz
dGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRCdWZm
ZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRh
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hhciwg
ND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1fY29u
dGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCksIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNY
MCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBk
c3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMy
X3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGl0
RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0
WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3Qg
dGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0
dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZl
cih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNo
bWVudHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0
YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0
YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZh
bGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUo
KSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHJlYWRCdWZmZXIodWlu
dDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkQnVmZmVyKHNyYyk7Cisg
ICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdl
MkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9
CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlM0QodGFy
Z2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAg
fQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlw
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1Yklt
YWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0
KSk7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6
b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwor
ICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VT
aXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50
MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qw
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90
IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zm
c2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9n
cmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYWdEYXRhTG9jYXRpb24o
cHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpKGxvY2F0aW9uLCB2MCk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwg
dWludDMyX3QgdjEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRp
b24sIHYwLCB2MSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9u
LCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2
MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbiwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aXYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlv
biwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihpbnQzMl90IGxvY2F0aW9uLCBi
b29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNw
b3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJh
bnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKHVpbnQz
Ml90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwg
dyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3Qg
eSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Qs
IDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVp
dihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQq
Pih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVy
KHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3Ry
aWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xp
bnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKHVpbnQz
Ml90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
TGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xl
YXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBk
cmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRh
KCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJmdih1aW50
MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZnYoYnVm
ZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0
IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCk7CisgICAgfQorICAg
IHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUXVlcnko
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAgfQorICAgIHZvaWQgaXNRdWVyeSh1aW50MzJfdCBx
dWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNRdWVyeShxdWVyeSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpOworICAgIH0KKyAgICB2
b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRRdWVyeSh0
YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90
IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVTYW1wbGVy
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgaXNTYW1wbGVy
KHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2FtcGxlcihzYW1wbGVyKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBz
YW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kU2FtcGxlcih1bml0LCBzYW1w
bGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVy
LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwg
ZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJm
KHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGZs
b2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZmVuY2VTeW5jKHVpbnQzMl90IGNv
bmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHN5bmMgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5mZW5jZVN5bmMoY29u
ZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpKTsKKyAgICB9
CisgICAgdm9pZCBpc1N5bmModWludDY0X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTeW5j
KHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5bmModWludDY0X3QgYXJnMCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGllbnRXYWl0
U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgdGltZW91dCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+
KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMdWlu
dDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywg
aW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT53YWl0U3luYyhyZWlu
dGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFn
cywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0aW1lb3V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0
U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFy
ZzApKSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayhpZCk7CisgICAgfQorICAgIHZvaWQgaXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50
MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgaWQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUcmFuc2Zvcm1GZWVkYmFj
ayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVp
bnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJlZ2luVHJh
bnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7CisgICAgfQorICAgIHZvaWQgZW5kVHJhbnNm
b3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVk
YmFjaygpOworICAgIH0KKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMy
X3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVyTW9k
ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhw
cm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZv
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgcGF1c2VU
cmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBhdXNlVHJhbnNm
b3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7Cisg
ICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBp
bmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVm
ZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZm
ZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIs
IHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAg
fQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0
cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQz
Ml90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dM
dWludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0
QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90PiYmIHVuaWZv
cm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYg
dW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1CbG9ja0luZGV4
KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMy
X3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAgIH0KKyAgICB2b2lkIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9j
a0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiBwYXJhbXMoc3RhdGljX2Nh
c3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRhKCkpLCBwYXJhbXMuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBibGl0
RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNy
Y1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90
IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5ibGl0RnJhbWVidWZmZXJB
TkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0
WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5T0VTKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29s
ZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyYmIGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1h
cmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5n
JiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hH
cm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtl
ckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBp
bnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwg
Y291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0
X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQz
Ml90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpOworICAgIH0KKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCmluZGV4IGI3YmI2M2Iy
OWFkODAyMTcyZGYyN2ExMjg5NWJiMTk5OGZhNGI2YjAuLjI0YzQzN2NhYWU3ZjhmOWE5YWZmOTI3
MDNlZmNmOWRhMDMxZTRjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
YWMvR1BVUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQ
VVByb2Nlc3NNYWMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIlNhbmRib3hJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgot
I2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lzZXhpdHMu
aD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsOSArNDQsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB2b2lkIEdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIDAKICAgICAvLyBIYXZpbmcgYSB3aW5kb3cgc2Vy
dmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNzIHdvdWxkIHJlc3VsdCBpbiBzcGluIGxvZ3Mg
KDxyZGFyOi8vcHJvYmxlbS8xMzIzOTExOT4pLgotICAgIE9TU3RhdHVzIGVycm9yID0gU2V0QXBw
bGljYXRpb25Jc0RhZW1vbih0cnVlKTsKLSAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBlcnJvciA9
PSBub0Vycik7CisgICAgYXV0byByZXR2YWwgPSBDR1NTZXREZW55V2luZG93U2VydmVyQ29ubmVj
dGlvbnModHJ1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmV0dmFsID09IGtDR0Vycm9yU3VjY2Vz
cyk7CisgICAgQ0dTU2h1dGRvd25TZXJ2ZXJDb25uZWN0aW9ucygpOworI2VuZGlmCiAjZW5kaWYK
IAogICAgIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5p
bgppbmRleCBkYjA2ZTUzNGY3ZjUxZDJlYmQwMzgyNWY1ODI0NWY4NDk2ZjhiMTc5Li5lZDEwMGIz
NmVkNmY0NmQ0YWFmNjM1NDQ3Nzg4MmFiNzkzYTExYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vz
cy5zYi5pbgpAQCAtMjA3LDYgKzIwNyw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMi
XkFBUEwsKERpc3BsYXlQaXBlfE9wZW5DTGRpc2FibGVkfElPR3JhcGhpY3NfTEVSKHxfUmVnVGFn
XzF8X1JlZ1RhZ18wfF9CdXN5XzIpfGFsaWFzLXBvbGljeXxib290LWRpc3BsYXl8ZGlzcGxheS1h
bGlhc3xtdXgtc3dpdGNoLXN0YXRlfG5kcnYtZGV2fHByaW1hcnktZGlzcGxheXxzbG90LW5hbWUp
IikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeQVRZLChjYml0c3xmYl8obGluZWJ5dGVz
fG9mZnNldHxzaXplKXxpbnRyZXYpIikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxEZXZpY2VO
YW1lIikgOzsgTmVlZGVkIGJ5IE1ldGFsIGNvbXBpbGVycworICAgIChpb2tpdC1wcm9wZXJ0eSAi
QVRZLEVGSURpc3BsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEZhbWlseU5hbWUiKSA7
OyBEaXR0bwogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQt
cHJvcGVydHkgIkJhY2tsaWdodEhhbmRsZSIpCkBAIC0yMTcsNiArMjE4LDkgQEAKICAgICAoaW9r
aXQtcHJvcGVydHkgIkNhcHNMb2NrRGVsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ2FzZVNl
bnNpdGl2ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJDb25maWdTdGF0ZSIpCisgICAgKGlva2l0
LXByb3BlcnR5ICJEUExhbmVzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua0JpdCIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtSYXRlIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRl
c2NyaXB0aW9uIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRldmVsb3BtZW50IikKICAgICAoaW9r
aXQtcHJvcGVydHktcmVnZXggIyJeRGV2aWNlKCBDaGFyYWN0ZXJpc3RpY3N8RXFJRCkiKQpAQCAt
MjI5LDEwICsyMzMsMTcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIkZhbWlseSBJRCIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJGb3JjZVN1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJG
b3JtYXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVyRW5hYmxlZCIpCisgICAg
KGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlclN0YXJ0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiR1BVQ29uZmlndXJhdGlvblZhcmlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURD
Q0Rpc3BsYXlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURlYnVnTnVsbENsaWVudE1h
c2siKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR3B1RGVidWdQb2xpY3kiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiR1BVUmF3Q291bnRlckJ1bmRsZU5hbWUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAi
R1BVUmF3Q291bnRlclBsdWdpbkNsYXNzTmFtZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJIRVZD
U3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkhJRFBvaW50ZXJBY2NlbGVyYXRpb25U
eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkh3Q3R4Q2FjaGVVcGRhdGUiKQogICAgIChpb2tp
dC1wcm9wZXJ0eS1yZWdleCAjIl5JT0FjY2VsKERpc3BsYXlQaXBlQ2FwYWJpbGl0aWVzfEluZGV4
fFR5cGVzfFJldmlzaW9uKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPKENsYXNz
fE1hdGNoQ2F0ZWdvcnl8TmFtZU1hdGNoKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMi
XklPQXVkaW9Db250cm9sKENoYW5uZWxJRHxJRHxTdWJUeXBlfFVzYWdlfFZhbHVlKSIpCkBAIC0y
ODIsNiArMjkzLDggQEAKICAgICAoaW9raXQtcHJvcGVydHkgIklPUGFyZW50TWF0Y2giKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT1BDSSgoQ2xhc3N8UHJpbWFyeXxQcm9wZXJ0eXwp
TWF0Y2h8RXhwcmVzcyhDYXBhYmlsaXRpZXN8TGluayhTdGF0dXN8Q2FwYWJpbGl0aWVzKSl8TVNJ
TW9kZXxSZXNvdXJjZWR8VHVubmVsbGVkKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1BNSXNQ
b3dlck1hbmFnZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QZXJzb25hbGl0eVB1Ymxpc2hl
ciIpCisKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9QbGF0Zm9ybShTZXJpYWxOdW1i
ZXJ8VVVJRCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qb3dlck1hbmFnZW1lbnQiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiSU9Qcm9iZVNjb3JlIikKQEAgLTMxNyw2ICszMzAsNyBAQAogICAg
IChpb2tpdC1wcm9wZXJ0eSAiUHJvdG9jb2wgQ2hhcmFjdGVyaXN0aWNzIikKICAgICAoaW9raXQt
cHJvcGVydHkgIlJlbW92YWJsZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXlJlc2V0
T24oTG9ja3xVbmxvY2spTXMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiU1dJUF9wcm9wZXJ0aWVz
IikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhZmVFamVjdFJlcXVlc3RlZCIpCiAgICAgKGlva2l0
LXByb3BlcnR5ICJTYW1wbGVSYXRlcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTZXJpYWwgTnVt
YmVyIikKQEAgLTMzOCw2ICszNTIsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXR0YWNoZWQt
Z3B1LWNvbnRyb2wtcGF0aCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXmF1ZGlvLShj
b2RlYy1pbmZvfGRldmljZS1tdmFsdWV8ZGV2aWNlLW52YWx1ZXxzZWxlY3RvcikiKQogICAgIChp
b2tpdC1wcm9wZXJ0eSAiYXYtc2lnbmFsLXR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiYmFj
a2xpZ2h0LVBXTS1mcmVxIikKICAgICAoaW9raXQtcHJvcGVydHkgImJjZFZlcnNpb24iKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oYm9hcmR8ZGV2aWNlfHJldmlzaW9ufHN1YnN5c3Rl
bXx2ZW5kb3IpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImJvb3QtZ2FtbWEtcmVzdG9yZWQi
KQpAQCAtMzUwLDYgKzM2NSwxMSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiY29ubmVjdG9yLXR5
cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oZGV2aWNlfHJldmlzaW9ufHN1YnN5
c3RlbS12ZW5kb3J8dG91Y2gtc2l6ZSktaWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZGV2aWNl
X3R5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1icGMiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiZGlzcGxheS1jb25uZWN0LWZsYWdzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRp
c3BsYXktbGluay1jb21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5
LXBpeGVsLWNvbXBvbmVudC1iaXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktdHlw
ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJkcG0iKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZXJy
b3JkYiIpIDs7IE5lZWRlZCBmb3IgT3BlbkdMIG9uIG9sZGVyIGhhcmR3YXJlCiAgICAgKGlva2l0
LXByb3BlcnR5ICJmaWxldmF1bHQtaW1hZ2UiKSA7OyBOZWVkZWQgYnkgTGF1bmNoU2VydmljZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHkuY3BwCmluZGV4IGU2YTE4ZGRhNmUwOTJmZGIxODA0NDZlNGYzYTA4M2Nm
NTNjMjc2MTkuLjM3OTI4ZTFiODNkNGU1MjQ0NTNhOGQyN2NjM2I4NzkwMWIyNDlhM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgVVNFKEFVRElPX1NFU1NJT04pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlv
U2Vzc2lvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5jcHAKaW5kZXggZDliZjUyMjcyYzM3MjkxNTc1YjViMzkzMjYyZTc3MjEzYjkzMGRkNC4u
OGYwMTE5ZWRmZTFkNmU5MzI0MzAwNWIzNDQxMjViMjRlYWI5MWUzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyUHJveHkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTliZGI4NjdhYjg2Yjhj
NTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVkNjZkZGY5NWYyOTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMZWdhY3lDRE1Qcm94
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcwZmE1ZGU0ZmFkZTE1
MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4YjgyNWM2ZTQ1
YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4MDIzMTkwNGY4ZWYwZWFhOTM2MjI5YWZh
OTc1OTguLmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4OWI4MDNmNmFiZjQxYzhlOWVkZGU0MTQy
NzY5MzI4MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1YWEzZDU0ODA2ZjcyYzdlZGMwY2IxZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywxNSArMjcsMTYgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
ci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3Mg
RGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNv
dXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFT
b3VyY2VQcm94eS5oCmluZGV4IDZiZmJmYWZiMjA0NDc4MzBkNzMwYzM4YzU1ZDkxNjAyMmMyM2Qz
MTYuLjA2ZTMwOWU0ZDU3ZWEwNDdmNWVkODI5MDI1OGIxOWNiY2RhNjE5MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuaApAQCAtMzgsNyArMzgsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9u
OwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IDI0NWNmNDBkZmM2ZmM3MjQxNzQ5OWM5
OTZlZWE5NWYwYTNhOGQ2OWEuLjg2ODJjZDc5NWE1ZjU0NGFiYjc4ZTdjMWI4NTg3Yjk2ODgzZjk0
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNl
QnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5LmgKaW5kZXggMzkwYzBjZTFjMjdiNjA4ZGM5N2FhZmE1MTg2MzYxODgwYzNhZjRkMy4u
YzMzNzgzMzNjMDI2NjZkYTYxYWJhYzY0OTQ3MDIxMjFkYjVlODZjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUg
PFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNl
QnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTM4LDcgKzQw
LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
LmgKaW5kZXggMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYxODNhYmQwZTc0NWI4MzUzMy4uODQzYmIw
NmY3YjU2YzZlM2NmYmVlNzlhN2U0MjgxZWZlZThmOWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaApAQCAtMjgs
MTQgKzI4LDE1IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRy
YW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsK
IGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmOGFiYzFmNDA1ZmMxNDY5NDc1YjRkOTBiYWQzZDUz
Y2EwZjgwMTRlLi42MWM0NzA4YWU5NmRiY2FhNTY5ODA5ZWUxOTk1YmU4MTZhOTFmZjJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbXBvcnQgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbXBvcnQgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbXBvcnQg
IkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NQcm94
eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDc4OGM1ZjAwYzAyZjRmMTQ4ZmVlY2NkMzhkMTA2
ODE4YjBkN2U5NjEuLjNhYjRlNGIxY2YxYzE0MTIzMGMxM2U0NTc2YzVlZDZlNmVmYzJlZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRX
UklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
ZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtMzYsNyArMzcsNiBAQAogCiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVj
b2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQppbmRleCA3YTYzMzYzNDdjMDA3ZTk3YjczYjU0
Mzc3NDkxNjgzOGQ2NDAzN2RhLi4xYWE1M2NjMmZiNzdiYWY5ZTMyNjUwNzIxMDgwOWZkNzZjZmJi
ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKIAotI2ltcG9y
dCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIuaAppbmRleCBmNmVkODExZjUzNDJmZTQ4NTU1MTc2Zjg5ZDUxNDU3NTYyYzY2
NTg1Li4wYmNkNTY3M2M5MzQ2YWRhMTFkNjU2YzNhZGQ1MWJlNGVkYmMyNzMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtMjUsNiArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCkBAIC0zOSwxMCArNDAs
NiBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb247CiBPQkpDX0NMQVNTIFdL
Q3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwotfSAvLyBuYW1lc3BhY2UgSVBDCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC0xMTIsNCArMTA5LDMg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5kZXggZGRi
ZTRlZWRkNDQxZGY4N2M1NWFkMzMwZjA0MmNjZGNmYWRmYjkwYi4uNjUxZmYyNTRmOTA1YzE2YTkw
Y2I0ODJjOTc3M2Q0YWM3NDI5NGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUg
IkRvd25sb2FkTW9uaXRvci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgK
aW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlmZGVjMzY5MDE3NzI3NC4uOTNmMDNhODI1
NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRv
d25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3du
bG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBAIE9CSkNfQ0xBU1MgTlNQcm9ncmVzczsK
IE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCiAKLW5hbWVzcGFj
ZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0MGYyN2MxNjA1YzNjZDc0YmM2OTA3
YjdkOTFiNDdiNzYyLi43MjZkZDk5MGJhZmQ0Mzk0YjVhZmMwMzJhMWNmMjBmMTg0OWM0OWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgK
aW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1MC4uOTgwYTA2Zjc4
MzlkYmQ1ZTlmOWQ1MDQ1NDA5YTMzZDc3YjFjMDM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFwLmgiCiAjaW5j
bHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRleCA0NDli
MTNkOGUwN2IyY2QwNDJjNGJhMzYzNmFiNzkzZDM3YjFjM2Y0Li5jNzc4ODgxMWYwMzJkNThmOGI1
Mjc3MzZlMWQyMjc4NDEwZjkxM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAKLSNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtTZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMzE5NjQxOTBkMTQxZDU0OWRhMGJhZjJkYzhiZjI5N2I0
ZTU4MWU4OS4uMDQzNGJmODgwOWE3ZWIzZWNjMThlOGY2NTBjYzAyNzhhZTZlYjUxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgpAQCAtNDAsNyArNDEsNiBAQCBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247
CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcAppbmRleCA1YjQ4OWNjNTM4ZjdjMDcxNTEwMTA2YzU4ZjVjMDk0ZWM5YThl
MWI4Li40OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2NjMzNlMzhjMTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAK
QEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJl
YW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgKaW5kZXggNTJlYzM5MjY5MDIxOGVkZTY2OGQ1NWU2MzhkOGUxNzUwMmZkNmVl
NS4uNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5ZmIyMDZmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtRXJyb3IuaD4KQEAgLTM3LDcgKzM4LDYg
QEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2NiZmYxMDg5Y2MxMDVkZDFhMDBiZWJm
ZGY2MWQzM2M3ZjY2YmQuLmQzN2Q3ODA2OTgzYmJhNTQ3Y2EwZjkyMzVlYjRiZjZiNzMxNTY1YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyLmg+CkBAIC00Myw3ICs0NCw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IGRiNTc5NWRk
MjE3ZjQ1YWQ1ZjY3ZTMwYjc5MWY5MmUyNzZjMDI5ODYuLjk2MWU0NjQ1OWJlNzcxNzdlMjYwNWU3
ZDg2NTJhZGE4MDIwOTdiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U29ja2V0VGFzay5oCkBAIC0zMSw5ICszMSw2IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0VGFza1Nv
dXAuaCIKICNlbHNlCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCmluZGV4IGRhYzY5MzUwN2ViM2Vm
Y2VhNmQxMDk0ODAxYmMwMWIzNmZlMjYzOWQuLmU2ODI2ZTQ3ZTgzOTU5NDAyOGFmOGY0YWVkMjM5
MmI0YjA1ZDJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtMjcsMTUgKzI3LDEyIEBACiAKICNpZiBI
QVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzazsKIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5l
dHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0K
aW5kZXggODU1MzQ4NzQ0MDRjZTJiYWE0NGFlNjU2NTQ3ZDM3MjI1MzMyZWFiOC4uOTBiYzQwOWJm
ZmI3MGEwZWU5ZTczNThiMzg2NzU5N2QyOWYyNGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0KQEAgLTI4
LDcgKzI4LDYgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKIAotI2ltcG9y
dCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2lt
cG9ydCAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxT
ZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0NWZjNjY5ZDc2NmE3NjFjNWQ3NzNkYzk1ZjA1
NDFhMzhlMzZmOGUzLi5hM2U3MDE0YjVkOGVjMDk3MzhmZmE3ZDU2NjQ1NDUwMTBmMDUzNDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFz
a1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2Nr
ZXRUYXNrU291cC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENo
YW5uZWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCmluZGV4
IGU0MjFiOWUxYzcxMzE4NDM0ZjY0ODdmNWZjYjVhNmE4N2JkNzM5MTkuLjA4ODkyMzk1OWZlNDYw
ZmYyYmJhNGM4YzA4Mzk5ODA2NTdiZjM0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCkBAIC0yNSwxNCArMjUsMTEg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggZTAw
YTBjY2RmYTU4NzVjMDI4YzUwNTIzMTE0MTcyOGVlOTViNDM5Mi4uZTM4YmMxYzYwYWY2ZGNmMDM2
OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
RW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01Myw2ICs1NCw0OCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1lbnRDb2RlciB7CiAgICAgfQogfTsKIAor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5UmVmZXJlbmNlVHlw
ZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2Up
CisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpICog
c2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9CisgICAgc3RhdGljIE9wdGlvbmFsPEFycmF5
UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBp
ZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUoKTsKKyAg
ICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhSZWZl
cmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICAgICAgaWYgKCFkYXRh
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEFycmF5
UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRhKSwgRXh0ZW50KTsK
KyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxB
cnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CisgICAgdXNp
bmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VE
eW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAgICB7CisgICAgICAg
IGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJlZmVyZW5jZS5zaXpl
KCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXplKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJl
bmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQorICAgIHN0YXRpYyBP
cHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
aXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmICghc2l6
ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUoKTsKKyAgICAgICAgY29u
c3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6
ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5
cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4o
c2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNldCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDMyYmI0NTdh
NWI4ODVmM2Q1NjY4N2U3OWYxNWMzYTI2NzFiZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApAQCAtMCwwICsxLDEyMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2lubGluZSBjb25zdGV4cHIgc2l6
ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gYXJy
YXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVuY2U7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VE
eW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7
CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAg
ICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgfQor
CisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBBcnJheVJlZmVyZW5j
ZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCisgICAgICAgIDogbV9k
YXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwgbV9zaXplKHZlY3Rvci5zaXplKCkpCisgICAg
eworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0K
KworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3Qg
VCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAg
VmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0
OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9zaXplKTsKKworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBtX2RhdGEgeyB9Owor
ICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVf
dCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZl
cmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgp
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5zaXplKCkgPT0gRXh0ZW50KTsKKyAgICB9
CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIUV4dGVudDsg
fQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gRXh0ZW50OyB9
CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsK
KyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7IH07Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitBcnJheVJlZmVyZW5jZShjb25zdCBX
VEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBBcnJheVJlZmVyZW5jZTxUPjsKKwor
fSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
aW5kZXggZWMzZDE0YWU4ZjNlYzI0NzA1NDc2M2NhZWU5MDljYzJjODc1ZjVkOC4uYmJkN2FiY2I0
Y2RjNjA0MzgyYjEwNjVlMzMyMzg0NDljNmFjNTk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaApAQCAtMjI3LDEwICsyMjcsMTIgQEAgcHVibGljOgogICAgIHZvaWQg
bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7CiAKICAgICB2b2lkIHBv
c3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKTsKLQogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBt
ZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAw
LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOyAvLyBUaHJlYWQtc2FmZS4KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7IC8vIFRocmVh
ZC1zYWZlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KKyAgICAv
LyBTeW5jIHNlbmRlcnMgc2hvdWxkIGNoZWNrIHRoZSBTZW5kU3luY1Jlc3VsdCBmb3IgdHJ1ZS9m
YWxzZSBpbiBjYXNlIHRoZXkgbmVlZCB0byBrbm93IGlmIHRoZSByZXN1bHQgd2FzIHJlYWxseSBy
ZWNlaXZlZC4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGhvbGQgb24gdG8gdGhlIFNlbmRT
eW5jUmVzdWx0IGluIGNhc2UgdGhleSByZWZlcmVuY2UgdGhlIGNvbnRlbnRzIG9mIHRoZSByZXBs
eSB2aWEgRGF0YVJlZmVyZXJlbmNlIC8gQXJyYXlSZWZlcmVuY2UuCisgICAgdXNpbmcgU2VuZFN5
bmNSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj47CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNl
Y29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRp
b25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRp
b25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICAKICAgICAvLyBUaHJlYWQtc2Fm
ZS4KQEAgLTI0OSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYWluIHRocmVhZCBvbmx5
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgYm9vbCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgp
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBT
ZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiBy
ZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3luYzxUPihXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1l
b3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTU1MSw3ICs1NTMsNyBAQCB2b2lkIG1v
dmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYgYSwgc3RkOjp0dXBsZTxCLi4uPiYgYikKICAgICBU
dXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3RkOjp0dXBsZTxBLi4uPiwgc3RkOjp0dXBsZTxCLi4u
Pj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wg
Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDb25u
ZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKIHsK
ICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogICAg
IFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU3MCwxNSArNTcyLDE1IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICAvLyBOb3cgc2VuZCB0aGUgbWVzc2FnZSBhbmQg
d2FpdCBmb3IgYSByZXBseS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHlEZWNv
ZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUoZW5jb2RlciksIHRp
bWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgaWYgKCFyZXBseURlY29kZXIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8vIERlY29kZSB0aGUg
cmVwbHkuCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJn
dW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7CiAgICAgaWYgKCFy
ZXBseUFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4geyB9
OwogICAgIG1vdmVUdXBsZShXVEZNb3ZlKCpyZXBseUFyZ3VtZW50cyksIHJlcGx5KTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gcmVwbHlEZWNvZGVyOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JP
cHRpb24+IHdhaXRGb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI1ZmRhN2JlZDJm
ZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJl
bmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotCi0jaW5jbHVkZSAi
RGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLQotbmFtZXNwYWNlIElQQyB7Ci0KLXZv
aWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAg
ZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheSgqdGhpcyk7Ci19Ci0KLWJvb2wg
RGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlVmFyaWFibGVMZW5ndGhC
eXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCmluZGV4IDM0NTBjMzFiNzNkZGI2
YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNkNjkyN2YzNDFjNWFhOTNmYzEwNzNjYjA3
NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFS
ZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNl
LmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgogCiBuYW1lc3BhY2UgSVBDIHsK
IAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0gICAgCi1jbGFzcyBEYXRhUmVmZXJl
bmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotCi0gICAgRGF0
YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKLSAgICAgICAgOiBt
X2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICB7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIERhdGFSZWZlcmVuY2UoY29uc3Qg
VmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQotICAgICAgICA6IG1fZGF0
YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6ZSgpKQotICAgIHsK
LSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9Ci0K
LSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAgICAgICBpZiAoaXNFbXB0eSgpKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2RhdGE7IAotICAgIH0K
LQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25zdAotICAgIHsKLSAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIG1fc2l6
ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1wcml2YXRlOgotICAgIGNvbnN0IHVpbnQ4
X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotfTsKK3Vz
aW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5jZTx1aW50OF90LCBhcnJheVJlZmVyZW5j
ZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGViNzMwNWJmZDE5MTA4NzA2OGQzMGJjZGI4
ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJjNWFiOGJiYWRiZGM1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAgLTE4NiwyMCArMTg2LDE1IEBAIGJv
b2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRGVjb2Rl
cjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVy
ZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNl
KHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQogewotICAgIHVpbnQ2NF90IHNpemU7Ci0g
ICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBp
ZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxpZ25tZW50LCBzaXplKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gbV9idWZmZXJQb3M7
CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAgIGRhdGFSZWZlcmVuY2UgPSBEYXRhUmVm
ZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkYXRhOwog
fQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1lbnQoQXR0YWNobWVudCYgYXR0YWNobWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCBiNzJkZDhhY2UyNzczZGIz
NTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4ODJmYzkwOTg0YjJmYTU3YmY5YzQ4Yjk2
NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC00MCw3ICs0
MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3Mg
SW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhfdDsK
IGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4
X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBh
bGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhlIGRhdGEgcmVmZXJlbmNlIGhlcmUg
d2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50RGVjb2Rl
ciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVmFyaWFibGVMZW5n
dGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAgIC8vIFRoZSBkYXRhIGluIHRoZSByZXR1
cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2Yg
dGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8gUmV0dXJucyBudWxscHRyIG9uIGZh
aWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0IHVpbnQ4X3QqIGRlY29kZUZpeGVk
TGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFs
dWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKFQmIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRleCBmZDQwOTA3NzRi
MmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5lODNhM2U0YWZmNDJhNTc1NTA1ZGM4ZjA3
MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVuY29kZXIu
aCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAg
LTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6OndyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9yaWdpbmFsLT5zZXRTaG91bGREaXNwYXRj
aE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXko
RGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJTaXplKCkp
KTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9yaWdpbmFsLT5idWZmZXIoKSwgb3JpZ2lu
YWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMg
PSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgcmVzZXJ2ZShhdHRhY2htZW50
cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2b2lkIEVuY29kZXI6OmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaQog
ICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVuY29kZXI6OmVuY29k
ZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihkYXRhUmVmZXJlbmNlLnNp
emUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhUmVmZXJlbmNlLmRhdGEoKSwg
ZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2b2lkIEVuY29kZXI6OmFkZEF0dGFjaG1l
bnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAgICAgbV9hdHRhY2htZW50cy5hcHBlbmQo
V1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKaW5k
ZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYyNDgyZTRjOWExMS4uZWE2MTk2N2JlMWVi
Y2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Vu
Y29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xhc3MgRGF0
YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhfdDsKIGVudW0gY2xh
c3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC02Miw3ICs2MSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7CiAKICAg
ICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qs
IHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJy
YXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3Rk
OjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8
c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRp
Yzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+
Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQgZW5jb2RlKFQmJiB0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDdmZDE4M2E1NmFlOThiMDY2
NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUyYjQ5ZDVjOGZjNDFhMmQ2NTRhZGNkODll
ODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC05Niw3ICs5
Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0ZDo6cmVtb3ZlX2NvbnN0
X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9OwogCi1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIHRlbXBsYXRlPD4gc3Ry
dWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSY+IHsKICAgICB1
c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VTZW5kZXIuaAppbmRleCA0NmUyMWQ4ZDkzNmYyZDhiNTE2N2IyNDlmODgxMTE2ZmZlYjdk
NGI5Li43NzQ2MWQ1NTViNzI5MmMyMGViZjUxNGEzMDJkMWRjNmU3NzcwMTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC01NCw5ICs1NCwxMCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZDxVPihtZXNzYWdlLCBkZXN0aW5hdGlv
bklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKICAgICB9CisgICAgdXNpbmcgU2VuZFN5bmNS
ZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0
PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1
bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29u
ZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChU
Ojppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOwogCkBAIC02NCw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNl
dDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgp
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpKTsKIApAQCAtNzIsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5h
bWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYm
IHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFUmJiBtZXNzYWdl
LCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgcmV0
dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RGTW92ZShyZXBseSks
IGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFiODYzOWI3YmE3NjM2YzYuLjUwMGY4Mzlk
ZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKQEAgLTQ4LDcgKzQ5LDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIE9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3Bw
CmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUzMjhmMDFjOTk5OTUwYTAuLmU5NmRmYjFm
YmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXggODUyZWY0M2UwMDg2MzFjOWZhZmE4MjMw
YzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBlYWZiM2RjNDdjODVkYTQxOTBhMmJhMDY2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RyaW5n
UmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcAppbmRleCA4YjM3NDBmNGIxMDFhZDkwZjUwZWQ1N2M4NTBiOTAzMGZjYzQzMGMy
Li40YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApA
QCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKLSNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTlBPYmplY3RQcm94eS5oIgogI2lu
Y2x1ZGUgIk5QUmVtb3RlT2JqZWN0TWFwLmgiCiAjaW5jbHVkZSAiTlBSdW50aW1lVXRpbGl0aWVz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmgKaW5kZXggYWQ0ZmNkOWQ4Y2NmNDJmMTJlZTQ4OGUwMTM0NmM2MTlhNzAxYjhkMi4u
YzdhNzA1M2NiZDI2ZDIwNDU0YzA0MmM2YWNlMTZjYjUyNTMwZjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJQbHVn
aW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotICAgIGNsYXNz
IERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBMYXllckhv
c3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggNTczZWQzZDhlZTliYmY0MTAzMTY4ZTc5YTA1N2Y5ZGJkYjliODY5NS4uNjczMjQ0YTY3ZTA5
OWZmYjcxODA3ZDU1NTBjNDU0ZjM2MzFkYjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CkBAIC0yMDMsNiArMjAzLDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRp
b25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5kX2FuZF90eXBlcyk6CiAKIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJuIGZyb3plbnNl
dChbCisgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnTWFjaFNlbmRSaWdo
dCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKQEAgLTIxNCw2ICsy
MTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
ICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMnLAogICAg
ICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDMsNiArMjQ1LDcgQEAgZGVmIHR5
cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpEb3dubG9h
ZElEJywKICAgICAgICAgJ1dlYktpdDo6R2VvbG9jYXRpb25JZGVudGlmaWVyJywKKyAgICAgICAg
J1dlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5n
Q29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCcsCkBA
IC01MzAsNiArNTMzLDcgQEAgZGVmIGNsYXNzX3RlbXBsYXRlX2hlYWRlcnModGVtcGxhdGVfc3Ry
aW5nKToKICAgICAgICAgJ09wdGlvblNldCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9PcHRpb25TZXQu
aD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwK
ICAgICAgICAgJ1ZlY3Rvcic6IHsnaGVhZGVycyc6IFsnPHd0Zi9WZWN0b3IuaD4nXSwgJ2FyZ3Vt
ZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAgICAgJ3N0
ZDo6cGFpcic6IHsnaGVhZGVycyc6IFsnPHV0aWxpdHk+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFk
ZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdJUEM6OkFycmF5UmVmZXJl
bmNlJzogeydoZWFkZXJzJzogWyciQXJyYXlSZWZlcmVuY2UuaCInXSwgJ2FyZ3VtZW50X2NvZGVy
X2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICB9CiAKICAgICBtYXRjaCA9
IHJlLm1hdGNoKCcoP1A8dGVtcGxhdGVfbmFtZT4uKz8pPCg/UDxwYXJhbWV0ZXJfc3RyaW5nPi4r
KT4nLCB0ZW1wbGF0ZV9zdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAKaW5k
ZXggNjEzNDNiZDk0MTA2YjZlNzg5ZjgzYmMyNWRlNzlmN2E2MDQwOTNjYy4uYzc4MjMxNmYzMDU3
YTNjYWY5ZDNlMjA3N2M4MTMyNTUzZTY5NzU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElE
YXRhLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkFQSURhdGEuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGVj
b2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxp
YXJ5UHJvY2Vzcy5oCmluZGV4IDdiYTIwN2FiYjBhY2NjOGE1NzBmNWM2NjNmNDZjYWEyNGE4MjZk
OTEuLjMxZmQ3ZDAzZmFmZTAzOTU4Nzk1MmE2Mzc4ZDFhOWM4ZmYyZjc5MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc0RhZW1vbigpOwogICAgIHZvaWQg
bGF1bmNoU2VydmljZXNDaGVja0luKCk7CiAgICAgdm9pZCBzZXRRT1MoaW50IGxhdGVuY3lRT1Ms
IGludCB0aHJvdWdocHV0UU9TKTsKICNlbmRpZgpAQCAtMTg0LDQgKzE4MywzIEBAIHN0cnVjdCBB
dXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCA5YzI2ZGI0ZTlhOWY2YmE3MmU0ODIwYmI0MDZjMmNmYmRlMTEzZTli
Li5kYTM3MzRjODRkNjU0ZDhkMDNjYTc5MjVmN2JkNzU5OTEzYmMzNGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMyMjEsNCArMzIy
MSw4MiBAQCBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OgogICAgIHJldHVybiB7IFdURk1vdmUoKnJl
c3VsdCkgfTsKIH0KIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQor
dm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFs
cGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXB0aDsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMuc3RlbmNpbDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYW50aWFsaWFzOwor
ICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGE7CisgICAgZW5jb2Rl
ciA8PCBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5zaGFy
ZVJlc291cmNlczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaXNXZWJHTDI7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9uczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0
ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaW5pdGlhbFBv
d2VyUHJlZmVyZW5jZTsKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLnhyQ29tcGF0aWJsZTsKKyNlbmRpZgorfQorCitPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLmFscGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGVwdGgpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zdGVuY2lsKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMuYW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0
ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5j
ZUNhdmVhdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnNoYXJlUmVzb3Vy
Y2VzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuaXNXZWJHTDIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5ub0V4dGVuc2lvbnMpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5jZSkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy54ckNvbXBhdGlibGUpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7Cit9CisKK3ZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlSW5mbyYgYWN0aXZlSW5mbykKK3sKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8ubmFt
ZTsKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8udHlwZTsKKyAgICBlbmNvZGVyIDw8IGFjdGl2
ZUluZm8uc2l6ZTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhY3RpdmVJbmZvOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYWN0aXZlSW5mby5uYW1lKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8udHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnNpemUpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBhY3RpdmVJbmZvOworfQorCisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCmluZGV4IDRhOTMyMTU5MTMwY2I3YmNkZTU1ZTIxMWUxN2M0YmVk
ZWYxNzA1ZDYuLjFkYWU5Njk1ZjMzYzA5ZGNkN2M1ODAzNjA4ZTJkNmFjMTZlOWZjNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC03MSw2ICs3
MSwxMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3RrLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkFycmF5UmVmZXJl
bmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc1R5cGVzR0wuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1l
c3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC0yMDMsNiArMjEwLDEwIEBAIHN0
cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CiB1c2luZyBJREJLZXlQYXRoID0gVmFyaWFu
dDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCitzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
OworI2VuZGlmCisKIG5hbWVzcGFjZSBET01DYWNoZUVuZ2luZSB7CiBzdHJ1Y3QgQ2FjaGVJbmZv
Owogc3RydWN0IFJlY29yZDsKQEAgLTg3Myw2ICs4ODQsMTkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiB7
CiB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIHN0YXRpYyBPcHRp
b25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVy
Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYpOworICAg
IHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4g
ZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtMTA0MSw0ICsxMDY1LDE2IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzPiB7CiAKICNlbmRpZgog
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK3RlbXBsYXRlIDw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJl
bmNlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UKKyAgICA+OworfTsKKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggY2YxMzFhOTIxZTA4NjM2NWRiZjc3ZmE5
OGU0MWMxYzc0YTNlN2UyNS4uYWRkOTQ5YmE1MDhkOGU4MTQwODdmZWRlN2IwNDhhM2RlYzZjZjg1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTE1OCw2ICsxNTgsOSBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBz
aG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5k
ZXJET01JbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBzaG91bGRQbGF5TWVkaWFJbkdQVVBy
b2Nlc3M7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyV2Vi
R0xJbkdQVVByb2Nlc3M7CisjZW5kaWYKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOURl
Y29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXI7CiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTEwLDYgKzUxMywxMCBAQCBPcHRpb25hbDxXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZAogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFBs
YXlNZWRpYUluR1BVUHJvY2VzcykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRS
ZW5kZXJXZWJHTEluR1BVUHJvY2VzcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisj
ZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRFbmFibGVW
UDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBkOTFlNDYwMzhm
MzA5YjUxMzBiZmRlNThkZmY0YTlmMTgxOTUxZGZkLi5jMjA2MTIzMTE0MzViZjRmOTJjZjA2ZmU1
ZTExMjA1YTRiNTExMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMjksNiArMjI5LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNz
IHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNl
IH07CiAgICAgYm9vbCBzaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2lm
IEVOQUJMRShXRUJHTCkKKyAgICBib29sIHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsg
ZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciB7IGZhbHNl
IH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIgeyBmYWxzZSB9OwogI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHAKaW5kZXggOWJkOGE4MTc1NDlmNThmZTM4M2Q3MjVkYTY2M2YzYmM1NGNh
MGQ3NC4uNzdlOWI0ZDVjYzc1MmZiY2RiNmI2NWY5YWRjMjYwMTk1NmNhMTQ3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCiAK
KyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAK
aW5kZXggMWQ4NGUyZmUyNjhmMzQ2MGViMjk3NWM0MmJhOTVkMTRmMWQyMzVjZi4uZmEyNjhkNTg0
YTBmYzhkZjg3YTIxZmE0NTYwNzdiOGM1ZDQyYjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgQ2VydGlmaWNhdGVJCiAgICAgLy8gRW5jb2RlIHN0YXJ0aW5n
IGZyb20gdGhlIHJvb3QgY2VydGlmaWNhdGUuCiAgICAgZm9yIChzaXplX3QgaSA9IGNlcnRpZmlj
YXRlc0RhdGFMaXN0LnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICBHQnl0ZUFycmF5KiBj
ZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0W2kgLSAxXS5nZXQoKTsKLSAgICAgICAg
ZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShJUEM6OkRhdGFSZWZlcmVuY2Uo
Y2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pKTsKKyAgICAgICAgZW5jb2RlciA8
PCBJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4p
OwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNlcnRpZmlj
YXRlSW5mby50bHNFcnJvcnMoKSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDZXJ0aWZpY2F0
ZUluZm8mIGMKICAgICBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGU7CiAgICAg
Zm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNoYWluTGVuZ3RoOyBpKyspIHsKICAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZTsKLSAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNlcnRpZmljYXRlRGF0YVJlZmVy
ZW5jZSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVEYXRhUmVmZXJl
bmNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBHQnl0ZUFycmF5KiBj
ZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJyYXlfc2l6ZWRfbmV3KGNlcnRpZmljYXRlRGF0YVJl
ZmVyZW5jZS5zaXplKCkpOwpAQCAtMjc3LDQgKzI3NywzIEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1CiAjZW5kaWYKIAogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwOTE3ZjAxYmUxYzlmOGNhYTJhYmY3
ZjBmODkwZjg5NWEzZjJlZjg2Li41MGNkZTEyYWZhM2FhN2Y3OGMyNzllYzhmYjgxOTc0NGI2ZmIx
ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAK
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
U2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eU1hbmFnZXIuY3BwCkBAIC0xMzcsNyArMTM4LDYgQEAgUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgQG5vLXVuaWZ5CiBQ
bGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAgQG5vLXVuaWZ5Ci1QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVu
aWZ5CiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvRW5j
b2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcCBAbm8tdW5p
ZnkKQEAgLTY5MywzICs2OTMsNSBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKworUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOTk1
MTgwNzMyODBlOWM5NWEyYjI1ZjAwYmM4YmZiMzg4NzYyMTI0MS4uMDc2YWJiZDAyNjAzNTAwNGU3
Yzc3NjkwMmFkMmI3MDk2Y2ViODQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTYsNiAr
NTYsNyBAQCBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcAogCiBHUFVQcm9j
ZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9HUFVTZXJ2aWNlRW50cnlQb2ludC5tbQor
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAogR1BV
UHJvY2Vzcy9pb3MvR1BVUHJvY2Vzc0lPUy5tbQogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01h
Yy5tbQogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3Bw
CkBAIC02Myw2ICs2NCw4IEBAIEdQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eUNvY29hLm1tCiBHUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1t
CiAKKworCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKIAogUGxhdGZvcm0vY2xhc3NpZmllci9j
b2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcApAQCAtNTczLDYg
KzU3Niw4IEBAIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCiBXZWJQcm9jZXNz
L0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQu
bW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjg1LDYgKzY5MCw3
IEBAIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5n
QmFja2VuZE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVy
LmNwcAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRl
eCAyZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNkLi43MzdiNjI1ODE5ODY2
YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA0ZjM5OGI1MzBmNjA4NTc1
Yzk2N2I4M2M3NGZhMmY0MzI4ZjZjZTNiLi44Y2E5N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4
NTYwM2E4YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9j
ZXNzUHJveHkuaApAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQcm9jZXNz
VGhyb3R0bGVyJiB0aHJvdHRsZXIoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBi
b29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6
OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOworICAgIHVzaW5nIFNlbmRT
eW5jUmVzdWx0ID0gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0g
MV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9
KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkg
OiBib29sIHsgTm8sIFllcyB9OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+
IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
ID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vz
c1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6
Olllcyk7CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxV
PiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1
cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0
aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC0x
NjMsMTIgKzE2NCwxMiBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVz
c2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiAKLWJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNP
cHRpb25zKQorQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpTZW5kU3luY1Jlc3VsdCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJl
cGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJ
UEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NF
UlQoVTo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAogICAgIGlmICghbV9jb25uZWN0
aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBU
cmFjZVNjb3BlIHNjb3BlKFN5bmNNZXNzYWdlU3RhcnQsIFN5bmNNZXNzYWdlRW5kKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1
YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmlu
ZGV4IDgyM2MyMDJhODU2YTAxMzZkZDllYTc1OWYwZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUw
NzhmNGZiNGY4NzM0ZDdiZmQ2MDhkMjAzODgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRp
b24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFs
IDogcHVibGljIE5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJhbWVM
b2FkU3RhdGU6Ok9ic2VydmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCmluZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2
NjZiYmJhNDJmYzkwY2VjMzU3N2YuLjEyOGEzOTc3ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNi
ZjU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2Nv
bElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KQEAgLTM1LDEwICszNiw2IEBACiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2Fk
ZXI7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0
YTEwZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQzZmE5MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlh
MDVkNjViNTdlZDBjODAxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAt
ODAsMTAgKzgxLDYgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDI0YjYzM2U0ODRkMmEzNWJh
NzRkNDVmMTJlZGUzNGEwZjc4Y2EwYTYuLjI0OGU1M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAz
NDVkYWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIK
LSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdElt
bWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDEyOWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5
YTg1NmQzY2NjYjIuLmE0ZDhkN2NkODA0ZTY1NjBkYWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxkU2hhcmVkLmgi
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC00OCwxMCArNDksNiBAQCBjbGFzcyBVc2Vy
U2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDZlZDFjNjljMDhmYzU1OWZlMmEzZjNiOTM5NTBlYTgyOGQ2MGQ0YmYuLmNlYzczZDEz
ZDA5OGQ3MTMxODQ4YWZiNTkzZWYwNzI0MTAyMThlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTgsNyArNTgsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5n
QXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNzkyNyw2
ICs3OTI2LDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVh
dGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91
bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NG
b3JDYW52YXNSZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJE
T01JbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJp
bmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3Mg
PSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9
IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvcldlYkdMRW5hYmxlZCgpOworI2VuZGlmCisK
ICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZw
OURlY29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxFKFZQOSkgJiYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZw
OURlY29kZXJFbmFibGVkKCkgJiYgKCFXZWJDb3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJl
ZmVyZW5jZXMoKS52cDlTV0RlY29kZXJFbmFibGVkT25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBi
NWY3MTFmOTFiMmU1Li40MzdhYjc1MGIzNWFiMTYzYjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRl
c0NoaWxkRnJhbWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVk
ZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAg
LTIwMyw3ICsyMDQsNiBAQCBlbnVtIGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90
OwogfQogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNv
ZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IGY0
MjQ1Y2U2NWU5ZDJkNTY1YjNmMTI1ZjM0NTdhMjU2ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0
NjMyZTZhMTk5NzdkYjYxYmFiNjEzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCmluZGV4IGQ0NDJiNjJiNTIyNTg3ZjkwZmE2ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNk
MDI2ODhhMjY4MjE5NDFmZjdhNDE4ZjRkZjVhOTc1YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM4LDEwICszOCw2IEBAIG5hbWVzcGFjZSBB
UEkgewogY2xhc3MgRnJhbWVJbmZvOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzUyOGY0NzFmNDYzZGY2YzExMzBhM2ZiODM3NzZi
ZjFiMmFiZWY5NC4uZWJhYjI4OTFiNDFiMWExNTVmYTFhMDVhZGNmOGNjYzk2YTZlYTE3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02
OTgsNyArNjk4LDYgQEAKIAkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29k
ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
M0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJE
OTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAv
KiBBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENv
bm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQky
RDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNC
MTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNG
RCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJ
MkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8q
IEVuY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2Fn
ZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3Bw
ICovOyB9OwpAQCAtMTMwMyw2ICsxMzAyLDcgQEAKIAkJN0FGQkQzNjMyMUU1MEYzOTAwNURCQUNC
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2NzIxRTUxQkFC
MDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1
REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdB
RkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJB
Q0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5o
ICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1Bs
dWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJB
MzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyog
QVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtMjcxOSw3ICsyNzE5LDYgQEAKIAkJMUFDNUZGQzEx
NzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9h
ZFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2Fk
U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5RkRC
MDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQYWdlTG9hZFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1
MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5n
RGV0ZWN0aW9uRGlzYWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFu
Z0RldGVjdGlvbkRpc2FibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1
QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzY5LDYgKzQzNjgsMTcgQEAK
IAkJN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaDsgcGF0aCA9IENsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJE
MzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQz
NkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0
MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVG
MDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4
NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjY1MywxMSArNjY2MywxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgy
MTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRF
IC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMg
LyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyog
QXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0
YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1l
bnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAg
Ki8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJ
CQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJ
MUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAz
MkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0
MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKQEAgLTgzMjcsMTEgKzgzMzcsMTYgQEAKIAkJ
CQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUz
MDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5
NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJ
CQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdB
N0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tl
bmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQx
NjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQw
OEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQw
OUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8s
CiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oICovLApAQCAtODM0OSw2ICs4MzY0LDExIEBACiAJCQkJRjQwOTRDQkMyNTUzMDRBRjAw
M0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCQjI1
NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCAqLywKIAkJCQk1NUFE
MDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAor
CQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5
OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLywKKwkJCQk3QjkwNDE2RDI1
NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0
ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZm
ZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaCAqLywKQEAgLTExMTY1LDYgKzExMTg1LDcgQEAKIAkJCQkxQUVGRDJG
NzExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQUYwQzRBMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5
UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyODE4M0RENkY2MDAwNzIwM0Yg
LyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUZBNjM0RjIzNEY3QzY0MDBG
RkE4NjQgLyogQXN5bmNSZXZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUU5NjZE
MTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTEzMjMz
LDcgKzEzMjU0LDYgQEAKIAkJCQkyRDkyQTc4NTIxMkI2QUIxMDBGNDkzRkQgLyogQmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0QyMTJCNkE3MTAw
RjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMkQ5MkE3N0UyMTJC
NkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5
MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDlEQUEzOEMyNENCQTFBODAwNzkzRDc1IC8qIERlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkQwQzU2RkUyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFn
ZW1lbnRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGY5
MmRhNmE0N2Y3ZTI0ZjM4Mzk5YWEzNjk4YTIxMjkwZDM2MWQ0YTYuLmM5ZGM2ODJiODc1NDliODI1
MGRiMjJiMmExY2UyMTU1NTAwMGNlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTM2LDEwICsz
Niw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yOwogY2xhc3MgUGF5
bWVudENvbnRhY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMmMwZGY1YjlmNTQ5Njg0N2VkNjY5MTBiZjJmMzliMmNk
YzYwY2EwMi4uNWJlOGI5OTc1MjBjNGFkN2YxYjQ0MDdhZTcyMDRjODRhOTk4ODc0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aApAQCAtMzUsMTAgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlQXVkaW9T
b3VyY2VQcm92aWRlck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYTc5MThlNGI1MGM5YjdjZjViMmU3OWIwNzdkMDM1MjEyYzYxMjY1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJH
TCkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitlbnVtIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQwMjdiYjU4OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShhdHRyaWJ1dGVzKSk7Cit9CisKK1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQoreworICAgIElQQzo6TWVzc2FnZVJlY2VpdmVy
TWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1lc3NhZ2VS
ZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCit7CisgICAgSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7Cisg
ICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7CisgICAg
c2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNz
Q29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVmZmVyKCk7CisjZW5k
aWYKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsK
K30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIG1fY3VycmVudFdp
ZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlclNlbmRSaWdodDsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJl
cGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JDb2xvclNwYWNl
UmVmKCkpOworICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgIGF1dG8mIHNjID0gcGxh
dGZvcm1Td2FwQ2hhaW4oKTsKKyAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOworICAgICAgICBz
Yy5wcmVzZW50KHsgV1RGTW92ZShkaXNwbGF5QnVmZmVyKSwgbnVsbHB0ciB9KTsKKyAgICB9Cisj
ZWxzZQorICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJl
cGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVw
YXJlRm9yRGlzcGxheTo6UmVwbHkoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworI2VuZGlmCisgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IEN1cnJlbnRs
eSBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCdzIG5vdCBjbGVhciB0aGlzIGlzIHRoZSByaWdo
dCB3YXkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkzNDkKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJsZUV4dGVu
c2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCit7CisgICAgaWYgKG1fZGlkSW5p
dGlhbGl6ZSkgeworICAgICAgICAvLyBJbml0aWFsaXphdGlvbiB0aW1lZCBvdXQgYmVmb3JlLCBz
byBsb3NlIHRoZSBjb250ZXh0IG5vdy4KKyAgICAgICAgd2FzTG9zdCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGluaXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVxdWVzdGVk
RXh0ZW5zaW9ucyk7CisgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0KCkKK3sKKyAgICBmb3IgKGF1dG8qIGNs
aWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmZvcmNlQ29u
dGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXND
aGFuZ2VkKCkKK3sKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVu
dHMpKQorICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24o
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0
aWFsaXplZCgpCit7CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBpZiAo
Y29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQ+KG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5
bmNNZXNzYWdlQXJyaXZlcykpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBUaW1lZCBvdXQsIHNv
IHJlcG9ydCBpbml0aWFsaXplZCB3aXRoIGR1bW15IGRhdGEuIFdlIHNob3VsZCBsb3NlIHRoZSBj
b250ZXh0LgorICAgIHdhc0NyZWF0ZWQoIiIsICIiKTsKKyAgICAvLyBGSVhNRTogTmVlZCB0byBt
YXJrIHRoZSBjb250ZXh0IGFzIGxvc3QsIGJ1dCBpdCdzIG5vdCBzYWZlIHRvIGZvcmNlIGxvc3Qg
aW4gdGhpcyBjYWxsIHN0YWNrLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZDY5
Y2FmOWRjMDNjNTI0YjEwMGE5YjZiNzZjZjBhZDc5OWEwZDcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaApAQCAtMCwwICsxLDQxMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKKy8vIFdlYiBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgR3Jh
cGhpY3NDb250ZXh0R0wgaW50ZXJmYWNlLiBUaGUgaW1wbGVtZW50YXRpb24KKy8vIGNvbnZlcnRz
IHRoZSBpbnRlcmZhY2UgdG8gYSBzZXF1ZW5jZSBvZiBJUEMgbWVzc2FnZXMgYW5kIHNlbmRzIHRo
ZSBtZXNzYWdlcyB0bworLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gR1BVIHByb2Nlc3Mu
CisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBU
b29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAg
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMu
CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZp
bmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmlu
YWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KKyAg
ICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgdXNpbmcgV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGZpbmFsOworICAgIHZvaWQgbm90aWZ5
TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFu
Z2VkKCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+
IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisKKyAgICAvLyBGdW5j
dGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQg
YnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0
YXR1c0NoZWNrKCkgZmluYWw7CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBl
cnJvcikgZmluYWw7CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBm
aW5hbDsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgZmluYWw7Cisg
ICAgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdM
T2JqZWN0IHNoYWRlcikgZmluYWw7CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZv
cm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5h
bDsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0
IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQg
YmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFs
OworICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwg
R0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5k
RXF1YXRpb24oR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2Vw
YXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFscGhhKSBmaW5hbDsKKyAgICB2
b2lkIGJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKSBmaW5hbDsK
KyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0
UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpIGZpbmFsOworICAgIEdD
R0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQ29s
b3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NH
TGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVw
dGgpIGZpbmFsOworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdDR0xpbnQgcykgZmluYWw7CisgICAg
dm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJv
b2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZpbmFsOworICAgIHZvaWQgY29tcGlsZVNo
YWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weVRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVCdWZmZXIoKSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUZyYW1lYnVmZmVyKCkgZmluYWw7CisgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVQcm9ncmFtKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVSZW5kZXJidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0
ZVNoYWRlcihHQ0dMZW51bSBhcmcwKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0
ZVRleHR1cmUoKSBmaW5hbDsKKyAgICB2b2lkIGN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2
b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lk
IGRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoTWFzayhHQ0dM
Ym9vbGVhbiBmbGFnKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVh
ciwgR0NHTGNsYW1wZiB6RmFyKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBk
aXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5cyhHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpIGZpbmFsOworICAgIHZvaWQg
ZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZW5hYmxlKEdDR0xlbnVtIGNh
cCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRl
eCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoKCkgZmlu
YWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1H
TE9iamVjdCBhcmczKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwpIGZpbmFsOworICAgIHZvaWQgZnJvbnRG
YWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0NHTGVu
dW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAg
ICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWlu
dCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgR0NHTGludCBnZXRBdHRyaWJM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7
CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkgZmlu
YWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9h
dD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0
KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UHJvZ3Jh
bWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAg
dm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZh
bHVlKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOworICAgIEdDR0xpbnQg
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0UHJv
Z3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CisgICAgR0NHTGludCBnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
R0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48R0NH
TGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CisgICAgU3RyaW5nIGdl
dFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xmbG9h
dCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFs
OworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFs
OworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0
VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRVbmlmb3JtTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwor
ICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBtb2RlKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0J1ZmZlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRW5hYmxlZChHQ0dMZW51bSBjYXAp
IGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2hhZGVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApIGZpbmFs
OworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsK
KyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRz
KSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xi
b29sZWFuIGludmVydCkgZmluYWw7CisgICAgdm9pZCBzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQg
c2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJikgZmluYWw7
CisgICAgdm9pZCBzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVp
bnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZh
Y2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAg
ICB2b2lkIHN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNp
bE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2
b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBh
c3MpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NH
TGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKKyAgICB2
b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
MWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHos
IEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZs
b2F0IHgpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Yo
R0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZp
bmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0
ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwg
R0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xl
bnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQg
YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1
c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lk
IGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsK
KyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAg
IHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNv
cikgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgpIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdD
R0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3Jp
dGVPZmZzZXQsIEdDR0xzaXplaXB0cikgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dM
aW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBH
Q0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQg
bWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9i
amVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKKyAgICB2
b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBhdHRhY2htZW50cykgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJh
bWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNo
bWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZpbmFsOwor
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgdGV4U3RvcmFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9y
YWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsK
KyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50
IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dM
dWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWlu
dCB2MykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMnVpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0
YSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0
PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykgZmluYWw7
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9p
bnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3UmFuZ2VF
bGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAg
ICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsK
KyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVh
ckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdD
R0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkg
ZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgpIGZpbmFsOworICAgIHZv
aWQgZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAgR0NHTGJv
b2xlYW4gaXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGJl
Z2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsK
KyAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsK
KyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIo
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
KSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5h
bDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdl
dFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHN5bmMgZmVuY2VT
eW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKSBmaW5hbDsKKyAgICBH
Q0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVT
eW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIEdDR0xlbnVtIGNsaWVudFdhaXRTeW5jKEdD
R0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSBmaW5h
bDsKKyAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywg
R0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMg
YXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVHJhbnNm
b3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBiaW5kVHJh
bnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5h
bDsKKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9k
ZSkgZmluYWw7CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZv
aWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkgZmluYWw7
CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgdm9p
ZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCByZXN1bWVUcmFuc2Zv
cm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpIGZpbmFsOworICAg
IHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBs
YXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyKSBm
aW5hbDsKKyAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmluYWw7
CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVt
IHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7
CisgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsOworICAgIHZv
aWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZpbmFsOwor
ICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZ
MCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBk
c3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdD
R0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgZmluYWw7CisgICAg
dm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgZmlu
YWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBm
aW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgdm9pZCBnZXRJ
bnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVp
KiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFsOworICAg
IHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBm
aW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclBv
aW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAg
IHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgZ2V0U2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJv
b2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKKyAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpIGZpbmFsOworICAgIHZvaWQg
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lk
IGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgLy8gRW5kIG9m
IGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKworcHJvdGVjdGVkOgor
ICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gTWVz
c2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWls
YWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQg
d2FzTG9zdCgpOworICAgIHZvaWQgd2FzQ2hhbmdlZCgpOworCisgICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
KTsKKyAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCisvLyBUaGUgR0NHTCB0eXBl
cyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkg
Z2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92
PEdDR0xlbnVtLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGJvb2xlYW4p
ID09IHNpemVvZihib29sKSk7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xiaXRm
aWVsZCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJ5dGUs
IGludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWJ5dGUsIHVpbnQ4
X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNob3J0LCBpbnQxNl90Pik7
CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1c2hvcnQsIHVpbnQxNl90Pik7Citz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xpbnQsIGludDMyX3Q+KTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNpemVpLCBpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZV92PEdDR0x1aW50LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWVfdjxHQ0dMZmxvYXQsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZV92PEdDR0xoYWxmZmxvYXQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZV92PEdDR0xjbGFtcGYsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdD
R0x2b2lkLCB2b2lkPik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFBsYXRmb3JtR0xP
YmplY3QsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMY2hhcikgPT0gc2l6
ZW9mKHVpbnQ4X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnQ2NCkgPT0gc2l6ZW9m
KGludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x1aW50NjQpID09IHNpemVvZih1
aW50NjRfdCkpOworLy8gR0NHTHN5bmMgYW5kIEdDR0wqcHRyIHR5cGVzIGFyZSBwb2ludGVycy4g
T24gc29tZSBwbGF0Zm9ybXMsIHRoZXkgYXJlIDMyLWJpdC4KKy8vIEN1cnJlbnRseSB3ZSBoYXJk
LWNvZGUgaXQgYnkgdXNpbmcgPD0sIGFuZCBhc3N1bWUgdGhhdCB3ZSBkbyBub3QgdHJhbnNmZXIg
YXJyYXlzIG9mIHRoZSB0eXBlcy4KK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnRwdHIpIDw9
IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHNpemVpcHRyKSA8
PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x2b2lkcHRyKSA8
PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xzeW5jKSA8PSBz
aXplb2YodWludDY0X3QpICYmIHNpemVvZihHQ0dMc3luYykgPT0gc2l6ZW9mKGludHB0cl90KSk7
CisvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyYjMyYjJiYzEw
MTBlZjhlY2QwYWY1Nzc3YWJkNGZhMDhhM2M5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVk
IHsKKyAgICB2b2lkIFdhc0NyZWF0ZWQoU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmlu
ZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCisgICAgdm9pZCBXYXNMb3N0KCkKKyAgICB2b2lkIFdh
c0NoYW5nZWQoKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNH
ZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMTRhNDQzMTU2MjExY2M3MTg1MTM3MzM4Y2FjYzdjZTUwMzU3OTVjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMCwwICsxLDE2NDcgQEAK
Ky8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2Vi
Z2wuIERvIG5vdCBlZGl0LgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1c0No
ZWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jv
b2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0
dXJlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVUZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkF0dGFjaFNoYWRlcihwcm9ncmFtLCBz
aGFkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFy
ZzAsIGluZGV4LCBuYW1lKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJn
MSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEZy
YW1lYnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwg
YXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5k
Q29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwg
R0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24obW9kZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9k
ZUFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3Rvciwg
ZGZhY3RvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNS
R0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1
bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xl
YXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVl
LCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhclN0ZW5jaWwoR0NHTGludCBzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb2xv
ck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1
ZSwgR0NHTGJvb2xlYW4gYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvbG9yTWFzayhzdGF0aWNfY2FzdDxib29sPihyZWQpLCBzdGF0aWNfY2Fz
dDxib29sPihncmVlbiksIHN0YXRpY19jYXN0PGJvb2w+KGJsdWUpLCBzdGF0aWNfY2FzdDxib29s
PihhbHBoYSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bXBpbGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCit7
CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFt
ZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1l
YnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZm
ZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZm
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkKK3sK
KyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1
cmUoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUZyYW1lYnVmZmVyKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVBy
b2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZWxldGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0
aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJvb2w+KGZsYWcpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aFJhbmdl
KHpOZWFyLCB6RmFyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUoR0NHTGVudW0gY2Fw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUo
Y2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGlu
ZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2goKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGaW5pc2goKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZsdXNoKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Rmx1c2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVy
YnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVu
dCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2
ZWwpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1l
YnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZl
bCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJ
bmZvJiBhcmcyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dy
YW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVV
bmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1l
dGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFN0cmluZyhHQ0dMZW51bSBuYW1lKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmlu
ZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFs
dWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXpl
b2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7
CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXpl
b2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDY0X3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4o
cmV0dXJuVmFsdWUpOworfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCit7CisgICAg
aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWko
cHJvZ3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFBy
b2dyYW1pOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xib29sZWFuPiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVl
UmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnY6OlJlcGx5KHZhbHVlUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRS
ZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFs
dWUuYnVmU2l6ZSAqIHNpemVvZihib29sKSk7CisgICAgCit9CisKK0dDR0xlbnVtIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJy
b3I6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFy
Z2V0LCBhdHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJv
Z3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmkoYXJnMCwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmlu
ZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBH
Q0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQoreworICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4gcmFuZ2VSZXBseTsKKyAgICBpbnQzMl90IHBy
ZWNpc2lvblJlcGx5ID0geyB9OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNo
YWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9u
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNl
bmRSZXN1bHQpIHsKKyAgICAgICAgbWVtY3B5KHJhbmdlLmRhdGEsIHJhbmdlUmVwbHkuZGF0YSgp
LCByYW5nZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgaWYgKHByZWNpc2lv
bikKKyAgICAgICAgICAgICpwcmVjaXNpb24gPSBwcmVjaXNpb25SZXBseTsKKyAgICB9Cit9CisK
K1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNv
dXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJT
b3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGZsb2F0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4
UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1l
dGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sK
KyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQp
CisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1j
cHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2Yo
aW50MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1
ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50MzJf
dCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlv
bjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc2l6ZWlwdHIgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0
dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xz
aXplaXB0cj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50KHRhcmdldCwgbW9kZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQorewor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0J1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5h
YmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVi
dWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0Zy
YW1lYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJh
bWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1By
b2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1By
b2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFt
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRl
cmJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRl
cmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFk
ZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXI6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RleHR1cmUoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlua1Byb2dyYW0o
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQo
R0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZl
clN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZl
cnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBs
ZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNv
dXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgYXJnMSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2hhZGVyU291cmNlKGFyZzAs
IGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGlu
dCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xp
bnQgcmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFzayhtYXNrKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQg
bWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3Rl
bmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcChH
Q0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcChmYWlsLCB6ZmFp
bCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFj
ZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBhcmF0
ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJpKHRhcmdldCwg
cG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWZ2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWkoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGludCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMWkobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWl2KGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9u
LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4
LCBHQ0dMaW50IHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaXYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxv
Y2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwg
di5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtNGl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRh
KSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9z
ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJv
Z3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxp
ZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWYWxpZGF0ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFm
KGluZGV4LCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmKGlu
ZGV4LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0
ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIz
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWIzZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmdihpbmRleCwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5k
YXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYlBvaW50
ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xl
YW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYlBv
aW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PGJvb2w+KG5vcm1hbGl6ZWQpLCBz
dHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZp
ZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZp
ZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAodGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJTdWJEYXRh
KHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMw
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFSZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5i
dWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRh
dGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJE
MCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBp
bWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3Nl
ZFRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNp
emUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJ
bnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0lu
c3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCks
IHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KCkKK3sKKyAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhB
cnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheShhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQs
IEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIg
d3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0
ZVRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRS
ZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEu
YnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQg
c3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xp
bnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNr
LCBHQ0dMZW51bSBmaWx0ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0
WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXll
cikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5
ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFy
Z2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSwgeCwgeSwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZEJ1ZmZl
cihzcmMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0
b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxl
dmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBw
aXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDEodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QwKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWln
aHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdl
M0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdl
M0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRh
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlv
bjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWko
bG9jYXRpb24sIHYwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlv
biwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVp
bnQgdjEsIEdDR0x1aW50IHYyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYx
LCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aXYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJp
eDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRp
KEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50
IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRl
eEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
eCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwg
eSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSVBvaW50ZXIo
aW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVp
bnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZm
ZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwg
YnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1
ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVm
ZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcnVpdihi
dWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBk
cmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmdihidWZmZXIs
IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIs
IGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQ
bGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVF1ZXJ5
KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVy
eShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1F1ZXJ5KHF1ZXJ5KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1
ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFyZ2V0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeSh0YXJnZXQsIHBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1l
KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKCkKK3sKKyAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1w
bGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNT
YW1wbGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2Ft
cGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNhbXBsZXIoR0NH
THVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1l
LCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNh
bXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworR0NHTGZsb2F0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJh
bWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
ZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFy
YW1ldGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTHN5bmMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKEdDR0xlbnVt
IGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQoreworICAgIHVpbnQ2NF90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkZlbmNlU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5
bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpOworfQorCitHQ0dMYm9vbGVh
biBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMoR0NHTHN5bmMgYXJnMCkKK3sK
KyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1
cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRl
U3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9j
YXN0PGludHB0cl90PihhcmcwKSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRTeW5j
KEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50
NjRfdD4odGltZW91dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dD
R0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2koR0NHTHN5bmMgYXJn
MCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhp
ZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdM
T2JqZWN0IGlkKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlk
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNr
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFy
Z2V0LCBpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVt
IHByaW1pdGl2ZU1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQoreworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHBy
b2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFu
c2Zvcm1GZWVkYmFja1Zhcnlpbmc6OlJlcGx5KGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRm
b3JtR0xPYmplY3QgYnVmZmVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRy
IGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJp
bmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK1ZlY3RvcjxHQ0dMdWludD4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKQoreworICAgIFZlY3Rvcjx1aW50MzJf
dD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1ZlY3RvcjxHQ0dMaW50PiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtcyhw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9j
a0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxv
Y2tOYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgo
cHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1C
bG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2Nr
QmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQorewor
ICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zUmVwbHk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUs
IHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdjo6UmVwbHkocGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNw
eShwYXJhbXMuZGF0YSwgcGFyYW1zUmVwbHkuZGF0YSgpLCBwYXJhbXMuYnVmU2l6ZSAqIHNpemVv
ZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCit7CisgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVm
ZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEs
IGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
UGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFy
cmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxl
dGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNW
ZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1ZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
VmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2Vy
RVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCgpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnNF
WFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZp
cnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
R0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1j
b3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVs
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5PTElOVAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMdWludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXgg
YWVmODNlMjU4ODg5YTViZTgyNjdhNjhiMWM2OWZlYzVhMzRlMDM4Ni4uNmE0YWRmNWQ2ZDM0YTdj
NjkxYmZmMDBlZWNlMDFmYzdhYTg5NDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cApAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBi
b29sLCBib29sKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3Jt
R0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVt
LCBib29sLCBib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDk1YzgzNmU2OTUwNDFk
OTdkMjU5MDM2ZmQ3M2RmZjVjNDZiOGZmOTEuLmM4YzU4MjkwNTBhNTI1OGY5ZDkzMTk3NmI5NWYw
NWU1OTdhNTZiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQ
VVByb2Nlc3MoKQogCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGll
bnQoKnRoaXMpOwotICAgIGJvb2wgZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmRTeW5jKAorICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmRTeW5jKAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhhcmR3
YXJlU2FtcGxlUmF0ZSgpKSwKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklEKSwg
MCk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
IHN0cmVhbUZvcm1hdDsKICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFt
Rm9ybWF0KTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1i
ZXJPZkZyYW1lcyk7Ci0gICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlv
QnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKaW5kZXgg
YjhmNDVhNmQ1YmI0ZGI0NjA5ODgwMTI0M2JiNWU5MzE3YjFlM2UyYi4uNjViOGZkMGQ3NzM0N2U5
MzhiNTY0NTgyMjZiNzhkYTQzYzk3ODkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIgogCisjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291
cmNlUHJvdmlkZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVy
U3RvcmFnZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKaW5k
ZXggZTU5ZTFiMDZiNDQ3ZTVkODBjYTYxMDUyYzZjN2EzMmM0YmExNDJlNi4uODE5NDA5MGM5MzNi
MmYxMWE2NDYwYWIzYzE3NzJkMzc2MTYzNzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlck1hbmFnZXIuaApAQCAtMjcsNiArMjcsOSBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NB
UmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCAwZGI4NWFlOWJkMjQxZWJhMWJkYTRlNjIy
NDQwZjYzMjhlMWQ4YTBiLi4yOTdlZWJkYTE5MTg5ZGZlMGNmZTZjMWVkNzY5YWFjYjlkNmQ5MTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKKyNp
bmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmgKaW5kZXggYjlhMDFiMDYyNWUzYjdjN2YwMTE4NGE4M2MzNmU1NDkxMjJmMDlhOC4uMTUx
NzJjOWY2MjEwYmY0Zjk1ZTBjNmFhNzkzNmM2MjJlYThkOTNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmgKQEAgLTQ0LDcgKzQ0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29u
bmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggYjdjZWRiN2U4Mzk0Zjk5
YmE5Y2ZiMGEyYWMyYTk3ODExYjNjNDE4Zi4uNzcwMmQxYjcwMmQxMjE2MmUxOWFiOWE2ZGFhNGM1
OTc1MTg2MmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTMzLDEwICszMyw2IEBACiAj
aW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZEdlbmVy
aWNDdWU7CiBjbGFzcyBJU09XZWJWVFRDdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCAwYzZmNzNkMDcx
NDRiNTYyNjc2OTM2N2M5ZjJhM2E0MDE3ZWFkZTgwLi4xNjhlZjQzNWRkZTU2MTRkMzBmM2JlMjg2
NzBhNDdhZWQ2MTZkZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lm
IFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IkxpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKaW5kZXggNzM5YTQ5NmVm
NDk0Y2I0YTYxODU2NmZmYzY0ZDRhMjY0YTc0ZTlkMC4uNGJlYWUwNjIzMTdiYTI2YTYwNjgzZjFm
NDUxMjMzZWIxMDczYWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0Uo
TElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVyLmgiCkBAIC00Myw3ICs0NCw2IEBAIHVz
aW5nIENWUGl4ZWxCdWZmZXJQb29sUmVmID0gc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqOwog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCAyZGFkMjAzODQyZjBl
NTUzZmUzYjQ2MjQ0MWVlOTRmYTI2NDkzYTExLi5jMjhjZTdmMmUxN2U4OWE4ZTUxODZhNzcwNmEy
ZThhNDRmNmI3ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVu
c2lvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJDb250ZW50VHlwZXMuaD4KQEAgLTU0LDcgKzU1LDYgQEAgY2xhc3MgRGF0
YTsKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIENvbm5lY3Rpb247Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2MSw0ICsx
NjEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKaW5kZXggMzA2NGU5YzRhZmNjMmNmZjU0YTMyNWUyNTMxZWQwNTIyYTAwMTM5
My4uYjk3OTQ2NTllYWJkMTg0YjM4OWMwNmQxMzJmOGM0MmY4MDUyM2NjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg2NTcx
MWIzNjZjMjhkZjQ4NGI0Y2RjMDdhYTNmY2YzZGNlYmYyZjYuLjY5NDg5NmM5OTdhNDk0MGRiYWIy
ZGE3NjU3ODIwYTI3OGFmMWRjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgKaW5kZXggNTgzZTM3OWM4OWVjZmE5NTMwYjBhYmZhMWM2OWZlYTlkNTM5NjZmYi4u
N2UxZDQ5OTQ3MTVmODg0OWNlOGJmZTVlYzM0NTVkNDczNzc4MDBkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2lu
Y2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgpAQCAtMzYsNyArMzcsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTRlZjBkMWZjZTJlNjAxZGY0NDljZmY4NTM5ZmJkMTY0
NzkzZWJlMi4uZmY2OWY1NjA5ZTU3N2NhYzc3N2YwNGFmYTc0YWYyMTA3NDg2NGY4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRDaGFubmVsLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVs
TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuaAppbmRleCBmNTM0NzgzNDdlNzc1ZGYzN2VhOTc2MzRjMjMzMDkzMmI0
YTE0ZDI4Li5hZDdmZjE4N2RiYjQzNTNiOWVkM2JjNTdjNWJhMmM0YWE0ZThjZmVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTZW5kUXVldWUuaD4KQEAgLTM4LDcg
KzM5LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29k
ZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3Bw
CmluZGV4IGFmMjQyY2QyYjU5NWFjNGE0NDg0Mjk3YmU1ZDVjZmUxOGQ0OGYzMjQuLjdkMDA3MzY5
YjljY2U4NWI4ZjA1NDU3ZDY2NmQxZTQ0NTFiOTZjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgog
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKaW5kZXgg
ZGQwODIwMTA3MTJiOWY1ZGI5ZmViZDg4ZGE2NjliNmRmNjFkMGYyOS4uYjQzY2IyZWZhZDFlMTAx
ZWUyNjViOTNkZGU5YjA2MTI3MzZhMDk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvU29ja2V0U3RyZWFtSGFuZGxlLmg+CkBAIC0zMyw3ICszNCw2IEBACiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCmluZGV4IGNiNDhl
MDU3MzQ4YTJlODY2YjA5MWZmNWFjODcyNjA1Y2ExOTJkZDUuLjMyM2YyNWVlOGZkODFiMDI2MzBk
MmYyNTlhMWFmYjg4NGI0Y2Y1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKQEAgLTM1LDcgKzM1LDYg
QEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBlYTUzNTk2MDEwOWZlZTZkYzQ4MDVjZjY4
OTEyNzk4ZWU5YWI2ZjAzLi40MGI0YzhmMjEyOWNmMTIzM2ExYjMxYjg1MTI3ZTdhN2U5ZTNkN2Nh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCkBAIC02MCwxMCArNjAsNiBAQCBPQkpDX0NMQVNTIFBERlNlbGVjdGlvbjsKIE9CSkNfQ0xB
U1MgV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0OwogT0JKQ19DTEFTUyBXS1BERkxheWVy
Q29udHJvbGxlckRlbGVnYXRlOwogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFz
cyBFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAzMzQ3NjRhY2UyYThjNDM4NTg4
YjMxOTgwNjJmMzY1YTM2NmU4YmRhLi41YjI3MzJmMmM0ZTRjNDgzZWJmODQwODdhOGMyNjM0ZTlk
NTQ5MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTA4LDYgKzEwOCwxMCBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oPgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC05MTIsNiArOTE2LDIy
IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlCiAgICAgcmV0dXJuIG1fcGFnZS5lbnN1cmVSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJp
bmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAor
I2lmIEVOQUJMRShXRUJHTCkKKworUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgUGxhdGZvcm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJ
RCkgY29uc3QKK3sKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIFVO
VVNFRF9WQVJJQUJMRShob3N0V2luZG93RGlzcGxheUlEKTsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGF0dHJpYnV0
ZXMpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCisjZW5kaWYKKwog
I2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0
dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwgR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKaW5kZXggZWMxNGZkYjE2YzgxY2MxMjcwNmNmY2I1OWU5OWYyY2QzMzc2MGRj
OC4uMTIxNWY5MmEwMzE5NTgwYTBkZGQ5MjEwNTEzZGQyZDVkMzA1MDUxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaApAQCAtMjQzLDcgKzI0MywxMSBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2Vi
Q29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3Qg
ZmluYWw7CiAjZW5kaWYKKyNlbmRpZgorCiAKICAgICBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBh
bGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2VycygpIGNvbnN0IGZpbmFsCiAgICAgewpAQCAtNDAzLDYg
KzQwNyw3IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVI
YXNIb3Jpem9udGFsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNo
ZWRNYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhciB7IGZhbHNlIH07CisKICAgICBXZWJQYWdl
JiBtX3BhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGY2NDIxNDc3YTU2Y2VlMWI0NTlhYjFiNzBkOGRjYWQ5ZDNkYWZjMzQuLmQ0
NjMzZGRiNmNjNjQ5ODAzYjkyNDU3NTYyNWJmYTUyOGMxN2Q0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MjIsNiArNDIyLDkgQEAgV2Vi
UGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nl
c3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB9CiAgICAgLCBt
X3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9N
SW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgcGFy
YW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgfQorI2lmIEVOQUJMRShXRUJHTCkK
KyAgICAsIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3Vs
ZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzfQorI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgICwgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBwYXJhbWV0
ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB9CiAjZW5kaWYKQEAgLTcyNSw3ICs3
MjgsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKFdlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXIqIG1hbmFnZXIgPSB3ZWJQcm9jZXNzLnN1cHBsZW1lbnQ8V2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlcj4oKSkKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkobWFuYWdlci0+bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KCkpOwogI2Vu
ZGlmCi0gICAgCiAgICAgaWYgKHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yICE9IDEpCiAgICAg
ICAgIHNjYWxlVmlldyhwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3Rvcik7CiAKQEAgLTM3OTMsNiAr
Mzc5NSw5IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BV
UHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyhtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2Vz
cyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJl
bmRlcmluZyhtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKG1fc2hvdWxkUGxheU1lZGlhSW5H
UFVQcm9jZXNzKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nl
c3MpOworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCkBAIC02
OTkwLDYgKzY5OTUsNyBAQCB2b2lkIFdlYlBhZ2U6OnN5bmNocm9uaXplQ09SU0Rpc2FibGluZ1Bh
dHRlcm5zV2l0aE5ldHdvcmtQcm9jZXNzKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENPUlNEaXNhYmxpbmdQYXR0ZXJu
cyhtX2lkZW50aWZpZXIsIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zKSwgMCk7CiB9CiAKKwogI2lm
IEVOQUJMRShNRURJQV9VU0FHRSkKIHZvaWQgV2ViUGFnZTo6YWRkTWVkaWFVc2FnZU1hbmFnZXJT
ZXNzaW9uKE1lZGlhU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBi
dW5kbGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHBhZ2VVUkwpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZTdmOGMwYTNiNjA0ZTdhYTE1N2M3NDAy
MzFlNTU1NzQ5ZDRlZjdjNy4uMjExMGEzMmY2NzBmMDBmYTI0NGZlNmY5ZDc5NWE2ZGRmNjBkMTcw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQu
aCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTE2MCw3
ICsxNjEsNiBAQCBjbGFzcyBBcnJheTsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0
YVJlZmVyZW5jZTsKIH0KQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luY1dpdGhEZWxheWVk
UmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgU2VuZFN5
bmNSZXN1bHQgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBU
OjpSZXBseSYmIHJlcGx5KQogICAgIHsKICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9ja2VkT25T
eW5jaHJvbm91c1JlcGxpZXMoKTsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVz
c2FnZSksIFdURk1vdmUocmVwbHkpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5j
T3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CkBAIC0xODI2LDYgKzE4
MjYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nl
c3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9
OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVBy
b2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
ICAgIGJvb2wgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBmYWxzZSB9OwogI2Vu
ZGlmCkBAIC0yMTgzLDQgKzIxODYsMyBAQCBpbmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5l
ZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBjbwogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGU1NzVmY2EwMTlmNmIxMmE4ZjRk
YWU1Y2IxZDY4MmRhNGU0MzZlYjkuLjg0ZTI4NDExY2ZkZGQ5MWY5YTVkNDdjMjFkNzFlOWRiNmQ3
YzYzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCkBAIC01MTcsNyArNTE3LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBJ
bnRlcnByZXQgdGhlIGV2ZW50IGltbWVkaWF0ZWx5IHVwb24gcmVjZWl2aW5nIGl0IGluIFVJIHBy
b2Nlc3MsIHdpdGhvdXQgc2VuZGluZyB0byBXZWJQcm9jZXNzIGZpcnN0LgogICAgIGJvb2wgZXZl
bnRXYXNIYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9y
bUxheW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Q2hhciksCisgICAgYXV0byBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6
WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hh
ciksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50OjpS
ZXBseShldmVudFdhc0hhbmRsZWQpLCBtX2lkZW50aWZpZXIpOwogICAgIHJldHVybiBzZW5kUmVz
dWx0ICYmIGV2ZW50V2FzSGFuZGxlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBmMmYyMjgyMmM3YjIyM2ZjYTU5Zjk1NTczZDExZGM5OWIxMDM0ODExLi41
ODJlZTc1ZDk5YTc0MjQyNTRhMzlkYWIyMDZmODQ2MTczNGFkOWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTQyLDYgKzE5NDIsMjAgQEAgYm9vbCBXZWJQ
cm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlKQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisKKyNpZiBFTkFCTEUoV0VCR0wpCit2
b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChib29sIHVzZUdQVVByb2Nl
c3NGb3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCA9IHVzZUdQVVByb2Nl
c3NGb3JXZWJHTDsKK30KKworYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJp
bmdGb3JXZWJHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdM
OworfQorCisjZW5kaWYKKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTljNDdkYjRjNDQ3YzBmNGFiNjI3YzA5NGI1ZjY4
ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMyNzY0YzRkODUzNzkwOTBiMmNiY2E3M2MxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNDcsNiArMzQ3LDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcoYm9vbCk7CiAg
ICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSk7CisjaWYgRU5B
QkxFKFdFQkdMKQorICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wpOworICAg
IGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdDsKKyNlbmRpZgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpAQCAtNjg3LDYgKzY5MSw5IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nIHsgZmFsc2UgfTsKICAgICBib29s
IG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisg
ICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCB7IGZhbHNlIH07CisjZW5kaWYKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAwMjIyN2I3YjVlNDZjMjQ0NGQ4OWRiNzQ1ZTc2MmE5MGM0ODUzZDky
Li5mZTM5YjAzZDlhNWE0OGFmNDE3NGJjZTY5YWNmYjdhNzc2ZmNiZTU1IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50cyBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZv
ciBHUFUgcHJvY2Vzcy4KKyAgICAgICAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBX
ZWJLaXQgSVBDIGFuZCBpcyBpbmNvbXBsZXRlLgorCisgICAgICAgIEFkZCB0aGUgY29kZSBnZW5l
cmF0b3IgdG8gZ2VuZXJhdGUgdGhlIGltcGxlbWVudGF0aW9uLiBDdXJyZW50bHkKKyAgICAgICAg
dGhlIGdlbmVyYXRvciBnZW5lcmF0ZXMgYSBXZWJLaXQgSVBDIGltcGxlbWVudGF0aW9uLgorCisg
ICAgICAgIFRoZSBpbnB1dCBkZWZpbml0aW9uIHRvIHRoZSBnZW5lcmF0b3IgaXMgdGhlIHByb3h5
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGhlYWRlciBmaWxlcy4KKyAgICAgICAgVGhlIG91dHB1
dCBvZiB0aGUgZ2VuZXJhdG9yIGlzCisgICAgICAgICAgIC0gV2ViS2l0IElQQyBtZXNzYWdlIGRl
ZmluaXRpb24gZmlsZQorICAgICAgICAgICAtIE1lc3NhZ2Ugc2VuZGVyIGNvZGUKKyAgICAgICAg
ICAgLSBNZXNzYWdlIHJlY2VpdmVyIGFuZCBwYXlsb2FkIGludm9jYXRpb24gY29kZQorCisgICAg
ICAgIFRoZSBnZW5lcmF0b3IgY29udmVydHMgR3JhcGhpY3NDb250ZXh0R0wgR0NHTCAtcHJlZml4
ZWQgdHlwZXMgdG8KKyAgICAgICAgc2l6ZWQgSVBDIHR5cGVzLgorCisgICAgICAgIFRoZSBnZW5l
cmF0b3IgaXMgaW52b2tlZCBkdXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMg
YXJlCisgICAgICAgIHN0b3JlZCBpbiB0aGUgcmVwb3NpdG9yeS4KKworICAgICAgICAqIFNjcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDogQWRkZWQuCisKIDIwMjAtMTItMDEgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkYWJs
ZS93cml0YWJsZSB0byBSVENSdHBTRnJhbWVUcmFuc2Zvcm0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mMTZiNDIyMjljZjJmODI4YzY2YzdlN2I0MTc3M2MyZWJlNDQzMTE0
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBA
IC0wLDAgKzEsMTA0NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyAtKi0gY29kaW5nOiB1
dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVz
IHRoZSBzb3VyY2UgZmlsZXMgZm9yIFdlYkdMIEdQVSBwcm9jZXNzIElQQy4KKyMKKyMgcHl0aG9u
MyAtbSBibGFjayAtbCAxNTAgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisjIHB5
dGhvbjMgLW0gbXlweSBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMKK2ltcG9y
dCBhcmdwYXJzZQoraW1wb3J0IGVudW0KK2ltcG9ydCBwYXRobGliCitpbXBvcnQgcmUKK2ltcG9y
dCBzeXMKK2ltcG9ydCBjb2xsZWN0aW9ucworCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgRGlj
dCwgSXRlcmFibGUsIENhbGxhYmxlLCBUdXBsZSwgU2V0LCBPcHRpb25hbCwgR2VuZXJhdG9yLCBJ
dGVyYXRvciwgQ291bnRlcgorCityb290X2RpciA9IChwYXRobGliLlBhdGgoX19maWxlX18pLnBh
cmVudCAvICIuLiIgLyAiLi4iKS5yZXNvbHZlKCkKK2V4dGVuc2lvbnNfaW5wdXRfZm4gPSByb290
X2RpciAvICJTb3VyY2UiIC8gIldlYkNvcmUiIC8gInBsYXRmb3JtIiAvICJncmFwaGljcyIgLyAi
RXh0ZW5zaW9uc0dMLmgiCisKK2Z1bmN0aW9uc19pbnB1dF9mbnMgPSBbCisgICAgcm9vdF9kaXIg
LyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3Mi
IC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKK10KK3R5cGVzX2lucHV0X2ZuID0g
cm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAi
Z3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworCit0ZW1wbGF0
ZV9wcmVhbWJsZSA9ICIiIi8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorIiIiCitjb250ZXh0X2Z1bmN0aW9uc19m
biA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJHUFVQcm9jZXNzIiAvICJncmFw
aGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIKK2Nv
bnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlID0gKAorICAgIHRlbXBsYXRlX3ByZWFtYmxlCisgICAg
KyAiIiIvLyBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwcml2YXRlIHNlY3Rp
b24gb2YgdGhlCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbXBsZW1lbnRhdGlvbnMuCisj
cHJhZ21hIG9uY2UKK3t9CisKKyIiIgorKQorY29udGV4dF9tZXNzYWdlc19mbiA9IHJvb3RfZGly
IC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJHUFVQcm9jZXNzIiAvICJncmFwaGljcyIgLyAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4iCitjb250ZXh0X21lc3NhZ2VzX3RlbXBs
YXRlID0gKAorICAgIHRlbXBsYXRlX3ByZWFtYmxlCisgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMIE5vdFJlZkNvdW50ZWQge3sKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9y
RGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisj
ZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgp
IC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgp
Cit7fQorfX0KKworI2VuZGlmCisKKyIiIgorKQorCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc19m
biA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUi
IC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2Vu
ZXJhdGVkLmNwcCIKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX3RlbXBsYXRlID0gKAorICAgIHRl
bXBsYXRlX3ByZWFtYmxlCisgICAgKyAiIiIKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7ewore30KKworfX0KKwor
I2VuZGlmCisKKyIiIgorKQorCisKK2RlZiB3cml0ZV9maWxlKGZuLCBuZXdfY29udGVudHMpOgor
ICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgaWYgZi5y
ZWFkKCkgPT0gbmV3X2NvbnRlbnRzOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgIGV4Y2Vw
dDoKKyAgICAgICAgcGFzcworICAgIHdpdGggb3BlbihmbiwgInciKSBhcyBmOgorICAgICAgICBm
LndyaXRlKG5ld19jb250ZW50cykKKworY2xhc3MgY3BwX3R5cGUob2JqZWN0KToKKyAgICB0eXBl
X25hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0cik6Cisg
ICAgICAgIHNlbGYudHlwZV9uYW1lID0gdHlwZV9uYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBkZWYgX19oYXNoX18oc2Vs
Zik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYudHlwZV9uYW1lKQorCisgICAgZGVmIF9fcmVw
cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2Vx
X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUgPT0gb3RoZXIu
dHlwZV9uYW1lCisKKyAgICBkZWYgaXNfdm9pZChzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gc2VsZi50eXBlX25hbWUgaW4gWyJ2b2lkIiwgIkdDR0x2b2lkIiwgImNvbnN0IHZvaWQiLCAi
Y29uc3QgR0NHTHZvaWQiXQorCisgICAgZGVmIGlzX2NvbnN0KHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZS5zdGFydHN3aXRoKCJjb25zdCAiKQorCisgICAgZGVm
IGlzX2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9wb2ludGVyKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZ2V0X3ZhbHVl
X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRl
ZiBnZXRfZGVjYXlfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICBpZiBzZWxmLmlz
X2NvbnN0KCk6CisgICAgICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1l
WzY6XSkKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXRfcnZhbHVlX3R5cGUoc2Vs
ZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVf
bmFtZSArICImJiIpCisKKyAgICBkZWYgZ2V0X3BvaW50ZXJfdHlwZShzZWxmKSAtPiAnY3BwX3R5
cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIioiKQor
CitjbGFzcyBjcHBfdHlwZV9jb250YWluZXIoY3BwX3R5cGUpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0eXBlX25hbWUgOiBzdHIsIGNvbnRhaW5lcl9uYW1lIDogc3RyLCBjb250YWluZWRfdHlw
ZSA6IGNwcF90eXBlLCBhcml0eSA6IE9wdGlvbmFsW2ludF0gPSBOb25lKToKKyAgICAgICAgY3Bw
X3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNvbnRhaW5lcl9u
YW1lID0gY29udGFpbmVyX25hbWUKKyAgICAgICAgc2VsZi5jb250YWluZWRfdHlwZSA9IGNvbnRh
aW5lZF90eXBlCisgICAgICAgIHNlbGYuYXJpdHkgPSBhcml0eQorICAgIGRlZiBpc19jb250YWlu
ZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYgaXNfc3Bhbihz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NH
TFNwYW4iCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iIGFuZCBzZWxmLmFyaXR5IGlz
IE5vbmUKKyAgICBkZWYgZ2V0X2NvbnRhaW5lcl9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5jb250YWluZXJfbmFtZQorICAgIGRlZiBnZXRfYXJpdHkoc2VsZikgLT4gT3B0aW9uYWxb
aW50XToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXJpdHkKKyAgICBkZWYgZ2V0X2NvbnRhaW5lZF90
eXBlKHNlbGYpIC0+IGNwcF90eXBlOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlw
ZQorICAgIGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHNlbGYuY29udGFpbmVkX3R5cGUuaXNfY29uc3QoKQorCitkZWYgY3JlYXRlX2NwcF90
eXBlX2NvbnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRh
aW5lcl06CisgICAgbSA9IHJlLm1hdGNoKHIiKFtcdzpdKyk8KC4rKT4kIiwgdHlwZV9uYW1lKQor
ICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGNvbnRhaW5lcl9uYW1lID0g
bVsxXQorICAgIHRlbXBsYXRlcyA9IG1bMl0KKyAgICBhcml0eSA9IE5vbmUKKyAgICBtID0gcmUu
bWF0Y2gociIoW14sXSspLFxzKihcZCspIiwgdGVtcGxhdGVzKQorICAgIGlmIG06CisgICAgICAg
IHRlbXBsYXRlcyA9IG1bMV0KKyAgICAgICAgYXJpdHkgPSBpbnQobVsyXSkKKyAgICByZXR1cm4g
Y3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSwgY29udGFpbmVyX25hbWUsIGdldF9jcHBfdHlw
ZSh0ZW1wbGF0ZXMpLCBhcml0eSkKKworY2xhc3MgY3BwX3R5cGVfZnVuY3Rpb24oY3BwX3R5cGUp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIHJldHVybl92YWx1ZV90
eXBlIDogY3BwX3R5cGUsIGFyZ3VtZW50X3R5cGVzIDogTGlzdFtjcHBfdHlwZV0pOgorICAgICAg
ICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYucmV0dXJu
X3ZhbHVlX3R5cGUgID0gcmV0dXJuX3ZhbHVlX3R5cGUKKyAgICAgICAgc2VsZi5hcmd1bWVudF90
eXBlcyA9IGFyZ3VtZW50X3R5cGVzCisKK2RlZiBjcHBfc3BsaXRfYXJnc19zcGVjcyhhcmdzX3Nw
ZWMgOiBzdHIpIC0+IEl0ZXJhdG9yW3N0cl06CisgICAgICMgaHR0cHM6Ly9zdGFja292ZXJmbG93
LmNvbS9xdWVzdGlvbnMvMzM1MjcyNDUvcHl0aG9uLXNwbGl0LWJ5LWNvbW1hLXNraXBwaW5nLXRo
ZS1jb250ZW50LWluc2lkZS1wYXJlbnRoZXNlcworICAgIGNvbW1hID0gciIsKD8hKD86W148XSpc
PFtePl0qXD4pKltePD5dKlw+KSIKKyAgICByZXR1cm4gZmlsdGVyKE5vbmUsIFthLnN0cmlwKCkg
Zm9yIGEgaW4gcmUuc3BsaXQoY29tbWEsIGFyZ3Nfc3BlYy5zdHJpcCgpKV0pCisgICAgCitkZWYg
Y3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3Bw
X3R5cGVfZnVuY3Rpb25dOgorICAgIG0gPSByZS5tYXRjaChyJyguKilcKCguKilcKScsIHR5cGVf
bmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm5fdmFs
dWVfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgIGFyZ3NfdHlwZXMgPSBbZ2V0X2NwcF90
eXBlKGEpIGZvciBhIGluIGNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bMl0pXQorICAgIHJldHVybiBj
cHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUsIHJldHVybl92YWx1ZV90eXBlLCBhcmdzX3R5cGVz
KQorICAgICAgICAKKyMgUG9pbnRlciBvciByZWZlcmVyZW5jZQorY2xhc3MgY3BwX3R5cGVfaW5k
aXJlY3QoY3BwX3R5cGUpOgorICAgIGNhdGVnb3J5IDogc3RyCisgICAgdmFsdWVfdHlwZSA6IGNw
cF90eXBlCisgICAgCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY2F0
ZWdvcnkgOiBzdHIsIHZhbHVlX3R5cGUgOiBjcHBfdHlwZSk6CisgICAgICAgIGNwcF90eXBlLl9f
aW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5jYXRlZ29yeSA9IGNhdGVnb3J5
CisgICAgICAgIHNlbGYudmFsdWVfdHlwZSA9IHZhbHVlX3R5cGUKKworICAgIGRlZiBpc19jb25z
dF9wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5k
IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYg
aXNfY29uc3RfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9
PSAnJicgYW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19yZWZlcmVuY2Uoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgbm90IHNlbGYuaXNfY29uc3Qo
KQorICAgIGRlZiBpc19ydmFsdWVfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5jYXRlZ29yeSA9PSAnJiYnCisgICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi52YWx1ZV90eXBlCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3Qo
dHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9pbmRpcmVjdF06CisgICAgbSA9
IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAg
ICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYmJCIsIHR5cGVfbmFtZSkgCisgICAgaWYgbToKKyAg
ICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYmJywgZ2V0X2NwcF90
eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJCIsIHR5cGVfbmFtZSkK
KyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYkIiwgdHlwZV9uYW1l
KQorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUs
ICcmJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKylc
KiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIigu
KylcKiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2lu
ZGlyZWN0KHR5cGVfbmFtZSwgJyonLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgcmV0dXJuIE5v
bmUKKworCitjbGFzcyBjcHBfZXhwcihvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAg
ZXhwcjogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIGV4cHI6
IHN0cik6CisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5leHByID0gZXhw
cgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmV4cHIKKwor
CitDcHBFeHByQ29udmVydGVyID0gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9l
eHByXQorCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChj
YXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90
eXBlXSwgY3BwX2V4cHJdOgorICAgIGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50
ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAg
cmV0dXJuIGNwcF9leHByKHR5cGUsIGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4ocmVp
bnRlcnByZXRfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQor
ICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIKKworZGVmIGNwcF9y
ZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXJfdGhyb3VnaChjYXN0X3Rocm91Z2hfdHlwZSA6IGNw
cF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdOgorICAg
IGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBl
OiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBm
InJlaW50ZXJwcmV0X2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oc3RhdGljX2Nhc3Q8e3N0cihjYXN0
X3Rocm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJw
cmV0X2Nhc3RfdG9fcG9pbnRlcgorCitkZWYgY3BwX3N0YXRpY19jYXN0KGV4cHI6IGNwcF9leHBy
LCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUs
IGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oe3N0cihleHByKX0pIikKKworCitkZWYg
Y3BwX2ltcGxpY2l0X2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBf
ZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgc3RyKGV4cHIpKQorCisKK2RlZiBjcHBf
YXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBj
cHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBl
ID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1
cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfShyZWludGVycHJldF9jYXN0PHtlbGVtZW50
X3BvaW50ZXJfdHlwZX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9LnNpemUoKSki
KQorCitkZWYgd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9j
b252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNw
cF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5
cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3Ry
KHR5cGUpfShyZWludGVycHJldF9jYXN0PGNvbnN0IHtlbGVtZW50X3BvaW50ZXJfdHlwZX0+KHtz
dHIoZXhwcil9LmRhdGEpLCB7c3RyKGV4cHIpfS5idWZTaXplKSIpCisKK2RlZiBjcHBfbW92ZV9l
eHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIoZXhw
ci50eXBlLmdldF9ydmFsdWVfdHlwZSgpLCBmIldURk1vdmUoe3N0cihleHByKX0pIikKKworCitj
cHBfdHlwZXM6IERpY3Rbc3RyLCBjcHBfdHlwZV0gPSB7fQorCitjcHBfdHlwZV9jb25zdHJ1Y3Rv
cnMgOiBMaXN0W0NhbGxhYmxlW1tzdHJdLCBPcHRpb25hbFtjcHBfdHlwZV1dXSA9IFsKKyAgICBj
cmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24sCisgICAgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lciwK
KyAgICBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QKK10KKworZGVmIGdldF9jcHBfdHlwZSh0eXBl
X25hbWU6IHN0cik6CisgICAgciA9IGNwcF90eXBlcy5nZXQodHlwZV9uYW1lLCBOb25lKQorICAg
IGlmIHI6CisgICAgICAgIHJldHVybiByCisgICAgZm9yIHR5cGVfY29uc3RyIGluIGNwcF90eXBl
X2NvbnN0cnVjdG9yczoKKyAgICAgICAgciA9IHR5cGVfY29uc3RyKHR5cGVfbmFtZSkKKyAgICAg
ICAgaWYgcjoKKyAgICAgICAgICAgIGJyZWFrCisgICAgaWYgbm90IHI6CisgICAgICAgIHIgPSBj
cHBfdHlwZSh0eXBlX25hbWUpCisgICAgY3BwX3R5cGVzW3R5cGVfbmFtZV0gPSByCisgICAgcmV0
dXJuIHIKKworCitjbGFzcyBjcHBfYXJnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgdHlw
ZTogY3BwX3R5cGUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFt
ZTogc3RyKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnR5cGUgPSB0
eXBlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7fSB7fSIuZm9y
bWF0KHNlbGYudHlwZSwgc2VsZi5uYW1lKQorCisKK2NsYXNzIGNwcF9kZWNsKG9iamVjdCk6Cisg
ICAgdHlwZTogY3BwX3R5cGUKKyAgICBuYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB0eXBlOiBjcHBfdHlwZSwgbmFtZTogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQor
ICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIGYie3N0cihzZWxmLnR5cGUpfSB7c2VsZi5uYW1lfSIKKworCitjbGFzcyBjcHBf
YXJnX2xpc3Qob2JqZWN0KToKKyAgICBhcmdzOiBMaXN0W2NwcF9hcmddCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIHNlbGYuYXJncyA9IGFy
Z3MKKworICAgIGRlZiBuYW1lcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihhLm5h
bWUgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisgICAgZGVmIGV4cHJzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gW2NwcF9leHByKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAg
ICBkZWYgZGVjbHMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2RlY2woYS50eXBlLCBhLm5h
bWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiB0eXBlcyhzZWxmKToKKyAgICAgICAg
cmV0dXJuIFthLnR5cGUgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CisgICAgICAgIHJldHVybiAiLCAiLmpvaW4oc3RyKGEpIGZvciBhIGluIHNlbGYuYXJncykK
KworCitjbGFzcyBjcHBfZnVuYyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNw
cF9hcmdfbGlzdAorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGlzX2V4dGVuc2lvbjog
Ym9vbAorICAgIG92ZXJsb2FkX3N1ZmZpeDogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bmFtZTogc3RyLCByZXR1cm5fdHlwZTogY3BwX3R5cGUsIGFyZ3M6IGNwcF9hcmdfbGlzdCwgaXNf
ZXh0ZW5zaW9uOiBib29sKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxm
LnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAg
ICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLm92ZXJs
b2FkX3N1ZmZpeCA9ICIiCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IGYie3NlbGYucmV0dXJuX3R5cGV9IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pIgorCisg
ICAgZGVmIGdldF9hcmdzX2NhdGVnb3JpZXMoc2VsZikgLT4gVHVwbGVbTGlzdFtjcHBfYXJnXSwg
TGlzdFtjcHBfYXJnXV06CisgICAgICAgIGluX2FyZ3MgPSBbXQorICAgICAgICBvdXRfYXJncyA9
IFtdCisgICAgICAgIGZvciBhIGluIHNlbGYuYXJncy5hcmdzOgorICAgICAgICAgICAgI2ZtdDog
b2ZmCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpIG9yIFwKKyAgICAgICAgICAg
ICAgICBhLnR5cGUuaXNfcmVmZXJlbmNlKCk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0g
W2FdCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWlu
ZXIpIGFuZCAoKChhLnR5cGUuaXNfc3BhbigpIG9yIGEudHlwZS5pc19keW5hbWljX3NwYW4oKSkg
YW5kIG5vdCBhLnR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKSkpOgorICAgICAg
ICAgICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBpbl9hcmdzICs9IFthXQorICAgICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgcmV0dXJu
IGluX2FyZ3MsIG91dF9hcmdzCisKKyAgICBkZWYgaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLCB0
eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgaXNf
aW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgICMiIGluIGEudHlwZS50eXBlX25hbWUgZm9yIGEg
aW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICAj
aWYgIkdDR0xzeW5jIiBpbiBzZWxmLnJldHVybl90eXBlLnR5cGVfbmFtZToKKyAgICAgICAgIyAg
ICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEubmFtZSA9PSAiYnVmU2l6ZSIgZm9yIGEg
aW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlm
IGFueShhLnR5cGUuaXNfcG9pbnRlcigpIGFuZCBhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKS5pc192
b2lkKCkgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIGlmIGFueShub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKGEudHlwZSkgZm9y
IGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
IGlmIHNlbGYucmV0dXJuX3R5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoc2VsZi5yZXR1cm5f
dHlwZSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKwor
Cit3ZWJraXRfaXBjX3R5cGVzOiBEaWN0W2NwcF90eXBlLCBjcHBfdHlwZV0gPSB7fQorCit3ZWJr
aXRfaXBjX3R5cGVzX2NvbnZlcnRlcnM6IERpY3RbVHVwbGVbY3BwX3R5cGUsIGNwcF90eXBlXSwg
Q3BwRXhwckNvbnZlcnRlcl0gPSB7fQorCisKK2RlZiB3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihl
eHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICIiIiBDb252
ZXJ0cyBgZXhwcmAgb2YgdHlwZSBvZiBgc2VsZmAgdG8gYHR5cGVgICIiIgorICAgIGNvbnZlcnQg
PSB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuZ2V0KChleHByLnR5cGUsIHR5cGUpLCBOb25l
KQorICAgIGlmIG5vdCBjb252ZXJ0OgorICAgICAgICBpZiBleHByLnR5cGUgPT0gdHlwZToKKyAg
ICAgICAgICAgIHJldHVybiBleHByCisgICAgICAgIGNvbnZlcnQgPSBjcHBfaW1wbGljaXRfY2Fz
dAorICAgIHJldHVybiBjb252ZXJ0KGV4cHIsIHR5cGUpCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0
X3NwYW5fdHJhbnNmZXJfdHlwZSh0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlw
ZToKKyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNh
eV90eXBlKCkKKyAgICBhcml0eSA9IHR5cGUuZ2V0X2FyaXR5KCkKKyAgICB3ZWJraXRfaXBjX2Vs
ZW1lbnRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZWxlbWVudF90eXBlXSBpZiBub3QgZWxlbWVu
dF90eXBlLmlzX3ZvaWQoKSBlbHNlIGdldF9jcHBfdHlwZSgndWludDhfdCcpCisgICAgaWYgYXJp
dHkgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5
UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50X3R5cGUpfSwge2FyaXR5fT4iKQorICAg
IHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lw
Y19lbGVtZW50X3R5cGUpfT4iKQorCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVf
dHlwZSh0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRf
dHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGlm
IGVsZW1lbnRfdHlwZS5pc192b2lkKCk6CisgICAgICAgIGVsZW1lbnRfdHlwZSA9IGdldF9jcHBf
dHlwZSgnR0NHTGNoYXInKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAg
IGlubGluZV9jYXBhY2l0eSA9IDE2IGlmICJmbG9hdCIgaW4gZWxlbWVudF90eXBlLnR5cGVfbmFt
ZSBlbHNlIDQKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIlZlY3Rvcjx7c3RyKGVsZW1l
bnRfdHlwZSl9LCB7c3RyKGlubGluZV9jYXBhY2l0eSl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBf
dHlwZShmInN0ZDo6YXJyYXk8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cih0eXBlLmdldF9hcml0
eSgpKX0+IikKKworZGVmIHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uKGV4cHIg
OiBjcHBfZXhwciwgdHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAg
cG9pbnRlcl9jYXN0X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVy
X3R5cGUoKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgIHJldHVybiBj
cHBfZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PHtzdHIocG9pbnRl
cl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIp
CisKKyAgICBhc3NlcnQodHlwZS5pc19zcGFuKCkpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUs
IGYibWFrZUdDR0xTcGFuPHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9PihyZWludGVycHJldF9jYXN0
PHtzdHIocG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSkiKQorCisjIFNl
ZSBtZXNzYWdlcy5weSBmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZQord2Via2l0X2lwY19idWlsdGlu
X3R5cGVzID0gc2V0KAorICAgIFsidWludDhfdCIsICJ1aW50MTZfdCIsICJ1aW50MzJfdCIsICJ1
aW50NjRfdCIsICJpbnQ4X3QiLCAiaW50MTZfdCIsICJpbnQzMl90IiwgImludDY0X3QiLCAiYm9v
bCIsICJmbG9hdCIsICJkb3VibGUiICJib29sIl0KKykKKworCitkZWYgd2Via2l0X2lwY19nZXRf
bWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX3R5cGU6CisgICAg
aWYgdHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICBy
ZXR1cm4gdHlwZQorICAgIHJldHVybiB0eXBlLmdldF9ydmFsdWVfdHlwZSgpCisKKworZGVmIHdl
YmtpdF9pcGNfbW92ZV9leHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICBpZiBl
eHByLnR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoKKyAgICAgICAg
cmV0dXJuIGV4cHIKKyAgICByZXR1cm4gY3BwX21vdmVfZXhwcihleHByKQorCisKK2RlZiB3ZWJr
aXRfaXBjX21zZ19uYW1lKGZ1bmM6IGNwcF9mdW5jKToKKyAgICByZXR1cm4gZnVuYy5uYW1lWzBd
LmNhcGl0YWxpemUoKSArIGZ1bmMubmFtZVsxOl0gKyBmdW5jLm92ZXJsb2FkX3N1ZmZpeAorCisK
K2NsYXNzIHdlYmtpdF9pcGNfbXNnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgaW5fYXJn
czogY3BwX2FyZ19saXN0CisgICAgb3V0X2FyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZ1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gd2Via2l0
X2lwY19tc2dfbmFtZShmdW5jKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGZ1bmMuZ2V0
X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIGlwY19pbl9hcmdzID0gW2NwcF9hcmcod2Via2l0
X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUpIGZvciBhIGluIGluX2FyZ3NdCisgICAgICAgIGlw
Y19vdXRfYXJncyA9IFtdCisgICAgICAgIGlmIG5vdCBmdW5jLnJldHVybl90eXBlLmlzX3ZvaWQo
KToKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVz
W2Z1bmMucmV0dXJuX3R5cGVdLCAicmV0dXJuVmFsdWUiKV0KKyAgICAgICAgZm9yIGEgaW4gb3V0
X2FyZ3M6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY190
eXBlc1thLnR5cGVdLCBhLm5hbWUpXQorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2R5bmFtaWNf
c3BhbigpOgorICAgICAgICAgICAgICAgIGlwY19pbl9hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBf
dHlwZSgidWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUiKV0KKyAgICAgICAgc2VsZi5pbl9hcmdz
ID0gY3BwX2FyZ19saXN0KGlwY19pbl9hcmdzKQorICAgICAgICBzZWxmLm91dF9hcmdzID0gY3Bw
X2FyZ19saXN0KGlwY19vdXRfYXJncykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICBpZiBsZW4oc2VsZi5vdXRfYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBmIlxuICAg
IHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkgLT4gKHtzdHIoc2VsZi5vdXRf
YXJncyl9KSBTeW5jaHJvbm91cyIKKyAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5u
YW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSIKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94
eV9pbXBsKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgbXNnX25hbWU6IHN0cgorICAgIHJl
dHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgcHJlX2Nh
bGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3Rf
Y2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcmV0dXJuX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBp
bl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2Vs
Zi5uYW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm1zZ19uYW1lID0gd2Via2l0X2lw
Y19tc2dfbmFtZShjcHBfZnVuYykKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5j
LnJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAg
c2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisg
ICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fc3Rt
dHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhw
cnMgPSBbXQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2Nh
dGVnb3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJl
dHVybl90eXBlKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJncyhpbl9hcmdzKQorICAgICAg
ICBzZWxmLnByb2Nlc3Nfb3V0X2FyZ3Mob3V0X2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19j
YWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGluX2V4cHJzID0g
IiwgIi5qb2luKFtzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbl9leHByc10pCisgICAgICAgIG91dF9l
eHBycyA9ICIsICIuam9pbihzdHIobykgZm9yIG8gaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAg
IGlzX2FzeW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192b2lkKCkgYW5kIGxlbihvdXRfZXhwcnMp
ID09IDAKKyAgICAgICAgaWYgaXNfYXN5bmM6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMg
Kz0gWworICAgICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOyIsCisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
ZW5kX3Jlc3VsdCA9ICIiCisgICAgICAgICAgICBpZiBzZWxmLnBvc3RfY2FsbF9zdG10czogCisg
ICAgICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiYXV0byBzZW5kUmVzdWx0ID0gIgorICAgICAg
ICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gWworICAgICAgICAgICAgICAgICAgICAi
aWYgKHNlbmRSZXN1bHQpIiArICgiIHsiIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAx
IGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXSArIFsiICAgICIgKyBzIGZvciBzIGluIHNlbGYu
cG9zdF9jYWxsX3N0bXRzXSArIFsKKyAgICAgICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2Vs
Zi5wb3N0X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1
bHR9c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2df
bmFtZX0oe2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3Nl
bGYubXNnX25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsiLAorICAgICAgICAgICAgXQorCisKKyAgICBkZWYgcHJvY2Vzc19pbl9h
cmdzKHNlbGYsIGluX2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgaSBpbiBpbl9h
cmdzOgorICAgICAgICAgICAgaWYgaS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAg
ICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2VsZi5pbl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoaS50eXBl
LCBpLm5hbWUpLCB3ZWJraXRfaXBjX3R5cGVzW2kudHlwZV0pXQorCisgICAgZGVmIHByb2Nlc3Nf
b3V0X2FyZ3Moc2VsZiwgb3V0X2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgbyBp
biBvdXRfYXJnczoKKyAgICAgICAgICAgIGlmIG8udHlwZS5pc19wb2ludGVyKCk6CisgICAgICAg
ICAgICAgICAgdmFsdWVfdHlwZSA9IG8udHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAg
ICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1t2YWx1ZV90eXBl
XQorICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdmFsdWVfdHlwZSwgby5u
YW1lICsgIlJlcGx5IikKKyAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICAgICAg
ZSA9IGNwcF9leHByKHYudHlwZSwgdi5uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4
cHJzICs9IFtlXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKKyAg
ICAgICAgICAgICAgICAgICAgI2ZtdDogb2ZmCisgICAgICAgICAgICAgICAgICAgIGYiaWYgKHtv
Lm5hbWV9KSIsCisgICAgICAgICAgICAgICAgICAgIGYiICAgICp7by5uYW1lfSA9IHt3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihlLCB2YWx1ZV90eXBlKX07IgorICAgICAgICAgICAgICAgICAgICAj
Zm10OiBvbgorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsaWYgby50eXBlLmlzX3Nw
YW4oKToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W28udHlwZV0KKyAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5
cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Vi
a2l0X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJl
X2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAg
ICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KKyAg
ICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90Iiks
IGYie28ubmFtZX0uYnVmU2l6ZSIpXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0
bXRzICs9IFsKKyAgICAgICAgICAgICAgICAgICAgZiJtZW1jcHkoe28ubmFtZX0uZGF0YSwge3Yu
bmFtZX0uZGF0YSgpLCB7by5uYW1lfS5idWZTaXplICogc2l6ZW9mKHtzdHIod2Via2l0X2lwY190
eXBlLmdldF9jb250YWluZWRfdHlwZSgpKX0pKTsiCisgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIo
by50eXBlLCBvLm5hbWUpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJl
dHVybl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToK
KyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5
cGUKKyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlw
ZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhwcihpcGNfcmV0dXJuX3R5cGUs
ICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVy
bl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisg
ICAgICAgIHNlbGYub3V0X2V4cHJzID0gW3JldHVybl92YWx1ZV9leHByXSArIHNlbGYub3V0X2V4
cHJzCisgICAgICAgIHNlbGYucmV0dXJuX3N0bXRzID0gW2YicmV0dXJuIHtzdHIod2Via2l0X2lw
Y19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIHJldHVybl90eXBlKSl9OyJdCisKKyAg
ICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJf
IiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgIHti
fSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYu
cG9zdF9jYWxsX3N0bXRzICsgc2VsZi5yZXR1cm5fc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIi
XG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7
c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9Cit7e3tib2R5fQorfX0iIiIKKwor
CitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcihvYmplY3QpOgorICAgIG5h
bWU6IHN0cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlz
dAorICAgIGJvZHk6IExpc3Rbc3RyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5j
OiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKworICAgICAg
ICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5h
cmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLmJvZHkgPSBbIm5vdEltcGxlbWVudGVk
KCk7Il0KKyAgICAgICAgaWYgY3BwX2Z1bmMucmV0dXJuX3R5cGUudHlwZV9uYW1lICE9ICJ2b2lk
IjoKKyAgICAgICAgICAgIHNlbGYuYm9keSArPSBbInJldHVybiB7IH07Il0KKworICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNl
bGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiXG57XG4gICAgIiArICJcbiAgICAiLmpv
aW4oc2VsZi5ib2R5KSArICJcbn0iCisgICAgICAgIHJldHVybiBmIlxue3N0cihzZWxmLnJldHVy
bl90eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihz
ZWxmLmFyZ3MpfSl7bm9saW50fXtib2R5fSIKKworCitjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93
ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5IEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dl
YmtpdF9pcGNfY3BwX3Byb3h5X2ltcGxdCisgICAgdW5pbXBsczogTGlzdFt3ZWJraXRfaXBjX2Nw
cF9wcm94eV9wbGFjZWhvbGRlcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRl
cmFibGVbY3BwX2Z1bmNdLCB1bmltcGxlbWVudGVkOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAg
ICAgICBzZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwoZikgZm9yIGYgaW4g
ZnVuY3NdCisgICAgICAgIHNlbGYudW5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFj
ZWhvbGRlcihmKSBmb3IgZiBpbiB1bmltcGxlbWVudGVkXQorCisgICAgZGVmIGdldF9mdW5jdGlv
bnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZvciBpIGluIHNlbGYu
aW1wbHMgKyBzZWxmLnVuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAg
IHdyaXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiwKKyAg
ICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdl
dF9mdW5jdGlvbnMoKSksCisgICAgICAgICkKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBs
KG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgaXNf
ZXh0ZW5zaW9uOiBib29sCisgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxf
c3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgaW5f
ZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAg
IHJldHVybl92YWx1ZV9leHByOiBPcHRpb25hbFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVu
Yy5uYW1lCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gY3BwX2Z1bmMub3ZlcmxvYWRf
c3VmZml4CisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9hcmdfbGlzdChbXSkKKyAgICAgICAgc2Vs
Zi5pc19leHRlbnNpb24gPSBjcHBfZnVuYy5pc19leHRlbnNpb24KKyAgICAgICAgc2VsZi5wcmVf
Y2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNl
bGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAg
ICAgIHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9
IE5vbmUKKworICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVy
bl90eXBlKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2Nh
dGVnb3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfYXJncyhjcHBfZnVuYy5hcmdzLmFyZ3Ms
IHNldChpbl9hcmdzKSwgc2V0KG91dF9hcmdzKSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwo
KQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgZXh0ID0gImdldEV4dGVu
c2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVsc2UgIiIKKworICAgICAgICBpbl9leHBy
cyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5pbl9leHBycykKKyAgICAgICAgaXNf
YXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMpID09IDAKKworICAgICAgICBjYWxsX2V4cHIgPSBm
Im1fY29udGV4dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5fZXhwcnN9KSIKKyAgICAgICAgaWYgbm90
IHNlbGYucmV0dXJuX3ZhbHVlX2V4cHI6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0g
W2Yie2NhbGxfZXhwcn07Il0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2FsbF9z
dG10cyArPSBbZiJ7c3RyKHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIpfSA9IHtjYWxsX2V4cHJ9OyJd
CisgICAgICAgIGlmIG5vdCBpc19hc3luYzoKKyAgICAgICAgICAgIG91dF9leHBycyA9ICIsICIu
am9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAgICBzZWxmLnBv
c3RfY2FsbF9zdG10cyArPSBbZiJjb21wbGV0aW9uSGFuZGxlcih7b3V0X2V4cHJzfSk7Il0KKwor
ICAgIGRlZiBwcm9jZXNzX2FyZ3Moc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSwgaW5fYXJnczog
U2V0W2NwcF9hcmddLCBvdXRfYXJnczogU2V0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGEgaW4g
YXJnczoKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAg
ICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBpZiBhIGluIGluX2FyZ3M6CisgICAg
ICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZyhhKQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2FyZyhhKQorICAgICAgICBpZiBzZWxmLm91
dF9leHByczoKKyAgICAgICAgICAgIG91dF9hcmdfZGVjbHMgPSAiLCAiLmpvaW4oZiJ7c3RyKGUu
dHlwZSl9IiBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYuYXJncy5h
cmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZShmIkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoe291
dF9hcmdfZGVjbHN9KT4mJiIpLCAiY29tcGxldGlvbkhhbmRsZXIiKV0KKworICAgIGRlZiBwcm9j
ZXNzX2luX2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0g
W2NwcF9hcmcod2Via2l0X2lwY19nZXRfbWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh3ZWJraXRfaXBj
X3R5cGVzW2EudHlwZV0pLCBhLm5hbWUpXQorICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJr
aXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcih3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEu
bmFtZSksIGEudHlwZSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJnKHNlbGYsIGE6IGNwcF9h
cmcpOgorICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgdmFsdWVf
YXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAg
ICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2
YWx1ZV9hcmcubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0g
W2NwcF9leHByKGEudHlwZSwgZiIme3ZhbHVlX2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgZSA9
IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHdl
YmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZS50eXBlXQorICAgICAgICAg
ICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9p
cGNfdmFsdWVfdHlwZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgor
ICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIp
KQorICAgICAgICAgICAgc2l6ZV9hcmcgPSBjcHBfYXJnKGdldF9jcHBfdHlwZSgidWludDY0X3Qi
KSwgZiJ7YS5uYW1lfVNpemUiKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW3NpemVf
YXJnXQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFu
X3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9z
dG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9KHN0
YXRpY19jYXN0PHNpemVfdD4oe2EubmFtZX1TaXplKSwgMCk7Il0KKyAgICAgICAgICAgIHNlbGYu
aW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBmIntzdG9yZV9hcmcubmFtZX0i
KV0KKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBl
XQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHBy
KGNwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlw
ZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChp
c2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgIHN0b3Jl
X2FyZyA9IGNwcF9hcmcod2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEu
bmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9h
cmcudHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgc2Vs
Zi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKV0K
KyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQor
ICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNw
cF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSld
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgYS50eXBlLmlzX3JlZmVyZW5jZSgp
CisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0K
KyAgICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCks
IGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3NlbGYubnMo
dmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAg
ICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAgICAg
ICAgICBzZWxmLmluX2V4cHJzICs9IFtlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0g
W3dlYmtpdF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9p
cGNfdHlwZSkpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90
eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W3JldHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKHJldHVy
bl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9
fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Vi
a2l0X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIGlwY19yZXR1cm5fdHlwZSkp
XQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gcmV0dXJuX3ZhbHVlX2V4cHIKKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgICAg
ICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBz
ZWxmLnBvc3RfY2FsbF9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiIgICAgdm9pZCB7c2VsZi5u
YW1lfXtzZWxmLm92ZXJsb2FkX3N1ZmZpeH0oe3N0cihzZWxmLmFyZ3MpfSkKKyAgICB7e3tib2R5
fQorICAgIH19IiIiCisKKyAgICBkZWYgbnMoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAg
ICAjIFRPRE86IG5hbWVzcGFjZSBpbmZvIGlzIG5vdCBzdG9yZWQgaW4gbmFtZXMuCisgICAgICAg
IGlmIHR5cGUudHlwZV9uYW1lID09ICJBY3RpdmVJbmZvIjoKKyAgICAgICAgICAgIHJldHVybiAi
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OiIgKyBzdHIodHlwZSkKKyAgICAgICAgcmV0dXJu
IHN0cih0eXBlKQorCitkZWYgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5j
cyA6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgY291bnRzID0gY29sbGVjdGlvbnMuQ291bnRl
cihmLm5hbWUgZm9yIGYgaW4gZnVuY3MpCisgICAgc3VmZml4ZXMgOiBDb3VudGVyW3N0cl0gPSBj
b2xsZWN0aW9ucy5Db3VudGVyKCkKKyAgICBmb3IgZiBpbiBmdW5jczoKKyAgICAgICAgaWYgY291
bnRzW2YubmFtZV0gPiAxOgorICAgICAgICAgICAgZi5vdmVybG9hZF9zdWZmaXggPSBzdHIoc3Vm
Zml4ZXNbZi5uYW1lXSkKKyAgICAgICAgICAgIHN1ZmZpeGVzLnVwZGF0ZShbZi5uYW1lXSkKKwor
CitjbGFzcyBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAg
ICBpbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9pbXBsXQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dl
YmtpdF9pcGNfY3BwX2ltcGwoZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X2Z1bmN0
aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2Vs
Zi5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgK
KyAgICAgICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9m
dW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAg
KQorCisKK2NsYXNzIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6Cisg
ICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9u
IGdlbmVyYXRvci4iCisgICAgbXNnczogTGlzdFt3ZWJraXRfaXBjX21zZ10KKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5t
c2dzID0gW3dlYmtpdF9pcGNfbXNnKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdldF9t
ZXNzYWdlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oc3RyKG0pIGZvciBtIGluIHNl
bGYubXNncykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZShj
b250ZXh0X21lc3NhZ2VzX2ZuLCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlLmZvcm1hdChzZWxm
LmdldF9tZXNzYWdlcygpKSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM6IHN0ciwg
YXJnX2luZGV4OiBpbnQpOgorICAgIHIgPSBhcmdfc3BlYy5yc3BsaXQoIiAiLCAxKQorICAgIG5h
bWUgPSAiIgorICAgIHR5cGUgPSBOb25lCisgICAgaWYgbGVuKHIpID4gMSBhbmQgclswXSAhPSAi
Y29uc3QiOgorICAgICAgICBuYW1lID0gclsxXS5zdHJpcCgpCisgICAgICAgIHR5cGUgPSBnZXRf
Y3BwX3R5cGUoclswXSkKKyAgICBlbHNlOgorICAgICAgICBuYW1lID0gImFyZ3t9Ii5mb3JtYXQo
YXJnX2luZGV4KQorICAgICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKGFyZ19zcGVjKQorICAgIHJl
dHVybiBjcHBfYXJnKHR5cGUsIG5hbWUpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJn
c19zcGVjczogSXRlcmFibGVbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRl
X2NwcF9hcmcoYXJnX3NwZWM9ZSwgYXJnX2luZGV4PWkpIGZvciBpLCBlIGluIGVudW1lcmF0ZShh
cmdzX3NwZWNzKV0pCisKKworZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9z
cGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAg
ICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0
dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjcyksIGlzX2V4dGVu
c2lvbj1pc19leHRlbnNpb24pCisKKworZGVmIHJlYWRfbGluZXNfdW50aWwobGluZXMgOiBJdGVy
YWJsZVtzdHJdLCBtYXRjaCA6IHN0cikgLT4gR2VuZXJhdG9yW3N0ciwgTm9uZSwgTm9uZV06Cisg
ICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIGlmIHJlLm1hdGNoKG1hdGNoLCBsaW5lLnN0
cmlwKCkpOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgeWllbGQgbGluZQorCitkZWYgbWFp
bigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCJ1c2FnZTogJXByb2cg
W29wdGlvbnNdIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rpb249
InN0b3JlX3RydWUiLCBoZWxwPSJQcmludCBzb21lIGRlYnVnIGluZm8gZnJvbSB0aGUgZ2VuZXJh
dG9yIHNjcmlwdCIpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgICMg
Q29uc3RydWN0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUgZnJvbSB3ZWIgcHJvY2Vz
cyB0byBHUFUgcHJvY2Vzcy4KKworICAgICMgRklYTUU6IFVudGlsIGV4dGVuc2lvbnMgaGVhZGVy
IGlzIHJlbW92ZWQsIHdlIG5lZWQgdG8gY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50YXRpb24KKyAg
ICAjIHdpdGggdGhlIGRpc3RpbmN0aW9uIG9mIHdoZXRoZXIgYSBmdW5jdGlvbiBpcyBvciBpcyBu
b3QgYW4gZXh0ZW5zaW9uIGZ1bmN0aW9uLgorICAgIGV4dGVuc2lvbl9zaWduYXR1cmVzIDogU2V0
W3N0cl0gPSBzZXQoKQorICAgIHdpdGggb3BlbihleHRlbnNpb25zX2lucHV0X2ZuKSBhcyBmOgor
ICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKHIiLip2aXJ0dWFsIChcUyspXHMrKFx3KylcKCguKilcKSA9IDA7IiwgbGluZSkKKyAgICAg
ICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZT1tWzJdLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5f
c3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdz
X3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249VHJ1ZSwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMudXBk
YXRlKFtzdHIoZnVuYyldKQorICAgIGZ1bmNzID0gW10KKyAgICB1bmltcGxlbWVudGVkID0gW10K
KyAgICBmb3IgZm4gaW4gZnVuY3Rpb25zX2lucHV0X2ZuczoKKyAgICAgICAgd2l0aCBvcGVuKGZu
KSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAg
ICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRnVuY3Rpb25zIHdpdGgg
YSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAg
ICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVz
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgbSA9
IHJlLm1hdGNoKHIiXHMqKFxTKylccysoXHcrKVwoKC4qKVwpIGZpbmFsOyIsIGxpbmUpCisgICAg
ICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgZnVuY19uYW1lID0gbVsyXQor
ICAgICAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZT1mdW5jX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm5fc3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBfc3Bs
aXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lv
bj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBmdW5j
LmlzX2V4dGVuc2lvbiA9IHN0cihmdW5jKSBpbiBleHRlbnNpb25fc2lnbmF0dXJlcworICAgICAg
ICAgICAgICAgICAgICBpZiBmdW5jLmlzX2ltcGxlbWVudGVkKCk6CisgICAgICAgICAgICAgICAg
ICAgICAgICBmdW5jcy5hcHBlbmQoZnVuYykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVuaW1wbGVtZW50ZWQuYXBwZW5kKGZ1bmMpCisKKworICAg
IHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZmaXgoZnVuY3MpCisgICAgIyBJbml0aWFs
aXplIFdlYktpdCBJUEMgZ2VuZXJhdGlvbi4gQ29uc3RydWN0IHR5cGUgbWFwcGluZ3MgZm9yIHRo
ZSB1c2VkIEMrKyB0eXBlcyAtPiBJUEMgdHlwZXMuCisgICAgIyBUT0RPOiBuYW1lc3BhY2luZyBp
c3N1ZXMuCisgICAgYWlfdHlwZSA9IGdldF9jcHBfdHlwZSgiQWN0aXZlSW5mbyYiKQorICAgIGFp
X3RyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvIikKKyAgICB3ZWJraXRfaXBjX3R5cGVzW2FpX3R5cGVdID0gYWlfdHJhbnNm
ZXJfdHlwZQorCisgICAgd2l0aCBvcGVuKHR5cGVzX2lucHV0X2ZuKSBhcyBmOgorICAgICAgICBs
aW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191
bnRpbChsaW5lcywgIi8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQ
QyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4i
KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRp
bChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3Jp
cHQuIik6CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHN0ZDo6
aXNfc2FtZV92PChcdyspLCAoXHcrKT5cKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2dldF9jcHBfdHlwZShtWzFdKV0gPSBnZXRf
Y3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9
IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgo
XHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3Bw
X3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdl
dF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5
cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRl
cnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAg
ICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNw
cF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEZJ
WE1FOiBIZXJlIHdlIHVzZSA8PSBpbnN0ZWFkIG9mID09IGR1ZSB0byBwb2ludGVycywgc3VjaCBh
cyBHQ0dMc3luYywgR0NHTGludHB0ciwgLi4uLgorICAgICAgICAgICAgIyBUaGlzIGVuZHMgdXAg
ZmFpbGluZyBpZiB0aGVyZSBldmVyIGlzIGFycmF5cyBvZiB0aGVzZSB0eXBlcywgc2luY2UgYXJy
YXlzIGFyZSBjdXJyZW50bHkKKyAgICAgICAgICAgICMgcmVpbnRlcnByZXQtY2FzdGVkLgorICAg
ICAgICAgICAgIyBXZWJLaXQgSVBDIHJlcXVpcmVzIG9uZSBzaXplZCB0eXBlLCBidXQgdGhlIHNp
emUgb2YgdGhlc2UgcG9pbnRlci1iYXNlZCB2YWx1ZXMgd2lsbCBjaGFuZ2UKKyAgICAgICAgICAg
ICMgYmFzZWQgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipz
dGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGlu
ZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3Bw
X3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJd
KQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUK
KyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBp
cGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190
eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0
YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXplb2ZcKChcdyspXCkgJiYgc2l6ZW9m
XCgoXHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBt
OgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAg
ICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBj
cHBfY2FzdF90aHJvdWdoX3R5cGUgPSBnZXRfY3BwX3R5cGUobVs0XSkKKyAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAg
d2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9y
ZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlw
ZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBl
LCBjcHBfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNw
cF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgIyBG
b3IgYWxsIHR5cGVzIGluIHRoZSBpbnB1dCBBUEksIGZvcm0gY29ycmVzcG9uZGluZyBJUEMgdHlw
ZXMgYW5kIGNvbnZlcnNpb25zLgorICAgICMgVE9ETzogdGhpcyBpcyBub3QgZHJpdmVuIGJ5IHRo
ZSB0eXBpbmcuCisgICAgYWxsX3R5cGVzID0gc2V0KCkKKyAgICBmb3IgZnVuYyBpbiBmdW5jczoK
KyAgICAgICBhbGxfdHlwZXMudXBkYXRlKGZ1bmMuYXJncy50eXBlcygpICsgW2Z1bmMucmV0dXJu
X3R5cGVdKQorICAgICMgU29ydCBieSBsZW4gc28gdGhhdCB0ZW1wbGF0ZSBhcmdzIGNvbWUgYmVm
b3JlIHRlbXBsYXRlcy4KKyAgICBmb3IgY3BwX3R5cGUgaW4gc29ydGVkKGFsbF90eXBlcywga2V5
PWxhbWJkYSB4OiBsZW4oeC50eXBlX25hbWUpKToKKyAgICAgICAgaWYgY3BwX3R5cGUgaW4gd2Vi
a2l0X2lwY190eXBlczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAKKyAgICAgICAgaWYg
Y3BwX3R5cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3BwX3R5cGUuaXNfc3BhbigpOgorICAgICAg
ICAgICAgdHJhbnNmZXJfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNmZXJfdHlwZShj
cHBfdHlwZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNm
ZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICBpZiBjcHBfdHlwZS5nZXRfY29u
dGFpbmVkX3R5cGUoKS5pc19jb25zdCgpOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IHdlYmtpdF9pcGNfc3Bh
bl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1sodHJhbnNmZXJfdHlwZSwgY3BwX3R5cGUp
XSA9IHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3Jl
X3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0
ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRf
Y2FzdF9jb252ZXJzaW9uCisgICAgICAgIGVsaWYgY3BwX3R5cGUuaXNfcmVmZXJlbmNlKCkgb3Ig
Y3BwX3R5cGUuaXNfY29uc3RfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29udGFpbmVyKCk6
CisgICAgICAgICAgICB2YWx1ZV90eXBlID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKSBpZiBu
b3QgY3BwX3R5cGUuaXNfY29udGFpbmVyKCkgZWxzZSBjcHBfdHlwZQorICAgICAgICAgICAgaWYg
dmFsdWVfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgICAgICBjb250YWluZWRfdHlw
ZSA9IHZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX2NvbnRhaW5lZF90eXBlID0gd2Via2l0X2lwY190eXBlc1tjb250YWluZWRfdHlwZV0K
KyAgICAgICAgICAgICAgICBpZiB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID09IGNvbnRhaW5l
ZF90eXBlOgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9
IHZhbHVlX3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0
cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKGYie3ZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lcl9u
YW1lKCl9PHtzdHIod2Via2l0X2lwY19jb250YWluZWRfdHlwZSl9PiIpCisgICAgICAgICAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlwZQorICAgICAg
ICAgICAgICAgICAgICAjIFRPRE86IEhlcmUgbWlnaHQgYmUgY2FzZSB3aGVyZSBWZWN0b3I8R0NH
TGludD4gd2FzIHVzZWQgaW4gdGhlIGludGVyZmFjZSBhbmQgVmVjdG9yPGludDMyX3Q+IGlzIHVz
ZWQKKyAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgSVBDIGRlZmluaXRpb24uIFRoZXJlIGlz
IG5vIHNlbnNpYmxlIHdheSB0byBkbyB0aGlzIGF0IHRoZSBtb21lbnQuIFdlIGRvIG5vdCBjb252
ZXJ0LCByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgIyBleHBlY3QgdGhhdCBhbGwgdGhlIGlu
dm9jYXRpb25zIGFyZSB0YWtlbiBjYXJlIG9mIHRoZSBmYWN0IHRoYXQgR0NHTGludCBpcyB0aGUg
c2FtZSB0eXBlIGFzIGludDMyX3QuCisgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIG5v
dCBob2xkIGZvciBhbGwgdHlwZXMgc3VjaCBhcyBHQ0dMYm9vbGVhbi4KKyAgICAgICAgICAgICAg
ICAgICAgI3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5
cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB2YWx1
ZV90eXBlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90
eXBlXSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAKKyAgICAjIFRoZSBpbnB1dCB0
byB0aGUgZ2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUuCisgICAgIyBS
dW4gdGhlIHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBnZW5lcmF0b3JzID0gWworICAgICAgICBj
b250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcywgdW5pbXBsZW1lbnRl
ZCksCisgICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAg
ICAgICAgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgIF0KKyAg
ICBmb3IgZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBnLmdlbmVyYXRlKCkKKworICAgIGlmIG9w
dGlvbnMudmVyYm9zZToKKyAgICAgICAgcHJpbnQoIkltcGxlbWVudGVkOiIpCisgICAgICAgIHBy
aW50KCIiLmpvaW4oZiIgICAge3N0cihpKX0gZmluYWxcbiIgZm9yIGkgaW4gZnVuY3MpKQorICAg
ICAgICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYiICAg
IHtzdHIodSl9IGZpbmFsXG4iIGZvciB1IGluIHVuaW1wbGVtZW50ZWQpKQorICAgICAgICBwcmlu
dChmIkltcGxlbWVudGVkOiB7bGVuKGZ1bmNzKX0sIHVuaW1wbGVtZW50ZWQ6IHtsZW4odW5pbXBs
ZW1lbnRlZCl9LCB0b3RhbDoge2xlbihmdW5jcykrbGVuKHVuaW1wbGVtZW50ZWQpfSIpCisgICAg
ICAgIHByaW50KCJDKysgdHlwZSBtYXAgdG8gV2ViS2l0IElQQyB0eXBlIG1hcDoiKQorICAgICAg
ICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgaW4gd2Vi
a2l0X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSAtPiB7
c3RyKHdlYmtpdF9pcGNfdHlwZXNbdF0pfSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZXMgd2l0
aG91dCBXZWJLaXQgSVBDIHR5cGU6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0
ZW1zKCk6CisgICAgICAgICAgICBpZiB0IG5vdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAg
ICAgICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IikKKyAgICAgICAgcHJpbnQoIldlYktpdCBJ
UEMgdHlwZSBjb252ZXJzaW9ucyIpCisgICAgICAgIGZvciAoYSwgYiksIGNvbnZlcnRlciBpbiB3
ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIHByaW50KGYi
ICAgIHtzdHIoYSl9IC0+IHtzdHIoYil9IDoge2NvbnZlcnRlci5fX25hbWVfX30iKQorICAgICAg
ICBwcmludCgiRG9uZS4iKQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFp
bl9fIjoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDhiOTM4ZmExMWY4MTVkMzdlZTgw
Mzc3ZmQ2NGIwYmM3M2RjODE0MC4uNzYxNmE3YjcwMTFjZGQxZmY3Yjk4NmY2ZDIzMmIxMzE0OTZi
Y2U5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5p
bmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAg
ICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4K
KworICAgICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGUgbWlzc2luZyBmdW5jdGlv
bmFsaXR5LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxlIHRoZSB0ZXN0cyB0aGF0IGFjdHVh
bGx5IHBhc3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBiZWZvcmUgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAyMC0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIHJlYWRhYmxlL3dyaXRhYmxlIHRvIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmEx
YjI2Nzg3MzE4NTMwNTgwMDMzOTBmZDc1MzdkYzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBh
MmQ0NjcyNjNjNzA4Yzk0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zCkBAIC0zMTcsNiArMzE3LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3Rl
LXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rl
c3RzL3dlYmdsIFsgU2tpcCBdCiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBT
a2lwIF0KIAord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJE
LW1zZS1mbGlwWS1mYWxzZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3Qv
Y2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNw
bGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0
L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsg
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRp
cGx5YWxwaGEtdGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3Qv
Y2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVy
ZSBdCisKIHdlYmdwdSBbIFNraXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNv
bnRyb2wtdHlwZXMuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415135</attachid>
            <date>2020-12-01 08:17:46 -0800</date>
            <delta_ts>2020-12-02 03:10:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201201181744.patch</filename>
            <type>text/plain</type>
            <size>582305</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3MzY1MGRlOTkxNmRj
YjNmZmE1YjlmMWEyYzUyNGZmOTYzZjlhYi4uMTZiNzQ5YzgwZTdhOWQ1OTE0NTgwYzhlODBkNTAy
MmU0MTJhMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTExLTMwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcwMTg1KSBb
R1RLXSBTb21lIHdlYmdsIGZhaWx1cmVzIGFmdGVyIG11bHRpdmFsdWUgc2V0dGVyIHJlZmFjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3MjljMzE3MzdmZWJlYTQzN2Q5NjRlMmVkNzdjODc4YmFjOWZhZWYuLjgz
MTY3N2VlMWE1ZDY3NTRjZjUwNmY1ODg1YjJkNDY5ZjIwMmMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24g
b2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQg
d2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBk
dXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1p
dHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJLaXQgc2lkZS4gVGhpcyBjbGFzcyB3
aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQgdmlhIElQQyB0byB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBtb21lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQgb2YKKyAgICAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9y
dCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5jZXMuIFRoaXMKKyAgICAgICAgaXMg
bmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3VjaCBhcyBHTGZsb2F0IGFycmF5cyBk
aXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBzdG9yZSB3aXRob3V0IGFuIGV4dHJh
IGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBDIHRvIHN1cHBvcnQgcGFzc2luZyBk
YXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJlZmVyZW5jZSBvciBBcnJheVJlZmVy
ZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4gdmFsdWUuCisgICAgICAgIFRoZSBj
YWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5jU2VuZCgpIHJlc3VsdCAoRGVjb2Rl
ciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9uIG9mIHVzaW5nIHRoZSBkYXRhIHZh
bHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBsZW1lbnRlZCBvbmx5IGZvciBQTEFU
Rk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNv
bnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4dCBjaGFuZ2UKKyAgICAgICAg
IC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFzCisgICAgICAgICAtIFVwbG9hZCB2
aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2FudmFzIHRvIFdlYkdMCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXNlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGV0YWNoQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2sp
OgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAobW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoYXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChiaW5k
QnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAgICAgICAgKGJsZW5kQ29sb3IpOgor
ICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJsZW5kRnVuY1NlcGFyYXRlKToKKyAg
ICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoY2xlYXIpOgorICAgICAg
ICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRoKToKKyAgICAgICAgKGNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAgICAoY29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVhdGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
Y3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZGVsZXRlUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6CisgICAgICAgIChkZWxldGVUZXh0dXJl
KToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChkZXB0aE1hc2spOgorICAgICAgICAo
ZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIpOgorICAgICAgICAoZGlzYWJsZSk6
CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZHJhd0FycmF5
cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAgICAoZW5hYmxlKToKKyAgICAgICAg
KGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGZpbmlzaCk6CisgICAgICAgIChm
bHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChmcmFt
ZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZhY2UpOgorICAgICAgICAoZ2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoZ2V0QnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcpOgorICAgICAgICAoZ2V0RmxvYXR2
KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAgKGdldEludGVnZXI2NCk6CisgICAg
ICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFByb2dyYW1pKToKKyAgICAgICAgKGdl
dEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAgICAgICAgKGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJpKToK
KyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoZ2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChnZXRUZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAgICAgIChnZXRVbmlmb3JtdWl2KToK
KyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChpc0J1ZmZlcik6CisgICAgICAgIChp
c0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpc1Byb2dyYW0p
OgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoaXNTaGFkZXIpOgorICAgICAg
ICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6CisgICAgICAgIChsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAgIChwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoc2FtcGxlQ292ZXJhZ2UpOgor
ICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJTb3VyY2UpOgorICAgICAgICAoc3Rl
bmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChzdGVu
Y2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5j
aWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgICh0ZXhQYXJhbWV0
ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAgICAgICAodW5pZm9ybTFmKToKKyAg
ICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9ybTFpKToKKyAgICAgICAgKHVuaWZv
cm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAgICAgKHVuaWZvcm0yZnYpOgorICAg
ICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0yaXYpOgorICAgICAgICAodW5pZm9y
bTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAgICAodW5pZm9ybTNpKToKKyAgICAg
ICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRmKToKKyAgICAgICAgKHVuaWZvcm00
ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAgKHVuaWZvcm00aXYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNlUHJvZ3JhbSk6CisgICAgICAgICh2
YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0cmliMWYpOgorICAgICAgICAodmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKHZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYpOgorICAgICAgICAodmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAodmlld3Bv
cnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAgICAoYnVmZmVyRGF0YTEpOgorICAg
ICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFkblBpeGVsczApOgorICAgICAgICAo
cmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQwKToKKyAgICAgICAgKHRleEltYWdl
MkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQx
KToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2Vk
VGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFu
Y2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGRl
bGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4QXJyYXkpOgorICAgICAgICAoYmlu
ZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdl
dEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGludmFsaWRhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAocmVhZEJ1ZmZl
cik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAo
dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2UzRCk6CisgICAgICAgICh0ZXhJbWFn
ZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMCk6
CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChjb3B5VGV4U3ViSW1hZ2UzRCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRl
eEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCk6CisgICAgICAg
IChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoZ2V0RnJhZ0RhdGFMb2NhdGlv
bik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAgKHVuaWZvcm0ydWkpOgorICAgICAg
ICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVpKToKKyAgICAgICAgKHVuaWZvcm0x
dWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAgICAgKHVuaWZvcm0zdWl2KToKKyAg
ICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4NGZ2KToK
KyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3g0
ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
Ykk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAodmVydGV4QXR0
cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoZHJh
d0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6CisgICAgICAgIChjbGVhckJ1ZmZl
cnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZmkp
OgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAoZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToKKyAgICAgICAgKGVuZFF1ZXJ5KToK
KyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKGlz
U2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6CisgICAgICAgIChzYW1wbGVyUGFyYW1l
dGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChm
ZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAgICAgKGRlbGV0ZVN5bmMpOgorICAg
ICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2FpdFN5bmMpOgorICAgICAgICAoZ2V0
U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgICh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAg
KGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAg
IChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRVbmlmb3JtQmxvY2tJbmRleCk6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAgKHVuaWZvcm1CbG9j
a0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAo
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChibGl0RnJhbWVidWZmZXJBTkdM
RSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAg
ICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAocHVzaEdyb3VwTWFya2VyRVhUKToK
KyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKGRyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5n
dGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjp3cmFw
Rm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNlbmRTeW5jKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJp
bmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENl
cnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2Vy
dGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVBy
b2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2cp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRp
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVy
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3Rp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQXN5bmMgc2Nyb2xsaW5nIHVkcGF0
ZXMgYXJlIGJsb2NrZWQgaW4gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAz
Nzg5YWEzODM5NDBkMjU3NDEyNGJjMmZmNDNlN2VlYzRhZTk1MGQ1Li5jMDcwYmQzNjZmOGZiOWJj
NjU4ZWNkZDVjYzk3YzJiMTZkNWY2ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNDYsNiAr
MTI0Niw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFl
ZDhlYWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgyZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1
ODk3MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCAr
MzExLDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZDFhMzVjYzAwOGFlYTY5ZmZmMmNk
OTFkMDIzMmVmYTA3MWU3ZWQ1NC4uOTgxMTVlMTViNzYzNDk2MWFjMzkwZGIyM2Q1MzBiNzNkMjVk
NTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzIsNiArMTk3Miw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDY2ODc1MmM3OTUyNmJjNmNkMTQzYzJl
ZjY1OTZmMTRjN2IwNzMzZWQuLmJiNGJhZDg3ZGZjYWU0MGI3ZmU0ZDAwYjBmY2UyNDFlZmZiOWQ1
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzU3LDEyICszNTcsMTQgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMjIyZWQ2
Y2MyNGU2ZTY2ODg2MGY3NGNjOWVkZDg0YjNkOWRkYzMwLi45NTMxYjQ5MjcxZDBkNDAxYWQ4MjI3
OTFmODRlZmQ4NjU3ZDY2YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDUyLDcgKzIwNTIsNyBAQAogCQk2RTQ3RTY2MTEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFC
Q0Q1MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFE
MjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEw
MEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgw
RThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lv
bnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0
MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURD
RDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMw
MEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRl
bXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjQ2LDYgKzIyNDYsOCBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDEx
NDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4
MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3
NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkw
NkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDIyMyw5ICsxMDIyNSwxNCBAQAogCQk3
QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0Ix
NjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBD
NzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDgg
LyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFG
M0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3Bw
LmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJF
RjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNGMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5l
cmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjY2MTMsNiArMjY2MjAsOCBAQAogCQkJCTA3NEU4MkI5MThBNjlG
MEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmggKi8sCisJCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKKwkJCQk3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkw
NzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJ
CTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJ
CTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0yNjc3
OSw2ICsyNjc4OCw4IEBACiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKIAkJCQlCNTMyMEQ2QTEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0Mw
MDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKKwkJCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
LAorCQkJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4
NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLApAQCAtMjY3OTAsNiArMjY4MDEsNyBA
QAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3Bl
bkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLAogCQkJCUNERUIz
RDcyMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovLAogCQkJCUNE
RUIzRDczMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCAqLywKIAkJCQlD
RDhGNjY3MDI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8s
CkBAIC0zMjA4OSw2ICszMjEwMSw3IEBACiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcy
MUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQw
MDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQw
MjUsNiArMzQwMzgsNyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQw
MEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlB
MjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5
MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3Rl
UGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAv
KiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCAxZGJkMDU1ZDc4MTUzY2ZkNWM3MTc0NTk3ZjA2ZTBlNTA5
ZTc4ZmFhLi4yZjhjYmYwODcwNTBjNWYwODY4MGYyZWQ5N2QxZjMwODg2NjFhMDExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtNjc3LDIxICs2NzcsMTIgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJn
ZXRCdWZmZXJTdWJEYXRhIiwgIlBhcmFtZXRlcnMgd291bGQgcmVhZCBvdXRzaWRlIHRoZSBib3Vu
ZHMgb2YgdGhlIHNvdXJjZSBidWZmZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAK
KwogICAgIGlmICghY29weUxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0
LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAvLyBGSVhNRTogQ29hbGVzY2UgbXVsdGlwbGUgZ2V0QnVmZmVyU3ViRGF0YSgpIGNhbGxz
IHRvIHVzZSBhIHNpbmdsZSBtYXAoKSBjYWxsCi0gICAgdm9pZCogcHRyID0gbV9jb250ZXh0LT5t
YXBCdWZmZXJSYW5nZSh0YXJnZXQsIGNoZWNrZWRTcmNCeXRlT2Zmc2V0LnVuc2FmZUdldCgpLCBz
dGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGNoZWNrZWRDb3B5TGVuZ3RoUHRyLnVuc2FmZUdldCgp
ICogY2hlY2tlZEVsZW1lbnRTaXplLnVuc2FmZUdldCgpKSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1B
UF9SRUFEX0JJVCk7Ci0gICAgaWYgKHB0cikKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNo
YXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQoKSArIGRz
dE9mZnNldCAqIGVsZW1lbnRTaXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6ZSk7Ci0K
LSAgICBpZiAoIW1fY29udGV4dC0+dW5tYXBCdWZmZXIodGFyZ2V0KSkKLSAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0QnVm
ZmVyU3ViRGF0YSIsICJGYWlsZWQgd2hpbGUgdW5tYXBwaW5nIGJ1ZmZlciIpOwotI2VuZGlmCi0g
ICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBtX2Nv
bnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzcmNCeXRlT2Zmc2V0LCBtYWtlR0NHTFNw
YW4oc3RhdGljX2Nhc3Q8Y2hhcio+KGRzdERhdGEtPmJhc2VBZGRyZXNzKCkpICsgZHN0RGF0YS0+
Ynl0ZU9mZnNldCgpICsgZHN0T2Zmc2V0ICogZWxlbWVudFNpemUsIGNvcHlMZW5ndGggKiBlbGVt
ZW50U2l6ZSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlcikKQEAgLTE3MDIs
NyArMTY5Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1
aXYoR0NHTHVpbnQgaW5kZXgsIFVpbnQzMkxpc3QmJiBsaXN0CiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSTR1
aXYiLCAibm8gYXJyYXkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlu
dCBzaXplID0gbGlzdC5sZW5ndGgoKTsKICAgICBpZiAoc2l6ZSA8IDQpIHsKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0ZXhB
dHRyaWJJNHVpdiIsICJhcnJheSB0b28gc21hbGwiKTsKQEAgLTE5NjcsOSArMTk1OCw3IEBAIFdl
YkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVyKFdlYkdMUXVl
cnkmIHF1ZXJ5LCBHQ0dMZW51bSBwCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVp
dihxdWVyeS5vYmplY3QoKSwgcG5hbWUsICZyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0
dWkocXVlcnkub2JqZWN0KCksIHBuYW1lKSk7CiB9CiAKIFJlZlB0cjxXZWJHTFNhbXBsZXI+IFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjAxNCw3ICsyMDAzLDcg
QEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0
LCBXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAodW5pdCA+PSBtX2JvdW5kU2Ft
cGxlcnMuc2l6ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX1ZBTFVFLCAiYmluZFNhbXBsZXIiLCAiaW52YWxpZCB0ZXh0dXJlIHVuaXQi
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1OSwxNyArMjA0OCwxMSBAQCBXZWJHTEFueSBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyKFdlYkdMU2FtcGxlciYgc2Ft
cGxlciwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRF
UjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUjoKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUzoKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX1dSQVBfVDogewotICAgICAgICBpbnQgdmFsdWUgPSAwOwotICAgICAg
ICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLm9iamVjdCgpLCBwbmFt
ZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+
Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDoKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6IHsKLSAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwotICAg
ICAgICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyLm9iamVjdCgpLCBw
bmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6CisgICAgICAgIHJldHVybiBtX2NvbnRl
eHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIub2JqZWN0KCksIHBuYW1lKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9FTlVNLCAiZ2V0U2FtcGxlclBhcmFtZXRlciIsICJJbnZhbGlkIHBuYW1lIik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjExOCw3ICsyMTAxLDcgQEAgR0NHTGVudW0gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMoV2ViR0xTeW5jJiBzeW5jLCBHQ0dMYml0
ZmllbGQgZmwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfT1BFUkFUSU9OLCAiY2xpZW50V2FpdFN5bmMiLCAidGltZW91dCA+IE1BWF9DTElFTlRf
V0FJVF9USU1FT1VUX1dFQkdMIik7CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6
V0FJVF9GQUlMRURfV0VCR0w7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGZsYWdzICYmIGZsYWdz
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImNs
aWVudFdhaXRTeW5jIiwgImludmFsaWQgZmxhZ3MiKTsKICAgICAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dEdMOjpXQUlUX0ZBSUxFRF9XRUJHTDsKQEAgLTIxNzksOSArMjE2Miw5IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjayogZmVlCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICFmZWVkYmFja09iamVjdCB8fCBmZWVkYmFja09iamVjdC0+aXNEZWxldGVkKCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tPYmplY3Qp
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQoZmVlZGJhY2tPYmplY3QgIT0g
bV9kZWZhdWx0VHJhbnNmb3JtRmVlZGJhY2spOwotICAgIAorCiAgICAgaWYgKGZlZWRiYWNrT2Jq
ZWN0LT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgImF0
dGVtcHQgdG8gZGVsZXRlIGFuIGFjdGl2ZSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0Iik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTIyNDgsNyArMjIzMSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIGlmICghVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ByaW1pdGl2ZU1vZGUocHJp
bWl0aXZlTW9kZSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImJlZ2luVHJhbnNmb3JtRmVlZGJhY2siLCAiaW52YWxpZCB0cmFu
c2Zvcm0gZmVlZGJhY2sgcHJpbWl0aXZlIG1vZGUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjI4
OCw3ICsyMjcxLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1G
ZWVkYmFjaygpCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX09QRVJBVElPTiwgImVuZFRyYW5zZm9ybUZlZWRiYWNrIiwgInRyYW5zZm9ybSBmZWVk
YmFjayBpcyBub3QgYWN0aXZlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAg
ICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CiAKICAgICBtX2JvdW5kVHJhbnNm
b3JtRmVlZGJhY2stPnNldFBhdXNlZChmYWxzZSk7CkBAIC0yMjk5LDcgKzIyODIsNyBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoV2ViR0xQ
cm9ncmFtJiBwcm9ncmFtLCBjbwogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3MiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHN3aXRjaCAoYnVm
ZmVyTW9kZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNFUEFSQVRFX0FUVFJJQlM6
CiAgICAgICAgIGlmICh2YXJ5aW5ncy5zaXplKCkgPiBtX21heFRyYW5zZm9ybUZlZWRiYWNrU2Vw
YXJhdGVBdHRyaWJzKSB7CkBAIC0yNDg1LDI0ICsyNDY4LDI0IEBAIFdlYkdMQW55IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwg
Y29uc3QKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdM
UHJvZ3JhbU9yU2hhZGVyKCJnZXRBY3RpdmVVbmlmb3JtcyIsICZwcm9ncmFtKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRp
Y2VzLnNpemUoKSwgMCk7Ci0gICAgCiAgICAgc3dpdGNoIChwbmFtZSkgewotICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fVFlQRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRBY3Rp
dmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUsIHJlc3Vs
dCk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9UWVBFOiB7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVj
dCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcChb
XShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xlbnVtPih4KTsgfSk7Ci0gICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9TSVpFOgotICAgICAgICBtX2NvbnRleHQtPmdl
dEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwg
cmVzdWx0KTsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9TSVpF
OiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhw
cm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4g
cmVzdWx0Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0x1aW50Pih4KTsg
fSk7CisgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQkxPQ0tfSU5E
RVg6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9PRkZTRVQ6CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9BUlJBWV9TVFJJREU6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9NQVRSSVhfU1RSSURFOgotICAgICAgICBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKLSAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lTX1JPV19NQUpPUjoKLSAgICAgICAgbV9jb250ZXh0
LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5h
bWUsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1z
KHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6IHsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZv
cm1JbmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeCk7IH0pOworICAgIH0KICAgICBkZWZhdWx0Ogog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVN
LCAiZ2V0QWN0aXZlVW5pZm9ybXMiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTM1NzIsOCArMzU1NSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHCiAKICAgICBjbGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKIAotICAg
IEdDR0xzaXplaSBsZW5ndGgsIGNvbHVtbnMsIHJvd3M7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkucmVhZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIDAsICZsZW5ndGgsICZjb2x1bW5zLCAmcm93cywgcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4ob2Zmc2V0KSwgdHJ1ZSk7CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG9mZnNldCk7CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEFycmF5QnVmZmVyVmlldyYgZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAppbmRleCAyZTAzYTg5ZmM2OTUzZDIwMDA4MmYyNDk1NDk3NjNiZTA1YTk2MTk1Li43
ODQ0YWRlMzMyYjE0YzJjMDJjYmIyNGYyMjM2ZjdkYWY1ZTcyMGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cApAQCAtNzMyLDggKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgICAgIHJl
bmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gcmVuZGVy
aW5nQ29udGV4dDsKICAgICB9Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpOworICAgIGF1dG8gY29udGV4
dCA9IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdyk7CiAg
ICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNFbGVtZW50KSB7CiAgICAgICAg
ICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVudCwKQEAgLTQzOTUs
MTUgKzQzOTQsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB2b2lkKiBkYXRhID0g
cGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0gICAgR0NHTHNpemVpIGxl
bmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwotICAgIEdDR0xzaXplaSByb3dz
ID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVzdEFO
R0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgo
KSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7CisgICAgbV9jb250ZXh0
LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dM
U3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmIChtX2lzUm9i
dXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
cmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMu
Ynl0ZUxlbmd0aCgpLCBkYXRhKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29udGV4dC0+cmVhZFBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICBt
X2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
bWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVuZ3RoKCkpKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAppbmRleCA0YTQyMGJmMGExMTZj
Y2NhYjVkYjg3YTI2ZDhiYTI0MjgyOGYyZDU1Li44OWE2M2UzNjIxNzEyMjRiNDEzYTQ5NTQyMzEy
ZTM4MzZiNmViYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBXZWJHTFN5bmM6OnVwZGF0ZUNhY2hlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYWxsb3dD
YWNoZVVwZGF0ZSA9IGZhbHNlOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
U3luY2l2KG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTLCBzaXplb2YobV9z
eW5jU3RhdHVzKSwgJm1fc3luY1N0YXR1cyk7CisgICAgbV9zeW5jU3RhdHVzID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaShtX3N5bmMsIEdyYXBoaWNzQ29udGV4dEdMOjpT
WU5DX1NUQVRVUyk7CiAgICAgaWYgKG1fc3luY1N0YXR1cyA9PSBHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdOQUxFRCkKICAgICAgICAgc2NoZWR1bGVBbGxvd0NhY2hlVXBkYXRlKGNvbnRleHQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDRkYWEzNGNjMmQ1ZDA3OTYyZWUxYTYxYzgyNTNi
ZWI2YTk0NjU0NmMuLmMyYTY5Yjg2YmMzMTgxNjdhMzMyY2ZmZjZkZWFmNGNmOGIyOWYzNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUzMCw2ICs1MzAsMTMgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW8KICAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IENocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5jcmVh
dGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBkaXNwbGF5SUQoKSk7Cit9CisjZW5kaWYK
KwogUGxhdGZvcm1EaXNwbGF5SUQgQ2hyb21lOjpkaXNwbGF5SUQoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BhZ2UuZGlzcGxheUlEKCk7CkBAIC01NDMsNiArNTUwLDcgQEAgdm9pZCBDaHJvbWU6
OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9wdGlv
bmFsPHVuc2lnbmUKICAgICBtX3BhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwg
bm9taW5hbEZyYW1lSW50ZXJ2YWwpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoR1JB
UEhJQ1NfQ09OVEVYVF9HTCkKKyAgICAvLyBUT0RPOiBHUFUgcHJvY2Vzcy4gQ2hhbmdlIHRvIEdD
R0xNYW5hZ2VyLCBtYWtlIGl0IHdvcmssIHJldHVybiBudWxsIGZvciBvdGhlcnMuCiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NyZWVuRGlkQ2hh
bmdlKGRpc3BsYXlJRCwgdGhpcyk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDIz
MzI4ZjU2YTE5MTIwNDlkNDc5NzY0MWQwMTQwMDU1MTU5MDM1MDIuLmE4OWRkMWExZDg2NWU1MzI4
ZWIwNTA1NzY1NDBkM2YyMzJhM2NmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtODYsNiArODYs
MTAgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlk
ZTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYp
IGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggM2E5ZTFkNjY5MDk3ZTU5NWQ5YjU3ZmM0Y2ZmN2U2MWE1
ZDE4ZDBhOS4uOGYxOGZkZmYwNDk5MDM3NTg5OGIxN2I5MjhjYzBlMDYwMGU5MWM3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMjUsNiArMzI1LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAorI2lmIEVOQUJM
RShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgor
CiAgICAgLy8gUGFzcyBudWxscHRyIGFzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRldGF0Y2ggdGhl
IHJvb3QgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZy
YW1lJiwgR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVmlld092
ZXJsYXlHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKaW5kZXggNDNkYjFmZmFlMDEyYmIyMTg5NGYyY2E5NjMwNzIxNDc2NmFh
ZGQ5ZS4uNzM4MTE4YjIxZTNjMzM3YjJlNTMxYzk5NmQwOTliZDNlOWE1NjliMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSAiV2lkZ2V0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYzLDYgKzY0LDEwIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0ID0g
MDsKKyNlbmRpZgorCiAgICAgLy8gTWV0aG9kIGZvciByZXRyaWV2aW5nIHRoZSBuYXRpdmUgY2xp
ZW50IG9mIHRoZSBwYWdlLgogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3Jt
UGFnZUNsaWVudCgpIGNvbnN0ID0gMDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKaW5kZXggYTIyNTNjODFiZmUwYTBiYjA5
MTBiZGU2YzBkYjI2YWE3ODQ1MmZiMy4uN2FmYmE2ZWM1MDg4MTljYzFlYWJhZGNjZGUwYmI3OWE4
Mzg0MmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmgKQEAgLTM0LDEzICszNCwxNiBAQCBXRUJDT1JFX0VYUE9SVCBpbnQgcHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAKICNpZiBQTEFURk9STShXSU4pCiBpbmxpbmUgYm9v
bCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc0luR1BV
UHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZWxpZiAhUExBVEZPUk0oQ09DT0EpCiBpbmxp
bmUgYm9vbCBpc0luV2ViUHJvY2VzcygpIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBib29sIGlz
SW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAKIGJvb2wgaXNJbldlYlByb2Nlc3MoKTsKK2Jvb2wgaXNJbkdQVVByb2Nlc3MoKTsK
IGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNzKCk7CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3NDb2NvYS5tbQppbmRleCBmYmQxZDQzYzA4Zjg2ZGMzYzE4ZWQyMTU2MGYwOGNmODdmYTFhZjM5
Li5iMDZmZjQ3ZGZjNTQxNzIxZjY0YWEwZGUzOGIzYjkyZjg4MzgyNDZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3NDb2NvYS5tbQpAQCAtOTYsNiArOTYsMTIgQEAgYm9vbCBpc0luV2ViUHJvY2Vzcygp
CiAgICAgcmV0dXJuIG1haW5CdW5kbGVJc1dlYlByb2Nlc3M7CiB9CiAKK2Jvb2wgaXNJbkdQVVBy
b2Nlc3MoKQoreworICAgIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc0dQVVByb2Nlc3MgPSBbW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBoYXNQcmVmaXg6QCJjb20uYXBw
bGUuV2ViS2l0LkdQVSJdOworICAgIHJldHVybiBtYWluQnVuZGxlSXNHUFVQcm9jZXNzOworfQor
CiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgc3RhdGljIGJvb2wgbWFpbkJ1bmRs
ZUlzTmV0d29ya1Byb2Nlc3MgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSBoYXNQcmVmaXg6QCJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmciXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMjYyN2E5
YjdmNDQ2NTEwY2RjMDM0MWRiODY3MzQ0NzQ5NTE0N2I4OC4uNDFhZGQ3MzhkZGVhMjIyNDZkMGI5
YjA2Nzc5MzQ1ZGQ2MDk5ZGMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI2Nyw3ICsyNjcsMTAgQEAgcHVibGljOgogICAgIC8v
IEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOwogCi0gICAgLy8gV2ViR0wgZnVu
Y3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgorICAgIC8v
IEdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFID0gMHg5M0E4OworCisgICAgLy8gV2ViR0wg
ZnVuY3Rpb25zLgogCiAgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKICAgICAvLyBOb3RlOiBUaGlz
IG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZlcnMgZnJvbSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKQEAg
LTI3OSwxMCArMjgyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2Js
aXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3Jj
WTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcg
ZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0
ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBs
ZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpID0gMDsKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgdmlydHVh
bCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwpAQCAtMjk2LDE1
ICsyOTksMTUgQEAgcHVibGljOgogICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHBvcEdyb3VwTWFya2VyRVhUKCkgPSAwOwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAv
IEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291
bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwg
R0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBHTF9BTkdM
RV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0
QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBH
Q0dMdm9pZCogcGl4ZWxzKSA9IDA7CkBAIC0zMzIsNyArMzM1LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wg
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CkBA
IC0zNTUsNyArMzU3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VY
VChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
dm9pZCogZGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxv
YXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
KiBwYXJhbXMpID0gMDsKLSNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKQEAgLTM2Nyw2ICszNjgsNyBAQCBwdWJs
aWM6CiAgICAgLy8gdGhhdCBtdXN0IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQg
dGhlc2UgZmxhZ3Mgb24gc3VjaCBjb25maWd1cmF0aW9ucy4KICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKKyNlbmRpZgogCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5jcHAKaW5kZXggZGY0YTExOWEzMjBkYWM2YWViNjMwNmQ0YzUwOTU1MTU4OGExOTcz
ZS4uMzRkNTU2YjBjYzRhOWJiMWFlYTdhNWE5NjhiYzY5NWIzYTJlMjc4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNw
cApAQCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgi
CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIAogI2luY2x1ZGUgIkV4dGVuc2lv
bnNHTC5oIgogI2luY2x1ZGUgIkZvcm1hdENvbnZlcnRlci5oIgorI2luY2x1ZGUgIkhvc3RXaW5k
b3cuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTQwMyw2ICs0MDUsMTUgQEAgc3RhdGljIGJvb2wgcGFj
a1BpeGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLCBHcmFwaGljc0NvbnRleHRHTDo6RGF0
YUZvcm1hdAogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTD4gcmVzdWx0OworICAgIGlmIChob3N0V2luZG93KQorICAgICAgICBy
ZXN1bHQgPSBob3N0V2luZG93LT5jcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQogCiBHcmFwaGljc0NvbnRleHRHTDo6R3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dHJzLCBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250
ZXh0R0wqKQogICAgIDogbV9hdHRycyhhdHRycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGM4ZTI3OWYzOTNiNmNh
ODEyM2ZjZWVmN2M4OWIxMjVjNTJkYzZlZjMuLmJhNzJiMzFhZDY1ODViNGE5YmI1ZDZhZGVmYzFi
ZjEzZGY1ZjNiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTksNiArNTksOCBAQCBjbGFzcyBJbWFnZURhdGE7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWOwogI2VuZGlmCiAKKworLy8gQmFzZSBjbGFzcyBm
b3IgZ3JhcGhpY3MgY29udGV4dCBmb3IgaW1wbGVtZW50aW5nIFdlYkdMIHJlbmRlcmluZyBtb2Rl
bC4KIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3ND
b250ZXh0R0w+IHsKIHB1YmxpYzoKICAgICAvLyBXZWJHTCAxIGNvbnN0YW50cy4KQEAgLTkxMSwx
NCArOTEzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgR0NHTGludCBzaXplOwogICAgIH07CiAKKyAg
ICAvLyBDcmVhdGVzIGEgR3JhcGhpY3NDb250ZXh0R0wgaW5zdGFuY2UgdG8gcmVuZGVyIGludG8g
b2Zmc2NyZWVuIGRlc3RpbmF0aW9uIGluIGNvbnRleHQgb2YgSG9zdFdpbmRvdy4KKyAgICAvLyBI
b3N0V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFja2VuZCBpcyB0byBi
ZSB1c2VkLgorICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBIb3N0V2luZG93Kik7CisKICAgICBHcmFw
aGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIERlc3RpbmF0aW9uID0g
RGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0wqIHNoYXJlZENvbnRleHQg
PSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTCgpID0gZGVmYXVsdDsK
IAogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5hZGQoJmNs
aWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVu
dHMucmVtb3ZlKCZjbGllbnQpOyB9CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0
IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCi0KKyAgICAvLyBXZWJHTCBmdW5jdGlv
bnMuCiAgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kQXR0
cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOwpAQCAtOTgwLDcgKzk4NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlVW5pZm9y
bShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3Jt
R0xPYmplY3QqIHNoYWRlcnMpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIApAQCAt
MTAyNSwxMCArMTAyOSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRVbmlm
b3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAK
LSAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpID0gMDsKLQogICAg
IHZpcnR1YWwgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBoaW50KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gbW9kZSkgPSAwOwpAQCAtMTEwMCw3ICsxMTAwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWQqIGRhdGEpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsICBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkgPSAwOwpAQCAtMTEyNCw4ICsxMTI1LDcgQEAgcHVibGljOgogICAgIC8vID09PT09
PT09PT0gV2ViR0wgMiBlbnRyeSBwb2ludHMuCiAKICAgICB2aXJ0dWFsIHZvaWQgY29weUJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xp
bnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNp
emUpID0gMDsKLSAgICB2aXJ0dWFsIEdDR0x2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0Zmll
bGQgYWNjZXNzKSA9IDA7Ci0gICAgdmlydHVhbCBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7
CkBAIC0xMTg3LDcgKzExODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuZFF1ZXJ5
KEdDR0xlbnVtIHRhcmdldCkgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBnZXRR
dWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAgICAgLy8gZ2V0UXVl
cnlQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgPSAwOworICAg
IHZpcnR1YWwgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5
LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVNhbXBsZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7CkBAIC0xMTk2LDggKzExOTYsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGZsb2F0IHBhcmFtKSA9IDA7CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAg
IHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBn
ZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwg
R0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdz
KSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMpID0gMDsKQEAg
LTEyMDUsNyArMTIwNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGNsaWVudFdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZs
YWdzLCBHQ0dMaW50NjQgdGltZW91dCkgPSAwOwogICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U3luY2l2KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdl
dFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSA9IDA7CkBA
IC0xMjIyLDcgKzEyMjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXJS
YW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1
ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSA9IDA7CiAgICAgLy8g
Z2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1c2UgZ2V0UGFyYW1ldGVyIGNhbGxzIGFib3ZlLgogICAg
IHZpcnR1YWwgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUs
IFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8R0NHTGlu
dD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0
b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAg
IHZpcnR1YWwgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpID0gMDsKICAgICAvLyBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKQEAgLTEyMzAsNyArMTIzMCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tC
aW5kaW5nKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpID0gMDsKLQorICAgIAogICAgIC8vIE90aGVy
IGZ1bmN0aW9ucy4KICAgICBHQ0dMZmxvYXQgZ2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpOwogICAg
IEdDR0xib29sZWFuIGdldEJvb2xlYW4oR0NHTGVudW0gcG5hbWUpOwpAQCAtMTM5NCw3ICsxMzk0
LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6OmdldEFjdGl2ZVVuaWZvcm1C
bG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1cm4gdmFsdWVbMF07CiB9CiAK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKaW5kZXggODVjMjlhNGI2ZTU2
MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3NjhlY2M0YmYwMmI3NjI1YTZm
MWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQgR0NHTHVpbnQ7CiB0eXBlZGVm
IGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0NHTGhhbGZmbG9hdDsK
IHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKKwor
Ly8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0Y2ggdGhlIEdMIHR5cGVzIGFz
IGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZpbGUgZm9yIGFsbCBwbGF0Zm9y
bXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBlZGVmIGludHB0cl90IEdDR0xz
aXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVkZWYgaW50cHRyX3QgR0NHTHZv
aWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdDR0xzeW5jOwot
dHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmpl
Y3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmpl
Y3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4K
K2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW47CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0IEdDR0xTcGFuIHsKLSAgICBl
eHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJh
eSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0YShhcnJheSkKLSAgICB7IH0K
KyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAg
IH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAgICAgICAgIDogZGF0YShhcnJh
eSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBHQ0dMU3BhbiB7CiAgICAgR0NH
TFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0g
bnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAgICAgeyB9CisgICAgR0NHTFNw
YW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRh
dGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6OmFycmF5PFQsIEV4dGVudD4m
IGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQogICAgIFQmIG9w
ZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBpIDwgYnVmU2l6ZSk7
IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkgeyBSRUxFQVNFX0FTU0VSVChk
YXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBUKiBkYXRhOwpAQCAtNzksNyAr
OTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0
cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7Citz
dHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50PiB7CiAgICAgR0NHTFNwYW4o
VCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgICAg
ICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDExIEBAIHN0cnVjdCBHQ0dMU3Bh
bjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkKICAgICAgICAgLCBidWZT
aXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9y
PFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkp
CisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXplb2YoVSkpCisgICAgeyB9CiAg
ICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1ZlNpemU7CiB9OwpAQCAtMTUy
LDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQs
IE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAt
PiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorR0NHTFNwYW4o
c3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihXVEY6OlZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIEdD
R0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U1NjBiOTYwNGFmYmE1
MTI2MDA4YzllYTA1Yjg3ZjUxOTYxZDYxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNw
cApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0
cnMpCit7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSA9IGRl
ZmF1bHQ7CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAoreworICAgIHJl
dHVybiAwOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitF
eHRlbnNpb25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNp
b25zKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJldHVy
biB7IH07Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xF
UzJDb21wbGlhbnQoKSBjb25zdAoreworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLmlz
V2ViR0wyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJr
Q29udGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFj
ayB0aGlzIHN0YXRlLgorICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90aWZ5
TWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0xheWVyQ29tcG9z
aXRlZCgpCit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVm
ZmVyKSB7CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6
OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAg
IG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJf
QklUOworICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1Rv
QXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAg
fQorICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAg
ICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bGF5ZXJDb21wb3NpdGVkOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7CisgICAg
aWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAgICAg
bV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOworfQorCitib29sIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKK3sK
KyAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhNRTogVGhl
IHdob2xlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29udGV4dEdM
OjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1l
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5h
YmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5h
YmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChuYW1lKTsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7Cisg
ICAgfQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJs
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7Cisg
ICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJs
ZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAg
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8mIGV4
dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX3Jl
cXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30KKworI2lmICFQTEFURk9STShD
T0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5p
dGlhbGl6ZSgpCit7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKyNlbmRpZgorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRjZThhMDkxNGQ4ZThlMjllMmQyODMxMjUwNGM0ZWIzMjBiMTE5YzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJFeHRl
bnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBXZWJHTExheWVyOworI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47CisjZW5kaWYKKworLy8gQSBiYXNlIGNsYXNzIGZvciBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCisvLyBUaGlz
IGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwgZnVu
Y3Rpb25hbGl0eToKKy8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4KKy8v
IC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJsaWMg
RXh0ZW5zaW9uc0dMIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0NvbnRl
eHRHTDo6aXNFbmFibGVkOworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgcGxh
dGZvcm1UZXh0dXJlKCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOworICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZp
bmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0
aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmlu
YWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVy
Q29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFy
KEdDR0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9D
bGVhcigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKEltYWdlQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkg
ZmluYWw7CisgICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKwor
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRl
eHRHTENWKiBhc0NWKCkgZmluYWw7CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBv
dmVycmlkZXMuCisgICAgdXNpbmcgRXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBz
dXBwb3J0cyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmlu
YWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFp
bGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7Cisg
ICAgdmlydHVhbCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0Zm9ybVN3
YXBDaGFpbigpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxp
emUoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93
ZWJHTExheWVyOworI2VuZGlmCisKKyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxp
emVkKCkuCisgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBI
YXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0
cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3aW5nIGJ1ZmZl
ciBjbGVhciB0cmFja2luZyBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4KKyAgICBib29s
IG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1Rv
QXV0b0NsZWFyID0geyAwIH07Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cAppbmRleCAyODNkYTgyYzZhNjAyZWE0YjU1N2M2ODZjZmQ4MjNkMDgxYzU1ZTRhLi43YzE1MWZh
Mjg1MGYzM2MxNDlhOWRjODIyMzgxYjhmY2JkZTljYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwCkBAIC00NiwyOCArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBFeHRlbnNpb25zR0xB
TkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQs
IGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKICAgICA6IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVF
eHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzTlZJ
RElBKGZhbHNlKQotICAgICwgbV9pc0FNRChmYWxzZSkKLSAgICAsIG1faXNJbnRlbChmYWxzZSkK
LSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxzZSkKLSAgICAsIG1fcmVxdWlyZXNCdWlsdEluRnVu
Y3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1U
ZXh0dXJlU2l6ZShmYWxzZSkKICAgICAsIG1fdXNlSW5kZXhlZEdldFN0cmluZyh1c2VJbmRleGVk
R2V0U3RyaW5nKQogewotICAgIC8vIEZJWE1FOiBpZGVhbGx5LCByZW1vdmUgdGhpcyBpbml0aWFs
aXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQotICAgIC8vIHN1YnN1bWVzIHRoZSByZXNwb25zaWJp
bGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdvcmthcm91bmRzLgotICAgIG1fdmVuZG9yID0gU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfVkVORE9S
KSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHZl
bmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0
KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoIm52aWRpYSIpKQotICAg
ICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlu
cygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiYW1kIikpCi0gICAgICAgIG1f
aXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbnRlbCIp
KQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNv
bnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAgICAgICBtX2lzSW1hZ2luYXRpb24gPSB0cnVlOwog
fQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0OwpA
QCAtMTAzLDcgKzgzLDcgQEAgYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6aXNFbmFibGVkKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKLWludCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCitHTGludCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCiB7CiAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjsKIH0KQEAgLTExNCwxMCArOTQsMTEgQEAgU3Ry
aW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxh
dGZvcm1HTE9iamVjdCBzaGFkZXIKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaW50
IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFU
RURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUpOworCiAgICAgaWYgKCFzb3VyY2VMZW5ndGgp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUo
c291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdM
RSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgotICAgIGludCByZXR1cm5lZExlbmd0aCA9IDA7
CisgICAgR0NHTGludCByZXR1cm5lZExlbmd0aCA9IDA7CiAgICAgZ2w6OkdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBu
YW1lLmRhdGEoKSk7CiAgICAgaWYgKCFyZXR1cm5lZExlbmd0aCkKICAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CkBAIC0xNDcsNyArMTI4LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFi
bGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEs
IGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVk
IGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKQogewogICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQ
TEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQpAQCAtMTU2LDcgKzEzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25n
CiAgICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kx
LCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNSw3ICsy
MTYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4gYnVmcykKICAgICBnbDo6RHJhd0J1ZmZlcnNFWFQoYnVmcy5idWZTaXpl
LCBidWZzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNDMsMTUgKzIyNCwxNSBAQCB2b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaQogICAgIGdsOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpk
cmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdD
R0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQpOworICAgIGdsOjpEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZv
aWQqPihvZmZzZXQpLCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzUwLDcgKzMzMSw3IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0KICAgICBnbDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGlu
ZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQx
Miw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kCiAgICAgZ2w6OkdldE11bHRpc2FtcGxlZnZS
b2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC00MzksNyArNDIwLDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGwKICAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1
Niw1NSArNDM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RB
TkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2kKICAgICBnbDo6R2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMg
dm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVu
c2lnbmVkIGNoYXIqIHBpeGVscykKLXsKLSAgICAvLyBXZSBjYW4gYXNzdW1lIHRoaXMgZG9lc24n
dCBvdmVyZmxvdyBiZWNhdXNlIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucwotICAgIC8vIHVzZSBjaGVj
a2VkIGFyaXRobWV0aWMuCi0gICAgaW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHBp
eGVsc1tpICsgM10gPSAyNTU7Ci19Ci0jZW5kaWYKLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVp
ICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQotewot
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUg
ZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5n
IGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVscy4KLSAgICBnbDo6Rmx1
c2goKTsKLSAgICBhdXRvIGF0dHJzID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOwot
ICAgIEdDR0xlbnVtIGZyYW1lYnVmZmVyVGFyZ2V0ID0gbV9jb250ZXh0LT5tX2lzRm9yV2ViR0wy
ID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRH
TDo6RlJBTUVCVUZGRVI7Ci0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBo
aWNzQ29udGV4dEdMU3RhdGUmIHN0YXRlID0gbV9jb250ZXh0LT5tX3N0YXRlOwotICAgIGlmIChh
dHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0
aXNhbXBsZUZCTykgewotICAgICAgICBtX2NvbnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZO
ZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGdsOjpCaW5k
RnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fY29udGV4dC0+bV9mYm8pOwotICAgICAg
ICBnbDo6Rmx1c2goKTsKLSAgICB9Ci0gICAgKHZvaWQpIG1fY29udGV4dC0+bW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMs
IHJvd3MsIGRhdGEpOwotICAgIEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOwotICAgIGlm
IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9t
dWx0aXNhbXBsZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRh
cmdldCwgbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKTsKLQotICAgIGlmIChlcnJvcikgewot
ICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVs
c1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFjZSB0aGlzIGluIHRoZQotICAgICAgICAvLyBz
eW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVs
b3cuCi0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmICghcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhh
ICYmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBo
aWNzQ29udGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdO
RURfQllURSkgJiYgKHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fZmJvIHx8IChh
dHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0
aXNhbXBsZUZCTykpKQotICAgICAgICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwg
aGVpZ2h0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YSkpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0ocmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwotI2VuZGlmCi19Ci0KLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9y
bWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTUxMiw3ICs0NDUsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRu
VW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CkBAIC01MjAsNyArNDUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwK
ICAgICBnbDo6R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5V
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3
NzMxZGZkMjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMuLmNiZjQ5OGJkN2MxYTFhYjlh
YTZiNzBmYjVkMzhhYzRiOTJmYjAzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEg
KzU2LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1
ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25n
IGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25n
IG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVi
dWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBH
Q0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgx
LCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBk
cmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAg
ICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsg
fQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAg
IGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsg
fQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0g
ICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVp
cmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21l
bW9yeQogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAg
LTk3LDcgKzg4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0
YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwpAQCAtMTMwLDE4ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNr
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBtX2NvbnRleHQ7CiAKLSAgICBib29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwot
ICAgIGJvb2wgbV9pc0ludGVsOwotICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wg
bV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNS
ZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOwotCiAgICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRT
dHJpbmcgeyBmYWxzZSB9OwogCi0gICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3Jl
bmRlcmVyOwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmct
cG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJv
b2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJn
bENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKaW5kZXggMTI3YTNiOGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNC4u
MWQ2MDRiNzFkNDgxNGY1OTdjMmMyZmM4OWVkYzk2NDhkYzEzYzc2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTQ0MywzMiArNDQzLDUzIEBAIEV4dGVuc2lvbnNHTCYg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJldHVybiAqbV9l
eHRlbnNpb25zOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNlKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCByZWlu
dGVycHJldF9jYXN0PEdDR0x2b2lkKj4ob2Zmc2V0KSwgdHJ1ZSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVp
KiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdU
b1BpeGVsQnVmZmVyT2JqZWN0KQogewotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZs
dXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxs
IHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBw
aXhlbHMuCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJp
dmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKKyAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNh
bGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBnbDo6Rmx1c2go
KTsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBm
cmFtZWJ1ZmZlclRhcmdldCA9IG1faXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVB
RF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBpZiAo
YXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVG
Qk8pIHsKKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0
R0xTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3Rh
dGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgcmVzb2x2ZU11
bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAg
ICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8pOwogICAg
ICAgICBnbDo6Rmx1c2goKTsKICAgICB9Ci0gICAgZ2w6OlJlYWRQaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYm
IG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCisgICAgbW92ZUVycm9y
c1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVt
bnMsIHJvd3MsIGRhdGEpOworICAgIEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOworICAg
IGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1w
bGVGQk8pCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1f
bXVsdGlzYW1wbGVGQk8pOwogCisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8vIEFOR0xFIGRl
dGVjdGVkIGEgZmFpbHVyZSBkdXJpbmcgdGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0
aW9uLiBTdXJmYWNlIHRoaXMgaW4gdGhlCisgICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0
LCBhbmQgc2tpcCB0aGUgYWxwaGEgY2hhbm5lbCBmaXh1cCBiZWxvdy4KKyAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghYXR0cnMuYWxwaGEgJiYg
KGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9C
WVRFKSAmJiAobV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlhbGlh
cyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCisgICAgaWYg
KCFyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9
PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6
OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAo
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUu
Ym91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pKSkKICAgICAgICAgd2lwZUFscGhhQ2hh
bm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KGRhdGEpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2Jq
ZWN0KTsKICNlbmRpZgogfQogCi0KIC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTENvbW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTg5OCwyMCArOTE5LDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwKICAgICBnbDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YS5i
dWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNp
emVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZ2w6Ok1hcEJ1
ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29s
ZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQp
Ci17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEdMX0ZB
TFNFOwotCi0gICAgcmV0dXJuIGdsOjpVbm1hcEJ1ZmZlcih0YXJnZXQpOworICAgICAgICByZXR1
cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IGdsOjpNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNl
dCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKKyAgICBp
ZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEsIHB0ciwgZGF0
YS5idWZTaXplKTsKKyAgICBpZiAoIWdsOjpVbm1hcEJ1ZmZlcih0YXJnZXQpKQorICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zm
c2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkKQEAgLTEwMDgs
MTQgKzEwMjUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwKICAgICBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBw
bmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1l
KQogeworICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAw
KTsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBnbDo6R2V0
QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1J
bmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkpOworICAgIGdsOjpHZXRBY3RpdmVV
bmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMu
ZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
R0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R0NHTGVudW0gdGFyZ2V0KQpAQCAtMjEwMSwyMiArMjExOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvCiAgICAgcmV0dXJuIGdsOjpHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51
dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVy
dGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
ZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBw
bmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0
dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2
YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMzkyLDEyICsyMzk0LDEzIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKICAg
ICBnbDo6RW5kUXVlcnkodGFyZ2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0UXVlcnlPYmplY3R1aXYoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWlu
dCogcGFyYW1zKQorR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2Jq
ZWN0dWkoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0x1aW50IHZhbHVl
ID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBu
YW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogLy8gVHJh
bnNmb3JtIEZlZWRiYWNrIEZ1bmN0aW9ucwpAQCAtMjgzOSwyMCArMjg0MiwyNCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbgogICAgIGdsOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFt
ZSwgcGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkK
IHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwLmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6
R2V0U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRy
LCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsK
IAotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsK
KyAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUs
IDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBHQ0dMc3luYyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NH
TGJpdGZpZWxkIGZsYWdzKQpAQCAtMjg5NSwxMiArMjkwMiwxNCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3Ms
IEdDR0xpbgogICAgIGdsOjpXYWl0U3luYyhzeW5jLCBmbGFncywgdGltZW91dCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0g
cG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBn
bDo6R2V0U3luY2l2KHN5bmMsIHBuYW1lLCBidWZTaXplLCBudWxscHRyLCB2YWx1ZSk7CisgICAg
Z2w6OkdldFN5bmNpdihzeW5jLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNm
b3JtRmVlZGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MzU5N2Y0NzUzZDBiZWMxZDAyZTdkNWZjZmRj
NjQzYTk4M2M4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAg
LTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVY
VF9HTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46On5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbigpID0gZGVmYXVsdDsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZTg4YzJm
OTliMWNhYTU4MTE3YzczOTExYTUxYjY3ZGRlNjMyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAi
SU9TdXJmYWNlLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIEFuIGludGVyZmFjZSBmb3IgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50
IG9mIGEgMy1idWZmZXJpbmcgc3dhcAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRoZSBp
bXBsZW1lbnRvciB3aWxsIG93biB0aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5Lgor
Ly8gVGhlIGNsaWVudCBtYXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3
aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMg
YmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkK
Ky8vIGJlIGFibGUgdG8gb2J0YWluIHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KKy8v
IEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5n
IGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50IGlz
IGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVl
IHVzaW5nCisvLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZm
ZXIgcmVjeWNsZSBsb2dpYy4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFs
IGNvbnRlbnRzLgorICAgICAgICB2b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIFByb2R1Y2Vy
IHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KKyAgICB9Owor
ICAgIC8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50
cyBidWZmZXIuCisgICAgLy8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJz
aGlwIG9mIHRoZSBjb250ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0
aGUKKyAgICAvLyB0aW1lIG9mIHRoZSBjYWxsLgorICAgIC8vIFJldHVybnMgZWl0aGVyOgorICAg
IC8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCisgICAg
Ly8gLSBCdWZmZXIgd2l0aCBlbXB0eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFu
ZGxlIGlmIHRoZSByZWN5Y2xlZCBidWZmZXIgd2FzIGF2YWlsYWJsZQorICAgIC8vICAgYnV0IHRo
ZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KKyAgICAvLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4K
KyAgICB2aXJ0dWFsIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgPSAwOworCisgICAgLy8gUHJlcGFy
ZXMgdGhlIHRhcmdldCBmb3IgZGlzcGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgorICAgIC8v
IENsaWVudCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2Ug
aW4gdGhlIGBidWZmZXJgLgorICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KEJ1ZmZlcikgPSAwOwor
CisgICAgLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250
ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgorICAgIC8vIFRoZSBpZiBtdWx0aXBsZSBidWZm
ZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2Fs
bGVkIGJlZm9yZSBjYWxsaW5nCisgICAgLy8gdGhpcy4KKyAgICB2aXJ0dWFsIHZvaWQqIGRldGFj
aENsaWVudCgpID0gMDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCAyZTFjNzk5ZTgyODUzYjMyMGI4Y2VkZGQ0YTZmZTVl
NTA0YTlkODljLi43ZDY1MWVkMmM5MmEzMzY0ZDMxMzc1YjE2MzljOTBkNjEyZTdlMzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTIwLDcgKzIwLDcg
QEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbXBvcnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyLmgiCiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04
MSw3ICs4Miw3IEBAIHN0YXRpYyBFR0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAg
ICBFR0xpbnQgbWFqb3JWZXJzaW9uID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsK
ICAgICBFR0xEaXNwbGF5IGRpc3BsYXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZv
bGF0aWxlQ29udGV4dFN1cHBvcnQgPSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3Vs
ZEluaXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3Mo
KSB8fCBpc0luR1BVUHJvY2VzcygpKTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xh
dGlsZUNvbnRleHRTdXBwb3J0KSB7CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5l
ZWQgdG8gc2V0ICJ2b2xhdGlsZSBwbGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAg
ICAgLy8gQVBJcywgc2luY2UgY2xpZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRo
ZSB0aHJlYWQtZ2xvYmFsIGNvbnRleHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0RwogICAgIGlmIChHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5oYXNUb29NYW55Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJl
ZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0
aW9uKSk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRv
cHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxs
cHRyLCBudWxscHRyKSk7CiAKICAgICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3ND
b250ZXh0RwogUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0
KQogewogICAgIGF1dG8gaG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsK
LSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29u
dGV4dC5kZXN0aW5hdGlvbigpLCAmc2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9
IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250
ZXh0QXR0cmlidXRlcygpLCBob3N0V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRk
Q29udGV4dChjb250ZXh0LnB0cigpLCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0
OwogfQogCitSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cnMsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4p
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0
cnMsIG51bGxwdHIsIG51bGxwdHIsIHN3YXBDaGFpbikpOworfQorCiAjaWYgUExBVEZPUk0oTUFD
KSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxy
ZGFyOi8vNTMwNjI3OTQ+LgogCiBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29u
dGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9S
ZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQpAQCAtMjA0LDggKzIxMCw4IEBAIHN0YXRpYyB2
b2lkIHNldEdQVUJ5UmVnaXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVs
Rm9ybWF0T2JqIHBpeGVsCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLUdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdM
OjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJl
ZENvbnRleHQpCi0gICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgZGVzdGluYXRpb24sIHNo
YXJlZENvbnRleHQpCitHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0
V2luZG93LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKKyAgICA6IEdyYXBoaWNzQ29u
dGV4dEdMKGF0dHJzLCBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFyZWRDb250ZXh0KQogewog
ICAgIG1faXNGb3JXZWJHTDIgPSBhdHRycy5pc1dlYkdMMjsKIApAQCAtMjkzLDI2ICsyOTksMjgg
QEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAg
ICAgZ2w6OkVuYWJsZShHcmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlRfRklYRURf
SU5ERVgpOwogCisgICAgVmVjdG9yPEFTQ0lJTGl0ZXJhbCwgND4gcmVxdWlyZWRFeHRlbnNpb25z
OworICAgIGlmIChtX2lzRm9yV2ViR0wyKSB7CisgICAgICAgIC8vIEZvciBXZWJHTCAyLjAgb2Nj
bHVzaW9uIHF1ZXJpZXMgdG8gd29yay4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVu
ZCgiR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIl9zKTsKKyAgICB9CiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVu
c2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7Ci0KICAgICBpZiAoIW5lZWRzRUFHTE9uTWFjKCkpIHsK
LSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZXF1aXJlZEV4dGVuc2lvbnNb
XSA9IHsKLSAgICAgICAgICAgICJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSIsIC8vIEZvciBJ
T1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgotICAgICAgICAgICAgIkdMX0VYVF90ZXh0dXJlX2Zv
cm1hdF9CR1JBODg4OCIsIC8vIEZvciBjcmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJ
T1N1cmZhY2UuCi0gICAgICAgIH07Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBX
VEZfQVJSQVlfTEVOR1RIKHJlcXVpcmVkRXh0ZW5zaW9ucyk7ICsraSkgewotICAgICAgICAgICAg
aWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSkpIHsKLSAgICAg
ICAgICAgICAgICBMT0coV2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCBy
ZXF1aXJlZEV4dGVuc2lvbnNbaV0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCisgICAgICAg
IHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX3RleHR1cmVfcmVjdGFuZ2xlIl9z
KTsKKyAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3VyZmFjZSBmcm9tIGFuIElPU3Vy
ZmFjZS4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX3RleHR1cmVf
Zm9ybWF0X0JHUkE4ODg4Il9zKTsKKyAgICB9CiAKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5z
dXJlRW5hYmxlZChyZXF1aXJlZEV4dGVuc2lvbnNbaV0pOworI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25z
ID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWlyZWRF
eHRlbnNpb25zKSB7CisgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0cyhleHRlbnNpb24p
KSB7CisgICAgICAgICAgICBMT0coV2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4g
JXMiLCBleHRlbnNpb24uY2hhcmFjdGVycygpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQorICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9uKTsKICAgICB9
Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLQogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIGlmIE1BQ0NBVEFMWVNU
IHNob3VsZCB0YWtlIHRoZXNlIHN0ZXBzIGFzIHdlbGwsIGJ1dCB0aGF0CiAgICAgLy8gd291bGQg
cmVxdWlyZSB0aGUgUGxhdGZvcm1TY3JlZW5NYWMgY29kZSB0byBiZSBleHBvc2VkIHRvIENhdGFs
eXN0IHRvby4KQEAgLTMzMSwxMyArMzM5LDE3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAg
ICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKLSAgICAvLyBD
cmVhdGUgdGhlIFdlYkdMTGF5ZXIKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICAgICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRo
RGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFh
dHRycy5hbHBoYV0pOworICAgIGlmIChzd2FwQ2hhaW4pCisgICAgICAgIG1fc3dhcENoYWluID0g
c3dhcENoYWluOworICAgIGVsc2UgeworICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICAgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9j
XSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50
c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CisgICAgICAgICAgICBbbV93ZWJHTExheWVy
IHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwogI2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fc3dh
cENoYWluID0gJlttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKKyAgICB9CiAKICAgICAvLyBDcmVh
dGUgdGhlIHRleHR1cmUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBmcmFtZWJ1ZmZlci4KICAg
ICBHTGVudW0gdGV4dHVyZVRhcmdldCA9IElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKTsKQEAgLTQw
NiwxMyArNDE4LDEyIEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woKQogICAgICAgICBpZiAobV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pCiAgICAg
ICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX3ByZXNlcnZlRHJhd2luZ0J1ZmZl
ckZCTyk7CiAgICAgfQotICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKQorICAgIGlmICht
X2Rpc3BsYXlCdWZmZXJQYnVmZmVyKSB7CiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rp
c3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpOwotICAgIGlmIChtX3dlYkdMTGF5ZXIp
IHsKLSAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1
ZmZlcl07CisgICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNs
ZUJ1ZmZlcigpOwogICAgICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICAg
ICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxl
KTsKLSAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IFttX3dlYkdMTGF5ZXIgZGV0YWNoQ2xp
ZW50XTsKKyAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IG1fc3dhcENoYWluLT5kZXRhY2hD
bGllbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRzSGFuZGxlKQogICAgICAgICAgICAgRUdMX0Rl
c3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgY29udGVudHNIYW5kbGUpOwogICAgIH0KQEAgLTU3
NSwxMSArNTg2LDE2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZygpCiAgICAgICAgIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgPSBFR0xf
Tk9fU1VSRkFDRTsKICAgICB9CiAgICAgLy8gUmVzZXQgdGhlIGZ1dHVyZSByZWN5Y2xlZCBidWZm
ZXIgbm93LCBiZWNhdXNlIGl0IG1vc3QgbGlrZWx5IHdpbGwgbm90IGJlIHJldXNhYmxlIGF0IHRo
ZSB0aW1lIGl0IHdpbGwgYmUgcmV1c2VkLgotICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93
ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3
YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgIGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUp
CiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVy
LmhhbmRsZSk7CiAgICAgcmVjeWNsZWRCdWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgIHJldHVy
biBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOworfQogCitib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygp
Cit7CisgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7
CiAgICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CiAgICAg
aWYgKCFiYWNraW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzcsNyArNjUzLDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29u
c3QKICAgICAvLyBmb3IgT3BlbkdMIHRvIGRlY2lkZSB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRv
IGEgZGlzcGxheSAob25saW5lL29mZmxpbmUpLgogICAgIC8vIE9wZW5HTCB3aWxsIHRoZW4gY29u
c2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRlcmVycywgYXMgb2ZmbGluZSwgd2hpY2ggbWVhbnMKICAg
ICAvLyBhbGwgb2ZmbGluZSByZW5kZXJlcnMgbmVlZCB0byBiZSBjb25zaWRlcmVkIHdoZW4gZmlu
ZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxs
IHN0aWxsIGJlIGEgV2luZG93U2VydmVyIGNvbm5lY3Rpb24sIGFuZAorICAgIC8vIEluIFdlYktp
dCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kd1NlcnZlciBjb25uZWN0aW9uLCBh
bmQKICAgICAvLyBtX2Rpc3BsYXlNYXNrIHdpbGwgbm90IGJlIHNldCBpbiB0aGlzIGNhc2UuCiAg
ICAgaWYgKHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTY0NiwxMiArNjYyLDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93
T2ZmbGluZVJlbmRlcmVycygpIGNvbnN0CiAgICAgLy8gYW5kIE1BQy9NQUNDQVRBTFlTVCBhbmQg
T1BFTkdML09QRU5HTEVTLgogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCi0gICAgICAgIAorCiAj
aWYgSEFWRShBUFBMRV9HUkFQSElDU19DT05UUk9MKQogICAgIGlmIChoYXNMb3dBbmRIaWdoUG93
ZXJHUFVzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCi0gICAgCisKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTY4MywxMCArNjk5LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAvLyBUaGUgSU9TdXJmYWNlIHdpbGwg
YmUgdXNlZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwgc28gZmx1c2ggR0wgY29tbWFu
ZHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2Vi
R0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2Fw
Q2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKIAogICAgIEVHTF9SZWxlYXNlVGV4SW1hZ2UobV9kaXNw
bGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIpOwotICAgIFtt
X3dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6IHtXVEZNb3ZlKG1fZGlz
cGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyfV07CisgICAgbV9zd2Fw
Q2hhaW4tPnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3Bs
YXlCdWZmZXJQYnVmZmVyIH0pOwogICAgIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgPSBFR0xfTk9f
U1VSRkFDRTsKIAogICAgIGJvb2wgaGFzTmV3QmFja2luZyA9IGZhbHNlOwpAQCAtNzAwLDcgKzcx
Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkK
IAogICAgIC8vIEVycm9yIHdpbGwgYmUgaGFuZGxlZCBieSBuZXh0IGNhbGwgdG8gbWFrZUNvbnRl
eHRDdXJyZW50KCkgd2hpY2ggd2lsbCBub3RpY2UgbGFjayBvZiBkaXNwbGF5IGJ1ZmZlci4KICAg
ICBpZiAoIWhhc05ld0JhY2tpbmcpCi0gICAgICAgIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2lu
ZygpOworICAgICAgICBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogCiAg
ICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM0MTQwMTViN2Iw
ZjM0YmIyOGJlMzQ1NTA5Yzc0MjllMzFkYWEzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlQ29jb2EubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisjaW1wb3J0ICJXZWJHTExheWVyLmgiCisj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMo
W1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNl
UGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyNpZm5kZWYgTkRFQlVH
CisgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CisjZW5kaWYK
KyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKworUGxhdGZvcm1MYXllciogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7Cit9CisKKyNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShBVkZPVU5EQVRJT04pCitHcmFwaGljc0NvbnRleHRHTENWKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6YXNDVigpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5k
aWYKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVN3YXBDaGFpbigpCit7CisgICAgcmV0dXJuIFtt
X3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKaW5kZXggMTRiMDFl
NzA1ZjIwNTMwMWM3Yzk3Y2Y2NmU3MWEwOGJiZjQxZTcwNS4uN2ZlODhhMmZmNGNlMGY1NTlkNTlk
YzFjZDk1MmEzYTdlYTg4MDk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaApAQCAtMjMsNTIgKzIzLDIyIEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpbXBvcnQgIklPU3VyZmFjZS5oIgorI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6
Q29yZS5oPgorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8d3RmL05ha2VkUHRyLmg+CiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBXZWJHTExheWVyQnVmZmVyIHsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRl
bnRzLgotICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8gQ2xpZW50IHNwZWNpZmljIG1l
dGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KLX07Ci19Ci0KIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKIC8vIEEgbGF5ZXIgY2xhc3MgaW1wbGVtZW50aW5n
IGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dhcAogLy8gY2hhaW4g
b2YgSU9TdXJmYWNlcy4KLS8vIFRoZSBsYXllciB3aWxsIG93biB0aGUgSU9TdXJmYWNlcyBpdCB1
c2VzIGZvciBkaXNwbGF5LgotLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVh
Y2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRhCi0vLyBiYWNrIG9uY2Ug
dGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5
IG5vdCBuZWNjZXNzYXJpbHkKLS8vIGJlIGFibGUgdG8gb2J0YWluIHRoZSBJT1N1cmZhY2UgaXRz
ZWxmIGZvciByZXVzZS4KLS8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRhZGF0YSBpcyB0byB1c2Ug
RUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3YXkKLS8vIHdoZW4gdGhl
IFdlYkdMTGF5ZXIgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxheSwgdGhlIGNsaWVu
dCBjYW4gY29udGludWUgdXNpbmcKLS8vIHRoZSBleGlzdGluZyBiaW5kaW5nIG9idGFpbmVkIHRo
cm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgogQGludGVyZmFjZSBXZWJHTExheWVyIDog
Q0FMYXllcgogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBp
eGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWU7CiAKIC0gKENHSW1h
Z2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNv
bG9yU3BhY2U7CiAKLS8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNl
ZCBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgbWF5IHJlY2lldmUgYmFjayBhbHNvIHRoZSBv
d25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2UgaXQgaXMgYXZhaWxhYmxl
IGF0IHRoZQotLy8gdGltZSBvZiB0aGUgY2FsbC4KLS8vIFJldHVybnMgZWl0aGVyOgotLy8gLSBF
bXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRlZC4KLS8vIC0gQnVmZmVy
IHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRsZSBpZiB0aGUg
cmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKLS8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0
aWxsIGluIHVzZS4KLS8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgotLSAoV2ViQ29yZTo6V2ViR0xM
YXllckJ1ZmZlcilyZWN5Y2xlQnVmZmVyOwotCi0vLyBQcmVwYXJlcyB0aGUgbGF5ZXIgZm9yIGRp
c3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCB0cmFuc2ZlcnMgdGhlIG93
bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgotLSAodm9p
ZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZl
cilidWZmZXI7Ci0KLS8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJl
bnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KLS8vIFRoZSBpZiBtdWx0aXBsZSBi
dWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4g
Y2FsbGVkIGJlZm9yZSBjYWxsaW5nCi0vLyB0aGlzLgotLSAodm9pZCopZGV0YWNoQ2xpZW50Owor
LSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2FwQ2hh
aW47CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIubW0KaW5kZXggYzhmNGU3OWY3MzEyZWFhNmFiMDQ0NjgwODNlYThk
MGM4YmVmYTNiYy4uMTY4ZmQ1ZjZjODQyMzdiZGY4YWI5Y2JiY2E2NDA3Mzk1MDVjOTIwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXll
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbXBvcnQg
ImNvbmZpZy5oIgpAQCAtMzIsMTMgKzMyLDM5IEBACiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0Eu
aCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9R
dWFydHpDb3JlU1BJLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYv
T3B0aW9uYWwuaD4KKworY2xhc3MgV2ViR0xMYXllclN3YXBDaGFpbiBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgV2ViR0xMYXllclN3YXBDaGFpbihXZWJHTExheWVyKiBsYXllcikgIDogbV9s
YXllcihsYXllcikgeyB9OworICAgIH5XZWJHTExheWVyU3dhcENoYWluKCkgb3ZlcnJpZGUgPSBk
ZWZhdWx0OworICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIG92ZXJyaWRlOworICAgIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX3NwYXJlQnVmZmVy
LnN1cmZhY2UpIHsKKyAgICAgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5V
c2UoKSkKKyAgICAgICAgICAgICAgICBtX3NwYXJlQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fc3BhcmVCdWZmZXIpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB7IH07CisgICAgfQorICAgIHZvaWQqIGRldGFjaENsaWVudCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgICAg
IHZvaWQqIHJlc3VsdCA9IG1fZGlzcGxheUJ1ZmZlci5oYW5kbGU7CisgICAgICAgIG1fZGlzcGxh
eUJ1ZmZlci5oYW5kbGUgPSBudWxscHRyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlTdXJmYWNlKCkgeyByZXR1cm4gbV9kaXNw
bGF5QnVmZmVyLnN1cmZhY2UuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgQnVmZmVyIG1fZGlzcGxh
eUJ1ZmZlcjsKKyAgICBCdWZmZXIgbV9zcGFyZUJ1ZmZlcjsKKyAgICBXZWJHTExheWVyKiBjb25z
dCBtX2xheWVyOworfTsKIAogQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIgewotICAgIFdlYkNv
cmU6OldlYkdMTGF5ZXJCdWZmZXIgX2NvbnRlbnRzQnVmZmVyOwotICAgIFdlYkNvcmU6OldlYkdM
TGF5ZXJCdWZmZXIgX3NwYXJlQnVmZmVyOwotCiAgICAgQk9PTCBfcHJlcGFyZWRGb3JEaXNwbGF5
OworICAgIE9wdGlvbmFsPFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2FwQ2hhaW47CiB9CiAKIC0g
KGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250
ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1ZQpAQCAtNDcsNiArNzMsNyBAQAogICAgIHNl
bGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwogICAgIHNlbGYuY29udGVudHNP
cGFxdWUgPSBjb250ZW50c09wYXF1ZTsKICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBkZXZpY2VQ
aXhlbFJhdGlvOworICAgIF9zd2FwQ2hhaW4uZW1wbGFjZShzZWxmKTsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIApAQCAtNzMsMzAgKzEwMCwyMSBAQAogICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNl
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KLQotLSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZl
cikgcmVjeWNsZUJ1ZmZlcgorLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4mKSBzd2FwQ2hhaW4KIHsKLSAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsK
LSAgICAgICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCi0gICAgICAgICAg
ICBfc3BhcmVCdWZmZXIuc3VyZmFjZS5yZXNldCgpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShf
c3BhcmVCdWZmZXIpOwotICAgIH0KLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBfc3dhcENo
YWluLnZhbHVlKCk7CiB9CiAKLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6
KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIGJ1ZmZlcgorLSAodm9pZClwcmVwYXJlRm9yRGlz
cGxheQogewotICAgIEFTU0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIF9zcGFyZUJ1
ZmZlciA9IFdURk1vdmUoX2NvbnRlbnRzQnVmZmVyKTsKLSAgICBfY29udGVudHNCdWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlcik7CiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKICAgICBfcHJlcGFy
ZWRGb3JEaXNwbGF5ID0gWUVTOwogfQogCiAtICh2b2lkKWRpc3BsYXkKIHsKLSAgICBpZiAoX2Nv
bnRlbnRzQnVmZmVyLnN1cmZhY2UgJiYgX3ByZXBhcmVkRm9yRGlzcGxheSkgewotICAgICAgICBz
ZWxmLmNvbnRlbnRzID0gX2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygp
OworICAgIGlmIChfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpICYmIF9wcmVwYXJlZEZvckRp
c3BsYXkpIHsKKyAgICAgICAgc2VsZi5jb250ZW50cyA9IF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJm
YWNlKCktPmFzTGF5ZXJDb250ZW50cygpOwogICAgICAgICBbc2VsZiByZWxvYWRWYWx1ZUZvcktl
eVBhdGg6QCJjb250ZW50cyJdOwogICAgIH0KICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2Vs
Zik7CkBAIC0xMDYsMTMgKzEyNCwxNCBAQAogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBOTzsK
IH0KIAotLSAodm9pZCopIGRldGFjaENsaWVudAorQGVuZAorCit2b2lkIFdlYkdMTGF5ZXJTd2Fw
Q2hhaW46OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBBU1NFUlQoIV9zcGFyZUJ1ZmZl
ci5zdXJmYWNlKTsKLSAgICB2b2lkKiByZXN1bHQgPSBfY29udGVudHNCdWZmZXIuaGFuZGxlOwot
ICAgIF9jb250ZW50c0J1ZmZlci5oYW5kbGUgPSBudWxscHRyOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgIG1fc3BhcmVCdWZmZXIg
PSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOworICAgIFttX2xheWVyIHByZXBhcmVGb3JEaXNwbGF5XTsKIH0KLUBlbmQKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCAzOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFl
YzY2NzRiYTEyLi45OWFkOTE2NTI1OTE4NzNlMGU4M2ZlODc4OTI1ZWNhMjMzYTFhMWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0z
Niw2ICszNiw3IEBACiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCAiTG9nZ2lu
Zy5oIgogI2ltcG9ydCAiUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlR3Jh
cGhpYy5oIgogI2ltcG9ydCA8Q29yZUltYWdlL0NJQ29udGV4dC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcAppbmRleCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3Yzdi
Li5hZGQ1ZjM1MmFlNGRlNmI2ZDVkYzE5MWU2NzNiNWFhZmE1NmRlOTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmNwcApAQCAtNDgsNyArNDgsNyBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4
dGVuc2lvbnNHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1
cwogRXh0ZW5zaW9uc0dMT3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0Owog
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwg
bG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZ
MCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs
b25nIGZpbHRlcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTYs
NyArNTYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcg
c3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbgogICAgIDo6Z2xCbGl0RnJhbWVidWZm
ZXJFWFQoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRz
dFkxLCBtYXNrLCBmaWx0ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
d2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
emVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0w6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQog
I2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXpl
aSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEcKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2Vh
MGU2YTA5ZDZkYjczMWY4NjhiNTQ5OTNhNDQ0NDlhOC4uNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2
NzZjYjYzOWJlODM0MzdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOCArNDAs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAv
LyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNy
Y1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25n
IGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2ln
bmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1
bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShH
Q0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kx
LCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRz
dFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CkBAIC01Miw5ICs1Miw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVy
cmlkZTsKIAogcHJvdGVjdGVkOgogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RG
OjpTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5j
cHAKaW5kZXggNDNiNTE2MWZiYTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYi4uYjc4OTYw
Y2I0ODJlNGVmMmFiOThlNDAzOTJhNjM1YmE3ZmZiN2JkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTM2NiwxMSArMzY2LDYgQEAgdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51
bSwgR0NHTHMKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwg
dm9pZCAqLCBib29sKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
ICosIEdDR0xmbG9hdCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmlu
ZGV4IGJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhjNjQuLjZhM2EzOWZlM2Ex
YmE1YmQyNTk3NzE1ODk0NzU2MWNjYWQ1YWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgKQEAgLTkzLDcgKzkzLDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2
ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVS
b2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9i
dXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAq
ZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1z
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQy
N2JhY2VmY2JiOGFjMy4uZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5MWZiZTA3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMiBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJ
TUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgLyogc3JjWDAgKi8sIGxvbmcgLyogc3JjWTAgKi8sIGxv
bmcgLyogc3JjWDEgKi8sIGxvbmcgLyogc3JjWTEgKi8sIGxvbmcgLyogZHN0WDAgKi8sIGxvbmcg
LyogZHN0WTAgKi8sIGxvbmcgLyogZHN0WDEgKi8sIGxvbmcgLyogZHN0WTEgKi8sIHVuc2lnbmVk
IGxvbmcgLyogbWFzayAqLywgdW5zaWduZWQgbG9uZyAvKiBmaWx0ZXIgKi8pCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBH
Q0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dM
Yml0ZmllbGQsIEdDR0xlbnVtKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGlu
dGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYg
KCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0y
NTEsNyArMjUxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVY
VChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewog
ICAgIGlmICghbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsy
NjQsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2ds
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xzaXplaSBjb3VudCwKICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
bW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZp
c29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9nbFZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5k
ZXggMDE3YTQ1YjczOThkMDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4My4uNWM3NjAzN2ZhN2Jj
NmU4ZWVlM2U2NzNmOTlhN2RmYzJmNzhmYjRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmgKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9k
cwogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcg
c3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVu
c2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZv
aWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lk
IGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xp
bnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdD
R0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBm
aWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwpAQCAtODcsOSArODcsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4p
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBj
b3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAog
ICAgIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGMyNTViMGMxMmY0ZmNiZmE0NmRiMDJkNTVjODBi
NGNiNzdkMTdiNzAuLjhhY2RmMzJiNTIxNmMzNWJhOGFlNmYzM2Q1ODJiODdkZTU0Mjk2MWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC01OCw2ICs1OCw5IEBACiAjaWYg
UExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkdMTGF5
ZXI7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbjsKK30KICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmIFVTRShOSUNP
U0lBKQpAQCAtODYsNyArODksNyBAQCB0eXBlZGVmIFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1aW50
NjRfdD4gU2hhZGVyTmFtZUhhc2g7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMUHJp
dmF0ZTsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3Jh
cGhpY3NDb250ZXh0R0wKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9m
ZnNjcmVlbik7CkBAIC05NCw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZVNoYXJlZChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCk7CisgICAgc3RhdGljIFJlZjxH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biopOworCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dEdMKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0T2JqOyB9CiAgICAgUGxhdGZv
cm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RleHR1
cmU7IH0KICAgICBDQUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQpAQCAtMTkx
LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwogICAgIGJv
b2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGlu
ZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7Ci0g
ICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
c2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRl
cnMpIGZpbmFsOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdM
T2JqZWN0KiBzaGFkZXJzKTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3Jt
R0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAgdm9pZCBnZXRCb29sZWFu
dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKICAg
ICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CkBAIC0yMTksOCArMjI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VW5p
Zm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2
YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJp
YmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2
YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dM
c2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBt
b2RlKSBmaW5hbDsKQEAgLTIzNiw3ICsyMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwaXhlbFN0
b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBwb2x5
Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykgZmluYWw7CiAKLSAg
ICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5Q
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CiAKICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xi
b29sZWFuIGludmVydCkgZmluYWw7CkBAIC0yNTQsNyArMjU4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7
Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRy
IG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKQEAgLTMxNywxMiAr
MzIxLDEwIEBAIHB1YmxpYzoKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgYnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNE
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBj
b25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7
CiAjZW5kaWYKICAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQs
IEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIg
d3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKIAotICAgIHZvaWQqIG1hcEJ1
ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0
ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwotICAgIEdDR0xib29sZWFuIHVu
bWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAs
IEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0
WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRm
aWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9y
bUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOwpA
QCAtMzg0LDcgKzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRh
cmdldCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAg
IHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0UXVlcnlPYmpl
Y3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0
ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKQEAgLTM5Myw4ICszOTUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKICAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgot
ICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2Ft
cGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRl
cmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAg
R0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBj
b25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CiAgICAgR0NHTGJvb2xlYW4gaXNT
eW5jKEdDR0xzeW5jKSBmaW5hbDsKQEAgLTQwMyw3ICs0MDUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91
dCkgZmluYWw7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgogICAgIC8vIEZJWE1FIC0gdGhpcyBj
YW4gYmUgaW1wbGVtZW50ZWQgYXQgdGhlIFdlYkdMIGxldmVsIGlmIHdlIHNpZ25hbCB0aGUgV2Vi
R0xTeW5jIG9iamVjdC4KLSAgICB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkgZmluYWw7CisgICAgR0NHTGlu
dCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZv
cm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwogICAgIHZvaWQgZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CkBAIC00MjAs
NyArNDIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogICAgIC8vIGdldEluZGV4ZWRQYXJh
bWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KICAgICBWZWN0b3I8R0NHTHVp
bnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmluYWw7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlm
b3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVu
aWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpIGZp
bmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkg
ZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyCkBAIC00MjksMTEg
KzQzMSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCi0jaWYgIVVTRShBTkdMRSkKLSAg
ICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KTsKLSNlbmRp
ZgotCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAKICAgICB2b2lkIHBhaW50VG9DYW52YXMoY29u
c3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CkBAIC01MTUsNyAr
NTEyLDExIEBAIHB1YmxpYzoKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQogCiBwcml2YXRlOgorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBz
aGFyZWRDb250ZXh0ID0gbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4qID0gbnVsbHB0cik7CisjZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGlu
YXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQg
PSBudWxscHRyKTsKKyNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJs
aWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICAvLyBDYWxs
ZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRo
YXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KQEAgLTUyNyw3ICs1MjgsOSBAQCBwcml2YXRlOgog
ICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRl
QXR0cmlidXRlcygpOwotICAgIAorCisgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwg
Ym9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CisKICAgICAvLyBEaWQgdGhlIG1vc3Qg
cmVjZW50IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBz
dGF0ZT8KICAgICB2b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKQEAgLTU0OCwxMCArNTUxLDEzIEBA
IHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBhbGxvd09mZmxpbmVSZW5k
ZXJlcnMoKSBjb25zdDsKICAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpOwor
ICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKICAgICBib29s
IGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNr
aW5nLCB2b2lkKiBwYnVmZmVyKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qIG1fc3dhcENoYWluIHsgbnVsbHB0
ciB9OworICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSB0aGUgY29udGV4
dCBkcmF3cyB0byBhIGltYWdlIGJ1ZmZlci4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTgxNzkgLgogICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdM
TGF5ZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBtX2NvbnRleHRPYmogeyBudWxs
cHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgbV9kaXNwbGF5T2Jq
IHsgbnVsbHB0ciB9OwpAQCAtNTc5LDcgKzU4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAs
IGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChlbnVtIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBz
eW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc3ltYm9sVHlwZSA9PSBT
SEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8IHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJP
TF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVkFSWUlO
Ryk7CkBAIC02NzIsNyArNjc4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB1c2luZyBCb3VuZFRl
eHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAgICAgICAgc3RkOjpwYWlyPEdDR0x1
aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6OkludEhhc2g8R0NHTGVudW0+LCAKKyAg
ICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sCiAgICAgICAgICAgICBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwKICAgICAgICAgICAgIFdURjo6UGFp
ckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4s
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+PgogICAgICAgICA+
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCA2MzU2
ZjgxZjQ4MjFiNmExZWE2YzM1NTdlZGYxZjRlNjg4MTNmNmI5Li42Mjk4MDM4OGI2NTI0NzljY2I0
MzMxYzI1ZmZlZWJiNjZjNmNiNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xCYXNlLmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0
YSkKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIApAQCAtNDQ3LDcg
KzQ0Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICAgICAg
OjpnbEZsdXNoKCk7CiAgICAgfQotICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmRhdGEpOwogICAgIGlmIChhdHRycy5hbnRpYWxp
YXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAg
OjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1f
bXVsdGlzYW1wbGVGQk8pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggYmM0NGNkNTc3ODg2NzIwMzlhZWE0ZjU5OTk2ZTRkOTRlMWMxYTBm
ZS4uOWMyYmI5ZGNmMmI2ZTQ4NDJkMWNiNjZlNjliMWIwZWFmYTk1NjEwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yOTYsNyArMjk2LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCiAKICAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZFNjaXNzb3IoR0xfU0NJ
U1NPUl9URVNULCBHTF9GQUxTRSk7CiAgICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBzY29wZWRE
aXRoZXIoR0xfRElUSEVSLCBHTF9GQUxTRSk7Ci0gICAgCisKICAgICBib29sIG11c3RSZXN0b3Jl
RkJPID0gcmVzaGFwZUZCT3MoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAKICAgICAvLyBJbml0
aWFsaXplIHJlbmRlcmJ1ZmZlcnMgdG8gMC4KQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0g
ZGZhY3RvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgOjpnbEJsZW5kRnVuYyhzZmFjdG9yLCBk
ZmFjdG9yKTsKLX0gICAgICAgCit9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJs
ZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51
bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCiB7CkBAIC02NDMsMTEgKzY0MywxMSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmpl
Y3Qgc2hhZGVyKQogICAgIExPRyhXZWJHTCwgIi0tLSBiZWdpbiB0cmFuc2xhdGVkIHNoYWRlciBz
b3VyY2UgLS0tXG4lc1xuLS0tIGVuZCB0cmFuc2xhdGVkIHNoYWRlciBzb3VyY2UgLS0tIiwgdHJh
bnNsYXRlZFNoYWRlclB0cik7CiAKICAgICA6OmdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnRy
YW5zbGF0ZWRTaGFkZXJQdHIsICZ0cmFuc2xhdGVkU2hhZGVyTGVuZ3RoKTsKLSAgICAKKwogICAg
IDo6Z2xDb21waWxlU2hhZGVyKHNoYWRlcik7Ci0gICAgCisKICAgICBpbnQgY29tcGlsZVN0YXR1
czsKLSAgICAKKwogICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIENPTVBJTEVfU1RBVFVTLCAm
Y29tcGlsZVN0YXR1cyk7CiAKICAgICBTaGFkZXJTb3VyY2VNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKQEAgLTg5NCw5ICs4OTQsOSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTAogICAgIDo6Z2xHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5k
ZXgsIG1heEF0dHJpYnV0ZVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0
YSgpKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
KwogICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwg
U0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZGF0YSgpLCBuYW1lTGVu
Z3RoKSk7Ci0gICAgCisKICNpZm5kZWYgTkRFQlVHCiAgICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5h
bWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFtICVkIGlzIG1h
cHBpbmcgYWN0aXZlIGF0dHJpYnV0ZSAlZCBmcm9tICclcycgdG8gJyVzJyIsIHByb2dyYW0sIGlu
ZGV4LCB1bmlmb3JtTmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5hbE5hbWUudXRmOCgpLmRhdGEo
KSk7CkBAIC05MTYsNyArOTE2LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQKICAgICAgICAg
Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdM
OjpBQ1RJVkVfQVRUUklCVVRFUywgJnN5bWJvbENvdW50KTsKICAgICAgICAgcmVzdWx0ID0gbV9z
aGFkZXJQcm9ncmFtU3ltYm9sQ291bnRNYXAuZmluZChwcm9ncmFtKTsKICAgICB9Ci0gICAgCisK
ICAgICBBY3RpdmVTaGFkZXJTeW1ib2xDb3VudHMmIHN5bWJvbENvdW50cyA9IHJlc3VsdC0+dmFs
dWU7CiAgICAgR0NHTHVpbnQgcmF3SW5kZXggPSAoaW5kZXggPCBzeW1ib2xDb3VudHMuZmlsdGVy
ZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwLnNpemUoKSkgPyBzeW1ib2xDb3VudHMuZmlsdGVy
ZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwW2luZGV4XSA6IC0xOwogCkBAIC05NDMsMTQgKzk0
MywxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1w
bChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDRwogICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jt
KHByb2dyYW0sIGluZGV4LCBtYXhVbmlmb3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlw
ZSwgbmFtZS5kYXRhKCkpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAorCiAgICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9sTmFt
ZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSwgU3RyaW5nKG5hbWUuZGF0YSgp
LCBuYW1lTGVuZ3RoKSk7Ci0gICAgCisKICNpZm5kZWYgTkRFQlVHCiAgICAgU3RyaW5nIHVuaWZv
cm1OYW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFt
ICVkIGlzIG1hcHBpbmcgYWN0aXZlIHVuaWZvcm0gJWQgZnJvbSAnJXMnIHRvICclcyciLCBwcm9n
cmFtLCBpbmRleCwgdW5pZm9ybU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luYWxOYW1lLnV0Zjgo
KS5kYXRhKCkpOwogI2VuZGlmCi0gICAgCisKICAgICBpbmZvLm5hbWUgPSBvcmlnaW5hbE5hbWU7
CiAgICAgaW5mby50eXBlID0gdHlwZTsKICAgICBpbmZvLnNpemUgPSBzaXplOwpAQCAtOTY1LDEw
ICs5NjUsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW4KICAgICAgICAgZ2V0Tm9uQnVpbHRJ
bkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5J
Rk9STVMsICZzeW1ib2xDb3VudCk7CiAgICAgICAgIHJlc3VsdCA9IG1fc2hhZGVyUHJvZ3JhbVN5
bWJvbENvdW50TWFwLmZpbmQocHJvZ3JhbSk7CiAgICAgfQotICAgIAorCiAgICAgQWN0aXZlU2hh
ZGVyU3ltYm9sQ291bnRzJiBzeW1ib2xDb3VudHMgPSByZXN1bHQtPnZhbHVlOwogICAgIEdDR0x1
aW50IHJhd0luZGV4ID0gKGluZGV4IDwgc3ltYm9sQ291bnRzLmZpbHRlcmVkVG9BY3R1YWxVbmlm
b3JtSW5kZXhNYXAuc2l6ZSgpKSA/IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0dWFsVW5pZm9y
bUluZGV4TWFwW2luZGV4XSA6IC0xOwotICAgIAorCiAgICAgcmV0dXJuIGdldEFjdGl2ZVVuaWZv
cm1JbXBsKHByb2dyYW0sIHJhd0luZGV4LCBpbmZvKTsKIH0KIApAQCAtMTA2OSw3ICsxMDY5LDcg
QEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpvcmlnaW5hbFN5bWJvbE5hbWUoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBBTkcKICAgICBHQ0dMc2l6ZWkgY291bnQ7CiAgICAgUGxh
dGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdOwogICAgIGdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFt
LCAyLCAmY291bnQsIHNoYWRlcnMpOwotICAgIAorCiAgICAgZm9yIChHQ0dMc2l6ZWkgaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGF1dG8gb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxT
eW1ib2xJblNoYWRlclNvdXJjZU1hcChzaGFkZXJzW2ldLCBzeW1ib2xUeXBlLCBuYW1lKTsKICAg
ICAgICAgaWYgKG9yaWdpbmFsTmFtZSkKQEAgLTExMDcsNyArMTEwNyw3IEBAIFN0cmluZyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6bWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHNo
YWRlcnNbMl0sIHNpCiAgICAgICAgICAgICBTaGFkZXJTb3VyY2VNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyc1tpXSk7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGNvbnN0IFNoYWRlclN5bWJvbE1hcCYg
c3ltYm9sTWFwID0gcmVzdWx0LT52YWx1ZS5zeW1ib2xNYXAoc3RhdGljX2Nhc3Q8ZW51bSBBTkdM
RVNoYWRlclN5bWJvbFR5cGU+KHN5bWJvbFR5cGUpKTsKICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgc3ltYm9sRW50cnkgOiBzeW1ib2xNYXApIHsKICAgICAgICAgICAgICAgICBpZiAobmFt
ZSA9PSBzeW1ib2xFbnRyeS52YWx1ZS5tYXBwZWROYW1lLmNfc3RyKCkpCkBAIC0xNjgyLDcgKzE2
ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheShQ
bGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogewogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKKwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMTY5NSw3ICsxNjk1LDcgQEAgR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKIHsKICAgICBpZiAo
IWFycmF5KQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7Ci0gICAgCisKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKQEAgLTE4MTgsNyAr
MTgxOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3Rp
dmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByCiAKICAgICAgICAgc3ltYm9sQ291bnRz
LmZpbHRlcmVkVG9BY3R1YWxBdHRyaWJ1dGVJbmRleE1hcC5hcHBlbmQoaSk7CiAgICAgfQotICAg
IAorCiAgICAgLy8gRG8gdGhlIHNhbWUgZm9yIHVuaWZvcm1zLgogICAgIEdDR0xpbnQgdW5pZm9y
bUNvdW50ID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEFDVElWRV9VTklGT1JN
UywgJnVuaWZvcm1Db3VudCk7CkBAIC0xODI3LDEwICsxODI3LDEwIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdM
T2JqZWN0IHByCiAgICAgICAgIGdldEFjdGl2ZVVuaWZvcm1JbXBsKHByb2dyYW0sIGksIGluZm8p
OwogICAgICAgICBpZiAoaW5mby5uYW1lLnN0YXJ0c1dpdGgoImdsXyIpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0
dWFsVW5pZm9ybUluZGV4TWFwLmFwcGVuZChpKTsKICAgICB9Ci0gICAgCisKICAgICAqdmFsdWUg
PSBzeW1ib2xDb3VudHMuY291bnRGb3JUeXBlKHBuYW1lKTsKIH0KIApAQCAtMTg0MSw3ICsxODQx
LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9n
KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXSwKICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHBy
ZXNzaW9uIHJlZ0V4cCgid2ViZ2xfWzAxMjM0NTY3ODlhYmNkZWZBQkNERUZdKyIpOwogCiAgICAg
U3RyaW5nQnVpbGRlciBwcm9jZXNzZWRMb2c7Ci0gICAgCisKICAgICAvLyBBTkdMRSBpbnNlcnRz
IGEgIiNleHRlbnNpb24iIGxpbmUgaW50byB0aGUgc2hhZGVyIHNvdXJjZSB0aGF0CiAgICAgLy8g
Y2F1c2VzIGEgd2FybmluZyBpbiBzb21lIGNvbXBpbGVycy4gVGhlcmUgaXMgbm8gcG9pbnQgc2hv
d2luZwogICAgIC8vIHRoaXMgd2FybmluZyB0byB0aGUgdXNlciBzaW5jZSB0aGV5IGRpZG4ndCB3
cml0ZSB0aGUgY29kZSB0aGF0CkBAIC0xODgwLDcgKzE4ODAsNyBAQCBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSkKICAgICBHTGludCBsZW5ndGggPSAwOwogICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwg
R0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOyAKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgR0xzaXpl
aSBzaXplID0gMDsKICAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CkBAIC0xOTExLDcg
KzE5MTEsNyBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKFBs
YXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbgogCiAKICAgICBjb25zdCBhdXRvJiBy
ZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7Ci0gICAgCisKICAgICBzd2l0
Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBERUxFVEVfU1RBVFVTOgogICAgIGNhc2UgU0hBREVSX1RZ
UEU6CkBAIC0xOTQzLDcgKzE5NDMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCiAKICAgICBjb25zdCBh
dXRvJiByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CiAgICAgaWYgKHJl
c3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OyAKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgY29uc3QgU2hhZGVyU291cmNlRW50
cnkmIGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKICAgICBpZiAoIWVudHJ5LmlzVmFsaWQpCkBAIC0x
OTUyLDcgKzE5NTIsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRl
ckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsK
ICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9JTkZPX0xPR19MRU5HVEgsICZsZW5ndGgp
OwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogICAgIFZlY3RvcjxHTGNo
YXI+IGluZm8obGVuZ3RoKTsKQEAgLTE5NzEsNyArMTk3MSw3IEBAIFN0cmluZyBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQog
CiAgICAgY29uc3QgYXV0byYgcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIp
OwogICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsgCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIHJldHVybiBy
ZXN1bHQtPnZhbHVlLnNvdXJjZTsKIH0KQEAgLTIwMjksMjIgKzIwMjksNiBAQCBHQ0dMaW50IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjbwogICAgIHJldHVybiA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
IG1hcHBlZE5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgs
IHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2
YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMjc4LDE5ICsyMjYyLDE5IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRy
YXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3
QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBnZXRF
eHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwg
cHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1v
ZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9ucygp
LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHBy
aW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
ZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvcihpbmRl
eCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBIQVZFKE9QRU5HTF80KSAmJiBFTkFCTEUoV0VC
R0wyKQpAQCAtMjMzNSw0MiArMjMxOSwyNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xpbnRwdHIsCiB9CiAj
ZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0
RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewotICAgIFVOVVNFRF9QQVJB
TSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNCeXRlT2Zmc2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGxlbmd0aCk7Ci19Ci0KICNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9F
U18zKQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xi
aXRmaWVsZCBhY2Nlc3MpCi17CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdl
dCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0
dXJuIDo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpOwotfQorICAgICAgICByZXR1cm47CisgICAgR0NH
THZvaWQqIHB0ciA9IDo6Z2xNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZT
aXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAg
ICAgICAgcmV0dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsK
KyAgICBpZiAoITo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogI2Vsc2UKLXZvaWQq
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSwgR0NHTGlu
dHB0ciwgR0NHTHNpemVpcHRyLCBHQ0dMYml0ZmllbGQpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CisjZW5kaWYKIH0KIAotR0NHTGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVtKQotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLSNlbmRpZgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGl0
RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsK
QEAgLTI3MTIsMTEgKzI2NzksMTEgQEAgUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmEKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1
aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1
ZSkKK0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKFBs
YXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJB
TShxdWVyeSk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFs
dWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjcmVhdGVTYW1wbGVyKCkKQEAgLTI3NTYsMTggKzI3MjMsMTkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW4KICAgICBVTlVTRURfUEFSQU0ocGFyYW0pOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9h
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc2Ft
cGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUp
OworICAgIHJldHVybiAwLmY7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUpCisKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBu
YW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBHQ0dM
c3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlv
biwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjgwNiwxMiArMjc3NCwxMSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQg
ZmxhZ3MsIEdDR0xpbgogICAgIFVOVVNFRF9QQVJBTSh0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAg
ICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICBy
ZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAtMjg5MSwyMSArMjg1OCwyMyBAQCBWZWN0b3I8
R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0
Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiB7IH07CiB9CiAKLSNpZiBIQVZFKE9QRU5HTF80
KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NH
THVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYg
cGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3Rp
dmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWlu
dD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBWZWN0b3I8R0NHTGlu
dD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7CisjaWYgSEFWRShPUEVOR0xfNCkg
fHwgSEFWRShPUEVOR0xfRVNfMykKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcmVzdWx0
OwogCi0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMu
c2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAg
ICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCks
IHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3VsdC5kYXRhKCkpOworI2VuZGlmCisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3Ry
aW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKICAg
ICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrTmFtZSk7Ci0KICAgICByZXR1cm4gMDsKIH0KIApA
QCAtMjkxMyw3ICsyODgyLDYgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3IKIHsKICAgICBVTlVT
RURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsK
LQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCkBAIC0yOTIzLDI3ICsyODkxLDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0wKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5k
ZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tCaW5kaW5nKTsKIH0KLSNlbHNlCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdM
T2JqZWN0LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiwgR0NHTGVudW0sIFZlY3RvcjxHQ0dMaW50
PiYpCi17Ci19CiAKLUdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3Jt
QmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmKQotewotICAgIHJldHVy
biAwOwotfQotCi1TdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQpCi17Ci0gICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1C
bG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdDR0x1aW50KQotewotfQot
I2VuZGlmCi0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHgpOwogICAgIFVO
VVNFRF9QQVJBTSh5KTsKQEAgLTI5NTQsMTggKzI5MDMsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25z
dCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAg
IFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQogewog
ICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcAppbmRleCAyM2Q3NGZhODBkNzA3OTFiZTYwMGRmNThlNzU2MTczMzk2YWE1NTA1
Li5hMjIxODBiNGJmNGNlMTBmMTg1MjEyNDAxMWU4OGE0NDI3M2I0MWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLAogICAgICAgICA6OmdsRmx1c2goKTsKICAgICB9CiAKLSAgICA6OmdsUmVhZFBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgIDo6Z2xS
ZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5kYXRhKTsK
IAogICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9
PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAg
ICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhh
dmUgaXQuCiAgICAgICAgICAgICBpZiAoc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlcikg
ewogICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwg
bV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdM
X0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBl
eHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJV
RkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0
KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKQogICAgICAgICAgICAg
ICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NU
RU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7
CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpCkBAIC0xMzgsMTIgKzEzOCwx
MiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRT
aXplJiBzaXplKQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoYXR0
cmlidXRlcy5zdGVuY2lsKSB7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVm
ZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVG
RkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgsIHdpZHRoLCBoZWlnaHQpOworICAg
ICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3
aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJV
RkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpIHsKICAgICAgICAgICAgICAgICAgICAgOjpnbEJpbmRS
ZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKLSAgICAgICAgICAg
ICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVO
REVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWln
aHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIX0NP
TVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgOjpnbEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBH
TF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5j
cHAKaW5kZXggNjgwYTUyOWQ2NzVkZDYxYjk4Y2VlOGEzOWYxNDE1Zjc5MzBiOGY5Yi4uNGUwODJh
ZGYyYTBlZjI0MTI3MjhlZTdkZmQyNTQwZjY3NmVhMjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5k
ZXggNjI4NDQ1MzI1MDMzNTEwN2ZkNTQ5ODIyMzJiOGI5ZWFlYzhlNjhjYi4uOWY4MzE3YjE4ZDUz
YjdiM2MxNjY2OWE0YzUxMTk5M2VhZjM3Yzc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMjMs
NiArMTIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCisg
ICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTAogICAgIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogCiAgICAgR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcgpAQCAtMjE4LDYgKzIxOSw3IEBAIHNl
dChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uCiAKKyAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5CiAKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCBlZGI2Y2E1OTc5ZDJmNGRlZjhiMmIyZTc3M2Y5ZDY5YWU3ODZlN2U5Li40YTY3
ZGY4ZWRjM2I0ZjQ4OTE4NzcwMmVmYmYwNDFiM2QzNGE5MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMCw2ICsyMCw3IEBAICQoSkFW
QVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvbW9kZWxzLnB5CiAkKEpBVkFTQ1JJUFRD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQ
cm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMzEsNiArMTMyLDcgQEAgJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA3NTY3OWY1NWY1YWUzOTliNWVhZjQ3N2YxODkzMjU2
YmMyNDg4NDRkLi43Y2QzZGJjY2EzNTBjNmUzODE0YzM0MGMzOTNjOTYzZWRiYjk4MTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3
NSw2ICsxNzUsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVz
c2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAz
NzcwMWIwMWMzYzFhMmMzMDBlMWRkMmQ3MmU2Yjg1MjM3ZjQyNGI1Li45NzZiMWE1YTNlNWMwZDMx
MTVkNDQ1MGM5MDg2MTU3MTllNmRlY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xNzEsNiArMTcxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKQEAg
LTIyNyw2ICsyMjgsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlQbHVnaW5Qcm9jZXNzL1Bs
dWdpblByb2Nlc3MgXAogCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCiAJ
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eSBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwZTJlODgz
MmIxZTIwZjFlMGYzMTlkNWQ5ZjI1ZDcyY2UxYmY3M2FkLi40NGI5ZjYzZTE0YzUwYjc0MTk5M2Q2
ZjM1YTVhOTVmNWFmZDgwYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02NCw2ICs2NCwxMCBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oPgogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0
b3J5UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgpA
QCAtMjkwLDYgKzI5NCwyMSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVh
c2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9V
TlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgfSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRl
eHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9CisjZW5kaWYKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAgICAgZ3B1UHJvY2VzcygpLm5vd1Bs
YXlpbmdNYW5hZ2VyKCkuY2xlYXJOb3dQbGF5aW5nSW5mb0NsaWVudCgqdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCAyNjc4ZGJjNGU1ZDM2NWZhZDI4ZThiNDgyNzg2Mzc2MmEzYzQ1NzhkLi41YWVkZmJiNGQy
Y2FjN2I3NjYwZmYwNzM2MDlkMzc3YzYwMTU4NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b1Nlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nl
c3NJZGVudGlmaWVyLmg+CkBAIC0zOSw2ICs0MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7CkBAIC01NCw2ICs2MCw3IEBAIGNsYXNzIFJlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiBj
bGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKIGNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ7CitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CkBAIC0x
MTksNiArMTI2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5k
KFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdC
YWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAorI2lmIEVOQUJMRShXRUJHTCkK
KyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJl
bGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2Vu
ZGlmCisKICAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKTsKICAgICB2b2lkIHNldE5vd1Bs
YXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIFdlYkNvcmU6Ok5vd1Bs
YXlpbmdJbmZvJiYpOwogCkBAIC0xODAsNyArMTkyLDEwIEBAIHByaXZhdGU6CiAKICAgICB1c2lu
ZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKLQor
I2lmIEVOQUJMRShXRUJHTCkKKyAgICB1c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9
IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBt
X3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOworI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2Nk
bUZhY3RvcnlQcm94eTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1
MTk0ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1MmMzNjVlYjMyNzFmMzQ0Li45ZDU0ZTE2NDU5NWIwYTM2
MWRmZTRjNzViZmY0MDE4YTg1NzU5YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtMjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
V2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChX
ZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lk
IFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIENsZWFy
Tm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1Bs
YXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDgwNGQxZmE5OTk0ZDVmZmYzMTQzNjRkNTliZWY5NWViNDllYTk5OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCisKK25hbWVzcGFjZSBXZWJL
aXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKKyAgICA6IG1fY29u
dGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAg
IGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNz
YWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRo
aXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhp
Y3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAg
ICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QK
K3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2
NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUlu
dDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgp
Cit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3Qo
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldh
c0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29u
dGV4dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZXNoYXBlKGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQp
CisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBlbHNlCisg
ICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisjZW5kaWYKKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJiBleHRlbnNp
b24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChleHRl
bnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJrQ29u
dGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2RiMGNmNTE4YWJmOWJiMjVhYjMzNmRkZGUwMzk5OTI1YWEwNWYzMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBwcm9jZXNzIHNpZGUgaW1w
bGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRl
eHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJh
c2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBs
YXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgOiBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBw
cml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKworcHJvdGVjdGVkOgor
ICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4pOwor
CisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rp
b24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3Qg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTDo6
Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBvc2l0ZSgpIGZpbmFsOworICAgIHZv
aWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKSBm
aW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBmaW5h
bDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQgcmVzaGFwZShp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKFN0cmluZyYmKTsKKyAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgPSAwOworI2Vs
c2UKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisjZW5kaWYKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVlYTcxNTI0ZDQwODE5YmEwMzEwY2I0MjAxMzYwNzU2Njg3ODY4
NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOTQgQEAKKy8q
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wu
IERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQor
CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKKyAg
ICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0
IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0Ep
CisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYK
KyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2
b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisKKyAgICB2b2lkIFNldEZhaWxOZXh0R1BV
U3RhdHVzQ2hlY2soKQorICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3Ip
CisgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4
dHVyZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBz
aGFkZXIpCisgICAgdm9pZCBCaW5kQXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMy
X3QgaW5kZXgsIFN0cmluZyBuYW1lKQorICAgIHZvaWQgQmluZEJ1ZmZlcih1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQg
Z3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvbih1
aW50MzJfdCBtb2RlKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1v
ZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAgICB2b2lkIEJsZW5kRnVuYyh1aW50MzJfdCBz
ZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHZvaWQgQmxlbmRGdW5jU2VwYXJhdGUodWlu
dDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJf
dCBkc3RBbHBoYSkKKyAgICB2b2lkIENoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFy
Z2V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDbGVh
cih1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdy
ZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIENsZWFyRGVwdGgoZmxvYXQg
ZGVwdGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHZvaWQgQ29sb3JN
YXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgdm9p
ZCBDb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5VGV4SW1hZ2UyRCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgYm9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3Jl
YXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgQ3JlYXRlRnJhbWVidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBDcmVhdGVQcm9ncmFtKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUmVuZGVyYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2hhZGVyKHVpbnQzMl90IGFy
ZzApIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0
ZVRleHR1cmUoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgRGVsZXRlQnVmZmVyKHVpbnQzMl90
IGFyZzApCisgICAgdm9pZCBEZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgRGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUmVuZGVyYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkK
KyAgICB2b2lkIERlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlcHRoRnVu
Yyh1aW50MzJfdCBmdW5jKQorICAgIHZvaWQgRGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB2b2lk
IERlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgdm9pZCBEZXRhY2hTaGFk
ZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIERpc2FibGUodWludDMy
X3QgY2FwKQorICAgIHZvaWQgRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4
KQorICAgIHZvaWQgRHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQz
Ml90IGNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEVuYWJsZSh1
aW50MzJfdCBjYXApCisgICAgdm9pZCBFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBp
bmRleCkKKyAgICB2b2lkIEZpbmlzaCgpCisgICAgdm9pZCBGbHVzaCgpCisgICAgdm9pZCBGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQs
IHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB2b2lkIEZy
YW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwg
dWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHZv
aWQgRnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBHZW5lcmF0ZU1pcG1hcCh1aW50
MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRBY3RpdmVBdHRyaWIodWludDMyX3QgcHJvZ3JhbSwg
dWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZl
VW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcg
bmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRC
dWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U3RyaW5nKHVpbnQzMl90
IG5hbWUpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRG
bG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcnYo
dWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjQodWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgpIC0+IChpbnQ2
NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbWkodWludDMy
X3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZh
bHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRQcm9ncmFtSW5mb0xvZyh1aW50
MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1l
KSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRl
cmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwKSAt
PiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUp
IC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlLCBHQ0dMaW50IHByZWNp
c2lvbikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcw
KSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFy
YW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRp
b24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0s
IGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtdWl2
KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkg
LT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAo
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFZlcnRleEF0dHJp
Yk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50NjRfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBtb2RlKQorICAgIHZvaWQgSXNCdWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0VuYWJsZWQodWludDMyX3QgY2FwKSAt
PiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzRnJhbWVidWZmZXIo
dWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBJc1Byb2dyYW0odWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+
IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNUZXh0dXJlKHVpbnQz
Ml90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgTGlu
ZVdpZHRoKGZsb2F0IGFyZzApCisgICAgdm9pZCBMaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQor
ICAgIHZvaWQgUGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAg
dm9pZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgdm9pZCBS
ZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2FtcGxlQ292ZXJh
Z2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHZvaWQgU2Npc3NvcihpbnQzMl90IHgs
IGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBTaGFk
ZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nIGFyZzEpCisgICAgdm9pZCBTdGVuY2lsRnVu
Yyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0
ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCBy
ZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQor
ICAgIHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNr
KQorICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50
MzJfdCB6cGFzcykKKyAgICB2b2lkIFN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVp
bnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFRl
eFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0p
CisgICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUs
IGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBVbmlmb3JtMWYoaW50MzJfdCBsb2NhdGlvbiwgZmxv
YXQgeCkKKyAgICB2b2lkIFVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBp
bnQzMl90IHgpCisgICAgdm9pZCBVbmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm0yZihpbnQzMl90IGxvY2F0
aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVW5pZm9ybTJmdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9ybTJpKGlu
dDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHZvaWQgVW5pZm9ybTJp
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAg
dm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eikKKyAgICB2b2lkIFVuaWZvcm0zZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZvaWQgVW5pZm9ybTNpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlm
b3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQg
dykKKyAgICB2b2lkIFVuaWZvcm00ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBVbmlmb3Jt
NGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAg
ICB2b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJp
eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAg
ICB2b2lkIFVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZhbGlkYXRlUHJvZ3Jh
bSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgs
IGZsb2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJm
KHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVmVydGV4QXR0cmli
MmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiB2YWx1ZXMp
CisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeikKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNmdih1aW50MzJfdCBpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmli
NGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisg
ICAgdm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYlBvaW50ZXIodWludDMy
X3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBp
bnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVmlld3BvcnQoaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQg
QnVmZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2Fn
ZSkKKyAgICB2b2lkIEJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PiBkYXRhLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlclN1YkRh
dGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIFJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3Qg
eSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMy
X3QgdHlwZSwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQs
IHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleEltYWdlMkQwKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykK
KyAgICB2b2lkIFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleFN1YkltYWdlMkQxKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1h
Z2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21w
cmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3Qg
Ym9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29t
cHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9m
ZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50
MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0
YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJf
dCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9k
ZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90
IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheSgpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5
KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApIC0+
IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5
KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFk
VGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0
X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBHZXRCdWZmZXJTdWJEYXRh
KHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4g
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNy
Y1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90
IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisg
ICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5
ZXIpCisgICAgdm9pZCBJbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cykKKyAgICB2b2lkIEludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBSZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB2
b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgdm9pZCBUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVs
cykKKyAgICB2b2lkIFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90
IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lk
IENvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ29tcHJl
c3NlZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRl
cHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGlu
dDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZz
ZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdl
U2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJl
c3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJf
dCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEdldEZyYWdEYXRhTG9jYXRp
b24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50
MzJfdCB2MCkKKyAgICB2b2lkIFVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3Qg
djAsIHVpbnQzMl90IHYxKQorICAgIHZvaWQgVW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1
aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAgIHZvaWQgVW5pZm9ybTR1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYy
LCB1aW50MzJfdCB2MykKKyAgICB2b2lkIFVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtMnVpdihp
bnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAg
IHZvaWQgVW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4
MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0
cml4NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEp
CisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHos
IGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0
cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3Qg
eiwgdWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0
ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0
eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd1Jhbmdl
RWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgaW50
MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJh
d0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIENs
ZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJ1aXYodWlu
dDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBp
bnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlcykKKyAg
ICB2b2lkIENsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIs
IGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgdm9pZCBDcmVhdGVRdWVyeSgpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVF1ZXJ5
KHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgSXNRdWVyeSh1aW50MzJfdCBxdWVyeSkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCZWdpblF1ZXJ5KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBFbmRRdWVyeSh1aW50MzJfdCB0YXJn
ZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRRdWVyeU9i
amVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2FtcGxlcigpIC0+ICh1aW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVNhbXBsZXIodWludDMy
X3Qgc2FtcGxlcikKKyAgICB2b2lkIElzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKSAtPiAoYm9v
bCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRTYW1wbGVyKHVpbnQzMl90
IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyaSh1aW50
MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFNh
bXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBw
YXJhbSkKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVp
bnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBHZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkg
LT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBGZW5jZVN5bmMo
dWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncykgLT4gKHVpbnQ2NF90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTeW5jKHVpbnQ2NF90IGFyZzApIC0+IChib29s
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlU3luYyh1aW50NjRfdCBh
cmcwKQorICAgIHZvaWQgQ2xpZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxh
Z3MsIHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2
NF90IHRpbWVvdXQpCisgICAgdm9pZCBHZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBw
bmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVh
dGVUcmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHZv
aWQgSXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMy
X3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2
b2lkIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0
cmluZz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgdm9pZCBHZXRUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBSZXN1bWVUcmFuc2Zv
cm1GZWVkYmFjaygpCisgICAgdm9pZCBCaW5kQnVmZmVyQmFzZSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAgdm9pZCBCaW5kQnVmZmVyUmFuZ2Uo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBHZXRVbmlmb3JtSW5kaWNlcyh1aW50
MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB1bmlmb3JtTmFtZXMpIC0+IChWZWN0b3I8dWlu
dDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9y
bXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90PiB1bmlmb3JtSW5kaWNlcywgdWlu
dDMyX3QgcG5hbWUpIC0+IChWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcg
dW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50
MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMy
X3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAg
dm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1
bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+
IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAs
IGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0
WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90
IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBD
cmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisg
ICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4g
KFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEluc2VydEV2ZW50TWFy
a2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBh
cmcwKQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHZvaWQgRHJhd0J1ZmZlcnNF
WFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIERyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNv
dW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90
IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCit9CisKKyNlbmRpZgorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdjNDBjOTg1Y2I3
ZDI3MjI4NjlhNWRmZjk2OTE5NDcwNzdhZjQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSB7CisKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EgZmluYWwgOiBwdWJs
aWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CisK
KyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVw
YXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYm
KT4mJikgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biBvdmVycmlkZXMuCisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBmaW5hbDsKKyAgICB2b2lk
IHByZXNlbnQoQnVmZmVyKSBmaW5hbDsKKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBmaW5hbDsK
K3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZl
ciBtX2Rpc3BsYXlCdWZmZXI7Cit9OworCit9CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmll
cikKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KGF0dHJpYnV0ZXMsIHRoaXMpKQoreworfQorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZm
ZXIoKQoreworICAgIHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQorewor
ICAgIEFTU0VSVCghbV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIG1fZGlzcGxheUJ1ZmZl
ciA9IFdURk1vdmUoYnVmZmVyKTsKK30KKwordm9pZCogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6ZGV0YWNoQ2xpZW50KCkKK3sKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3Bs
YXlCdWZmZXIuaGFuZGxlLCBudWxscHRyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6
TWFjaFNlbmRSaWdodCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2NvbnRleHQt
PnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV1RGTW92ZSht
X2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7CisgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7Cisg
ICAgaWYgKGRpc3BsYXlCdWZmZXIpCisgICAgICAgIHNlbmRSaWdodCA9IGRpc3BsYXlCdWZmZXIt
PmNyZWF0ZVNlbmRSaWdodCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJp
Z2h0KSk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmZmU4YzFmYzdhZmExNzJmMWJi
OWM3MzQyNjc1YzVkZmU2ZTE3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0
ZWQuaApAQCAtMCwwICsxLDExODMgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIHNo
b3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisgICAgdm9p
ZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOworICAgIH0KKyAgICB2b2lkIHN5bnRoZXNpemVH
TEVycm9yKHVpbnQzMl90IGVycm9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihlcnJvcik7CisgICAgfQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGlj
RXJyb3JMaXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBh
Y3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hhZGVyKHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgfQorICAgIHZvaWQgYmluZEF0
dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcmJiBuYW1l
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5k
ZXgsIG5hbWUpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdl
dCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVm
ZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4dHVy
ZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRDb2xv
cihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7
CisgICAgfQorICAgIHZvaWQgYmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGJs
ZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdC
LCBtb2RlQWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9y
LCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmMo
c2ZhY3RvciwgZGZhY3Rvcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodWlu
dDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJf
dCBkc3RBbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUo
c3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVu
dW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNrKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9pZCBjbGVh
ckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCBjbGVh
clN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5j
aWwocyk7CisgICAgfQorICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBi
b29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFz
ayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KGdyZWVuKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4oYWxwaGEpKTsKKyAgICB9CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7Cisg
ICAgfQorICAgIHZvaWQgY29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1
YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQs
IGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICB9CisgICAgdm9pZCBjcmVhdGVCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Y3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBjcmVhdGVGcmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBs
YXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFkZXIodWlu
dDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKGFyZzAp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgY3JlYXRlVGV4dHVyZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBjdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
dWxsRmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOworICAgIH0K
KyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRl
bGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVs
ZXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodWlu
dDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVy
KGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZv
aWQgZGVsZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVUZXh0dXJlKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1aW50MzJf
dCBmdW5jKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CisgICAg
fQorICAgIHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+ZGVwdGhNYXNrKHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAgfQorICAg
IHZvaWQgZGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0
YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRldGFjaFNoYWRlcihhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNh
YmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXAp
OworICAgIH0KKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRl
eCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGlu
ZGV4KTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Zmlyc3QsIGludDMyX3QgY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJh
eXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHModWlu
dDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5
cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGVu
YWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXAp
OworICAgIH0KKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRl
eCk7CisgICAgfQorICAgIHZvaWQgZmluaXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZmluaXNoKCk7CisgICAgfQorICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5mbHVzaCgpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVy
dGFyZ2V0LCB1aW50MzJfdCBhcmczKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwg
YXJnMyk7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFy
ZzMsIGludDMyX3QgbGV2ZWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVy
VGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7Cisg
ICAgfQorICAgIHZvaWQgZnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmZyb250RmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1h
cCh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlw
bWFwKHRhcmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFyZzIp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50
MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVy
UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmcodWludDMy
X3QgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRG
bG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8
c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5h
bWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50
NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIGdldEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldElu
dGVnZXI2NChwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1aW50
MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
NjRpKHBuYW1lLCBpbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGludDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbWkodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3Jh
bWkocHJvZ3JhbSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90
IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGJv
b2w+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMYm9v
bGVhbiwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8Ym9v
bCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEVy
cm9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFcnJvcigpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAg
IHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBnZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFNoYWRlcmkoYXJnMCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xvZyh1
aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWlu
dDMyX3QgcHJlY2lzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3QsIDI+LCBpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIHN0ZDo6YXJyYXk8R0NHTGludCwgMj4gcmFuZ2UgeyB9OworICAgICAgICBHQ0dM
aW50IHByZWNpc2lvbiA9IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNp
b25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNpemUoKSks
IHByZWNpc2lvbik7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFy
ZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKGFyZzApOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0
VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJp
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFt
LCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNp
emVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHBy
b2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRh
KCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYodWludDMy
X3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRp
Y19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90
Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5p
Zm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1
ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50
LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBt
X2NvbnRleHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRl
cnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdl
dFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTHNpemVpcHRyIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2Rl
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAgfQor
ICAgIHZvaWQgaXNCdWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNCdWZm
ZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNhcCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+aXNFbmFibGVkKGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNGcmFt
ZWJ1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5pc1Byb2dyYW0oYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNSZW5kZXJi
dWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIoYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+aXNTaGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJlKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9
CisgICAgdm9pZCBsaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+bGluZVdpZHRoKGFyZzApOworICAgIH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzApOworICAg
IH0KKyAgICB2b2lkIHBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAg
IH0KKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKKyAg
ICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGZs
b2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxl
Q292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsKKyAgICB9
CisgICAgdm9pZCBzY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3
aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMyX3QgYXJn
MCwgU3RyaW5nJiYgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNl
KGFyZzAsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMs
IGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
dGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5j
U2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQz
Ml90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUo
ZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFzayh1aW50
MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsK
KyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQz
Ml90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUo
ZmFjZSwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVp
bnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
c3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9w
U2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVp
bnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0
ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRl
cmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOwor
ICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBw
bmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmKGlu
dDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm0xZihsb2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVu
aWZvcm0xaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYm
IHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0
IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlv
biwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0yZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwg
di5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwg
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2KGlu
dDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9j
YXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvbiwg
eCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm00ZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
eiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRp
b24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRy
YW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+
KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRh
KCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGlu
dDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lk
IHZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52YWxpZGF0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYo
dWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRl
eEF0dHJpYjFmKGluZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodWlu
dDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3Bh
bjwxPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgs
IGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4
LCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB4
LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRm
KGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodWlu
dDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bh
bjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50
MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihub3Jt
YWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9
CisgICAgdm9pZCB2aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHks
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90IHRh
cmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzEp
LCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
LCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQ2NF90IG9mZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPihvZmZzZXQpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCByZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFT
aXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0
PiBkYXRhKHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250
ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCByZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQg
dGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRh
dGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAg
ICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBy
ZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZz
ZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQz
Ml90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZv
aWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXpl
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3
QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291
bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJy
YXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwg
dWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRp
dmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5k
ZXgsIGRpdmlzb3IpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJh
eSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhB
cnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgYmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJpbmRWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3Vi
RGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3Qg
cmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFy
Z2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsK
KyAgICB9CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0
X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFT
aXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0
YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIGRhdGEpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBibGl0
RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwg
aW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RY
MSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5ibGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwg
c3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0K
KyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBs
YXllcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIo
dGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0KKyAgICB2
b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90
IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cywgaW50
MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRh
dGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0K
KyAgICB2b2lkIHJlYWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5yZWFkQnVmZmVyKHNyYyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNh
bXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0
ZXhTdG9yYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT50ZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQz
Ml90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYm
IHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBp
eGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2Uz
RDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBi
b3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0
YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1Yklt
YWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBp
bnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWlu
dDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1Yklt
YWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNv
cHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9y
bWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJf
dCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZv
aWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRl
cHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwg
aW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGlu
dDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhZ0Rh
dGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpKGludDMy
X3QgbG9jYXRpb24sIHVpbnQzMl90IHYwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtMXVpKGxvY2F0aW9uLCB2MCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQzMl90
IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQz
Ml90IHYyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24s
IHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2
Myk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtMXVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2Nh
dGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRh
LmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aXYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xm
bG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNw
b3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
eDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGludDMy
X3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYm
IGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
STRpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiYmIHZh
bHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwg
bWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5k
YXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRl
eCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2
b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVp
bnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBz
dHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lk
IGRyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJf
dCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVu
ZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0K
KyAgICB2b2lkIGRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVm
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGludDMy
X3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVlcykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIs
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0
YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KHVp
bnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1
aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgY2xlYXJCdWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBp
bnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0
aCwgc3RlbmNpbCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAgfQorICAg
IHZvaWQgaXNRdWVyeSh1aW50MzJfdCBxdWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNRdWVyeShx
dWVyeSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdl
dCwgcXVlcnkpOworICAgIH0KKyAgICB2b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9CisgICAgdm9p
ZCBnZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWko
dWludDMyX3QgcXVlcnksIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1aW50IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVl
cnlPYmplY3R1aShxdWVyeSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBs
YXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5jcmVhdGVTYW1wbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBs
ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7Cisg
ICAgfQorICAgIHZvaWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
Ym9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmlzU2FtcGxlcihzYW1wbGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcih1
aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5iaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5h
bWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBz
YW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3Qg
cG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgZmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTHN5bmMgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5mZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90
PihyZXR1cm5WYWx1ZSkpKTsKKyAgICB9CisgICAgdm9pZCBpc1N5bmModWludDY0X3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+aXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRp
Y19jYXN0PGludHB0cl90PihhcmcwKSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5bmMo
dWludDY0X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3luYyhyZWlu
dGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAg
ICB9CisgICAgdm9pZCBjbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFn
cywgdWludDY0X3QgdGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRTeW5jKHJl
aW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIGZs
YWdzLCBzdGF0aWNfY2FzdDxHQ0dMdWludDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1aW50NjRf
dCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT53YWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0aW1lb3V0
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4o
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgfQorICAgIHZvaWQg
aXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUcmFu
c2Zvcm1GZWVkYmFjayhpZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRi
YWNrKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAgdm9pZCBi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7Cisg
ICAgfQorICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2YXJ5
aW5ncywgdWludDMyX3QgYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dy
YW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07
CisgICAgICAgIG1fY29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0s
IGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcmcyKSk7
CisgICAgfQorICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCBy
ZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOwor
ICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IGluZGV4LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgs
IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NH
THNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGljZXModWlu
dDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlm
b3JtTmFtZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwg
VmVjdG9yPHVpbnQzMl90PiYmIHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1
bmlmb3JtSW5kaWNlcywgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgodWlu
dDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgdW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0
QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3Jt
QmxvY2tJbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHBy
b2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmco
dWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVu
aWZvcm1CbG9ja0JpbmRpbmcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1CbG9j
a0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcp
OworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dy
YW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3Qg
cGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dM
aW50LCA0PiBwYXJhbXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJs
b2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFt
cy5kYXRhKCkpLCBwYXJhbXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBp
bnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgw
LCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBt
YXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5ibGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwg
ZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZv
aWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRl
eEFycmF5T0VTKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVh
dGVWZXJ0ZXhBcnJheU9FUygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFy
cmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMyX3Qg
YXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMo
YXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFy
ZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4
QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50
TWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBwb3BHcm91cE1hcmtlckVYVCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtlckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZm
ZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJf
dCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZv
aWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zm
c2V0KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRp
dmlzb3IpOworICAgIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21h
Yy9HUFVQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9j
ZXNzTWFjLm1tCmluZGV4IGI3YmI2M2IyOWFkODAyMTcyZGYyN2ExMjg5NWJiMTk5OGZhNGI2YjAu
LjI0YzQzN2NhYWU3ZjhmOWE5YWZmOTI3MDNlZmNmOWRhMDMxZTRjNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KQEAgLTMyLDggKzMyLDggQEAK
ICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldL
Rm91bmRhdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1w
b3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQ
SS5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsOSArNDQsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB2b2lkIEdQVVByb2Nlc3M6OmluaXRpYWxpemVQ
cm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQog
ewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIDAKICAg
ICAvLyBIYXZpbmcgYSB3aW5kb3cgc2VydmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNzIHdv
dWxkIHJlc3VsdCBpbiBzcGluIGxvZ3MgKDxyZGFyOi8vcHJvYmxlbS8xMzIzOTExOT4pLgotICAg
IE9TU3RhdHVzIGVycm9yID0gU2V0QXBwbGljYXRpb25Jc0RhZW1vbih0cnVlKTsKLSAgICBBU1NF
UlRfVU5VU0VEKGVycm9yLCBlcnJvciA9PSBub0Vycik7CisgICAgYXV0byByZXR2YWwgPSBDR1NT
ZXREZW55V2luZG93U2VydmVyQ29ubmVjdGlvbnModHJ1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
cmV0dmFsID09IGtDR0Vycm9yU3VjY2Vzcyk7CisgICAgQ0dTU2h1dGRvd25TZXJ2ZXJDb25uZWN0
aW9ucygpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0
LkdQVVByb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBs
ZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgppbmRleCBkYjA2ZTUzNGY3ZjUxZDJlYmQwMzgyNWY1
ODI0NWY4NDk2ZjhiMTc5Li5lZDEwMGIzNmVkNmY0NmQ0YWFmNjM1NDQ3Nzg4MmFiNzkzYTExYmNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJL
aXQuR1BVUHJvY2Vzcy5zYi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2Nv
bS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgpAQCAtMjA3LDYgKzIwNyw3IEBACiAgICAg
KGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkFBUEwsKERpc3BsYXlQaXBlfE9wZW5DTGRpc2FibGVk
fElPR3JhcGhpY3NfTEVSKHxfUmVnVGFnXzF8X1JlZ1RhZ18wfF9CdXN5XzIpfGFsaWFzLXBvbGlj
eXxib290LWRpc3BsYXl8ZGlzcGxheS1hbGlhc3xtdXgtc3dpdGNoLXN0YXRlfG5kcnYtZGV2fHBy
aW1hcnktZGlzcGxheXxzbG90LW5hbWUpIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJe
QVRZLChjYml0c3xmYl8obGluZWJ5dGVzfG9mZnNldHxzaXplKXxpbnRyZXYpIikKICAgICAoaW9r
aXQtcHJvcGVydHkgIkFUWSxEZXZpY2VOYW1lIikgOzsgTmVlZGVkIGJ5IE1ldGFsIGNvbXBpbGVy
cworICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEVGSURpc3BsYXkiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eSAiQVRZLEZhbWlseU5hbWUiKSA7OyBEaXR0bwogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVZD
U3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkJhY2tsaWdodEhhbmRsZSIpCkBAIC0y
MTcsNiArMjE4LDkgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIkNhcHNMb2NrRGVsYXkiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiQ2FzZVNlbnNpdGl2ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJD
b25maWdTdGF0ZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExhbmVzIikKKyAgICAoaW9raXQt
cHJvcGVydHkgIkRQTGlua0JpdCIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtSYXRlIikK
ICAgICAoaW9raXQtcHJvcGVydHkgIkRlc2NyaXB0aW9uIikKICAgICAoaW9raXQtcHJvcGVydHkg
IkRldmVsb3BtZW50IikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeRGV2aWNlKCBDaGFy
YWN0ZXJpc3RpY3N8RXFJRCkiKQpAQCAtMjI5LDEwICsyMzMsMTcgQEAKICAgICAoaW9raXQtcHJv
cGVydHkgIkZhbWlseSBJRCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JjZVN1cHBvcnRlZCIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JtYXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZy
YW1lYnVmZmVyRW5hYmxlZCIpCisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlclN0YXJ0
ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVQ29uZmlndXJhdGlvblZhcmlhYmxlIikKKyAg
ICAoaW9raXQtcHJvcGVydHkgIkdQVURDQ0Rpc3BsYXlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVy
dHkgIkdQVURlYnVnTnVsbENsaWVudE1hc2siKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR3B1RGVi
dWdQb2xpY3kiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVUmF3Q291bnRlckJ1bmRsZU5hbWUi
KQorICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVUmF3Q291bnRlclBsdWdpbkNsYXNzTmFtZSIpCiAg
ICAgKGlva2l0LXByb3BlcnR5ICJIRVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkg
IkhJRFBvaW50ZXJBY2NlbGVyYXRpb25UeXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkh3Q3R4
Q2FjaGVVcGRhdGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0FjY2VsKERpc3Bs
YXlQaXBlQ2FwYWJpbGl0aWVzfEluZGV4fFR5cGVzfFJldmlzaW9uKSIpCiAgICAgKGlva2l0LXBy
b3BlcnR5LXJlZ2V4ICMiXklPKENsYXNzfE1hdGNoQ2F0ZWdvcnl8TmFtZU1hdGNoKSIpCiAgICAg
KGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPQXVkaW9Db250cm9sKENoYW5uZWxJRHxJRHxTdWJU
eXBlfFVzYWdlfFZhbHVlKSIpCkBAIC0yODIsNiArMjkzLDggQEAKICAgICAoaW9raXQtcHJvcGVy
dHkgIklPUGFyZW50TWF0Y2giKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT1BDSSgo
Q2xhc3N8UHJpbWFyeXxQcm9wZXJ0eXwpTWF0Y2h8RXhwcmVzcyhDYXBhYmlsaXRpZXN8TGluayhT
dGF0dXN8Q2FwYWJpbGl0aWVzKSl8TVNJTW9kZXxSZXNvdXJjZWR8VHVubmVsbGVkKSIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJJT1BNSXNQb3dlck1hbmFnZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiSU9QZXJzb25hbGl0eVB1Ymxpc2hlciIpCisKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXgg
IyJeSU9QbGF0Zm9ybShTZXJpYWxOdW1iZXJ8VVVJRCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
SU9Qb3dlck1hbmFnZW1lbnQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qcm9iZVNjb3JlIikK
QEAgLTMxNyw2ICszMzAsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiUHJvdG9jb2wgQ2hhcmFj
dGVyaXN0aWNzIikKICAgICAoaW9raXQtcHJvcGVydHkgIlJlbW92YWJsZSIpCiAgICAgKGlva2l0
LXByb3BlcnR5LXJlZ2V4ICMiXlJlc2V0T24oTG9ja3xVbmxvY2spTXMiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiU1dJUF9wcm9wZXJ0aWVzIikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhZmVFamVj
dFJlcXVlc3RlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTYW1wbGVSYXRlcyIpCiAgICAgKGlv
a2l0LXByb3BlcnR5ICJTZXJpYWwgTnVtYmVyIikKQEAgLTMzOCw2ICszNTIsNyBAQAogICAgIChp
b2tpdC1wcm9wZXJ0eSAiYXR0YWNoZWQtZ3B1LWNvbnRyb2wtcGF0aCIpCiAgICAgKGlva2l0LXBy
b3BlcnR5LXJlZ2V4ICMiXmF1ZGlvLShjb2RlYy1pbmZvfGRldmljZS1tdmFsdWV8ZGV2aWNlLW52
YWx1ZXxzZWxlY3RvcikiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXYtc2lnbmFsLXR5cGUiKQor
ICAgIChpb2tpdC1wcm9wZXJ0eSAiYmFja2xpZ2h0LVBXTS1mcmVxIikKICAgICAoaW9raXQtcHJv
cGVydHkgImJjZFZlcnNpb24iKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oYm9hcmR8
ZGV2aWNlfHJldmlzaW9ufHN1YnN5c3RlbXx2ZW5kb3IpLWlkIikKICAgICAoaW9raXQtcHJvcGVy
dHkgImJvb3QtZ2FtbWEtcmVzdG9yZWQiKQpAQCAtMzUwLDYgKzM2NSwxMSBAQAogICAgIChpb2tp
dC1wcm9wZXJ0eSAiY29ubmVjdG9yLXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAj
Il4oZGV2aWNlfHJldmlzaW9ufHN1YnN5c3RlbS12ZW5kb3J8dG91Y2gtc2l6ZSktaWQiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiZGV2aWNlX3R5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlz
cGxheS1icGMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1jb25uZWN0LWZsYWdzIikK
KyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktbGluay1jb21wb25lbnQtYml0cyIpCisgICAg
KGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXBpeGVsLWNvbXBvbmVudC1iaXRzIikKKyAgICAoaW9r
aXQtcHJvcGVydHkgImRpc3BsYXktdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJkcG0iKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiZXJyb3JkYiIpIDs7IE5lZWRlZCBmb3IgT3BlbkdMIG9uIG9s
ZGVyIGhhcmR3YXJlCiAgICAgKGlva2l0LXByb3BlcnR5ICJmaWxldmF1bHQtaW1hZ2UiKSA7OyBO
ZWVkZWQgYnkgTGF1bmNoU2VydmljZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCmluZGV4IGU2YTE4ZGRh
NmUwOTJmZGIxODA0NDZlNGYzYTA4M2NmNTNjMjc2MTkuLjM3OTI4ZTFiODNkNGU1MjQ0NTNhOGQy
N2NjM2I4NzkwMWIyNDlhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgVVNFKEFVRElPX1NFU1NJT04pCiAKICNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKaW5kZXggZDliZjUyMjcyYzM3MjkxNTc1
YjViMzkzMjYyZTc3MjEzYjkzMGRkNC4uOGYwMTE5ZWRmZTFkNmU5MzI0MzAwNWIzNDQxMjViMjRl
YWI5MWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUg
IkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5o
IgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2
YTVjNjcyNWNhYTliZGI4NjdhYjg2YjhjNTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4
NjhhNWY4MzdlZmVkNjZkZGY5NWYyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBSZW1vdGVMZWdhY3lDRE1Qcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRl
eCA0N2Y1ZDJmMjcwZmE1ZGU0ZmFkZTE1MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1
Njk2MGEzZjNlYzg3NmM4YjgyNWM2ZTQ1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNw
cApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9MZWdhY3lDRE0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4
MDIzMTkwNGY4ZWYwZWFhOTM2MjI5YWZhOTc1OTguLmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQz
MzQxNWU5MTUxMTQ0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjks
NiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
LSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJj
ZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4
OWI4MDNmNmFiZjQxYzhlOWVkZGU0MTQyNzY5MzI4MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1
YWEzZDU0ODA2ZjcyYzdlZGMwY2IxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywx
NSArMjcsMTYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lD
aGVja2VyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDZiZmJmYWZiMjA0NDc4
MzBkNzMwYzM4YzU1ZDkxNjAyMmMyM2QzMTYuLjA2ZTMwOWU0ZDU3ZWEwNDdmNWVkODI5MDI1OGIx
OWNiY2RhNjE5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaApAQCAtMzgsNyArMzgsNiBAQAogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4
IDI0NWNmNDBkZmM2ZmM3MjQxNzQ5OWM5OTZlZWE5NWYwYTNhOGQ2OWEuLjg2ODJjZDc5NWE1ZjU0
NGFiYjc4ZTdjMWI4NTg3Yjk2ODgzZjk0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtMjks
NyArMjksNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggMzkwYzBjZTFjMjdiNjA4ZGM5
N2FhZmE1MTg2MzYxODgwYzNhZjRkMy4uYzMzNzgzMzNjMDI2NjZkYTYxYWJhYzY0OTQ3MDIxMjFk
YjVlODZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KQEAgLTM4LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29u
bmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKaW5kZXggMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYx
ODNhYmQwZTc0NWI4MzUzMy4uODQzYmIwNmY3YjU2YzZlM2NmYmVlNzlhN2U0MjgxZWZlZThmOWE3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaApAQCAtMjgsMTQgKzI4LDE1IEBACiAjaWYgVVNFKExJQldFQlJUQykg
JiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVj
b2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorCiAj
aW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmOGFiYzFm
NDA1ZmMxNDY5NDc1YjRkOTBiYWQzZDUzY2EwZjgwMTRlLi42MWM0NzA4YWU5NmRiY2FhNTY5ODA5
ZWUxOTk1YmU4MTZhOTFmZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAog
I2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1w
b3J0ICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDc4OGM1
ZjAwYzAyZjRmMTQ4ZmVlY2NkMzhkMTA2ODE4YjBkN2U5NjEuLjNhYjRlNGIxY2YxYzE0MTIzMGMx
M2U0NTc2YzVlZDZlNmVmYzJlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtMzYs
NyArMzcsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQppbmRl
eCA3YTYzMzYzNDdjMDA3ZTk3YjczYjU0Mzc3NDkxNjgzOGQ2NDAzN2RhLi4xYWE1M2NjMmZiNzdi
YWY5ZTMyNjUwNzIxMDgwOWZkNzZjZmJiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVBy
b3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtMjYs
NyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIuaCIKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVBy
b3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBmNmVkODExZjUzNDJm
ZTQ4NTU1MTc2Zjg5ZDUxNDU3NTYyYzY2NTg1Li4wYmNkNTY3M2M5MzQ2YWRhMTFkNjU2YzNhZGQ1
MWJlNGVkYmMyNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBw
bGVtZW50LmgiCkBAIC0zOSwxMCArNDAsNiBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZp
Z3VyYXRpb247CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAotbmFtZXNw
YWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfSAvLyBuYW1lc3BhY2UgSVBDCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CkBAIC0xMTIsNCArMTA5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHAKaW5kZXggZGRiZTRlZWRkNDQxZGY4N2M1NWFkMzMwZjA0MmNjZGNmYWRm
YjkwYi4uNjUxZmYyNTRmOTA1YzE2YTkwY2I0ODJjOTc3M2Q0YWM3NDI5NGVjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgogI2luY2x1ZGUgIkRv
d25sb2FkUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlm
ZGVjMzY5MDE3NzI3NC4uOTNmMDNhODI1NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1h
bmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBA
IE9CSkNfQ0xBU1MgTlNQcm9ncmVzczsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRU
YXNrOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0K
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBj
bGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIx
NjM0MGYyN2MxNjA1YzNjZDc0YmM2OTA3YjdkOTFiNDdiNzYyLi43MjZkZDk5MGJhZmQ0Mzk0YjVh
ZmMwMzJhMWNmMjBmMTg0OWM0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIK
IAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0xvYWQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2
NWYxYzcyNjc4ZmE1MC4uOTgwYTA2Zjc4MzlkYmQ1ZTlmOWQ1MDQ1NDA5YTMzZDc3YjFjMDM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1
ZGUgIkRvd25sb2FkTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC00OSw3
ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCA0NDliMTNkOGUwN2IyY2QwNDJjNGJhMzYzNmFiNzkzZDM3YjFj
M2Y0Li5jNzc4ODgxMWYwMzJkNThmOGI1Mjc3MzZlMWQyMjc4NDEwZjkxM2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNw
cApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtTb2NrZXRDaGFubmVsLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMzE5NjQxOTBk
MTQxZDU0OWRhMGJhZjJkYzhiZjI5N2I0ZTU4MWU4OS4uMDQzNGJmODgwOWE3ZWIzZWNjMThlOGY2
NTBjYzAyNzhhZTZlYjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1l
ci5oPgpAQCAtNDAsNyArNDEsNiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA1YjQ4OWNjNTM4Zjdj
MDcxNTEwMTA2YzU4ZjVjMDk0ZWM5YThlMWI4Li40OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0
Y2NjMzNlMzhjMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNTJlYzM5MjY5MDIxOGVk
ZTY2OGQ1NWU2MzhkOGUxNzUwMmZkNmVlNS4uNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEw
ZGI5ZmIyMDZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFt
RXJyb3IuaD4KQEAgLTM3LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQz
M2NiZmYxMDg5Y2MxMDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLmQzN2Q3ODA2OTgzYmJhNTQ3
Y2EwZjkyMzVlYjRiZjZiNzMxNTY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CkBAIC00Myw3ICs0NCw2
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29u
bmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9y
bURhdGFSZWZlcmVuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29j
a2V0VGFzay5oCmluZGV4IGRiNTc5NWRkMjE3ZjQ1YWQ1ZjY3ZTMwYjc5MWY5MmUyNzZjMDI5ODYu
Ljk2MWU0NjQ1OWJlNzcxNzdlMjYwNWU3ZDg2NTJhZGE4MDIwOTdiNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0zMSw5ICszMSw2IEBACiAj
aW5jbHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIKICNlbHNlCiAKLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2Nv
YS5oCmluZGV4IGRhYzY5MzUwN2ViM2VmY2VhNmQxMDk0ODAxYmMwMWIzNmZlMjYzOWQuLmU2ODI2
ZTQ3ZTgzOTU5NDAyOGFmOGY0YWVkMjM5MmI0YjA1ZDJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAt
MjcsMTUgKzI3LDEyIEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uV2ViU29ja2V0
VGFzazsKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1Nlc3Np
b25Db2NvYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
V2ViU29ja2V0VGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9XZWJTb2NrZXRUYXNrQ29jb2EubW0KaW5kZXggODU1MzQ4NzQ0MDRjZTJiYWE0NGFlNjU2NTQ3
ZDM3MjI1MzMyZWFiOC4uOTBiYzQwOWJmZmI3MGEwZWU5ZTczNThiMzg2NzU5N2QyOWYyNGUwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRU
YXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNT
SU9OX1dFQlNPQ0tFVCkKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTmV0
d29ya1Nlc3Npb25Db2NvYS5oIgogI2ltcG9ydCAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0NWZj
NjY5ZDc2NmE3NjFjNWQ3NzNkYzk1ZjA1NDFhMzhlMzZmOGUzLi5hM2U3MDE0YjVkOGVjMDk3Mzhm
ZmE3ZDU2NjQ1NDUwMTBmMDUzNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogCi0j
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQ
YXJzZXJzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJTb2NrZXRUYXNrU291cC5oCmluZGV4IGU0MjFiOWUxYzcxMzE4NDM0ZjY0ODdmNWZjYjVhNmE4
N2JkNzM5MTkuLjA4ODkyMzk1OWZlNDYwZmYyYmJhNGM4YzA4Mzk5ODA2NTdiZjM0OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oCkBAIC0yNSwxNCArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJ
UEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXJzLmgKaW5kZXggZTAwYTBjY2RmYTU4NzVjMDI4YzUwNTIzMTE0MTcyOGVlOTVi
NDM5Mi4uZTM4YmMxYzYwYWY2ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBA
IC01Myw2ICs1NCw0OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1l
bnRDb2RlciB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVu
dD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4geworICAg
IHVzaW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJl
bmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwg
YXJyYXlSZWZlcmVuY2Uuc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9Cisg
ICAgc3RhdGljIE9wdGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybiBB
cnJheVJlZmVyZW5jZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29k
ZXIuZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9m
KFQpKTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNv
bnN0IFQqPihkYXRhKSwgRXh0ZW50KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5
bmFtaWNFeHRlbnQ+PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZl
cmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJl
ZmVyZW5jZSkKKyAgICB7CisgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihhcnJheVJlZmVyZW5jZS5zaXplKCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5j
ZS5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJl
bmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihU
KSk7CisgICAgfQorICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIGlmICghc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVy
ZW5jZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2Rl
Rml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAg
ICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0
YSksIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlv
blNldCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJh
eVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zZDMyYmI0NTdhNWI4ODVmM2Q1NjY4N2U3OWYxNWMzYTI2NzFiZTY0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVu
Y2UuaApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQQyB7
CisKK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgRXh0ZW50ID0gYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xhc3Mg
QXJyYXlSZWZlcmVuY2U7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlSZWZl
cmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAgQXJy
YXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBtX3Np
emUoc2l6ZSkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+
JiB2ZWN0b3IpCisgICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwgbV9z
aXplKHZlY3Rvci5zaXplKCkpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFtX3NpemU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBtX2RhdGE7CisgICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgewor
ICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwg
bV9zaXplKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBjb25zdCBUKiBtX2RhdGEgeyB9OworICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZSB7
CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJl
ZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0
YSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlS
ZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAg
ICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5z
aXplKCkgPT0gRXh0ZW50KTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIUV4dGVudDsgfQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gRXh0ZW50OyB9CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0
YSB7IH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CitBcnJheVJlZmVyZW5jZShjb25zdCBXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAt
PiBBcnJheVJlZmVyZW5jZTxUPjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggZWMzZDE0YWU4ZjNlYzI0NzA1NDc2M2NhZWU5
MDljYzJjODc1ZjVkOC4uYmJkN2FiY2I0Y2RjNjA0MzgyYjEwNjVlMzMyMzg0NDljNmFjNTk3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjI3LDEwICsyMjcs
MTIgQEAgcHVibGljOgogICAgIHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJ
bnZhbGlkKCk7CiAKICAgICB2b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25X
b3JrUXVldWUoKTsKLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQg
c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOyAv
LyBUaHJlYWQtc2FmZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1l
c3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5k
T3B0aW9ucyA9IHsgfSk7IC8vIFRocmVhZC1zYWZlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5
KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8g
TWFpbiB0aHJlYWQgb25seS4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGNoZWNrIHRoZSBT
ZW5kU3luY1Jlc3VsdCBmb3IgdHJ1ZS9mYWxzZSBpbiBjYXNlIHRoZXkgbmVlZCB0byBrbm93IGlm
IHRoZSByZXN1bHQgd2FzIHJlYWxseSByZWNlaXZlZC4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hv
dWxkIGhvbGQgb24gdG8gdGhlIFNlbmRTeW5jUmVzdWx0IGluIGNhc2UgdGhleSByZWZlcmVuY2Ug
dGhlIGNvbnRlbnRzIG9mIHRoZSByZXBseSB2aWEgRGF0YVJlZmVyZXJlbmNlIC8gQXJyYXlSZWZl
cmVuY2UuCisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdh
aXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4K
ICAgICAKICAgICAvLyBUaHJlYWQtc2FmZS4KQEAgLTI0OSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVv
dXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRT
eW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGlu
YXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAg
LTU1MSw3ICs1NTMsNyBAQCB2b2lkIG1vdmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYgYSwgc3Rk
Ojp0dXBsZTxCLi4uPiYgYikKICAgICBUdXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3RkOjp0dXBs
ZTxBLi4uPiwgc3RkOjp0dXBsZTxCLi4uPj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9u
OjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKQEAgLTU3MCwxNSArNTcyLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVj
dGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICAvLyBO
b3cgc2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0
SUQsIFdURk1vdmUoZW5jb2RlciksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgaWYg
KCFyZXBseURlY29kZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIC8vIERlY29kZSB0aGUgcmVwbHkuCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6
UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVw
bHlBcmd1bWVudHM7CiAgICAgaWYgKCFyZXBseUFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4geyB9OwogICAgIG1vdmVUdXBsZShXVEZNb3ZlKCpyZXBseUFy
Z3VtZW50cyksIHJlcGx5KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gcmVwbHlEZWNv
ZGVyOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JB
bmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjI1ZmRhN2JlZDJmZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgotCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIK
LQotbmFtZXNwYWNlIElQQyB7Ci0KLXZvaWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVB
cnJheSgqdGhpcyk7Ci19Ci0KLWJvb2wgRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZXIuZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5j
ZS5oCmluZGV4IDM0NTBjMzFiNzNkZGI2YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNk
NjkyN2YzNDFjNWFhOTNmYzEwNzNjYjA3NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5j
ZS5oIgogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7
Ci0gICAgCi1jbGFzcyBEYXRhUmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNl
KCkgPSBkZWZhdWx0OwotCi0gICAgRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5Pgot
ICAgIERhdGFSZWZlcmVuY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYg
dmVjdG9yKQotICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6
ZSh2ZWN0b3Iuc2l6ZSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiAhbV9zaXplOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAg
ICAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IHJldHVybiBtX2RhdGE7IAotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBj
b25zdAotICAgIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLSAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1w
cml2YXRlOgotICAgIGNvbnN0IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXpl
X3QgbV9zaXplIHsgMCB9OwotfTsKK3VzaW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5j
ZTx1aW50OF90LCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGVi
NzMwNWJmZDE5MTA4NzA2OGQzMGJjZGI4ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYz
NjJjNWFiOGJiYWRiZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAK
QEAgLTE4NiwyMCArMTg2LDE1IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXko
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRl
Y29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQog
ewotICAgIHVpbnQ2NF90IHNpemU7Ci0gICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxp
Z25tZW50LCBzaXplKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50
OF90KiBkYXRhID0gbV9idWZmZXJQb3M7CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAg
IGRhdGFSZWZlcmVuY2UgPSBEYXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBkYXRhOwogfQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1l
bnQoQXR0YWNobWVudCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIu
aAppbmRleCBiNzJkZDhhY2UyNzczZGIzNTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4
ODJmYzkwOTg0YjJmYTU3YmY5YzQ4Yjk2NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVjb2Rlci5oCkBAIC00MCw3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFz
cyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3Mg
TWVzc2FnZUZsYWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAog
ICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90
KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4g
dGhlIGRhdGEgcmVmZXJlbmNlIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRp
bWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAg
IC8vIFRoZSBkYXRhIGluIHRoZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZh
bGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAg
Ly8gUmV0dXJucyBudWxscHRyIG9uIGZhaWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNv
bnN0IHVpbnQ4X3QqIGRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFs
aWdubWVudCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKFQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNv
ZGVyLmNwcAppbmRleCBmZDQwOTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5l
ODNhM2U0YWZmNDJhNTc1NTA1ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6Ondy
YXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9y
aWdpbmFsLT5zZXRTaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShT
aG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCks
IG9yaWdpbmFsLT5idWZmZXJTaXplKCkpKTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9y
aWdpbmFsLT5idWZmZXIoKSwgb3JpZ2luYWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8
QXR0YWNobWVudD4gYXR0YWNobWVudHMgPSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7
CiAgICAgcmVzZXJ2ZShhdHRhY2htZW50cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2
b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSwgc2l6ZV90IGFsaQogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwog
fQogCi12b2lkIEVuY29kZXI6OmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERh
dGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihkYXRhUmVmZXJlbmNlLnNpemUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0
YShkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2
b2lkIEVuY29kZXI6OmFkZEF0dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAg
ICAgbV9hdHRhY2htZW50cy5hcHBlbmQoV1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmgKaW5kZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYy
NDgyZTRjOWExMS4uZWE2MTk2N2JlMWViY2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1l
c3BhY2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZs
YWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0g
Y2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBA
IC02Miw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5p
cXVlX3B0cjxFbmNvZGVyPik7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5j
b2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFs
dWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQg
ZW5jb2RlKFQmJiB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFu
ZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
CmluZGV4IDdmZDE4M2E1NmFlOThiMDY2NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUy
YjQ5ZDVjOGZjNDFhMmQ2NTRhZGNkODllODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCkBAIC05Niw3ICs5Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0
eXBlZGVmIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5
cGU7CiB9OwogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZTsKIHRlbXBsYXRlPD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSY+IHsKICAgICB1c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCA0NmUyMWQ4ZDkzNmYy
ZDhiNTE2N2IyNDlmODgxMTE2ZmZlYjdkNGI5Li43NzQ2MWQ1NTViNzI5MmMyMGViZjUxNGEzMDJk
MWRjNmU3NzcwMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oCkBAIC01NCw5ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gc2Vu
ZDxVPihtZXNzYWdlLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKICAg
ICB9CisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25k
czo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMg
PSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCks
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIp
OwogCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29u
ZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25z
ID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVv
dXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRT
eW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpKTsKIApAQCAtNzIsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFUmJiBtZXNz
YWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNl
dDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmpl
Y3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6
OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0g
eyB9KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPiht
ZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91
dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFi
ODYzOWI3YmE3NjM2YzYuLjUwMGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyQ29weS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIu
aCIKQEAgLTQ4LDcgKzQ5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZl
ckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShk
YXRhKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0
YS5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUz
MjhmMDFjOTk5OTUwYTAuLmU5NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXgg
ODUyZWY0M2UwMDg2MzFjOWZhZmE4MjMwYzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBl
YWZiM2RjNDdjODVkYTQxOTBhMmJhMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA4YjM3NDBmNGIxMDFhZDkw
ZjUwZWQ1N2M4NTBiOTAzMGZjYzQzMGMyLi40YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2Nk
MTBmZGY3MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTlBPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIk5QUmVtb3RlT2JqZWN0TWFwLmgiCiAjaW5j
bHVkZSAiTlBSdW50aW1lVXRpbGl0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggYWQ0ZmNkOWQ4Y2NmNDJmMTJl
ZTQ4OGUwMTM0NmM2MTlhNzAxYjhkMi4uYzdhNzA1M2NiZDI2ZDIwNDU0YzA0MmM2YWNlMTZjYjUy
NTMwZjQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLW5h
bWVzcGFjZSBJUEMgewotICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNTczZWQzZDhlZTliYmY0MTAzMTY4ZTc5YTA1N2Y5
ZGJkYjliODY5NS4uNjczMjQ0YTY3ZTA5OWZmYjcxODA3ZDU1NTBjNDU0ZjM2MzFkYjEyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDMsNiArMjAzLDcg
QEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5k
X2FuZF90eXBlcyk6CiAKIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVk
KCk6CiAgICAgcmV0dXJuIGZyb3plbnNldChbCisgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2Un
LAogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAg
ICAnU3RyaW5nJywKQEAgLTIxNCw2ICsyMTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVf
Zm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMnLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBA
IC0yNDMsNiArMjQ1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViS2l0OjpEb3dubG9hZElEJywKICAgICAgICAgJ1dlYktpdDo6R2VvbG9jYXRp
b25JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAg
ICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVn
YWN5Q3VzdG9tUHJvdG9jb2xJRCcsCkBAIC01MzAsNiArNTMzLDcgQEAgZGVmIGNsYXNzX3RlbXBs
YXRlX2hlYWRlcnModGVtcGxhdGVfc3RyaW5nKToKICAgICAgICAgJ09wdGlvblNldCc6IHsnaGVh
ZGVycyc6IFsnPHd0Zi9PcHRpb25TZXQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBb
JyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAgICAgJ1ZlY3Rvcic6IHsnaGVhZGVycyc6IFsn
PHd0Zi9WZWN0b3IuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENv
ZGVycy5oIiddfSwKICAgICAgICAgJ3N0ZDo6cGFpcic6IHsnaGVhZGVycyc6IFsnPHV0aWxpdHk+
J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisg
ICAgICAgICdJUEM6OkFycmF5UmVmZXJlbmNlJzogeydoZWFkZXJzJzogWyciQXJyYXlSZWZlcmVu
Y2UuaCInXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIidd
fSwKICAgICB9CiAKICAgICBtYXRjaCA9IHJlLm1hdGNoKCcoP1A8dGVtcGxhdGVfbmFtZT4uKz8p
PCg/UDxwYXJhbWV0ZXJfc3RyaW5nPi4rKT4nLCB0ZW1wbGF0ZV9zdHJpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJRGF0YS5jcHAKaW5kZXggNjEzNDNiZDk0MTA2YjZlNzg5ZjgzYmMyNWRlNzlm
N2E2MDQwOTNjYy4uYzc4MjMxNmYzMDU3YTNjYWY5ZDNlMjA3N2M4MTMyNTUzZTY5NzU2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSURhdGEuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCmluZGV4IDdiYTIwN2FiYjBhY2Nj
OGE1NzBmNWM2NjNmNDZjYWEyNGE4MjZkOTEuLjMxZmQ3ZDAzZmFmZTAzOTU4Nzk1MmE2Mzc4ZDFh
OWM4ZmYyZjc5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKQEAg
LTg0LDcgKzg0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZChib29sKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgc2V0QXBwbGljYXRp
b25Jc0RhZW1vbigpOwogICAgIHZvaWQgbGF1bmNoU2VydmljZXNDaGVja0luKCk7CiAgICAgdm9p
ZCBzZXRRT1MoaW50IGxhdGVuY3lRT1MsIGludCB0aHJvdWdocHV0UU9TKTsKICNlbmRpZgpAQCAt
MTg0LDQgKzE4MywzIEBAIHN0cnVjdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5YzI2ZGI0ZTlhOWY2YmE3
MmU0ODIwYmI0MDZjMmNmYmRlMTEzZTliLi5kYTM3MzRjODRkNjU0ZDhkMDNjYTc5MjVmN2JkNzU5
OTEzYmMzNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKQEAgLTMyMjEsNCArMzIyMSw4MiBAQCBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VEYXRhPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46Ogog
ICAgIHJldHVybiB7IFdURk1vdmUoKnJlc3VsdCkgfTsKIH0KIAorI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5k
ZXB0aDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc3RlbmNpbDsKKyAgICBlbmNvZGVyIDw8
IGF0dHJpYnV0ZXMuYW50aWFsaWFzOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVtdWx0
aXBsaWVkQWxwaGE7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1
ZmZlcjsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNh
dmVhdDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlOworICAgIGVu
Y29kZXIgPDwgYXR0cmlidXRlcy5zaGFyZVJlc291cmNlczsKKyAgICBlbmNvZGVyIDw8IGF0dHJp
YnV0ZXMuaXNXZWJHTDI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9uczsK
KyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5jZTsKKyNpZiBFTkFCTEUoV0VCWFIp
CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZTsKKyNlbmRpZgorfQorCitP
cHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFscGhhKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGVw
dGgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXR0cmlidXRlcy5zdGVuY2lsKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJl
bXVsdGlwbGllZEFscGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0
ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5j
ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaXNXZWJHTDIpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5ub0V4dGVuc2lvbnMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaW5p
dGlhbFBvd2VyUHJlZmVyZW5jZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYg
RU5BQkxFKFdFQlhSKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy54ckNvbXBh
dGlibGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgcmV0dXJu
IGF0dHJpYnV0ZXM7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYgYWN0aXZlSW5mbykKK3sKKyAgICBl
bmNvZGVyIDw8IGFjdGl2ZUluZm8ubmFtZTsKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8udHlw
ZTsKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8uc2l6ZTsKK30KKworT3B0aW9uYWw8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhY3RpdmVJbmZv
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5uYW1lKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8udHlw
ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhY3RpdmVJbmZvLnNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBhY3RpdmVJbmZvOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDRhOTMyMTU5
MTMwY2I3YmNkZTU1ZTIxMWUxN2M0YmVkZWYxNzA1ZDYuLjFkYWU5Njk1ZjMzYzA5ZGNkN2M1ODAz
NjA4ZTJkNmFjMTZlOWZjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCkBAIC03MSw2ICs3MSwxMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
R3RrLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1R5cGVzR0wuaD4KKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7
CkBAIC0yMDMsNiArMjEwLDEwIEBAIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CiB1
c2luZyBJREJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCitzdHJ1Y3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzOworI2VuZGlmCisKIG5hbWVzcGFjZSBET01DYWNoZUVu
Z2luZSB7CiBzdHJ1Y3QgQ2FjaGVJbmZvOwogc3RydWN0IFJlY29yZDsKQEAgLTg3Myw2ICs4ODQs
MTkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5z
dGFsbG1lbnRDb25maWd1cmF0aW9uPiB7CiB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTA0MSw0ICsxMDY1LDE2
IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpI
RENQU3RhdHVzPiB7CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCisKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlcyA8CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UsCisg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQsCisg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyLAor
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9y
bWFuY2UKKyAgICA+OworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
Y2YxMzFhOTIxZTA4NjM2NWRiZjc3ZmE5OGU0MWMxYzc0YTNlN2UyNS4uYWRkOTQ5YmE1MDhkOGU4
MTQwODdmZWRlN2IwNDhhM2RlYzZjZjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE1OCw2ICsxNTgsOSBAQCB2b2lk
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3M7CiAg
ICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8
PCBzaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3M7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGVu
Y29kZXIgPDwgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7CisjZW5kaWYKICAgICBlbmNv
ZGVyIDw8IHNob3VsZEVuYWJsZVZQOURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFi
bGVWUDlTV0RlY29kZXI7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTEwLDYg
KzUxMywxMCBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcykpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAppbmRleCBkOTFlNDYwMzhmMzA5YjUxMzBiZmRlNThkZmY0YTlmMTgxOTUxZGZkLi5j
MjA2MTIzMTE0MzViZjRmOTJjZjA2ZmU1ZTExMjA1YTRiNTExMmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMjksNiArMjI5
LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxk
UmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFJlbmRl
ckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRQbGF5TWVkaWFJbkdQ
VVByb2Nlc3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIHNob3VsZFJl
bmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgc2hvdWxk
RW5hYmxlVlA5RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlTV0Rl
Y29kZXIgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggOWJkOGE4MTc1NDlm
NThmZTM4M2Q3MjVkYTY2M2YzYmM1NGNhMGQ3NC4uNzdlOWI0ZDVjYzc1MmZiY2RiNmI2NWY5YWRj
MjYwMTk1NmNhMTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2Rl
cnNDRi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJBcmd1bWVudENvZGVyc0NGLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
RW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKaW5kZXggMWQ4NGUyZmUyNjhmMzQ2MGViMjk3NWM0MmJh
OTVkMTRmMWQyMzVjZi4uZmEyNjhkNTg0YTBmYzhkZjg3YTIxZmE0NTYwNzdiOGM1ZDQyYjg1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1NvdXAuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0
aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2VydGlmaWNhdGVJ
CiAgICAgLy8gRW5jb2RlIHN0YXJ0aW5nIGZyb20gdGhlIHJvb3QgY2VydGlmaWNhdGUuCiAgICAg
Zm9yIChzaXplX3QgaSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0LnNpemUoKTsgaSA+IDA7IC0taSkg
ewogICAgICAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0
W2kgLSAxXS5nZXQoKTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVB
cnJheShJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5s
ZW4pKTsKKyAgICAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlmaWNhdGUt
PmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pOwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7CkBAIC0xMDAsNyAr
MTAwLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBDZXJ0aWZpY2F0ZUluZm8mIGMKICAgICBHUmVmUHRyPEdUbHNDZXJ0aWZp
Y2F0ZT4gY2VydGlmaWNhdGU7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNoYWluTGVu
Z3RoOyBpKyspIHsKICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNlcnRpZmljYXRlRGF0YVJl
ZmVyZW5jZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFy
cmF5KGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJyYXlfc2l6
ZWRfbmV3KGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjc3LDQgKzI3Nywz
IEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29k
ZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1CiAjZW5kaWYKIAogfQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCAwOTE3ZjAxYmUxYzlmOGNhYTJhYmY3ZjBmODkwZjg5NWEzZjJlZjg2Li41MGNkZTEyYWZhM2Fh
N2Y3OGMyNzllYzhmYjgxOTc0NGI2ZmIxZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcg
QEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNw
bGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCkBAIC0xMzcsNyArMTM4LDYgQEAg
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAgQG5vLXVu
aWZ5CiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5Ci1QbGF0Zm9ybS9JUEMv
RGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgQG5v
LXVuaWZ5CiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMv
SlNJUENCaW5kaW5nLmNwcCBAbm8tdW5pZnkKQEAgLTY5MywzICs2OTMsNSBAQCBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5jcHAKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggOTk1MTgwNzMyODBlOWM5NWEyYjI1ZjAwYmM4YmZiMzg4NzYy
MTI0MS4uMDc2YWJiZDAyNjAzNTAwNGU3Yzc3NjkwMmFkMmI3MDk2Y2ViODQxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dApAQCAtNTYsNiArNTYsNyBAQCBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcAogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcAogCiBHUFVQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9H
UFVTZXJ2aWNlRW50cnlQb2ludC5tbQorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hLmNwcAogR1BVUHJvY2Vzcy9pb3MvR1BVUHJvY2Vzc0lPUy5tbQogR1BV
UHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCkBAIC02Myw2ICs2NCw4IEBAIEdQVVByb2Nlc3MvbWVk
aWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCiBHUFVQcm9jZXNzL21lZGlh
L2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCiAKKworCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAK
IAogUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3Np
ZmllckNvY29hLmNwcApAQCAtNTczLDYgKzU3Niw4IEBAIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCiBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJD
b250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIu
Y3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVD
b2NvYS5tbQpAQCAtNjg1LDYgKzY5MCw3IEBAIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3Nh
Z2VSZWNlaXZlci5jcHAKIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVz
c2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCAyZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4
MzkzNmIwZDNkLi43MzdiNjI1ODE5ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQu
aApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGll
bnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
aAppbmRleCA0ZjM5OGI1MzBmNjA4NTc1Yzk2N2I4M2M3NGZhMmY0MzI4ZjZjZTNiLi44Y2E5N2U2
ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4NTYwM2E4YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTMsNyArNTMsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSA9IDA7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9
KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0
eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVv
dXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMg
PSB7IH0pOworICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBDOjpDb25uZWN0aW9uOjpTZW5k
U3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkU3RhcnRQ
cm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwgQyYm
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4g
PSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQ
cm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBi
b29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmpl
Y3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0
aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBT
ZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiBy
ZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7
IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwg
V1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5
bmNPcHRpb25zKTsKICAgICB9CkBAIC0xNjMsMTIgKzE2NCwxMiBAQCBib29sIEF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0
aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKLWJvb2wgQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpT
ZW5kU3luY1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdl
LCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVk
KTsKIAogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBUcmFjZVNjb3BlIHNjb3BlKFN5bmNNZXNzYWdlU3RhcnQs
IFN5bmNNZXNzYWdlRW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09B
dXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDgyM2MyMDJhODU2YTAxMzZkZDllYTc1OWYwZWNk
ZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhmNGZiNGY4NzM0ZDdiZmQ2MDhkMjAzODgwNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9T
dWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9u
LmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3ViRnJhbWVTT0F1
dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIE5hdmlnYXRpb25TT0F1dGhvcml6YXRp
b25TZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2FkU3RhdGU6Ok9ic2VydmVyIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCmlu
ZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZiYmJhNDJmYzkwY2VjMzU3N2YuLjEyOGEzOTc3ZTYz
ZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtMjUsNiArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM1LDEwICszNiw2IEBACiBPQkpDX0NM
QVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IGM0YzcxODc0YTEwZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQzZmE5MmIu
LjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVkNjViNTdlZDBjODAxM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5o
IgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAsMTAgKzgxLDYgQEAgY2xhc3MgT3BlblBhbmVsUGFy
YW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9y
OwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
CmluZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRkNDVmMTJlZGUzNGEwZjc4Y2EwYTYuLjI0OGU1M2Ew
ODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVkYWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBUElTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
UHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDEyOWEz
NDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1NmQzY2NjYjIuLmE0ZDhkN2NkODA0ZTY1NjBkYWJm
ZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQ29udGVudFdvcmxkU2hhcmVkLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC00
OCwxMCArNDksNiBAQCBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiB9
CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZlZDFjNjljMDhmYzU1OWZlMmEzZjNiOTM5
NTBlYTgyOGQ2MGQ0YmYuLmNlYzczZDEzZDA5OGQ3MTMxODQ4YWZiNTkzZWYwNzI0MTAyMThlNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTgsNyArNTgs
NiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5h
Z2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJv
eHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFQcm94eS5oIgpAQCAtNzkyNyw2ICs3OTI2LDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgPSBwcmVm
ZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFibGVkKCk7CiAgICAg
cGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVz
ZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91
bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JN
ZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcGFyYW1ldGVycy5zaG91bGRS
ZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvcldl
YkdMRW5hYmxlZCgpOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURl
Y29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxFKFZQ
OSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0Rl
Y29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkgJiYgKCFXZWJDb3JlOjpz
eXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0RlY29kZXJFbmFibGVkT25C
YXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2NDI0
NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3MTFmOTFiMmU1Li40MzdhYjc1MGIzNWFiMTYzYjJh
NTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKICNpbmNs
dWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIwMyw3ICsyMDQsNiBAQCBlbnVtIGNsYXNzIEluc3Bl
Y3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiBj
bGFzcyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1Y2U2NWU5ZDJkNTY1YjNmMTI1ZjM0NTdhMjU2ZmIz
OWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMyZTZhMTk5NzdkYjYxYmFiNjEzMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMxLDEwICsz
MSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGQ0NDJiNjJiNTIyNTg3ZjkwZmE2ODlk
NTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2ODhhMjY4MjE5NDFmZjdhNDE4ZjRkZjVhOTc1YmEx
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM4
LDEwICszOCw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwogfQogCi1uYW1l
c3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzUyOGY0
NzFmNDYzZGY2YzExMzBhM2ZiODM3NzZiZjFiMmFiZWY5NC4uZWJhYjI4OTFiNDFiMWExNTVmYTFh
MDVhZGNmOGNjYzk2YTZlYTE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02OTgsNyArNjk4LDYgQEAKIAkJMkQ5MkE3N0IyMTJCNkE3
MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVu
dENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2ht
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5MkE3
N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENv
bm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJl
ZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07CiAJ
CTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAv
KiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVuY29k
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMw
MzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MTIx
MkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAv
KiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtMTMwMyw2ICsxMzAyLDcgQEAKIAkJ
N0FGQkQzNjMyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQz
NjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICov
OyB9OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0
ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9Owor
CQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBF
MjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5
NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAg
LyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5
MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIg
LyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9u
YXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFC
QTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtMjcxOSw3
ICsyNzE5LDYgQEAKIAkJMUFDNUZGQzExNzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NB
dHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblByb2Nl
c3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1Mzc5MTgz
QTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlTG9hZFN0YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJl
bmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFSZWZlcmVu
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3RTE4M0JFNTBGMDA3
MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFB
MUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0
aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MzY5LDYgKzQzNjgsMTcgQEAKIAkJN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDsgcGF0aCA9IENs
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5j
eVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5
VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJh
eVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVy
ZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1MDAw
NkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
OTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5
OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY1MywxMSArNjY2MywxMSBAQAog
CQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJCQkJ
MUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJCQkx
QUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3QjFE
QjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VFOTY2
QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIxMTJG
QUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0QxMDA1
OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThDMTVB
IC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0
YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFS
ZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5j
cHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKQEAg
LTgzMjcsMTEgKzgzMzcsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29j
b2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4
RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAog
CQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3
RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5MDQx
NjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICov
LAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3MjAw
RTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQu
Y3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8q
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODM0OSw2ICs4MzY0LDExIEBA
CiAJCQkJRjQwOTRDQkMyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
LmNwcCAqLywKIAkJCQlGNDA5NENCQjI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGUuaCAqLywKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oICovLAorCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRBRkVB
NzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAorCQkJ
CTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcCAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBE
RTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBB
QUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3
MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKQEAgLTExMTY1LDYg
KzExMTg1LDcgQEAKIAkJCQkxQUVGRDJGNzExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwQzRBMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1
bWVudENvZGVyc0NGLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3
RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IxREIyNjYy
NTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTVFNzcyODE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBQUZBNjM0RjIzNEY3QzY0MDBGRkE4NjQgLyogQXN5bmNSZXZhbGlkYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTEzMjMzLDcgKzEzMjU0LDYgQEAKIAkJCQkyRDkyQTc4NTIxMkI2
QUIxMDBGNDkzRkQgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlEQUEzOEMyNENCQTFBODAwNzkzRDc1IC8qIERlZmF1
bHRXZWJCcm93c2VyQ2hlY2tzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQwQzU2RkUyMjlGMURF
QTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oCmluZGV4IGY5MmRhNmE0N2Y3ZTI0ZjM4Mzk5YWEzNjk4YTIxMjkwZDM2
MWQ0YTYuLmM5ZGM2ODJiODc1NDliODI1MGRiMjJiMmExY2UyMTU1NTAwMGNlYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmgKQEAgLTM2LDEwICszNiw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGF5bWVu
dENvb3JkaW5hdG9yOwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMmMwZGY1Yjlm
NTQ5Njg0N2VkNjY5MTBiZjJmMzliMmNkYzYwY2EwMi4uNWJlOGI5OTc1MjBjNGFkN2YxYjQ0MDdh
ZTcyMDRjODRhOTk4ODc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMzUsMTAgKzM1LDYgQEAKICNpbmNsdWRlIDx3
dGYvV2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFt
ZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTc5MThlNGI1MGM5YjdjZjVi
MmU3OWIwNzdkMDM1MjEyYzYxMjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaApAQCAt
MCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllclR5cGUgeyB9OwordXNpbmcgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyID0gT2Jq
ZWN0SWRlbnRpZmllcjxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQw
MjdiYjU4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTAsMCArMSwxNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShh
dHRyaWJ1dGVzKSk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRycykKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQorewor
ICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNl
aXZlck1hcCgpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAg
IHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworfQor
CitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSgpCit7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1h
cCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCku
bWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcigqdGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKSwgMCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcGxhdGZvcm1Td2FwQ2hhaW4o
KS5yZWN5Y2xlQnVmZmVyKCk7CisjZW5kaWYKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQoreworICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0
ID0gaGVpZ2h0OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZXNoYXBlKHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXko
KQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZl
clNlbmRSaWdodDsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVy
ID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNl
bmRSaWdodCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7
CisgICAgICAgIGF1dG8mIHNjID0gcGxhdGZvcm1Td2FwQ2hhaW4oKTsKKyAgICAgICAgc2MucmVj
eWNsZUJ1ZmZlcigpOworICAgICAgICBzYy5wcmVzZW50KHsgV1RGTW92ZShkaXNwbGF5QnVmZmVy
KSwgbnVsbHB0ciB9KTsKKyAgICB9CisjZWxzZQorICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworI2VuZGlmCisgICAgbWFya0xheWVyQ29tcG9z
aXRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0
ZW5zaW9uKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok5vdGlmeU1hcmtDb250
ZXh0Q2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCit7
CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCdzIG5v
dCBjbGVhciB0aGlzIGlzIHRoZSByaWdodCB3YXkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTkzNDkKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KEltYWdlQnVmZmVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQdHI8SW1h
Z2VEYXRhPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0ltYWdlRGF0YSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVk
KFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lv
bnMpCit7CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZSkgeworICAgICAgICAvLyBJbml0aWFsaXph
dGlvbiB0aW1lZCBvdXQgYmVmb3JlLCBzbyBsb3NlIHRoZSBjb250ZXh0IG5vdy4KKyAgICAgICAg
d2FzTG9zdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGluaXRpYWxpemUoYXZhaWxh
YmxlRXh0ZW5zaW9ucywgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgbV9kaWRJbml0aWFsaXpl
ID0gdHJ1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0
KCkKK3sKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQor
ICAgICAgICBjbGllbnQtPmZvcmNlQ29udGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp3YXNDaGFuZ2VkKCkKK3sKKyAgICBmb3IgKGF1dG8qIGNsaWVu
dCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29u
dGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCgpCit7CisgICAgaWYgKG1fZGlkSW5pdGlh
bGl6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rp
b24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKTsKKyAgICBpZiAoY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1t
ZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0
ZWQ+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zLCBJUEM6OldhaXRGb3JPcHRp
b246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcykpCisgICAgICAgIHJldHVy
bjsKKyAgICAvLyBUaW1lZCBvdXQsIHNvIHJlcG9ydCBpbml0aWFsaXplZCB3aXRoIGR1bW15IGRh
dGEuIFdlIHNob3VsZCBsb3NlIHRoZSBjb250ZXh0LgorICAgIHdhc0NyZWF0ZWQoIiIsICIiKTsK
KyAgICAvLyBGSVhNRTogTmVlZCB0byBtYXJrIHRoZSBjb250ZXh0IGFzIGxvc3QsIGJ1dCBpdCdz
IG5vdCBzYWZlIHRvIGZvcmNlIGxvc3QgaW4gdGhpcyBjYWxsIHN0YWNrLgorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkZDY5Y2FmOWRjMDNjNTI0YjEwMGE5YjZiNzZjZjBhZDc5OWEw
ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMCwwICsxLDQxMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5o
IgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCisjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFdlYiBwcm9jZXNzIHNp
ZGUgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgaW50ZXJmYWNlLiBUaGUgaW1w
bGVtZW50YXRpb24KKy8vIGNvbnZlcnRzIHRoZSBpbnRlcmZhY2UgdG8gYSBzZXF1ZW5jZSBvZiBJ
UEMgbWVzc2FnZXMgYW5kIHNlbmRzIHRoZSBtZXNzYWdlcyB0bworLy8gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgaW4gR1BVIHByb2Nlc3MuCisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2Vs
eSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wu
CitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisg
ICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4K
KyAgICAsIHB1YmxpYyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7Cisg
ICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKSBmaW5hbDsKKworICAgIC8vIElQQzo6
TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KSBmaW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgdXNp
bmcgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsK
KyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24p
IGZpbmFsOworICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAg
dm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRh
KCkgZmluYWw7CisKKyAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRh
dGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisg
ICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7CisgICAgdm9pZCBzeW50
aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CisgICAgYm9vbCBtb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0NH
TGVudW0gdGV4dHVyZSkgZmluYWw7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgZmluYWw7CisgICAgdm9pZCBi
aW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZEZyYW1l
YnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0
IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBm
IHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhh
KSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkgZmluYWw7Cisg
ICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0g
bW9kZUFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBH
Q0dMZW51bSBkZmFjdG9yKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xl
bnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0g
ZHN0QWxwaGEpIGZpbmFsOworICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NH
TGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3Jl
ZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBj
bGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgY2xlYXJTdGVuY2ls
KEdDR0xpbnQgcykgZmluYWw7CisgICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBH
Q0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZp
bmFsOworICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIHZvaWQgY29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZpbmFsOworICAgIHZv
aWQgY29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVCdWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUZyYW1l
YnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQcm9ncmFtKCkgZmlu
YWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVSZW5kZXJidWZmZXIoKSBmaW5hbDsKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKSBmaW5hbDsKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRleHR1cmUoKSBmaW5hbDsKKyAgICB2b2lkIGN1bGxG
YWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKSBmaW5hbDsK
KyAgICB2b2lkIGRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKSBmaW5hbDsKKyAgICB2b2lkIGRl
cHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKSBmaW5hbDsKKyAgICB2
b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAg
dm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAg
IHZvaWQgZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgZW5hYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2goKSBmaW5h
bDsKKyAgICB2b2lkIGZsdXNoKCkgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRl
cmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKSBmaW5hbDsKKyAgICB2b2lkIGZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
R0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwp
IGZpbmFsOworICAgIHZvaWQgZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZv
aWQgZ2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBib29sIGdldEFj
dGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3Rp
dmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7
CisgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNv
bnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRT
dHJpbmcoR0NHTGVudW0gbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50
ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAg
ICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dM
aW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFs
OworICAgIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBnZXRFcnJv
cigpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKKyAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTaGFkZXJpKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBn
ZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBn
ZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJl
Y2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lv
bikgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZv
cm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7Cisg
ICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25z
dCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGhp
bnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVh
biBpc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFu
IGlzRW5hYmxlZChHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRnJhbWVi
dWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1By
b2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1Jl
bmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFu
IGlzU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4g
aXNUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5lV2lk
dGgoR0NHTGZsb2F0IGFyZzApIGZpbmFsOworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0
IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdl
KEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CisgICAgdm9pZCBz
Y2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuYyhHQ0dMZW51bSBm
dW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2ls
RnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBH
Q0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2sp
IGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dM
dWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dM
ZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wU2Vw
YXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xl
bnVtIHpwYXNzKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHRleFBh
cmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB4LCBHQ0dMaW50IHkpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdXNlUHJv
Z3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgdmFsaWRhdGVQcm9n
cmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIx
ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVl
cykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dM
dWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpIGZpbmFsOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykgZmluYWw7
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdD
R0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdmVy
dGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+
IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQs
IEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHZp
ZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVt
IHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
U3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2
b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0
ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
IGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXpl
aSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVWZXJ0ZXhBcnJheSgpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXko
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJl
YWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0cikgZmluYWw7Cisg
ICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1
ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAg
ICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IGxheWVyKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykgZmluYWw7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZl
cihHQ0dMZW51bSBzcmMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAg
IHZvaWQgdGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
ZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFs
OworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lk
IGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYWdE
YXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQg
djEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
NGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xp
bnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVp
bnQgeiwgR0NHTHVpbnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dM
dWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXpl
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBz
dGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVl
cykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVh
ckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQg
ZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVh
dGVRdWVyeSgpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBx
dWVyeSkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1
ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdl
dCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBs
YXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NhbXBs
ZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRTYW1wbGVy
KEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9p
ZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkg
ZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxl
clBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmlu
YWw7CisgICAgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZp
ZWxkIGZsYWdzKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIEdD
R0xlbnVtIGNsaWVudFdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywg
R0NHTHVpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKKyAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jIGFy
ZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIEdD
R0xpbnQgZ2V0U3luY2koR0NHTHN5bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAg
IFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2
b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOwor
ICAgIEdDR0xib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkg
ZmluYWw7CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkgZmluYWw7CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1G
ZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NH
TGVudW0gYnVmZmVyTW9kZSkgZmluYWw7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5m
byYgYXJnMikgZmluYWw7CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7
CisgICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgYmlu
ZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9i
amVjdCBidWZmZXIpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVu
aWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHVuaWZvcm1OYW1lcykgZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVu
aWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYg
dW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRV
bmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYg
dW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9j
a05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0JpbmRpbmcpIGZpbmFsOworICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NH
TGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwg
R0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZ
MSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCBy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRl
eEFycmF5T0VTKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9F
UyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lk
IGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9p
ZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lk
IHBvcEdyb3VwTWFya2VyRVhUKCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
R0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNv
cikgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdM
RShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRR
dWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7Cisg
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0p
IGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJm
YWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJm
YWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKKyAg
ICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVp
bnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiB2YWwpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAg
IHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmlu
YWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQq
IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFt
cykgZmluYWw7CisgICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmds
IHNjcmlwdC4KKworcHJvdGVjdGVkOgorICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7
CisKK3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3
YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3Rl
ZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzTG9zdCgpOworICAgIHZvaWQgd2FzQ2hhbmdlZCgp
OworCisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZh
bHNlIH07CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07
Cit9OworCisvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlw
ZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xlbnVtLCB1aW50MzJfdD4pOworc3RhdGljX2Fz
c2VydChzaXplb2YoR0NHTGJvb2xlYW4pID09IHNpemVvZihib29sKSk7CitzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZV92PEdDR0xiaXRmaWVsZCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGJ5dGUsIGludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWVfdjxHQ0dMdWJ5dGUsIHVpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTHNob3J0LCBpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdD
R0x1c2hvcnQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xp
bnQsIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNpemVpLCBp
bnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1aW50LCB1aW50MzJf
dD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMZmxvYXQsIGZsb2F0Pik7Citz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xoYWxmZmxvYXQsIHVpbnQxNl90Pik7Citz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xjbGFtcGYsIGZsb2F0Pik7CitzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x2b2lkLCB2b2lkPik7CitzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZV92PFBsYXRmb3JtR0xPYmplY3QsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0
KHNpemVvZihHQ0dMY2hhcikgPT0gc2l6ZW9mKHVpbnQ4X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKEdDR0xpbnQ2NCkgPT0gc2l6ZW9mKGludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KEdDR0x1aW50NjQpID09IHNpemVvZih1aW50NjRfdCkpOworLy8gR0NHTHN5bmMgYW5kIEdDR0wq
cHRyIHR5cGVzIGFyZSBwb2ludGVycy4gT24gc29tZSBwbGF0Zm9ybXMsIHRoZXkgYXJlIDMyLWJp
dC4KKy8vIEN1cnJlbnRseSB3ZSBoYXJkLWNvZGUgaXQgYnkgdXNpbmcgPD0sIGFuZCBhc3N1bWUg
dGhhdCB3ZSBkbyBub3QgdHJhbnNmZXIgYXJyYXlzIG9mIHRoZSB0eXBlcy4KK3N0YXRpY19hc3Nl
cnQoc2l6ZW9mKEdDR0xpbnRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2Vy
dChzaXplb2YoR0NHTHNpemVpcHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3Nl
cnQoc2l6ZW9mKEdDR0x2b2lkcHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3Nl
cnQoc2l6ZW9mKEdDR0xzeW5jKSA8PSBzaXplb2YodWludDY0X3QpICYmIHNpemVvZihHQ0dMc3lu
YykgPT0gc2l6ZW9mKGludHB0cl90KSk7CisvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgc2NyaXB0LgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWYyYjMyYjJiYzEwMTBlZjhlY2QwYWY1Nzc3YWJkNGZhMDhhM2M5MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisj
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisj
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFdhc0NyZWF0ZWQoU3RyaW5nIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCisgICAgdm9p
ZCBXYXNMb3N0KCkKKyAgICB2b2lkIFdhc0NoYW5nZWQoKTsKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25z
R2VuZXJhdGVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTRhNDQzMTU2MjExY2M3MTg1MTM3MzM4Y2FjYzdj
ZTUwMzU3OTVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcApAQCAtMCwwICsxLDE2NDcgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXpl
R0xFcnJvcihHQ0dMZW51bSBlcnJvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0OjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0
aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVUZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVj
dCBzaGFkZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJp
YkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFy
Z2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
aW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVGV4dHVy
ZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcx
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYg
Z3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRDb2xvcihyZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1
YXRpb24obW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVu
dW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9k
ZUFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dM
ZW51bSBkZmFjdG9yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3RvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1
bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3Jj
QWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxw
aGEsIGRzdEFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dM
ZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVi
dWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXIoR0NHTGJpdGZpZWxkIG1hc2sp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1h
c2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1w
ZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckNvbG9yKHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0
aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJE
ZXB0aChkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhclN0ZW5jaWwoR0NHTGludCBzKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwo
cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVh
biBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbG9yTWFzayhzdGF0aWNfY2Fz
dDxib29sPihyZWQpLCBzdGF0aWNfY2FzdDxib29sPihncmVlbiksIHN0YXRpY19jYXN0PGJvb2w+
KGJsdWUpLCBzdGF0aWNfY2FzdDxib29sPihhbHBoYSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGls
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBpbGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZUJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVC
dWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXI6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlUHJvZ3JhbSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtKCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVT
aGFkZXIoR0NHTGVudW0gYXJnMCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNo
YWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFk
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmUoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2Uo
bW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVC
dWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3Jh
bShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTaGFkZXIoYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4
dHVyZShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVu
YyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19j
YXN0PGJvb2w+KGZsYWcpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6
TmVhciwgR0NHTGNsYW1wZiB6RmFyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZXB0aFJhbmdlKHpOZWFyLCB6RmFyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hh
ZGVyKGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2Fw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRl
eCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXMoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzKG1vZGUsIGZpcnN0
LCBjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzKG1vZGUs
IGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjplbmFibGUoR0NHTGVudW0gY2FwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmaW5pc2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpGaW5pc2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Rmx1c2goKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBhcmczKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVu
dCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UoR0NH
TGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RnJvbnRGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAoR0NHTGVu
dW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmli
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFy
ZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRl
eCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliOjpS
ZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQoreworICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0
cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdl
dCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBh
cmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0cmluZyhHQ0dMZW51bSBuYW1lKQoreworICAgIFN0
cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFN0cmluZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRTdHJpbmc6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2
YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlm
IChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRh
KCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpSZXBseSh2
YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlm
IChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRh
KCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50
NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBu
YW1lKQoreworICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMaW50NjQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwg
R0NHTHVpbnQgaW5kZXgpCit7CisgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGko
cG5hbWUsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRl
Z2VyNjRpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7
Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWko
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYoR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFy
cmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudihwbmFt
ZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
Qm9vbGVhbnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRh
LCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihib29sKSk7CisgICAg
Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3I6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
R0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlcmkoYXJnMCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2coYXJn
MCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZzo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBH
Q0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGlu
dCogcHJlY2lzaW9uKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4gcmFu
Z2VSZXBseTsKKyAgICBpbnQzMl90IHByZWNpc2lvblJlcGx5ID0geyB9OworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVw
bHkocmFuZ2VSZXBseSwgcHJlY2lzaW9uUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWVtY3B5KHJhbmdl
LmRhdGEsIHJhbmdlUmVwbHkuZGF0YSgpLCByYW5nZS5idWZTaXplICogc2l6ZW9mKGludDMyX3Qp
KTsKKyAgICAgICAgaWYgKHByZWNpc2lvbikKKyAgICAgICAgICAgICpwcmVjaXNpb24gPSBwcmVj
aXNpb25SZXBseTsKKyAgICB9Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmlu
ZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworR0NHTGZsb2F0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFt
ZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBh
cmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2
YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
ZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1
ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1pdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBseSh2YWx1
ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChz
ZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCks
IHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCit7Cisg
ICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1
bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUu
YnVmU2l6ZSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitHQ0dMc2l6ZWlwdHIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50NjRf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpIaW50KHRhcmdldCwgbW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcihhcmcw
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29s
ZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXAp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzRW5hYmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQorewor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQorewor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1RleHR1cmUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVy
blZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5lV2lk
dGgoR0NHTGZsb2F0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkxpbmVXaWR0aChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6TGlua1Byb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3Jl
aShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRz
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29u
T2Zmc2V0KGZhY3RvciwgdW5pdHMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFn
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBm
IHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxib29s
PihpbnZlcnQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0
IFN0cmluZyYgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U2hhZGVyU291cmNlKGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1
bmMoR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJl
ZiwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZh
Y2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRl
KGZhY2UsIGZ1bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayhHQ0dM
dWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTdGVuY2lsTWFzayhtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUo
R0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NH
TGVudW0genBhc3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWws
IEdDR0xlbnVtIHpwYXNzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWkobG9jYXRpb24s
IHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4
LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmZ2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0yaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
M2Z2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNp
KGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRh
dGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRm
KGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5k
YXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9jYXRp
b24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSks
IHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
dmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2
YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJp
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+
KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHN0
YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dyYW0oYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWYWxpZGF0
ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZlcnRleEF0dHJpYjFmKGluZGV4LCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2
YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYjFmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQg
eCwgR0NHTGZsb2F0IHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2
YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYjJmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQg
eCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeiksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdCwgMz4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQsIDM+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZh
bHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YjRmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwg
R0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwg
R0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19j
YXN0PGJvb2w+KG5vcm1hbGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcx
LCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QnVmZmVyRGF0YTAodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSks
IHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZm
ZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCksIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2
b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5
OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFk
blBpeGVsczA6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwg
ZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVs
cy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFn
ZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1Yklt
YWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdD
R0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZp
c29yKGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5
KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFy
cmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29s
ZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXkoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJpbmRWZXJ0ZXhBcnJheShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRy
IHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5QnVmZmVy
U3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJl
YWRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkK
K3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwg
ZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZm
ZXJTdWJEYXRhOjpSZXBseShkYXRhUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEs
IGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAg
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwg
c3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZp
bHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NH
TGludCBsZXZlbCwgR0NHTGludCBsYXllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFj
aG1lbnRzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
bnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0
dGFjaG1lbnRzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50
cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRh
Y2htZW50cy5idWZTaXplKSwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UmVhZEJ1ZmZlcihzcmMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlM0QodGFy
Z2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50
IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlRleFN1YkltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEp
LCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
aW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1h
Z2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdE
YXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTHVpbnQgdjApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xdWkobG9jYXRpb24sIHYwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpKGxv
Y2F0aW9uLCB2MCwgdjEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWkobG9j
YXRpb24sIHYwLCB2MSwgdjIsIHYzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWl2
KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTN1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtTWF0cml4MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgz
eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29s
Pih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4
NHgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bv
c2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
TWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRh
dGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aShH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVp
bnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZh
bHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliSTR1aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRl
eCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50
cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVu
dHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwg
c3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZz
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVm
ZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZh
bHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVy
dWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMu
ZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KEdD
R0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVl
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZm
ZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVF1ZXJ5KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVF1ZXJ5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVl
cnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVy
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5
KQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5KHF1ZXJ5KSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVy
eSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5R
dWVyeSh0YXJnZXQsIHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRh
cmdldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5k
UXVlcnkodGFyZ2V0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRRdWVyeSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMdWludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
UGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTYW1w
bGVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVs
ZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sK
KyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5k
U2FtcGxlcih1bml0LCBzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0p
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQ
YXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVy
UGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGZsb2F0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUpCit7CisgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1l
dGVyZihzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NH
TGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHN5bmMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQor
eworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYzo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihyZXR1cm5W
YWx1ZSkpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1N5bmMoR0NHTHN5bmMgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYzo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTeW5jKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsaWVudFdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFn
cywgR0NHTHVpbnQ2NCB0aW1lb3V0KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50
V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0
U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpXYWl0U3lu
YyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkp
LCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZW91dCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U3luY2koR0NHTHN5bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFN5bmNpKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9j
YXN0PGludHB0cl90PihhcmcwKSksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTeW5jaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3Jt
RmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2Jq
ZWN0IGlkKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUcmFu
c2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IGlkKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
aW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRy
YW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJp
bWl0aXZlTW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFRyYW5zZm9ybUZl
ZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dM
ZW51bSBidWZmZXJNb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZm
ZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQor
eworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc6OlJlcGx5KGFyZzIp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhdXNlVHJhbnNmb3JtRmVl
ZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNmb3Jt
RmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQs
IGluZGV4LCBidWZmZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZm
ZXIsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
YXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1ZlY3RvcjxHQ0dM
dWludD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUluZGljZXMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVz
KQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhw
cm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1ZlY3Rv
cjxHQ0dMaW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5n
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
QmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5k
aW5nKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGludD4gcGFyYW1zKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
cGFyYW1zUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1
bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdjo6UmVwbHkocGFyYW1z
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNl
bmRSZXN1bHQpCisgICAgICAgIG1lbWNweShwYXJhbXMuZGF0YSwgcGFyYW1zUmVwbHkuZGF0YSgp
LCBwYXJhbXMuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
Cit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3Jj
WTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0
LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCit7CisgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5k
VmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW5zZXJ0RXZlbnRNYXJrZXJF
WFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5n
JiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
dXNoR3JvdXBNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVY
VCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdy
b3VwTWFya2VyRVhUKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShpbmRleCwgZGl2aXNvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1h
dGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXpl
aSogcm93cywgR0NHTHZvaWQqIHBpeGVscykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZl
clBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhB
dHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVu
dW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlf
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5PTElOVAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxv
YXQqIHZhbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1l
dGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGk2
NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggYWVmODNlMjU4ODg5YTViZTgyNjdhNjhiMWM2OWZlYzVh
MzRlMDM4Ni4uNmE0YWRmNWQ2ZDM0YTdjNjkxYmZmMDBlZWNlMDFmYzdhYTg5NDAyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmLCBjb25zCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKQorYm9vbCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHku
Y3BwCmluZGV4IDk1YzgzNmU2OTUwNDFkOTdkMjU5MDM2ZmQ3M2RmZjVjNDZiOGZmOTEuLmM4YzU4
MjkwNTBhNTI1OGY5ZDkzMTk3NmI5NWYwNWU1OTdhNTZiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogCiAgICAgYXV0byYgY29ubmVjdGlv
biA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7
CiAgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwotICAgIGJvb2wgZGlkU3VjY2VlZCA9
IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRTeW5jKAorICAgIGF1dG8gZGlkU3VjY2VlZCA9
IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRTeW5jKAogICAgICAgICBNZXNzYWdlczo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1
dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpLCBzYW1wbGVSYXRlKCksIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwKICAgICAgICAgTWVzc2Fn
ZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
OjpSZXBseShkZXN0aW5hdGlvbklEKSwgMCk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAgQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKICAgICBnZXRBdWRpb1N0cmVh
bUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9j
YXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7Ci0gICAgbV9hdWRpb0J1ZmZlckxp
c3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKKyAgICBt
X2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0
PihzdHJlYW1Gb3JtYXQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyTWFuYWdlci5jcHAKaW5kZXggYjhmNDVhNmQ1YmI0ZGI0NjA5ODgwMTI0M2JiNWU5MzE3
YjFlM2UyYi4uNjViOGZkMGQ3NzM0N2U5MzhiNTY0NTgyMjZiNzhkYTQzYzk3ODkxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJj
ZVByb3ZpZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyTWFuYWdlci5oIgogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5oIgog
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291
cmNlUHJvdmlkZXJNYW5hZ2VyLmgKaW5kZXggZTU5ZTFiMDZiNDQ3ZTVkODBjYTYxMDUyYzZjN2Ez
MmM0YmExNDJlNi4uODE5NDA5MGM5MzNiMmYxMWE2NDYwYWIzYzE3NzJkMzc2MTYzNzEwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nv
dXJjZVByb3ZpZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaApAQCAtMjcsNiArMjcsOSBA
QAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFQbGF5ZXJJZGVudGlmaWVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCAw
ZGI4NWFlOWJkMjQxZWJhMWJkYTRlNjIyNDQwZjYzMjhlMWQ4YTBiLi4yOTdlZWJkYTE5MTg5ZGZl
MGNmZTZjMWVkNzY5YWFjYjlkNmQ5MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHku
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggYjlhMDFiMDYyNWUzYjdjN2YwMTE4
NGE4M2MzNmU1NDkxMjJmMDlhOC4uMTUxNzJjOWY2MjEwYmY0Zjk1ZTBjNmFhNzkzNmM2MjJlYThk
OTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKQEAgLTQ0LDcgKzQ0LDYgQEAKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3Rl
LmgKaW5kZXggYjdjZWRiN2U4Mzk0Zjk5YmE5Y2ZiMGEyYWMyYTk3ODExYjNjNDE4Zi4uNzcwMmQx
YjcwMmQxMjE2MmUxOWFiOWE2ZGFhNGM1OTc1MTg2MmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3Rl
LmgKQEAgLTMzLDEwICszMyw2IEBACiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEluYmFuZEdlbmVyaWNDdWU7CiBjbGFzcyBJU09XZWJWVFRDdWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmNwcAppbmRleCAwYzZmNzNkMDcxNDRiNTYyNjc2OTM2N2M5ZjJhM2E0MDE3ZWFkZTgwLi4x
NjhlZjQzNWRkZTU2MTRkMzBmM2JlMjg2NzBhNDdhZWQ2MTZkZTA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2Rl
Y3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmgKaW5kZXggNzM5YTQ5NmVmNDk0Y2I0YTYxODU2NmZmYzY0ZDRhMjY0YTc0ZTlkMC4u
NGJlYWUwNjIzMTdiYTI2YTYwNjgzZjFmNDUxMjMzZWIxMDczYWE3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRl
ICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVy
LmgiCkBAIC00Myw3ICs0NCw2IEBAIHVzaW5nIENWUGl4ZWxCdWZmZXJQb29sUmVmID0gc3RydWN0
IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rp
b247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaAppbmRleCAyZGFkMjAzODQyZjBlNTUzZmUzYjQ2MjQ0MWVlOTRmYTI2NDkzYTExLi5jMjhj
ZTdmMmUxN2U4OWE4ZTUxODZhNzcwNmEyZThhNDRmNmI3ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVCdW5kbGVDbGll
bnQuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VHlwZXMuaD4KQEAg
LTU0LDcgKzU1LDYgQEAgY2xhc3MgRGF0YTsKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2Rl
cjsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTE2MSw0ICsxNjEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMzA2NGU5YzRhZmNjMmNm
ZjU0YTMyNWUyNTMxZWQwNTIyYTAwMTM5My4uYjk3OTQ2NTllYWJkMTg0YjM4OWMwNmQxMzJmOGM0
MmY4MDUyM2NjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM0LDEwICszNCw2IEBACiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDg2NTcxMWIzNjZjMjhkZjQ4NGI0Y2RjMDdhYTNmY2YzZGNlYmYy
ZjYuLjY5NDg5NmM5OTdhNDk0MGRiYWIyZGE3NjU3ODIwYTI3OGFmMWRjNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRlci5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggNTgzZTM3OWM4OWVjZmE5NTMw
YjBhYmZhMWM2OWZlYTlkNTM5NjZmYi4uN2UxZDQ5OTQ3MTVmODg0OWNlOGJmZTVlYzM0NTVkNDcz
Nzc4MDBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtMzYsNyArMzcsNiBAQAogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTRlZjBkMWZj
ZTJlNjAxZGY0NDljZmY4NTM5ZmJkMTY0NzkzZWJlMi4uZmY2OWY1NjA5ZTU3N2NhYzc3N2YwNGFm
YTc0YWYyMTA3NDg2NGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAKLSNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBmNTM0NzgzNDdl
Nzc1ZGYzN2VhOTc2MzRjMjMzMDkzMmI0YTE0ZDI4Li5hZDdmZjE4N2RiYjQzNTNiOWVkM2JjNTdj
NWJhMmM0YWE0ZThjZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTZW5kUXVldWUuaD4KQEAgLTM4LDcgKzM5LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmluZGV4IGFmMjQyY2QyYjU5NWFjNGE0NDg0Mjk3YmU1
ZDVjZmUxOGQ0OGYzMjQuLjdkMDA3MzY5YjljY2U4NWI4ZjA1NDU3ZDY2NmQxZTQ0NTFiOTZjNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
U3RyZWFtLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYlNvY2tldFN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3Ry
ZWFtTWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0U3RyZWFtLmgKaW5kZXggZGQwODIwMTA3MTJiOWY1ZGI5ZmViZDg4ZGE2NjliNmRm
NjFkMGYyOS4uYjQzY2IyZWZhZDFlMTAxZWUyNjViOTNkZGU5YjA2MTI3MzZhMDk3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtSGFuZGxlLmg+CkBAIC0zMyw3
ICszNCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNv
ZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1NvY2tldC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1NvY2tldC5oCmluZGV4IGNiNDhlMDU3MzQ4YTJlODY2YjA5MWZmNWFjODcyNjA1Y2ExOTJk
ZDUuLjMyM2YyNWVlOGZkODFiMDI2MzBkMmYyNTlhMWFmYjg4NGI0Y2Y1ZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
U29ja2V0LmgKQEAgLTM1LDcgKzM1LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBl
YTUzNTk2MDEwOWZlZTZkYzQ4MDVjZjY4OTEyNzk4ZWU5YWI2ZjAzLi40MGI0YzhmMjEyOWNmMTIz
M2ExYjMxYjg1MTI3ZTdhN2U5ZTNkN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC02MCwxMCArNjAsNiBAQCBPQkpDX0NMQVNT
IFBERlNlbGVjdGlvbjsKIE9CSkNfQ0xBU1MgV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0
OwogT0JKQ19DTEFTUyBXS1BERkxheWVyQ29udHJvbGxlckRlbGVnYXRlOwogCi1uYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApp
bmRleCAzMzQ3NjRhY2UyYThjNDM4NTg4YjMxOTgwNjJmMzY1YTM2NmU4YmRhLi41YjI3MzJmMmM0
ZTRjNDgzZWJmODQwODdhOGMyNjM0ZTlkNTQ5MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApA
QCAtMTA4LDYgKzEwOCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CkBAIC05MTIsNiArOTE2LDIyIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlCiAgICAg
cmV0dXJuIG1fcGFnZS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJ
bWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKKworUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNv
bnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUGxhdGZvcm1EaXNw
bGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QKK3sKKyAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIFVOVVNFRF9WQVJJQUJMRShob3N0V2luZG93RGlzcGxheUlE
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlKGF0dHJpYnV0ZXMpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsK
KyNlbmRpZgorfQorCisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwgR3Jh
cGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZWMxNGZkYjE2YzgxY2Mx
MjcwNmNmY2I1OWU5OWYyY2QzMzc2MGRjOC4uMTIxNWY5MmEwMzE5NTgwYTBkZGQ5MjEwNTEzZGQy
ZDVkMzA1MDUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQzLDcgKzI0MywxMSBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkg
Y29uc3QgZmluYWw7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgaG9z
dFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAjZW5kaWYKKyNlbmRpZgorCiAKICAgICBD
b21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2VycygpIGNvbnN0
IGZpbmFsCiAgICAgewpAQCAtNDAzLDYgKzQwNyw3IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxl
IGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHsgZmFsc2UgfTsK
ICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhciB7
IGZhbHNlIH07CisKICAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY2NDIxNDc3YTU2Y2VlMWI0NTlh
YjFiNzBkOGRjYWQ5ZDNkYWZjMzQuLmQ0NjMzZGRiNmNjNjQ5ODAzYjkyNDU3NTYyNWJmYTUyOGMx
N2Q0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC00MjIsNiArNDIyLDkgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV9zaG91
bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckNhbnZh
c0luR1BVUHJvY2VzcyB9CiAgICAgLCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IHBh
cmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUGxh
eU1lZGlhSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nl
c3MgfQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICAsIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVBy
b2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzfQorI2VuZGlm
CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgICwgbV9uZWVkc0luQXBwQnJvd3Nl
clByaXZhY3lRdWlya3MgeyBwYXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJr
cyB9CiAjZW5kaWYKQEAgLTcyNSw3ICs3MjgsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAg
ICAgaWYgKFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIqIG1hbmFnZXIgPSB3ZWJQcm9jZXNzLnN1
cHBsZW1lbnQ8V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcj4oKSkKICAgICAgICAgbV9wYWdlLT5z
ZXR0aW5ncygpLnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobWFuYWdlci0+bWVkaWFLZXlT
dG9yYWdlRGlyZWN0b3J5KCkpOwogI2VuZGlmCi0gICAgCiAgICAgaWYgKHBhcmFtZXRlcnMudmll
d1NjYWxlRmFjdG9yICE9IDEpCiAgICAgICAgIHNjYWxlVmlldyhwYXJhbWV0ZXJzLnZpZXdTY2Fs
ZUZhY3Rvcik7CiAKQEAgLTM3OTMsNiArMzc5NSw5IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJl
ZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyhtX3Nob3Vs
ZFJlbmRlckNhbnZhc0luR1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJv
Y2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0Zvck1l
ZGlhKG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKG1fc2hv
dWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpOworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShJUENfVEVTVElOR19BUEkpCkBAIC02OTkwLDYgKzY5OTUsNyBAQCB2b2lkIFdlYlBhZ2U6OnN5
bmNocm9uaXplQ09SU0Rpc2FibGluZ1BhdHRlcm5zV2l0aE5ldHdvcmtQcm9jZXNzKCkKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtX2lkZW50aWZpZXIsIG1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zKSwgMCk7CiB9CiAKKwogI2lmIEVOQUJMRShNRURJQV9VU0FHRSkKIHZvaWQgV2ViUGFn
ZTo6YWRkTWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9uKE1lZGlhU2Vzc2lvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHBhZ2VV
UkwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
ZTdmOGMwYTNiNjA0ZTdhYTE1N2M3NDAyMzFlNTU1NzQ5ZDRlZjdjNy4uMjExMGEzMmY2NzBmMDBm
YTI0NGZlNmY5ZDc5NWE2ZGRmNjBkMTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNs
dWRlc0NoaWxkRnJhbWVzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJF
ZGl0aW5nUmFuZ2UuaCIKQEAgLTE2MCw3ICsxNjEsNiBAQCBjbGFzcyBBcnJheTsKIAogbmFtZXNw
YWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNz
IERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTEyNTcsNyArMTI1Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
Ym9vbCBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHkpCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKICAgICAgICAg
Y2FuY2VsR2VzdHVyZXNCbG9ja2VkT25TeW5jaHJvbm91c1JlcGxpZXMoKTsKICAgICAgICAgcmV0
dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBTZWNvbmRzOjpp
bmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxs
U3VzcGVuZCk7CkBAIC0xODI2LDYgKzE4MjYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91
bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRS
ZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRQbGF5TWVk
aWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1f
c2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJvb2wgbV9uZWVkc0luQXBwQnJvd3NlclByaXZh
Y3lRdWlya3MgeyBmYWxzZSB9OwogI2VuZGlmCkBAIC0yMTgzLDQgKzIxODYsMyBAQCBpbmxpbmUg
Ym9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgV2Vi
Q29yZTo6RnJhbWUmKSBjbwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IGU1NzVmY2EwMTlmNmIxMmE4ZjRkYWU1Y2IxZDY4MmRhNGU0MzZlYjkuLjg0ZTI4NDExY2Zk
ZGQ5MWY5YTVkNDdjMjFkNzFlOWRiNmQ3YzYzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC01MTcsNyArNTE3LDcgQEAg
Ym9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBl
dmVudCkKIAogICAgIC8vIEZJWE1FOiBJbnRlcnByZXQgdGhlIGV2ZW50IGltbWVkaWF0ZWx5IHVw
b24gcmVjZWl2aW5nIGl0IGluIFVJIHByb2Nlc3MsIHdpdGhvdXQgc2VuZGluZyB0byBXZWJQcm9j
ZXNzIGZpcnN0LgogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCBz
ZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQo
ZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlw
ZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCisgICAgYXV0byBzZW5kUmVzdWx0
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3Rh
dGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkludGVycHJldEtleUV2ZW50OjpSZXBseShldmVudFdhc0hhbmRsZWQpLCBtX2lkZW50aWZp
ZXIpOwogICAgIHJldHVybiBzZW5kUmVzdWx0ICYmIGV2ZW50V2FzSGFuZGxlZDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBmMmYyMjgyMmM3YjIyM2ZjYTU5
Zjk1NTczZDExZGM5OWIxMDM0ODExLi41ODJlZTc1ZDk5YTc0MjQyNTRhMzlkYWIyMDZmODQ2MTcz
NGFkOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTQy
LDYgKzE5NDIsMjAgQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdG
b3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9
CisKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NG
b3JXZWJHTChib29sIHVzZUdQVVByb2Nlc3NGb3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQVVByb2Nl
c3NGb3JXZWJHTCA9IHVzZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworYm9vbCBXZWJQcm9jZXNz
OjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQorCisjZW5kaWYKKwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTljNDdk
YjRjNDQ3YzBmNGFiNjI3YzA5NGI1ZjY4ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMyNzY0YzRk
ODUzNzkwOTBiMmNiY2E3M2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC0zNDcsNiArMzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NG
b3JET01SZW5kZXJpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEo
Ym9vbCk7CiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVu
ZGVyaW5nUHVycG9zZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgc2V0VXNlR1BVUHJv
Y2Vzc0ZvcldlYkdMKGJvb2wpOworICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9y
V2ViR0woKSBjb25zdDsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpAQCAtNjg3
LDYgKzY5MSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNS
ZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVy
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFsc2Ug
fTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCB7
IGZhbHNlIH07CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMjIyN2I3YjVlNDZjMjQ0
NGQ4OWRiNzQ1ZTc2MmE5MGM0ODUzZDkyLi5mZTM5YjAzZDlhNWE0OGFmNDE3NGJjZTY5YWNmYjdh
Nzc2ZmNiZTU1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIx
NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIHJlbW90ZSB2ZXJzaW9u
IG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUgcHJvY2Vzcy4KKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDIGFuZCBpcyBpbmNvbXBsZXRlLgorCisg
ICAgICAgIEFkZCB0aGUgY29kZSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgdGhlIGltcGxlbWVudGF0
aW9uLiBDdXJyZW50bHkKKyAgICAgICAgdGhlIGdlbmVyYXRvciBnZW5lcmF0ZXMgYSBXZWJLaXQg
SVBDIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFRoZSBpbnB1dCBkZWZpbml0aW9uIHRvIHRo
ZSBnZW5lcmF0b3IgaXMgdGhlIHByb3h5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGhlYWRlciBm
aWxlcy4KKyAgICAgICAgVGhlIG91dHB1dCBvZiB0aGUgZ2VuZXJhdG9yIGlzCisgICAgICAgICAg
IC0gV2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZmlsZQorICAgICAgICAgICAtIE1lc3Nh
Z2Ugc2VuZGVyIGNvZGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHJlY2VpdmVyIGFuZCBwYXlsb2Fk
IGludm9jYXRpb24gY29kZQorCisgICAgICAgIFRoZSBnZW5lcmF0b3IgY29udmVydHMgR3JhcGhp
Y3NDb250ZXh0R0wgR0NHTCAtcHJlZml4ZWQgdHlwZXMgdG8KKyAgICAgICAgc2l6ZWQgSVBDIHR5
cGVzLgorCisgICAgICAgIFRoZSBnZW5lcmF0b3IgaXMgaW52b2tlZCBkdXJpbmcgZGV2ZWxvcG1l
bnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIHN0b3JlZCBpbiB0aGUgcmVwb3Np
dG9yeS4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDogQWRkZWQuCisK
IDIwMjAtMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBzdXBwb3J0IGZvciByZWFkYWJsZS93cml0YWJsZSB0byBSVENSdHBTRnJhbWVUcmFuc2Zv
cm0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTZiNDIyMjljZjJmODI4
YzY2YzdlN2I0MTc3M2MyZWJlNDQzMTE0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC0wLDAgKzEsMTA0NCBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uMworIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
IyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisK
KyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBzb3VyY2UgZmlsZXMgZm9yIFdlYkdMIEdQVSBw
cm9jZXNzIElQQy4KKyMKKyMgcHl0aG9uMyAtbSBibGFjayAtbCAxNTAgVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsCisjIHB5dGhvbjMgLW0gbXlweSBUb29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wKKyMKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGVudW0KK2ltcG9ydCBw
YXRobGliCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBjb2xsZWN0aW9ucworCitmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdCwgRGljdCwgSXRlcmFibGUsIENhbGxhYmxlLCBUdXBsZSwgU2V0
LCBPcHRpb25hbCwgR2VuZXJhdG9yLCBJdGVyYXRvciwgQ291bnRlcgorCityb290X2RpciA9IChw
YXRobGliLlBhdGgoX19maWxlX18pLnBhcmVudCAvICIuLiIgLyAiLi4iKS5yZXNvbHZlKCkKK2V4
dGVuc2lvbnNfaW5wdXRfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYkNvcmUiIC8gInBs
YXRmb3JtIiAvICJncmFwaGljcyIgLyAiRXh0ZW5zaW9uc0dMLmgiCisKK2Z1bmN0aW9uc19pbnB1
dF9mbnMgPSBbCisgICAgcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nl
c3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aCIKK10KK3R5cGVzX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8g
IldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaCIKKworCit0ZW1wbGF0ZV9wcmVhbWJsZSA9ICIiIi8qIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0Lgor
IiIiCitjb250ZXh0X2Z1bmN0aW9uc19mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0
IiAvICJHUFVQcm9jZXNzIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xG
dW5jdGlvbnNHZW5lcmF0ZWQuaCIKK2NvbnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlID0gKAorICAg
IHRlbXBsYXRlX3ByZWFtYmxlCisgICAgKyAiIiIvLyBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1
ZGVkIGluIHRoZSBwcml2YXRlIHNlY3Rpb24gb2YgdGhlCisvLyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBpbXBsZW1lbnRhdGlvbnMuCisjcHJhZ21hIG9uY2UKK3t9CisKKyIiIgorKQorY29udGV4
dF9tZXNzYWdlc19mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJHUFVQcm9j
ZXNzIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4i
Citjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0gKAorICAgIHRlbXBsYXRlX3ByZWFtYmxlCisg
ICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQge3sKKyAgICB2b2lk
IFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3Bs
YXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAg
dm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2
b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7fQorfX0KKworI2VuZGlmCisKKyIiIgorKQorCitj
b250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0
IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCIKK2NvbnRleHRfcHJveHlfZnVuY3Rp
b25zX3RlbXBsYXRlID0gKAorICAgIHRlbXBsYXRlX3ByZWFtYmxlCisgICAgKyAiIiIKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNl
IFdlYktpdCB7ewore30KKworfX0KKworI2VuZGlmCisKKyIiIgorKQorCisKK2RlZiB3cml0ZV9m
aWxlKGZuLCBuZXdfY29udGVudHMpOgorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBh
cyBmOgorICAgICAgICAgICAgaWYgZi5yZWFkKCkgPT0gbmV3X2NvbnRlbnRzOgorICAgICAgICAg
ICAgICAgIHJldHVybgorICAgIGV4Y2VwdDoKKyAgICAgICAgcGFzcworICAgIHdpdGggb3Blbihm
biwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKG5ld19jb250ZW50cykKKworY2xhc3MgY3Bw
X3R5cGUob2JqZWN0KToKKyAgICB0eXBlX25hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHR5cGVfbmFtZSA6IHN0cik6CisgICAgICAgIHNlbGYudHlwZV9uYW1lID0gdHlwZV9uYW1l
CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1l
CisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYudHlw
ZV9uYW1lKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50
eXBlX25hbWUKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4g
c2VsZi50eXBlX25hbWUgPT0gb3RoZXIudHlwZV9uYW1lCisKKyAgICBkZWYgaXNfdm9pZChzZWxm
KSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUgaW4gWyJ2b2lkIiwgIkdD
R0x2b2lkIiwgImNvbnN0IHZvaWQiLCAiY29uc3QgR0NHTHZvaWQiXQorCisgICAgZGVmIGlzX2Nv
bnN0KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZS5zdGFydHN3
aXRoKCJjb25zdCAiKQorCisgICAgZGVmIGlzX2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAt
PiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19keW5hbWljX3NwYW4o
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcG9pbnRl
cihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25z
dF9wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVm
IGlzX3JlZmVyZW5jZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZh
bHNlCisKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAg
ICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXRfZGVjYXlfdHlwZShzZWxmKSAtPiAnY3BwX3R5
cGUnOgorICAgICAgICBpZiBzZWxmLmlzX2NvbnN0KCk6CisgICAgICAgICAgICByZXR1cm4gZ2V0
X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lWzY6XSkKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAg
IGRlZiBnZXRfcnZhbHVlX3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJu
IGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFtZSArICImJiIpCisKKyAgICBkZWYgZ2V0X3BvaW50
ZXJfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBl
KHNlbGYudHlwZV9uYW1lICsgIioiKQorCitjbGFzcyBjcHBfdHlwZV9jb250YWluZXIoY3BwX3R5
cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIGNvbnRhaW5lcl9u
YW1lIDogc3RyLCBjb250YWluZWRfdHlwZSA6IGNwcF90eXBlLCBhcml0eSA6IE9wdGlvbmFsW2lu
dF0gPSBOb25lKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQor
ICAgICAgICBzZWxmLmNvbnRhaW5lcl9uYW1lID0gY29udGFpbmVyX25hbWUKKyAgICAgICAgc2Vs
Zi5jb250YWluZWRfdHlwZSA9IGNvbnRhaW5lZF90eXBlCisgICAgICAgIHNlbGYuYXJpdHkgPSBh
cml0eQorICAgIGRlZiBpc19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJu
IFRydWUKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2Vs
Zi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iCisgICAgZGVmIGlzX2R5bmFtaWNfc3Bhbihz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NH
TFNwYW4iIGFuZCBzZWxmLmFyaXR5IGlzIE5vbmUKKyAgICBkZWYgZ2V0X2NvbnRhaW5lcl9uYW1l
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZQorICAgIGRlZiBnZXRf
YXJpdHkoc2VsZikgLT4gT3B0aW9uYWxbaW50XToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXJpdHkK
KyAgICBkZWYgZ2V0X2NvbnRhaW5lZF90eXBlKHNlbGYpIC0+IGNwcF90eXBlOgorICAgICAgICBy
ZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZQorICAgIGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVkX3R5cGUuaXNfY29u
c3QoKQorCitkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+
IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CisgICAgbSA9IHJlLm1hdGNoKHIiKFtcdzpd
Kyk8KC4rKT4kIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9u
ZQorICAgIGNvbnRhaW5lcl9uYW1lID0gbVsxXQorICAgIHRlbXBsYXRlcyA9IG1bMl0KKyAgICBh
cml0eSA9IE5vbmUKKyAgICBtID0gcmUubWF0Y2gociIoW14sXSspLFxzKihcZCspIiwgdGVtcGxh
dGVzKQorICAgIGlmIG06CisgICAgICAgIHRlbXBsYXRlcyA9IG1bMV0KKyAgICAgICAgYXJpdHkg
PSBpbnQobVsyXSkKKyAgICByZXR1cm4gY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSwgY29u
dGFpbmVyX25hbWUsIGdldF9jcHBfdHlwZSh0ZW1wbGF0ZXMpLCBhcml0eSkKKworY2xhc3MgY3Bw
X3R5cGVfZnVuY3Rpb24oY3BwX3R5cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25h
bWUgOiBzdHIsIHJldHVybl92YWx1ZV90eXBlIDogY3BwX3R5cGUsIGFyZ3VtZW50X3R5cGVzIDog
TGlzdFtjcHBfdHlwZV0pOgorICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25h
bWUpCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX3R5cGUgID0gcmV0dXJuX3ZhbHVlX3R5cGUK
KyAgICAgICAgc2VsZi5hcmd1bWVudF90eXBlcyA9IGFyZ3VtZW50X3R5cGVzCisKK2RlZiBjcHBf
c3BsaXRfYXJnc19zcGVjcyhhcmdzX3NwZWMgOiBzdHIpIC0+IEl0ZXJhdG9yW3N0cl06CisgICAg
ICMgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzM1MjcyNDUvcHl0aG9uLXNw
bGl0LWJ5LWNvbW1hLXNraXBwaW5nLXRoZS1jb250ZW50LWluc2lkZS1wYXJlbnRoZXNlcworICAg
IGNvbW1hID0gciIsKD8hKD86W148XSpcPFtePl0qXD4pKltePD5dKlw+KSIKKyAgICByZXR1cm4g
ZmlsdGVyKE5vbmUsIFthLnN0cmlwKCkgZm9yIGEgaW4gcmUuc3BsaXQoY29tbWEsIGFyZ3Nfc3Bl
Yy5zdHJpcCgpKV0pCisgICAgCitkZWYgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFt
ZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfZnVuY3Rpb25dOgorICAgIG0gPSByZS5tYXRj
aChyJyguKilcKCguKilcKScsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0
dXJuIE5vbmUKKyAgICByZXR1cm5fdmFsdWVfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAg
IGFyZ3NfdHlwZXMgPSBbZ2V0X2NwcF90eXBlKGEpIGZvciBhIGluIGNwcF9zcGxpdF9hcmdzX3Nw
ZWNzKG1bMl0pXQorICAgIHJldHVybiBjcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUsIHJldHVy
bl92YWx1ZV90eXBlLCBhcmdzX3R5cGVzKQorICAgICAgICAKKyMgUG9pbnRlciBvciByZWZlcmVy
ZW5jZQorY2xhc3MgY3BwX3R5cGVfaW5kaXJlY3QoY3BwX3R5cGUpOgorICAgIGNhdGVnb3J5IDog
c3RyCisgICAgdmFsdWVfdHlwZSA6IGNwcF90eXBlCisgICAgCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHR5cGVfbmFtZSA6IHN0ciwgY2F0ZWdvcnkgOiBzdHIsIHZhbHVlX3R5cGUgOiBjcHBfdHlw
ZSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAg
c2VsZi5jYXRlZ29yeSA9IGNhdGVnb3J5CisgICAgICAgIHNlbGYudmFsdWVfdHlwZSA9IHZhbHVl
X3R5cGUKKworICAgIGRlZiBpc19jb25zdF9wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19wb2lu
dGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIG5vdCBz
ZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfY29uc3RfcmVmZXJlbmNlKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicgYW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRl
ZiBpc19yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcm
JyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19ydmFsdWVfcmVmZXJlbmNlKHNl
bGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJiYnCisgICAgZGVmIGdldF92
YWx1ZV90eXBlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZV90eXBlCisKK2RlZiBj
cmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBf
dHlwZV9pbmRpcmVjdF06CisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYmJCIsIHR5cGVf
bmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYmJCIsIHR5
cGVfbmFtZSkgCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5
cGVfbmFtZSwgJyYmJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNv
bnN0ICguKykmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1h
dGNoKHIiKC4rKSYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBf
dHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcmJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0g
PSByZS5tYXRjaChyImNvbnN0ICguKylcKiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06Cisg
ICAgICAgIG0gPSByZS5tYXRjaChyIiguKylcKiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAg
ICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyonLCBnZXRfY3BwX3R5
cGUobVsxXSkpCisgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBjcHBfZXhwcihvYmplY3QpOgor
ICAgIHR5cGU6IGNwcF90eXBlCisgICAgZXhwcjogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdHlwZTogY3BwX3R5cGUsIGV4cHI6IHN0cik6CisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUK
KyAgICAgICAgc2VsZi5leHByID0gZXhwcgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLmV4cHIKKworCitDcHBFeHByQ29udmVydGVyID0gQ2FsbGFibGVbW2Nw
cF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHByXQorCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2Fz
dF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjYXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBlKSAtPiBD
YWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdOgorICAgIGRlZiBjcHBfcmVp
bnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBl
KSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYic3RhdGljX2Nh
c3Q8e3R5cGUudHlwZV9uYW1lfT4ocmVpbnRlcnByZXRfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90
eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF9m
cm9tX3BvaW50ZXIKKworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXJfdGhyb3Vn
aChjYXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNw
cF90eXBlXSwgY3BwX2V4cHJdOgorICAgIGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2lu
dGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgICAg
IHJldHVybiBjcHBfZXhwcih0eXBlLCBmInJlaW50ZXJwcmV0X2Nhc3Q8e3R5cGUudHlwZV9uYW1l
fT4oc3RhdGljX2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIpfSkpIikK
KyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcgorCitkZWYgY3BwX3N0
YXRpY19jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6Cisg
ICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4o
e3N0cihleHByKX0pIikKKworCitkZWYgY3BwX2ltcGxpY2l0X2Nhc3QoZXhwcjogY3BwX2V4cHIs
IHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwg
c3RyKGV4cHIpKQorCisKK2RlZiBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9u
KGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgor
ICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRf
cG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfShy
ZWludGVycHJldF9jYXN0PHtlbGVtZW50X3BvaW50ZXJfdHlwZX0+KHtzdHIoZXhwcil9LmRhdGEo
KSksIHtzdHIoZXhwcil9LnNpemUoKSkiKQorCitkZWYgd2Via2l0X2lwY19zcGFuX3RyYW5zZmVy
X3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBj
cHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBl
ID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1
cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfShyZWludGVycHJldF9jYXN0PGNvbnN0IHtl
bGVtZW50X3BvaW50ZXJfdHlwZX0+KHtzdHIoZXhwcil9LmRhdGEpLCB7c3RyKGV4cHIpfS5idWZT
aXplKSIpCisKK2RlZiBjcHBfbW92ZV9leHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoK
KyAgICByZXR1cm4gY3BwX2V4cHIoZXhwci50eXBlLmdldF9ydmFsdWVfdHlwZSgpLCBmIldURk1v
dmUoe3N0cihleHByKX0pIikKKworCitjcHBfdHlwZXM6IERpY3Rbc3RyLCBjcHBfdHlwZV0gPSB7
fQorCitjcHBfdHlwZV9jb25zdHJ1Y3RvcnMgOiBMaXN0W0NhbGxhYmxlW1tzdHJdLCBPcHRpb25h
bFtjcHBfdHlwZV1dXSA9IFsKKyAgICBjcmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24sCisgICAgY3Jl
YXRlX2NwcF90eXBlX2NvbnRhaW5lciwKKyAgICBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QKK10K
KworZGVmIGdldF9jcHBfdHlwZSh0eXBlX25hbWU6IHN0cik6CisgICAgciA9IGNwcF90eXBlcy5n
ZXQodHlwZV9uYW1lLCBOb25lKQorICAgIGlmIHI6CisgICAgICAgIHJldHVybiByCisgICAgZm9y
IHR5cGVfY29uc3RyIGluIGNwcF90eXBlX2NvbnN0cnVjdG9yczoKKyAgICAgICAgciA9IHR5cGVf
Y29uc3RyKHR5cGVfbmFtZSkKKyAgICAgICAgaWYgcjoKKyAgICAgICAgICAgIGJyZWFrCisgICAg
aWYgbm90IHI6CisgICAgICAgIHIgPSBjcHBfdHlwZSh0eXBlX25hbWUpCisgICAgY3BwX3R5cGVz
W3R5cGVfbmFtZV0gPSByCisgICAgcmV0dXJuIHIKKworCitjbGFzcyBjcHBfYXJnKG9iamVjdCk6
CisgICAgbmFtZTogc3RyCisgICAgdHlwZTogY3BwX3R5cGUKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFtZTogc3RyKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFt
ZQorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuICJ7fSB7fSIuZm9ybWF0KHNlbGYudHlwZSwgc2VsZi5uYW1lKQorCisKK2Ns
YXNzIGNwcF9kZWNsKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBuYW1lOiBzdHIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFtZTogc3RyKToKKyAg
ICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBk
ZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGYie3N0cihzZWxmLnR5cGUpfSB7c2Vs
Zi5uYW1lfSIKKworCitjbGFzcyBjcHBfYXJnX2xpc3Qob2JqZWN0KToKKyAgICBhcmdzOiBMaXN0
W2NwcF9hcmddCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSk6
CisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKworICAgIGRlZiBuYW1lcyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuICIsICIuam9pbihhLm5hbWUgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisgICAgZGVm
IGV4cHJzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2NwcF9leHByKGEudHlwZSwgYS5uYW1lKSBm
b3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgZGVjbHMoc2VsZik6CisgICAgICAgIHJldHVy
biBbY3BwX2RlY2woYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRl
ZiB0eXBlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFthLnR5cGUgZm9yIGEgaW4gc2VsZi5hcmdz
XQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAiLCAiLmpvaW4oc3Ry
KGEpIGZvciBhIGluIHNlbGYuYXJncykKKworCitjbGFzcyBjcHBfZnVuYyhvYmplY3QpOgorICAg
IG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorICAgIHJldHVybl90eXBlOiBjcHBf
dHlwZQorICAgIGlzX2V4dGVuc2lvbjogYm9vbAorICAgIG92ZXJsb2FkX3N1ZmZpeDogc3RyCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZTogc3RyLCByZXR1cm5fdHlwZTogY3BwX3R5cGUs
IGFyZ3M6IGNwcF9hcmdfbGlzdCwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAgICAgICAgc2VsZi5u
YW1lID0gbmFtZQorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAg
ICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVu
c2lvbgorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9ICIiCisKKyAgICBkZWYgX19zdHJf
XyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGYie3NlbGYucmV0dXJuX3R5cGV9IHtzZWxmLm5hbWV9
KHtzdHIoc2VsZi5hcmdzKX0pIgorCisgICAgZGVmIGdldF9hcmdzX2NhdGVnb3JpZXMoc2VsZikg
LT4gVHVwbGVbTGlzdFtjcHBfYXJnXSwgTGlzdFtjcHBfYXJnXV06CisgICAgICAgIGluX2FyZ3Mg
PSBbXQorICAgICAgICBvdXRfYXJncyA9IFtdCisgICAgICAgIGZvciBhIGluIHNlbGYuYXJncy5h
cmdzOgorICAgICAgICAgICAgI2ZtdDogb2ZmCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfcG9p
bnRlcigpIG9yIFwKKyAgICAgICAgICAgICAgICBhLnR5cGUuaXNfcmVmZXJlbmNlKCk6CisgICAg
ICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
YS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpIGFuZCAoKChhLnR5cGUuaXNfc3BhbigpIG9yIGEu
dHlwZS5pc19keW5hbWljX3NwYW4oKSkgYW5kIG5vdCBhLnR5cGUuZ2V0X2NvbnRhaW5lZF90eXBl
KCkuaXNfY29uc3QoKSkpOgorICAgICAgICAgICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbl9hcmdzICs9IFthXQorICAgICAgICAgICAg
I2ZtdDogb24KKyAgICAgICAgcmV0dXJuIGluX2FyZ3MsIG91dF9hcmdzCisKKyAgICBkZWYgaXNf
aW1wbGVtZW50ZWRfdHlwZShzZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHR5cGUu
aXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJl
dHVybiBUcnVlCisKKyAgICBkZWYgaXNfaW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgICMiIGlu
IGEudHlwZS50eXBlX25hbWUgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAjICAg
IHJldHVybiBGYWxzZQorICAgICAgICAjaWYgIkdDR0xzeW5jIiBpbiBzZWxmLnJldHVybl90eXBl
LnR5cGVfbmFtZToKKyAgICAgICAgIyAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEu
bmFtZSA9PSAiYnVmU2l6ZSIgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLnR5cGUuaXNfcG9pbnRlcigpIGFuZCBhLnR5
cGUuZ2V0X3ZhbHVlX3R5cGUoKS5pc192b2lkKCkgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShub3Qgc2VsZi5pc19pbXBs
ZW1lbnRlZF90eXBlKGEudHlwZSkgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYucmV0dXJuX3R5cGUuaXNfcG9pbnRlcigp
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2ltcGxl
bWVudGVkX3R5cGUoc2VsZi5yZXR1cm5fdHlwZSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgcmV0dXJuIFRydWUKKworCit3ZWJraXRfaXBjX3R5cGVzOiBEaWN0W2NwcF90eXBl
LCBjcHBfdHlwZV0gPSB7fQorCit3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnM6IERpY3RbVHVw
bGVbY3BwX3R5cGUsIGNwcF90eXBlXSwgQ3BwRXhwckNvbnZlcnRlcl0gPSB7fQorCisKK2RlZiB3
ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+
IGNwcF9leHByOgorICAgICIiIiBDb252ZXJ0cyBgZXhwcmAgb2YgdHlwZSBvZiBgc2VsZmAgdG8g
YHR5cGVgICIiIgorICAgIGNvbnZlcnQgPSB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuZ2V0
KChleHByLnR5cGUsIHR5cGUpLCBOb25lKQorICAgIGlmIG5vdCBjb252ZXJ0OgorICAgICAgICBp
ZiBleHByLnR5cGUgPT0gdHlwZToKKyAgICAgICAgICAgIHJldHVybiBleHByCisgICAgICAgIGNv
bnZlcnQgPSBjcHBfaW1wbGljaXRfY2FzdAorICAgIHJldHVybiBjb252ZXJ0KGV4cHIsIHR5cGUp
CisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNmZXJfdHlwZSh0eXBlIDogY3BwX3R5
cGVfY29udGFpbmVyKSAtPiBjcHBfdHlwZToKKyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9j
b250YWluZWRfdHlwZSgpLmdldF9kZWNheV90eXBlKCkKKyAgICBhcml0eSA9IHR5cGUuZ2V0X2Fy
aXR5KCkKKyAgICB3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZWxl
bWVudF90eXBlXSBpZiBub3QgZWxlbWVudF90eXBlLmlzX3ZvaWQoKSBlbHNlIGdldF9jcHBfdHlw
ZSgndWludDhfdCcpCisgICAgaWYgYXJpdHkgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBn
ZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50
X3R5cGUpfSwge2FyaXR5fT4iKQorICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5
UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50X3R5cGUpfT4iKQorCisKKworZGVmIHdl
YmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZSh0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+
IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCku
Z2V0X2RlY2F5X3R5cGUoKQorICAgIGlmIGVsZW1lbnRfdHlwZS5pc192b2lkKCk6CisgICAgICAg
IGVsZW1lbnRfdHlwZSA9IGdldF9jcHBfdHlwZSgnR0NHTGNoYXInKQorICAgIGlmIHR5cGUuaXNf
ZHluYW1pY19zcGFuKCk6CisgICAgICAgIGlubGluZV9jYXBhY2l0eSA9IDE2IGlmICJmbG9hdCIg
aW4gZWxlbWVudF90eXBlLnR5cGVfbmFtZSBlbHNlIDQKKyAgICAgICAgcmV0dXJuIGdldF9jcHBf
dHlwZShmIlZlY3Rvcjx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKGlubGluZV9jYXBhY2l0eSl9
PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmInN0ZDo6YXJyYXk8e3N0cihlbGVtZW50X3R5
cGUpfSwge3N0cih0eXBlLmdldF9hcml0eSgpKX0+IikKKworZGVmIHdlYmtpdF9pcGNfbWFrZV9n
Y2dsc3Bhbl9jb252ZXJzaW9uKGV4cHIgOiBjcHBfZXhwciwgdHlwZSA6IGNwcF90eXBlX2NvbnRh
aW5lcikgLT4gY3BwX2V4cHI6CisgICAgcG9pbnRlcl9jYXN0X3R5cGUgPSB0eXBlLmdldF9jb250
YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19z
cGFuKCk6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PHtzdHIocG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgp
KSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisKKyAgICBhc3NlcnQodHlwZS5pc19zcGFuKCkpCisg
ICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYibWFrZUdDR0xTcGFuPHtzdHIodHlwZS5nZXRfYXJp
dHkoKSl9PihyZWludGVycHJldF9jYXN0PHtzdHIocG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihl
eHByKX0uZGF0YSgpKSkiKQorCisjIFNlZSBtZXNzYWdlcy5weSBmdW5jdGlvbl9wYXJhbWV0ZXJf
dHlwZQord2Via2l0X2lwY19idWlsdGluX3R5cGVzID0gc2V0KAorICAgIFsidWludDhfdCIsICJ1
aW50MTZfdCIsICJ1aW50MzJfdCIsICJ1aW50NjRfdCIsICJpbnQ4X3QiLCAiaW50MTZfdCIsICJp
bnQzMl90IiwgImludDY0X3QiLCAiYm9vbCIsICJmbG9hdCIsICJkb3VibGUiICJib29sIl0KKykK
KworCitkZWYgd2Via2l0X2lwY19nZXRfbWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh0eXBlOiBjcHBf
dHlwZSkgLT4gY3BwX3R5cGU6CisgICAgaWYgdHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19i
dWlsdGluX3R5cGVzOgorICAgICAgICByZXR1cm4gdHlwZQorICAgIHJldHVybiB0eXBlLmdldF9y
dmFsdWVfdHlwZSgpCisKKworZGVmIHdlYmtpdF9pcGNfbW92ZV9leHByKGV4cHI6IGNwcF9leHBy
KSAtPiBjcHBfZXhwcjoKKyAgICBpZiBleHByLnR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNf
YnVpbHRpbl90eXBlczoKKyAgICAgICAgcmV0dXJuIGV4cHIKKyAgICByZXR1cm4gY3BwX21vdmVf
ZXhwcihleHByKQorCisKK2RlZiB3ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmM6IGNwcF9mdW5jKToK
KyAgICByZXR1cm4gZnVuYy5uYW1lWzBdLmNhcGl0YWxpemUoKSArIGZ1bmMubmFtZVsxOl0gKyBm
dW5jLm92ZXJsb2FkX3N1ZmZpeAorCisKK2NsYXNzIHdlYmtpdF9pcGNfbXNnKG9iamVjdCk6Cisg
ICAgbmFtZTogc3RyCisgICAgaW5fYXJnczogY3BwX2FyZ19saXN0CisgICAgb3V0X2FyZ3M6IGNw
cF9hcmdfbGlzdAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmM6IGNwcF9mdW5jKToKKyAg
ICAgICAgc2VsZi5uYW1lID0gd2Via2l0X2lwY19tc2dfbmFtZShmdW5jKQorICAgICAgICBpbl9h
cmdzLCBvdXRfYXJncyA9IGZ1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIGlwY19p
bl9hcmdzID0gW2NwcF9hcmcod2Via2l0X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUpIGZvciBh
IGluIGluX2FyZ3NdCisgICAgICAgIGlwY19vdXRfYXJncyA9IFtdCisgICAgICAgIGlmIG5vdCBm
dW5jLnJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBb
Y3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2Z1bmMucmV0dXJuX3R5cGVdLCAicmV0dXJuVmFsdWUi
KV0KKyAgICAgICAgZm9yIGEgaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3Mg
Kz0gW2NwcF9hcmcod2Via2l0X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUpXQorICAgICAgICAg
ICAgaWYgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgIGlwY19pbl9h
cmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZSgidWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUi
KV0KKyAgICAgICAgc2VsZi5pbl9hcmdzID0gY3BwX2FyZ19saXN0KGlwY19pbl9hcmdzKQorICAg
ICAgICBzZWxmLm91dF9hcmdzID0gY3BwX2FyZ19saXN0KGlwY19vdXRfYXJncykKKworICAgIGRl
ZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZi5vdXRfYXJncy5hcmdzKToKKyAg
ICAgICAgICAgIHJldHVybiBmIlxuICAgIHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2Fy
Z3MpfSkgLT4gKHtzdHIoc2VsZi5vdXRfYXJncyl9KSBTeW5jaHJvbm91cyIKKyAgICAgICAgcmV0
dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSIKKworCitj
bGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisg
ICAgbXNnX25hbWU6IHN0cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNw
cF9hcmdfbGlzdAorCisgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3Rt
dHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcmV0dXJu
X3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRf
ZXhwcnM6IExpc3RbY3BwX2V4cHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6
IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBz
ZWxmLm1zZ19uYW1lID0gd2Via2l0X2lwY19tc2dfbmFtZShjcHBfZnVuYykKKyAgICAgICAgc2Vs
Zi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9
IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAg
IHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10K
KyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0g
W10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJn
cyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3Nf
cmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVybl90eXBlKQorICAgICAgICBzZWxmLnByb2Nlc3Nf
aW5fYXJncyhpbl9hcmdzKQorICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2FyZ3Mob3V0X2FyZ3Mp
CisgICAgICAgIHNlbGYucHJvY2Vzc19jYWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2Vs
Zik6CisgICAgICAgIGluX2V4cHJzID0gIiwgIi5qb2luKFtzdHIoaSkgZm9yIGkgaW4gc2VsZi5p
bl9leHByc10pCisgICAgICAgIG91dF9leHBycyA9ICIsICIuam9pbihzdHIobykgZm9yIG8gaW4g
c2VsZi5vdXRfZXhwcnMpCisgICAgICAgIGlzX2FzeW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192
b2lkKCkgYW5kIGxlbihvdXRfZXhwcnMpID09IDAKKyAgICAgICAgaWYgaXNfYXN5bmM6CisgICAg
ICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgIGYic2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOyIsCisgICAgICAgICAgICBdCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICIiCisgICAgICAgICAgICBpZiBz
ZWxmLnBvc3RfY2FsbF9zdG10czogCisgICAgICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiYXV0
byBzZW5kUmVzdWx0ID0gIgorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0g
WworICAgICAgICAgICAgICAgICAgICAiaWYgKHNlbmRSZXN1bHQpIiArICgiIHsiIGlmIGxlbihz
ZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXSArIFsi
ICAgICIgKyBzIGZvciBzIGluIHNlbGYucG9zdF9jYWxsX3N0bXRzXSArIFsKKyAgICAgICAgICAg
ICAgICAgICAgKCJ9IiBpZiBsZW4oc2VsZi5wb3N0X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQor
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAg
ICAgICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsiLAorICAgICAgICAgICAgXQor
CisKKyAgICBkZWYgcHJvY2Vzc19pbl9hcmdzKHNlbGYsIGluX2FyZ3M6IExpc3RbY3BwX2FyZ10p
OgorICAgICAgICBmb3IgaSBpbiBpbl9hcmdzOgorICAgICAgICAgICAgaWYgaS50eXBlLmlzX2Nv
bnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbd2Via2l0X2lwY19jb252
ZXJ0X2V4cHIoY3BwX2V4cHIoaS50eXBlLCBpLm5hbWUpLCB3ZWJraXRfaXBjX3R5cGVzW2kudHlw
ZV0pXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0X2FyZ3Moc2VsZiwgb3V0X2FyZ3M6IExpc3RbY3Bw
X2FyZ10pOgorICAgICAgICBmb3IgbyBpbiBvdXRfYXJnczoKKyAgICAgICAgICAgIGlmIG8udHlw
ZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICAgICAgdmFsdWVfdHlwZSA9IG8udHlwZS5nZXRf
dmFsdWVfdHlwZSgpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Vi
a2l0X2lwY190eXBlc1t2YWx1ZV90eXBlXQorICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdl
YmtpdF9pcGNfdmFsdWVfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfSA9IHt7
IH19OyJdCisgICAgICAgICAgICAgICAgZSA9IGNwcF9leHByKHYudHlwZSwgdi5uYW1lKQorICAg
ICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtlXQorICAgICAgICAgICAgICAgIHNlbGYu
cG9zdF9jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICAgICAgI2ZtdDogb2ZmCisgICAg
ICAgICAgICAgICAgICAgIGYiaWYgKHtvLm5hbWV9KSIsCisgICAgICAgICAgICAgICAgICAgIGYi
ICAgICp7by5uYW1lfSA9IHt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB2YWx1ZV90eXBlKX07
IgorICAgICAgICAgICAgICAgICAgICAjZm10OiBvbgorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIGVsaWYgby50eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBj
X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28udHlwZV0KKyAgICAgICAgICAgICAgICBhc3NlcnQo
aXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAg
ICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQor
ICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7
c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9l
eHByKHYudHlwZSwgdi5uYW1lKV0KKyAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1p
Y19zcGFuKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHBy
KGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYie28ubmFtZX0uYnVmU2l6ZSIpXQorICAgICAgICAg
ICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICAgICAgZiJt
ZW1jcHkoe28ubmFtZX0uZGF0YSwge3YubmFtZX0uZGF0YSgpLCB7by5uYW1lfS5idWZTaXplICog
c2l6ZW9mKHtzdHIod2Via2l0X2lwY190eXBlLmdldF9jb250YWluZWRfdHlwZSgpKX0pKTsiCisg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
Lm91dF9leHBycyArPSBbY3BwX2V4cHIoby50eXBlLCBvLm5hbWUpXQorCisgICAgZGVmIHByb2Nl
c3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlm
IHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxm
LnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Vi
a2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBj
cHBfZXhwcihpcGNfcmV0dXJuX3R5cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJl
X2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVf
ZXhwci5leHByfSA9IHt7IH19OyJdCisgICAgICAgIHNlbGYub3V0X2V4cHJzID0gW3JldHVybl92
YWx1ZV9leHByXSArIHNlbGYub3V0X2V4cHJzCisgICAgICAgIHNlbGYucmV0dXJuX3N0bXRzID0g
W2YicmV0dXJuIHtzdHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIs
IHJldHVybl90eXBlKSl9OyJdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9s
aW50ID0gIiAvLyBOT0xJTlQiIGlmICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBi
b2R5ID0gIiIuam9pbihmIlxuICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyAr
IHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzICsgc2VsZi5yZXR1cm5fc3Rt
dHMpCisgICAgICAgIHJldHVybiBmIiIiXG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xp
bnR9Cit7e3tib2R5fQorfX0iIiIKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFj
ZWhvbGRlcihvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlw
ZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorICAgIGJvZHk6IExpc3Rbc3RyXQorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9
IGNwcF9mdW5jLm5hbWUKKworICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0
dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxm
LmJvZHkgPSBbIm5vdEltcGxlbWVudGVkKCk7Il0KKyAgICAgICAgaWYgY3BwX2Z1bmMucmV0dXJu
X3R5cGUudHlwZV9uYW1lICE9ICJ2b2lkIjoKKyAgICAgICAgICAgIHNlbGYuYm9keSArPSBbInJl
dHVybiB7IH07Il0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAi
IC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAi
XG57XG4gICAgIiArICJcbiAgICAiLmpvaW4oc2VsZi5ib2R5KSArICJcbn0iCisgICAgICAgIHJl
dHVybiBmIlxue3N0cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fXtib2R5fSIKKworCitj
bGFzcyBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAg
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0
b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGxdCisgICAgdW5p
bXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcl0KKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdLCB1bmltcGxlbWVudGVkOiBJ
dGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3Bw
X3Byb3h5X2ltcGwoZikgZm9yIGYgaW4gZnVuY3NdCisgICAgICAgIHNlbGYudW5pbXBscyA9IFt3
ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcihmKSBmb3IgZiBpbiB1bmltcGxlbWVudGVk
XQorCisgICAgZGVmIGdldF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpv
aW4oc3RyKGkpIGZvciBpIGluIHNlbGYuaW1wbHMgKyBzZWxmLnVuaW1wbHMpCisKKyAgICBkZWYg
Z2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdyaXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0
X3Byb3h5X2Z1bmN0aW9uc19mbiwKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25z
X3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5jdGlvbnMoKSksCisgICAgICAgICkKKworCitj
bGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBsKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJn
czogY3BwX2FyZ19saXN0CisgICAgaXNfZXh0ZW5zaW9uOiBib29sCisgICAgcHJlX2NhbGxfc3Rt
dHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9z
dG10czogTGlzdFtzdHJdCisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4
cHJzOiBMaXN0W2NwcF9leHByXQorICAgIHJldHVybl92YWx1ZV9leHByOiBPcHRpb25hbFtjcHBf
ZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAg
ICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3Vm
Zml4ID0gY3BwX2Z1bmMub3ZlcmxvYWRfc3VmZml4CisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9h
cmdfbGlzdChbXSkKKyAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBjcHBfZnVuYy5pc19leHRl
bnNpb24KKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2Fs
bF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAg
c2VsZi5pbl9leHBycyA9IFtdCisgICAgICAgIHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAg
c2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IE5vbmUKKworICAgICAgICBzZWxmLnByb2Nlc3NfcmV0
dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVybl90eXBlKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJn
cyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3Nf
YXJncyhjcHBfZnVuYy5hcmdzLmFyZ3MsIHNldChpbl9hcmdzKSwgc2V0KG91dF9hcmdzKSkKKyAg
ICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToK
KyAgICAgICAgZXh0ID0gImdldEV4dGVuc2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVs
c2UgIiIKKworICAgICAgICBpbl9leHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2Vs
Zi5pbl9leHBycykKKyAgICAgICAgaXNfYXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMpID09IDAK
KworICAgICAgICBjYWxsX2V4cHIgPSBmIm1fY29udGV4dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5f
ZXhwcnN9KSIKKyAgICAgICAgaWYgbm90IHNlbGYucmV0dXJuX3ZhbHVlX2V4cHI6CisgICAgICAg
ICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yie2NhbGxfZXhwcn07Il0KKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7c3RyKHNlbGYucmV0dXJuX3ZhbHVl
X2V4cHIpfSA9IHtjYWxsX2V4cHJ9OyJdCisgICAgICAgIGlmIG5vdCBpc19hc3luYzoKKyAgICAg
ICAgICAgIG91dF9leHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5vdXRfZXhw
cnMpCisgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbZiJjb21wbGV0aW9uSGFu
ZGxlcih7b3V0X2V4cHJzfSk7Il0KKworICAgIGRlZiBwcm9jZXNzX2FyZ3Moc2VsZiwgYXJnczog
TGlzdFtjcHBfYXJnXSwgaW5fYXJnczogU2V0W2NwcF9hcmddLCBvdXRfYXJnczogU2V0W2NwcF9h
cmddKToKKyAgICAgICAgZm9yIGEgaW4gYXJnczoKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19j
b25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAg
ICBpZiBhIGluIGluX2FyZ3M6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZyhh
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2Fy
ZyhhKQorICAgICAgICBpZiBzZWxmLm91dF9leHByczoKKyAgICAgICAgICAgIG91dF9hcmdfZGVj
bHMgPSAiLCAiLmpvaW4oZiJ7c3RyKGUudHlwZSl9IiBmb3IgZSBpbiBzZWxmLm91dF9leHBycykK
KyAgICAgICAgICAgIHNlbGYuYXJncy5hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZShmIkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoe291dF9hcmdfZGVjbHN9KT4mJiIpLCAiY29tcGxldGlvbkhh
bmRsZXIiKV0KKworICAgIGRlZiBwcm9jZXNzX2luX2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAg
ICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY19nZXRfbWVzc2FnZV9m
b3J3YXJkZXJfdHlwZSh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0pLCBhLm5hbWUpXQorICAgICAg
ICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcih3ZWJr
aXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSksIGEudHlwZSldCisKKyAgICBkZWYgcHJvY2Vz
c19vdXRfYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRl
cigpOgorICAgICAgICAgICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5
cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3Ry
KHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9ID0ge3sgfX07Il0KKyAgICAg
ICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGEudHlwZSwgZiIme3ZhbHVlX2FyZy5u
YW1lfSIpXQorICAgICAgICAgICAgZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9h
cmcubmFtZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNf
dHlwZXNbZS50eXBlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNf
Y29udmVydF9leHByKGUsIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSldCisgICAgICAgIGVsaWYgYS50
eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50
eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgc2l6ZV9hcmcgPSBjcHBfYXJn
KGdldF9jcHBfdHlwZSgidWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUiKQorICAgICAgICAgICAg
c2VsZi5hcmdzLmFyZ3MgKz0gW3NpemVfYXJnXQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3Bw
X2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAg
ICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0g
e3N0cihzdG9yZV9hcmcubmFtZSl9KHN0YXRpY19jYXN0PHNpemVfdD4oe2EubmFtZX1TaXplKSwg
MCk7Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50
eXBlLCBmIntzdG9yZV9hcmcubmFtZX0iKV0KKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9
IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0g
W3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9h
cmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX3NwYW4o
KToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFp
bmVyKSkKKyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9hcmcod2Via2l0X2lwY19nZXRfc3Bh
bl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxf
c3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUpfSB7
eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJn
LnR5cGUsIHN0b3JlX2FyZy5uYW1lKV0KKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdl
YmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dl
YmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcu
bmFtZSksIHdlYmtpdF9pcGNfdHlwZSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3Nl
cnQgYS50eXBlLmlzX3JlZmVyZW5jZSgpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3
ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmco
YS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKz0gW2Yie3NlbGYubnModmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5u
YW1lKX0ge3sgfX07Il0KKyAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwg
dmFsdWVfYXJnLm5hbWUpCisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtlXQorICAgICAg
ICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNf
Y29udmVydF9leHByKGUsIHdlYmtpdF9pcGNfdHlwZSkpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0
dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVy
bl90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpcGNfcmV0dXJu
X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFs
dWVfZXhwciA9IGNwcF9leHByKHJldHVybl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJu
X3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyArPSBb
d2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVl
X2V4cHIsIGlwY19yZXR1cm5fdHlwZSkpXQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHBy
ID0gcmV0dXJuX3ZhbHVlX2V4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBi
b2R5ID0gIiIuam9pbihmIlxuICAgICAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3Rt
dHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBzZWxmLnBvc3RfY2FsbF9zdG10cykKKyAgICAgICAgcmV0
dXJuIGYiIiIgICAgdm9pZCB7c2VsZi5uYW1lfXtzZWxmLm92ZXJsb2FkX3N1ZmZpeH0oe3N0cihz
ZWxmLmFyZ3MpfSkKKyAgICB7e3tib2R5fQorICAgIH19IiIiCisKKyAgICBkZWYgbnMoc2VsZiwg
dHlwZTogY3BwX3R5cGUpOgorICAgICAgICAjIFRPRE86IG5hbWVzcGFjZSBpbmZvIGlzIG5vdCBz
dG9yZWQgaW4gbmFtZXMuCisgICAgICAgIGlmIHR5cGUudHlwZV9uYW1lID09ICJBY3RpdmVJbmZv
IjoKKyAgICAgICAgICAgIHJldHVybiAiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OiIgKyBz
dHIodHlwZSkKKyAgICAgICAgcmV0dXJuIHN0cih0eXBlKQorCitkZWYgd2Via2l0X2lwY19yZXNv
bHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcyA6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgY291
bnRzID0gY29sbGVjdGlvbnMuQ291bnRlcihmLm5hbWUgZm9yIGYgaW4gZnVuY3MpCisgICAgc3Vm
Zml4ZXMgOiBDb3VudGVyW3N0cl0gPSBjb2xsZWN0aW9ucy5Db3VudGVyKCkKKyAgICBmb3IgZiBp
biBmdW5jczoKKyAgICAgICAgaWYgY291bnRzW2YubmFtZV0gPiAxOgorICAgICAgICAgICAgZi5v
dmVybG9hZF9zdWZmaXggPSBzdHIoc3VmZml4ZXNbZi5uYW1lXSkKKyAgICAgICAgICAgIHN1ZmZp
eGVzLnVwZGF0ZShbZi5uYW1lXSkKKworCitjbGFzcyBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dl
bmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBDKysgaW1wbGVt
ZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBpbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9pbXBs
XQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgor
ICAgICAgICBzZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX2ltcGwoZikgZm9yIGYgaW4gZnVu
Y3NdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIu
am9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxm
KToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX2Zu
LAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0
X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIGNvbnRleHRfbXNnX3dlYmtpdF9p
cGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFdlYktp
dCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGdlbmVyYXRvci4iCisgICAgbXNnczogTGlzdFt3ZWJr
aXRfaXBjX21zZ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3Bw
X2Z1bmNdKToKKyAgICAgICAgc2VsZi5tc2dzID0gW3dlYmtpdF9pcGNfbXNnKGYpIGZvciBmIGlu
IGZ1bmNzXQorCisgICAgZGVmIGdldF9tZXNzYWdlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIi
LmpvaW4oc3RyKG0pIGZvciBtIGluIHNlbGYubXNncykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxm
KToKKyAgICAgICAgd3JpdGVfZmlsZShjb250ZXh0X21lc3NhZ2VzX2ZuLCBjb250ZXh0X21lc3Nh
Z2VzX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9tZXNzYWdlcygpKSkKKworCitkZWYgY3JlYXRl
X2NwcF9hcmcoYXJnX3NwZWM6IHN0ciwgYXJnX2luZGV4OiBpbnQpOgorICAgIHIgPSBhcmdfc3Bl
Yy5yc3BsaXQoIiAiLCAxKQorICAgIG5hbWUgPSAiIgorICAgIHR5cGUgPSBOb25lCisgICAgaWYg
bGVuKHIpID4gMSBhbmQgclswXSAhPSAiY29uc3QiOgorICAgICAgICBuYW1lID0gclsxXS5zdHJp
cCgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoclswXSkKKyAgICBlbHNlOgorICAgICAg
ICBuYW1lID0gImFyZ3t9Ii5mb3JtYXQoYXJnX2luZGV4KQorICAgICAgICB0eXBlID0gZ2V0X2Nw
cF90eXBlKGFyZ19zcGVjKQorICAgIHJldHVybiBjcHBfYXJnKHR5cGUsIG5hbWUpCisKKworZGVm
IGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjczogSXRlcmFibGVbc3RyXSk6CisgICAgcmV0
dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM9ZSwgYXJnX2luZGV4PWkp
IGZvciBpLCBlIGluIGVudW1lcmF0ZShhcmdzX3NwZWNzKV0pCisKKworZGVmIGNyZWF0ZV9jcHBf
ZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSwg
aXNfZXh0ZW5zaW9uOiBib29sKToKKyAgICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1
cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xp
c3QoYXJnc19zcGVjcyksIGlzX2V4dGVuc2lvbj1pc19leHRlbnNpb24pCisKKworZGVmIHJlYWRf
bGluZXNfdW50aWwobGluZXMgOiBJdGVyYWJsZVtzdHJdLCBtYXRjaCA6IHN0cikgLT4gR2VuZXJh
dG9yW3N0ciwgTm9uZSwgTm9uZV06CisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIGlm
IHJlLm1hdGNoKG1hdGNoLCBsaW5lLnN0cmlwKCkpOgorICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgeWllbGQgbGluZQorCitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3Vt
ZW50UGFyc2VyKCJ1c2FnZTogJXByb2cgW29wdGlvbnNdIikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJQcmludCBzb21lIGRl
YnVnIGluZm8gZnJvbSB0aGUgZ2VuZXJhdG9yIHNjcmlwdCIpCisgICAgb3B0aW9ucyA9IHBhcnNl
ci5wYXJzZV9hcmdzKCkKKworICAgICMgQ29uc3RydWN0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0
byByZW1vdGUgZnJvbSB3ZWIgcHJvY2VzcyB0byBHUFUgcHJvY2Vzcy4KKworICAgICMgRklYTUU6
IFVudGlsIGV4dGVuc2lvbnMgaGVhZGVyIGlzIHJlbW92ZWQsIHdlIG5lZWQgdG8gY29tcGxpY2F0
ZSB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAjIHdpdGggdGhlIGRpc3RpbmN0aW9uIG9mIHdoZXRo
ZXIgYSBmdW5jdGlvbiBpcyBvciBpcyBub3QgYW4gZXh0ZW5zaW9uIGZ1bmN0aW9uLgorICAgIGV4
dGVuc2lvbl9zaWduYXR1cmVzIDogU2V0W3N0cl0gPSBzZXQoKQorICAgIHdpdGggb3BlbihleHRl
bnNpb25zX2lucHV0X2ZuKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygp
OgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLip2aXJ0dWFsIChcUyspXHMrKFx3KylcKCgu
KilcKSA9IDA7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgZnVu
YyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAgICAgICAgICAgICAgICAgICAgbmFtZT1tWzJdLAorICAg
ICAgICAgICAgICAgICAgICByZXR1cm5fc3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAgICBh
cmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAg
ICBpc19leHRlbnNpb249VHJ1ZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
ZXh0ZW5zaW9uX3NpZ25hdHVyZXMudXBkYXRlKFtzdHIoZnVuYyldKQorICAgIGZ1bmNzID0gW10K
KyAgICB1bmltcGxlbWVudGVkID0gW10KKyAgICBmb3IgZm4gaW4gZnVuY3Rpb25zX2lucHV0X2Zu
czoKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBpdGVy
KGYucmVhZGxpbmVzKCkpCisgICAgICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxp
bmVzLCAiLy8gRnVuY3Rpb25zIHdpdGggYSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMg
bGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAg
ICAgICAgIHBhc3MKKworICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChs
aW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQu
Iik6CisgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiXHMqKFxTKylccysoXHcrKVwoKC4q
KVwpIGZpbmFsOyIsIGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAg
ICAgICAgZnVuY19uYW1lID0gbVsyXQorICAgICAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRl
X2NwcF9mdW5jKAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdW5jX25hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgYXJnc19zcGVjcz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgICAgICBmdW5jLmlzX2V4dGVuc2lvbiA9IHN0cihmdW5jKSBpbiBleHRl
bnNpb25fc2lnbmF0dXJlcworICAgICAgICAgICAgICAgICAgICBpZiBmdW5jLmlzX2ltcGxlbWVu
dGVkKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoZnVuYykKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaW1wbGVtZW50
ZWQuYXBwZW5kKGZ1bmMpCisKKworICAgIHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZm
aXgoZnVuY3MpCisgICAgIyBJbml0aWFsaXplIFdlYktpdCBJUEMgZ2VuZXJhdGlvbi4gQ29uc3Ry
dWN0IHR5cGUgbWFwcGluZ3MgZm9yIHRoZSB1c2VkIEMrKyB0eXBlcyAtPiBJUEMgdHlwZXMuCisg
ICAgIyBUT0RPOiBuYW1lc3BhY2luZyBpc3N1ZXMuCisgICAgYWlfdHlwZSA9IGdldF9jcHBfdHlw
ZSgiQWN0aXZlSW5mbyYiKQorICAgIGFpX3RyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoIldl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIikKKyAgICB3ZWJraXRfaXBjX3R5
cGVzW2FpX3R5cGVdID0gYWlfdHJhbnNmZXJfdHlwZQorCisgICAgd2l0aCBvcGVuKHR5cGVzX2lu
cHV0X2ZuKSBhcyBmOgorICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAg
ICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIFRoZSBHQ0dMIHR5cGVzIG1h
cCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5l
cmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9y
IGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkg
Z2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICBtID0gcmUubWF0Y2go
ciIuKnN0YXRpY19hc3NlcnRcKHN0ZDo6aXNfc2FtZV92PChcdyspLCAoXHcrKT5cKTsiLCBsaW5l
KQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2dl
dF9jcHBfdHlwZShtWzFdKV0gPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXpl
b2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlm
IG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAg
ICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAg
IHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3
ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0
YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhp
cGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisgICAgICAgICAgICAjIEZJWE1FOiBIZXJlIHdlIHVzZSA8PSBpbnN0ZWFkIG9mID09
IGR1ZSB0byBwb2ludGVycywgc3VjaCBhcyBHQ0dMc3luYywgR0NHTGludHB0ciwgLi4uLgorICAg
ICAgICAgICAgIyBUaGlzIGVuZHMgdXAgZmFpbGluZyBpZiB0aGVyZSBldmVyIGlzIGFycmF5cyBv
ZiB0aGVzZSB0eXBlcywgc2luY2UgYXJyYXlzIGFyZSBjdXJyZW50bHkKKyAgICAgICAgICAgICMg
cmVpbnRlcnByZXQtY2FzdGVkLgorICAgICAgICAgICAgIyBXZWJLaXQgSVBDIHJlcXVpcmVzIG9u
ZSBzaXplZCB0eXBlLCBidXQgdGhlIHNpemUgb2YgdGhlc2UgcG9pbnRlci1iYXNlZCB2YWx1ZXMg
d2lsbCBjaGFuZ2UKKyAgICAgICAgICAgICMgYmFzZWQgb24gdGhlIHBsYXRmb3JtLgorICAgICAg
ICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0g
c2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAg
ICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNf
dHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVz
X2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAg
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5
cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBz
aXplb2ZcKChcdyspXCkgJiYgc2l6ZW9mXCgoXHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIs
IGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0
X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUo
bVsyXSkKKyAgICAgICAgICAgICAgICBjcHBfY2FzdF90aHJvdWdoX3R5cGUgPSBnZXRfY3BwX3R5
cGUobVs0XSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlw
Y190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBf
dHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJv
dWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nh
c3RfdG9fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorCisgICAgIyBGb3IgYWxsIHR5cGVzIGluIHRoZSBpbnB1dCBBUEksIGZv
cm0gY29ycmVzcG9uZGluZyBJUEMgdHlwZXMgYW5kIGNvbnZlcnNpb25zLgorICAgICMgVE9ETzog
dGhpcyBpcyBub3QgZHJpdmVuIGJ5IHRoZSB0eXBpbmcuCisgICAgYWxsX3R5cGVzID0gc2V0KCkK
KyAgICBmb3IgZnVuYyBpbiBmdW5jczoKKyAgICAgICBhbGxfdHlwZXMudXBkYXRlKGZ1bmMuYXJn
cy50eXBlcygpICsgW2Z1bmMucmV0dXJuX3R5cGVdKQorICAgICMgU29ydCBieSBsZW4gc28gdGhh
dCB0ZW1wbGF0ZSBhcmdzIGNvbWUgYmVmb3JlIHRlbXBsYXRlcy4KKyAgICBmb3IgY3BwX3R5cGUg
aW4gc29ydGVkKGFsbF90eXBlcywga2V5PWxhbWJkYSB4OiBsZW4oeC50eXBlX25hbWUpKToKKyAg
ICAgICAgaWYgY3BwX3R5cGUgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAKKyAgICAgICAgaWYgY3BwX3R5cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3Bw
X3R5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IHdlYmtpdF9pcGNf
Z2V0X3NwYW5fdHJhbnNmZXJfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAg
ICAgICBpZiBjcHBfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpOgorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVy
X3R5cGUpXSA9IHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3Rf
Y29udmVyc2lvbgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1so
dHJhbnNmZXJfdHlwZSwgY3BwX3R5cGUpXSA9IHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252
ZXJzaW9uCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgPSB3
ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICAgICAg
d2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zlcl90eXBlKV0g
PSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgIGVsaWYgY3Bw
X3R5cGUuaXNfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29uc3RfcmVmZXJlbmNlKCkgb3Ig
Y3BwX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAgICB2YWx1ZV90eXBlID0gY3BwX3R5
cGUuZ2V0X3ZhbHVlX3R5cGUoKSBpZiBub3QgY3BwX3R5cGUuaXNfY29udGFpbmVyKCkgZWxzZSBj
cHBfdHlwZQorICAgICAgICAgICAgaWYgdmFsdWVfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAg
ICAgICAgICAgICBjb250YWluZWRfdHlwZSA9IHZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBl
KCkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID0gd2Via2l0X2lw
Y190eXBlc1tjb250YWluZWRfdHlwZV0KKyAgICAgICAgICAgICAgICBpZiB3ZWJraXRfaXBjX2Nv
bnRhaW5lZF90eXBlID09IGNvbnRhaW5lZF90eXBlOgorICAgICAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKGYie3Zh
bHVlX3R5cGUuZ2V0X2NvbnRhaW5lcl9uYW1lKCl9PHtzdHIod2Via2l0X2lwY19jb250YWluZWRf
dHlwZSl9PiIpCisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVd
ID0gdHJhbnNmZXJfdHlwZQorICAgICAgICAgICAgICAgICAgICAjIFRPRE86IEhlcmUgbWlnaHQg
YmUgY2FzZSB3aGVyZSBWZWN0b3I8R0NHTGludD4gd2FzIHVzZWQgaW4gdGhlIGludGVyZmFjZSBh
bmQgVmVjdG9yPGludDMyX3Q+IGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUg
SVBDIGRlZmluaXRpb24uIFRoZXJlIGlzIG5vIHNlbnNpYmxlIHdheSB0byBkbyB0aGlzIGF0IHRo
ZSBtb21lbnQuIFdlIGRvIG5vdCBjb252ZXJ0LCByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAg
IyBleHBlY3QgdGhhdCBhbGwgdGhlIGludm9jYXRpb25zIGFyZSB0YWtlbiBjYXJlIG9mIHRoZSBm
YWN0IHRoYXQgR0NHTGludCBpcyB0aGUgc2FtZSB0eXBlIGFzIGludDMyX3QuCisgICAgICAgICAg
ICAgICAgICAgICMgVGhpcyB3aWxsIG5vdCBob2xkIGZvciBhbGwgdHlwZXMgc3VjaCBhcyBHQ0dM
Ym9vbGVhbi4KKyAgICAgICAgICAgICAgICAgICAgI3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVy
c1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0
X2NvbnZlcnNpb24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2Via2l0X2lw
Y190eXBlc1tjcHBfdHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkK
KyAgICAKKyAgICAjIFRoZSBpbnB1dCB0byB0aGUgZ2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0
aW9ucyB0byByZW1vdGUuCisgICAgIyBSdW4gdGhlIHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBn
ZW5lcmF0b3JzID0gWworICAgICAgICBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVy
YXRvcihmdW5jcywgdW5pbXBsZW1lbnRlZCksCisgICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9p
cGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAgICAgICAgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5l
cmF0b3IoZnVuY3MpLAorICAgIF0KKyAgICBmb3IgZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBn
LmdlbmVyYXRlKCkKKworICAgIGlmIG9wdGlvbnMudmVyYm9zZToKKyAgICAgICAgcHJpbnQoIklt
cGxlbWVudGVkOiIpCisgICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAge3N0cihpKX0gZmluYWxc
biIgZm9yIGkgaW4gZnVuY3MpKQorICAgICAgICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAg
ICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIodSl9IGZpbmFsXG4iIGZvciB1IGluIHVuaW1w
bGVtZW50ZWQpKQorICAgICAgICBwcmludChmIkltcGxlbWVudGVkOiB7bGVuKGZ1bmNzKX0sIHVu
aW1wbGVtZW50ZWQ6IHtsZW4odW5pbXBsZW1lbnRlZCl9LCB0b3RhbDoge2xlbihmdW5jcykrbGVu
KHVuaW1wbGVtZW50ZWQpfSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZSBtYXAgdG8gV2ViS2l0
IElQQyB0eXBlIG1hcDoiKQorICAgICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToK
KyAgICAgICAgICAgIGlmIHQgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBw
cmludChmIiAgICB7c3RyKHQpfSAtPiB7c3RyKHdlYmtpdF9pcGNfdHlwZXNbdF0pfSIpCisgICAg
ICAgIHByaW50KCJDKysgdHlwZXMgd2l0aG91dCBXZWJLaXQgSVBDIHR5cGU6IikKKyAgICAgICAg
Zm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0IG5vdCBpbiB3
ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IikK
KyAgICAgICAgcHJpbnQoIldlYktpdCBJUEMgdHlwZSBjb252ZXJzaW9ucyIpCisgICAgICAgIGZv
ciAoYSwgYiksIGNvbnZlcnRlciBpbiB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuaXRlbXMo
KToKKyAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIoYSl9IC0+IHtzdHIoYil9IDoge2NvbnZl
cnRlci5fX25hbWVfX30iKQorICAgICAgICBwcmludCgiRG9uZS4iKQorICAgIHJldHVybiAwCisK
KworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNDhiOTM4ZmExMWY4MTVkMzdlZTgwMzc3ZmQ2NGIwYmM3M2RjODE0MC4uNzYxNmE3YjcwMTFj
ZGQxZmY3Yjk4NmY2ZDIzMmIxMzE0OTZiY2U5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIw
LTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGlj
c0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRp
b24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25z
IGZvciB0aGUgbWlzc2luZyBmdW5jdGlvbmFsaXR5LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5h
YmxlIHRoZSB0ZXN0cyB0aGF0IGFjdHVhbGx5IHBhc3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBi
ZWZvcmUgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nl
c3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRhYmxlL3dyaXRhYmxl
IHRvIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4NTMwNTgwMDMzOTBmZDc1MzdkYzBjNi4u
YmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBhMmQ0NjcyNjNjNzA4Yzk0OCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9n
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTcsNiArMzE3LDE0IEBAIGh0dHAvdGVz
dHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1j
cmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmdsIFsgU2tpcCBdCiBqcy9zaGFyZWQtYXJy
YXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0
L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZ
LXRydWUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJn
bC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFNraXAgXQor
d2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2Vk
ZXZlbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJn
bC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZh
c3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sIFsgRmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0
dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmdwdSBbIFNraXAgXQogCiBhY2Nlc3Np
YmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlwZXMuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415202</attachid>
            <date>2020-12-02 03:10:52 -0800</date>
            <delta_ts>2020-12-02 06:06:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201202131049.patch</filename>
            <type>text/plain</type>
            <size>565224</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM4NWFiOWQ4Nzg5YzU4
MTBkOTNjOGIxNGExNWM5MWFlNzdiZGM3MS4uYTE1MDIwY2NkZTcxYjcwZmY4NGNlMmU0N2ExOWJh
OGNiOWU2OTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTEyLTAxICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVSBQcm9jZXNzOiBJT1N1cmZh
Y2VzIHNob3VsZCBub3QgYmUgbWFwcGVkIGludG8gdGhlIFdlYiBDb250ZW50IFByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWIzNTQ0Y2UwODJiZDhhYzJjZmZlY2IyMmQwMWY3MWE3NDI5NDUxZC4uZjY2OGI2
ZTNlYzVkNDExN2M3MWJiYTM2MDhmNWY4ODg1YTQ2MGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NTIgQEAKKzIwMjAtMTItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlV2ViR0xCYWNrZW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBJbXBsZW1lbnRlZCB3aXRo
IGEgZ2VuZXJhdG9yIHNjcmlwdCBpbXBsZW1lbnRpbmcgdGhlIElQQyB0byBwYXNzIHRoZQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTCBtZW1iZXIgZnVuY3Rpb24gY2FsbHMgZnJvbSB3ZWIgcHJv
Y2VzcyB0byB0aGUgR1BVCisgICAgICAgIHByb2Nlc3MuIFRoZSBzY3JpcHQgaXMgcnVuIGR1cmlu
ZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgY29tbWl0dGVk
IHRvIHRoZSByZXBvIGZvciBlYXNlIG9mIHJldmlldy4KKworICAgICAgICBJbXBsZW1lbnQgdGhl
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIFdlYktpdCBzaWRlLiBUaGlzIGNsYXNzIHdpbGwK
KyAgICAgICAgZm9yd2FyZCBjYWxscyByZWNlaXZlZCB2aWEgSVBDIHRvIHRoZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC4gQXQgdGhlCisgICAgICAgIG1vbWVudCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBpbnN0YW5jZSBpcyBhIGRpcmVjdCBjaGlsZCBvZgorICAgICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLgorCisgICAgICAgIENoYW5nZXMgV2ViS2l0IElQQyB0byBzdXBwb3J0IHJl
Y2VpdmluZyB0eXBlZCBhcnJheXMgYXMgcmVmZXJlbmNlcy4gVGhpcworICAgICAgICBpcyBuZWVk
ZWQgdG8gc3VibWl0IEdMIGRhdGEgYXJyYXlzLCBzdWNoIGFzIEdMZmxvYXQgYXJyYXlzIGRpcmVj
dGx5IGZyb20KKyAgICAgICAgdGhlIElQQyBkYXRhIHN0b3JlIHdpdGhvdXQgYW4gZXh0cmEgY29w
eS4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9ydCBwYXNzaW5nIGRhdGEg
cmVmZXJlbmNlcywgaS5lLgorICAgICAgICBEYXRhUmVmZXJlbmNlIG9yIEFycmF5UmVmZXJlbmNl
LCBhcyBhIHN5bmNocm9uaXplZCBjYWxsIHJldHVybiB2YWx1ZS4KKyAgICAgICAgVGhlIGNhbGxl
ciBtdXN0IGhvbGQgdGhlIENvbm5lY3Rpb246OnN5bmNTZW5kKCkgcmVzdWx0IChEZWNvZGVyIG9i
amVjdCkKKyAgICAgICAgZm9yIHRoZSBkdXJpYXRpb24gb2YgdXNpbmcgdGhlIGRhdGEgdmFsdWVz
LgorCisgICAgICAgIENvbXBvc2l0aW5nIGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIFBMQVRGT1JN
KENPQ09BKS4KKworICAgICAgICBNaXNzaW5nOgorICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4
dCBsb3NzCisgICAgICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGNoYW5nZQorICAgICAgICAgLSBQ
YWludCBXZWJHTCBjb250ZW50cyB0byAyRCBjYW52YXMKKyAgICAgICAgIC0gVXBsb2FkIHZpZGVv
IHRvIFdlYkdMCisgICAgICAgICAtIFVwbG9hZCBjYW52YXMgdG8gV2ViR0wKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpkaWRDb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlc2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmg6IEFkZGVkLgorICAgICAgICAoc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6Cisg
ICAgICAgIChzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChtb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QpOgorICAgICAgICAoYWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChhdHRhY2hT
aGFkZXIpOgorICAgICAgICAoYmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKGJpbmRCdWZm
ZXIpOgorICAgICAgICAoYmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGJpbmRSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoYmluZFRleHR1cmUpOgorICAgICAgICAoYmxlbmRDb2xvcik6CisgICAg
ICAgIChibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6Cisg
ICAgICAgIChibGVuZEZ1bmMpOgorICAgICAgICAoYmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAg
ICAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChjbGVhcik6CisgICAgICAgIChj
bGVhckNvbG9yKToKKyAgICAgICAgKGNsZWFyRGVwdGgpOgorICAgICAgICAoY2xlYXJTdGVuY2ls
KToKKyAgICAgICAgKGNvbG9yTWFzayk6CisgICAgICAgIChjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKGNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKGNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVTaGFkZXIpOgorICAgICAgICAoY3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChjdWxs
RmFjZSk6CisgICAgICAgIChkZWxldGVCdWZmZXIpOgorICAgICAgICAoZGVsZXRlRnJhbWVidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChkZWxldGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGRlbGV0ZVRleHR1cmUpOgor
ICAgICAgICAoZGVwdGhGdW5jKToKKyAgICAgICAgKGRlcHRoTWFzayk6CisgICAgICAgIChkZXB0
aFJhbmdlKToKKyAgICAgICAgKGRldGFjaFNoYWRlcik6CisgICAgICAgIChkaXNhYmxlKToKKyAg
ICAgICAgKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChkcmF3QXJyYXlzKToK
KyAgICAgICAgKGRyYXdFbGVtZW50cyk6CisgICAgICAgIChlbmFibGUpOgorICAgICAgICAoZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZmluaXNoKToKKyAgICAgICAgKGZsdXNo
KToKKyAgICAgICAgKGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGZyb250RmFjZSk6CisgICAgICAgIChnZW5lcmF0ZU1p
cG1hcCk6CisgICAgICAgIChnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoZ2V0QWN0aXZlVW5p
Zm9ybSk6CisgICAgICAgIChnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChnZXRCdWZmZXJQ
YXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFN0cmluZyk6CisgICAgICAgIChnZXRGbG9hdHYpOgor
ICAgICAgICAoZ2V0SW50ZWdlcnYpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0KToKKyAgICAgICAg
KGdldEludGVnZXI2NGkpOgorICAgICAgICAoZ2V0UHJvZ3JhbWkpOgorICAgICAgICAoZ2V0Qm9v
bGVhbnYpOgorICAgICAgICAoZ2V0RXJyb3IpOgorICAgICAgICAoZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAg
IChnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFNoYWRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQpOgorICAgICAgICAoZ2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRl
cmYpOgorICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRVbmlmb3JtZnYp
OgorICAgICAgICAoZ2V0VW5pZm9ybWl2KToKKyAgICAgICAgKGdldFVuaWZvcm11aXYpOgorICAg
ICAgICAoZ2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdldFZlcnRleEF0dHJpYk9mZnNl
dCk6CisgICAgICAgIChoaW50KToKKyAgICAgICAgKGlzQnVmZmVyKToKKyAgICAgICAgKGlzRW5h
YmxlZCk6CisgICAgICAgIChpc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGlzUHJvZ3JhbSk6Cisg
ICAgICAgIChpc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChpc1NoYWRlcik6CisgICAgICAgIChp
c1RleHR1cmUpOgorICAgICAgICAobGluZVdpZHRoKToKKyAgICAgICAgKGxpbmtQcm9ncmFtKToK
KyAgICAgICAgKHBpeGVsU3RvcmVpKToKKyAgICAgICAgKHBvbHlnb25PZmZzZXQpOgorICAgICAg
ICAocmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChzYW1wbGVDb3ZlcmFnZSk6CisgICAg
ICAgIChzY2lzc29yKToKKyAgICAgICAgKHNoYWRlclNvdXJjZSk6CisgICAgICAgIChzdGVuY2ls
RnVuYyk6CisgICAgICAgIChzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5jaWxN
YXNrKToKKyAgICAgICAgKHN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoc3RlbmNpbE9w
KToKKyAgICAgICAgKHN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmYp
OgorICAgICAgICAodGV4UGFyYW1ldGVyaSk6CisgICAgICAgICh1bmlmb3JtMWYpOgorICAgICAg
ICAodW5pZm9ybTFmdik6CisgICAgICAgICh1bmlmb3JtMWkpOgorICAgICAgICAodW5pZm9ybTFp
dik6CisgICAgICAgICh1bmlmb3JtMmYpOgorICAgICAgICAodW5pZm9ybTJmdik6CisgICAgICAg
ICh1bmlmb3JtMmkpOgorICAgICAgICAodW5pZm9ybTJpdik6CisgICAgICAgICh1bmlmb3JtM2Yp
OgorICAgICAgICAodW5pZm9ybTNmdik6CisgICAgICAgICh1bmlmb3JtM2kpOgorICAgICAgICAo
dW5pZm9ybTNpdik6CisgICAgICAgICh1bmlmb3JtNGYpOgorICAgICAgICAodW5pZm9ybTRmdik6
CisgICAgICAgICh1bmlmb3JtNGkpOgorICAgICAgICAodW5pZm9ybTRpdik6CisgICAgICAgICh1
bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgICh1c2VQcm9ncmFtKToKKyAgICAgICAgKHZhbGlk
YXRlUHJvZ3JhbSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAodmVydGV4QXR0cmliMmYpOgorICAgICAgICAodmVydGV4QXR0
cmliMmZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjNmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0
ZnYpOgorICAgICAgICAodmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgICh2aWV3cG9ydCk6
CisgICAgICAgIChidWZmZXJEYXRhMCk6CisgICAgICAgIChidWZmZXJEYXRhMSk6CisgICAgICAg
IChidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMCk6CisgICAgICAgIChyZWFk
blBpeGVsczEpOgorICAgICAgICAodGV4SW1hZ2UyRDApOgorICAgICAgICAodGV4SW1hZ2UyRDEp
OgorICAgICAgICAodGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UyRDEpOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQwKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJ
bWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAo
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQxKToKKyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWQp
OgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoZGVsZXRl
VmVydGV4QXJyYXkpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChiaW5kVmVy
dGV4QXJyYXkpOgorICAgICAgICAoY29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoZnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoaW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyZWFkQnVmZmVyKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgICh0ZXhT
dG9yYWdlMkQpOgorICAgICAgICAodGV4U3RvcmFnZTNEKToKKyAgICAgICAgKHRleEltYWdlM0Qw
KToKKyAgICAgICAgKHRleEltYWdlM0QxKToKKyAgICAgICAgKHRleFN1YkltYWdlM0QwKToKKyAg
ICAgICAgKHRleFN1YkltYWdlM0QxKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTNEKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1h
Z2UzRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKToKKyAgICAgICAgKGNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChnZXRGcmFnRGF0YUxvY2F0aW9uKToK
KyAgICAgICAgKHVuaWZvcm0xdWkpOgorICAgICAgICAodW5pZm9ybTJ1aSk6CisgICAgICAgICh1
bmlmb3JtM3VpKToKKyAgICAgICAgKHVuaWZvcm00dWkpOgorICAgICAgICAodW5pZm9ybTF1aXYp
OgorICAgICAgICAodW5pZm9ybTJ1aXYpOgorICAgICAgICAodW5pZm9ybTN1aXYpOgorICAgICAg
ICAodW5pZm9ybTR1aXYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAg
KHVuaWZvcm1NYXRyaXgzeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAg
ICAgICAodW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzeDRmdik6
CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliSTRp
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1
aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcik6CisgICAgICAgIChkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChkcmF3QnVm
ZmVycyk6CisgICAgICAgIChjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKGNsZWFyQnVmZmVydWl2
KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmaSk6Cisg
ICAgICAgIChjcmVhdGVRdWVyeSk6CisgICAgICAgIChkZWxldGVRdWVyeSk6CisgICAgICAgIChp
c1F1ZXJ5KToKKyAgICAgICAgKGJlZ2luUXVlcnkpOgorICAgICAgICAoZW5kUXVlcnkpOgorICAg
ICAgICAoZ2V0UXVlcnkpOgorICAgICAgICAoZ2V0UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChj
cmVhdGVTYW1wbGVyKToKKyAgICAgICAgKGRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoaXNTYW1w
bGVyKToKKyAgICAgICAgKGJpbmRTYW1wbGVyKToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGZlbmNl
U3luYyk6CisgICAgICAgIChpc1N5bmMpOgorICAgICAgICAoZGVsZXRlU3luYyk6CisgICAgICAg
IChjbGllbnRXYWl0U3luYyk6CisgICAgICAgICh3YWl0U3luYyk6CisgICAgICAgIChnZXRTeW5j
aSk6CisgICAgICAgIChjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChpc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiZWdpblRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KToKKyAgICAgICAgKHBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAocmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoYmlu
ZEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKGdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKGdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAg
ICAgKGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAodW5pZm9ybUJsb2NrQmlu
ZGluZyk6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZlckFOR0xFKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAg
KGNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKGlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChp
bnNlcnRFdmVudE1hcmtlckVYVCk6CisgICAgICAgIChwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAg
ICAgICAocG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoZHJhd0J1ZmZlcnNFWFQpOgorICAg
ICAgICAoZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRh
c2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaC4KKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OkFycmF5UmVmZXJlbmNlKToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
QXJyYXlSZWZlcmVuY2U6OnZlY3RvciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJl
ZmVyZW5jZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OndyYXBGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmluZ1Jl
ZmVyZW5jZS5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgICogU2hhcmVkL3NvdXAvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzU291cC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2VydGlm
aWNhdGVJbmZvPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZp
Y2F0ZUluZm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlv
blNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuY3BwLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNv
bnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0
aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENv
bG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xv
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
RGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1
cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
b250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdp
ZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00Zik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4
QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFn
ZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29t
cHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNh
bXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZl
cnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJr
ZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
b3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50
ZXJmYWNlaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRVc2VH
UFVQcm9jZXNzRm9yV2ViR0wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisKIDIwMjAtMTItMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgR1BVIFByb2Nlc3M6IElPU3VyZmFjZXMgc2hvdWxkIG5vdCBi
ZSBtYXBwZWQgaW50byB0aGUgV2ViIENvbnRlbnQgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYTcyM2FlMDYzNzNkMmY1ZjVmZDAyZjdjMTgyOGYzMmYxNzAxYjVhNC4uZTNkZTA3OTY2N2Jj
YWFhODFjZTViOTUzNTAyNDI1OWJhMjZjM2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjQ4
LDYgKzEyNDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNmZWIw
MzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4OGJkNDA3N2EwYzU0
YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMTEs
MTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lu
dFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNv
cmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgyZGY4ODdiMWIwYzRkNGI4
MTJjYmZlNWEwNmRlYWU0MTgxMjBlMmIuLjEwNzE0ZjNmNGE1NjhmZmQwZDE1Njk0MDJlMGVjZGM0
Nzg3MDE3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJjNzk1MjZiYzZjZDE0
M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQwMGIwZmNlMjQxZWZm
YjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiArMzU3LDE0IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2Nv
YS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmU3
ZTlmZDJiOTFlYjgxMDEzNDU2MGRmZmQ4MGFjZDIxMGIzZmRjMC4uM2I0NDA5ZWIwNmRhYzg3ZDE5
ZDVhYzI5OWFiOTEyODJiZjg5ZWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Myw3ICsyMDUzLDcgQEAKIAkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xB
bnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcw
MDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdG
QjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9u
c0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3
RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07CisJCTZFNjdEMkE5
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDMyMjlD
OUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEUy
MjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RjIyOURD
RDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAv
KiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Nyw2ICsyMjQ3LDggQEAK
IAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAw
QzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEw
MzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjkwNDE3MDI1
NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVD
QjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIz
NEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUy
NTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3Mzgx
RkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAv
KiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjksOSArMTAyMzEsMTQgQEAK
IAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAx
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI0MjU0
QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTUyNTcxMkU5MTAw
MzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTcyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNldHRpbmdz
LmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNFMjRGQUQzNjAw
MDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5p
ZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjIxLDYgKzI2NjI4LDggQEAKIAkJCQkwNzRFODJCOTE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0Yx
M0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJN0I5MDQxNkUyNTUw
MTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJ
CQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywK
IAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywK
IAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAt
MjY3ODcsNiArMjY3OTYsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBENkExMjJBMjRFOTAw
MkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJG
MzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJCQkJN0I2REM4MTUy
NTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNw
cCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1OTU5NjIxNDZERjc4
MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RBNTk1OTcyMTQ2REY3
ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2Nzk4LDYgKzI2ODA5
LDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4RkIg
LyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0
QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlD
REVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJ
CQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJ
CQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
ICovLApAQCAtMzIwOTksNiArMzIxMTEsNyBAQAogCQkJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUzQyAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNCOUU5MjM3
NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVhZGVycyAqLywKQEAg
LTM0MDM1LDYgKzM0MDQ4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2
MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJl
bW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0
RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVjNzE3NDU5N2YwNmUw
ZTUwOWU3OGZhYS4uNmM3ODNiZDIyYmRmMTJlYTRjMDNkMzcxM2QwZWU3Yzc5MTE0ZGNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTY4MSwxNyArNjgxLDggQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAg
ICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ly8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZlclN1YkRhdGEoKSBjYWxscyB0byB1
c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0ciA9IG1fY29udGV4dC0+bWFwQnVm
ZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNldC51bnNhZmVHZXQoKSwgc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0aFB0ci51bnNhZmVHZXQoKSAqIGNo
ZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4o
ZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZz
ZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICogZWxlbWVudFNpemUpOwotCi0gICAg
aWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkpCi0gICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdldEJ1ZmZlclN1
YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZmZXIiKTsKLSNlbmRpZgotICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgbV9jb250ZXh0
LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9mZnNldCwgbWFrZUdDR0xTcGFuKHN0
YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVP
ZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBjb3B5TGVuZ3RoICogZWxlbWVudFNp
emUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCkBAIC0xOTY3LDkgKzE5
NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRl
cihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0UXVl
cnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRR
dWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8V2ViR0xT
YW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAgLTIwNTks
MTcgKzIwNDgsMTEgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxl
clBhcmFtZXRlcihXZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1M6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAg
ICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVyaXYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIu
b2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01B
WF9MT0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0g
ICAgICAgIGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFy
YW1ldGVyZnYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5f
TE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0
ZXIiLCAiSW52YWxpZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0ODUs
MjQgKzI0NjgsMjQgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2
ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZl
Y3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKLSAgICAKICAg
ICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9U
WVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX1RZUEU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGVudW0+KHgpOyB9KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX1NJWkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKKyAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19JTkRFWDoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX09GRlNFVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0FSUkFZX1NUUklERToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX01B
VFJJWF9TVFJJREU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
SVNfUk9XX01BSk9SOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9y
bUluZGljZXMsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lT
X1JPV19NQUpPUjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
Pih4KTsgfSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtcyIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3
Miw4ICszNTU1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEcKIAogICAgIGNsZWFySWZDb21w
b3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwogCi0gICAgR0NHTHNpemVpIGxlbmd0aCwgY29sdW1u
cywgcm93czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVz
dEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgJmxlbmd0aCwgJmNv
bHVtbnMsICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpLCB0cnVlKTsK
KyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDQwMDcxY2EyM2Iy
YzM1NWUxZTgxMDY0NjE3ZDUyYjlkMmZiODdhYzYuLmY3YzZhMmU4MmE0YmYwMzdhMWI0NzdkNzgz
ZmE1NDFhYzRmNTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MzIsOCArNzMyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0KLQotICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRl
cywgaG9zdFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAg
ICAgaWYgKGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3Bh
dGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250
ZXh0Y3JlYXRpb25lcnJvckV2ZW50LApAQCAtNDM5NSwxNSArNDM5NCwxMiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aAogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAog
I2lmIFVTRShBTkdMRSkKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBHQ0dMc2l6ZWkg
Y29sdW1ucyA9IDA7Ci0gICAgR0NHTHNpemVpIHJvd3MgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJv
d3MsIGRhdGEsIGZhbHNlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVu
Z3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxz
LmJ5dGVMZW5ndGgoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJk
NTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdl
YkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFwaGljc0Nv
bnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5jU3RhdHVz
KTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5
bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBpZiAobV9z
eW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAgICBzY2hl
ZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5k
ZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjliODZiYzMx
ODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
NTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVybiBtX2Ns
aWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShX
RUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJRCBDaHJv
bWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsK
QEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1fcGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQorICAgIC8v
IFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQgd29yaywg
cmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3NjQxZDAx
NDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEzY2ZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYK
KwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1
bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAz
YTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0OTkwMzc1
ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMg
dGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RX
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRleCA0M2Ri
MWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2MzMzdiMmU1
MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAvLyBNZXRo
b2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUyZmIzLi43
YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMzQsMTMg
KzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1
cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7
IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0luV2ViUHJv
Y2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3Mo
KTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZiZDFkNDNj
MDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFmNjRhYTBk
ZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC05Niw2
ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1bmRsZUlz
V2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJv
b2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07CisgICAgcmV0
dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNz
KCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9IFtbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4NjczNDQ3
NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAt
MjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9j
b21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NUQVRVU19L
SFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNp
b24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAvLyBHTF9B
UkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVy
cyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwog
CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQot
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7
CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAg
ICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNp
emVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKQEAg
LTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQU1E
KCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3QgYmUg
YXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZp
Z3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkZjRhMTE5
YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIxYWVhN2E1
YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQSElDU19D
T05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0
Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpAQCAt
NDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1bHQ7
CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhv
c3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdMOjpH
cmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJzKGF0
dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1MmRjNmVm
My4uNTYxM2NiMmY2YzkxMjcwYWJkMWJkNGU2NzEwMzllOGYyYzgwZmZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBA
IC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZvciBp
bXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgogICAg
IC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGljOgogICAg
ICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGljc0Nv
bnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24gaW4g
Y29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0IHRo
ZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBH
cmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAot
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRl
cnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgYWN0
aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFj
aFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05ODAsNyAr
OTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhD
b3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgPSAwOwog
CiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0dHJpYgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSA9
IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NH
TGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0xMTI0LDgg
KzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50
cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50
cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgR0NH
THZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAgICB2aXJ0
dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBnZXRRdWVy
eU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpID0gMDsK
QEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pID0gMDsK
ICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xi
b29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSA9
IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTeW5jaXYo
R0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVz
ZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NHTHVpbnQ+
IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRl
cgpAQCAtMTM5NCw3ICsxMzk0LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1
cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgK
aW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3
NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQg
R0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hh
ciBHQ0dMY2hhcjsKK3R5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYg
dm9pZCBHQ0dMdm9pZDsKKworLy8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0
Y2ggdGhlIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZp
bGUgZm9yIGFsbCBwbGF0Zm9ybXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBl
ZGVmIGludHB0cl90IEdDR0xzaXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19H
THN5bmMqIEdDR0xzeW5jOwotdHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1p
Y0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1
Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNp
dCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0
YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6
ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAg
ICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBH
Q0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwg
c3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAg
ICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAg
ICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6
OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQor
ICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0
YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBU
KiBkYXRhOwpAQCAtNzksNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50
PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBk
YXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDEx
IEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0
YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdD
R0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXpl
b2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1
ZlNpemU7CiB9OwpAQCAtMTUyLDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilb
Tl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4o
V1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihX
VEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3Qg
Y291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2U1NjBiOTYwNGFmYmE1MTI2MDA4YzllYTA1Yjg3ZjUxOTYxZDYxOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7Cit9CisK
K1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wo
KSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAoreworICAg
IHJldHVybiAwOworfQorCitFeHRlbnNpb25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJv
b2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBj
b25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAoreworICAgIHJldHVybiBjb250
ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJWE1FOiBUaGUg
Y2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlmIChtX2xheWVyQ29tcG9zaXRl
ZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgbV9sYXllckNvbXBv
c2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVl
OworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMu
cHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0g
R3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5k
ZXB0aCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4
dEdMOjpERVBUSF9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAg
ICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lM
X0JVRkZFUl9CSVQ7CisgICAgfQorICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9y
KG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKK2Jvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxk
IGJ1ZmZlcnMpCit7CisgICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNlcnZlRHJhd2lu
Z0J1ZmZlcikKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJzOworfQorCitH
Q0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEJ1ZmZlcnNU
b0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwor
fQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5hYmxlUHJlc2VydmVE
cmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBvcnQgcmVhc29ucy4K
KyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkLgorICAg
IEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKK30KKwor
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMoY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVu
dGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAg
ICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5z
aW9ucy5hZGQobmFtZSk7CisgICAgfQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRp
bEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0aWFsaXplKGNvbnN0IFN0cmlu
ZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNw
bGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgn
ICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30K
KworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZThhMDkxNGQ4ZThlMjllMmQyODMx
MjUwNGM0ZWIzMjBiMTE5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC0wLDAg
KzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wp
CisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBXZWJHTExheWVy
OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47CisjZW5kaWYKKworLy8g
QSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBwcm94eSBzaWRlIGltcGxl
bWVudGF0aW9uCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdl
YkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tp
bmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNz
Q29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
KTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSBvdmVycmlkZTsKKwor
ICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB1
c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAgIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IGZpbmFsOworICAgIFBs
YXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAgIEV4dGVuc2lvbnNHTCYg
Z2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9v
bCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVm
ZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29t
cGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5h
bDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0
QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxk
IGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBtYXJr
TGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdC
dWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikK
KyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7CisjZW5kaWYKKyAgICAvLyBP
dGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCisgICAgdXNpbmcgRXh0ZW5zaW9uc0dMOjppc0Vu
YWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0VuYWJsZWQo
Y29uc3QgU3RyaW5nJikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemUo
Y29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3Rh
YmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmlu
ZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAw
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisKKyAgICAvLyBHdWFyZGVkIGJ5
IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxl
RXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7
CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKKworICAgIC8vIEZJ
WE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91bGQgYmUgbW92ZWQgdG8gdGhl
IGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CisgICAgR0NHTGJp
dGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9OworCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAyODNkYTgyYzZhNjAyZWE0YjU1N2M2ODZjZmQ4MjNk
MDgxYzU1ZTRhLi43YzE1MWZhMjg1MGYzM2MxNDlhOWRjODIyMzgxYjhmY2JkZTljYjc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00NiwyOCArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKICAgICA6IG1faW5p
dGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRl
eHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9pc0FNRChmYWxzZSkKLSAgICAs
IG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxzZSkKLSAgICAsIG1f
cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKICAgICAsIG1fdXNlSW5kZXhlZEdl
dFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8vIEZJWE1FOiBpZGVhbGx5LCBy
ZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQotICAgIC8vIHN1YnN1
bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdvcmthcm91bmRzLgot
ICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpH
ZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKLQotICAg
IFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFp
bnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9y
Q29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50cy5jb250YWlucygi
YW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRz
LmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVlOwotICAgIGlmICh2
ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAgICAgICBtX2lzSW1h
Z2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVuc2lvbnNHTEFO
R0xFKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDcgKzgzLDcgQEAgYm9vbCBFeHRlbnNpb25zR0xBTkdM
RTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpCitHTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjsKIH0KQEAgLTEx
NCwxMCArOTQsMTEgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShz
aGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUpOworCiAgICAg
aWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIFZl
Y3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNMQVRFRF9TSEFERVJf
U09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgotICAgIGludCBy
ZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0NHTGludCByZXR1cm5lZExlbmd0aCA9IDA7CiAgICAg
Z2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwg
JnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFyZXR1cm5lZExlbmd0aCkK
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xNDcsNyArMTI4LDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogICAgIG1f
aW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcg
c3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxv
bmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRp
bmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTU2LDcgKzEzNyw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kw
LCBsb25nIHNyY1gxLCBsb25nCiAgICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBz
cmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmls
dGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIzNSw3ICsyMTYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICAgICBnbDo6RHJhd0J1ZmZl
cnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNDMsMTUg
KzIyNCwxNSBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaQogICAgIGdsOjpEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
dm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQpOwor
ICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVp
bnRlcnByZXRfY2FzdDxHTHZvaWQqPihvZmZzZXQpLCBwcmltY291bnQpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzUwLDcg
KzMzMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBnbDo6R2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQog
ewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDMxLDcgKzQxMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRp
c2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kCiAgICAgZ2w6
OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0
aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
Cit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC00MzksNyArNDIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGwKICAgICBnbDo6R2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2kK
ICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lk
dGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykKLXsKLSAgICAvLyBXZSBjYW4g
YXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRoZSBjYWxsaW5nIGZ1bmN0aW9u
cwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgaW50IHRvdGFsQnl0ZXMgPSB3
aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBp
ICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19Ci0jZW5kaWYKLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAq
Y29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVs
QnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1
c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKLSAgICAvLyBhbGwg
cHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBp
eGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJzID0gbV9jb250ZXh0LT5jb250
ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVmZmVyVGFyZ2V0ID0gbV9jb250
ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIg
OiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0YXRlID0gbV9jb250ZXh0LT5t
X3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICBtX2NvbnRleHQtPnJlc29s
dmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7
Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fY29udGV4
dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9Ci0gICAgKHZvaWQpIG1fY29u
dGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgZ2w6OlJlYWRuUGl4
ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXpl
LCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdMZW51bSBlcnJvciA9IGdsOjpH
ZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKTsKLQot
ICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZhaWx1cmUgZHVy
aW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFjZSB0aGlzIGlu
IHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAgdGhlIGFscGhh
IGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmpl
Y3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2Nv
bnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAgICB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0
YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3Qp
OwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0NDUsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24s
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCit2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAsNyArNDUzLDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMu
LmNiZjQ5OGJkN2MxYTFhYjlhYTZiNzBmYjVkMzhhYzRiOTJmYjAzNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gx
LCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRz
dFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0
LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVy
biBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlv
bigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247
IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9Cisg
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBHTF9BTkdM
RV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4
ZWxzKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVz
dEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkblBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIC8v
IFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBib29sIG1faXNOVklESUE7Ci0g
ICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwotICAgIGJvb2wgbV9pc0ltYWdp
bmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsKLSAg
ICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOwotCiAgICAgYm9v
bCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0gICAgU3RyaW5nIG1fdmVuZG9y
OwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4w
LXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVl
biBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNiOGRiYTNjM2Y0NGNkNzY1ZGQ4
ZmM3MTFjZGQ4NzhkZTlhNC4uMWQ2MDRiNzFkNDgxNGY1OTdjMmMyZmM4OWVkYzk2NDhkYzEzYzc2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTQ0MywzMiArNDQzLDUz
IEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCog
ZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
cmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5i
dWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICByZWFkblBpeGVs
c0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lkKj4ob2Zmc2V0KSwgdHJ1ZSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzSW1wbChHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBk
YXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQogewotICAgIC8vIEZJWE1FOiBy
ZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4ZWQs
IGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUgZG9u
ZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2gg
Y2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKKyAgICAvLyBhbGwgcHJl
dmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVs
cy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMo
KTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1faXNGb3JXZWJHTDIgPyBHcmFw
aGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOworICAgIGlmIChhdHRy
cy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsK
ICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHksIHdp
ZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRh
cmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAgICB9Ci0gICAgZ2w6OlJlYWRQ
aXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKLSAgICBpZiAo
YXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVG
Qk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgZ2w6OlJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZT
aXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAgIEdMZW51bSBlcnJvciA9IGds
OjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFk
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJh
bWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJpbmcgdGhlIFJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4gdGhlCisgICAgICAgIC8vIHN5
bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEgY2hhbm5lbCBmaXh1cCBiZWxv
dy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlm
ICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9mYm8g
fHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2Ft
cGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCAmJiAhYXR0cnMu
YWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpV
TlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5h
bnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pKSkKICAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYWRp
bmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0KIC8vIFRoZSBjb250ZW50cyBv
ZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5H
TEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2ls
KGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTg5OCwyMCArOTE5
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6QnVmZmVyU3ViRGF0YSh0YXJn
ZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vz
cyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGdsOjpVbm1hcEJ1ZmZlcih0YXJn
ZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IGdsOjpNYXBCdWZmZXJS
YW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQ
X1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShk
YXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoIWdsOjpVbm1hcEJ1ZmZlcih0
YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5
QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwg
R0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlw
dHIgc2l6ZSkKQEAgLTEwMDgsMTQgKzEwMjUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwK
ICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1J
bmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCitWZWN0b3I8
R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGlj
ZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9y
bUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNl
cy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkpOwor
ICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUo
KSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAtMjEwMSwyMiArMjExOSw2IEBA
IEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGdsOjpHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJv
YnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0
YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUp
Ci17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5i
dWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMzky
LDEyICsyMzk0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFF1ZXJ5KEdD
R0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lKQogewor
ICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXYoaWQsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0aW9ucwpAQCAtMjgzOSwyMCAr
Mjg0MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAgIGdsOjpTYW1wbGVyUGFyYW1l
dGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwLmY7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXIsIHBuYW1lLCB2
YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIs
IHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0g
MDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVl
OwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xl
bnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjg5NSwxMiArMjkwMiwxNCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBH
Q0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0U3luYyhzeW5jLCBmbGFncywg
dGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpdihH
Q0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQg
KnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2koR0NHTHN5
bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBuYW1lLCBidWZTaXplLCBudWxs
cHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBwbmFtZSwgMSwgbnVsbHB0ciwg
JnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MzU5N2Y0NzUz
ZDBiZWMxZDAyZTdkNWZjZmRjNjQzYTk4M2M4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisKKyNpZiBFTkFC
TEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46On5HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpID0gZGVmYXVsdDsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk5ZTg4YzJmOTliMWNhYTU4MTE3YzczOTExYTUxYjY3ZGRlNjMyYmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFBMQVRGT1JNKENP
Q09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFjZSBmb3IgaW1wbGVtZW50aW5nIGZyb250
IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dhcAorLy8gY2hhaW4gb2YgSU9T
dXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxsIG93biB0aGUgSU9TdXJmYWNlcyBpdCB1
c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVh
Y2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRhCisvLyBiYWNrIG9uY2Ug
dGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5
IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8gb2J0YWluIHRoZSBJT1N1cmZhY2UgaXRz
ZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRhZGF0YSBpcyB0byB1c2Ug
RUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3YXkKKy8vIHdoZW4gdGhl
IGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBj
bGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5l
ZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpOworICAgIHN0cnVjdCBC
dWZmZXIgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJm
YWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgorICAgICAgICB2b2lkKiBoYW5kbGUgeyBudWxs
cHRyIH07IC8vIFByb2R1Y2VyIHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xT
dXJmYWNlKS4KKyAgICB9OworICAgIC8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRsZSBvZiBs
YXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xpZW50IG1heSByZWNpZXZlIGJh
Y2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0
IGlzIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAvLyB0aW1lIG9mIHRoZSBjYWxsLgorICAgIC8vIFJl
dHVybnMgZWl0aGVyOgorICAgIC8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1ZmZlciBoYXMgYmVl
biBzdWJtaXR0ZWQuCisgICAgLy8gLSBCdWZmZXIgd2l0aCBlbXB0eSBzdXJmYWNlIGFuZCBub24t
ZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBidWZmZXIgd2FzIGF2YWlsYWJs
ZQorICAgIC8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KKyAgICAvLyAtIFN1
cmZhY2UgYW5kIGhhbmRsZS4KKyAgICB2aXJ0dWFsIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgPSAw
OworCisgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlzcGxheSB3aXRoIGEgY29udGVu
dHMgYnVmZmVyLgorICAgIC8vIENsaWVudCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUg
SU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgorICAgIHZpcnR1YWwgdm9pZCBwcmVz
ZW50KEJ1ZmZlcikgPSAwOworCisgICAgLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJu
cyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgorICAgIC8vIFRo
ZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIg
bXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCisgICAgLy8gdGhpcy4KKyAgICB2
aXJ0dWFsIHZvaWQqIGRldGFjaENsaWVudCgpID0gMDsKK307CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCAyZTFjNzk5ZTgyODUz
YjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi40ODllNDVmY2NlNjNiZDg1NTg3YTQ4MzI4OThk
OTMyNDExY2U5ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKQEAgLTgxLDcgKzgyLDcgQEAgc3RhdGljIEVHTERpc3BsYXkgSW5pdGlhbGl6ZUVH
TERpc3BsYXkoKQogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwogICAgIEVHTGludCBtaW5v
clZlcnNpb24gPSAwOwogICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLSAgICBib29sIHNob3VsZElu
aXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICFpc0luV2ViUHJvY2VzcygpOwor
ICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIShp
c0luV2ViUHJvY2VzcygpIHx8IGlzSW5HUFVQcm9jZXNzKCkpOwogICAgIGlmIChzaG91bGRJbml0
aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKICAgICAgICAgLy8gRm9yIFdLMSB0
eXBlIEFQSXMgd2UgbmVlZCB0byBzZXQgInZvbGF0aWxlIHBsYXRmb3JtIGNvbnRleHQiIGZvciBz
cGVjaWZpYwogICAgICAgICAvLyBBUElzLCBzaW5jZSBjbGllbnQgY29kZSB3aWxsIGJlIGFibGUg
dG8gb3ZlcnJpZGUgdGhlIHRocmVhZC1nbG9iYWwgY29udGV4dApAQCAtMTM0LDcgKzEzNSw3IEBA
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHCiAgICAgaWYgKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0cygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29u
dGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdp
bmRvdywgZGVzdGluYXRpb24pKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIGhv
c3RXaW5kb3csIG51bGxwdHIsIG51bGxwdHIpKTsKIAogICAgIGlmICghY29udGV4dC0+bV9jb250
ZXh0T2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NywxMyArMTQ4LDE4IEBAIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZShHcmFwaGljc0NvbnRleHRHCiBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wm
IHNoYXJlZENvbnRleHQpCiB7CiAgICAgYXV0byBob3N0V2luZG93ID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaG9zdFdpbmRvd0ZvckNvbnRleHQoJnNo
YXJlZENvbnRleHQpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0V2lu
ZG93LCBzaGFyZWRDb250ZXh0LmRlc3RpbmF0aW9uKCksICZzaGFyZWRDb250ZXh0KSk7CisgICAg
YXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChzaGFy
ZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csICZzaGFyZWRDb250ZXh0
LCBudWxscHRyKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCksIGhvc3RXaW5kb3cpOwogCiAgICAg
cmV0dXJuIGNvbnRleHQ7CiB9CiAKK1JlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycywgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4qIHN3YXBDaGFpbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgbnVsbHB0ciwgc3dhcENoYWluKSk7Cit9CisKICNp
ZiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBiZSBqdXN0IGVu
YWJsZWQgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5ND4uCiAKIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVn
aXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVs
Rm9ybWF0T2JqLCBJT1JlZ2lzdHJ5R1BVSUQgcHJlZmVycmVkR1BVSUQpCkBAIC0yMDQsOCArMjEw
LDggQEAgc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4
dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWwKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
IAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3Jh
cGhpY3NDb250ZXh0R0w6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogc2hhcmVkQ29udGV4dCkKLSAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBk
ZXN0aW5hdGlvbiwgc2hhcmVkQ29udGV4dCkKK0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250
ZXh0LCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dhcENoYWluKQorICAg
IDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIHNoYXJl
ZENvbnRleHQpCiB7CiAgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJzLmlzV2ViR0wyOwogCkBAIC0y
OTMsMjYgKzI5OSwyOCBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIGlmIChtX2lzRm9y
V2ViR0wyKQogICAgICAgICBnbDo6RW5hYmxlKEdyYXBoaWNzQ29udGV4dEdMOjpQUklNSVRJVkVf
UkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKKyAgICBWZWN0b3I8QVNDSUlMaXRlcmFsLCA0PiByZXF1
aXJlZEV4dGVuc2lvbnM7CisgICAgaWYgKG1faXNGb3JXZWJHTDIpIHsKKyAgICAgICAgLy8gRm9y
IFdlYkdMIDIuMCBvY2NsdXNpb24gcXVlcmllcyB0byB3b3JrLgorICAgICAgICByZXF1aXJlZEV4
dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iX3MpOworICAg
IH0KICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIEV4dGVu
c2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKLQogICAgIGlmICghbmVlZHNF
QUdMT25NYWMoKSkgewotICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHJlcXVp
cmVkRXh0ZW5zaW9uc1tdID0gewotICAgICAgICAgICAgIkdMX0FOR0xFX3RleHR1cmVfcmVjdGFu
Z2xlIiwgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAgICAgICAgICAiR0xf
RVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiwgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3Vy
ZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocmVxdWlyZWRFeHRlbnNpb25zKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMocmVxdWlyZWRFeHRlbnNpb25z
W2ldKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0
ZW5zaW9uLiAlcyIsIHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KKyAgICAgICAg
cmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3Mp
OworICAgICAgICAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJm
YWNlLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9m
b3JtYXRfQkdSQTg4ODgiX3MpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBleHRlbnNp
b25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRFeHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0
ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJl
cXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0
ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRl
bnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7
CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
Ci0KICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUND
QVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBzdGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8v
IHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3JtU2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0
byBDYXRhbHlzdCB0b28uCkBAIC0zMzEsMTMgKzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJp
YnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0g
ICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVyCisgICAgaWYgKHN3YXBDaGFpbikKKyAgICAgICAg
bV9zd2FwQ2hhaW4gPSBzd2FwQ2hhaW47CisgICAgZWxzZSB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVy
IGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBj
b250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIFtt
X3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CiAjZW5kaWYKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fc3dhcENoYWluID0gJlttX3dlYkdMTGF5ZXIg
c3dhcENoYWluXTsKKyAgICB9CiAKICAgICAvLyBDcmVhdGUgdGhlIHRleHR1cmUgdGhhdCB3aWxs
IGJlIHVzZWQgZm9yIHRoZSBmcmFtZWJ1ZmZlci4KICAgICBHTGVudW0gdGV4dHVyZVRhcmdldCA9
IElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKTsKQEAgLTQwNiwxMyArNDE4LDEyIEBAIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAgICAgICBpZiAo
bV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pCiAgICAgICAgICAgICBnbDo6RGVsZXRlRnJhbWVi
dWZmZXJzKDEsICZtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZCTyk7CiAgICAgfQotICAgIGlmICht
X2Rpc3BsYXlCdWZmZXJQYnVmZmVyKQorICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKSB7
CiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIpOwotICAgIGlmIChtX3dlYkdMTGF5ZXIpIHsKLSAgICAgICAgYXV0byByZWN5Y2xl
ZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgICAgIGF1dG8gcmVj
eWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgICAgICBpZiAo
cmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1f
ZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxlKTsKLSAgICAgICAgYXV0byBjb250ZW50
c0hhbmRsZSA9IFttX3dlYkdMTGF5ZXIgZGV0YWNoQ2xpZW50XTsKKyAgICAgICAgYXV0byBjb250
ZW50c0hhbmRsZSA9IG1fc3dhcENoYWluLT5kZXRhY2hDbGllbnQoKTsKICAgICAgICAgaWYgKGNv
bnRlbnRzSGFuZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9i
aiwgY29udGVudHNIYW5kbGUpOwogICAgIH0KQEAgLTU3NSwxMSArNTg2LDE2IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAgICAg
Ly8gUmVzZXQgdGhlIGZ1dHVyZSByZWN5Y2xlZCBidWZmZXIgbm93LCBiZWNhdXNlIGl0IG1vc3Qg
bGlrZWx5IHdpbGwgbm90IGJlIHJldXNhYmxlIGF0IHRoZSB0aW1lIGl0IHdpbGwgYmUgcmV1c2Vk
LgotICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJd
OworICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigp
OwogICAgIGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgIEVHTF9EZXN0cm95U3Vy
ZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7CiAgICAgcmVjeWNsZWRC
dWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgIHJldHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5
QnVmZmVyQmFja2luZygpOworfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxv
Y2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCit7CisgICAgQVNTRVJUKCFnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAgYXV0byBiYWNraW5nID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2Vi
Q29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02MzcsNyArNjUzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKICAgICAvLyBmb3IgT3BlbkdMIHRv
IGRlY2lkZSB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheSAob25saW5lL29mZmxp
bmUpLgogICAgIC8vIE9wZW5HTCB3aWxsIHRoZW4gY29uc2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRl
cmVycywgYXMgb2ZmbGluZSwgd2hpY2ggbWVhbnMKICAgICAvLyBhbGwgb2ZmbGluZSByZW5kZXJl
cnMgbmVlZCB0byBiZSBjb25zaWRlcmVkIHdoZW4gZmluZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAg
ICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZG93U2VydmVy
IGNvbm5lY3Rpb24sIGFuZAorICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3Rp
bGwgYmUgYSBXaW5kd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKICAgICAvLyBtX2Rpc3BsYXlNYXNr
IHdpbGwgbm90IGJlIHNldCBpbiB0aGlzIGNhc2UuCiAgICAgaWYgKHByaW1hcnlPcGVuR0xEaXNw
bGF5TWFzaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY4MywxMCArNjk5LDEwIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAvLyBU
aGUgSU9TdXJmYWNlIHdpbGwgYmUgdXNlZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwg
c28gZmx1c2ggR0wgY29tbWFuZHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3lj
bGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3lj
bGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKIAogICAgIEVHTF9SZWxl
YXNlVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyLCBFR0xfQkFD
S19CVUZGRVIpOwotICAgIFttX3dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVu
dHM6IHtXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVm
ZmVyfV07CisgICAgbV9zd2FwQ2hhaW4tPnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZl
ckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIH0pOwogICAgIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKIAogICAgIGJvb2wgaGFzTmV3QmFja2luZyA9IGZh
bHNlOwpAQCAtNzAwLDcgKzcxNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBy
ZXBhcmVGb3JEaXNwbGF5KCkKIAogICAgIC8vIEVycm9yIHdpbGwgYmUgaGFuZGxlZCBieSBuZXh0
IGNhbGwgdG8gbWFrZUNvbnRleHRDdXJyZW50KCkgd2hpY2ggd2lsbCBub3RpY2UgbGFjayBvZiBk
aXNwbGF5IGJ1ZmZlci4KICAgICBpZiAoIWhhc05ld0JhY2tpbmcpCi0gICAgICAgIHJlc2hhcGVE
aXNwbGF5QnVmZmVyQmFja2luZygpOworICAgICAgICBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVm
ZmVyQmFja2luZygpOwogCiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGM0MTQwMTViN2IwZjM0YmIyOGJlMzQ1NTA5Yzc0MjllMzFkYWEzYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisK
KyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisjaW1wb3J0
ICJXZWJHTExheWVyLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2Vi
R0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVs
UmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFd
KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdM
IExheWVyIl07CisjZW5kaWYKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKwor
UGxhdGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7Cit9CisKKyNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCitHcmFwaGljc0NvbnRleHRHTENW
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6YXNDVigpCit7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisjZW5kaWYKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4mIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVN3YXBDaGFpbigp
Cit7CisgICAgcmV0dXJuIFttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKK30KKworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLmgKaW5kZXggMTRiMDFlNzA1ZjIwNTMwMWM3Yzk3Y2Y2NmU3MWEwOGJiZjQxZTcwNS4uN2Zl
ODhhMmZmNGNlMGY1NTlkNTlkYzFjZDk1MmEzYTdlYTg4MDk2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaApAQCAtMjMsNTIg
KzIzLDIyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIklPU3VyZmFjZS5oIgor
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8d3Rm
L05ha2VkUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBXZWJHTExheWVyQnVm
ZmVyIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAv
LyBUaGUgYWN0dWFsIGNvbnRlbnRzLgotICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8g
Q2xpZW50IHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KLX07
Ci19Ci0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKIC8vIEEgbGF5ZXIg
Y2xhc3MgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJp
bmcgc3dhcAogLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KLS8vIFRoZSBsYXllciB3aWxsIG93biB0
aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgotLy8gVGhlIGNsaWVudCBtYXkgYXR0
YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFk
YXRhCi0vLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2
ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKLS8vIGJlIGFibGUgdG8gb2J0YWlu
IHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KLS8vIEV4YW1wbGUgdXNlIG9mIHRoZSBt
ZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhp
cyB3YXkKLS8vIHdoZW4gdGhlIFdlYkdMTGF5ZXIgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2Ug
ZGlzcGxheSwgdGhlIGNsaWVudCBjYW4gY29udGludWUgdXNpbmcKLS8vIHRoZSBleGlzdGluZyBi
aW5kaW5nIG9idGFpbmVkIHRocm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgogQGludGVy
ZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0
aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNP
cGFxdWU7CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZToo
Q0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKLS8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhh
bmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgbWF5IHJlY2ll
dmUgYmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNh
c2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRoZQotLy8gdGltZSBvZiB0aGUgY2FsbC4KLS8vIFJldHVy
bnMgZWl0aGVyOgotLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1p
dHRlZC4KLS8vIC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFk
YXRhIGhhbmRsZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKLS8vICAgYnV0
IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KLS8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgot
LSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcilyZWN5Y2xlQnVmZmVyOwotCi0vLyBQcmVwYXJl
cyB0aGUgbGF5ZXIgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVu
dCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhl
IGBidWZmZXJgLgotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29y
ZTo6V2ViR0xMYXllckJ1ZmZlcilidWZmZXI7Ci0KLS8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5k
IHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KLS8v
IFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZm
ZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCi0vLyB0aGlzLgotLSAodm9p
ZCopZGV0YWNoQ2xpZW50OworLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4mKSBzd2FwQ2hhaW47CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KaW5kZXggYzhmNGU3OWY3MzEy
ZWFhNmFiMDQ0NjgwODNlYThkMGM4YmVmYTNiYy4uMzg1OTdlNGE4ZjYzM2E1ZWU1ZGI3NDkzMzAy
MmRjMjM3ZmU3ZTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLm1tCkBAIC0zMiwxMyArMzIsMzkgQEAKICNpbXBvcnQgIkdy
YXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgorCitjbGFzcyBXZWJHTExheWVyU3dhcENoYWluIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJHTExheWVyU3dhcENoYWluKFdlYkdMTGF5ZXIq
IGxheWVyKSAgOiBtX2xheWVyKGxheWVyKSB7IH07CisgICAgfldlYkdMTGF5ZXJTd2FwQ2hhaW4o
KSBvdmVycmlkZSA9IGRlZmF1bHQ7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgb3ZlcnJpZGU7
CisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgeworICAgICAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIu
c3VyZmFjZS0+aXNJblVzZSgpKQorICAgICAgICAgICAgICAgIG1fc3BhcmVCdWZmZXIuc3VyZmFj
ZS5yZXNldCgpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9zcGFyZUJ1ZmZlcik7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdm9pZCogZGV0YWNoQ2xp
ZW50KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJm
YWNlKTsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gbV9kaXNwbGF5QnVmZmVyLmhhbmRsZTsKKyAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheVN1cmZhY2UoKSB7
IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZS5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBC
dWZmZXIgbV9kaXNwbGF5QnVmZmVyOworICAgIEJ1ZmZlciBtX3NwYXJlQnVmZmVyOworICAgIFdl
YkdMTGF5ZXIqIGNvbnN0IG1fbGF5ZXI7Cit9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXll
ciB7Ci0gICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfY29udGVudHNCdWZmZXI7Ci0gICAg
V2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfc3BhcmVCdWZmZXI7Ci0KICAgICBCT09MIF9wcmVw
YXJlZEZvckRpc3BsYXk7CisgICAgT3B0aW9uYWw8V2ViR0xMYXllclN3YXBDaGFpbj4gX3N3YXBD
aGFpbjsKIH0KIAogLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQ
aXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCkBAIC00Nyw2ICs3
Myw3IEBACiAgICAgc2VsZi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7CiAgICAg
c2VsZi5jb250ZW50c09wYXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwogICAgIHNlbGYuY29udGVudHNT
Y2FsZSA9IGRldmljZVBpeGVsUmF0aW87CisgICAgX3N3YXBDaGFpbi5lbXBsYWNlKHNlbGYpOwog
ICAgIHJldHVybiBzZWxmOwogfQogCkBAIC03MywzMCArMTAwLDIxIEBACiAgICAgVU5VU0VEX1BB
UkFNKGNvbG9yU3BhY2UpOwogICAgIHJldHVybiBudWxscHRyOwogfQotCi0tIChXZWJDb3JlOjpX
ZWJHTExheWVyQnVmZmVyKSByZWN5Y2xlQnVmZmVyCistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbgogewotICAgIGlmIChfc3BhcmVCdWZm
ZXIuc3VyZmFjZSkgewotICAgICAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2Uo
KSkKLSAgICAgICAgICAgIF9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7Ci0gICAgICAgIHJl
dHVybiBXVEZNb3ZlKF9zcGFyZUJ1ZmZlcik7Ci0gICAgfQotICAgIHJldHVybiB7IH07CisgICAg
cmV0dXJuIF9zd2FwQ2hhaW4udmFsdWUoKTsKIH0KIAotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxh
eVdpdGhDb250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgYnVmZmVyCistICh2b2lk
KXByZXBhcmVGb3JEaXNwbGF5CiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7
Ci0gICAgX3NwYXJlQnVmZmVyID0gV1RGTW92ZShfY29udGVudHNCdWZmZXIpOwotICAgIF9jb250
ZW50c0J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXld
OwogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBZRVM7CiB9CiAKIC0gKHZvaWQpZGlzcGxheQog
ewotICAgIGlmIChfY29udGVudHNCdWZmZXIuc3VyZmFjZSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5
KSB7Ci0gICAgICAgIHNlbGYuY29udGVudHMgPSBfY29udGVudHNCdWZmZXIuc3VyZmFjZS0+YXNM
YXllckNvbnRlbnRzKCk7CisgICAgaWYgKF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCkgJiYg
X3ByZXBhcmVkRm9yRGlzcGxheSkgeworICAgICAgICBzZWxmLmNvbnRlbnRzID0gX3N3YXBDaGFp
bi0+ZGlzcGxheVN1cmZhY2UoKS0+YXNMYXllckNvbnRlbnRzKCk7CiAgICAgICAgIFtzZWxmIHJl
bG9hZFZhbHVlRm9yS2V5UGF0aDpAImNvbnRlbnRzIl07CiAgICAgfQogICAgIGF1dG8gbGF5ZXIg
PSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2Jy
aWRnZSB2b2lkKilzZWxmKTsKQEAgLTEwNiwxMyArMTI0LDE0IEBACiAgICAgX3ByZXBhcmVkRm9y
RGlzcGxheSA9IE5POwogfQogCi0tICh2b2lkKikgZGV0YWNoQ2xpZW50CitAZW5kCisKK3ZvaWQg
V2ViR0xMYXllclN3YXBDaGFpbjo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQogewotICAgIEFTU0VS
VCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIHZvaWQqIHJlc3VsdCA9IF9jb250ZW50c0J1
ZmZlci5oYW5kbGU7Ci0gICAgX2NvbnRlbnRzQnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAg
bV9zcGFyZUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlC
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgW21fbGF5ZXIgcHJlcGFyZUZvckRpc3BsYXld
OwogfQotQGVuZAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4NTUyZjFlNDZhMWQz
NzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIuLjk5YWQ5MTY1MjU5MTg3M2UwZTgzZmU4Nzg5MjVlY2Ey
MzNhMWExYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCiAjaW1w
b3J0ICJTb3VyY2VHcmFwaGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0Lmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDdlYzgxY2Y0YWU1NzcyY2FlOTcyODhiYzgw
ZTM2NTY0NmQ2MjdjN2IuLmFkZDVmMzUyYWU0ZGU2YjZkNWRjMTkxZTY3M2I1YWFmYTU2ZGU5NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEV4dGVuc2lv
bnNHTE9wZW5HTDo6RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBj
b250ZXh0LCBib29sIHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0wo
KSA9IGRlZmF1bHQ7CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
cihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRz
dFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1h
c2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRG
cmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJh
bWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uCiAgICAgOjpn
bEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGJ1ZnMpCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzcsNyArMjM3LDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHMKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgRwogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQor
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApp
bmRleCA0OTYyODljZWEwZTZhMDlkNmRiNzMxZjg2OGI1NDk5M2E0NDQ0OWE4Li40NzUwMjI2ZWNl
Y2VmNDQzOTZlOTkzODY3NmNiNjM5YmU4MzQzN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
CkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVu
R0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1l
YnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxv
bmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxv
bmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
d2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAKICAgICBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
ZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKQEAgLTUyLDkg
KzUyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzdXBwb3J0c0V4dGVu
c2lvbihjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCA0M2I1MTYxZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2
YzQ4M2ViLi5iNzg5NjBjYjQ4MmU0ZWYyYWI5OGU0MDM5MmE2MzViYTdmZmI3YmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMzY2LDExICszNjYsNiBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMcwogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWks
IEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICos
IEdDR0xzaXplaSAqLCB2b2lkICosIGJvb2wpCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgKaW5kZXggYmZlNDUyMTU0M2ZmNGIyNzIxMzdmMzQ0Y2VlNGEyMmQ4ZmIyOGM2
NC4uNmEzYTM5ZmUzYTFiYTViZDI1OTc3MTU4OTQ3NTYxY2NhZDVhZDQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtOTMsNyArOTMsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVp
ICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5
OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMzLi5lMWU0M2JmNTM5Mjg4NWEyNGZiYjMzY2IyNmI1
ZjZlNDkxZmJlMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwx
MiArMTAwLDEyIEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXIobG9uZyAvKiBzcmNYMCAqLywgbG9uZyAv
KiBzcmNZMCAqLywgbG9uZyAvKiBzcmNYMSAqLywgbG9uZyAvKiBzcmNZMSAqLywgbG9uZyAvKiBk
c3RYMCAqLywgbG9uZyAvKiBkc3RZMCAqLywgbG9uZyAvKiBkc3RYMSAqLywgbG9uZyAvKiBkc3RZ
MSAqLywgdW5zaWduZWQgbG9uZyAvKiBtYXNrICovLCB1bnNpZ25lZCBsb25nIC8qIGZpbHRlciAq
LykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQs
IEdDR0xpbnQsIEdDR0xiaXRmaWVsZCwgR0NHTGVudW0pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpn
ZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTAogICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKSB7CiAg
ICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHCiAgICAgbV9nbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI3Nyw3
ICsyNzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LAogICAgIG1fZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQq
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAg
aWYgKCFtX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuaAppbmRleCAwMTdhNDViNzM5OGQwOTkyZWQxNDc2N2YwNzY3ZTA0YjQ2NDE2Mjgz
Li41Yzc2MDM3ZmE3YmM2ZThlZWUzZTY3M2Y5OWE3ZGZjMmY3OGZiNGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRl
bnNpb24zRCBtZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJy
aWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBvdmVycmlkZTsKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CkBAIC04
Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFQgUm9idXN0
bmVzcyAtIHJlc2V0CiAgICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYzI1NWIwYzEyZjRmY2Jm
YTQ2ZGIwMmQ1NWM4MGI0Y2I3N2QxN2I3MC4uMTAzNTY4OGQxY2JlOWI4MGQzOTEyMjQ3OGJlZGQ4
ZDk4ZjY1NDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTU4LDYg
KzU4LDkgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNf
Q0xBU1MgV2ViR0xMYXllcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworfQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQog
CiAjaWYgVVNFKE5JQ09TSUEpCkBAIC04Niw3ICs4OSw3IEBAIHR5cGVkZWYgV1RGOjpIYXNoTWFw
PENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5h
bCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBE
ZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKTsKQEAgLTk0LDYgKzk3LDggQEAgcHVibGljOgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4g
Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KTsKKyAg
ICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluKik7CisKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHRPYmo7
IH0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fdGV4dHVyZTsgfQogICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0
KCkpOyB9CkBAIC0xOTEsNyArMTk2LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0QWN0aXZlQXR0
cmliSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJ
bmZvJik7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSBmaW5hbDsKICAgICBib29sIGdldEFjdGl2
ZVVuaWZvcm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFj
dGl2ZUluZm8mKTsKLSAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1H
TE9iamVjdCogc2hhZGVycykgZmluYWw7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291
bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpOwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKICAgICB2
b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFs
dWUpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKQEAgLTIxOSw4ICsyMjQsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgdm9pZCBnZXRVbmlm
b3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZp
bmFsOwogICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwpAQCAtMjM2LDcgKzIzOSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsK
ICAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRz
KSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIHZvaWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1w
ZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKQEAgLTMxNywxMiArMzIxLDEwIEBA
IHB1YmxpYzoKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lk
KiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAjZW5kaWYK
ICAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVt
IHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZz
ZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKIAotICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgs
IEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwotICAgIEdDR0xib29sZWFuIHVubWFwQnVmZmVy
KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQg
c3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xp
bnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNr
LCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0
IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOwpAQCAtMzg0LDcg
KzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmlu
YWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZvaWQgZ2V0
UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdD
R0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKQEAgLTM5Myw4ICszOTUsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCBwYXJhbSkgZmluYWw7CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKIAogICAgIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24s
IEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CiAgICAgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xz
eW5jKSBmaW5hbDsKQEAgLTQwMyw3ICs0MDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0U3lu
YyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7
CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgogICAgIC8vIEZJWE1FIC0gdGhpcyBjYW4gYmUgaW1w
bGVtZW50ZWQgYXQgdGhlIFdlYkdMIGxldmVsIGlmIHdlIHNpZ25hbCB0aGUgV2ViR0xTeW5jIG9i
amVjdC4KLSAgICB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5j
aShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlVHJhbnNm
b3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CkBAIC00MjAsNyArNDIyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogICAgIC8vIGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4g
dXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KICAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVu
aWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHVuaWZvcm1OYW1lcykgZmluYWw7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpIGZpbmFsOworICAg
IFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CiAKICAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CiAg
ICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyCkBAIC00MjksMTEgKzQzMSw2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCi0jaWYgIVVTRShBTkdMRSkKLSAgICB2b2lkIHJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KTsKLSNlbmRpZgotCiAgICAg
Ly8gSGVscGVyIG1ldGhvZHMuCiAKICAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWdu
ZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50
U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CkBAIC01MTUsNyArNTEyLDExIEBA
IHB1YmxpYzoKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250
ZXh0ID0gbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qID0gbnVs
bHB0cik7CisjZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9m
ZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRy
KTsKKyNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkg
cG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBi
eSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1
YWxseSBjYWxsIE9wZW5HTC4KQEAgLTUyOCw2ICs1MjksOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIAorICAgIHZvaWQgcmVh
ZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSog
cm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwor
CiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJhdGlvbiBsZWF2ZSB0aGUg
R1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwog
CkBAIC01NDgsMTAgKzU1MSwxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAgYm9vbCByZXNoYXBlRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZm
ZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKKyAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gYSBpbWFnZSBidWZmZXIuIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTc5IC4KICAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
R0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3ZWRm
MWY0ZTY4ODEzZjZiOS4uNjI5ODAzODhiNjUyNDc5Y2NiNDMzMWMyNWZmZWViYjY2YzZjYjU0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTQzMSw3
ICs0MzEsNyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRl
bnNpb25zKCkKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgYXV0byBhdHRycyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KLSAg
ICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEp
OworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
ZGF0YS5kYXRhKTsKICAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQo
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGJjNDRj
ZDU3Nzg4NjcyMDM5YWVhNGY1OTk5NmU0ZDk0ZTFjMWEwZmUuLjdiMmVhMDRhMjA5OTU2NWM3OTBl
YTU3YzY2N2IwZDljNjBhZjU1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcApAQCAtMjAyOSwyMiArMjAyOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVk
TmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUs
IHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0
ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlLmRh
dGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIyNzgsMTkgKzIyNjIsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEcKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJ
bnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lv
bnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50
KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewotICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZp
c29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4
LCBkaXZpc29yKTsKIH0KIAogI2lmIEhBVkUoT1BFTkdMXzQpICYmIEVOQUJMRShXRUJHTDIpCkBA
IC0yMzM1LDQyICsyMzE5LDI1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0ciwKIH0KICNlbmRpZgog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBH
Q0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0J5dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShk
c3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
bGVuZ3RoKTsKLX0KLQogI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCi12
b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxk
IGFjY2VzcykKLXsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiA6OmdsTWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZz
ZXQsIGxlbmd0aCwgYWNjZXNzKTsKLX0KLQotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkKLXsKLSAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gR0xfRkFMU0U7Ci0KLSAgICByZXR1cm4gOjpn
bFVubWFwQnVmZmVyKHRhcmdldCk7Ci19CisgICAgICAgIHJldHVybjsKKyAgICBHQ0dMdm9pZCog
cHRyID0gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIEdy
YXBoaWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOworICAgIGlmICghcHRyKQorICAgICAgICBy
ZXR1cm47CisgICAgbWVtY3B5KGRhdGEuZGF0YSwgcHRyLCBkYXRhLmJ1ZlNpemUpOworICAgIGlm
ICghOjpnbFVubWFwQnVmZmVyKHRhcmdldCkpCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CiAjZWxzZQotdm9pZCogR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtLCBHQ0dMaW50cHRyLCBH
Q0dMc2l6ZWlwdHIsIEdDR0xiaXRmaWVsZCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVT
RURfUEFSQU0oZGF0YSk7CisgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfT1BFUkFUSU9OKTsKKyNlbmRpZgogfQogCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0pCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotI2VuZGlmCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsaXRGcmFtZWJ1
ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewpAQCAtMjcx
MiwxMSArMjY3OSwxMSBAQCBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYQogICAgIHJldHVybiAwOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKQorR0NH
THVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5
KTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjc1NiwxOCArMjcyMywxOSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbgogICAgIFVOVVNFRF9QQVJBTShwYXJhbSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsK
ICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAg
cmV0dXJuIDAuZjsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKKwog
ewogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwot
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIEdDR0xzeW5jIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MpCkBAIC0yODA2LDEyICsyNzc0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5jIHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywg
R0NHTGluCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVvdXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lKQogewogICAg
IFVOVVNFRF9QQVJBTShzeW5jKTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNF
RF9QQVJBTShidWZTaXplKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAw
OwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpCkBAIC0yODkxLDIxICsyODU4LDIzIEBAIFZlY3RvcjxHQ0dMdWlu
dD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xP
YmplY3QgcHJvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhB
VkUoT1BFTkdMX0VTXzMpCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
CitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5p
Zm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1
bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKKyNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZF
KE9QRU5HTF9FU18zKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAg
ICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCks
IHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkpOworICAgIDo6Z2xH
ZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9y
bUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7CisjZW5kaWYKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiBHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVu
aWZvcm1CbG9ja05hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNF
RF9QQVJBTSh1bmlmb3JtQmxvY2tOYW1lKTsKLQogICAgIHJldHVybiAwOwogfQogCkBAIC0yOTEz
LDcgKzI4ODIsNiBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncgogewogICAgIFVOVVNFRF9QQVJB
TShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwotCiAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKQEAgLTI5MjMsMjcgKzI4OTEsOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTAogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0JpbmRpbmcpOwogfQotI2Vsc2UKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mLCBHQ0dMZW51bSwgVmVjdG9yPEdDR0xpbnQ+JikKLXsK
LX0KLQotR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0lu
ZGV4KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCkKLXsKLSAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmlu
ZGluZyhQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCwgR0NHTHVpbnQpCi17Ci19Ci0jZW5kaWYK
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkKIHsKICAgICBVTlVTRURfUEFSQU0oeCk7CiAgICAgVU5VU0VEX1BB
UkFNKHkpOwpAQCAtMjk1NCwxOCArMjkwMyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKLXsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
ZHN0T2Zmc2V0KTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCmluZGV4IDIzZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYxNzMzOTZhYTU1MDUuLmEyMjE4
MGI0YmY0Y2UxMGYxODUyMTI0MDExZTg4YTQ0MjczYjQxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsCiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KIAotICAgIDo6Z2xSZWFkUGl4ZWxzKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgOjpnbFJlYWRQaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmRhdGEpOwogCiAgICAg
aWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3RkJPID09IG1fbXVs
dGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1fbXVsdGlzYW1wbGVGQk8pOwpAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgICAg
ICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4K
ICAgICAgICAgICAgIGlmIChzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyKSB7CiAgICAg
ICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBz
YW1wbGVDb3VudCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOwogICAg
ICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwpCiAgICAgICAgICAgICAgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9B
VFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkKQEAgLTEzOCwxMiArMTM4LDEyIEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNp
emUpCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVz
LnN0ZW5jaWwpIHsKICAgICAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xf
UkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgICAgICAgICBleHRl
bnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNh
bXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgsIHdpZHRoLCBo
ZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBt
X3N0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
YXR0cmlidXRlcy5kZXB0aCkgewogICAgICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1
ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotICAgICAgICAgICAgICAgICAg
ICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZG
RVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09NUE9ORU5U
MTYsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRF
UkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKaW5kZXggODhlMTUxYjEyMjI0ZmViY2M4OTNiNTNkNjg1ZTNlYzFi
MDEwY2Q0NS4uMmI4OTZhOWFiYWMwZTEwNzRiMWUxMzUxOTMyMDQ5YWJlNzY4MDNjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9G
SUxFUwogICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIEdQVVBy
b2Nlc3MvR1BVUHJvY2VzcwogCisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTAogICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZAogCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcgpA
QCAtMjIxLDYgKzIyMiw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKKyAgICBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAKICAgICBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlNTFjYWVkMjFlMTg2Y2YyYTE3M2NiOGEz
MzMxMmJlMGIzMDRiYjAwLi5iY2UzMzhjNGI0NGYwNzllODBlZDBkNDZkNjcyMjkzYzIyN2U1OWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBA
IC0yMCw2ICsyMCw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvbW9k
ZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMv
Y29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0x
MzQsNiArMTM1LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlODhiMmMyMWZh
NzE3Yzc3ZDIzMDJjYjUxOGJhNGFkM2VkZTI1NzRhLi4xNWYzYzIzY2NlMDVlMmQzMmU1ZWViNjky
NDBjNjU0OGE5YmQxNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKQEAgLTE3OCw2ICsxNzgsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCA2ODE0ODU1ZmY5ZDIzYWYwYTc3ZTVmZGE2ZGZkMmZkNTUwOTc2
ZjY5Li4zNTNkNzZlZDFhNWYyMDllZWEzZjQ3ODMxZTA2Y2E4ZGQyMTA0M2NjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzEsNiArMTcxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMg
PSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCisJV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBcCiAJV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlIFwKQEAgLTIyNyw2ICsyMjgsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9
IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAogCUdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kIFwKKwlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFwK
IAlHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eSBcCiAJR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCiAJR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCAwZTJlODgzMmIxZTIwZjFlMGYzMTlkNWQ5ZjI1ZDcyY2UxYmY3M2FkLi40
NGI5ZjYzZTE0YzUwYjc0MTk5M2Q2ZjM1YTVhOTVmNWFmZDgwYTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC02NCw2ICs2NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAtMjkwLDYgKzI5NCwyMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIEVOQUJM
RShXRUJHTCkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
Cit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVu
c3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKKyAgICAgICAgcmV0dXJu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0g
bV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9CisjZW5kaWYKIHZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAg
ICAgZ3B1UHJvY2VzcygpLm5vd1BsYXlpbmdNYW5hZ2VyKCkuY2xlYXJOb3dQbGF5aW5nSW5mb0Ns
aWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNjc4ZGJjNGU1ZDM2NWZhZDI4ZThiNDgyNzg2Mzc2
MmEzYzQ1NzhkLi41YWVkZmJiNGQyY2FjN2I3NjYwZmYwNzM2MDlkMzc3YzYwMTU4NGI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRD
RW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CkBAIC0zOSw2ICs0MCwxMSBAQAog
I2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisj
aWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7CkBAIC01NCw2ICs2
MCw3IEBAIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsK
IGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFz
cyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lv
bkNvbmZpZ3VyYXRpb247CkBAIC0xMTksNiArMTI2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
IAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworI2VuZGlmCisKICAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8o
KTsKICAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCkBAIC0xODAsNyArMTkyLDEwIEBA
IHByaXZhdGU6CiAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1h
cDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcDsKLQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB1c2luZyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOworI2VuZGlm
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCA1MTk0ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1MmMzNjVlYjMyNzFm
MzQ0Li45ZDU0ZTE2NDU5NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5YzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3Jl
YXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tl
bmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcikKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRl
eHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6Okdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisj
ZW5kaWYKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxh
eWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgwNGQxZmE5OTk0ZDVmZmYzMTQz
NjRkNTliZWY5NWViNDllYTk5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTAsMCArMSwx
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4g
Y29udGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpKQorICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
ID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9j
b250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250
ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmlu
ZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25z
R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVz
dGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAg
ICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVz
c2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdAoreworICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9
CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0
dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmZvcmNlQ29udGV4dExvc3QoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgp
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAg
IGlmICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwg
aGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKworI2lm
ICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVG
b3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9Cisj
ZW5kaWYKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChTdHJpbmcmJiBleHRlbnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFy
a0NvbnRleHRDaGFuZ2VkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RiMGNmNTE4YWJmOWJiMjVhYjMzNmRk
ZGUwMzk5OTI1YWEwNWYzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lv
bnNHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0Ep
CituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8v
IEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdl
cyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
CisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyCisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKworICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdDsKKworcHJvdGVjdGVkOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4pOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRl
cy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
ZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBm
aW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAv
LyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBv
c2l0ZSgpIGZpbmFsOworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZv
aWQgcmVjeWNsZUNvbnRleHQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5n
ZWROb3RpZmljYXRpb24oKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVk
LgorICAgIHZvaWQgcmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAg
dm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmKTsKKyAgICB2b2lkIG5vdGlmeU1h
cmtDb250ZXh0Q2hhbmdlZCgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRS
aWdodCYmKT4mJikgPSAwOworI2Vsc2UKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cisg
ICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYTcxNTI0ZDQwODE5YmEw
MzEwY2I0MjAxMzYwNzU2Njg3ODY4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwyOTQgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxh
eSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYK
KyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgp
IFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3Ry
aW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisKKyAg
ICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHZvaWQgU3ludGhlc2l6ZUdM
RXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJv
ckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEFjdGl2
ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgdm9pZCBCaW5kQXR0cmliTG9jYXRpb24o
dWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyBuYW1lKQorICAgIHZvaWQgQmlu
ZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kRnJh
bWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFJl
bmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5k
VGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCbGVuZENv
bG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAg
IHZvaWQgQmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgQmxlbmRFcXVhdGlv
blNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAgICB2b2lk
IEJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHZvaWQg
QmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQz
Ml90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB2b2lkIENoZWNrRnJhbWVidWZm
ZXJTdGF0dXModWludDMyX3QgdGFyZ2V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xlYXJDb2xv
cihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2
b2lkIENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwoaW50MzJf
dCBzKQorICAgIHZvaWQgQ29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUs
IGJvb2wgYWxwaGEpCisgICAgdm9pZCBDb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBDb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdl
MkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlRnJhbWVidWZmZXIoKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVQcm9ncmFtKCkgLT4gKHVp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUmVuZGVyYnVm
ZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3Jl
YXRlU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIENyZWF0ZVRleHR1cmUoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBDdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQg
RGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVGcmFtZWJ1ZmZlcih1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVT
aGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVRleHR1cmUodWludDMyX3QgYXJn
MCkKKyAgICB2b2lkIERlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHZvaWQgRGVwdGhNYXNr
KGJvb2wgZmxhZykKKyAgICB2b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIp
CisgICAgdm9pZCBEZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAg
ICB2b2lkIERpc2FibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRHJhd0FycmF5cyh1aW50MzJfdCBtb2Rl
LCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIEVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIEZpbmlzaCgpCisgICAgdm9pZCBG
bHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMy
X3QgYXJnMykKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBp
bnQzMl90IGxldmVsKQorICAgIHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9p
ZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRBY3RpdmVBdHRy
aWIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVl
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBp
bmRleCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBdHRyaWJMb2NhdGlvbih1
aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0U3RyaW5nKHVpbnQzMl90IG5hbWUpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVl
U2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkg
LT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWlu
dDMyX3QgaW5kZXgpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYodWludDMy
X3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9v
bD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJf
dCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVySW5m
b0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVp
bnQzMl90IHByZWNpc2lvblR5cGUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+
IHJhbmdlLCBHQ0dMaW50IHByZWNpc2lvbikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRl
clNvdXJjZSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQ
YXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQzMl90IHBy
b2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9y
bWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6
ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24s
IHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFy
ZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5h
bWUpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEhpbnQo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgSXNCdWZmZXIodWludDMy
X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0Vu
YWJsZWQodWludDMyX3QgY2FwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIElzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1Byb2dyYW0odWludDMyX3QgYXJnMCkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1aW50MzJf
dCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU2hh
ZGVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgSXNUZXh0dXJlKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgTGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgdm9pZCBMaW5rUHJv
Z3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgUGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUs
IGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxv
YXQgdW5pdHMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHZv
aWQgU2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQpCisgICAgdm9pZCBTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nIGFyZzEp
CisgICAgdm9pZCBTdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMy
X3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWlu
dDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2ls
TWFzayh1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJf
dCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQzMl90IGZhaWws
IHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFN0ZW5jaWxPcFNlcGFy
YXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJf
dCB6cGFzcykKKyAgICB2b2lkIFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBVbmlmb3JtMWYo
aW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB2b2lkIFVuaWZvcm0xZnYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0x
aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgdm9pZCBVbmlmb3JtMWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVu
aWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVW5p
Zm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQor
ICAgIHZvaWQgVW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5
KQorICAgIHZvaWQgVW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0zZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zaShp
bnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZv
aWQgVW5pZm9ybTNpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFVuaWZvcm00ZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm00aShp
bnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90
IHcpCisgICAgdm9pZCBVbmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQor
ICAgIHZvaWQgVW5pZm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVbmlmb3JtTWF0
cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAg
ICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmVydGV4QXR0
cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIxZnYo
dWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZhbHVlcykKKyAg
ICB2b2lkIFZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQor
ICAgIHZvaWQgVmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCAyPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBp
bmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNm
dih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4gdmFsdWVzKQor
ICAgIHZvaWQgVmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlw
ZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHZvaWQgVmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0LCB1aW50NjRf
dCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlckRhdGExKHVpbnQzMl90IHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhLCB1aW50MzJfdCB1c2FnZSkK
KyAgICB2b2lkIEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIFJlYWRuUGl4ZWxz
MChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZWFk
blBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRl
eFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENv
bXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VT
aXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwg
aW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJ
bnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRp
dmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBDcmVhdGVW
ZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIERlbGV0ZVZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFy
cmF5KHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5QnVmZmVy
U3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0
X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAg
dm9pZCBHZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1
aW50NjRfdCBkYXRhU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQz
Ml90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBp
bnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNr
LCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMy
X3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgdm9pZCBJbnZhbGlkYXRlRnJhbWVidWZmZXIo
dWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50
cykKKyAgICB2b2lkIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBSZWFkQnVmZmVy
KHVpbnQzMl90IHNyYykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTJEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UzRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgdm9pZCBUZXhJ
bWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQz
Ml90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlM0QxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJf
dCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1
YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFn
ZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCkKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNp
emUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNz
ZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3Qg
Zm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVp
bnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIEdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybTF1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB2b2lkIFVuaWZvcm0ydWkoaW50MzJf
dCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHZvaWQgVW5pZm9ybTN1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYy
KQorICAgIHZvaWQgVW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWlu
dDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB2b2lkIFVuaWZvcm0xdWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm00dWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0
cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEp
CisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3Jt
TWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgzZnYoaW50MzJf
dCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRh
dGEpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0
aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4gdmFsdWVz
KQorICAgIHZvaWQgVmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwg
dWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJp
Ykk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiB2
YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50
MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgRHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3Rh
cnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgRHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gYnVmcykKKyAgICB2b2lkIENsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90
IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVzKQorICAgIHZv
aWQgQ2xlYXJCdWZmZXJ1aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVy
ZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAg
dm9pZCBDcmVhdGVRdWVyeSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIERlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgSXNRdWVyeSh1
aW50MzJfdCBxdWVyeSkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBCZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBF
bmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFt
ZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRl
U2FtcGxlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IERlbGV0ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIElzU2FtcGxlcih1aW50
MzJfdCBzYW1wbGVyKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEJpbmRTYW1wbGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBT
YW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJf
dCBwYXJhbSkKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVp
bnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJm
KHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1w
bGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBGZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncykg
LT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTeW5jKHVp
bnQ2NF90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
RGVsZXRlU3luYyh1aW50NjRfdCBhcmcwKQorICAgIHZvaWQgQ2xpZW50V2FpdFN5bmModWludDY0
X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAs
IHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgdm9pZCBHZXRTeW5jaSh1aW50
NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KHVpbnQzMl90IGlkKQorICAgIHZvaWQgSXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJhbnNmb3Jt
RmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJlZ2luVHJh
bnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVuZFRyYW5z
Zm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMy
X3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUp
CisgICAgdm9pZCBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3JhbSwg
dWludDMyX3QgaW5kZXgpIC0+IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
byBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisg
ICAgdm9pZCBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBCaW5kQnVmZmVyQmFz
ZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAg
dm9pZCBCaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBH
ZXRVbmlmb3JtSW5kaWNlcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB1bmlmb3Jt
TmFtZXMpIC0+IChWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90
PiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUpIC0+IChWZWN0b3I8aW50MzJfdD4gcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50
MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZv
cm1CbG9ja0JpbmRpbmcpCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFt
cykgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAo
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMy
X3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGlu
dDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+
IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5
T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdy
b3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQor
ICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVm
cykKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9p
ZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlz
b3IpCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmZmU4YzFmYzdhZmExNzJmMWJiOWM3MzQy
Njc1YzVkZmU2ZTE3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApA
QCAtMCwwICsxLDExODMgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIHNob3VsZCBi
ZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisgICAgdm9pZCBzZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpOworICAgIH0KKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9y
KHVpbnQzMl90IGVycm9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihlcnJvcik7CisgICAgfQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBhY3RpdmVU
ZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmFjdGl2
ZVRleHR1cmUodGV4dHVyZSk7CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hhZGVyKHVpbnQzMl90
IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YXR0
YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgfQorICAgIHZvaWQgYmluZEF0dHJpYkxv
Y2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcmJiBuYW1lKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5h
bWUpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYXJn
MSk7CisgICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRh
cmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4dHVyZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRDb2xvcihmbG9h
dCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAg
fQorICAgIHZvaWQgYmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1
YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2Rl
QWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50
MzJfdCBkZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmMoc2ZhY3Rv
ciwgZGZhY3Rvcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qg
c3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RB
bHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdC
LCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckNvbG9y
KGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsK
KyAgICB9CisgICAgdm9pZCBjbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN0ZW5j
aWwoaW50MzJfdCBzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwocyk7
CisgICAgfQorICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJs
dWUsIGJvb2wgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGdyZWVu
KSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4oYWxwaGEpKTsKKyAgICB9CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgY29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdl
MkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
QnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVGcmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFkZXIodWludDMyX3Qg
YXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKGFyZzApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlVGV4dHVyZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBj
dWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jdWxsRmFj
ZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2
b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVBy
b2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJv
Z3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodWludDMyX3Qg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKGFyZzAp
OworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVUZXh0dXJlKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1aW50MzJfdCBmdW5j
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CisgICAgfQorICAg
IHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVw
dGhNYXNrKHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAgfQorICAgIHZvaWQg
ZGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0YWNoU2hh
ZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRldGFjaFNoYWRlcihhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlKHVp
bnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOworICAg
IH0KKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsK
KyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3Qs
IGludDMyX3QgY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9k
ZSwgZmlyc3QsIGNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHModWludDMyX3Qg
bW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0
YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGVuYWJsZSh1
aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOworICAg
IH0KKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7Cisg
ICAgfQorICAgIHZvaWQgZmluaXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZmluaXNo
KCk7CisgICAgfQorICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5m
bHVzaCgpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0
LCB1aW50MzJfdCBhcmczKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyk7
CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGlu
dDMyX3QgbGV2ZWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7CisgICAgfQor
ICAgIHZvaWQgZnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmZyb250RmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1aW50
MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRh
cmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBp
bmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1l
dGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmcodWludDMyX3QgbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGbG9hdHYo
dWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90
Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZh
bHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2
YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGlu
dCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdl
dEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2
NChwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1aW50MzJfdCBw
bmFtZSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHBu
YW1lLCBpbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0
X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbWkodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJv
Z3JhbSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVl
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMYm9vbGVhbiwg
ND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9j
b250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KHZh
bHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEVycm9yKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRFcnJvcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHBu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFNoYWRlcmkoYXJnMCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xvZyh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJnMCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWludDMyX3Qg
cHJlY2lzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3QsIDI+LCBpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIHN0ZDo6YXJyYXk8R0NHTGludCwgMj4gcmFuZ2UgeyB9OworICAgICAgICBHQ0dMaW50IHBy
ZWNpc2lvbiA9IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+KHJlaW50
ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNpemUoKSksIHByZWNp
c2lvbik7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKGFyZzApOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFy
YW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xm
bG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1l
dGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQz
Ml90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4o
dmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYodWludDMyX3QgcHJv
Z3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0
PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odmFs
dWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybXVp
dih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50LCA0PiB2
YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRl
eHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDx1aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFZlcnRl
eEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTHNpemVpcHRyIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAgfQorICAgIHZv
aWQgaXNCdWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNCdWZmZXIoYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNhcCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+aXNFbmFibGVkKGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNGcmFtZWJ1ZmZl
cih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGFyZzApOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5pc1Byb2dyYW0oYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19j
YXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNSZW5kZXJidWZmZXIo
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIoYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgaXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xi
b29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+aXNTaGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJlKHVpbnQzMl90
IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBsaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGlu
ZVdpZHRoKGFyZzApOworICAgIH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIHBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAgIH0KKyAg
ICB2b2lkIHBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKKyAgICB9Cisg
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGZsb2F0IHZh
bHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlQ292ZXJh
Z2UodmFsdWUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsKKyAgICB9CisgICAg
dm9pZCBzY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3Ry
aW5nJiYgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFyZzAs
IGFyZzEpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMy
X3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2ls
RnVuYyhmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJh
dGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1h
c2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwg
ZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFzayh1aW50MzJfdCBt
YXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsKKyAgICB9
CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1h
c2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwg
bWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90
IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNp
bE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJh
dGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90
IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNl
LCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmYodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0K
KyAgICB2b2lkIHRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwg
aW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmKGludDMyX3Qg
bG9jYXRpb24sIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihs
b2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0x
aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZs
b2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbiwgeCwg
eSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm0yZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xm
bG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmko
aW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYg
dikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNm
KGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2KGludDMyX3Qg
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24s
IHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0
IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwg
eiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm00ZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
NGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50
MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgs
IHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm00aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9z
ZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVl
LmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgz
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGludDMyX3Qg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZh
bHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZhbGlk
YXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52YWxp
ZGF0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYodWludDMy
X3QgaW5kZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YjFmKGluZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodWludDMyX3Qg
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0
IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5
KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQg
dmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHop
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6
KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQg
dmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4
LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3Qg
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBz
aXplLCB1aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50
ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihub3JtYWxpemVk
KSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCB2aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRo
LCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwg
dWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJ1ZmZlckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzEpLCB1c2Fn
ZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpLCB1c2Fn
ZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2
NF90IG9mZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dM
aW50cHRyPihvZmZzZXQpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFk
blBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRh
KHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5y
ZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCByZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZz
ZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
aW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3Vi
SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQs
IGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90
IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBp
eGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSks
IHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9Cisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxH
Q0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50
MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGlu
dDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5z
dGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMy
X3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2
b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3Ip
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRp
dmlzb3IpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShh
cmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmlu
ZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1
aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9m
ZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0
cj4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zm
c2V0LCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVi
dWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJf
dCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50
MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5ibGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEs
IGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2
b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0
YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0KKyAgICB2b2lkIGlu
dmFsaWRhdGVGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+JiYgYXR0YWNobWVudHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFs
aWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xlbnVtKj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cywgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSks
IGF0dGFjaG1lbnRzLnNpemUoKSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2
b2lkIHJlYWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5y
ZWFkQnVmZmVyKHNyYyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9y
YWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50ZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVs
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5k
YXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDEodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0Qw
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90
IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlM0Qo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3Qg
eW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhT
dWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3Jk
ZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGlt
YWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJf
dCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0
LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lk
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
eG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qg
aW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nh
c3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhZ0RhdGFMb2Nh
dGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpKGludDMyX3QgbG9j
YXRpb24sIHVpbnQzMl90IHYwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVp
KGxvY2F0aW9uLCB2MCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQzMl90IGxvY2F0
aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEs
IHYyKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQz
Ml90IHYwLCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtMXVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbiwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aXYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtNHVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRy
YW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRh
KCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdmVy
dGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0
aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdih1
aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiYmIHZhbHVlcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdD
R0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRhKCkp
KSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90
IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdS
YW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQs
IGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291
bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIGRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7Cisg
ICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJh
d2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSwg
dmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KHVpbnQzMl90
IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVm
ZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dWludCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
Y2xlYXJCdWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90
IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3Rl
bmNpbCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9y
bUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAgfQorICAgIHZvaWQg
aXNRdWVyeSh1aW50MzJfdCBxdWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNRdWVyeShxdWVyeSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwgcXVl
cnkpOworICAgIH0KKyAgICB2b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRR
dWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRm
b3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWkodWludDMy
X3QgcXVlcnksIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1aW50IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnlPYmpl
Y3R1aShxdWVyeSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jcmVhdGVTYW1wbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgfQor
ICAgIHZvaWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
U2FtcGxlcihzYW1wbGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8
Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcih1aW50MzJf
dCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5k
U2FtcGxlcih1bml0LCBzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
aSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBh
cmFtKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVy
LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZmVu
Y2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTHN5bmMgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5mZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihyZXR1
cm5WYWx1ZSkpKTsKKyAgICB9CisgICAgdm9pZCBpc1N5bmModWludDY0X3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+aXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0
PGludHB0cl90PihhcmcwKSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5bmModWludDY0
X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3luYyhyZWludGVycHJl
dF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBjbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWlu
dDY0X3QgdGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRTeW5jKHJlaW50ZXJw
cmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBz
dGF0aWNfY2FzdDxHQ0dMdWludDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1aW50NjRfdCBhcmcw
LCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT53YWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0aW1lb3V0KSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRl
bGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgfQorICAgIHZvaWQgaXNUcmFu
c2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUcmFuc2Zvcm1G
ZWVkYmFjayhpZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblRy
YW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7CisgICAgfQor
ICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2YXJ5aW5ncywg
dWludDMyX3QgYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4
LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcmcyKSk7CisgICAg
fQorICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCByZXN1bWVU
cmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlc3VtZVRyYW5z
Zm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOworICAgIH0K
KyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZl
ciwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVp
cHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGljZXModWludDMyX3Qg
cHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPHVpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFt
ZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9y
PHVpbnQzMl90PiYmIHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3Qg
cHJvZ3JhbSwgU3RyaW5nJiYgdW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJ
bmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMy
X3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1C
bG9ja0JpbmRpbmcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRp
bmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAg
IH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1z
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0
PiBwYXJhbXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5k
ZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRh
KCkpLCBwYXJhbXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAg
ICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90
IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQz
Ml90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1
aW50MzJfdCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5ibGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAs
IGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5
T0VTKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VT
KGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlP
RVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2Vy
RVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3Jv
dXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5wb3BHcm91cE1hcmtlckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhU
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2Rl
LCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWlu
dDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zmc2V0KSwg
cHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWlu
dDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3Ip
OworICAgIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU3YzQwYzk4NWNiN2QyNzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFBM
QVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4K
KyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0OworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpIGZpbmFsOworCisgICAgLy8gR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgorICAgIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgZmluYWw7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgZmluYWw7Cisg
ICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgZmluYWw7Citwcml2YXRlOgorICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOworfTsKKwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGF0dHJpYnV0
ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkKK3sKK30K
KworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpyZWN5Y2xlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gV1RGTW92
ZShtX2Rpc3BsYXlCdWZmZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fZGlzcGxheUJ1ZmZl
ci5zdXJmYWNlKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Cit9CisK
K3ZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRldGFjaENsaWVudCgpCit7Cisg
ICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9kaXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3Bs
YXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOworICAg
IGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOwor
ICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIGlmIChkaXNwbGF5QnVmZmVyKQorICAg
ICAgICBzZW5kUmlnaHQgPSBkaXNwbGF5QnVmZmVyLT5jcmVhdGVTZW5kUmlnaHQoKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCkpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1t
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCmluZGV4IGI3
YmI2M2IyOWFkODAyMTcyZGYyN2ExMjg5NWJiMTk5OGZhNGI2YjAuLjI0YzQzN2NhYWU3ZjhmOWE5
YWZmOTI3MDNlZmNmOWRhMDMxZTRjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWFjL0dQVVByb2Nlc3NNYWMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIlNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQ
SS5oPgotI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lz
ZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsOSArNDQsMTIgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB2b2lkIEdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGls
aWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIDAKICAgICAvLyBIYXZpbmcgYSB3aW5k
b3cgc2VydmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNzIHdvdWxkIHJlc3VsdCBpbiBzcGlu
IGxvZ3MgKDxyZGFyOi8vcHJvYmxlbS8xMzIzOTExOT4pLgotICAgIE9TU3RhdHVzIGVycm9yID0g
U2V0QXBwbGljYXRpb25Jc0RhZW1vbih0cnVlKTsKLSAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBl
cnJvciA9PSBub0Vycik7CisgICAgYXV0byByZXR2YWwgPSBDR1NTZXREZW55V2luZG93U2VydmVy
Q29ubmVjdGlvbnModHJ1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmV0dmFsID09IGtDR0Vycm9y
U3VjY2Vzcyk7CisgICAgQ0dTU2h1dGRvd25TZXJ2ZXJDb25uZWN0aW9ucygpOworI2VuZGlmCiAj
ZW5kaWYKIAogICAgIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vz
cy5zYi5pbgppbmRleCBkYjA2ZTUzNGY3ZjUxZDJlYmQwMzgyNWY1ODI0NWY4NDk2ZjhiMTc5Li5l
ZDEwMGIzNmVkNmY0NmQ0YWFmNjM1NDQ3Nzg4MmFiNzkzYTExYmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BV
UHJvY2Vzcy5zYi5pbgpAQCAtMjA3LDYgKzIwNyw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXkFBUEwsKERpc3BsYXlQaXBlfE9wZW5DTGRpc2FibGVkfElPR3JhcGhpY3NfTEVSKHxf
UmVnVGFnXzF8X1JlZ1RhZ18wfF9CdXN5XzIpfGFsaWFzLXBvbGljeXxib290LWRpc3BsYXl8ZGlz
cGxheS1hbGlhc3xtdXgtc3dpdGNoLXN0YXRlfG5kcnYtZGV2fHByaW1hcnktZGlzcGxheXxzbG90
LW5hbWUpIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeQVRZLChjYml0c3xmYl8obGlu
ZWJ5dGVzfG9mZnNldHxzaXplKXxpbnRyZXYpIikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxE
ZXZpY2VOYW1lIikgOzsgTmVlZGVkIGJ5IE1ldGFsIGNvbXBpbGVycworICAgIChpb2tpdC1wcm9w
ZXJ0eSAiQVRZLEVGSURpc3BsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEZhbWlseU5h
bWUiKSA7OyBEaXR0bwogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVZDU3VwcG9ydGVkIikKICAgICAo
aW9raXQtcHJvcGVydHkgIkJhY2tsaWdodEhhbmRsZSIpCkBAIC0yMTcsNiArMjE4LDkgQEAKICAg
ICAoaW9raXQtcHJvcGVydHkgIkNhcHNMb2NrRGVsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
Q2FzZVNlbnNpdGl2ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJDb25maWdTdGF0ZSIpCisgICAg
KGlva2l0LXByb3BlcnR5ICJEUExhbmVzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua0Jp
dCIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtSYXRlIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIkRlc2NyaXB0aW9uIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRldmVsb3BtZW50IikKICAg
ICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeRGV2aWNlKCBDaGFyYWN0ZXJpc3RpY3N8RXFJRCki
KQpAQCAtMjI5LDEwICsyMzMsMTcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIkZhbWlseSBJRCIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JjZVN1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJGb3JtYXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVyRW5hYmxlZCIp
CisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlclN0YXJ0ZWQiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiR1BVQ29uZmlndXJhdGlvblZhcmlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkg
IkdQVURDQ0Rpc3BsYXlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURlYnVnTnVsbENs
aWVudE1hc2siKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR3B1RGVidWdQb2xpY3kiKQorICAgIChp
b2tpdC1wcm9wZXJ0eSAiR1BVUmF3Q291bnRlckJ1bmRsZU5hbWUiKQorICAgIChpb2tpdC1wcm9w
ZXJ0eSAiR1BVUmF3Q291bnRlclBsdWdpbkNsYXNzTmFtZSIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJIRVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkhJRFBvaW50ZXJBY2NlbGVy
YXRpb25UeXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkh3Q3R4Q2FjaGVVcGRhdGUiKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0FjY2VsKERpc3BsYXlQaXBlQ2FwYWJpbGl0aWVz
fEluZGV4fFR5cGVzfFJldmlzaW9uKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklP
KENsYXNzfE1hdGNoQ2F0ZWdvcnl8TmFtZU1hdGNoKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXklPQXVkaW9Db250cm9sKENoYW5uZWxJRHxJRHxTdWJUeXBlfFVzYWdlfFZhbHVlKSIp
CkBAIC0yODIsNiArMjkzLDggQEAKICAgICAoaW9raXQtcHJvcGVydHkgIklPUGFyZW50TWF0Y2gi
KQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT1BDSSgoQ2xhc3N8UHJpbWFyeXxQcm9w
ZXJ0eXwpTWF0Y2h8RXhwcmVzcyhDYXBhYmlsaXRpZXN8TGluayhTdGF0dXN8Q2FwYWJpbGl0aWVz
KSl8TVNJTW9kZXxSZXNvdXJjZWR8VHVubmVsbGVkKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJ
T1BNSXNQb3dlck1hbmFnZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QZXJzb25hbGl0eVB1
Ymxpc2hlciIpCisKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9QbGF0Zm9ybShTZXJp
YWxOdW1iZXJ8VVVJRCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qb3dlck1hbmFnZW1lbnQi
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qcm9iZVNjb3JlIikKQEAgLTMxNyw2ICszMzAsNyBA
QAogICAgIChpb2tpdC1wcm9wZXJ0eSAiUHJvdG9jb2wgQ2hhcmFjdGVyaXN0aWNzIikKICAgICAo
aW9raXQtcHJvcGVydHkgIlJlbW92YWJsZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMi
XlJlc2V0T24oTG9ja3xVbmxvY2spTXMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiU1dJUF9wcm9w
ZXJ0aWVzIikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhZmVFamVjdFJlcXVlc3RlZCIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJTYW1wbGVSYXRlcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTZXJp
YWwgTnVtYmVyIikKQEAgLTMzOCw2ICszNTIsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXR0
YWNoZWQtZ3B1LWNvbnRyb2wtcGF0aCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXmF1
ZGlvLShjb2RlYy1pbmZvfGRldmljZS1tdmFsdWV8ZGV2aWNlLW52YWx1ZXxzZWxlY3RvcikiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiYXYtc2lnbmFsLXR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiYmFja2xpZ2h0LVBXTS1mcmVxIikKICAgICAoaW9raXQtcHJvcGVydHkgImJjZFZlcnNpb24i
KQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oYm9hcmR8ZGV2aWNlfHJldmlzaW9ufHN1
YnN5c3RlbXx2ZW5kb3IpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImJvb3QtZ2FtbWEtcmVz
dG9yZWQiKQpAQCAtMzUwLDYgKzM2NSwxMSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiY29ubmVj
dG9yLXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oZGV2aWNlfHJldmlzaW9u
fHN1YnN5c3RlbS12ZW5kb3J8dG91Y2gtc2l6ZSktaWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
ZGV2aWNlX3R5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1icGMiKQorICAgIChp
b2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1jb25uZWN0LWZsYWdzIikKKyAgICAoaW9raXQtcHJvcGVy
dHkgImRpc3BsYXktbGluay1jb21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJk
aXNwbGF5LXBpeGVsLWNvbXBvbmVudC1iaXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3Bs
YXktdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJkcG0iKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiZXJyb3JkYiIpIDs7IE5lZWRlZCBmb3IgT3BlbkdMIG9uIG9sZGVyIGhhcmR3YXJlCiAgICAg
KGlva2l0LXByb3BlcnR5ICJmaWxldmF1bHQtaW1hZ2UiKSA7OyBOZWVkZWQgYnkgTGF1bmNoU2Vy
dmljZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCmluZGV4IGU2YTE4ZGRhNmUwOTJmZGIxODA0NDZlNGYz
YTA4M2NmNTNjMjc2MTkuLjM3OTI4ZTFiODNkNGU1MjQ0NTNhOGQyN2NjM2I4NzkwMWIyNDlhM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgVVNFKEFVRElPX1NFU1NJT04pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90
ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1Qcm94eS5jcHAKaW5kZXggZDliZjUyMjcyYzM3MjkxNTc1YjViMzkzMjYyZTc3MjEzYjkz
MGRkNC4uOGYwMTE5ZWRmZTFkNmU5MzI0MzAwNWIzNDQxMjViMjRlYWI5MWUzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyUHJveHkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTliZGI4Njdh
Yjg2YjhjNTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVkNjZkZGY5
NWYyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMZWdhY3lD
RE1Qcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcwZmE1ZGU0
ZmFkZTE1MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4Yjgy
NWM2ZTQ1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4MDIzMTkwNGY4ZWYwZWFhOTM2
MjI5YWZhOTc1OTguLmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4OWI4MDNmNmFiZjQxYzhlOWVk
ZGU0MTQyNzY5MzI4MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1YWEzZDU0ODA2ZjcyYzdlZGMw
Y2IxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywxNSArMjcsMTYgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDU5NjhjN2JiZDE4OWNkNDc5ZWY0YWVhYjRkNDQ5OTUz
M2ZkM2Q2NWIuLmZlNTQ0ZDU1NTE5MWU1NTZlMmQ3ZTIzMzk0NzVhMDJmYzI5ZGNmZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291
cmNlUHJveHkuaApAQCAtMzksNyArMzksNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggNmI4YmY4YjU3Y2MwYzhkOWQ1NDEx
ZTk2NTIxYjQ1YTk0YThlM2IzMi4uOTljYTZhNDE0ZWI1MDgzOTBjNzI4MzNhNjQ1MWU3MzAzOTQy
MWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50
aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KQEAgLTM4LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKaW5kZXggMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYxODNh
YmQwZTc0NWI4MzUzMy4uODQzYmIwNmY3YjU2YzZlM2NmYmVlNzlhN2U0MjgxZWZlZThmOWE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkuaApAQCAtMjgsMTQgKzI4LDE1IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2Rl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmOGFiYzFmNDA1
ZmMxNDY5NDc1YjRkOTBiYWQzZDUzY2EwZjgwMTRlLi42MWM0NzA4YWU5NmRiY2FhNTY5ODA5ZWUx
OTk1YmU4MTZhOTFmZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lm
IFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0
ICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDc4OGM1ZjAw
YzAyZjRmMTQ4ZmVlY2NkMzhkMTA2ODE4YjBkN2U5NjEuLjNhYjRlNGIxY2YxYzE0MTIzMGMxM2U0
NTc2YzVlZDZlNmVmYzJlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtMzYsNyAr
MzcsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVBy
b3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQppbmRleCA3
YTYzMzYzNDdjMDA3ZTk3YjczYjU0Mzc3NDkxNjgzOGQ2NDAzN2RhLi4xYWE1M2NjMmZiNzdiYWY5
ZTMyNjUwNzIxMDgwOWZkNzZjZmJiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtMjYsNyAr
MjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuaCIKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNz
LmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBmNmVkODExZjUzNDJmZTQ4
NTU1MTc2Zjg5ZDUxNDU3NTYyYzY2NTg1Li4wYmNkNTY3M2M5MzQ2YWRhMTFkNjU2YzNhZGQ1MWJl
NGVkYmMyNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50LmgiCkBAIC0zOSwxMCArNDAsNiBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3Vy
YXRpb247CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfSAvLyBuYW1lc3BhY2UgSVBDCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CkBAIC0xMTIsNCArMTA5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZC5jcHAKaW5kZXggZGRiZTRlZWRkNDQxZGY4N2M1NWFkMzMwZjA0MmNjZGNmYWRmYjkw
Yi4uNjUxZmYyNTRmOTA1YzE2YTkwY2I0ODJjOTc3M2Q0YWM3NDI5NGVjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
TWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlmZGVj
MzY5MDE3NzI3NC4uOTNmMDNhODI1NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBAIE9C
SkNfQ0xBU1MgTlNQcm9ncmVzczsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNr
OwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFz
cyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0
MGYyN2MxNjA1YzNjZDc0YmM2OTA3YjdkOTFiNDdiNzYyLi43MjZkZDk5MGJhZmQ0Mzk0YjVhZmMw
MzJhMWNmMjBmMTg0OWM0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKIAot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xv
YWQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYx
YzcyNjc4ZmE1MC4uOTgwYTA2Zjc4MzlkYmQ1ZTlmOWQ1MDQ1NDA5YTMzZDc3YjFjMDM4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUg
IkRvd25sb2FkTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC00OSw3ICs1
MCw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmNwcAppbmRleCA0NDliMTNkOGUwN2IyY2QwNDJjNGJhMzYzNmFiNzkzZDM3YjFjM2Y0
Li5jNzc4ODgxMWYwMzJkNThmOGI1Mjc3MzZlMWQyMjc4NDEwZjkxM2E5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApA
QCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtT
b2NrZXRDaGFubmVsLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMzE5NjQxOTBkMTQx
ZDU0OWRhMGJhZjJkYzhiZjI5N2I0ZTU4MWU4OS4uMDQzNGJmODgwOWE3ZWIzZWNjMThlOGY2NTBj
YzAyNzhhZTZlYjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5o
PgpAQCAtNDAsNyArNDEsNiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA1YjQ4OWNjNTM4ZjdjMDcx
NTEwMTA2YzU4ZjVjMDk0ZWM5YThlMWI4Li40OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2Nj
MzNlMzhjMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNTJlYzM5MjY5MDIxOGVkZTY2
OGQ1NWU2MzhkOGUxNzUwMmZkNmVlNS4uNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5
ZmIyMDZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtRXJy
b3IuaD4KQEAgLTM3LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlv
bjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2Ni
ZmYxMDg5Y2MxMDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLmQzN2Q3ODA2OTgzYmJhNTQ3Y2Ew
ZjkyMzVlYjRiZjZiNzMxNTY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CkBAIC00Myw3ICs0NCw2IEBA
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURh
dGFSZWZlcmVuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0
VGFzay5oCmluZGV4IGRiNTc5NWRkMjE3ZjQ1YWQ1ZjY3ZTMwYjc5MWY5MmUyNzZjMDI5ODYuLjk2
MWU0NjQ1OWJlNzcxNzdlMjYwNWU3ZDg2NTJhZGE4MDIwOTdiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0zMSw5ICszMSw2IEBACiAjaW5j
bHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIKICNlbHNlCiAKLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKLX0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5o
CmluZGV4IGRhYzY5MzUwN2ViM2VmY2VhNmQxMDk0ODAxYmMwMWIzNmZlMjYzOWQuLmU2ODI2ZTQ3
ZTgzOTU5NDAyOGFmOGY0YWVkMjM5MmI0YjA1ZDJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtMjcs
MTUgKzI3LDEyIEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uV2ViU29ja2V0VGFz
azsKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1Nlc3Npb25D
b2NvYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2Vi
U29ja2V0VGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9X
ZWJTb2NrZXRUYXNrQ29jb2EubW0KaW5kZXggODU1MzQ4NzQ0MDRjZTJiYWE0NGFlNjU2NTQ3ZDM3
MjI1MzMyZWFiOC4uOTBiYzQwOWJmZmI3MGEwZWU5ZTczNThiMzg2NzU5N2QyOWYyNGUwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNr
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9O
X1dFQlNPQ0tFVCkKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTmV0d29y
a1Nlc3Npb25Db2NvYS5oIgogI2ltcG9ydCAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbXBv
cnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0NWZjNjY5
ZDc2NmE3NjFjNWQ3NzNkYzk1ZjA1NDFhMzhlMzZmOGUzLi5hM2U3MDE0YjVkOGVjMDk3MzhmZmE3
ZDU2NjQ1NDUwMTBmMDUzNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJz
ZXJzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJT
b2NrZXRUYXNrU291cC5oCmluZGV4IGU0MjFiOWUxYzcxMzE4NDM0ZjY0ODdmNWZjYjVhNmE4N2Jk
NzM5MTkuLjA4ODkyMzk1OWZlNDYwZmYyYmJhNGM4YzA4Mzk5ODA2NTdiZjM0OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291
cC5oCkBAIC0yNSwxNCArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBO
ZXR3b3JrU29ja2V0Q2hhbm5lbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggZTAwYTBjY2RmYTU4NzVjMDI4YzUwNTIzMTE0MTcyOGVlOTViNDM5
Mi4uZTM4YmMxYzYwYWY2ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01
Myw2ICs1NCw0OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1lbnRD
b2RlciB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4geworICAgIHVz
aW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNl
VHlwZSYgYXJyYXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJy
YXlSZWZlcmVuY2Uuc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9CisgICAg
c3RhdGljIE9wdGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybiBBcnJh
eVJlZmVyZW5jZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIu
ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQp
KTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0
IFQqPihkYXRhKSwgRXh0ZW50KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFt
aWNFeHRlbnQ+PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVu
Y2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVy
ZW5jZSkKKyAgICB7CisgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihhcnJheVJlZmVyZW5jZS5zaXplKCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5z
aXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNl
LmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7
CisgICAgfQorICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIGlmICghc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5j
ZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAg
IGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSks
IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNl
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZDMyYmI0NTdhNWI4ODVmM2Q1NjY4N2U3OWYxNWMzYTI2NzFiZTY0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2Uu
aApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQQyB7CisK
K2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgRXh0ZW50ID0gYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xhc3MgQXJy
YXlSZWZlcmVuY2U7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlSZWZlcmVu
Y2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAgQXJyYXlS
ZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBtX3NpemUo
c2l6ZSkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2
ZWN0b3IpCisgICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwgbV9zaXpl
KHZlY3Rvci5zaXplKCkpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX3NpemU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9CisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBt
X2RhdGE7CisgICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAg
ICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9z
aXplKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBj
b25zdCBUKiBtX2RhdGEgeyB9OworICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZSB7Citw
dWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVy
ZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkK
KyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAg
IH0KKworICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZl
cmVuY2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6
IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5zaXpl
KCkgPT0gRXh0ZW50KTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIUV4dGVudDsgfQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gRXh0ZW50OyB9CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7
CisgICAgICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29u
c3QKKyAgICB7CisgICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNFbXB0
eSgpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7
IH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitB
cnJheVJlZmVyZW5jZShjb25zdCBXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBB
cnJheVJlZmVyZW5jZTxUPjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggZWMzZDE0YWU4ZjNlYzI0NzA1NDc2M2NhZWU5MDlj
YzJjODc1ZjVkOC4uYmJkN2FiY2I0Y2RjNjA0MzgyYjEwNjVlMzMyMzg0NDljNmFjNTk3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjI3LDEwICsyMjcsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZh
bGlkKCk7CiAKICAgICB2b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3Jr
UXVldWUoKTsKLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2Vu
ZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQgPSAwLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOyAvLyBU
aHJlYWQtc2FmZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3Nh
Z2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0
aW9ucyA9IHsgfSk7IC8vIFRocmVhZC1zYWZlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCks
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFp
biB0aHJlYWQgb25seS4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGNoZWNrIHRoZSBTZW5k
U3luY1Jlc3VsdCBmb3IgdHJ1ZS9mYWxzZSBpbiBjYXNlIHRoZXkgbmVlZCB0byBrbm93IGlmIHRo
ZSByZXN1bHQgd2FzIHJlYWxseSByZWNlaXZlZC4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxk
IGhvbGQgb24gdG8gdGhlIFNlbmRTeW5jUmVzdWx0IGluIGNhc2UgdGhleSByZWZlcmVuY2UgdGhl
IGNvbnRlbnRzIG9mIHRoZSByZXBseSB2aWEgRGF0YVJlZmVyZXJlbmNlIC8gQXJyYXlSZWZlcmVu
Y2UuCisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj47
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRG
b3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAg
ICAKICAgICAvLyBUaHJlYWQtc2FmZS4KQEAgLTI0OSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiBy
ZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlv
bklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVy
biBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTU1
MSw3ICs1NTMsNyBAQCB2b2lkIG1vdmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYgYSwgc3RkOjp0
dXBsZTxCLi4uPiYgYikKICAgICBUdXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3RkOjp0dXBsZTxB
Li4uPiwgc3RkOjp0dXBsZTxCLi4uPj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5bmNN
ZXNzYWdlRXhwZWN0ZWQpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTU3MCwxNSArNTcyLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlv
bjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICAvLyBOb3cg
c2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQs
IFdURk1vdmUoZW5jb2RlciksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgaWYgKCFy
ZXBseURlY29kZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIC8vIERlY29kZSB0aGUgcmVwbHkuCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVw
bHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlB
cmd1bWVudHM7CiAgICAgaWYgKCFyZXBseUFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4geyB9OwogICAgIG1vdmVUdXBsZShXVEZNb3ZlKCpyZXBseUFyZ3Vt
ZW50cyksIHJlcGx5KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gcmVwbHlEZWNvZGVy
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjI1ZmRhN2JlZDJmZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgotCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLQot
bmFtZXNwYWNlIElQQyB7Ci0KLXZvaWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJh
eSgqdGhpcyk7Ci19Ci0KLWJvb2wgRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIu
ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0
YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5o
CmluZGV4IDM0NTBjMzFiNzNkZGI2YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNkNjky
N2YzNDFjNWFhOTNmYzEwNzNjYjA3NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5o
IgogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0g
ICAgCi1jbGFzcyBEYXRhUmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNlKCkg
PSBkZWZhdWx0OwotCi0gICAgRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAg
IERhdGFSZWZlcmVuY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYgdmVj
dG9yKQotICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6ZSh2
ZWN0b3Iuc2l6ZSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhbV9zaXplOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAgICAg
ICBpZiAoaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBtX2RhdGE7IAotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25z
dAotICAgIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0KLSAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1wcml2
YXRlOgotICAgIGNvbnN0IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3Qg
bV9zaXplIHsgMCB9OwotfTsKK3VzaW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5jZTx1
aW50OF90LCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGViNzMw
NWJmZDE5MTA4NzA2OGQzMGJjZGI4ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJj
NWFiOGJiYWRiZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAg
LTE4NiwyMCArMTg2LDE1IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRlY29k
ZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQogewot
ICAgIHVpbnQ2NF90IHNpemU7Ci0gICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxpZ25t
ZW50LCBzaXplKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50OF90
KiBkYXRhID0gbV9idWZmZXJQb3M7CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAgIGRh
dGFSZWZlcmVuY2UgPSBEYXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBkYXRhOwogfQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1lbnQo
QXR0YWNobWVudCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApp
bmRleCBiNzJkZDhhY2UyNzczZGIzNTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4ODJm
YzkwOTg0YjJmYTU3YmY5YzQ4Yjk2NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCkBAIC00MCw3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogY2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVz
c2FnZUZsYWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAg
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBk
YXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhl
IGRhdGEgcmVmZXJlbmNlIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUg
b2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAgIC8v
IFRoZSBkYXRhIGluIHRoZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlk
IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8g
UmV0dXJucyBudWxscHRyIG9uIGZhaWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0
IHVpbnQ4X3QqIGRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdu
bWVudCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKFQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmNwcAppbmRleCBmZDQwOTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5lODNh
M2U0YWZmNDJhNTc1NTA1ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9FbmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KQEAgLTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6OndyYXBG
b3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9yaWdp
bmFsLT5zZXRTaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShTaG91
bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2RlVmFy
aWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9y
aWdpbmFsLT5idWZmZXJTaXplKCkpKTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9yaWdp
bmFsLT5idWZmZXIoKSwgb3JpZ2luYWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8QXR0
YWNobWVudD4gYXR0YWNobWVudHMgPSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAg
ICAgcmVzZXJ2ZShhdHRhY2htZW50cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2b2lk
IEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSwgc2l6ZV90IGFsaQogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQog
Ci12b2lkIEVuY29kZXI6OmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihkYXRhUmVmZXJlbmNlLnNpemUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2b2lk
IEVuY29kZXI6OmFkZEF0dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAgICAg
bV9hdHRhY2htZW50cy5hcHBlbmQoV1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9FbmNvZGVyLmgKaW5kZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYyNDgy
ZTRjOWExMS4uZWE2MTk2N2JlMWViY2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xh
c3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC02
Miw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPik7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5jb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUg
JiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQgZW5j
b2RlKFQmJiB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmlu
ZGV4IDdmZDE4M2E1NmFlOThiMDY2NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUyYjQ5
ZDVjOGZjNDFhMmQ2NTRhZGNkODllODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCkBAIC05Niw3ICs5Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBl
ZGVmIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7
CiB9OwogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZTsKIHRlbXBsYXRlPD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSY+IHsKICAgICB1c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCA0NmUyMWQ4ZDkzNmYyZDhi
NTE2N2IyNDlmODgxMTE2ZmZlYjdkNGI5Li43NzQ2MWQ1NTViNzI5MmMyMGViZjUxNGEzMDJkMWRj
NmU3NzcwMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
U2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5o
CkBAIC01NCw5ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZDxV
PihtZXNzYWdlLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKICAgICB9
CisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6
aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7
IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOwog
CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6
OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0g
eyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBU
OjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpKTsKIApAQCAtNzIsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFUmJiBtZXNzYWdl
LCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0
IHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJ
ZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6Omlu
ZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPihtZXNz
YWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwg
c2VuZFN5bmNPcHRpb25zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFiODYz
OWI3YmE3NjM2YzYuLjUwMGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyQ29weS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIK
QEAgLTQ4LDcgKzQ5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRh
KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5z
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuY3BwCmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUzMjhm
MDFjOTk5OTUwYTAuLmU5NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXggODUy
ZWY0M2UwMDg2MzFjOWZhZmE4MjMwYzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBlYWZi
M2RjNDdjODVkYTQxOTBhMmJhMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJpbmdSZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA4YjM3NDBmNGIxMDFhZDkwZjUw
ZWQ1N2M4NTBiOTAzMGZjYzQzMGMyLi40YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBm
ZGY3MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TlBPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIk5QUmVtb3RlT2JqZWN0TWFwLmgiCiAjaW5jbHVk
ZSAiTlBSdW50aW1lVXRpbGl0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggYWQ0ZmNkOWQ4Y2NmNDJmMTJlZTQ4
OGUwMTM0NmM2MTlhNzAxYjhkMi4uYzdhNzA1M2NiZDI2ZDIwNDU0YzA0MmM2YWNlMTZjYjUyNTMw
ZjQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLW5hbWVz
cGFjZSBJUEMgewotICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggY2EwYWUyODQxMWE4M2RlNGJmM2ZlMDhiMDEyZTQwNTU0
OGQ4YjU3My4uODlmYjhhYmFmOWFlY2UwN2M2MzQ3MGRhM2RiODNjODgzMjZkZDNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDMsNiArMjAzLDcgQEAg
ZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5kX2Fu
ZF90eXBlcyk6CiAKIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6
CiAgICAgcmV0dXJuIGZyb3plbnNldChbCisgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAog
ICAgICAgICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAn
U3RyaW5nJywKQEAgLTIxNSw2ICsyMTYsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9y
d2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMnLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0y
NDMsNiArMjQ1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQo
KToKICAgICAgICAgJ1dlYktpdDo6RGlzcGxheUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dl
YktpdDo6RG93bmxvYWRJRCcsCiAgICAgICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmll
cicsCisgICAgICAgICdXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6
OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVBy
b3RvY29sSUQnLApAQCAtNTMwLDYgKzUzMyw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJz
KHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3
dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRD
b2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9y
Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0s
CiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1l
bnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBD
OjpBcnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdh
cmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgfQog
CiAgICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9QPHRlbXBsYXRlX25hbWU+Lis/KTwoP1A8cGFyYW1l
dGVyX3N0cmluZz4uKyk+JywgdGVtcGxhdGVfc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SURhdGEuY3BwCmluZGV4IDYxMzQzYmQ5NDEwNmI2ZTc4OWY4M2JjMjVkZTc5ZjdhNjA0MDkzY2Mu
LmM3ODIzMTZmMzA1N2EzY2FmOWQzZTIwNzdjODEzMjU1M2U2OTc1NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJRGF0YS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJBUElEYXRhLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAppbmRleCA3YmEyMDdhYmIwYWNjYzhhNTcwZjVjNjYz
ZjQ2Y2FhMjRhODI2ZDkxLi4zMWZkN2QwM2ZhZmUwMzk1ODc5NTJhNjM3OGQxYTljOGZmMmY3OTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNEYWVtb24o
KTsKICAgICB2b2lkIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwogICAgIHZvaWQgc2V0UU9TKGlu
dCBsYXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFPUyk7CiAjZW5kaWYKQEAgLTE4NCw0ICsxODMs
MyBAQCBzdHJ1Y3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOWMyNmRiNGU5YTlmNmJhNzJlNDgyMGJiNDA2
YzJjZmJkZTExM2U5Yi4uZGEzNzM0Yzg0ZDY1NGQ4ZDAzY2E3OTI1ZjdiZDc1OTkxM2JjMzRhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0zMjIxLDQgKzMyMjEsODIgQEAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+
IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4g
eyBXVEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwg
YXR0cmlidXRlcy5hbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LmFudGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhh
OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2Vi
R0wyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2Rl
ciA8PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29k
ZXIgPDwgYXR0cmlidXRlcy54ckNvbXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0
ZXMuc3RlbmNpbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRB
bHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1h
am9yUGVyZm9ybWFuY2VDYXZlYXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5zaGFyZVJlc291cmNlcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNp
b25zKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclBy
ZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJY
UikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVz
OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBh
Y3RpdmVJbmZvLm5hbWU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5j
b2RlciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5m
by5zaXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZl
SW5mbzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1
NWUyMTFlMTdjNGJlZGVmMTcwNWQ2Li4xZGFlOTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2
ZTlmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtNzEsNiArNzEsMTMgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRl
ICJBcnJheVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYg
KzIxMCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5
UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlczsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3Ry
dWN0IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNvcmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbj4gewogfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4g
ewogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQor
Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TFBvd2VyUHJlZmVyZW5jZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAg
PjsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUw
ODYzNjVkYmY3N2ZhOThlNDFjMWM3NGEzZTdlMjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdi
MDQ4YTNkZWM2Y2Y4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIg
PDwgc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxh
eU1lZGlhSW5HUFVQcm9jZXNzOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNo
b3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91
bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNv
ZGVyOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
c2hvdWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggZDkxZTQ2MDM4ZjMwOWI1MTMwYmZkZTU4ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1
YmY0ZjkyY2YwNmZlNWUxMTIwNWE0YjUxMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZh
c0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVBy
b2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsg
ZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTElu
R1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURl
Y29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFs
c2UgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDliZDhhODE3NTQ5ZjU4ZmUzODNkNzI1
ZGE2NjNmM2JjNTRjYTBkNzQuLjc3ZTliNGQ1Y2M3NTJmYmNkYjZiNjVmOWFkYzI2MDE5NTZjYTE0
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnNDRi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENv
ZGVyc1NvdXAuY3BwCmluZGV4IDFkODRlMmZlMjY4ZjM0NjBlYjI5NzVjNDJiYTk1ZDE0ZjFkMjM1
Y2YuLmZhMjY4ZDU4NGEwZmM4ZGY4N2EyMWZhNDU2MDc3YjhjNWQ0MmI4NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3Vw
LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZv
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENlcnRpZmljYXRlSQogICAgIC8vIEVu
Y29kZSBzdGFydGluZyBmcm9tIHRoZSByb290IGNlcnRpZmljYXRlLgogICAgIGZvciAoc2l6ZV90
IGkgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAg
R0J5dGVBcnJheSogY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdFtpIC0gMV0uZ2V0
KCk7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoSVBDOjpE
YXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKSk7CisgICAg
ICAgIGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0
aWZpY2F0ZS0+bGVuKTsKICAgICB9CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgQ2VydGlmaWNhdGVJbmZvJiBjCiAgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRp
ZmljYXRlOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjaGFpbkxlbmd0aDsgaSsrKSB7
CiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7Ci0g
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjZXJ0aWZp
Y2F0ZURhdGFSZWZlcmVuY2UpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmlj
YXRlRGF0YVJlZmVyZW5jZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
R0J5dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyhjZXJ0
aWZpY2F0ZURhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI3Nyw0ICsyNzcsMyBAQCBPcHRpb25h
bDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+ICBBcmd1bWVudENvZGVyPFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdQogI2VuZGlmCiAKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDkxN2YwMWJl
MWM5ZjhjYWEyYWJmN2YwZjg5MGY4OTVhM2YyZWY4Ni4uZjgzYTRjYWI5NWNhOGYwMTVjODk4NjVk
N2ZmOTMwYWY1MWU1ZjFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIEdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApAQCAtMTM3LDcgKzEzOCw2IEBAIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
IEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwIEBuby11bmlmeQogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwIEBuby11bmlmeQotUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVu
Y2UuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxh
dGZvcm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGlu
Zy5jcHAgQG5vLXVuaWZ5CkBAIC01NjgsNiArNTY4LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0V3JpdGVySGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTY5MywzICs2OTUsNiBAQCBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIu
Y3BwCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CmluZGV4IDRlYThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJk
NmY5NzMuLjcxZmZjNWYyZTA0ZGVkMDVkZThmYWVhMmUwOWEwNDkyNjNhNjkxZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTU2LDYgKzU2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYS5jcHAKIAogR1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2Uv
R1BVU2VydmljZUVudHJ5UG9pbnQubW0KK0dQVVByb2Nlc3MvZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1Mu
bW0KIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCAyZmUzODYyNTk0NjNiZmIz
NjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNkLi43MzdiNjI1ODE5ODY2YTBlY2I1OTlhMjEzMGIzMjkx
M2VhZjM5NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNv
bkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNv
bkxvYWRpbmdDbGllbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotbmFtZXNwYWNlIElQ
QyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3Mg
SWNvbkxvYWRpbmdDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlh
cnlQcm9jZXNzUHJveHkuaAppbmRleCA0ZjM5OGI1MzBmNjA4NTc1Yzk2N2I4M2M3NGZhMmY0MzI4
ZjZjZTNiLi44Y2E5N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4NTYwM2E4YTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTMs
NyArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRs
ZXIoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3Nh
Z2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNl
bmRPcHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBz
ZW5kU3luY09wdGlvbnMgPSB7IH0pOworICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBDOjpD
b25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5k
U3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBD
OjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAogICAgIGVudW0gY2xh
c3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFllcyB9
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CkBAIC02NSw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwg
dGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC0xNjMsMTIgKzE2NCwxMiBAQCBi
b29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgT3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKLWJvb2wg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6
UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpTZW5kU3luY1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRT
eW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5j
TWVzc2FnZUV4cGVjdGVkKTsKIAogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBUcmFjZVNjb3BlIHNjb3BlKFN5
bmNNZXNzYWdlU3RhcnQsIFN5bmNNZXNzYWdlRW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDgyM2MyMDJhODU2YTAx
MzZkZDllYTc1OWYwZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhmNGZiNGY4NzM0ZDdiZmQ2
MDhkMjAzODgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NP
QXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhv
cml6YXRpb25TZXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAotbmFtZXNwYWNlIElQ
QyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIE5hdmlnYXRp
b25TT0F1dGhvcml6YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2FkU3RhdGU6Ok9ic2VydmVy
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oCmluZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZiYmJhNDJmYzkwY2VjMzU3
N2YuLjEyOGEzOTc3ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM1LDEwICsz
Niw2IEBACiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAotbmFt
ZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0YTEwZGE5YjU0MWZlZTI4MjA4
MDhjMWU1MGQzZmE5MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVkNjViNTdlZDBjODAxM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGF5
ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAsMTAgKzgxLDYgQEAgY2xh
c3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1uYW1l
c3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwCmluZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRkNDVmMTJlZGUzNGEwZjc4
Y2EwYTYuLjI0OGU1M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVkYWFiMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNp
bmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElVc2VyU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5j
bHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oCmluZGV4IDEyOWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1NmQzY2NjYjIuLmE0ZDhk
N2NkODA0ZTY1NjBkYWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxkU2hhcmVkLmgiCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmgiCkBAIC00OCwxMCArNDksNiBAQCBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNl
clN0eWxlU2hlZXQ7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMzYzUyZDE2MGM0
OWUwMmFiMmUyNDc4NGNkY2QzZTFkMjVkYmU2YWMuLmJjZDAyN2IxNzM4MWJhODhhNWMzMWI5Nzgw
MDFiZTZjODI1N2VmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNTgsNyArNTgsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNzkyNyw2ICs3OTI2LDEwIEBAIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQ
VVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdF
bmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgPSBw
cmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFibGVkKCk7CiAgICAg
cGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVz
ZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcGFy
YW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNl
R1BVUHJvY2Vzc0ZvcldlYkdMRW5hYmxlZCgpOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnNo
b3VsZEVuYWJsZVZQOURlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7
CiAjaWYgRU5BQkxFKFZQOSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGFyYW1ldGVycy5zaG91
bGRFbmFibGVWUDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkg
JiYgKCFXZWJDb3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0Rl
Y29kZXJFbmFibGVkT25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA2NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3MTFmOTFiMmU1Li40Mzdh
Yjc1MGIzNWFiMTYzYjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCiAj
aW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIwMyw3ICsyMDQsNiBAQCBl
bnVtIGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURh
dGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1Y2U2NWU5ZDJkNTY1YjNm
MTI1ZjM0NTdhMjU2ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMyZTZhMTk5NzdkYjYxYmFi
NjEzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
LmgKQEAgLTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGQ0NDJiNjJi
NTIyNTg3ZjkwZmE2ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2ODhhMjY4MjE5NDFmZjdh
NDE4ZjRkZjVhOTc1YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKQEAgLTM4LDEwICszOCw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJ
bmZvOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMGNjMDYzZjY4ZDAxYmQ1ZDdkNDljNTU5YjE2OTY5MTg1M2ZlYmRjMy4uYjcwMDJm
NDE1ODZmZDRlZjg4NzQwNTllNzM2OWJkYjIxZTBiOWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MDEsNyArNzAxLDYgQEAKIAkJ
MkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5
NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0
OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAq
LzsgfTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdE
MTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBG
NDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5j
ZS5jcHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBG
NDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAw
RjQ5M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9
OwogCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYx
QTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtMTMwNiw2
ICsxMzA1LDcgQEAKIAkJN0FGQkQzNjMyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVE
QkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lV
dGlscy5oICovOyB9OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVu
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURC
MjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OwogCQk3QzA2NUYy
QzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFD
OENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87
IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3
M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0
OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICov
OyB9OwpAQCAtMjcyMyw3ICsyNzIzLDYgQEAKIAkJMUFDNUZGQzExNzRCRkQxQjAwMDE0ODNEIC8q
IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxv
YWRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlTG9hZFN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0Ix
NSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGFSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3
NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1
QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00Mzg5LDYgKzQzODgsMTcgQEAKIAkJN0FGQkQzNjUyMUU1MUJB
QjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaDsgcGF0aCA9IENsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNC
IC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lV
dGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMURCMjY1MjU2NjhDRTAw
MDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4
RTM0NDI1NzdBQzM3MDA5RjFEODMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjUy
NTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjcyNTRB
RkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2OTI1NEFG
RUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbklu
Zm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1
Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY4MCwx
MSArNjY5MCwxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENv
ZGVyLmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJz
LmNwcCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMu
aCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAq
LywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJ
CQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAz
MkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMx
MEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBG
MDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAw
NzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMx
NUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERl
Y29kZXIuaCAqLywKQEAgLTgzNTYsMTEgKzgzNjYsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3
MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERp
c3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDcz
RTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1
MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdG
MzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJ
CTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5
MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3
ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmgg
Ki8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JF
NzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3
MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODM3
NSw5ICs4MzkwLDE0IEBACiAJCTU1MDY0MEExMjQwNzFBMjkwMEFBRTA0NSAvKiBncmFwaGljcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0I0OEUzNDMy
NTc3QUJGODAwOUYxRDgzIC8qIGNvY29hICovLAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNF
MyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRB
RjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMy
NDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3
QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICov
LAorCQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oICovLAorCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFE
MDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2
NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJ
CQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAq
LywKQEAgLTg3NzUsNiArODc5NSwxNCBAQAogCQkJbmFtZSA9IENsYXNzaWZpZXI7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3QjQ4RTM0MzI1NzdBQkY4MDA5RjFEODMgLyog
Y29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdC
NDhFMzQ0MjU3N0FDMzcwMDlGMUQ4MyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cCAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUgLyogY29jb2EgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTEyMDUsNiArMTEyMzMsNyBAQAog
CQkJCTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0Yu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVu
dENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2
RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2MzRG
MjM0RjdDNjQwMEZGQTg2NCAvKiBBc3luY1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMTMyNzQsNyArMTMzMDMsNiBAQAogCQkJCTJEOTJBNzg1MjEyQjZBQjEwMEY0OTNGRCAv
KiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3
RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQky
RDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0OURBQTM4QzI0Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dzZXJD
aGVja3MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcgLyog
RGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmgKaW5kZXggZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2OThhMjEyOTBkMzYxZDRhNi4uYzlkYzY4
MmI4NzU0OWI4MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApA
QCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7
CiBjbGFzcyBQYXltZW50Q29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyYzBkZjViOWY1NDk2ODQ3ZWQ2Njkx
MGJmMmYzOWIyY2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5OTg4
NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5oCkBAIC0zNSwxMCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBS
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUy
MTJjNjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
I2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsK
K30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7Cisg
ICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNzYWdl
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0
cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAg
ICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2
ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0
aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxl
YXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVCdWZm
ZXIoKTsKKyNlbmRpZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAg
bV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgs
IGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZv
ckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9y
RGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgYXV0
byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7
CisgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0p
OworICAgIH0KKyNlbHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhN
RTogQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRoaXMg
aXMgdGhlIHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTM0OQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRh
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZh
aWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAgICBp
ZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVkIG91
dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25z
LCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAgIGZv
ciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVu
dC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVj
dG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5v
dGlmaWNhdGlvbigpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
aXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAgICAg
ICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0
V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRp
bWVkIG91dCwgc28gcmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxk
IGxvc2UgdGhlIGNvbnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1F
OiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8g
Zm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWRkNjljYWY5ZGMwM2M1MjRiMTAwYTliNmI3NmNmMGFkNzk5YTBkNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNDEyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRh
dGlvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlvbgor
Ly8gY29udmVydHMgdGhlIGludGVyZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdlcyBh
bmQgc2VuZHMgdGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBH
UFUgcHJvY2Vzcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBi
eSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVibGlj
IFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSgpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
IG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4K
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3Zl
cnJpZGVzLgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwor
ICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3JlOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQgZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7CisgICAg
dm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRl
Q29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsKKwor
ICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNldEZh
aWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9y
KEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJl
KSBmaW5hbDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IG5hbWUpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFJl
bmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7
CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkgZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xh
bXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAg
IHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5k
RXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpIGZp
bmFsOworICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0
b3IpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBH
Q0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkgZmlu
YWw7CisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQp
IGZpbmFsOworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAgIHZv
aWQgY2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1w
ZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0NH
TGNsYW1wZiBkZXB0aCkgZmluYWw7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBzKSBm
aW5hbDsKKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdy
ZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAgdm9p
ZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBj
b3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZl
cigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5h
bDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0g
bW9kZSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQgZGVw
dGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dM
Y2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsK
KyAgICB2b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJy
YXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmluYWw7
CisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFibGUo
R0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdD
R0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZvaWQg
Zmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0
dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7CisgICAg
dm9pZCBmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZU1p
cG1hcChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIp
IGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dMaW50
IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBu
YW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51
bSBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51
bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBn
ZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRl
Z2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NHTGlu
dCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
Ym9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7Cisg
ICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0
cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVj
dCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9M
b2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBH
Q0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKKyAg
ICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2
YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFt
ZSkgZmluYWw7CisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVkKEdD
R0xlbnVtIGNhcCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxvYXQg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFy
YW0pIGZpbmFsOworICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dM
ZmxvYXQgdW5pdHMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2
YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7
CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQg
cmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUo
R0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2sp
IGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAg
dm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spIGZp
bmFsOworICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBH
Q0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51
bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZp
bmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHkpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dM
ZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdD
R0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQg
c2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0
cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7
CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEs
IEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFs
OworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhl
bHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCBkaXZpc29yKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFy
cmF5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVh
ZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NH
TGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48
R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQg
c3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xp
bnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdD
R0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQ
bGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZp
bmFsOworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGludmFs
aWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNy
YykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9y
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2
b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhl
bHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1Yklt
YWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50
IHYxKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVp
bnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
NHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQg
djIsIEdDR0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBp
bmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWlu
dCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lk
IGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWlu
dCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1
ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
QnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGlu
dCBzdGVuY2lsKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsK
KyAgICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOwor
ICAgIHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVl
cnkpIGZpbmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlU2FtcGxlcigpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQgdW5p
dCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQg
cGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICBH
Q0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dM
c3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZp
bmFsOworICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICB2
b2lkIGRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xpZW50
V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRp
bWVvdXQpIGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZp
ZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5j
aShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJvb2xl
YW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2
b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBw
cmltaXRpdmVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkgZmlu
YWw7CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJN
b2RlKSBmaW5hbDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5h
bDsKKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIHJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikg
ZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWlwdHIpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5h
bWVzKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNl
cywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0lu
ZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tO
YW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmlu
YWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykgZmluYWw7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZlbnRN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBNYXJr
ZXJFWFQoKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAg
ICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykg
ZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7CisgICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0TXVs
dGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmluYWw7
CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZpbmFs
OworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAg
ICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCitw
cm90ZWN0ZWQ6CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJp
ZGVzLgorICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0ZToK
KyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQoU3Ry
aW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7
CisgICAgdm9pZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpOworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
eyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8vIFRo
ZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3Qg
aXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihH
Q0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVf
djxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1
Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hvcnQs
IGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwgdWlu
dDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJfdD4p
Oworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lX3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
UGxhdGZvcm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xj
aGFyKSA9PSBzaXplb2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludDY0
KSA9PSBzaXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2NCkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisvLyBHQ0dMc3luYyBhbmQgR0NHTCpwdHIgdHlwZXMgYXJl
IHBvaW50ZXJzLiBPbiBzb21lIHBsYXRmb3JtcywgdGhleSBhcmUgMzItYml0LgorLy8gQ3VycmVu
dGx5IHdlIGhhcmQtY29kZSBpdCBieSB1c2luZyA8PSwgYW5kIGFzc3VtZSB0aGF0IHdlIGRvIG5v
dCB0cmFuc2ZlciBhcnJheXMgb2YgdGhlIHR5cGVzLgorc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
TGludHB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dM
c2l6ZWlwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
THZvaWRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
THN5bmMpIDw9IHNpemVvZih1aW50NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2Yo
aW50cHRyX3QpKTsKKy8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBz
Y3JpcHQuCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZjJiMzJiMmJjMTAxMGVmOGVjZDBhZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5v
dFJlZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQor
ICAgIHZvaWQgV2FzQ2hhbmdlZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMxNGE0NDMxNTYyMTFjYzcxODUxMzczMzhjYWNjN2NlNTAzNTc5NWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAg
KzEsMTY0NyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0
R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xl
bnVtIGVycm9yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTeW50aGVzaXplR0xFcnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QoKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpN
b3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdD
R0xlbnVtIHRleHR1cmUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVy
KHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxh
dGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmli
TG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1H
TE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRS
ZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZm
ZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNs
YW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBH
Q0dMZW51bSBtb2RlQWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3Ip
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVu
YyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdD
R0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVu
dW0gZHN0QWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFy
Z2V0KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0
YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZm
ZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dM
Y2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dM
Ym9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCks
IHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRp
Y19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
QnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZv
cm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdM
T2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51
bSBhcmcwKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVRleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJh
bWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxh
ZykpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xh
bXBmIHpGYXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShH
Q0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
R0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZp
bmlzaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZp
bmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dM
ZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywg
R0NHTGludCBsZXZlbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQs
IGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2Uo
bW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlw
bWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZh
bHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5k
ZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJl
cGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQp
CisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50
PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQp
CisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAg
aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRl
eCkKK3sKKyAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8
Ym9vbD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZT
aXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVw
bHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHku
ZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVu
dW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3Ry
aW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShh
cmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7
CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNp
c2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24p
Cit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAg
IGludDMyX3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNp
b25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5
LCBwcmVjaXNpb25SZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBpZiAoc2VuZFJlc3VsdCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VS
ZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBp
ZiAocHJlY2lzaW9uKQorICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5Owor
ICAgIH0KK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRl
clNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxv
YXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4
UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dD
R0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+
IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFs
dWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAo
c2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgp
LCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisg
ICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6
ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihw
cm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAg
bWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6
ZW9mKHVpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRp
b24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0
ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0
LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVh
biBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29s
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNFbmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4
dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlu
ZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpM
aW5rUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9s
eWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9y
LCB1bml0cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xi
b29sZWFuIGludmVydCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcx
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJT
b3VyY2UoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBm
dW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0g
ZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywg
cmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNr
KG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNl
LCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9w
KGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShH
Q0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBh
c3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5j
aWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBw
YXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRl
cmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0x
ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
MmYobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJp
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
Pih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgs
IHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9h
dCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgs
IHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwg
dyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2
YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliMWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2
KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4
QXR0cmliMmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2
KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSwgR0NHTGZsb2F0IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAz
PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgs
IHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBl
LCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9m
ZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9y
bWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVz
YWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZm
ZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7
CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVw
bHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0
YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhl
bHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3Nl
ZFRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlz
b3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRp
dmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRl
eEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
cmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwg
R0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRU
YXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
cmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3Vi
RGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJl
cGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRh
dGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNY
MCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBk
c3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJp
dGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEs
IHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGxheWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUs
IGxldmVsLCBsYXllciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFt
ZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNp
emUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NH
TGVudW0gc3JjKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZWFkQnVmZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
emVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhl
bHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFn
ZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1h
Z2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0Qx
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1
YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVz
c2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1h
Z2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihw
cm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFn
RGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
dWludCB2MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwg
R0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSks
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRy
aXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxi
b29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0
cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50
IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQs
IDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVp
KGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVp
dihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNp
emUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBt
b2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihi
dWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1
ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFy
QnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVz
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZl
cmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlUXVlcnkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0
dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2lu
UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwg
cXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdl
dCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NH
TGVudW0gcG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVp
KHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVl
cnlPYmplY3R1aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2Jq
ZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
U2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQs
IHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2Ft
cGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBh
cmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5
bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisK
K0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3lu
YyBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xp
ZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0
IHRpbWVvdXQpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0
aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFn
cywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5j
IGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0
aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShH
Q0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5
bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dM
Ym9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNr
KFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3Jt
RmVlZGJhY2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNm
b3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFu
c2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayh0YXJnZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1v
ZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZl
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVj
dG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZv
cm1OYW1lcyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUlu
ZGljZXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IHVuaWZvcm1CbG9ja05hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
QmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0luZGV4KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmco
cHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBw
YXJhbXMpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0lu
ZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAg
ICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZT
aXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9F
UyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0
RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtl
ckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
PiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4
LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5H
TEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dM
dm9pZCogcGl4ZWxzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50
ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhB
dHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50
ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50
ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgLy8gTk9MSU5UCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRN
dWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQq
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2
NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAppbmRleCA2ZGRlZTg3YWJkY2M3NmY4NjlhZDU1NGRiNTExMmIzNmI4MmYyZDZiLi5kYTM5
ODg2ZWJjOGYxNmQ4OGRmZTE4NzNjNTdhODdmZWNmNmU0NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwCkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwg
UGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTGVudW0sIGJvb2wsIGJvb2wpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
KiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggOTVj
ODM2ZTY5NTA0MWQ5N2QyNTkwMzZmZDczZGZmNWM0NmI4ZmY5MS4uYzhjNTgyOTA1MGE1MjU4Zjlk
OTMxOTc2Yjk1ZjA1ZTU5N2E1NmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6
Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0
aW9uLmFkZENsaWVudCgqdGhpcyk7Ci0gICAgYm9vbCBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoCisgICAgYXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1f
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJh
dGUoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkpLAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3Rp
bmF0aW9uSUQpLCAwKTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihzdHJlYW1Gb3JtYXQpOwogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9y
bWF0LCBtX251bWJlck9mRnJhbWVzKTsKLSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlx
dWU8V2ViQXVkaW9CdWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQpOworICAgIG1fYXVkaW9CdWZmZXJM
aXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1h
dCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2Vy
LmNwcAppbmRleCBiOGY0NWE2ZDViYjRkYjQ2MDk4ODAxMjQzYmI1ZTkzMTdiMWUzZTJiLi42NWI4
ZmQwZDc3MzQ3ZTkzOGI1NjQ1ODIyNmI3OGRhNDNjOTc4OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgi
CiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1h
bmFnZXIuaAppbmRleCBlNTllMWIwNmI0NDdlNWQ4MGNhNjEwNTJjNmM3YTMyYzRiYTE0MmU2Li44
MTk0MDkwYzkzM2IyZjExYTY0NjBhYjNjMTc3MmQzNzYxNjM3MTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllcklk
ZW50aWZpZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCmluZGV4IDBkYjg1YWU5YmQyNDFl
YmExYmRhNGU2MjI0NDBmNjMyOGUxZDhhMGIuLjI5N2VlYmRhMTkxODlkZmUwY2ZlNmMxZWQ3Njlh
YWNiOWQ2ZDkxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHAKaW5kZXggMGM2ZjczZDA3MTQ0YjU2MjY3NjkzNjdjOWYyYTNhNDAxN2VhZGU4MC4uMTY4ZWY0
MzVkZGU1NjE0ZDMwZjNiZTI4NjcwYTQ3YWVkNjE2ZGUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0y
OCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5oCmluZGV4IDczOWE0OTZlZjQ5NGNiNGE2MTg1NjZmZmM2NGQ0YTI2NGE3NGU5ZDAuLjRiZWFl
MDYyMzE3YmEyNmE2MDY4M2YxZjQ1MTIzM2ViMTA3M2FhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRD
RGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgpA
QCAtNDMsNyArNDQsNiBAQCB1c2luZyBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NW
UGl4ZWxCdWZmZXJQb29sKjsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
aW5kZXggMmRhZDIwMzg0MmYwZTU1M2ZlM2I0NjI0NDFlZTk0ZmEyNjQ5M2ExMS4uYzI4Y2U3ZjJl
MTdlODlhOGU1MTg2YTc3MDZhMmU4YTQ0ZjZiN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFR5cGVzLmg+CkBAIC01NCw3
ICs1NSw2IEBAIGNsYXNzIERhdGE7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBj
bGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xNjEsNCArMTYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMwNjRlOWM0YWZjYzJjZmY1NGEz
MjVlMjUzMWVkMDUyMmEwMDEzOTMuLmI5Nzk0NjU5ZWFiZDE4NGIzODljMDZkMTMyZjhjNDJmODA1
MjNjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA4NjU3MTFiMzY2YzI4ZGY0ODRiNGNkYzA3YWEzZmNmM2RjZWJmMmY2Li42
OTQ4OTZjOTk3YTQ5NDBkYmFiMmRhNzY1NzgyMGEyNzhhZjFkYzZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VMb2FkZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3Jt
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJm
YTFjNjlmZWE5ZDUzOTY2ZmIuLjdlMWQ0OTk0NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3Mzc3ODAw
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNs
YXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk0ZWYwZDFmY2UyZTYw
MWRmNDQ5Y2ZmODUzOWZiZDE2NDc5M2ViZTIuLmZmNjlmNTYwOWU1NzdjYWM3NzdmMDRhZmE3NGFm
MjEwNzQ4NjRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJO
ZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZjUzNDc4MzQ3ZTc3NWRm
MzdlYTk3NjM0YzIzMzA5MzJiNGExNGQyOC4uYWQ3ZmYxODdkYmI0MzUzYjllZDNiYzU3YzViYTJj
NGFhNGU4Y2ZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2Vu
ZFF1ZXVlLmg+CkBAIC0zOCw3ICszOSw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBhZjI0MmNkMmI1OTVhYzRhNDQ4NDI5N2JlNWQ1Y2Zl
MThkNDhmMzI0Li43ZDAwNzM2OWI5Y2NlODViOGYwNTQ1N2Q2NjZkMWU0NDUxYjk2YzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVh
bS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRTdHJlYW0uaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbU1l
c3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldFN0cmVhbS5oCmluZGV4IGRkMDgyMDEwNzEyYjlmNWRiOWZlYmQ4OGRhNjY5YjZkZjYxZDBm
MjkuLmI0M2NiMmVmYWQxZTEwMWVlMjY1YjkzZGRlOWIwNjEyNzM2YTA5NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRsZS5oPgpAQCAtMzMsNyArMzQs
NiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXQuaAppbmRleCBjYjQ4ZTA1NzM0OGEyZTg2NmIwOTFmZjVhYzg3MjYwNWNhMTkyZGQ1Li4z
MjNmMjVlZThmZDgxYjAyNjMwZDJmMjU5YTFhZmI4ODRiNGNmNWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dC5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlv
bjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggZWE1MzU5
NjAxMDlmZWU2ZGM0ODA1Y2Y2ODkxMjc5OGVlOWFiNmYwMy4uNDBiNGM4ZjIxMjljZjEyMzNhMWIz
MWI4NTEyN2U3YTdlOWUzZDdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNjAsMTAgKzYwLDYgQEAgT0JKQ19DTEFTUyBQREZT
ZWxlY3Rpb247CiBPQkpDX0NMQVNTIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdDsKIE9C
SkNfQ0xBU1MgV0tQREZMYXllckNvbnRyb2xsZXJEZWxlZ2F0ZTsKIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
WE9iamVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXgg
MzM0NzY0YWNlMmE4YzQzODU4OGIzMTk4MDYyZjM2NWEzNjZlOGJkYS4uNWIyNzMyZjJjNGU0YzQ4
M2ViZjg0MDg3YThjMjYzNGU5ZDU0OTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEw
OCw2ICsxMDgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwpAQCAtOTEyLDYgKzkxNiwyMiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZQogICAgIHJldHVy
biBtX3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VC
dWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisKK1JlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFBsYXRmb3JtRGlzcGxheUlE
IGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0Cit7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBVTlVTRURfVkFSSUFCTEUoaG9zdFdpbmRvd0Rpc3BsYXlJRCk7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNyZWF0ZShhdHRyaWJ1dGVzKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5k
aWYKK30KKworI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNz
TGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGVjMTRmZGIxNmM4MWNjMTI3MDZj
ZmNiNTllOTlmMmNkMzM3NjBkYzguLjEyMTVmOTJhMDMxOTU4MGEwZGRkOTIxMDUxM2RkMmQ1ZDMw
NTA1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI0Myw3ICsyNDMsMTEgQEAgcHJpdmF0ZToK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0
IGZpbmFsOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5k
b3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCisjZW5kaWYKKwogCiAgICAgQ29tcG9z
aXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBmaW5h
bAogICAgIHsKQEAgLTQwMyw2ICs0MDcsNyBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBib29s
IG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAgICAg
bXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXIgeyBmYWxz
ZSB9OworCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmNjQyMTQ3N2E1NmNlZTFiNDU5YWIxYjcw
ZDhkY2FkOWQzZGFmYzM0Li5kNDYzM2RkYjZjYzY0OTgwM2I5MjQ1NzU2MjViZmE1MjhjMTdkNGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
NDIyLDYgKzQyMiw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fc2hvdWxkUmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQ
VVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBwYXJhbWV0
ZXJzLnNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB9CiAgICAgLCBtX3Nob3VsZFBsYXlNZWRp
YUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIH0K
KyNpZiBFTkFCTEUoV0VCR0wpCisgICAgLCBtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNz
IHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzc30KKyNlbmRpZgogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAsIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2
YWN5UXVpcmtzIHsgcGFyYW1ldGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgfQog
I2VuZGlmCkBAIC03MjUsNyArNzI4LDYgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlm
IChXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKiBtYW5hZ2VyID0gd2ViUHJvY2Vzcy5zdXBwbGVt
ZW50PFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI+KCkpCiAgICAgICAgIG1fcGFnZS0+c2V0dGlu
Z3MoKS5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1hbmFnZXItPm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSgpKTsKICNlbmRpZgotICAgIAogICAgIGlmIChwYXJhbWV0ZXJzLnZpZXdTY2Fs
ZUZhY3RvciAhPSAxKQogICAgICAgICBzY2FsZVZpZXcocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0
b3IpOwogCkBAIC0zNzkzLDYgKzM3OTUsOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVu
Y2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5k
ZXJDYW52YXNJbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVz
ZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3Mp
OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYSht
X3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJl
bmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBD
X1RFU1RJTkdfQVBJKQpAQCAtNjk5MCw2ICs2OTk1LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJv
bml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRD
T1JTRGlzYWJsaW5nUGF0dGVybnMobV9pZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
cyksIDApOwogfQogCisKICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFk
ZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGU3Zjhj
MGEzYjYwNGU3YWExNTdjNzQwMjMxZTU1NTc0OWQ0ZWY3YzcuLjIxMTBhMzJmNjcwZjAwZmEyNDRm
ZTZmOWQ3OTVhNmRkZjYwZDE3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXND
aGlsZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3du
bG9hZElELmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiRWRpdGlu
Z1JhbmdlLmgiCkBAIC0xNjAsNyArMTYxLDYgQEAgY2xhc3MgQXJyYXk7CiAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNv
ZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wg
c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNl
bEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNSZXBsaWVzKCk7CiAgICAgICAgIHJldHVybiBz
ZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgU2Vjb25kczo6aW5maW5p
dHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3Bl
bmQpOwpAQCAtMTgyNiw2ICsxODI2LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUmVuZGVy
RE9NSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUGxheU1lZGlhSW5H
UFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3Nob3Vs
ZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVp
cmtzIHsgZmFsc2UgfTsKICNlbmRpZgpAQCAtMjE4Myw0ICsyMTg2LDMgQEAgaW5saW5lIGJvb2wg
V2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6
OkZyYW1lJikgY28KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAz
ODM4YWIzMjZkZDgzOTZiNjAxMDdjYmEzZjYyNDUwNzRjOTdmNzE1Li4wZTI5M2ZhNGRmMTljYmY4
Y2Q2NzkzMTc2ZDc4Nzg5MmFkOGUxMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNTE3LDcgKzUxNyw3IEBAIGJvb2wg
V2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQp
CiAKICAgICAvLyBGSVhNRTogSW50ZXJwcmV0IHRoZSBldmVudCBpbW1lZGlhdGVseSB1cG9uIHJl
Y2VpdmluZyBpdCBpbiBVSSBwcm9jZXNzLCB3aXRob3V0IHNlbmRpbmcgdG8gV2ViUHJvY2VzcyBm
aXJzdC4KICAgICBib29sIGV2ZW50V2FzSGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgc2VuZFJl
c3VsdCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRv
clN0YXRlKFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpLAorICAgIGF1dG8gc2VuZFJlc3VsdCA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNo
b3VsZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OkNoYXIpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJ
bnRlcnByZXRLZXlFdmVudDo6UmVwbHkoZXZlbnRXYXNIYW5kbGVkKSwgbV9pZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gc2VuZFJlc3VsdCAmJiBldmVudFdhc0hhbmRsZWQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjJmMjI4MjJjN2IyMjNmY2E1OWY5NTU3
M2QxMWRjOTliMTAzNDgxMS4uNTgyZWU3NWQ5OWE3NDI0MjU0YTM5ZGFiMjA2Zjg0NjE3MzRhZDlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk0Miw2ICsx
OTQyLDIwIEBAIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJl
bmRlcmluZ1B1cnBvc2UgcHVycG9zZSkKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCisj
aWYgRU5BQkxFKFdFQkdMKQordm9pZCBXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yV2Vi
R0woYm9vbCB1c2VHUFVQcm9jZXNzRm9yV2ViR0wpCit7CisgICAgbV91c2VHUFVQcm9jZXNzRm9y
V2ViR0wgPSB1c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzczo6c2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdAoreworICAgIHJldHVybiBtX3Vz
ZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworI2VuZGlmCisKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFZQOSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU5YzQ3ZGI0YzQ0
N2MwZjRhYjYyN2MwOTRiNWY2OGRiNTY1YTlhNmMuLjFhNTg1YWMxNDJiMTgzMjc2NGM0ZDg1Mzc5
MDkwYjJjYmNhNzNjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
MzQ3LDYgKzM0NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yRE9N
UmVuZGVyaW5nKGJvb2wpOwogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wp
OwogICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmlu
Z1B1cnBvc2UpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NG
b3JXZWJHTChib29sKTsKKyAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdM
KCkgY29uc3Q7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4Nyw2ICs2
OTEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVy
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYSB7IGZhbHNlIH07Cisj
aWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgeyBmYWxz
ZSB9OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjdjNzMyY2MwODQ3MGE4MTI1ZmM3
ZTVhNzQ1ZjFkMmY3Y2M1ZTE5Yi4uMGE0MWQ1M2M1YzhhMDlkMTBlMWE4MTI1M2MxYmUwMTAxOTFm
Mzk4NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDIwLTEyLTAyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSByZW1vdGUgdmVyc2lvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQyBhbmQgaXMgaW5jb21wbGV0ZS4KKworICAgICAg
ICBBZGQgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbi4g
Q3VycmVudGx5CisgICAgICAgIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGVzIGEgV2ViS2l0IElQQyBp
bXBsZW1lbnRhdGlvbi4KKworICAgICAgICBUaGUgaW5wdXQgZGVmaW5pdGlvbiB0byB0aGUgZ2Vu
ZXJhdG9yIGlzIHRoZSBwcm94eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBoZWFkZXIgZmlsZXMu
CisgICAgICAgIFRoZSBvdXRwdXQgb2YgdGhlIGdlbmVyYXRvciBpcworICAgICAgICAgICAtIFdl
YktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGZpbGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHNl
bmRlciBjb2RlCisgICAgICAgICAgIC0gTWVzc2FnZSByZWNlaXZlciBhbmQgcGF5bG9hZCBpbnZv
Y2F0aW9uIGNvZGUKKworICAgICAgICBUaGUgZ2VuZXJhdG9yIGNvbnZlcnRzIEdyYXBoaWNzQ29u
dGV4dEdMIEdDR0wgLXByZWZpeGVkIHR5cGVzIHRvCisgICAgICAgIHNpemVkIElQQyB0eXBlcy4K
KworICAgICAgICBUaGUgZ2VuZXJhdG9yIGlzIGludm9rZWQgZHVyaW5nIGRldmVsb3BtZW50IHRp
bWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBzdG9yZWQgaW4gdGhlIHJlcG9zaXRvcnku
CisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6IEFkZGVkLgorCiAyMDIw
LTEyLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
R1BVUHJvY2Vzcy5DcmFzaFdoaWxlUGxheWluZ1ZpZGVvIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2YjQyMjI5Y2YyZjgyOGM2NmM3ZTdiNDE3NzNjMmVi
ZTQ0MzExNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbApAQCAtMCwwICsxLDEwNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNv
ZGluZzogdXRmLTggLSotCisjCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisj
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisj
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIFRoaXMgc2NyaXB0IGdl
bmVyYXRlcyB0aGUgc291cmNlIGZpbGVzIGZvciBXZWJHTCBHUFUgcHJvY2VzcyBJUEMuCisjCisj
IHB5dGhvbjMgLW0gYmxhY2sgLWwgMTUwIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bAorIyBweXRob24zIC1tIG15cHkgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisj
CitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBlbnVtCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHJl
CitpbXBvcnQgc3lzCitpbXBvcnQgY29sbGVjdGlvbnMKKworZnJvbSB0eXBpbmcgaW1wb3J0IExp
c3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdlbmVy
YXRvciwgSXRlcmF0b3IsIENvdW50ZXIKKworcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9fZmls
ZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCitleHRlbnNpb25zX2lucHV0X2Zu
ID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3JhcGhp
Y3MiIC8gIkV4dGVuc2lvbnNHTC5oIgorCitmdW5jdGlvbnNfaW5wdXRfZm5zID0gWworICAgIHJv
b3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdy
YXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCitdCit0eXBlc19pbnB1
dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJH
UFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKwor
dGVtcGxhdGVfcHJlYW1ibGUgPSAiIiIvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyIiIgorY29udGV4dF9mdW5j
dGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIg
LyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVk
LmgiCitjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJs
ZQorICAgICsgIiIiLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0
ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRp
b25zLgorI3ByYWdtYSBvbmNlCit7fQorCisiIiIKKykKK2NvbnRleHRfbWVzc2FnZXNfZm4gPSBy
b290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3Mi
IC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIgorY29udGV4dF9tZXNzYWdl
c190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJv
bm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRp
c3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNp
b25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKQore30KK319CisKKyNlbmRpZgorCisiIiIKKykKKworY29udGV4dF9wcm94eV9mdW5j
dGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIg
LyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0
aW9uc0dlbmVyYXRlZC5jcHAiCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgK
KyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJLaXQge3sKK3t9CisK
K319CisKKyNlbmRpZgorCisiIiIKKykKKworCitkZWYgd3JpdGVfZmlsZShmbiwgbmV3X2NvbnRl
bnRzKToKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoKKyAgICAgICAgICAg
IGlmIGYucmVhZCgpID09IG5ld19jb250ZW50czoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICBleGNlcHQ6CisgICAgICAgIHBhc3MKKyAgICB3aXRoIG9wZW4oZm4sICJ3IikgYXMgZjoKKyAg
ICAgICAgZi53cml0ZShuZXdfY29udGVudHMpCisKK2NsYXNzIGNwcF90eXBlKG9iamVjdCk6Cisg
ICAgdHlwZV9uYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBz
dHIpOgorICAgICAgICBzZWxmLnR5cGVfbmFtZSA9IHR5cGVfbmFtZQorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9faGFz
aF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnR5cGVfbmFtZSkKKworICAgIGRl
ZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBk
ZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lID09
IG90aGVyLnR5cGVfbmFtZQorCisgICAgZGVmIGlzX3ZvaWQoc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lIGluIFsidm9pZCIsICJHQ0dMdm9pZCIsICJjb25zdCB2
b2lkIiwgImNvbnN0IEdDR0x2b2lkIl0KKworICAgIGRlZiBpc19jb25zdChzZWxmKSAtPiBib29s
OgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUuc3RhcnRzd2l0aCgiY29uc3QgIikKKwor
ICAgIGRlZiBpc19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJvb2w6CisgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcG9pbnRlcihzZWxmKSAt
PiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19yZWZlcmVuY2Uoc2Vs
ZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcmVm
ZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGdl
dF92YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBzZWxmCisK
KyAgICBkZWYgZ2V0X2RlY2F5X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgaWYg
c2VsZi5pc19jb25zdCgpOgorICAgICAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5
cGVfbmFtZVs2Ol0pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgZ2V0X3J2YWx1ZV90
eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2Vs
Zi50eXBlX25hbWUgKyAiJiYiKQorCisgICAgZGVmIGdldF9wb2ludGVyX3R5cGUoc2VsZikgLT4g
J2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFtZSAr
ICIqIikKKworY2xhc3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBlKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjb250YWluZXJfbmFtZSA6IHN0ciwgY29udGFp
bmVkX3R5cGUgOiBjcHBfdHlwZSwgYXJpdHkgOiBPcHRpb25hbFtpbnRdID0gTm9uZSk6CisgICAg
ICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5jb250
YWluZXJfbmFtZSA9IGNvbnRhaW5lcl9uYW1lCisgICAgICAgIHNlbGYuY29udGFpbmVkX3R5cGUg
PSBjb250YWluZWRfdHlwZQorICAgICAgICBzZWxmLmFyaXR5ID0gYXJpdHkKKyAgICBkZWYgaXNf
Y29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgZGVmIGlz
X3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUg
PT0gIkdDR0xTcGFuIgorICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUgPT0gIkdDR0xTcGFuIiBhbmQgc2VsZi5h
cml0eSBpcyBOb25lCisgICAgZGVmIGdldF9jb250YWluZXJfbmFtZShzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUKKyAgICBkZWYgZ2V0X2FyaXR5KHNlbGYpIC0+IE9w
dGlvbmFsW2ludF06CisgICAgICAgIHJldHVybiBzZWxmLmFyaXR5CisgICAgZGVmIGdldF9jb250
YWluZWRfdHlwZShzZWxmKSAtPiBjcHBfdHlwZToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFp
bmVkX3R5cGUKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlLmlzX2NvbnN0KCkKKworZGVmIGNyZWF0
ZV9jcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlw
ZV9jb250YWluZXJdOgorICAgIG0gPSByZS5tYXRjaChyIihbXHc6XSspPCguKyk+JCIsIHR5cGVf
bmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBjb250YWluZXJf
bmFtZSA9IG1bMV0KKyAgICB0ZW1wbGF0ZXMgPSBtWzJdCisgICAgYXJpdHkgPSBOb25lCisgICAg
bSA9IHJlLm1hdGNoKHIiKFteLF0rKSxccyooXGQrKSIsIHRlbXBsYXRlcykKKyAgICBpZiBtOgor
ICAgICAgICB0ZW1wbGF0ZXMgPSBtWzFdCisgICAgICAgIGFyaXR5ID0gaW50KG1bMl0pCisgICAg
cmV0dXJuIGNwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUsIGNvbnRhaW5lcl9uYW1lLCBnZXRf
Y3BwX3R5cGUodGVtcGxhdGVzKSwgYXJpdHkpCisKK2NsYXNzIGNwcF90eXBlX2Z1bmN0aW9uKGNw
cF90eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCByZXR1cm5f
dmFsdWVfdHlwZSA6IGNwcF90eXBlLCBhcmd1bWVudF90eXBlcyA6IExpc3RbY3BwX3R5cGVdKToK
KyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxm
LnJldHVybl92YWx1ZV90eXBlICA9IHJldHVybl92YWx1ZV90eXBlCisgICAgICAgIHNlbGYuYXJn
dW1lbnRfdHlwZXMgPSBhcmd1bWVudF90eXBlcworCitkZWYgY3BwX3NwbGl0X2FyZ3Nfc3BlY3Mo
YXJnc19zcGVjIDogc3RyKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAjIGh0dHBzOi8vc3RhY2tv
dmVyZmxvdy5jb20vcXVlc3Rpb25zLzMzNTI3MjQ1L3B5dGhvbi1zcGxpdC1ieS1jb21tYS1za2lw
cGluZy10aGUtY29udGVudC1pbnNpZGUtcGFyZW50aGVzZXMKKyAgICBjb21tYSA9IHIiLCg/ISg/
OltePF0qXDxbXj5dKlw+KSpbXjw+XSpcPikiCisgICAgcmV0dXJuIGZpbHRlcihOb25lLCBbYS5z
dHJpcCgpIGZvciBhIGluIHJlLnNwbGl0KGNvbW1hLCBhcmdzX3NwZWMuc3RyaXAoKSldKQorICAg
IAorZGVmIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlv
bmFsW2NwcF90eXBlX2Z1bmN0aW9uXToKKyAgICBtID0gcmUubWF0Y2gocicoLiopXCgoLiopXCkn
LCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0
dXJuX3ZhbHVlX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICBhcmdzX3R5cGVzID0gW2dl
dF9jcHBfdHlwZShhKSBmb3IgYSBpbiBjcHBfc3BsaXRfYXJnc19zcGVjcyhtWzJdKV0KKyAgICBy
ZXR1cm4gY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lLCByZXR1cm5fdmFsdWVfdHlwZSwgYXJn
c190eXBlcykKKyAgICAgICAgCisjIFBvaW50ZXIgb3IgcmVmZXJlcmVuY2UKK2NsYXNzIGNwcF90
eXBlX2luZGlyZWN0KGNwcF90eXBlKToKKyAgICBjYXRlZ29yeSA6IHN0cgorICAgIHZhbHVlX3R5
cGUgOiBjcHBfdHlwZQorICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBz
dHIsIGNhdGVnb3J5IDogc3RyLCB2YWx1ZV90eXBlIDogY3BwX3R5cGUpOgorICAgICAgICBjcHBf
dHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY2F0ZWdvcnkgPSBj
YXRlZ29yeQorICAgICAgICBzZWxmLnZhbHVlX3R5cGUgPSB2YWx1ZV90eXBlCisKKyAgICBkZWYg
aXNfY29uc3RfcG9pbnRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0g
JyonIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBub3Qgc2VsZi5pc19jb25zdCgpCisg
ICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0
ZWdvcnkgPT0gJyYnIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNl
bGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicgYW5kIG5vdCBzZWxmLmlz
X2NvbnN0KCkKKyAgICBkZWYgaXNfcnZhbHVlX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYmJworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVfdHlwZQorCitkZWYgY3JlYXRlX2NwcF90eXBlX2lu
ZGlyZWN0KHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfaW5kaXJlY3RdOgor
ICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90
IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJiQiLCB0eXBlX25hbWUpIAorICAgIGlm
IG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcmJicsIGdl
dF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiQiLCB0eXBl
X25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJCIsIHR5
cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlw
ZV9uYW1lLCAnJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25z
dCAoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0
Y2gociIoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBf
dHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcqJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIHJl
dHVybiBOb25lCisKKworY2xhc3MgY3BwX2V4cHIob2JqZWN0KToKKyAgICB0eXBlOiBjcHBfdHlw
ZQorICAgIGV4cHI6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBl
LCBleHByOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYuZXhw
ciA9IGV4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5l
eHByCisKKworQ3BwRXhwckNvbnZlcnRlciA9IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVd
LCBjcHBfZXhwcl0KKworCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyX3Ro
cm91Z2goY2FzdF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHBy
LCBjcHBfdHlwZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJv
bV9wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6Cisg
ICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFt
ZX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIp
fSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyCisKK2Rl
ZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY2FzdF90aHJvdWdoX3R5
cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHBy
XToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcihleHByOiBjcHBfZXhw
ciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4gY3BwX2V4cHIo
dHlwZSwgZiJyZWludGVycHJldF9jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHN0YXRpY19jYXN0PHtz
dHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0dXJuIGNwcF9y
ZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIKKworZGVmIGNwcF9zdGF0aWNfY2FzdChleHByOiBj
cHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhw
cih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHtzdHIoZXhwcil9KSIpCisK
KworZGVmIGNwcF9pbXBsaWNpdF9jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkg
LT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIHN0cihleHByKSkKKworCitk
ZWYgY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwg
dHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50
ZXJfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisg
ICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDx7
ZWxlbWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5z
aXplKCkpIikKKworZGVmIHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0
X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGVfY29udGFpbmVy
KSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2NvbnRh
aW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUs
IGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB7ZWxlbWVudF9wb2ludGVyX3R5
cGV9Pih7c3RyKGV4cHIpfS5kYXRhKSwge3N0cihleHByKX0uYnVmU2l6ZSkiKQorCitkZWYgY3Bw
X21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9l
eHByKGV4cHIudHlwZS5nZXRfcnZhbHVlX3R5cGUoKSwgZiJXVEZNb3ZlKHtzdHIoZXhwcil9KSIp
CisKKworY3BwX3R5cGVzOiBEaWN0W3N0ciwgY3BwX3R5cGVdID0ge30KKworY3BwX3R5cGVfY29u
c3RydWN0b3JzIDogTGlzdFtDYWxsYWJsZVtbc3RyXSwgT3B0aW9uYWxbY3BwX3R5cGVdXV0gPSBb
CisgICAgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9jb250
YWluZXIsCisgICAgY3JlYXRlX2NwcF90eXBlX2luZGlyZWN0CitdCisKK2RlZiBnZXRfY3BwX3R5
cGUodHlwZV9uYW1lOiBzdHIpOgorICAgIHIgPSBjcHBfdHlwZXMuZ2V0KHR5cGVfbmFtZSwgTm9u
ZSkKKyAgICBpZiByOgorICAgICAgICByZXR1cm4gcgorICAgIGZvciB0eXBlX2NvbnN0ciBpbiBj
cHBfdHlwZV9jb25zdHJ1Y3RvcnM6CisgICAgICAgIHIgPSB0eXBlX2NvbnN0cih0eXBlX25hbWUp
CisgICAgICAgIGlmIHI6CisgICAgICAgICAgICBicmVhaworICAgIGlmIG5vdCByOgorICAgICAg
ICByID0gY3BwX3R5cGUodHlwZV9uYW1lKQorICAgIGNwcF90eXBlc1t0eXBlX25hbWVdID0gcgor
ICAgIHJldHVybiByCisKKworY2xhc3MgY3BwX2FyZyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgor
ICAgIHR5cGU6IGNwcF90eXBlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5
cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi50
eXBlID0gdHlwZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAie30g
e30iLmZvcm1hdChzZWxmLnR5cGUsIHNlbGYubmFtZSkKKworCitjbGFzcyBjcHBfZGVjbChvYmpl
Y3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgbmFtZTogc3RyCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYudHlwZSA9
IHR5cGUKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgIHJldHVybiBmIntzdHIoc2VsZi50eXBlKX0ge3NlbGYubmFtZX0iCisKKworY2xh
c3MgY3BwX2FyZ19saXN0KG9iamVjdCk6CisgICAgYXJnczogTGlzdFtjcHBfYXJnXQorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBzZWxmLmFy
Z3MgPSBhcmdzCisKKyAgICBkZWYgbmFtZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiLCAiLmpv
aW4oYS5uYW1lIGZvciBhIGluIHNlbGYuYXJncykKKworICAgIGRlZiBleHBycyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuIFtjcHBfZXhwcihhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdz
XQorCisgICAgZGVmIGRlY2xzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2NwcF9kZWNsKGEudHlw
ZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgdHlwZXMoc2VsZik6Cisg
ICAgICAgIHJldHVybiBbYS50eXBlIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiBfX3N0
cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKHN0cihhKSBmb3IgYSBpbiBzZWxm
LmFyZ3MpCisKKworY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBh
cmdzOiBjcHBfYXJnX2xpc3QKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBpc19leHRl
bnNpb246IGJvb2wKKyAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBjcHBfYXJnX2xp
c3QsIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAg
ICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGFy
Z3MKKyAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBpc19leHRlbnNpb24KKyAgICAgICAgc2Vs
Zi5vdmVybG9hZF9zdWZmaXggPSAiIgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAg
IHJldHVybiBmIntzZWxmLnJldHVybl90eXBlfSB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9
KSIKKworICAgIGRlZiBnZXRfYXJnc19jYXRlZ29yaWVzKHNlbGYpIC0+IFR1cGxlW0xpc3RbY3Bw
X2FyZ10sIExpc3RbY3BwX2FyZ11dOgorICAgICAgICBpbl9hcmdzID0gW10KKyAgICAgICAgb3V0
X2FyZ3MgPSBbXQorICAgICAgICBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJnczoKKyAgICAgICAgICAg
ICNmbXQ6IG9mZgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKSBvciBcCisgICAg
ICAgICAgICAgICAgYS50eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAgICAgICAgICAgIG91dF9h
cmdzICs9IFthXQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVf
Y29udGFpbmVyKSBhbmQgKCgoYS50eXBlLmlzX3NwYW4oKSBvciBhLnR5cGUuaXNfZHluYW1pY19z
cGFuKCkpIGFuZCBub3QgYS50eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCkpKToK
KyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgaW5fYXJncyArPSBbYV0KKyAgICAgICAgICAgICNmbXQ6IG9uCisgICAgICAg
IHJldHVybiBpbl9hcmdzLCBvdXRfYXJncworCisgICAgZGVmIGlzX2ltcGxlbWVudGVkX3R5cGUo
c2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiB0eXBlLmlzX2NvbnN0X3BvaW50ZXIo
KToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAg
ZGVmIGlzX2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICAjIiBpbiBhLnR5cGUudHlwZV9uYW1l
IGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgIyAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgI2lmICJHQ0dMc3luYyIgaW4gc2VsZi5yZXR1cm5fdHlwZS50eXBlX25hbWU6CisgICAg
ICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLm5hbWUgPT0gImJ1ZlNpemUi
IGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg
ICAgICBpZiBhbnkoYS50eXBlLmlzX3BvaW50ZXIoKSBhbmQgYS50eXBlLmdldF92YWx1ZV90eXBl
KCkuaXNfdm9pZCgpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICBpZiBhbnkobm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShhLnR5
cGUpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor
ICAgICAgICBpZiBzZWxmLnJldHVybl90eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKHNlbGYu
cmV0dXJuX3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBU
cnVlCisKKword2Via2l0X2lwY190eXBlczogRGljdFtjcHBfdHlwZSwgY3BwX3R5cGVdID0ge30K
Kword2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzOiBEaWN0W1R1cGxlW2NwcF90eXBlLCBjcHBf
dHlwZV0sIENwcEV4cHJDb252ZXJ0ZXJdID0ge30KKworCitkZWYgd2Via2l0X2lwY19jb252ZXJ0
X2V4cHIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAi
IiIgQ29udmVydHMgYGV4cHJgIG9mIHR5cGUgb2YgYHNlbGZgIHRvIGB0eXBlYCAiIiIKKyAgICBj
b252ZXJ0ID0gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLmdldCgoZXhwci50eXBlLCB0eXBl
KSwgTm9uZSkKKyAgICBpZiBub3QgY29udmVydDoKKyAgICAgICAgaWYgZXhwci50eXBlID09IHR5
cGU6CisgICAgICAgICAgICByZXR1cm4gZXhwcgorICAgICAgICBjb252ZXJ0ID0gY3BwX2ltcGxp
Y2l0X2Nhc3QKKyAgICByZXR1cm4gY29udmVydChleHByLCB0eXBlKQorCisKK2RlZiB3ZWJraXRf
aXBjX2dldF9zcGFuX3RyYW5zZmVyX3R5cGUodHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4g
Y3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5n
ZXRfZGVjYXlfdHlwZSgpCisgICAgYXJpdHkgPSB0eXBlLmdldF9hcml0eSgpCisgICAgd2Via2l0
X2lwY19lbGVtZW50X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2VsZW1lbnRfdHlwZV0gaWYgbm90
IGVsZW1lbnRfdHlwZS5pc192b2lkKCkgZWxzZSBnZXRfY3BwX3R5cGUoJ3VpbnQ4X3QnKQorICAg
IGlmIGFyaXR5IGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBD
OjpBcnJheVJlZmVyZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0sIHthcml0eX0+
IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpBcnJheVJlZmVyZW5jZTx7c3RyKHdl
YmtpdF9pcGNfZWxlbWVudF90eXBlKX0+IikKKworCisKK2RlZiB3ZWJraXRfaXBjX2dldF9zcGFu
X3N0b3JlX3R5cGUodHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlwZToKKyAgICBl
bGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNheV90eXBlKCkK
KyAgICBpZiBlbGVtZW50X3R5cGUuaXNfdm9pZCgpOgorICAgICAgICBlbGVtZW50X3R5cGUgPSBn
ZXRfY3BwX3R5cGUoJ0dDR0xjaGFyJykKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3BhbigpOgor
ICAgICAgICBpbmxpbmVfY2FwYWNpdHkgPSAxNiBpZiAiZmxvYXQiIGluIGVsZW1lbnRfdHlwZS50
eXBlX25hbWUgZWxzZSA0CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJWZWN0b3I8e3N0
cihlbGVtZW50X3R5cGUpfSwge3N0cihpbmxpbmVfY2FwYWNpdHkpfT4iKQorICAgIHJldHVybiBn
ZXRfY3BwX3R5cGUoZiJzdGQ6OmFycmF5PHtzdHIoZWxlbWVudF90eXBlKX0sIHtzdHIodHlwZS5n
ZXRfYXJpdHkoKSl9PiIpCisKK2RlZiB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lv
bihleHByIDogY3BwX2V4cHIsIHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHBy
OgorICAgIHBvaW50ZXJfY2FzdF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRf
cG9pbnRlcl90eXBlKCkKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICBy
ZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDx7c3Ry
KHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9LnNp
emUoKSkiKQorCisgICAgYXNzZXJ0KHR5cGUuaXNfc3BhbigpKQorICAgIHJldHVybiBjcHBfZXhw
cih0eXBlLCBmIm1ha2VHQ0dMU3Bhbjx7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4ocmVpbnRlcnBy
ZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSkpIikK
KworIyBTZWUgbWVzc2FnZXMucHkgZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUKK3dlYmtpdF9pcGNf
YnVpbHRpbl90eXBlcyA9IHNldCgKKyAgICBbInVpbnQ4X3QiLCAidWludDE2X3QiLCAidWludDMy
X3QiLCAidWludDY0X3QiLCAiaW50OF90IiwgImludDE2X3QiLCAiaW50MzJfdCIsICJpbnQ2NF90
IiwgImJvb2wiLCAiZmxvYXQiLCAiZG91YmxlIiAiYm9vbCJdCispCisKKworZGVmIHdlYmtpdF9p
cGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUodHlwZTogY3BwX3R5cGUpIC0+IGNwcF90eXBl
OgorICAgIGlmIHR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoKKyAg
ICAgICAgcmV0dXJuIHR5cGUKKyAgICByZXR1cm4gdHlwZS5nZXRfcnZhbHVlX3R5cGUoKQorCisK
K2RlZiB3ZWJraXRfaXBjX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6Cisg
ICAgaWYgZXhwci50eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6Cisg
ICAgICAgIHJldHVybiBleHByCisgICAgcmV0dXJuIGNwcF9tb3ZlX2V4cHIoZXhwcikKKworCitk
ZWYgd2Via2l0X2lwY19tc2dfbmFtZShmdW5jOiBjcHBfZnVuYyk6CisgICAgcmV0dXJuIGZ1bmMu
bmFtZVswXS5jYXBpdGFsaXplKCkgKyBmdW5jLm5hbWVbMTpdICsgZnVuYy5vdmVybG9hZF9zdWZm
aXgKKworCitjbGFzcyB3ZWJraXRfaXBjX21zZyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAg
IGluX2FyZ3M6IGNwcF9hcmdfbGlzdAorICAgIG91dF9hcmdzOiBjcHBfYXJnX2xpc3QKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9
IHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYykKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBm
dW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBpcGNfaW5fYXJncyA9IFtjcHBfYXJn
KHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSBmb3IgYSBpbiBpbl9hcmdzXQorICAg
ICAgICBpcGNfb3V0X2FyZ3MgPSBbXQorICAgICAgICBpZiBub3QgZnVuYy5yZXR1cm5fdHlwZS5p
c192b2lkKCk6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lw
Y190eXBlc1tmdW5jLnJldHVybl90eXBlXSwgInJldHVyblZhbHVlIildCisgICAgICAgIGZvciBh
IGluIG91dF9hcmdzOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtp
dF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKV0KKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19k
eW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICBpcGNfaW5fYXJncyArPSBbY3BwX2FyZyhn
ZXRfY3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIildCisgICAgICAgIHNlbGYu
aW5fYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfaW5fYXJncykKKyAgICAgICAgc2VsZi5vdXRfYXJn
cyA9IGNwcF9hcmdfbGlzdChpcGNfb3V0X2FyZ3MpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToK
KyAgICAgICAgaWYgbGVuKHNlbGYub3V0X2FyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4g
ZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIC0+ICh7c3RyKHNl
bGYub3V0X2FyZ3MpfSkgU3luY2hyb25vdXMiCisgICAgICAgIHJldHVybiBmIlxuICAgIHZvaWQg
e3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkiCisKKworY2xhc3Mgd2Via2l0X2lwY19j
cHBfcHJveHlfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIG1zZ19uYW1lOiBzdHIK
KyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKworICAg
IHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAg
ICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHJldHVybl9zdG10czogTGlzdFtzdHJd
CisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2NwcF9l
eHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAg
ICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5tc2dfbmFtZSA9IHdl
YmtpdF9pcGNfbXNnX25hbWUoY3BwX2Z1bmMpCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBj
cHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisg
ICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3RtdHMg
PSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYucmV0
dXJuX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAgICAgIHNlbGYu
b3V0X2V4cHJzID0gW10KKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBfZnVuYy5nZXRf
YXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1ZShjcHBf
ZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZ3MoaW5fYXJncykK
KyAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmdzKG91dF9hcmdzKQorICAgICAgICBzZWxmLnBy
b2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBpbl9l
eHBycyA9ICIsICIuam9pbihbc3RyKGkpIGZvciBpIGluIHNlbGYuaW5fZXhwcnNdKQorICAgICAg
ICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIHNlbGYub3V0X2V4cHJzKQor
ICAgICAgICBpc19hc3luYyA9IHNlbGYucmV0dXJuX3R5cGUuaXNfdm9pZCgpIGFuZCBsZW4ob3V0
X2V4cHJzKSA9PSAwCisgICAgICAgIGlmIGlzX2FzeW5jOgorICAgICAgICAgICAgc2VsZi5jYWxs
X3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsiLAorICAgICAgICAgICAgXQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgc2VuZF9yZXN1bHQgPSAiIgorICAgICAgICAgICAgaWYgc2VsZi5wb3N0X2NhbGxfc3Rt
dHM6IAorICAgICAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gImF1dG8gc2VuZFJlc3VsdCA9ICIK
KyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFsKKyAgICAgICAgICAgICAg
ICAgICAgImlmIChzZW5kUmVzdWx0KSIgKyAoIiB7IiBpZiBsZW4oc2VsZi5wb3N0X2NhbGxfc3Rt
dHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0gKyBbIiAgICAiICsgcyBmb3IgcyBp
biBzZWxmLnBvc3RfY2FsbF9zdG10c10gKyBbCisgICAgICAgICAgICAgICAgICAgICgifSIgaWYg
bGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgIGYie3Nl
bmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3Nl
bGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7IiwKKyAgICAgICAgICAgIF0KKworCisgICAgZGVmIHByb2Nl
c3NfaW5fYXJncyhzZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGkg
aW4gaW5fYXJnczoKKyAgICAgICAgICAgIGlmIGkudHlwZS5pc19jb25zdF9wb2ludGVyKCk6Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHBy
KGkudHlwZSwgaS5uYW1lKSwgd2Via2l0X2lwY190eXBlc1tpLnR5cGVdKV0KKworICAgIGRlZiBw
cm9jZXNzX291dF9hcmdzKHNlbGYsIG91dF9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAg
Zm9yIG8gaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpZiBvLnR5cGUuaXNfcG9pbnRlcigpOgor
ICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBvLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbdmFs
dWVfdHlwZV0KKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3ZhbHVlX3R5
cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10
cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAg
ICAgICAgIGUgPSBjcHBfZXhwcih2LnR5cGUsIHYubmFtZSkKKyAgICAgICAgICAgICAgICBzZWxm
Lm91dF9leHBycyArPSBbZV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyAr
PSBbCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAgICAgICAgICAgICBm
ImlmICh7by5uYW1lfSkiLAorICAgICAgICAgICAgICAgICAgICBmIiAgICAqe28ubmFtZX0gPSB7
d2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgdmFsdWVfdHlwZSl9OyIKKyAgICAgICAgICAgICAg
ICAgICAgI2ZtdDogb24KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBlbGlmIG8udHlw
ZS5pc19zcGFuKCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lw
Y190eXBlc1tvLnR5cGVdCisgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uod2Via2l0
X2lwY190eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgICAgIHYgPSBjcHBf
YXJnKHdlYmtpdF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQor
ICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYubmFt
ZSldCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUoInNp
emVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3Rf
Y2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgIGYibWVtY3B5KHtvLm5hbWV9LmRh
dGEsIHt2Lm5hbWV9LmRhdGEoKSwge28ubmFtZX0uYnVmU2l6ZSAqIHNpemVvZih7c3RyKHdlYmtp
dF9pcGNfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKSl9KSk7IgorICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2Nw
cF9leHByKG8udHlwZSwgby5uYW1lKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92YWx1ZShz
ZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlwZS5pc192
b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJl
dHVybl90eXBlCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0
dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIoaXBjX3JldHVy
bl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9
fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtyZXR1cm5fdmFsdWVfZXhwcl0gKyBzZWxm
Lm91dF9leHBycworICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtmInJldHVybiB7c3RyKHdl
YmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCByZXR1cm5fdHlwZSkpfTsi
XQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5U
IiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICIiLmpvaW4oZiJc
biAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMg
KyBzZWxmLnBvc3RfY2FsbF9zdG10cyArIHNlbGYucmV0dXJuX3N0bXRzKQorICAgICAgICByZXR1
cm4gZiIiIlxue3N0cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fQore3t7Ym9keX0KK319
IiIiCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXIob2JqZWN0KToK
KyAgICBuYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBf
YXJnX2xpc3QKKyAgICBib2R5OiBMaXN0W3N0cl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBj
cHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisK
KyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90eXBlCisgICAgICAg
IHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5ib2R5ID0gWyJub3RJbXBs
ZW1lbnRlZCgpOyJdCisgICAgICAgIGlmIGNwcF9mdW5jLnJldHVybl90eXBlLnR5cGVfbmFtZSAh
PSAidm9pZCI6CisgICAgICAgICAgICBzZWxmLmJvZHkgKz0gWyJyZXR1cm4geyB9OyJdCisKKyAg
ICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJf
IiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIlxue1xuICAgICIgKyAiXG4g
ICAgIi5qb2luKHNlbGYuYm9keSkgKyAiXG59IgorICAgICAgICByZXR1cm4gZiJcbntzdHIoc2Vs
Zi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxmLm5hbWV9
KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH17Ym9keX0iCisKKworY2xhc3MgY29udGV4dF9wcm94
eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBpbXBsczog
TGlzdFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsXQorICAgIHVuaW1wbHM6IExpc3Rbd2Via2l0
X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVu
Y3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSwgdW5pbXBsZW1lbnRlZDogSXRlcmFibGVbY3BwX2Z1bmNd
KToKKyAgICAgICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKGYpIGZv
ciBmIGluIGZ1bmNzXQorICAgICAgICBzZWxmLnVuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJv
eHlfcGxhY2Vob2xkZXIoZikgZm9yIGYgaW4gdW5pbXBsZW1lbnRlZF0KKworICAgIGRlZiBnZXRf
ZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBp
biBzZWxmLmltcGxzICsgc2VsZi51bmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgor
ICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNf
Zm4sCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQo
c2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3Mgd2Via2l0X2lwY19j
cHBfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAor
ICAgIGlzX2V4dGVuc2lvbjogYm9vbAorICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAg
ICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQor
ICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBfZXhw
cl0KKyAgICByZXR1cm5fdmFsdWVfZXhwcjogT3B0aW9uYWxbY3BwX2V4cHJdCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0g
Y3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNwcF9mdW5jLm92
ZXJsb2FkX3N1ZmZpeAorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3QoW10pCisgICAg
ICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCisgICAgICAgIHNl
bGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBbXQorICAg
ICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBb
XQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVl
X2V4cHIgPSBOb25lCisKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1ZShjcHBfZnVu
Yy5yZXR1cm5fdHlwZSkKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBfZnVuYy5nZXRf
YXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2FyZ3MoY3BwX2Z1bmMuYXJn
cy5hcmdzLCBzZXQoaW5fYXJncyksIHNldChvdXRfYXJncykpCisgICAgICAgIHNlbGYucHJvY2Vz
c19jYWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGV4dCA9ICJn
ZXRFeHRlbnNpb25zKCkuIiBpZiBzZWxmLmlzX2V4dGVuc2lvbiBlbHNlICIiCisKKyAgICAgICAg
aW5fZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYuaW5fZXhwcnMpCisgICAg
ICAgIGlzX2FzeW5jID0gbGVuKHNlbGYub3V0X2V4cHJzKSA9PSAwCisKKyAgICAgICAgY2FsbF9l
eHByID0gZiJtX2NvbnRleHQtPntleHR9e3NlbGYubmFtZX0oe2luX2V4cHJzfSkiCisgICAgICAg
IGlmIG5vdCBzZWxmLnJldHVybl92YWx1ZV9leHByOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0
bXRzICs9IFtmIntjYWxsX2V4cHJ9OyJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
LmNhbGxfc3RtdHMgKz0gW2Yie3N0cihzZWxmLnJldHVybl92YWx1ZV9leHByKX0gPSB7Y2FsbF9l
eHByfTsiXQorICAgICAgICBpZiBub3QgaXNfYXN5bmM6CisgICAgICAgICAgICBvdXRfZXhwcnMg
PSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAg
c2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gW2YiY29tcGxldGlvbkhhbmRsZXIoe291dF9leHByc30p
OyJdCisKKyAgICBkZWYgcHJvY2Vzc19hcmdzKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10sIGlu
X2FyZ3M6IFNldFtjcHBfYXJnXSwgb3V0X2FyZ3M6IFNldFtjcHBfYXJnXSk6CisgICAgICAgIGZv
ciBhIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgor
ICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgaWYgYSBpbiBpbl9hcmdz
OgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmcoYSkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmcoYSkKKyAgICAgICAgaWYg
c2VsZi5vdXRfZXhwcnM6CisgICAgICAgICAgICBvdXRfYXJnX2RlY2xzID0gIiwgIi5qb2luKGYi
e3N0cihlLnR5cGUpfSIgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAgICBzZWxm
LmFyZ3MuYXJncyArPSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoZiJDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHtvdXRfYXJnX2RlY2xzfSk+JiYiKSwgImNvbXBsZXRpb25IYW5kbGVyIildCisKKyAgICBk
ZWYgcHJvY2Vzc19pbl9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIHNlbGYuYXJncy5h
cmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUod2Vi
a2l0X2lwY190eXBlc1thLnR5cGVdKSwgYS5uYW1lKV0KKyAgICAgICAgc2VsZi5pbl9leHBycyAr
PSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIod2Via2l0X2lwY190eXBlc1thLnR5
cGVdLCBhLm5hbWUpLCBhLnR5cGUpXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0X2FyZyhzZWxmLCBh
OiBjcHBfYXJnKToKKyAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAg
IHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEubmFtZSkKKyAg
ICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2YWx1ZV9hcmcudHlwZSl9
IHtzdHIodmFsdWVfYXJnLm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4
cHJzICs9IFtjcHBfZXhwcihhLnR5cGUsIGYiJnt2YWx1ZV9hcmcubmFtZX0iKV0KKyAgICAgICAg
ICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAgICAg
ICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2UudHlwZV0KKyAg
ICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB3
ZWJraXRfaXBjX3ZhbHVlX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19keW5hbWljX3Nw
YW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29u
dGFpbmVyKSkKKyAgICAgICAgICAgIHNpemVfYXJnID0gY3BwX2FyZyhnZXRfY3BwX3R5cGUoInVp
bnQ2NF90IiksIGYie2EubmFtZX1TaXplIikKKyAgICAgICAgICAgIHNlbGYuYXJncy5hcmdzICs9
IFtzaXplX2FyZ10KKyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9hcmcod2Via2l0X2lwY19n
ZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJl
X2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5h
bWUpfShzdGF0aWNfY2FzdDxzaXplX3Q+KHthLm5hbWV9U2l6ZSksIDApOyJdCisgICAgICAgICAg
ICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgZiJ7c3RvcmVfYXJn
Lm5hbWV9IildCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZl
cnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJraXRf
aXBjX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICBh
c3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAg
ICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShhLnR5
cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIo
c3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAg
ICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcu
bmFtZSldCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2Eu
dHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRf
ZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJraXRfaXBj
X3R5cGUpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGEudHlwZS5pc19yZWZl
cmVuY2UoKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1th
LnR5cGVdCisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVf
dHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntz
ZWxmLm5zKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9IHt7IH19OyJdCisg
ICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQor
ICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4
cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB3
ZWJraXRfaXBjX3R5cGUpKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92YWx1ZShzZWxmLCBy
ZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlwZS5pc192b2lkKCk6
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lw
Y190eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhw
cihyZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10
cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9
ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfbW92ZV9l
eHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCBpcGNfcmV0dXJu
X3R5cGUpKV0KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IHJldHVybl92YWx1ZV9l
eHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgYm9keSA9ICIiLmpvaW4oZiJc
biAgICAgICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0
bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIiICAgIHZvaWQg
e3NlbGYubmFtZX17c2VsZi5vdmVybG9hZF9zdWZmaXh9KHtzdHIoc2VsZi5hcmdzKX0pCisgICAg
e3t7Ym9keX0KKyAgICB9fSIiIgorCisgICAgZGVmIG5zKHNlbGYsIHR5cGU6IGNwcF90eXBlKToK
KyAgICAgICAgIyBUT0RPOiBuYW1lc3BhY2UgaW5mbyBpcyBub3Qgc3RvcmVkIGluIG5hbWVzLgor
ICAgICAgICBpZiB0eXBlLnR5cGVfbmFtZSA9PSAiQWN0aXZlSW5mbyI6CisgICAgICAgICAgICBy
ZXR1cm4gIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjoiICsgc3RyKHR5cGUpCisgICAgICAg
IHJldHVybiBzdHIodHlwZSkKKworZGVmIHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZm
aXgoZnVuY3MgOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgIGNvdW50cyA9IGNvbGxlY3Rpb25z
LkNvdW50ZXIoZi5uYW1lIGZvciBmIGluIGZ1bmNzKQorICAgIHN1ZmZpeGVzIDogQ291bnRlcltz
dHJdID0gY29sbGVjdGlvbnMuQ291bnRlcigpCisgICAgZm9yIGYgaW4gZnVuY3M6CisgICAgICAg
IGlmIGNvdW50c1tmLm5hbWVdID4gMToKKyAgICAgICAgICAgIGYub3ZlcmxvYWRfc3VmZml4ID0g
c3RyKHN1ZmZpeGVzW2YubmFtZV0pCisgICAgICAgICAgICBzdWZmaXhlcy51cGRhdGUoW2YubmFt
ZV0pCisKKworY2xhc3MgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToK
KyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRv
ci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfaW1wbF0KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5pbXBs
cyA9IFt3ZWJraXRfaXBjX2NwcF9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdl
dF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZvciBp
IGluIHNlbGYuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdyaXRl
X2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc19mbiwKKyAgICAgICAgICAgIGNv
bnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5jdGlvbnMoKSksCisg
ICAgICAgICkKKworCitjbGFzcyBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVyYXRvcihvYmpl
Y3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBXZWJLaXQgSVBDIG1lc3NhZ2UgZGVm
aW5pdGlvbiBnZW5lcmF0b3IuIgorICAgIG1zZ3M6IExpc3Rbd2Via2l0X2lwY19tc2ddCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAg
IHNlbGYubXNncyA9IFt3ZWJraXRfaXBjX21zZyhmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRl
ZiBnZXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiIi5qb2luKHN0cihtKSBmb3Ig
bSBpbiBzZWxmLm1zZ3MpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdyaXRl
X2ZpbGUoY29udGV4dF9tZXNzYWdlc19mbiwgY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZS5mb3Jt
YXQoc2VsZi5nZXRfbWVzc2FnZXMoKSkpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnKGFyZ19zcGVj
OiBzdHIsIGFyZ19pbmRleDogaW50KToKKyAgICByID0gYXJnX3NwZWMucnNwbGl0KCIgIiwgMSkK
KyAgICBuYW1lID0gIiIKKyAgICB0eXBlID0gTm9uZQorICAgIGlmIGxlbihyKSA+IDEgYW5kIHJb
MF0gIT0gImNvbnN0IjoKKyAgICAgICAgbmFtZSA9IHJbMV0uc3RyaXAoKQorICAgICAgICB0eXBl
ID0gZ2V0X2NwcF90eXBlKHJbMF0pCisgICAgZWxzZToKKyAgICAgICAgbmFtZSA9ICJhcmd7fSIu
Zm9ybWF0KGFyZ19pbmRleCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShhcmdfc3BlYykK
KyAgICByZXR1cm4gY3BwX2FyZyh0eXBlLCBuYW1lKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZ19s
aXN0KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgorICAgIHJldHVybiBjcHBfYXJnX2xpc3Qo
W2NyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3IgaSwgZSBpbiBlbnVt
ZXJhdGUoYXJnc19zcGVjcyldKQorCisKK2RlZiBjcmVhdGVfY3BwX2Z1bmMobmFtZTogc3RyLCBy
ZXR1cm5fc3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVuc2lvbjogYm9v
bCk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90
eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpLCBp
c19leHRlbnNpb249aXNfZXh0ZW5zaW9uKQorCisKK2RlZiByZWFkX2xpbmVzX3VudGlsKGxpbmVz
IDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltzdHIsIE5vbmUsIE5v
bmVdOgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBpZiByZS5tYXRjaChtYXRjaCwg
bGluZS5zdHJpcCgpKToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHlpZWxkIGxpbmUKKwor
ZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigidXNhZ2U6
ICVwcm9nIFtvcHRpb25zXSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS12ZXJib3NlIiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUHJpbnQgc29tZSBkZWJ1ZyBpbmZvIGZyb20gdGhl
IGdlbmVyYXRvciBzY3JpcHQiKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisK
KyAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3RlIGZyb20gd2Vi
IHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCisKKyAgICAjIEZJWE1FOiBVbnRpbCBleHRlbnNpb25z
IGhlYWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUgdGhlIGltcGxlbWVudGF0
aW9uCisgICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVyIGEgZnVuY3Rpb24gaXMg
b3IgaXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4KKyAgICBleHRlbnNpb25fc2lnbmF0dXJl
cyA6IFNldFtzdHJdID0gc2V0KCkKKyAgICB3aXRoIG9wZW4oZXh0ZW5zaW9uc19pbnB1dF9mbikg
YXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAgICAgIG0g
PSByZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkgPSAwOyIsIGxpbmUp
CisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1
bmMoCisgICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBfc3Bs
aXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPVRy
dWUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9zaWduYXR1
cmVzLnVwZGF0ZShbc3RyKGZ1bmMpXSkKKyAgICBmdW5jcyA9IFtdCisgICAgdW5pbXBsZW1lbnRl
ZCA9IFtdCisgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6CisgICAgICAgIHdpdGgg
b3BlbihmbikgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQor
ICAgICAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEZ1bmN0aW9u
cyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBn
ZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAg
ICAgICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBFbmQgb2Yg
bGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAg
ICAgIG0gPSByZS5tYXRjaChyIlxzKihcUyspXHMrKFx3KylcKCguKilcKSBmaW5hbDsiLCBsaW5l
KQorICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgIGZ1bmNfbmFtZSA9
IG1bMl0KKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVuY19uYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9
Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAgICAgICBpc19l
eHRlbnNpb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAg
ICAgZnVuYy5pc19leHRlbnNpb24gPSBzdHIoZnVuYykgaW4gZXh0ZW5zaW9uX3NpZ25hdHVyZXMK
KyAgICAgICAgICAgICAgICAgICAgaWYgZnVuYy5pc19pbXBsZW1lbnRlZCgpOgorICAgICAgICAg
ICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKGZ1bmMpCisgICAgICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmltcGxlbWVudGVkLmFwcGVuZChmdW5jKQor
CisKKyAgICB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzKQorICAgICMg
SW5pdGlhbGl6ZSBXZWJLaXQgSVBDIGdlbmVyYXRpb24uIENvbnN0cnVjdCB0eXBlIG1hcHBpbmdz
IGZvciB0aGUgdXNlZCBDKysgdHlwZXMgLT4gSVBDIHR5cGVzLgorICAgICMgVE9ETzogbmFtZXNw
YWNpbmcgaXNzdWVzLgorICAgIGFpX3R5cGUgPSBnZXRfY3BwX3R5cGUoIkFjdGl2ZUluZm8mIikK
KyAgICBhaV90cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKCJXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbyIpCisgICAgd2Via2l0X2lwY190eXBlc1thaV90eXBlXSA9IGFp
X3RyYW5zZmVyX3R5cGUKKworICAgIHdpdGggb3Blbih0eXBlc19pbnB1dF9mbikgYXMgZjoKKyAg
ICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgIGZvciBfIGluIHJlYWRf
bGluZXNfdW50aWwobGluZXMsICIvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdl
YktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBz
Y3JpcHQuIik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGlu
ZXNfdW50aWwobGluZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2Vi
Z2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0
XChzdGQ6OmlzX3NhbWVfdjwoXHcrKSwgKFx3Kyk+XCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlm
IG06CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tnZXRfY3BwX3R5cGUobVsxXSld
ID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpID09IHNp
emVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAg
ICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5
cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVz
W2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19j
b252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBl
KV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAg
ICAgIyBGSVhNRTogSGVyZSB3ZSB1c2UgPD0gaW5zdGVhZCBvZiA9PSBkdWUgdG8gcG9pbnRlcnMs
IHN1Y2ggYXMgR0NHTHN5bmMsIEdDR0xpbnRwdHIsIC4uLi4KKyAgICAgICAgICAgICMgVGhpcyBl
bmRzIHVwIGZhaWxpbmcgaWYgdGhlcmUgZXZlciBpcyBhcnJheXMgb2YgdGhlc2UgdHlwZXMsIHNp
bmNlIGFycmF5cyBhcmUgY3VycmVudGx5CisgICAgICAgICAgICAjIHJlaW50ZXJwcmV0LWNhc3Rl
ZC4KKyAgICAgICAgICAgICMgV2ViS2l0IElQQyByZXF1aXJlcyBvbmUgc2l6ZWQgdHlwZSwgYnV0
IHRoZSBzaXplIG9mIHRoZXNlIHBvaW50ZXItYmFzZWQgdmFsdWVzIHdpbGwgY2hhbmdlCisgICAg
ICAgICAgICAjIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgICAgIG0gPSByZS5tYXRj
aChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVvZlwoKFx3KylcKVwp
OyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0g
Z2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5
cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlw
Y190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBf
dHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfc3RhdGlj
X2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNo
KHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9mXCgoXHcrKVwpICYm
IHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAg
ICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQor
ICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAg
ICAgICAgY3BwX2Nhc3RfdGhyb3VnaF90eXBlID0gZ2V0X2NwcF90eXBlKG1bNF0pCisgICAgICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0g
PSBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjcHBfY2FzdF90aHJv
dWdoX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhp
cGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXJfdGhy
b3VnaChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICMgRm9yIGFsbCB0eXBlcyBpbiB0aGUgaW5wdXQgQVBJLCBmb3JtIGNvcnJlc3BvbmRpbmcg
SVBDIHR5cGVzIGFuZCBjb252ZXJzaW9ucy4KKyAgICAjIFRPRE86IHRoaXMgaXMgbm90IGRyaXZl
biBieSB0aGUgdHlwaW5nLgorICAgIGFsbF90eXBlcyA9IHNldCgpCisgICAgZm9yIGZ1bmMgaW4g
ZnVuY3M6CisgICAgICAgYWxsX3R5cGVzLnVwZGF0ZShmdW5jLmFyZ3MudHlwZXMoKSArIFtmdW5j
LnJldHVybl90eXBlXSkKKyAgICAjIFNvcnQgYnkgbGVuIHNvIHRoYXQgdGVtcGxhdGUgYXJncyBj
b21lIGJlZm9yZSB0ZW1wbGF0ZXMuCisgICAgZm9yIGNwcF90eXBlIGluIHNvcnRlZChhbGxfdHlw
ZXMsIGtleT1sYW1iZGEgeDogbGVuKHgudHlwZV9uYW1lKSk6CisgICAgICAgIGlmIGNwcF90eXBl
IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgCisgICAg
ICAgIGlmIGNwcF90eXBlLmlzX2R5bmFtaWNfc3BhbigpIG9yIGNwcF90eXBlLmlzX3NwYW4oKToK
KyAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5zZmVy
X3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9
IHRyYW5zZmVyX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAgaWYgY3BwX3R5cGUu
Z2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKToKKyAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSB3ZWJraXRf
aXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHRyYW5zZmVyX3R5cGUsIGNw
cF90eXBlKV0gPSB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lvbgorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdG9yZV90eXBlID0gd2Via2l0X2lwY19nZXRfc3Bh
bl9zdG9yZV90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNf
Y29udmVydGVyc1soc3RvcmVfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3JlaW50
ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICBlbGlmIGNwcF90eXBlLmlzX3JlZmVyZW5j
ZSgpIG9yIGNwcF90eXBlLmlzX2NvbnN0X3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2NvbnRh
aW5lcigpOgorICAgICAgICAgICAgdmFsdWVfdHlwZSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBl
KCkgaWYgbm90IGNwcF90eXBlLmlzX2NvbnRhaW5lcigpIGVsc2UgY3BwX3R5cGUKKyAgICAgICAg
ICAgIGlmIHZhbHVlX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAgICAgICAgY29udGFp
bmVkX3R5cGUgPSB2YWx1ZV90eXBlLmdldF9jb250YWluZWRfdHlwZSgpCisgICAgICAgICAgICAg
ICAgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbY29udGFpbmVk
X3R5cGVdCisgICAgICAgICAgICAgICAgaWYgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9PSBj
b250YWluZWRfdHlwZToKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBf
dHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAgICAgdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZShmInt2YWx1ZV90eXBlLmdldF9jb250
YWluZXJfbmFtZSgpfTx7c3RyKHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUpfT4iKQorICAgICAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5cGUK
KyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBIZXJlIG1pZ2h0IGJlIGNhc2Ugd2hlcmUgVmVj
dG9yPEdDR0xpbnQ+IHdhcyB1c2VkIGluIHRoZSBpbnRlcmZhY2UgYW5kIFZlY3RvcjxpbnQzMl90
PiBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIElQQyBkZWZpbml0aW9uLiBU
aGVyZSBpcyBubyBzZW5zaWJsZSB3YXkgdG8gZG8gdGhpcyBhdCB0aGUgbW9tZW50LiBXZSBkbyBu
b3QgY29udmVydCwgcmF0aGVyCisgICAgICAgICAgICAgICAgICAgICMgZXhwZWN0IHRoYXQgYWxs
IHRoZSBpbnZvY2F0aW9ucyBhcmUgdGFrZW4gY2FyZSBvZiB0aGUgZmFjdCB0aGF0IEdDR0xpbnQg
aXMgdGhlIHNhbWUgdHlwZSBhcyBpbnQzMl90LgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMg
d2lsbCBub3QgaG9sZCBmb3IgYWxsIHR5cGVzIHN1Y2ggYXMgR0NHTGJvb2xlYW4uCisgICAgICAg
ICAgICAgICAgICAgICN3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFu
c2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVd
ID0gdmFsdWVfdHlwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c1tjcHBfdHlwZV0gPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgCisgICAgIyBUaGUg
aW5wdXQgdG8gdGhlIGdlbmVyYXRvcnMgaXMgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3RlLgor
ICAgICMgUnVuIHRoZSB2YXJpb3VzIGdlbmVyYXRvcnMuCisgICAgZ2VuZXJhdG9ycyA9IFsKKyAg
ICAgICAgY29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MsIHVuaW1w
bGVtZW50ZWQpLAorICAgICAgICBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5j
cyksCisgICAgICAgIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAg
ICBdCisgICAgZm9yIGcgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgZy5nZW5lcmF0ZSgpCisKKyAg
ICBpZiBvcHRpb25zLnZlcmJvc2U6CisgICAgICAgIHByaW50KCJJbXBsZW1lbnRlZDoiKQorICAg
ICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIoaSl9IGZpbmFsXG4iIGZvciBpIGluIGZ1bmNz
KSkKKyAgICAgICAgcHJpbnQoIlVuaW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIuam9p
bihmIiAgICB7c3RyKHUpfSBmaW5hbFxuIiBmb3IgdSBpbiB1bmltcGxlbWVudGVkKSkKKyAgICAg
ICAgcHJpbnQoZiJJbXBsZW1lbnRlZDoge2xlbihmdW5jcyl9LCB1bmltcGxlbWVudGVkOiB7bGVu
KHVuaW1wbGVtZW50ZWQpfSwgdG90YWw6IHtsZW4oZnVuY3MpK2xlbih1bmltcGxlbWVudGVkKX0i
KQorICAgICAgICBwcmludCgiQysrIHR5cGUgbWFwIHRvIFdlYktpdCBJUEMgdHlwZSBtYXA6IikK
KyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0
IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cih0
KX0gLT4ge3N0cih3ZWJraXRfaXBjX3R5cGVzW3RdKX0iKQorICAgICAgICBwcmludCgiQysrIHR5
cGVzIHdpdGhvdXQgV2ViS2l0IElQQyB0eXBlOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNwcF90
eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdCBub3QgaW4gd2Via2l0X2lwY190eXBlczoK
KyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSIpCisgICAgICAgIHByaW50KCJX
ZWJLaXQgSVBDIHR5cGUgY29udmVyc2lvbnMiKQorICAgICAgICBmb3IgKGEsIGIpLCBjb252ZXJ0
ZXIgaW4gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLml0ZW1zKCk6CisgICAgICAgICAgICBw
cmludChmIiAgICB7c3RyKGEpfSAtPiB7c3RyKGIpfSA6IHtjb252ZXJ0ZXIuX19uYW1lX199IikK
KyAgICAgICAgcHJpbnQoIkRvbmUuIikKKyAgICByZXR1cm4gMAorCisKK2lmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNkNzE0MmVjZjg0ZThk
NmYyOTllNWFjYmFkMjg4NGYwYTY4NzI5OTEuLjYwZWE4NmFmZTg3N2FmMmY5M2IxN2E3NjJhMWMy
YTQzMGFjMjM0NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0xMi0wMiAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEg
YmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQ
VQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktp
dCBJUEMuCisKKyAgICAgICAgQWRkcyB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgdGhlIG1pc3Npbmcg
ZnVuY3Rpb25hbGl0eS4gRG9lcyBub3QgeWV0CisgICAgICAgIGVuYWJsZSB0aGUgdGVzdHMgdGhh
dCBhY3R1YWxseSBwYXNzIGJ1dCB3aGljaCB3ZXJlIHNraXBwZWQgYmVmb3JlIHRoZQorICAgICAg
ICBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMjAtMTItMDEgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dMSUJdIEFkZCBzb21lIFdQRS1zcGVjaWZpYyBiYXNlbGluZXMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9n
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGEyMjUyOGZhMWIyNjc4NzMxODUzMDU4
MDAzMzkwZmQ3NTM3ZGMwYzYuLmJkMDcwOTIyMzdjN2M3YmM0ODIxNDkwYTJkNDY3MjYzYzcwOGM5
NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzE3LDYg
KzMxNywxNCBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1p
bWFnZS1hbGxvd2VkLXdpdGgtY3JlZGVudGlhbHMuaHRtbAogaHR0cC90ZXN0cy93ZWJnbCBbIFNr
aXAgXQoganMvc2hhcmVkLWFycmF5LWJ1ZmZlci13ZWJnbC5odG1sIFsgU2tpcCBdCiAKK3dlYmtp
dC5vcmcvYi8yMTgxODQgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFktZmFs
c2UuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90
ZXhJbWFnZTJELW1zZS1mbGlwWS10cnVlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMTkz
NDkgZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC11cGRhdGUtb24tZGlzcGxheS1jb25maWd1cmF0
aW9uLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9jYW52YXMvd2ViZ2wv
d2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMTkz
NTEgZmFzdC9jYW52YXMvd2ViZ2wvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBbIEZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9wcmVtdWx0aXBseWFscGhhLXRlc3Qu
aHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxOTM1MiBmYXN0L2NhbnZhcy93ZWJnbC9s
b3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1cmUuaHRtbCBbIEZhaWx1cmUgXQorCiB3ZWJncHUg
WyBTa2lwIF0KIAogYWNjZXNzaWJpbGl0eS9wcmVzcy13b3Jrcy1vbi1jb250cm9sLXR5cGVzLmh0
bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415216</attachid>
            <date>2020-12-02 06:06:26 -0800</date>
            <delta_ts>2020-12-02 06:12:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201202160624.patch</filename>
            <type>text/plain</type>
            <size>568864</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM4NWFiOWQ4Nzg5YzU4
MTBkOTNjOGIxNGExNWM5MWFlNzdiZGM3MS4uYTE1MDIwY2NkZTcxYjcwZmY4NGNlMmU0N2ExOWJh
OGNiOWU2OTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTEyLTAxICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVSBQcm9jZXNzOiBJT1N1cmZh
Y2VzIHNob3VsZCBub3QgYmUgbWFwcGVkIGludG8gdGhlIFdlYiBDb250ZW50IFByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWIzNTQ0Y2UwODJiZDhhYzJjZmZlY2IyMmQwMWY3MWE3NDI5NDUxZC4uZjY2OGI2
ZTNlYzVkNDExN2M3MWJiYTM2MDhmNWY4ODg1YTQ2MGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NTIgQEAKKzIwMjAtMTItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlV2ViR0xCYWNrZW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBJbXBsZW1lbnRlZCB3aXRo
IGEgZ2VuZXJhdG9yIHNjcmlwdCBpbXBsZW1lbnRpbmcgdGhlIElQQyB0byBwYXNzIHRoZQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTCBtZW1iZXIgZnVuY3Rpb24gY2FsbHMgZnJvbSB3ZWIgcHJv
Y2VzcyB0byB0aGUgR1BVCisgICAgICAgIHByb2Nlc3MuIFRoZSBzY3JpcHQgaXMgcnVuIGR1cmlu
ZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgY29tbWl0dGVk
IHRvIHRoZSByZXBvIGZvciBlYXNlIG9mIHJldmlldy4KKworICAgICAgICBJbXBsZW1lbnQgdGhl
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIFdlYktpdCBzaWRlLiBUaGlzIGNsYXNzIHdpbGwK
KyAgICAgICAgZm9yd2FyZCBjYWxscyByZWNlaXZlZCB2aWEgSVBDIHRvIHRoZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC4gQXQgdGhlCisgICAgICAgIG1vbWVudCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBpbnN0YW5jZSBpcyBhIGRpcmVjdCBjaGlsZCBvZgorICAgICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLgorCisgICAgICAgIENoYW5nZXMgV2ViS2l0IElQQyB0byBzdXBwb3J0IHJl
Y2VpdmluZyB0eXBlZCBhcnJheXMgYXMgcmVmZXJlbmNlcy4gVGhpcworICAgICAgICBpcyBuZWVk
ZWQgdG8gc3VibWl0IEdMIGRhdGEgYXJyYXlzLCBzdWNoIGFzIEdMZmxvYXQgYXJyYXlzIGRpcmVj
dGx5IGZyb20KKyAgICAgICAgdGhlIElQQyBkYXRhIHN0b3JlIHdpdGhvdXQgYW4gZXh0cmEgY29w
eS4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9ydCBwYXNzaW5nIGRhdGEg
cmVmZXJlbmNlcywgaS5lLgorICAgICAgICBEYXRhUmVmZXJlbmNlIG9yIEFycmF5UmVmZXJlbmNl
LCBhcyBhIHN5bmNocm9uaXplZCBjYWxsIHJldHVybiB2YWx1ZS4KKyAgICAgICAgVGhlIGNhbGxl
ciBtdXN0IGhvbGQgdGhlIENvbm5lY3Rpb246OnN5bmNTZW5kKCkgcmVzdWx0IChEZWNvZGVyIG9i
amVjdCkKKyAgICAgICAgZm9yIHRoZSBkdXJpYXRpb24gb2YgdXNpbmcgdGhlIGRhdGEgdmFsdWVz
LgorCisgICAgICAgIENvbXBvc2l0aW5nIGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIFBMQVRGT1JN
KENPQ09BKS4KKworICAgICAgICBNaXNzaW5nOgorICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4
dCBsb3NzCisgICAgICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGNoYW5nZQorICAgICAgICAgLSBQ
YWludCBXZWJHTCBjb250ZW50cyB0byAyRCBjYW52YXMKKyAgICAgICAgIC0gVXBsb2FkIHZpZGVv
IHRvIFdlYkdMCisgICAgICAgICAtIFVwbG9hZCBjYW52YXMgdG8gV2ViR0wKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpkaWRDb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlc2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmg6IEFkZGVkLgorICAgICAgICAoc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6Cisg
ICAgICAgIChzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChtb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QpOgorICAgICAgICAoYWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChhdHRhY2hT
aGFkZXIpOgorICAgICAgICAoYmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKGJpbmRCdWZm
ZXIpOgorICAgICAgICAoYmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGJpbmRSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoYmluZFRleHR1cmUpOgorICAgICAgICAoYmxlbmRDb2xvcik6CisgICAg
ICAgIChibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6Cisg
ICAgICAgIChibGVuZEZ1bmMpOgorICAgICAgICAoYmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAg
ICAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChjbGVhcik6CisgICAgICAgIChj
bGVhckNvbG9yKToKKyAgICAgICAgKGNsZWFyRGVwdGgpOgorICAgICAgICAoY2xlYXJTdGVuY2ls
KToKKyAgICAgICAgKGNvbG9yTWFzayk6CisgICAgICAgIChjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKGNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKGNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVTaGFkZXIpOgorICAgICAgICAoY3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChjdWxs
RmFjZSk6CisgICAgICAgIChkZWxldGVCdWZmZXIpOgorICAgICAgICAoZGVsZXRlRnJhbWVidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChkZWxldGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGRlbGV0ZVRleHR1cmUpOgor
ICAgICAgICAoZGVwdGhGdW5jKToKKyAgICAgICAgKGRlcHRoTWFzayk6CisgICAgICAgIChkZXB0
aFJhbmdlKToKKyAgICAgICAgKGRldGFjaFNoYWRlcik6CisgICAgICAgIChkaXNhYmxlKToKKyAg
ICAgICAgKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChkcmF3QXJyYXlzKToK
KyAgICAgICAgKGRyYXdFbGVtZW50cyk6CisgICAgICAgIChlbmFibGUpOgorICAgICAgICAoZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZmluaXNoKToKKyAgICAgICAgKGZsdXNo
KToKKyAgICAgICAgKGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGZyb250RmFjZSk6CisgICAgICAgIChnZW5lcmF0ZU1p
cG1hcCk6CisgICAgICAgIChnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoZ2V0QWN0aXZlVW5p
Zm9ybSk6CisgICAgICAgIChnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChnZXRCdWZmZXJQ
YXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFN0cmluZyk6CisgICAgICAgIChnZXRGbG9hdHYpOgor
ICAgICAgICAoZ2V0SW50ZWdlcnYpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0KToKKyAgICAgICAg
KGdldEludGVnZXI2NGkpOgorICAgICAgICAoZ2V0UHJvZ3JhbWkpOgorICAgICAgICAoZ2V0Qm9v
bGVhbnYpOgorICAgICAgICAoZ2V0RXJyb3IpOgorICAgICAgICAoZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAg
IChnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFNoYWRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQpOgorICAgICAgICAoZ2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRl
cmYpOgorICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRVbmlmb3JtZnYp
OgorICAgICAgICAoZ2V0VW5pZm9ybWl2KToKKyAgICAgICAgKGdldFVuaWZvcm11aXYpOgorICAg
ICAgICAoZ2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdldFZlcnRleEF0dHJpYk9mZnNl
dCk6CisgICAgICAgIChoaW50KToKKyAgICAgICAgKGlzQnVmZmVyKToKKyAgICAgICAgKGlzRW5h
YmxlZCk6CisgICAgICAgIChpc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGlzUHJvZ3JhbSk6Cisg
ICAgICAgIChpc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChpc1NoYWRlcik6CisgICAgICAgIChp
c1RleHR1cmUpOgorICAgICAgICAobGluZVdpZHRoKToKKyAgICAgICAgKGxpbmtQcm9ncmFtKToK
KyAgICAgICAgKHBpeGVsU3RvcmVpKToKKyAgICAgICAgKHBvbHlnb25PZmZzZXQpOgorICAgICAg
ICAocmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChzYW1wbGVDb3ZlcmFnZSk6CisgICAg
ICAgIChzY2lzc29yKToKKyAgICAgICAgKHNoYWRlclNvdXJjZSk6CisgICAgICAgIChzdGVuY2ls
RnVuYyk6CisgICAgICAgIChzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5jaWxN
YXNrKToKKyAgICAgICAgKHN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoc3RlbmNpbE9w
KToKKyAgICAgICAgKHN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmYp
OgorICAgICAgICAodGV4UGFyYW1ldGVyaSk6CisgICAgICAgICh1bmlmb3JtMWYpOgorICAgICAg
ICAodW5pZm9ybTFmdik6CisgICAgICAgICh1bmlmb3JtMWkpOgorICAgICAgICAodW5pZm9ybTFp
dik6CisgICAgICAgICh1bmlmb3JtMmYpOgorICAgICAgICAodW5pZm9ybTJmdik6CisgICAgICAg
ICh1bmlmb3JtMmkpOgorICAgICAgICAodW5pZm9ybTJpdik6CisgICAgICAgICh1bmlmb3JtM2Yp
OgorICAgICAgICAodW5pZm9ybTNmdik6CisgICAgICAgICh1bmlmb3JtM2kpOgorICAgICAgICAo
dW5pZm9ybTNpdik6CisgICAgICAgICh1bmlmb3JtNGYpOgorICAgICAgICAodW5pZm9ybTRmdik6
CisgICAgICAgICh1bmlmb3JtNGkpOgorICAgICAgICAodW5pZm9ybTRpdik6CisgICAgICAgICh1
bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgICh1c2VQcm9ncmFtKToKKyAgICAgICAgKHZhbGlk
YXRlUHJvZ3JhbSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAodmVydGV4QXR0cmliMmYpOgorICAgICAgICAodmVydGV4QXR0
cmliMmZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjNmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0
ZnYpOgorICAgICAgICAodmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgICh2aWV3cG9ydCk6
CisgICAgICAgIChidWZmZXJEYXRhMCk6CisgICAgICAgIChidWZmZXJEYXRhMSk6CisgICAgICAg
IChidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMCk6CisgICAgICAgIChyZWFk
blBpeGVsczEpOgorICAgICAgICAodGV4SW1hZ2UyRDApOgorICAgICAgICAodGV4SW1hZ2UyRDEp
OgorICAgICAgICAodGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UyRDEpOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQwKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJ
bWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAo
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQxKToKKyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWQp
OgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoZGVsZXRl
VmVydGV4QXJyYXkpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChiaW5kVmVy
dGV4QXJyYXkpOgorICAgICAgICAoY29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoZnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoaW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyZWFkQnVmZmVyKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgICh0ZXhT
dG9yYWdlMkQpOgorICAgICAgICAodGV4U3RvcmFnZTNEKToKKyAgICAgICAgKHRleEltYWdlM0Qw
KToKKyAgICAgICAgKHRleEltYWdlM0QxKToKKyAgICAgICAgKHRleFN1YkltYWdlM0QwKToKKyAg
ICAgICAgKHRleFN1YkltYWdlM0QxKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTNEKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1h
Z2UzRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKToKKyAgICAgICAgKGNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChnZXRGcmFnRGF0YUxvY2F0aW9uKToK
KyAgICAgICAgKHVuaWZvcm0xdWkpOgorICAgICAgICAodW5pZm9ybTJ1aSk6CisgICAgICAgICh1
bmlmb3JtM3VpKToKKyAgICAgICAgKHVuaWZvcm00dWkpOgorICAgICAgICAodW5pZm9ybTF1aXYp
OgorICAgICAgICAodW5pZm9ybTJ1aXYpOgorICAgICAgICAodW5pZm9ybTN1aXYpOgorICAgICAg
ICAodW5pZm9ybTR1aXYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAg
KHVuaWZvcm1NYXRyaXgzeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAg
ICAgICAodW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzeDRmdik6
CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliSTRp
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1
aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcik6CisgICAgICAgIChkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChkcmF3QnVm
ZmVycyk6CisgICAgICAgIChjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKGNsZWFyQnVmZmVydWl2
KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmaSk6Cisg
ICAgICAgIChjcmVhdGVRdWVyeSk6CisgICAgICAgIChkZWxldGVRdWVyeSk6CisgICAgICAgIChp
c1F1ZXJ5KToKKyAgICAgICAgKGJlZ2luUXVlcnkpOgorICAgICAgICAoZW5kUXVlcnkpOgorICAg
ICAgICAoZ2V0UXVlcnkpOgorICAgICAgICAoZ2V0UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChj
cmVhdGVTYW1wbGVyKToKKyAgICAgICAgKGRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoaXNTYW1w
bGVyKToKKyAgICAgICAgKGJpbmRTYW1wbGVyKToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGZlbmNl
U3luYyk6CisgICAgICAgIChpc1N5bmMpOgorICAgICAgICAoZGVsZXRlU3luYyk6CisgICAgICAg
IChjbGllbnRXYWl0U3luYyk6CisgICAgICAgICh3YWl0U3luYyk6CisgICAgICAgIChnZXRTeW5j
aSk6CisgICAgICAgIChjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChpc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiZWdpblRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KToKKyAgICAgICAgKHBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAocmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoYmlu
ZEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKGdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKGdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAg
ICAgKGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAodW5pZm9ybUJsb2NrQmlu
ZGluZyk6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZlckFOR0xFKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAg
KGNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKGlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChp
bnNlcnRFdmVudE1hcmtlckVYVCk6CisgICAgICAgIChwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAg
ICAgICAocG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoZHJhd0J1ZmZlcnNFWFQpOgorICAg
ICAgICAoZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRh
c2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaC4KKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OkFycmF5UmVmZXJlbmNlKToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
QXJyYXlSZWZlcmVuY2U6OnZlY3RvciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJl
ZmVyZW5jZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OndyYXBGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmluZ1Jl
ZmVyZW5jZS5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgICogU2hhcmVkL3NvdXAvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzU291cC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2VydGlm
aWNhdGVJbmZvPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZp
Y2F0ZUluZm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlv
blNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuY3BwLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNv
bnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0
aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENv
bG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xv
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
RGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1
cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
b250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdp
ZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00Zik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4
QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFn
ZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29t
cHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNh
bXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZl
cnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJr
ZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
b3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50
ZXJmYWNlaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRVc2VH
UFVQcm9jZXNzRm9yV2ViR0wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisKIDIwMjAtMTItMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgR1BVIFByb2Nlc3M6IElPU3VyZmFjZXMgc2hvdWxkIG5vdCBi
ZSBtYXBwZWQgaW50byB0aGUgV2ViIENvbnRlbnQgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYTcyM2FlMDYzNzNkMmY1ZjVmZDAyZjdjMTgyOGYzMmYxNzAxYjVhNC4uZTNkZTA3OTY2N2Jj
YWFhODFjZTViOTUzNTAyNDI1OWJhMjZjM2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjQ4
LDYgKzEyNDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNmZWIw
MzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4OGJkNDA3N2EwYzU0
YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMTEs
MTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lu
dFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNv
cmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgyZGY4ODdiMWIwYzRkNGI4
MTJjYmZlNWEwNmRlYWU0MTgxMjBlMmIuLjEwNzE0ZjNmNGE1NjhmZmQwZDE1Njk0MDJlMGVjZGM0
Nzg3MDE3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJjNzk1MjZiYzZjZDE0
M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQwMGIwZmNlMjQxZWZm
YjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiArMzU3LDE0IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2Nv
YS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmU3
ZTlmZDJiOTFlYjgxMDEzNDU2MGRmZmQ4MGFjZDIxMGIzZmRjMC4uM2I0NDA5ZWIwNmRhYzg3ZDE5
ZDVhYzI5OWFiOTEyODJiZjg5ZWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Myw3ICsyMDUzLDcgQEAKIAkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xB
bnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcw
MDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdG
QjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9u
c0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3
RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07CisJCTZFNjdEMkE5
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDMyMjlD
OUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEUy
MjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RjIyOURD
RDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAv
KiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Nyw2ICsyMjQ3LDggQEAK
IAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAw
QzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEw
MzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjkwNDE3MDI1
NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVD
QjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIz
NEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUy
NTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3Mzgx
RkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAv
KiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjksOSArMTAyMzEsMTQgQEAK
IAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAx
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI0MjU0
QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTUyNTcxMkU5MTAw
MzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTcyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNldHRpbmdz
LmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNFMjRGQUQzNjAw
MDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5p
ZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjIxLDYgKzI2NjI4LDggQEAKIAkJCQkwNzRFODJCOTE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0Yx
M0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJN0I5MDQxNkUyNTUw
MTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJ
CQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywK
IAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywK
IAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAt
MjY3ODcsNiArMjY3OTYsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBENkExMjJBMjRFOTAw
MkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJG
MzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJCQkJN0I2REM4MTUy
NTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNw
cCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1OTU5NjIxNDZERjc4
MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RBNTk1OTcyMTQ2REY3
ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2Nzk4LDYgKzI2ODA5
LDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4RkIg
LyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0
QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlD
REVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJ
CQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJ
CQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
ICovLApAQCAtMzIwOTksNiArMzIxMTEsNyBAQAogCQkJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUzQyAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNCOUU5MjM3
NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVhZGVycyAqLywKQEAg
LTM0MDM1LDYgKzM0MDQ4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2
MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJl
bW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0
RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVjNzE3NDU5N2YwNmUw
ZTUwOWU3OGZhYS4uNmM3ODNiZDIyYmRmMTJlYTRjMDNkMzcxM2QwZWU3Yzc5MTE0ZGNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTY4MSwxNyArNjgxLDggQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAg
ICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ly8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZlclN1YkRhdGEoKSBjYWxscyB0byB1
c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0ciA9IG1fY29udGV4dC0+bWFwQnVm
ZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNldC51bnNhZmVHZXQoKSwgc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0aFB0ci51bnNhZmVHZXQoKSAqIGNo
ZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4o
ZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZz
ZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICogZWxlbWVudFNpemUpOwotCi0gICAg
aWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkpCi0gICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdldEJ1ZmZlclN1
YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZmZXIiKTsKLSNlbmRpZgotICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgbV9jb250ZXh0
LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9mZnNldCwgbWFrZUdDR0xTcGFuKHN0
YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVP
ZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBjb3B5TGVuZ3RoICogZWxlbWVudFNp
emUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCkBAIC0xOTY3LDkgKzE5
NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRl
cihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0UXVl
cnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRR
dWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8V2ViR0xT
YW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAgLTIwNTks
MTcgKzIwNDgsMTEgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxl
clBhcmFtZXRlcihXZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1M6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAg
ICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVyaXYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIu
b2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01B
WF9MT0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0g
ICAgICAgIGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFy
YW1ldGVyZnYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5f
TE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0
ZXIiLCAiSW52YWxpZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0ODUs
MjQgKzI0NjgsMjQgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2
ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZl
Y3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKLSAgICAKICAg
ICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9U
WVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX1RZUEU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGVudW0+KHgpOyB9KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX1NJWkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKKyAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19JTkRFWDoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX09GRlNFVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0FSUkFZX1NUUklERToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX01B
VFJJWF9TVFJJREU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
SVNfUk9XX01BSk9SOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9y
bUluZGljZXMsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lT
X1JPV19NQUpPUjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
Pih4KTsgfSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtcyIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3
Miw4ICszNTU1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEcKIAogICAgIGNsZWFySWZDb21w
b3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwogCi0gICAgR0NHTHNpemVpIGxlbmd0aCwgY29sdW1u
cywgcm93czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVz
dEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgJmxlbmd0aCwgJmNv
bHVtbnMsICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpLCB0cnVlKTsK
KyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDQwMDcxY2EyM2Iy
YzM1NWUxZTgxMDY0NjE3ZDUyYjlkMmZiODdhYzYuLmY3YzZhMmU4MmE0YmYwMzdhMWI0NzdkNzgz
ZmE1NDFhYzRmNTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MzIsOCArNzMyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0KLQotICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRl
cywgaG9zdFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAg
ICAgaWYgKGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3Bh
dGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250
ZXh0Y3JlYXRpb25lcnJvckV2ZW50LApAQCAtNDM5NSwxNSArNDM5NCwxMiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aAogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAog
I2lmIFVTRShBTkdMRSkKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBHQ0dMc2l6ZWkg
Y29sdW1ucyA9IDA7Ci0gICAgR0NHTHNpemVpIHJvd3MgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJv
d3MsIGRhdGEsIGZhbHNlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVu
Z3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxz
LmJ5dGVMZW5ndGgoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJk
NTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdl
YkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFwaGljc0Nv
bnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5jU3RhdHVz
KTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5
bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBpZiAobV9z
eW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAgICBzY2hl
ZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5k
ZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjliODZiYzMx
ODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
NTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVybiBtX2Ns
aWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShX
RUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJRCBDaHJv
bWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsK
QEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1fcGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQorICAgIC8v
IFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQgd29yaywg
cmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3NjQxZDAx
NDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEzY2ZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYK
KwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1
bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAz
YTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0OTkwMzc1
ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMg
dGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RX
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRleCA0M2Ri
MWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2MzMzdiMmU1
MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAvLyBNZXRo
b2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUyZmIzLi43
YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMzQsMTMg
KzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1
cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7
IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0luV2ViUHJv
Y2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3Mo
KTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZiZDFkNDNj
MDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFmNjRhYTBk
ZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC05Niw2
ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1bmRsZUlz
V2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJv
b2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07CisgICAgcmV0
dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNz
KCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9IFtbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4NjczNDQ3
NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAt
MjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9j
b21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NUQVRVU19L
SFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNp
b24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAvLyBHTF9B
UkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVy
cyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwog
CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQot
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7
CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAg
ICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNp
emVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKQEAg
LTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQU1E
KCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3QgYmUg
YXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZp
Z3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkZjRhMTE5
YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIxYWVhN2E1
YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQSElDU19D
T05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0
Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpAQCAt
NDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1bHQ7
CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhv
c3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdMOjpH
cmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJzKGF0
dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1MmRjNmVm
My4uNTYxM2NiMmY2YzkxMjcwYWJkMWJkNGU2NzEwMzllOGYyYzgwZmZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBA
IC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZvciBp
bXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgogICAg
IC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGljOgogICAg
ICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGljc0Nv
bnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24gaW4g
Y29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0IHRo
ZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBH
cmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAot
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRl
cnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgYWN0
aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFj
aFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05ODAsNyAr
OTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhD
b3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgPSAwOwog
CiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0dHJpYgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSA9
IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NH
TGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0xMTI0LDgg
KzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50
cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50
cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgR0NH
THZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAgICB2aXJ0
dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBnZXRRdWVy
eU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpID0gMDsK
QEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pID0gMDsK
ICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xi
b29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSA9
IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTeW5jaXYo
R0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVz
ZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NHTHVpbnQ+
IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRl
cgpAQCAtMTM5NCw3ICsxMzk0LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1
cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgK
aW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3
NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQg
R0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hh
ciBHQ0dMY2hhcjsKK3R5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYg
dm9pZCBHQ0dMdm9pZDsKKworLy8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0
Y2ggdGhlIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZp
bGUgZm9yIGFsbCBwbGF0Zm9ybXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBl
ZGVmIGludHB0cl90IEdDR0xzaXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19H
THN5bmMqIEdDR0xzeW5jOwotdHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1p
Y0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1
Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNp
dCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0
YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6
ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAg
ICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBH
Q0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwg
c3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAg
ICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAg
ICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6
OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQor
ICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0
YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBU
KiBkYXRhOwpAQCAtNzksNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50
PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBk
YXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDEx
IEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0
YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdD
R0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXpl
b2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1
ZlNpemU7CiB9OwpAQCAtMTUyLDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilb
Tl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4o
V1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihX
VEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3Qg
Y291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2U1NjBiOTYwNGFmYmE1MTI2MDA4YzllYTA1Yjg3ZjUxOTYxZDYxOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7Cit9CisK
K1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wo
KSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAoreworICAg
IHJldHVybiAwOworfQorCitFeHRlbnNpb25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJv
b2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBj
b25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAoreworICAgIHJldHVybiBjb250
ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJWE1FOiBUaGUg
Y2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlmIChtX2xheWVyQ29tcG9zaXRl
ZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgbV9sYXllckNvbXBv
c2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVl
OworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMu
cHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0g
R3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5k
ZXB0aCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4
dEdMOjpERVBUSF9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAg
ICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lM
X0JVRkZFUl9CSVQ7CisgICAgfQorICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9y
KG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKK2Jvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxk
IGJ1ZmZlcnMpCit7CisgICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNlcnZlRHJhd2lu
Z0J1ZmZlcikKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJzOworfQorCitH
Q0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEJ1ZmZlcnNU
b0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwor
fQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5hYmxlUHJlc2VydmVE
cmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBvcnQgcmVhc29ucy4K
KyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkLgorICAg
IEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKK30KKwor
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMoY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVu
dGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAg
ICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5z
aW9ucy5hZGQobmFtZSk7CisgICAgfQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRp
bEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0aWFsaXplKGNvbnN0IFN0cmlu
ZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNw
bGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgn
ICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30K
KworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZThhMDkxNGQ4ZThlMjllMmQyODMx
MjUwNGM0ZWIzMjBiMTE5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC0wLDAg
KzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wp
CisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBXZWJHTExheWVy
OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47CisjZW5kaWYKKworLy8g
QSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBwcm94eSBzaWRlIGltcGxl
bWVudGF0aW9uCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdl
YkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tp
bmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNz
Q29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
KTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSBvdmVycmlkZTsKKwor
ICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB1
c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAgIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IGZpbmFsOworICAgIFBs
YXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAgIEV4dGVuc2lvbnNHTCYg
Z2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9v
bCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVm
ZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29t
cGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5h
bDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0
QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxk
IGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBtYXJr
TGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdC
dWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikK
KyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7CisjZW5kaWYKKyAgICAvLyBP
dGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCisgICAgdXNpbmcgRXh0ZW5zaW9uc0dMOjppc0Vu
YWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0VuYWJsZWQo
Y29uc3QgU3RyaW5nJikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemUo
Y29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3Rh
YmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmlu
ZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAw
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisKKyAgICAvLyBHdWFyZGVkIGJ5
IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxl
RXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7
CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKKworICAgIC8vIEZJ
WE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91bGQgYmUgbW92ZWQgdG8gdGhl
IGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CisgICAgR0NHTGJp
dGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9OworCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAyODNkYTgyYzZhNjAyZWE0YjU1N2M2ODZjZmQ4MjNk
MDgxYzU1ZTRhLi43YzE1MWZhMjg1MGYzM2MxNDlhOWRjODIyMzgxYjhmY2JkZTljYjc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00NiwyOCArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKICAgICA6IG1faW5p
dGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRl
eHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9pc0FNRChmYWxzZSkKLSAgICAs
IG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxzZSkKLSAgICAsIG1f
cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKICAgICAsIG1fdXNlSW5kZXhlZEdl
dFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8vIEZJWE1FOiBpZGVhbGx5LCBy
ZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQotICAgIC8vIHN1YnN1
bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdvcmthcm91bmRzLgot
ICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpH
ZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKLQotICAg
IFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFp
bnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9y
Q29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50cy5jb250YWlucygi
YW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRz
LmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVlOwotICAgIGlmICh2
ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAgICAgICBtX2lzSW1h
Z2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVuc2lvbnNHTEFO
R0xFKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDcgKzgzLDcgQEAgYm9vbCBFeHRlbnNpb25zR0xBTkdM
RTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpCitHTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjsKIH0KQEAgLTEx
NCwxMCArOTQsMTEgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShz
aGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUpOworCiAgICAg
aWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIFZl
Y3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNMQVRFRF9TSEFERVJf
U09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgotICAgIGludCBy
ZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0NHTGludCByZXR1cm5lZExlbmd0aCA9IDA7CiAgICAg
Z2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwg
JnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFyZXR1cm5lZExlbmd0aCkK
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xNDcsNyArMTI4LDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogICAgIG1f
aW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcg
c3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxv
bmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRp
bmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTU2LDcgKzEzNyw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kw
LCBsb25nIHNyY1gxLCBsb25nCiAgICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBz
cmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmls
dGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIzNSw3ICsyMTYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICAgICBnbDo6RHJhd0J1ZmZl
cnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNDMsMTUg
KzIyNCwxNSBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaQogICAgIGdsOjpEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
dm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQpOwor
ICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVp
bnRlcnByZXRfY2FzdDxHTHZvaWQqPihvZmZzZXQpLCBwcmltY291bnQpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzUwLDcg
KzMzMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBnbDo6R2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQog
ewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDMxLDcgKzQxMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRp
c2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kCiAgICAgZ2w6
OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0
aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
Cit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC00MzksNyArNDIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGwKICAgICBnbDo6R2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2kK
ICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lk
dGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykKLXsKLSAgICAvLyBXZSBjYW4g
YXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRoZSBjYWxsaW5nIGZ1bmN0aW9u
cwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgaW50IHRvdGFsQnl0ZXMgPSB3
aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBp
ICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19Ci0jZW5kaWYKLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAq
Y29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVs
QnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1
c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKLSAgICAvLyBhbGwg
cHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBp
eGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJzID0gbV9jb250ZXh0LT5jb250
ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVmZmVyVGFyZ2V0ID0gbV9jb250
ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIg
OiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0YXRlID0gbV9jb250ZXh0LT5t
X3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICBtX2NvbnRleHQtPnJlc29s
dmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7
Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fY29udGV4
dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9Ci0gICAgKHZvaWQpIG1fY29u
dGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgZ2w6OlJlYWRuUGl4
ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXpl
LCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdMZW51bSBlcnJvciA9IGdsOjpH
ZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKTsKLQot
ICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZhaWx1cmUgZHVy
aW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFjZSB0aGlzIGlu
IHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAgdGhlIGFscGhh
IGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmpl
Y3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2Nv
bnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAgICB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0
YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3Qp
OwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0NDUsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24s
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCit2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAsNyArNDUzLDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMu
LmNiZjQ5OGJkN2MxYTFhYjlhYTZiNzBmYjVkMzhhYzRiOTJmYjAzNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gx
LCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRz
dFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0
LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVy
biBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlv
bigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247
IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9Cisg
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBHTF9BTkdM
RV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4
ZWxzKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVz
dEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkblBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIC8v
IFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBib29sIG1faXNOVklESUE7Ci0g
ICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwotICAgIGJvb2wgbV9pc0ltYWdp
bmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsKLSAg
ICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOwotCiAgICAgYm9v
bCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0gICAgU3RyaW5nIG1fdmVuZG9y
OwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4w
LXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVl
biBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNiOGRiYTNjM2Y0NGNkNzY1ZGQ4
ZmM3MTFjZGQ4NzhkZTlhNC4uMWQ2MDRiNzFkNDgxNGY1OTdjMmMyZmM4OWVkYzk2NDhkYzEzYzc2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTQ0MywzMiArNDQzLDUz
IEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCog
ZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
cmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5i
dWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICByZWFkblBpeGVs
c0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lkKj4ob2Zmc2V0KSwgdHJ1ZSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzSW1wbChHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBk
YXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQogewotICAgIC8vIEZJWE1FOiBy
ZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4ZWQs
IGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUgZG9u
ZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2gg
Y2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKKyAgICAvLyBhbGwgcHJl
dmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVs
cy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMo
KTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1faXNGb3JXZWJHTDIgPyBHcmFw
aGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOworICAgIGlmIChhdHRy
cy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsK
ICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHksIHdp
ZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRh
cmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAgICB9Ci0gICAgZ2w6OlJlYWRQ
aXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKLSAgICBpZiAo
YXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVG
Qk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgZ2w6OlJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZT
aXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAgIEdMZW51bSBlcnJvciA9IGds
OjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFk
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJh
bWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJpbmcgdGhlIFJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4gdGhlCisgICAgICAgIC8vIHN5
bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEgY2hhbm5lbCBmaXh1cCBiZWxv
dy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlm
ICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9mYm8g
fHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2Ft
cGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCAmJiAhYXR0cnMu
YWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpV
TlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5h
bnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pKSkKICAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYWRp
bmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0KIC8vIFRoZSBjb250ZW50cyBv
ZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5H
TEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2ls
KGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTg5OCwyMCArOTE5
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6QnVmZmVyU3ViRGF0YSh0YXJn
ZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vz
cyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGdsOjpVbm1hcEJ1ZmZlcih0YXJn
ZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IGdsOjpNYXBCdWZmZXJS
YW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQ
X1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShk
YXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoIWdsOjpVbm1hcEJ1ZmZlcih0
YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5
QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwg
R0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlw
dHIgc2l6ZSkKQEAgLTEwMDgsMTQgKzEwMjUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwK
ICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1J
bmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCitWZWN0b3I8
R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGlj
ZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9y
bUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNl
cy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkpOwor
ICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUo
KSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAtMjEwMSwyMiArMjExOSw2IEBA
IEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGdsOjpHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJv
YnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0
YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUp
Ci17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5i
dWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMzky
LDEyICsyMzk0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFF1ZXJ5KEdD
R0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lKQogewor
ICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXYoaWQsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0aW9ucwpAQCAtMjgzOSwyMCAr
Mjg0MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAgIGdsOjpTYW1wbGVyUGFyYW1l
dGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwLmY7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXIsIHBuYW1lLCB2
YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIs
IHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0g
MDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVl
OwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xl
bnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjg5NSwxMiArMjkwMiwxNCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBH
Q0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0U3luYyhzeW5jLCBmbGFncywg
dGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpdihH
Q0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQg
KnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2koR0NHTHN5
bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBuYW1lLCBidWZTaXplLCBudWxs
cHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBwbmFtZSwgMSwgbnVsbHB0ciwg
JnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MzU5N2Y0NzUz
ZDBiZWMxZDAyZTdkNWZjZmRjNjQzYTk4M2M4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisKKyNpZiBFTkFC
TEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46On5HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpID0gZGVmYXVsdDsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk5ZTg4YzJmOTliMWNhYTU4MTE3YzczOTExYTUxYjY3ZGRlNjMyYmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFBMQVRGT1JNKENP
Q09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFjZSBmb3IgaW1wbGVtZW50aW5nIGZyb250
IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dhcAorLy8gY2hhaW4gb2YgSU9T
dXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxsIG93biB0aGUgSU9TdXJmYWNlcyBpdCB1
c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVh
Y2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRhCisvLyBiYWNrIG9uY2Ug
dGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5
IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8gb2J0YWluIHRoZSBJT1N1cmZhY2UgaXRz
ZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRhZGF0YSBpcyB0byB1c2Ug
RUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3YXkKKy8vIHdoZW4gdGhl
IGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBj
bGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5l
ZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpOworICAgIHN0cnVjdCBC
dWZmZXIgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJm
YWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgorICAgICAgICB2b2lkKiBoYW5kbGUgeyBudWxs
cHRyIH07IC8vIFByb2R1Y2VyIHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xT
dXJmYWNlKS4KKyAgICB9OworICAgIC8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRsZSBvZiBs
YXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xpZW50IG1heSByZWNpZXZlIGJh
Y2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0
IGlzIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAvLyB0aW1lIG9mIHRoZSBjYWxsLgorICAgIC8vIFJl
dHVybnMgZWl0aGVyOgorICAgIC8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1ZmZlciBoYXMgYmVl
biBzdWJtaXR0ZWQuCisgICAgLy8gLSBCdWZmZXIgd2l0aCBlbXB0eSBzdXJmYWNlIGFuZCBub24t
ZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBidWZmZXIgd2FzIGF2YWlsYWJs
ZQorICAgIC8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KKyAgICAvLyAtIFN1
cmZhY2UgYW5kIGhhbmRsZS4KKyAgICB2aXJ0dWFsIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgPSAw
OworCisgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlzcGxheSB3aXRoIGEgY29udGVu
dHMgYnVmZmVyLgorICAgIC8vIENsaWVudCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUg
SU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgorICAgIHZpcnR1YWwgdm9pZCBwcmVz
ZW50KEJ1ZmZlcikgPSAwOworCisgICAgLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJu
cyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgorICAgIC8vIFRo
ZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIg
bXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCisgICAgLy8gdGhpcy4KKyAgICB2
aXJ0dWFsIHZvaWQqIGRldGFjaENsaWVudCgpID0gMDsKK307CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCAyZTFjNzk5ZTgyODUz
YjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi40ODllNDVmY2NlNjNiZDg1NTg3YTQ4MzI4OThk
OTMyNDExY2U5ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKQEAgLTgxLDcgKzgyLDcgQEAgc3RhdGljIEVHTERpc3BsYXkgSW5pdGlhbGl6ZUVH
TERpc3BsYXkoKQogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwogICAgIEVHTGludCBtaW5v
clZlcnNpb24gPSAwOwogICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLSAgICBib29sIHNob3VsZElu
aXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICFpc0luV2ViUHJvY2VzcygpOwor
ICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIShp
c0luV2ViUHJvY2VzcygpIHx8IGlzSW5HUFVQcm9jZXNzKCkpOwogICAgIGlmIChzaG91bGRJbml0
aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKICAgICAgICAgLy8gRm9yIFdLMSB0
eXBlIEFQSXMgd2UgbmVlZCB0byBzZXQgInZvbGF0aWxlIHBsYXRmb3JtIGNvbnRleHQiIGZvciBz
cGVjaWZpYwogICAgICAgICAvLyBBUElzLCBzaW5jZSBjbGllbnQgY29kZSB3aWxsIGJlIGFibGUg
dG8gb3ZlcnJpZGUgdGhlIHRocmVhZC1nbG9iYWwgY29udGV4dApAQCAtMTM0LDcgKzEzNSw3IEBA
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHCiAgICAgaWYgKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0cygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29u
dGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdp
bmRvdywgZGVzdGluYXRpb24pKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIGhv
c3RXaW5kb3csIG51bGxwdHIsIG51bGxwdHIpKTsKIAogICAgIGlmICghY29udGV4dC0+bV9jb250
ZXh0T2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NywxMyArMTQ4LDE4IEBAIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZShHcmFwaGljc0NvbnRleHRHCiBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wm
IHNoYXJlZENvbnRleHQpCiB7CiAgICAgYXV0byBob3N0V2luZG93ID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaG9zdFdpbmRvd0ZvckNvbnRleHQoJnNo
YXJlZENvbnRleHQpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0V2lu
ZG93LCBzaGFyZWRDb250ZXh0LmRlc3RpbmF0aW9uKCksICZzaGFyZWRDb250ZXh0KSk7CisgICAg
YXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChzaGFy
ZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csICZzaGFyZWRDb250ZXh0
LCBudWxscHRyKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCksIGhvc3RXaW5kb3cpOwogCiAgICAg
cmV0dXJuIGNvbnRleHQ7CiB9CiAKK1JlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycywgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4qIHN3YXBDaGFpbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgbnVsbHB0ciwgc3dhcENoYWluKSk7Cit9CisKICNp
ZiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBiZSBqdXN0IGVu
YWJsZWQgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5ND4uCiAKIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVn
aXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVs
Rm9ybWF0T2JqLCBJT1JlZ2lzdHJ5R1BVSUQgcHJlZmVycmVkR1BVSUQpCkBAIC0yMDQsOCArMjEw
LDggQEAgc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4
dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWwKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
IAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3Jh
cGhpY3NDb250ZXh0R0w6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogc2hhcmVkQ29udGV4dCkKLSAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBk
ZXN0aW5hdGlvbiwgc2hhcmVkQ29udGV4dCkKK0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250
ZXh0LCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dhcENoYWluKQorICAg
IDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIHNoYXJl
ZENvbnRleHQpCiB7CiAgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJzLmlzV2ViR0wyOwogCkBAIC0y
OTMsMjYgKzI5OSwyOCBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIGlmIChtX2lzRm9y
V2ViR0wyKQogICAgICAgICBnbDo6RW5hYmxlKEdyYXBoaWNzQ29udGV4dEdMOjpQUklNSVRJVkVf
UkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKKyAgICBWZWN0b3I8QVNDSUlMaXRlcmFsLCA0PiByZXF1
aXJlZEV4dGVuc2lvbnM7CisgICAgaWYgKG1faXNGb3JXZWJHTDIpIHsKKyAgICAgICAgLy8gRm9y
IFdlYkdMIDIuMCBvY2NsdXNpb24gcXVlcmllcyB0byB3b3JrLgorICAgICAgICByZXF1aXJlZEV4
dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iX3MpOworICAg
IH0KICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIEV4dGVu
c2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKLQogICAgIGlmICghbmVlZHNF
QUdMT25NYWMoKSkgewotICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHJlcXVp
cmVkRXh0ZW5zaW9uc1tdID0gewotICAgICAgICAgICAgIkdMX0FOR0xFX3RleHR1cmVfcmVjdGFu
Z2xlIiwgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAgICAgICAgICAiR0xf
RVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiwgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3Vy
ZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocmVxdWlyZWRFeHRlbnNpb25zKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMocmVxdWlyZWRFeHRlbnNpb25z
W2ldKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0
ZW5zaW9uLiAlcyIsIHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KKyAgICAgICAg
cmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3Mp
OworICAgICAgICAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJm
YWNlLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9m
b3JtYXRfQkdSQTg4ODgiX3MpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBleHRlbnNp
b25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRFeHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0
ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJl
cXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0
ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRl
bnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7
CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
Ci0KICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUND
QVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBzdGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8v
IHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3JtU2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0
byBDYXRhbHlzdCB0b28uCkBAIC0zMzEsMTMgKzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJp
YnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0g
ICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVyCisgICAgaWYgKHN3YXBDaGFpbikKKyAgICAgICAg
bV9zd2FwQ2hhaW4gPSBzd2FwQ2hhaW47CisgICAgZWxzZSB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVy
IGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBj
b250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIFtt
X3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CiAjZW5kaWYKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fc3dhcENoYWluID0gJlttX3dlYkdMTGF5ZXIg
c3dhcENoYWluXTsKKyAgICB9CiAKICAgICAvLyBDcmVhdGUgdGhlIHRleHR1cmUgdGhhdCB3aWxs
IGJlIHVzZWQgZm9yIHRoZSBmcmFtZWJ1ZmZlci4KICAgICBHTGVudW0gdGV4dHVyZVRhcmdldCA9
IElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKTsKQEAgLTQwNiwxMyArNDE4LDEyIEBAIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAgICAgICBpZiAo
bV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pCiAgICAgICAgICAgICBnbDo6RGVsZXRlRnJhbWVi
dWZmZXJzKDEsICZtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZCTyk7CiAgICAgfQotICAgIGlmICht
X2Rpc3BsYXlCdWZmZXJQYnVmZmVyKQorICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKSB7
CiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIpOwotICAgIGlmIChtX3dlYkdMTGF5ZXIpIHsKLSAgICAgICAgYXV0byByZWN5Y2xl
ZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgICAgIGF1dG8gcmVj
eWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgICAgICBpZiAo
cmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1f
ZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxlKTsKLSAgICAgICAgYXV0byBjb250ZW50
c0hhbmRsZSA9IFttX3dlYkdMTGF5ZXIgZGV0YWNoQ2xpZW50XTsKKyAgICAgICAgYXV0byBjb250
ZW50c0hhbmRsZSA9IG1fc3dhcENoYWluLT5kZXRhY2hDbGllbnQoKTsKICAgICAgICAgaWYgKGNv
bnRlbnRzSGFuZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9i
aiwgY29udGVudHNIYW5kbGUpOwogICAgIH0KQEAgLTU3NSwxMSArNTg2LDE2IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAgICAg
Ly8gUmVzZXQgdGhlIGZ1dHVyZSByZWN5Y2xlZCBidWZmZXIgbm93LCBiZWNhdXNlIGl0IG1vc3Qg
bGlrZWx5IHdpbGwgbm90IGJlIHJldXNhYmxlIGF0IHRoZSB0aW1lIGl0IHdpbGwgYmUgcmV1c2Vk
LgotICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJd
OworICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigp
OwogICAgIGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgIEVHTF9EZXN0cm95U3Vy
ZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7CiAgICAgcmVjeWNsZWRC
dWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgIHJldHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5
QnVmZmVyQmFja2luZygpOworfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxv
Y2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCit7CisgICAgQVNTRVJUKCFnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAgYXV0byBiYWNraW5nID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2Vi
Q29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02MzcsNyArNjUzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKICAgICAvLyBmb3IgT3BlbkdMIHRv
IGRlY2lkZSB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheSAob25saW5lL29mZmxp
bmUpLgogICAgIC8vIE9wZW5HTCB3aWxsIHRoZW4gY29uc2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRl
cmVycywgYXMgb2ZmbGluZSwgd2hpY2ggbWVhbnMKICAgICAvLyBhbGwgb2ZmbGluZSByZW5kZXJl
cnMgbmVlZCB0byBiZSBjb25zaWRlcmVkIHdoZW4gZmluZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAg
ICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZG93U2VydmVy
IGNvbm5lY3Rpb24sIGFuZAorICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3Rp
bGwgYmUgYSBXaW5kd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKICAgICAvLyBtX2Rpc3BsYXlNYXNr
IHdpbGwgbm90IGJlIHNldCBpbiB0aGlzIGNhc2UuCiAgICAgaWYgKHByaW1hcnlPcGVuR0xEaXNw
bGF5TWFzaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY4MywxMCArNjk5LDEwIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAvLyBU
aGUgSU9TdXJmYWNlIHdpbGwgYmUgdXNlZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwg
c28gZmx1c2ggR0wgY29tbWFuZHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3lj
bGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3lj
bGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKIAogICAgIEVHTF9SZWxl
YXNlVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyLCBFR0xfQkFD
S19CVUZGRVIpOwotICAgIFttX3dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVu
dHM6IHtXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVm
ZmVyfV07CisgICAgbV9zd2FwQ2hhaW4tPnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZl
ckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIH0pOwogICAgIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKIAogICAgIGJvb2wgaGFzTmV3QmFja2luZyA9IGZh
bHNlOwpAQCAtNzAwLDcgKzcxNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBy
ZXBhcmVGb3JEaXNwbGF5KCkKIAogICAgIC8vIEVycm9yIHdpbGwgYmUgaGFuZGxlZCBieSBuZXh0
IGNhbGwgdG8gbWFrZUNvbnRleHRDdXJyZW50KCkgd2hpY2ggd2lsbCBub3RpY2UgbGFjayBvZiBk
aXNwbGF5IGJ1ZmZlci4KICAgICBpZiAoIWhhc05ld0JhY2tpbmcpCi0gICAgICAgIHJlc2hhcGVE
aXNwbGF5QnVmZmVyQmFja2luZygpOworICAgICAgICBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVm
ZmVyQmFja2luZygpOwogCiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGM0MTQwMTViN2IwZjM0YmIyOGJlMzQ1NTA5Yzc0MjllMzFkYWEzYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisK
KyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisjaW1wb3J0
ICJXZWJHTExheWVyLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2Vi
R0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVs
UmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFd
KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdM
IExheWVyIl07CisjZW5kaWYKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKwor
UGxhdGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7Cit9CisKKyNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCitHcmFwaGljc0NvbnRleHRHTENW
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6YXNDVigpCit7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisjZW5kaWYKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4mIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVN3YXBDaGFpbigp
Cit7CisgICAgcmV0dXJuIFttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKK30KKworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLmgKaW5kZXggMTRiMDFlNzA1ZjIwNTMwMWM3Yzk3Y2Y2NmU3MWEwOGJiZjQxZTcwNS4uN2Zl
ODhhMmZmNGNlMGY1NTlkNTlkYzFjZDk1MmEzYTdlYTg4MDk2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaApAQCAtMjMsNTIg
KzIzLDIyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIklPU3VyZmFjZS5oIgor
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8d3Rm
L05ha2VkUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBXZWJHTExheWVyQnVm
ZmVyIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAv
LyBUaGUgYWN0dWFsIGNvbnRlbnRzLgotICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8g
Q2xpZW50IHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KLX07
Ci19Ci0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKIC8vIEEgbGF5ZXIg
Y2xhc3MgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJp
bmcgc3dhcAogLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KLS8vIFRoZSBsYXllciB3aWxsIG93biB0
aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgotLy8gVGhlIGNsaWVudCBtYXkgYXR0
YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFk
YXRhCi0vLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2
ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKLS8vIGJlIGFibGUgdG8gb2J0YWlu
IHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KLS8vIEV4YW1wbGUgdXNlIG9mIHRoZSBt
ZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhp
cyB3YXkKLS8vIHdoZW4gdGhlIFdlYkdMTGF5ZXIgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2Ug
ZGlzcGxheSwgdGhlIGNsaWVudCBjYW4gY29udGludWUgdXNpbmcKLS8vIHRoZSBleGlzdGluZyBi
aW5kaW5nIG9idGFpbmVkIHRocm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgogQGludGVy
ZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0
aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNP
cGFxdWU7CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZToo
Q0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKLS8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhh
bmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgbWF5IHJlY2ll
dmUgYmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNh
c2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRoZQotLy8gdGltZSBvZiB0aGUgY2FsbC4KLS8vIFJldHVy
bnMgZWl0aGVyOgotLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1p
dHRlZC4KLS8vIC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFk
YXRhIGhhbmRsZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKLS8vICAgYnV0
IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KLS8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgot
LSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcilyZWN5Y2xlQnVmZmVyOwotCi0vLyBQcmVwYXJl
cyB0aGUgbGF5ZXIgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVu
dCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhl
IGBidWZmZXJgLgotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29y
ZTo6V2ViR0xMYXllckJ1ZmZlcilidWZmZXI7Ci0KLS8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5k
IHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KLS8v
IFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZm
ZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCi0vLyB0aGlzLgotLSAodm9p
ZCopZGV0YWNoQ2xpZW50OworLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4mKSBzd2FwQ2hhaW47CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KaW5kZXggYzhmNGU3OWY3MzEy
ZWFhNmFiMDQ0NjgwODNlYThkMGM4YmVmYTNiYy4uMzg1OTdlNGE4ZjYzM2E1ZWU1ZGI3NDkzMzAy
MmRjMjM3ZmU3ZTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLm1tCkBAIC0zMiwxMyArMzIsMzkgQEAKICNpbXBvcnQgIkdy
YXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgorCitjbGFzcyBXZWJHTExheWVyU3dhcENoYWluIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJHTExheWVyU3dhcENoYWluKFdlYkdMTGF5ZXIq
IGxheWVyKSAgOiBtX2xheWVyKGxheWVyKSB7IH07CisgICAgfldlYkdMTGF5ZXJTd2FwQ2hhaW4o
KSBvdmVycmlkZSA9IGRlZmF1bHQ7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgb3ZlcnJpZGU7
CisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgeworICAgICAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIu
c3VyZmFjZS0+aXNJblVzZSgpKQorICAgICAgICAgICAgICAgIG1fc3BhcmVCdWZmZXIuc3VyZmFj
ZS5yZXNldCgpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9zcGFyZUJ1ZmZlcik7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdm9pZCogZGV0YWNoQ2xp
ZW50KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJm
YWNlKTsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gbV9kaXNwbGF5QnVmZmVyLmhhbmRsZTsKKyAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheVN1cmZhY2UoKSB7
IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZS5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBC
dWZmZXIgbV9kaXNwbGF5QnVmZmVyOworICAgIEJ1ZmZlciBtX3NwYXJlQnVmZmVyOworICAgIFdl
YkdMTGF5ZXIqIGNvbnN0IG1fbGF5ZXI7Cit9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXll
ciB7Ci0gICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfY29udGVudHNCdWZmZXI7Ci0gICAg
V2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfc3BhcmVCdWZmZXI7Ci0KICAgICBCT09MIF9wcmVw
YXJlZEZvckRpc3BsYXk7CisgICAgT3B0aW9uYWw8V2ViR0xMYXllclN3YXBDaGFpbj4gX3N3YXBD
aGFpbjsKIH0KIAogLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQ
aXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCkBAIC00Nyw2ICs3
Myw3IEBACiAgICAgc2VsZi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7CiAgICAg
c2VsZi5jb250ZW50c09wYXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwogICAgIHNlbGYuY29udGVudHNT
Y2FsZSA9IGRldmljZVBpeGVsUmF0aW87CisgICAgX3N3YXBDaGFpbi5lbXBsYWNlKHNlbGYpOwog
ICAgIHJldHVybiBzZWxmOwogfQogCkBAIC03MywzMCArMTAwLDIxIEBACiAgICAgVU5VU0VEX1BB
UkFNKGNvbG9yU3BhY2UpOwogICAgIHJldHVybiBudWxscHRyOwogfQotCi0tIChXZWJDb3JlOjpX
ZWJHTExheWVyQnVmZmVyKSByZWN5Y2xlQnVmZmVyCistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbgogewotICAgIGlmIChfc3BhcmVCdWZm
ZXIuc3VyZmFjZSkgewotICAgICAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2Uo
KSkKLSAgICAgICAgICAgIF9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7Ci0gICAgICAgIHJl
dHVybiBXVEZNb3ZlKF9zcGFyZUJ1ZmZlcik7Ci0gICAgfQotICAgIHJldHVybiB7IH07CisgICAg
cmV0dXJuIF9zd2FwQ2hhaW4udmFsdWUoKTsKIH0KIAotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxh
eVdpdGhDb250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgYnVmZmVyCistICh2b2lk
KXByZXBhcmVGb3JEaXNwbGF5CiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7
Ci0gICAgX3NwYXJlQnVmZmVyID0gV1RGTW92ZShfY29udGVudHNCdWZmZXIpOwotICAgIF9jb250
ZW50c0J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXld
OwogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBZRVM7CiB9CiAKIC0gKHZvaWQpZGlzcGxheQog
ewotICAgIGlmIChfY29udGVudHNCdWZmZXIuc3VyZmFjZSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5
KSB7Ci0gICAgICAgIHNlbGYuY29udGVudHMgPSBfY29udGVudHNCdWZmZXIuc3VyZmFjZS0+YXNM
YXllckNvbnRlbnRzKCk7CisgICAgaWYgKF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCkgJiYg
X3ByZXBhcmVkRm9yRGlzcGxheSkgeworICAgICAgICBzZWxmLmNvbnRlbnRzID0gX3N3YXBDaGFp
bi0+ZGlzcGxheVN1cmZhY2UoKS0+YXNMYXllckNvbnRlbnRzKCk7CiAgICAgICAgIFtzZWxmIHJl
bG9hZFZhbHVlRm9yS2V5UGF0aDpAImNvbnRlbnRzIl07CiAgICAgfQogICAgIGF1dG8gbGF5ZXIg
PSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2Jy
aWRnZSB2b2lkKilzZWxmKTsKQEAgLTEwNiwxMyArMTI0LDE0IEBACiAgICAgX3ByZXBhcmVkRm9y
RGlzcGxheSA9IE5POwogfQogCi0tICh2b2lkKikgZGV0YWNoQ2xpZW50CitAZW5kCisKK3ZvaWQg
V2ViR0xMYXllclN3YXBDaGFpbjo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQogewotICAgIEFTU0VS
VCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIHZvaWQqIHJlc3VsdCA9IF9jb250ZW50c0J1
ZmZlci5oYW5kbGU7Ci0gICAgX2NvbnRlbnRzQnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAg
bV9zcGFyZUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlC
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgW21fbGF5ZXIgcHJlcGFyZUZvckRpc3BsYXld
OwogfQotQGVuZAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4NTUyZjFlNDZhMWQz
NzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIuLjk5YWQ5MTY1MjU5MTg3M2UwZTgzZmU4Nzg5MjVlY2Ey
MzNhMWExYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCiAjaW1w
b3J0ICJTb3VyY2VHcmFwaGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0Lmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDdlYzgxY2Y0YWU1NzcyY2FlOTcyODhiYzgw
ZTM2NTY0NmQ2MjdjN2IuLmFkZDVmMzUyYWU0ZGU2YjZkNWRjMTkxZTY3M2I1YWFmYTU2ZGU5NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEV4dGVuc2lv
bnNHTE9wZW5HTDo6RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBj
b250ZXh0LCBib29sIHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0wo
KSA9IGRlZmF1bHQ7CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
cihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRz
dFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1h
c2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRG
cmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJh
bWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uCiAgICAgOjpn
bEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGJ1ZnMpCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzcsNyArMjM3LDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHMKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgRwogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQor
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApp
bmRleCA0OTYyODljZWEwZTZhMDlkNmRiNzMxZjg2OGI1NDk5M2E0NDQ0OWE4Li40NzUwMjI2ZWNl
Y2VmNDQzOTZlOTkzODY3NmNiNjM5YmU4MzQzN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
CkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVu
R0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1l
YnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxv
bmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxv
bmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
d2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAKICAgICBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
ZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKQEAgLTUyLDkg
KzUyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzdXBwb3J0c0V4dGVu
c2lvbihjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCA0M2I1MTYxZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2
YzQ4M2ViLi5iNzg5NjBjYjQ4MmU0ZWYyYWI5OGU0MDM5MmE2MzViYTdmZmI3YmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMzY2LDExICszNjYsNiBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMcwogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWks
IEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICos
IEdDR0xzaXplaSAqLCB2b2lkICosIGJvb2wpCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgKaW5kZXggYmZlNDUyMTU0M2ZmNGIyNzIxMzdmMzQ0Y2VlNGEyMmQ4ZmIyOGM2
NC4uNmEzYTM5ZmUzYTFiYTViZDI1OTc3MTU4OTQ3NTYxY2NhZDVhZDQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtOTMsNyArOTMsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVp
ICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5
OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMzLi5lMWU0M2JmNTM5Mjg4NWEyNGZiYjMzY2IyNmI1
ZjZlNDkxZmJlMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwx
MiArMTAwLDEyIEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXIobG9uZyAvKiBzcmNYMCAqLywgbG9uZyAv
KiBzcmNZMCAqLywgbG9uZyAvKiBzcmNYMSAqLywgbG9uZyAvKiBzcmNZMSAqLywgbG9uZyAvKiBk
c3RYMCAqLywgbG9uZyAvKiBkc3RZMCAqLywgbG9uZyAvKiBkc3RYMSAqLywgbG9uZyAvKiBkc3RZ
MSAqLywgdW5zaWduZWQgbG9uZyAvKiBtYXNrICovLCB1bnNpZ25lZCBsb25nIC8qIGZpbHRlciAq
LykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQs
IEdDR0xpbnQsIEdDR0xiaXRmaWVsZCwgR0NHTGVudW0pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpn
ZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTAogICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKSB7CiAg
ICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHCiAgICAgbV9nbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI3Nyw3
ICsyNzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LAogICAgIG1fZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQq
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAg
aWYgKCFtX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuaAppbmRleCAwMTdhNDViNzM5OGQwOTkyZWQxNDc2N2YwNzY3ZTA0YjQ2NDE2Mjgz
Li41Yzc2MDM3ZmE3YmM2ZThlZWUzZTY3M2Y5OWE3ZGZjMmY3OGZiNGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRl
bnNpb24zRCBtZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJy
aWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBvdmVycmlkZTsKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CkBAIC04
Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFQgUm9idXN0
bmVzcyAtIHJlc2V0CiAgICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYzI1NWIwYzEyZjRmY2Jm
YTQ2ZGIwMmQ1NWM4MGI0Y2I3N2QxN2I3MC4uMTAzNTY4OGQxY2JlOWI4MGQzOTEyMjQ3OGJlZGQ4
ZDk4ZjY1NDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTU4LDYg
KzU4LDkgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNf
Q0xBU1MgV2ViR0xMYXllcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworfQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQog
CiAjaWYgVVNFKE5JQ09TSUEpCkBAIC04Niw3ICs4OSw3IEBAIHR5cGVkZWYgV1RGOjpIYXNoTWFw
PENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5h
bCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBE
ZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKTsKQEAgLTk0LDYgKzk3LDggQEAgcHVibGljOgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4g
Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KTsKKyAg
ICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluKik7CisKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHRPYmo7
IH0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fdGV4dHVyZTsgfQogICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0
KCkpOyB9CkBAIC0xOTEsNyArMTk2LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0QWN0aXZlQXR0
cmliSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJ
bmZvJik7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSBmaW5hbDsKICAgICBib29sIGdldEFjdGl2
ZVVuaWZvcm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFj
dGl2ZUluZm8mKTsKLSAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1H
TE9iamVjdCogc2hhZGVycykgZmluYWw7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291
bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpOwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKICAgICB2
b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFs
dWUpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKQEAgLTIxOSw4ICsyMjQsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgdm9pZCBnZXRVbmlm
b3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZp
bmFsOwogICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwpAQCAtMjM2LDcgKzIzOSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsK
ICAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRz
KSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIHZvaWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1w
ZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKQEAgLTMxNywxMiArMzIxLDEwIEBA
IHB1YmxpYzoKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lk
KiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAjZW5kaWYK
ICAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVt
IHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZz
ZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKIAotICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgs
IEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwotICAgIEdDR0xib29sZWFuIHVubWFwQnVmZmVy
KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQg
c3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xp
bnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNr
LCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0
IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOwpAQCAtMzg0LDcg
KzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmlu
YWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZvaWQgZ2V0
UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdD
R0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKQEAgLTM5Myw4ICszOTUsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCBwYXJhbSkgZmluYWw7CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKIAogICAgIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24s
IEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CiAgICAgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xz
eW5jKSBmaW5hbDsKQEAgLTQwMyw3ICs0MDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0U3lu
YyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7
CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgogICAgIC8vIEZJWE1FIC0gdGhpcyBjYW4gYmUgaW1w
bGVtZW50ZWQgYXQgdGhlIFdlYkdMIGxldmVsIGlmIHdlIHNpZ25hbCB0aGUgV2ViR0xTeW5jIG9i
amVjdC4KLSAgICB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5j
aShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlVHJhbnNm
b3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CkBAIC00MjAsNyArNDIyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogICAgIC8vIGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4g
dXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KICAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVu
aWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHVuaWZvcm1OYW1lcykgZmluYWw7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpIGZpbmFsOworICAg
IFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CiAKICAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CiAg
ICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyCkBAIC00MjksMTEgKzQzMSw2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCi0jaWYgIVVTRShBTkdMRSkKLSAgICB2b2lkIHJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KTsKLSNlbmRpZgotCiAgICAg
Ly8gSGVscGVyIG1ldGhvZHMuCiAKICAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWdu
ZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50
U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CkBAIC01MTUsNyArNTEyLDExIEBA
IHB1YmxpYzoKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250
ZXh0ID0gbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qID0gbnVs
bHB0cik7CisjZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9m
ZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRy
KTsKKyNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkg
cG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBi
eSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1
YWxseSBjYWxsIE9wZW5HTC4KQEAgLTUyOCw2ICs1MjksOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIAorICAgIHZvaWQgcmVh
ZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSog
cm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwor
CiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJhdGlvbiBsZWF2ZSB0aGUg
R1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwog
CkBAIC01NDgsMTAgKzU1MSwxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAgYm9vbCByZXNoYXBlRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZm
ZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKKyAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gYSBpbWFnZSBidWZmZXIuIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTc5IC4KICAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
R0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3ZWRm
MWY0ZTY4ODEzZjZiOS4uNjI5ODAzODhiNjUyNDc5Y2NiNDMzMWMyNWZmZWViYjY2YzZjYjU0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTQzMSw3
ICs0MzEsNyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRl
bnNpb25zKCkKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgYXV0byBhdHRycyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KLSAg
ICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEp
OworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
ZGF0YS5kYXRhKTsKICAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQo
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGJjNDRj
ZDU3Nzg4NjcyMDM5YWVhNGY1OTk5NmU0ZDk0ZTFjMWEwZmUuLjdiMmVhMDRhMjA5OTU2NWM3OTBl
YTU3YzY2N2IwZDljNjBhZjU1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcApAQCAtMjAyOSwyMiArMjAyOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVk
TmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUs
IHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0
ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlLmRh
dGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIyNzgsMTkgKzIyNjIsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEcKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJ
bnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lv
bnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50
KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewotICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZp
c29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4
LCBkaXZpc29yKTsKIH0KIAogI2lmIEhBVkUoT1BFTkdMXzQpICYmIEVOQUJMRShXRUJHTDIpCkBA
IC0yMzM1LDQyICsyMzE5LDI1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0ciwKIH0KICNlbmRpZgog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBH
Q0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0J5dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShk
c3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
bGVuZ3RoKTsKLX0KLQogI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCi12
b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxk
IGFjY2VzcykKLXsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiA6OmdsTWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZz
ZXQsIGxlbmd0aCwgYWNjZXNzKTsKLX0KLQotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkKLXsKLSAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gR0xfRkFMU0U7Ci0KLSAgICByZXR1cm4gOjpn
bFVubWFwQnVmZmVyKHRhcmdldCk7Ci19CisgICAgICAgIHJldHVybjsKKyAgICBHQ0dMdm9pZCog
cHRyID0gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIEdy
YXBoaWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOworICAgIGlmICghcHRyKQorICAgICAgICBy
ZXR1cm47CisgICAgbWVtY3B5KGRhdGEuZGF0YSwgcHRyLCBkYXRhLmJ1ZlNpemUpOworICAgIGlm
ICghOjpnbFVubWFwQnVmZmVyKHRhcmdldCkpCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CiAjZWxzZQotdm9pZCogR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtLCBHQ0dMaW50cHRyLCBH
Q0dMc2l6ZWlwdHIsIEdDR0xiaXRmaWVsZCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVT
RURfUEFSQU0oZGF0YSk7CisgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfT1BFUkFUSU9OKTsKKyNlbmRpZgogfQogCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0pCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotI2VuZGlmCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsaXRGcmFtZWJ1
ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewpAQCAtMjcx
MiwxMSArMjY3OSwxMSBAQCBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYQogICAgIHJldHVybiAwOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKQorR0NH
THVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5
KTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjc1NiwxOCArMjcyMywxOSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbgogICAgIFVOVVNFRF9QQVJBTShwYXJhbSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsK
ICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAg
cmV0dXJuIDAuZjsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKKwog
ewogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwot
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIEdDR0xzeW5jIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MpCkBAIC0yODA2LDEyICsyNzc0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5jIHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywg
R0NHTGluCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVvdXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lKQogewogICAg
IFVOVVNFRF9QQVJBTShzeW5jKTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNF
RF9QQVJBTShidWZTaXplKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAw
OwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpCkBAIC0yODkxLDIxICsyODU4LDIzIEBAIFZlY3RvcjxHQ0dMdWlu
dD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xP
YmplY3QgcHJvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhB
VkUoT1BFTkdMX0VTXzMpCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
CitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5p
Zm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1
bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKKyNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZF
KE9QRU5HTF9FU18zKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAg
ICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCks
IHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkpOworICAgIDo6Z2xH
ZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9y
bUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7CisjZW5kaWYKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiBHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVu
aWZvcm1CbG9ja05hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNF
RF9QQVJBTSh1bmlmb3JtQmxvY2tOYW1lKTsKLQogICAgIHJldHVybiAwOwogfQogCkBAIC0yOTEz
LDcgKzI4ODIsNiBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncgogewogICAgIFVOVVNFRF9QQVJB
TShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwotCiAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKQEAgLTI5MjMsMjcgKzI4OTEsOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTAogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0JpbmRpbmcpOwogfQotI2Vsc2UKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mLCBHQ0dMZW51bSwgVmVjdG9yPEdDR0xpbnQ+JikKLXsK
LX0KLQotR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0lu
ZGV4KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCkKLXsKLSAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmlu
ZGluZyhQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCwgR0NHTHVpbnQpCi17Ci19Ci0jZW5kaWYK
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkKIHsKICAgICBVTlVTRURfUEFSQU0oeCk7CiAgICAgVU5VU0VEX1BB
UkFNKHkpOwpAQCAtMjk1NCwxOCArMjkwMyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKLXsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
ZHN0T2Zmc2V0KTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCmluZGV4IDIzZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYxNzMzOTZhYTU1MDUuLmEyMjE4
MGI0YmY0Y2UxMGYxODUyMTI0MDExZTg4YTQ0MjczYjQxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsCiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KIAotICAgIDo6Z2xSZWFkUGl4ZWxzKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgOjpnbFJlYWRQaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmRhdGEpOwogCiAgICAg
aWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3RkJPID09IG1fbXVs
dGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1fbXVsdGlzYW1wbGVGQk8pOwpAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgICAg
ICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4K
ICAgICAgICAgICAgIGlmIChzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyKSB7CiAgICAg
ICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBz
YW1wbGVDb3VudCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOwogICAg
ICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwpCiAgICAgICAgICAgICAgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9B
VFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkKQEAgLTEzOCwxMiArMTM4LDEyIEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNp
emUpCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVz
LnN0ZW5jaWwpIHsKICAgICAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xf
UkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgICAgICAgICBleHRl
bnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNh
bXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgsIHdpZHRoLCBo
ZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBt
X3N0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
YXR0cmlidXRlcy5kZXB0aCkgewogICAgICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1
ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotICAgICAgICAgICAgICAgICAg
ICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZG
RVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09NUE9ORU5U
MTYsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRF
UkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKaW5kZXggODhlMTUxYjEyMjI0ZmViY2M4OTNiNTNkNjg1ZTNlYzFi
MDEwY2Q0NS4uMmI4OTZhOWFiYWMwZTEwNzRiMWUxMzUxOTMyMDQ5YWJlNzY4MDNjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9G
SUxFUwogICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIEdQVVBy
b2Nlc3MvR1BVUHJvY2VzcwogCisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTAogICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZAogCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcgpA
QCAtMjIxLDYgKzIyMiw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKKyAgICBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAKICAgICBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlNTFjYWVkMjFlMTg2Y2YyYTE3M2NiOGEz
MzMxMmJlMGIzMDRiYjAwLi5iY2UzMzhjNGI0NGYwNzllODBlZDBkNDZkNjcyMjkzYzIyN2U1OWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBA
IC0yMCw2ICsyMCw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvbW9k
ZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMv
Y29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0x
MzQsNiArMTM1LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlODhiMmMyMWZh
NzE3Yzc3ZDIzMDJjYjUxOGJhNGFkM2VkZTI1NzRhLi4xNWYzYzIzY2NlMDVlMmQzMmU1ZWViNjky
NDBjNjU0OGE5YmQxNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKQEAgLTE3OCw2ICsxNzgsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCA2ODE0ODU1ZmY5ZDIzYWYwYTc3ZTVmZGE2ZGZkMmZkNTUwOTc2
ZjY5Li4zNTNkNzZlZDFhNWYyMDllZWEzZjQ3ODMxZTA2Y2E4ZGQyMTA0M2NjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzEsNiArMTcxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMg
PSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCisJV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBcCiAJV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlIFwKQEAgLTIyNyw2ICsyMjgsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9
IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAogCUdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kIFwKKwlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFwK
IAlHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eSBcCiAJR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCiAJR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCAwZTJlODgzMmIxZTIwZjFlMGYzMTlkNWQ5ZjI1ZDcyY2UxYmY3M2FkLi40
NGI5ZjYzZTE0YzUwYjc0MTk5M2Q2ZjM1YTVhOTVmNWFmZDgwYTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC02NCw2ICs2NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAtMjkwLDYgKzI5NCwyMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIEVOQUJM
RShXRUJHTCkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
Cit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVu
c3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKKyAgICAgICAgcmV0dXJu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0g
bV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9CisjZW5kaWYKIHZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAg
ICAgZ3B1UHJvY2VzcygpLm5vd1BsYXlpbmdNYW5hZ2VyKCkuY2xlYXJOb3dQbGF5aW5nSW5mb0Ns
aWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNjc4ZGJjNGU1ZDM2NWZhZDI4ZThiNDgyNzg2Mzc2
MmEzYzQ1NzhkLi41YWVkZmJiNGQyY2FjN2I3NjYwZmYwNzM2MDlkMzc3YzYwMTU4NGI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRD
RW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CkBAIC0zOSw2ICs0MCwxMSBAQAog
I2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisj
aWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7CkBAIC01NCw2ICs2
MCw3IEBAIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsK
IGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFz
cyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lv
bkNvbmZpZ3VyYXRpb247CkBAIC0xMTksNiArMTI2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
IAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworI2VuZGlmCisKICAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8o
KTsKICAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCkBAIC0xODAsNyArMTkyLDEwIEBA
IHByaXZhdGU6CiAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1h
cDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcDsKLQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB1c2luZyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOworI2VuZGlm
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCA1MTk0ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1MmMzNjVlYjMyNzFm
MzQ0Li45ZDU0ZTE2NDU5NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5YzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3Jl
YXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tl
bmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcikKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRl
eHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6Okdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisj
ZW5kaWYKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxh
eWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgwNGQxZmE5OTk0ZDVmZmYzMTQz
NjRkNTliZWY5NWViNDllYTk5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTAsMCArMSwx
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4g
Y29udGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpKQorICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
ID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9j
b250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250
ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmlu
ZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25z
R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVz
dGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAg
ICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVz
c2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdAoreworICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9
CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0
dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmZvcmNlQ29udGV4dExvc3QoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgp
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAg
IGlmICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwg
aGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKworI2lm
ICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVG
b3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9Cisj
ZW5kaWYKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChTdHJpbmcmJiBleHRlbnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFy
a0NvbnRleHRDaGFuZ2VkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RiMGNmNTE4YWJmOWJiMjVhYjMzNmRk
ZGUwMzk5OTI1YWEwNWYzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lv
bnNHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0Ep
CituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8v
IEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdl
cyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
CisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyCisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKworICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdDsKKworcHJvdGVjdGVkOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4pOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRl
cy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
ZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBm
aW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAv
LyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBv
c2l0ZSgpIGZpbmFsOworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZv
aWQgcmVjeWNsZUNvbnRleHQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5n
ZWROb3RpZmljYXRpb24oKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVk
LgorICAgIHZvaWQgcmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAg
dm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmKTsKKyAgICB2b2lkIG5vdGlmeU1h
cmtDb250ZXh0Q2hhbmdlZCgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRS
aWdodCYmKT4mJikgPSAwOworI2Vsc2UKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cisg
ICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYTcxNTI0ZDQwODE5YmEw
MzEwY2I0MjAxMzYwNzU2Njg3ODY4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwyOTQgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxh
eSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYK
KyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgp
IFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3Ry
aW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisKKyAg
ICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHZvaWQgU3ludGhlc2l6ZUdM
RXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJv
ckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEFjdGl2
ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgdm9pZCBCaW5kQXR0cmliTG9jYXRpb24o
dWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyBuYW1lKQorICAgIHZvaWQgQmlu
ZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kRnJh
bWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFJl
bmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5k
VGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCbGVuZENv
bG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAg
IHZvaWQgQmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgQmxlbmRFcXVhdGlv
blNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAgICB2b2lk
IEJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHZvaWQg
QmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQz
Ml90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB2b2lkIENoZWNrRnJhbWVidWZm
ZXJTdGF0dXModWludDMyX3QgdGFyZ2V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xlYXJDb2xv
cihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2
b2lkIENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwoaW50MzJf
dCBzKQorICAgIHZvaWQgQ29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUs
IGJvb2wgYWxwaGEpCisgICAgdm9pZCBDb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBDb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdl
MkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlRnJhbWVidWZmZXIoKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVQcm9ncmFtKCkgLT4gKHVp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUmVuZGVyYnVm
ZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3Jl
YXRlU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIENyZWF0ZVRleHR1cmUoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBDdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQg
RGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVGcmFtZWJ1ZmZlcih1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVT
aGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVRleHR1cmUodWludDMyX3QgYXJn
MCkKKyAgICB2b2lkIERlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHZvaWQgRGVwdGhNYXNr
KGJvb2wgZmxhZykKKyAgICB2b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIp
CisgICAgdm9pZCBEZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAg
ICB2b2lkIERpc2FibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRHJhd0FycmF5cyh1aW50MzJfdCBtb2Rl
LCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIEVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIEZpbmlzaCgpCisgICAgdm9pZCBG
bHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMy
X3QgYXJnMykKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBp
bnQzMl90IGxldmVsKQorICAgIHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9p
ZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRBY3RpdmVBdHRy
aWIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVl
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBp
bmRleCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBdHRyaWJMb2NhdGlvbih1
aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0U3RyaW5nKHVpbnQzMl90IG5hbWUpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVl
U2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkg
LT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWlu
dDMyX3QgaW5kZXgpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYodWludDMy
X3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9v
bD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJf
dCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVySW5m
b0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVp
bnQzMl90IHByZWNpc2lvblR5cGUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+
IHJhbmdlLCBHQ0dMaW50IHByZWNpc2lvbikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRl
clNvdXJjZSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQ
YXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQzMl90IHBy
b2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9y
bWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6
ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24s
IHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFy
ZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5h
bWUpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEhpbnQo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgSXNCdWZmZXIodWludDMy
X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0Vu
YWJsZWQodWludDMyX3QgY2FwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIElzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1Byb2dyYW0odWludDMyX3QgYXJnMCkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1aW50MzJf
dCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU2hh
ZGVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgSXNUZXh0dXJlKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgTGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgdm9pZCBMaW5rUHJv
Z3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgUGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUs
IGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxv
YXQgdW5pdHMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHZv
aWQgU2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQpCisgICAgdm9pZCBTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nIGFyZzEp
CisgICAgdm9pZCBTdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMy
X3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWlu
dDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2ls
TWFzayh1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJf
dCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQzMl90IGZhaWws
IHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFN0ZW5jaWxPcFNlcGFy
YXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJf
dCB6cGFzcykKKyAgICB2b2lkIFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBVbmlmb3JtMWYo
aW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB2b2lkIFVuaWZvcm0xZnYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0x
aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgdm9pZCBVbmlmb3JtMWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVu
aWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVW5p
Zm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQor
ICAgIHZvaWQgVW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5
KQorICAgIHZvaWQgVW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0zZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zaShp
bnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZv
aWQgVW5pZm9ybTNpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFVuaWZvcm00ZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm00aShp
bnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90
IHcpCisgICAgdm9pZCBVbmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQor
ICAgIHZvaWQgVW5pZm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVbmlmb3JtTWF0
cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAg
ICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmVydGV4QXR0
cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIxZnYo
dWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZhbHVlcykKKyAg
ICB2b2lkIFZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQor
ICAgIHZvaWQgVmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCAyPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBp
bmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNm
dih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4gdmFsdWVzKQor
ICAgIHZvaWQgVmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlw
ZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHZvaWQgVmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0LCB1aW50NjRf
dCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlckRhdGExKHVpbnQzMl90IHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhLCB1aW50MzJfdCB1c2FnZSkK
KyAgICB2b2lkIEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIFJlYWRuUGl4ZWxz
MChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZWFk
blBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRl
eFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENv
bXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VT
aXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwg
aW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJ
bnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRp
dmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBDcmVhdGVW
ZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIERlbGV0ZVZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFy
cmF5KHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5QnVmZmVy
U3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0
X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAg
dm9pZCBHZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1
aW50NjRfdCBkYXRhU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQz
Ml90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBp
bnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNr
LCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMy
X3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgdm9pZCBJbnZhbGlkYXRlRnJhbWVidWZmZXIo
dWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50
cykKKyAgICB2b2lkIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBSZWFkQnVmZmVy
KHVpbnQzMl90IHNyYykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTJEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UzRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgdm9pZCBUZXhJ
bWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQz
Ml90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlM0QxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJf
dCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1
YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFn
ZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCkKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNp
emUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNz
ZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3Qg
Zm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVp
bnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIEdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybTF1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB2b2lkIFVuaWZvcm0ydWkoaW50MzJf
dCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHZvaWQgVW5pZm9ybTN1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYy
KQorICAgIHZvaWQgVW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWlu
dDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB2b2lkIFVuaWZvcm0xdWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm00dWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0
cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEp
CisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3Jt
TWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgzZnYoaW50MzJf
dCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRh
dGEpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0
aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4gdmFsdWVz
KQorICAgIHZvaWQgVmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwg
dWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJp
Ykk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiB2
YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50
MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgRHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3Rh
cnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgRHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gYnVmcykKKyAgICB2b2lkIENsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90
IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVzKQorICAgIHZv
aWQgQ2xlYXJCdWZmZXJ1aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVy
ZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAg
dm9pZCBDcmVhdGVRdWVyeSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIERlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgSXNRdWVyeSh1
aW50MzJfdCBxdWVyeSkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBCZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBF
bmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFt
ZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRl
U2FtcGxlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IERlbGV0ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIElzU2FtcGxlcih1aW50
MzJfdCBzYW1wbGVyKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEJpbmRTYW1wbGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBT
YW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJf
dCBwYXJhbSkKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVp
bnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJm
KHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1w
bGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBGZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncykg
LT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTeW5jKHVp
bnQ2NF90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
RGVsZXRlU3luYyh1aW50NjRfdCBhcmcwKQorICAgIHZvaWQgQ2xpZW50V2FpdFN5bmModWludDY0
X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAs
IHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgdm9pZCBHZXRTeW5jaSh1aW50
NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KHVpbnQzMl90IGlkKQorICAgIHZvaWQgSXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJhbnNmb3Jt
RmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJlZ2luVHJh
bnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVuZFRyYW5z
Zm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMy
X3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUp
CisgICAgdm9pZCBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3JhbSwg
dWludDMyX3QgaW5kZXgpIC0+IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
byBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisg
ICAgdm9pZCBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBCaW5kQnVmZmVyQmFz
ZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAg
dm9pZCBCaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBH
ZXRVbmlmb3JtSW5kaWNlcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB1bmlmb3Jt
TmFtZXMpIC0+IChWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90
PiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUpIC0+IChWZWN0b3I8aW50MzJfdD4gcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50
MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZv
cm1CbG9ja0JpbmRpbmcpCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFt
cykgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAo
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMy
X3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGlu
dDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+
IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5
T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdy
b3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQor
ICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVm
cykKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9p
ZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlz
b3IpCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmZmU4YzFmYzdhZmExNzJmMWJiOWM3MzQy
Njc1YzVkZmU2ZTE3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApA
QCAtMCwwICsxLDExODMgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIHNob3VsZCBi
ZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisgICAgdm9pZCBzZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpOworICAgIH0KKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9y
KHVpbnQzMl90IGVycm9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihlcnJvcik7CisgICAgfQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBhY3RpdmVU
ZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmFjdGl2
ZVRleHR1cmUodGV4dHVyZSk7CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hhZGVyKHVpbnQzMl90
IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YXR0
YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgfQorICAgIHZvaWQgYmluZEF0dHJpYkxv
Y2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcmJiBuYW1lKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5h
bWUpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYXJn
MSk7CisgICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRh
cmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4dHVyZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRDb2xvcihmbG9h
dCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAg
fQorICAgIHZvaWQgYmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1
YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2Rl
QWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50
MzJfdCBkZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmMoc2ZhY3Rv
ciwgZGZhY3Rvcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qg
c3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RB
bHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdC
LCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckNvbG9y
KGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsK
KyAgICB9CisgICAgdm9pZCBjbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN0ZW5j
aWwoaW50MzJfdCBzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwocyk7
CisgICAgfQorICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJs
dWUsIGJvb2wgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGdyZWVu
KSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4oYWxwaGEpKTsKKyAgICB9CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgY29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdl
MkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
QnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVGcmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFkZXIodWludDMyX3Qg
YXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKGFyZzApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlVGV4dHVyZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBj
dWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jdWxsRmFj
ZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2
b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVBy
b2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJv
Z3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodWludDMyX3Qg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKGFyZzAp
OworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVUZXh0dXJlKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1aW50MzJfdCBmdW5j
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CisgICAgfQorICAg
IHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVw
dGhNYXNrKHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAgfQorICAgIHZvaWQg
ZGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0YWNoU2hh
ZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRldGFjaFNoYWRlcihhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlKHVp
bnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOworICAg
IH0KKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsK
KyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3Qs
IGludDMyX3QgY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9k
ZSwgZmlyc3QsIGNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHModWludDMyX3Qg
bW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0
YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGVuYWJsZSh1
aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOworICAg
IH0KKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7Cisg
ICAgfQorICAgIHZvaWQgZmluaXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZmluaXNo
KCk7CisgICAgfQorICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5m
bHVzaCgpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0
LCB1aW50MzJfdCBhcmczKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyk7
CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGlu
dDMyX3QgbGV2ZWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7CisgICAgfQor
ICAgIHZvaWQgZnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmZyb250RmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1aW50
MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRh
cmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBp
bmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1l
dGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmcodWludDMyX3QgbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGbG9hdHYo
dWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90
Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZh
bHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2
YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGlu
dCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdl
dEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2
NChwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1aW50MzJfdCBw
bmFtZSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHBu
YW1lLCBpbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0
X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbWkodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJv
Z3JhbSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVl
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMYm9vbGVhbiwg
ND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9j
b250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KHZh
bHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEVycm9yKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRFcnJvcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHBu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFNoYWRlcmkoYXJnMCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xvZyh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJnMCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWludDMyX3Qg
cHJlY2lzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3QsIDI+LCBpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIHN0ZDo6YXJyYXk8R0NHTGludCwgMj4gcmFuZ2UgeyB9OworICAgICAgICBHQ0dMaW50IHBy
ZWNpc2lvbiA9IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+KHJlaW50
ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNpemUoKSksIHByZWNp
c2lvbik7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKGFyZzApOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFy
YW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xm
bG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1l
dGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQz
Ml90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4o
dmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYodWludDMyX3QgcHJv
Z3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0
PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odmFs
dWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybXVp
dih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50LCA0PiB2
YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRl
eHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDx1aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFZlcnRl
eEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTHNpemVpcHRyIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAgfQorICAgIHZv
aWQgaXNCdWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNCdWZmZXIoYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNhcCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+aXNFbmFibGVkKGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNGcmFtZWJ1ZmZl
cih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGFyZzApOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5pc1Byb2dyYW0oYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19j
YXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNSZW5kZXJidWZmZXIo
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIoYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgaXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xi
b29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+aXNTaGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJlKHVpbnQzMl90
IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBsaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGlu
ZVdpZHRoKGFyZzApOworICAgIH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIHBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAgIH0KKyAg
ICB2b2lkIHBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKKyAgICB9Cisg
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGZsb2F0IHZh
bHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlQ292ZXJh
Z2UodmFsdWUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsKKyAgICB9CisgICAg
dm9pZCBzY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3Ry
aW5nJiYgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFyZzAs
IGFyZzEpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMy
X3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2ls
RnVuYyhmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJh
dGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1h
c2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwg
ZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFzayh1aW50MzJfdCBt
YXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsKKyAgICB9
CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1h
c2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwg
bWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90
IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNp
bE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJh
dGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90
IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNl
LCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmYodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0K
KyAgICB2b2lkIHRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwg
aW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmKGludDMyX3Qg
bG9jYXRpb24sIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihs
b2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0x
aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZs
b2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbiwgeCwg
eSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm0yZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xm
bG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmko
aW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYg
dikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNm
KGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2KGludDMyX3Qg
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24s
IHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0
IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwg
eiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm00ZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
NGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50
MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgs
IHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm00aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9z
ZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVl
LmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgz
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGludDMyX3Qg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZh
bHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZhbGlk
YXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52YWxp
ZGF0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYodWludDMy
X3QgaW5kZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YjFmKGluZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodWludDMyX3Qg
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0
IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5
KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQg
dmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHop
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6
KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQg
dmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4
LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3Qg
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBz
aXplLCB1aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50
ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihub3JtYWxpemVk
KSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCB2aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRo
LCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwg
dWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJ1ZmZlckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzEpLCB1c2Fn
ZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpLCB1c2Fn
ZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2
NF90IG9mZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dM
aW50cHRyPihvZmZzZXQpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFk
blBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRh
KHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5y
ZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCByZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZz
ZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
aW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3Vi
SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQs
IGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90
IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBp
eGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSks
IHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9Cisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxH
Q0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50
MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGlu
dDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5z
dGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMy
X3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2
b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3Ip
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRp
dmlzb3IpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShh
cmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmlu
ZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1
aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9m
ZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0
cj4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zm
c2V0LCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVi
dWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJf
dCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50
MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5ibGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEs
IGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2
b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0
YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0KKyAgICB2b2lkIGlu
dmFsaWRhdGVGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+JiYgYXR0YWNobWVudHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFs
aWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xlbnVtKj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cywgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSks
IGF0dGFjaG1lbnRzLnNpemUoKSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2
b2lkIHJlYWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5y
ZWFkQnVmZmVyKHNyYyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9y
YWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50ZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVs
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5k
YXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDEodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0Qw
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90
IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlM0Qo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3Qg
eW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhT
dWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3Jk
ZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGlt
YWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJf
dCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0
LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lk
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
eG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qg
aW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nh
c3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhZ0RhdGFMb2Nh
dGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpKGludDMyX3QgbG9j
YXRpb24sIHVpbnQzMl90IHYwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVp
KGxvY2F0aW9uLCB2MCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQzMl90IGxvY2F0
aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEs
IHYyKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQz
Ml90IHYwLCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtMXVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbiwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aXYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtNHVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRy
YW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRh
KCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdmVy
dGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0
aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdih1
aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiYmIHZhbHVlcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdD
R0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRhKCkp
KSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90
IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdS
YW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQs
IGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291
bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIGRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7Cisg
ICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJh
d2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSwg
dmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KHVpbnQzMl90
IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVm
ZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dWludCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
Y2xlYXJCdWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90
IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3Rl
bmNpbCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9y
bUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAgfQorICAgIHZvaWQg
aXNRdWVyeSh1aW50MzJfdCBxdWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNRdWVyeShxdWVyeSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwgcXVl
cnkpOworICAgIH0KKyAgICB2b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRR
dWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRm
b3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWkodWludDMy
X3QgcXVlcnksIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1aW50IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnlPYmpl
Y3R1aShxdWVyeSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jcmVhdGVTYW1wbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgfQor
ICAgIHZvaWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
U2FtcGxlcihzYW1wbGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8
Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcih1aW50MzJf
dCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5k
U2FtcGxlcih1bml0LCBzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
aSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBh
cmFtKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVy
LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZmVu
Y2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTHN5bmMgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5mZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihyZXR1
cm5WYWx1ZSkpKTsKKyAgICB9CisgICAgdm9pZCBpc1N5bmModWludDY0X3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+aXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0
PGludHB0cl90PihhcmcwKSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5bmModWludDY0
X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3luYyhyZWludGVycHJl
dF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBjbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWlu
dDY0X3QgdGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRTeW5jKHJlaW50ZXJw
cmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBz
dGF0aWNfY2FzdDxHQ0dMdWludDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1aW50NjRfdCBhcmcw
LCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT53YWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0aW1lb3V0KSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRl
bGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgfQorICAgIHZvaWQgaXNUcmFu
c2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUcmFuc2Zvcm1G
ZWVkYmFjayhpZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblRy
YW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7CisgICAgfQor
ICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2YXJ5aW5ncywg
dWludDMyX3QgYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4
LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcmcyKSk7CisgICAg
fQorICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCByZXN1bWVU
cmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlc3VtZVRyYW5z
Zm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOworICAgIH0K
KyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZl
ciwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVp
cHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGljZXModWludDMyX3Qg
cHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPHVpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFt
ZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9y
PHVpbnQzMl90PiYmIHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3Qg
cHJvZ3JhbSwgU3RyaW5nJiYgdW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJ
bmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMy
X3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1C
bG9ja0JpbmRpbmcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRp
bmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAg
IH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1z
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0
PiBwYXJhbXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5k
ZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRh
KCkpLCBwYXJhbXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAg
ICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90
IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQz
Ml90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1
aW50MzJfdCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5ibGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAs
IGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5
T0VTKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VT
KGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlP
RVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2Vy
RVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3Jv
dXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5wb3BHcm91cE1hcmtlckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhU
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2Rl
LCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWlu
dDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zmc2V0KSwg
cHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWlu
dDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3Ip
OworICAgIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU3YzQwYzk4NWNiN2QyNzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFBM
QVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4K
KyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0OworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpIGZpbmFsOworCisgICAgLy8gR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgorICAgIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgZmluYWw7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgZmluYWw7Cisg
ICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgZmluYWw7Citwcml2YXRlOgorICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOworfTsKKwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGF0dHJpYnV0
ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkKK3sKK30K
KworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpyZWN5Y2xlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gV1RGTW92
ZShtX2Rpc3BsYXlCdWZmZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fZGlzcGxheUJ1ZmZl
ci5zdXJmYWNlKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Cit9CisK
K3ZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRldGFjaENsaWVudCgpCit7Cisg
ICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9kaXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3Bs
YXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOworICAg
IGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOwor
ICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIGlmIChkaXNwbGF5QnVmZmVyKQorICAg
ICAgICBzZW5kUmlnaHQgPSBkaXNwbGF5QnVmZmVyLT5jcmVhdGVTZW5kUmlnaHQoKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCkpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1t
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCmluZGV4IGI3
YmI2M2IyOWFkODAyMTcyZGYyN2ExMjg5NWJiMTk5OGZhNGI2YjAuLjI0YzQzN2NhYWU3ZjhmOWE5
YWZmOTI3MDNlZmNmOWRhMDMxZTRjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWFjL0dQVVByb2Nlc3NNYWMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIlNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQ
SS5oPgotI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lz
ZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsOSArNDQsMTIgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB2b2lkIEdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGls
aWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIDAKICAgICAvLyBIYXZpbmcgYSB3aW5k
b3cgc2VydmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNzIHdvdWxkIHJlc3VsdCBpbiBzcGlu
IGxvZ3MgKDxyZGFyOi8vcHJvYmxlbS8xMzIzOTExOT4pLgotICAgIE9TU3RhdHVzIGVycm9yID0g
U2V0QXBwbGljYXRpb25Jc0RhZW1vbih0cnVlKTsKLSAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBl
cnJvciA9PSBub0Vycik7CisgICAgYXV0byByZXR2YWwgPSBDR1NTZXREZW55V2luZG93U2VydmVy
Q29ubmVjdGlvbnModHJ1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmV0dmFsID09IGtDR0Vycm9y
U3VjY2Vzcyk7CisgICAgQ0dTU2h1dGRvd25TZXJ2ZXJDb25uZWN0aW9ucygpOworI2VuZGlmCiAj
ZW5kaWYKIAogICAgIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vz
cy5zYi5pbgppbmRleCBkYjA2ZTUzNGY3ZjUxZDJlYmQwMzgyNWY1ODI0NWY4NDk2ZjhiMTc5Li5l
ZDEwMGIzNmVkNmY0NmQ0YWFmNjM1NDQ3Nzg4MmFiNzkzYTExYmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BV
UHJvY2Vzcy5zYi5pbgpAQCAtMjA3LDYgKzIwNyw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXkFBUEwsKERpc3BsYXlQaXBlfE9wZW5DTGRpc2FibGVkfElPR3JhcGhpY3NfTEVSKHxf
UmVnVGFnXzF8X1JlZ1RhZ18wfF9CdXN5XzIpfGFsaWFzLXBvbGljeXxib290LWRpc3BsYXl8ZGlz
cGxheS1hbGlhc3xtdXgtc3dpdGNoLXN0YXRlfG5kcnYtZGV2fHByaW1hcnktZGlzcGxheXxzbG90
LW5hbWUpIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeQVRZLChjYml0c3xmYl8obGlu
ZWJ5dGVzfG9mZnNldHxzaXplKXxpbnRyZXYpIikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxE
ZXZpY2VOYW1lIikgOzsgTmVlZGVkIGJ5IE1ldGFsIGNvbXBpbGVycworICAgIChpb2tpdC1wcm9w
ZXJ0eSAiQVRZLEVGSURpc3BsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEZhbWlseU5h
bWUiKSA7OyBEaXR0bwogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVZDU3VwcG9ydGVkIikKICAgICAo
aW9raXQtcHJvcGVydHkgIkJhY2tsaWdodEhhbmRsZSIpCkBAIC0yMTcsNiArMjE4LDkgQEAKICAg
ICAoaW9raXQtcHJvcGVydHkgIkNhcHNMb2NrRGVsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
Q2FzZVNlbnNpdGl2ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJDb25maWdTdGF0ZSIpCisgICAg
KGlva2l0LXByb3BlcnR5ICJEUExhbmVzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua0Jp
dCIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtSYXRlIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIkRlc2NyaXB0aW9uIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRldmVsb3BtZW50IikKICAg
ICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeRGV2aWNlKCBDaGFyYWN0ZXJpc3RpY3N8RXFJRCki
KQpAQCAtMjI5LDEwICsyMzMsMTcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIkZhbWlseSBJRCIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JjZVN1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJGb3JtYXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVyRW5hYmxlZCIp
CisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlclN0YXJ0ZWQiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiR1BVQ29uZmlndXJhdGlvblZhcmlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkg
IkdQVURDQ0Rpc3BsYXlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURlYnVnTnVsbENs
aWVudE1hc2siKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR3B1RGVidWdQb2xpY3kiKQorICAgIChp
b2tpdC1wcm9wZXJ0eSAiR1BVUmF3Q291bnRlckJ1bmRsZU5hbWUiKQorICAgIChpb2tpdC1wcm9w
ZXJ0eSAiR1BVUmF3Q291bnRlclBsdWdpbkNsYXNzTmFtZSIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJIRVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkhJRFBvaW50ZXJBY2NlbGVy
YXRpb25UeXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkh3Q3R4Q2FjaGVVcGRhdGUiKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0FjY2VsKERpc3BsYXlQaXBlQ2FwYWJpbGl0aWVz
fEluZGV4fFR5cGVzfFJldmlzaW9uKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklP
KENsYXNzfE1hdGNoQ2F0ZWdvcnl8TmFtZU1hdGNoKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXklPQXVkaW9Db250cm9sKENoYW5uZWxJRHxJRHxTdWJUeXBlfFVzYWdlfFZhbHVlKSIp
CkBAIC0yODIsNiArMjkzLDggQEAKICAgICAoaW9raXQtcHJvcGVydHkgIklPUGFyZW50TWF0Y2gi
KQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT1BDSSgoQ2xhc3N8UHJpbWFyeXxQcm9w
ZXJ0eXwpTWF0Y2h8RXhwcmVzcyhDYXBhYmlsaXRpZXN8TGluayhTdGF0dXN8Q2FwYWJpbGl0aWVz
KSl8TVNJTW9kZXxSZXNvdXJjZWR8VHVubmVsbGVkKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJ
T1BNSXNQb3dlck1hbmFnZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QZXJzb25hbGl0eVB1
Ymxpc2hlciIpCisKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9QbGF0Zm9ybShTZXJp
YWxOdW1iZXJ8VVVJRCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qb3dlck1hbmFnZW1lbnQi
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qcm9iZVNjb3JlIikKQEAgLTMxNyw2ICszMzAsNyBA
QAogICAgIChpb2tpdC1wcm9wZXJ0eSAiUHJvdG9jb2wgQ2hhcmFjdGVyaXN0aWNzIikKICAgICAo
aW9raXQtcHJvcGVydHkgIlJlbW92YWJsZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMi
XlJlc2V0T24oTG9ja3xVbmxvY2spTXMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiU1dJUF9wcm9w
ZXJ0aWVzIikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhZmVFamVjdFJlcXVlc3RlZCIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJTYW1wbGVSYXRlcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTZXJp
YWwgTnVtYmVyIikKQEAgLTMzOCw2ICszNTIsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXR0
YWNoZWQtZ3B1LWNvbnRyb2wtcGF0aCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXmF1
ZGlvLShjb2RlYy1pbmZvfGRldmljZS1tdmFsdWV8ZGV2aWNlLW52YWx1ZXxzZWxlY3RvcikiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiYXYtc2lnbmFsLXR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiYmFja2xpZ2h0LVBXTS1mcmVxIikKICAgICAoaW9raXQtcHJvcGVydHkgImJjZFZlcnNpb24i
KQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oYm9hcmR8ZGV2aWNlfHJldmlzaW9ufHN1
YnN5c3RlbXx2ZW5kb3IpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImJvb3QtZ2FtbWEtcmVz
dG9yZWQiKQpAQCAtMzUwLDYgKzM2NSwxMSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiY29ubmVj
dG9yLXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oZGV2aWNlfHJldmlzaW9u
fHN1YnN5c3RlbS12ZW5kb3J8dG91Y2gtc2l6ZSktaWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
ZGV2aWNlX3R5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1icGMiKQorICAgIChp
b2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1jb25uZWN0LWZsYWdzIikKKyAgICAoaW9raXQtcHJvcGVy
dHkgImRpc3BsYXktbGluay1jb21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJk
aXNwbGF5LXBpeGVsLWNvbXBvbmVudC1iaXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3Bs
YXktdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJkcG0iKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiZXJyb3JkYiIpIDs7IE5lZWRlZCBmb3IgT3BlbkdMIG9uIG9sZGVyIGhhcmR3YXJlCiAgICAg
KGlva2l0LXByb3BlcnR5ICJmaWxldmF1bHQtaW1hZ2UiKSA7OyBOZWVkZWQgYnkgTGF1bmNoU2Vy
dmljZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCmluZGV4IGU2YTE4ZGRhNmUwOTJmZGIxODA0NDZlNGYz
YTA4M2NmNTNjMjc2MTkuLjM3OTI4ZTFiODNkNGU1MjQ0NTNhOGQyN2NjM2I4NzkwMWIyNDlhM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgVVNFKEFVRElPX1NFU1NJT04pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90
ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1Qcm94eS5jcHAKaW5kZXggZDliZjUyMjcyYzM3MjkxNTc1YjViMzkzMjYyZTc3MjEzYjkz
MGRkNC4uOGYwMTE5ZWRmZTFkNmU5MzI0MzAwNWIzNDQxMjViMjRlYWI5MWUzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyUHJveHkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTliZGI4Njdh
Yjg2YjhjNTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVkNjZkZGY5
NWYyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMZWdhY3lD
RE1Qcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcwZmE1ZGU0
ZmFkZTE1MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4Yjgy
NWM2ZTQ1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4MDIzMTkwNGY4ZWYwZWFhOTM2
MjI5YWZhOTc1OTguLmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4OWI4MDNmNmFiZjQxYzhlOWVk
ZGU0MTQyNzY5MzI4MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1YWEzZDU0ODA2ZjcyYzdlZGMw
Y2IxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywxNSArMjcsMTYgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDU5NjhjN2JiZDE4OWNkNDc5ZWY0YWVhYjRkNDQ5OTUz
M2ZkM2Q2NWIuLmZlNTQ0ZDU1NTE5MWU1NTZlMmQ3ZTIzMzk0NzVhMDJmYzI5ZGNmZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291
cmNlUHJveHkuaApAQCAtMzksNyArMzksNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggNmI4YmY4YjU3Y2MwYzhkOWQ1NDEx
ZTk2NTIxYjQ1YTk0YThlM2IzMi4uOTljYTZhNDE0ZWI1MDgzOTBjNzI4MzNhNjQ1MWU3MzAzOTQy
MWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50
aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KQEAgLTM4LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKaW5kZXggMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYxODNh
YmQwZTc0NWI4MzUzMy4uODQzYmIwNmY3YjU2YzZlM2NmYmVlNzlhN2U0MjgxZWZlZThmOWE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkuaApAQCAtMjgsMTQgKzI4LDE1IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2Rl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmOGFiYzFmNDA1
ZmMxNDY5NDc1YjRkOTBiYWQzZDUzY2EwZjgwMTRlLi42MWM0NzA4YWU5NmRiY2FhNTY5ODA5ZWUx
OTk1YmU4MTZhOTFmZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lm
IFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0
ICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDc4OGM1ZjAw
YzAyZjRmMTQ4ZmVlY2NkMzhkMTA2ODE4YjBkN2U5NjEuLjNhYjRlNGIxY2YxYzE0MTIzMGMxM2U0
NTc2YzVlZDZlNmVmYzJlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtMzYsNyAr
MzcsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVBy
b3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQppbmRleCA3
YTYzMzYzNDdjMDA3ZTk3YjczYjU0Mzc3NDkxNjgzOGQ2NDAzN2RhLi4xYWE1M2NjMmZiNzdiYWY5
ZTMyNjUwNzIxMDgwOWZkNzZjZmJiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtMjYsNyAr
MjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuaCIKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNz
LmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBmNmVkODExZjUzNDJmZTQ4
NTU1MTc2Zjg5ZDUxNDU3NTYyYzY2NTg1Li4wYmNkNTY3M2M5MzQ2YWRhMTFkNjU2YzNhZGQ1MWJl
NGVkYmMyNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50LmgiCkBAIC0zOSwxMCArNDAsNiBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3Vy
YXRpb247CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfSAvLyBuYW1lc3BhY2UgSVBDCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CkBAIC0xMTIsNCArMTA5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZC5jcHAKaW5kZXggZGRiZTRlZWRkNDQxZGY4N2M1NWFkMzMwZjA0MmNjZGNmYWRmYjkw
Yi4uNjUxZmYyNTRmOTA1YzE2YTkwY2I0ODJjOTc3M2Q0YWM3NDI5NGVjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
TWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlmZGVj
MzY5MDE3NzI3NC4uOTNmMDNhODI1NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBAIE9C
SkNfQ0xBU1MgTlNQcm9ncmVzczsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNr
OwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFz
cyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0
MGYyN2MxNjA1YzNjZDc0YmM2OTA3YjdkOTFiNDdiNzYyLi43MjZkZDk5MGJhZmQ0Mzk0YjVhZmMw
MzJhMWNmMjBmMTg0OWM0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKIAot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xv
YWQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYx
YzcyNjc4ZmE1MC4uOTgwYTA2Zjc4MzlkYmQ1ZTlmOWQ1MDQ1NDA5YTMzZDc3YjFjMDM4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUg
IkRvd25sb2FkTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC00OSw3ICs1
MCw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmNwcAppbmRleCA0NDliMTNkOGUwN2IyY2QwNDJjNGJhMzYzNmFiNzkzZDM3YjFjM2Y0
Li5jNzc4ODgxMWYwMzJkNThmOGI1Mjc3MzZlMWQyMjc4NDEwZjkxM2E5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApA
QCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtT
b2NrZXRDaGFubmVsLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMzE5NjQxOTBkMTQx
ZDU0OWRhMGJhZjJkYzhiZjI5N2I0ZTU4MWU4OS4uMDQzNGJmODgwOWE3ZWIzZWNjMThlOGY2NTBj
YzAyNzhhZTZlYjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5o
PgpAQCAtNDAsNyArNDEsNiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA1YjQ4OWNjNTM4ZjdjMDcx
NTEwMTA2YzU4ZjVjMDk0ZWM5YThlMWI4Li40OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2Nj
MzNlMzhjMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNTJlYzM5MjY5MDIxOGVkZTY2
OGQ1NWU2MzhkOGUxNzUwMmZkNmVlNS4uNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5
ZmIyMDZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtRXJy
b3IuaD4KQEAgLTM3LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlv
bjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2Ni
ZmYxMDg5Y2MxMDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLmQzN2Q3ODA2OTgzYmJhNTQ3Y2Ew
ZjkyMzVlYjRiZjZiNzMxNTY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CkBAIC00Myw3ICs0NCw2IEBA
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURh
dGFSZWZlcmVuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0
VGFzay5oCmluZGV4IGRiNTc5NWRkMjE3ZjQ1YWQ1ZjY3ZTMwYjc5MWY5MmUyNzZjMDI5ODYuLjk2
MWU0NjQ1OWJlNzcxNzdlMjYwNWU3ZDg2NTJhZGE4MDIwOTdiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0zMSw5ICszMSw2IEBACiAjaW5j
bHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIKICNlbHNlCiAKLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKLX0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5o
CmluZGV4IGRhYzY5MzUwN2ViM2VmY2VhNmQxMDk0ODAxYmMwMWIzNmZlMjYzOWQuLmU2ODI2ZTQ3
ZTgzOTU5NDAyOGFmOGY0YWVkMjM5MmI0YjA1ZDJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtMjcs
MTUgKzI3LDEyIEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uV2ViU29ja2V0VGFz
azsKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1Nlc3Npb25D
b2NvYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2Vi
U29ja2V0VGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9X
ZWJTb2NrZXRUYXNrQ29jb2EubW0KaW5kZXggODU1MzQ4NzQ0MDRjZTJiYWE0NGFlNjU2NTQ3ZDM3
MjI1MzMyZWFiOC4uOTBiYzQwOWJmZmI3MGEwZWU5ZTczNThiMzg2NzU5N2QyOWYyNGUwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNr
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9O
X1dFQlNPQ0tFVCkKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTmV0d29y
a1Nlc3Npb25Db2NvYS5oIgogI2ltcG9ydCAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbXBv
cnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0NWZjNjY5
ZDc2NmE3NjFjNWQ3NzNkYzk1ZjA1NDFhMzhlMzZmOGUzLi5hM2U3MDE0YjVkOGVjMDk3MzhmZmE3
ZDU2NjQ1NDUwMTBmMDUzNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJz
ZXJzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJT
b2NrZXRUYXNrU291cC5oCmluZGV4IGU0MjFiOWUxYzcxMzE4NDM0ZjY0ODdmNWZjYjVhNmE4N2Jk
NzM5MTkuLjA4ODkyMzk1OWZlNDYwZmYyYmJhNGM4YzA4Mzk5ODA2NTdiZjM0OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291
cC5oCkBAIC0yNSwxNCArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBO
ZXR3b3JrU29ja2V0Q2hhbm5lbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggZTAwYTBjY2RmYTU4NzVjMDI4YzUwNTIzMTE0MTcyOGVlOTViNDM5
Mi4uZTM4YmMxYzYwYWY2ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01
Myw2ICs1NCw0OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1lbnRD
b2RlciB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4geworICAgIHVz
aW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNl
VHlwZSYgYXJyYXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJy
YXlSZWZlcmVuY2Uuc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9CisgICAg
c3RhdGljIE9wdGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybiBBcnJh
eVJlZmVyZW5jZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIu
ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQp
KTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0
IFQqPihkYXRhKSwgRXh0ZW50KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFt
aWNFeHRlbnQ+PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVu
Y2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVy
ZW5jZSkKKyAgICB7CisgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihhcnJheVJlZmVyZW5jZS5zaXplKCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5z
aXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNl
LmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7
CisgICAgfQorICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIGlmICghc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5j
ZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAg
IGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSks
IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNl
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZDMyYmI0NTdhNWI4ODVmM2Q1NjY4N2U3OWYxNWMzYTI2NzFiZTY0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2Uu
aApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQQyB7CisK
K2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgRXh0ZW50ID0gYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xhc3MgQXJy
YXlSZWZlcmVuY2U7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlSZWZlcmVu
Y2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAgQXJyYXlS
ZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBtX3NpemUo
c2l6ZSkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2
ZWN0b3IpCisgICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwgbV9zaXpl
KHZlY3Rvci5zaXplKCkpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX3NpemU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9CisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBt
X2RhdGE7CisgICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAg
ICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9z
aXplKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBj
b25zdCBUKiBtX2RhdGEgeyB9OworICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZSB7Citw
dWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVy
ZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkK
KyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAg
IH0KKworICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZl
cmVuY2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6
IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5zaXpl
KCkgPT0gRXh0ZW50KTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIUV4dGVudDsgfQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gRXh0ZW50OyB9CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7
CisgICAgICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29u
c3QKKyAgICB7CisgICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNFbXB0
eSgpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7
IH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitB
cnJheVJlZmVyZW5jZShjb25zdCBXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBB
cnJheVJlZmVyZW5jZTxUPjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggZWMzZDE0YWU4ZjNlYzI0NzA1NDc2M2NhZWU5MDlj
YzJjODc1ZjVkOC4uYmJkN2FiY2I0Y2RjNjA0MzgyYjEwNjVlMzMyMzg0NDljNmFjNTk3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjI3LDEwICsyMjcsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZh
bGlkKCk7CiAKICAgICB2b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3Jr
UXVldWUoKTsKLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2Vu
ZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQgPSAwLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOyAvLyBU
aHJlYWQtc2FmZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3Nh
Z2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0
aW9ucyA9IHsgfSk7IC8vIFRocmVhZC1zYWZlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCks
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFp
biB0aHJlYWQgb25seS4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGNoZWNrIHRoZSBTZW5k
U3luY1Jlc3VsdCBmb3IgdHJ1ZS9mYWxzZSBpbiBjYXNlIHRoZXkgbmVlZCB0byBrbm93IGlmIHRo
ZSByZXN1bHQgd2FzIHJlYWxseSByZWNlaXZlZC4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxk
IGhvbGQgb24gdG8gdGhlIFNlbmRTeW5jUmVzdWx0IGluIGNhc2UgdGhleSByZWZlcmVuY2UgdGhl
IGNvbnRlbnRzIG9mIHRoZSByZXBseSB2aWEgRGF0YVJlZmVyZXJlbmNlIC8gQXJyYXlSZWZlcmVu
Y2UuCisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj47
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRG
b3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAg
ICAKICAgICAvLyBUaHJlYWQtc2FmZS4KQEAgLTI0OSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiBy
ZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlv
bklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVy
biBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTU1
MSw3ICs1NTMsNyBAQCB2b2lkIG1vdmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYgYSwgc3RkOjp0
dXBsZTxCLi4uPiYgYikKICAgICBUdXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3RkOjp0dXBsZTxB
Li4uPiwgc3RkOjp0dXBsZTxCLi4uPj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5bmNN
ZXNzYWdlRXhwZWN0ZWQpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTU3MCwxNSArNTcyLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlv
bjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICAvLyBOb3cg
c2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQs
IFdURk1vdmUoZW5jb2RlciksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgaWYgKCFy
ZXBseURlY29kZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIC8vIERlY29kZSB0aGUgcmVwbHkuCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVw
bHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlB
cmd1bWVudHM7CiAgICAgaWYgKCFyZXBseUFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4geyB9OwogICAgIG1vdmVUdXBsZShXVEZNb3ZlKCpyZXBseUFyZ3Vt
ZW50cyksIHJlcGx5KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gcmVwbHlEZWNvZGVy
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjI1ZmRhN2JlZDJmZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgotCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLQot
bmFtZXNwYWNlIElQQyB7Ci0KLXZvaWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJh
eSgqdGhpcyk7Ci19Ci0KLWJvb2wgRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIu
ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0
YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5o
CmluZGV4IDM0NTBjMzFiNzNkZGI2YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNkNjky
N2YzNDFjNWFhOTNmYzEwNzNjYjA3NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5o
IgogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0g
ICAgCi1jbGFzcyBEYXRhUmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNlKCkg
PSBkZWZhdWx0OwotCi0gICAgRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAg
IERhdGFSZWZlcmVuY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYgdmVj
dG9yKQotICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6ZSh2
ZWN0b3Iuc2l6ZSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhbV9zaXplOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAgICAg
ICBpZiAoaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBtX2RhdGE7IAotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25z
dAotICAgIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0KLSAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1wcml2
YXRlOgotICAgIGNvbnN0IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3Qg
bV9zaXplIHsgMCB9OwotfTsKK3VzaW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5jZTx1
aW50OF90LCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGViNzMw
NWJmZDE5MTA4NzA2OGQzMGJjZGI4ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJj
NWFiOGJiYWRiZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAg
LTE4NiwyMCArMTg2LDE1IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRlY29k
ZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQogewot
ICAgIHVpbnQ2NF90IHNpemU7Ci0gICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxpZ25t
ZW50LCBzaXplKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50OF90
KiBkYXRhID0gbV9idWZmZXJQb3M7CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAgIGRh
dGFSZWZlcmVuY2UgPSBEYXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBkYXRhOwogfQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1lbnQo
QXR0YWNobWVudCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApp
bmRleCBiNzJkZDhhY2UyNzczZGIzNTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4ODJm
YzkwOTg0YjJmYTU3YmY5YzQ4Yjk2NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCkBAIC00MCw3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogY2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVz
c2FnZUZsYWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAg
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBk
YXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhl
IGRhdGEgcmVmZXJlbmNlIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUg
b2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAgIC8v
IFRoZSBkYXRhIGluIHRoZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlk
IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8g
UmV0dXJucyBudWxscHRyIG9uIGZhaWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0
IHVpbnQ4X3QqIGRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdu
bWVudCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKFQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmNwcAppbmRleCBmZDQwOTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5lODNh
M2U0YWZmNDJhNTc1NTA1ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9FbmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KQEAgLTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6OndyYXBG
b3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9yaWdp
bmFsLT5zZXRTaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShTaG91
bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2RlVmFy
aWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9y
aWdpbmFsLT5idWZmZXJTaXplKCkpKTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9yaWdp
bmFsLT5idWZmZXIoKSwgb3JpZ2luYWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8QXR0
YWNobWVudD4gYXR0YWNobWVudHMgPSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAg
ICAgcmVzZXJ2ZShhdHRhY2htZW50cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2b2lk
IEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSwgc2l6ZV90IGFsaQogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQog
Ci12b2lkIEVuY29kZXI6OmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihkYXRhUmVmZXJlbmNlLnNpemUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2b2lk
IEVuY29kZXI6OmFkZEF0dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAgICAg
bV9hdHRhY2htZW50cy5hcHBlbmQoV1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9FbmNvZGVyLmgKaW5kZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYyNDgy
ZTRjOWExMS4uZWE2MTk2N2JlMWViY2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xh
c3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC02
Miw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPik7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5jb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUg
JiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQgZW5j
b2RlKFQmJiB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmlu
ZGV4IDdmZDE4M2E1NmFlOThiMDY2NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUyYjQ5
ZDVjOGZjNDFhMmQ2NTRhZGNkODllODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCkBAIC05Niw3ICs5Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBl
ZGVmIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7
CiB9OwogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZTsKIHRlbXBsYXRlPD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSY+IHsKICAgICB1c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCA0NmUyMWQ4ZDkzNmYyZDhi
NTE2N2IyNDlmODgxMTE2ZmZlYjdkNGI5Li43NzQ2MWQ1NTViNzI5MmMyMGViZjUxNGEzMDJkMWRj
NmU3NzcwMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
U2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5o
CkBAIC01NCw5ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZDxV
PihtZXNzYWdlLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKICAgICB9
CisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6
aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7
IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOwog
CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6
OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0g
eyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBU
OjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpKTsKIApAQCAtNzIsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFUmJiBtZXNzYWdl
LCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0
IHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJ
ZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6Omlu
ZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPihtZXNz
YWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwg
c2VuZFN5bmNPcHRpb25zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFiODYz
OWI3YmE3NjM2YzYuLjUwMGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyQ29weS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIK
QEAgLTQ4LDcgKzQ5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRh
KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5z
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuY3BwCmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUzMjhm
MDFjOTk5OTUwYTAuLmU5NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXggODUy
ZWY0M2UwMDg2MzFjOWZhZmE4MjMwYzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBlYWZi
M2RjNDdjODVkYTQxOTBhMmJhMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJpbmdSZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA4YjM3NDBmNGIxMDFhZDkwZjUw
ZWQ1N2M4NTBiOTAzMGZjYzQzMGMyLi40YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBm
ZGY3MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TlBPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIk5QUmVtb3RlT2JqZWN0TWFwLmgiCiAjaW5jbHVk
ZSAiTlBSdW50aW1lVXRpbGl0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggYWQ0ZmNkOWQ4Y2NmNDJmMTJlZTQ4
OGUwMTM0NmM2MTlhNzAxYjhkMi4uYzdhNzA1M2NiZDI2ZDIwNDU0YzA0MmM2YWNlMTZjYjUyNTMw
ZjQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLW5hbWVz
cGFjZSBJUEMgewotICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggY2EwYWUyODQxMWE4M2RlNGJmM2ZlMDhiMDEyZTQwNTU0
OGQ4YjU3My4uODlmYjhhYmFmOWFlY2UwN2M2MzQ3MGRhM2RiODNjODgzMjZkZDNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDMsNiArMjAzLDcgQEAg
ZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5kX2Fu
ZF90eXBlcyk6CiAKIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6
CiAgICAgcmV0dXJuIGZyb3plbnNldChbCisgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAog
ICAgICAgICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAn
U3RyaW5nJywKQEAgLTIxNSw2ICsyMTYsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9y
d2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMnLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0y
NDMsNiArMjQ1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQo
KToKICAgICAgICAgJ1dlYktpdDo6RGlzcGxheUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dl
YktpdDo6RG93bmxvYWRJRCcsCiAgICAgICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmll
cicsCisgICAgICAgICdXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6
OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVBy
b3RvY29sSUQnLApAQCAtNTMwLDYgKzUzMyw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJz
KHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3
dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRD
b2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9y
Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0s
CiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1l
bnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBD
OjpBcnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdh
cmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgfQog
CiAgICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9QPHRlbXBsYXRlX25hbWU+Lis/KTwoP1A8cGFyYW1l
dGVyX3N0cmluZz4uKyk+JywgdGVtcGxhdGVfc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SURhdGEuY3BwCmluZGV4IDYxMzQzYmQ5NDEwNmI2ZTc4OWY4M2JjMjVkZTc5ZjdhNjA0MDkzY2Mu
LmM3ODIzMTZmMzA1N2EzY2FmOWQzZTIwNzdjODEzMjU1M2U2OTc1NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJRGF0YS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJBUElEYXRhLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAppbmRleCA3YmEyMDdhYmIwYWNjYzhhNTcwZjVjNjYz
ZjQ2Y2FhMjRhODI2ZDkxLi4zMWZkN2QwM2ZhZmUwMzk1ODc5NTJhNjM3OGQxYTljOGZmMmY3OTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNEYWVtb24o
KTsKICAgICB2b2lkIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwogICAgIHZvaWQgc2V0UU9TKGlu
dCBsYXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFPUyk7CiAjZW5kaWYKQEAgLTE4NCw0ICsxODMs
MyBAQCBzdHJ1Y3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOWMyNmRiNGU5YTlmNmJhNzJlNDgyMGJiNDA2
YzJjZmJkZTExM2U5Yi4uZGEzNzM0Yzg0ZDY1NGQ4ZDAzY2E3OTI1ZjdiZDc1OTkxM2JjMzRhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0zMjIxLDQgKzMyMjEsODIgQEAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+
IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4g
eyBXVEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwg
YXR0cmlidXRlcy5hbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LmFudGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhh
OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2Vi
R0wyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2Rl
ciA8PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29k
ZXIgPDwgYXR0cmlidXRlcy54ckNvbXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0
ZXMuc3RlbmNpbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRB
bHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1h
am9yUGVyZm9ybWFuY2VDYXZlYXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5zaGFyZVJlc291cmNlcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNp
b25zKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclBy
ZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJY
UikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVz
OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBh
Y3RpdmVJbmZvLm5hbWU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5j
b2RlciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5m
by5zaXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZl
SW5mbzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1
NWUyMTFlMTdjNGJlZGVmMTcwNWQ2Li4xZGFlOTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2
ZTlmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtNzEsNiArNzEsMTMgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRl
ICJBcnJheVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYg
KzIxMCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5
UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlczsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3Ry
dWN0IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNvcmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29u
ZmlndXJhdGlvbj4gewogfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4g
ewogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQor
Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TFBvd2VyUHJlZmVyZW5jZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAg
PjsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUw
ODYzNjVkYmY3N2ZhOThlNDFjMWM3NGEzZTdlMjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdi
MDQ4YTNkZWM2Y2Y4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIg
PDwgc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxh
eU1lZGlhSW5HUFVQcm9jZXNzOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNo
b3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91
bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNv
ZGVyOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
c2hvdWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggZDkxZTQ2MDM4ZjMwOWI1MTMwYmZkZTU4ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1
YmY0ZjkyY2YwNmZlNWUxMTIwNWE0YjUxMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZh
c0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVBy
b2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsg
ZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTElu
R1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURl
Y29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFs
c2UgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDliZDhhODE3NTQ5ZjU4ZmUzODNkNzI1
ZGE2NjNmM2JjNTRjYTBkNzQuLjc3ZTliNGQ1Y2M3NTJmYmNkYjZiNjVmOWFkYzI2MDE5NTZjYTE0
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnNDRi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENv
ZGVyc1NvdXAuY3BwCmluZGV4IDFkODRlMmZlMjY4ZjM0NjBlYjI5NzVjNDJiYTk1ZDE0ZjFkMjM1
Y2YuLmZhMjY4ZDU4NGEwZmM4ZGY4N2EyMWZhNDU2MDc3YjhjNWQ0MmI4NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3Vw
LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZv
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENlcnRpZmljYXRlSQogICAgIC8vIEVu
Y29kZSBzdGFydGluZyBmcm9tIHRoZSByb290IGNlcnRpZmljYXRlLgogICAgIGZvciAoc2l6ZV90
IGkgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAg
R0J5dGVBcnJheSogY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdFtpIC0gMV0uZ2V0
KCk7Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoSVBDOjpE
YXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKSk7CisgICAg
ICAgIGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0
aWZpY2F0ZS0+bGVuKTsKICAgICB9CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgQ2VydGlmaWNhdGVJbmZvJiBjCiAgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRp
ZmljYXRlOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjaGFpbkxlbmd0aDsgaSsrKSB7
CiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7Ci0g
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjZXJ0aWZp
Y2F0ZURhdGFSZWZlcmVuY2UpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmlj
YXRlRGF0YVJlZmVyZW5jZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
R0J5dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyhjZXJ0
aWZpY2F0ZURhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI3Nyw0ICsyNzcsMyBAQCBPcHRpb25h
bDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+ICBBcmd1bWVudENvZGVyPFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdQogI2VuZGlmCiAKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDkxN2YwMWJl
MWM5ZjhjYWEyYWJmN2YwZjg5MGY4OTVhM2YyZWY4Ni4uZjgzYTRjYWI5NWNhOGYwMTVjODk4NjVk
N2ZmOTMwYWY1MWU1ZjFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIEdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9TZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApAQCAtMTM3LDcgKzEzOCw2IEBAIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
IEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwIEBuby11bmlmeQogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwIEBuby11bmlmeQotUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVu
Y2UuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxh
dGZvcm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGlu
Zy5jcHAgQG5vLXVuaWZ5CkBAIC01NjgsNiArNTY4LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0V3JpdGVySGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTY5MywzICs2OTUsNiBAQCBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIu
Y3BwCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CmluZGV4IDRlYThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJk
NmY5NzMuLjcxZmZjNWYyZTA0ZGVkMDVkZThmYWVhMmUwOWEwNDkyNjNhNjkxZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTU2LDYgKzU2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYS5jcHAKIAogR1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2Uv
R1BVU2VydmljZUVudHJ5UG9pbnQubW0KK0dQVVByb2Nlc3MvZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1Mu
bW0KIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCAyZmUzODYyNTk0NjNiZmIz
NjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNkLi43MzdiNjI1ODE5ODY2YTBlY2I1OTlhMjEzMGIzMjkx
M2VhZjM5NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNv
bkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNv
bkxvYWRpbmdDbGllbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotbmFtZXNwYWNlIElQ
QyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3Mg
SWNvbkxvYWRpbmdDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlh
cnlQcm9jZXNzUHJveHkuaAppbmRleCA0ZjM5OGI1MzBmNjA4NTc1Yzk2N2I4M2M3NGZhMmY0MzI4
ZjZjZTNiLi44Y2E5N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4NTYwM2E4YTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTMs
NyArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRs
ZXIoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3Nh
Z2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNl
bmRPcHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBz
ZW5kU3luY09wdGlvbnMgPSB7IH0pOworICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBDOjpD
b25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5k
U3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBD
OjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAogICAgIGVudW0gY2xh
c3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFllcyB9
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CkBAIC02NSw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwg
dGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC0xNjMsMTIgKzE2NCwxMiBAQCBi
b29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgT3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKLWJvb2wg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6
UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpTZW5kU3luY1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRT
eW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5j
TWVzc2FnZUV4cGVjdGVkKTsKIAogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBUcmFjZVNjb3BlIHNjb3BlKFN5
bmNNZXNzYWdlU3RhcnQsIFN5bmNNZXNzYWdlRW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDgyM2MyMDJhODU2YTAx
MzZkZDllYTc1OWYwZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhmNGZiNGY4NzM0ZDdiZmQ2
MDhkMjAzODgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NP
QXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhv
cml6YXRpb25TZXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAotbmFtZXNwYWNlIElQ
QyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIE5hdmlnYXRp
b25TT0F1dGhvcml6YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2FkU3RhdGU6Ok9ic2VydmVy
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oCmluZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZiYmJhNDJmYzkwY2VjMzU3
N2YuLjEyOGEzOTc3ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM1LDEwICsz
Niw2IEBACiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAotbmFt
ZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0YTEwZGE5YjU0MWZlZTI4MjA4
MDhjMWU1MGQzZmE5MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVkNjViNTdlZDBjODAxM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGF5
ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAsMTAgKzgxLDYgQEAgY2xh
c3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1uYW1l
c3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwCmluZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRkNDVmMTJlZGUzNGEwZjc4
Y2EwYTYuLjI0OGU1M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVkYWFiMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNp
bmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElVc2VyU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5j
bHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oCmluZGV4IDEyOWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1NmQzY2NjYjIuLmE0ZDhk
N2NkODA0ZTY1NjBkYWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxkU2hhcmVkLmgiCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmgiCkBAIC00OCwxMCArNDksNiBAQCBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNl
clN0eWxlU2hlZXQ7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMzYzUyZDE2MGM0
OWUwMmFiMmUyNDc4NGNkY2QzZTFkMjVkYmU2YWMuLmJjZDAyN2IxNzM4MWJhODhhNWMzMWI5Nzgw
MDFiZTZjODI1N2VmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNTgsNyArNTgsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNzkyNyw2ICs3OTI2LDEwIEBAIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQ
VVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdF
bmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgPSBw
cmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFibGVkKCk7CiAgICAg
cGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVz
ZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcGFy
YW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNl
R1BVUHJvY2Vzc0ZvcldlYkdMRW5hYmxlZCgpOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnNo
b3VsZEVuYWJsZVZQOURlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7
CiAjaWYgRU5BQkxFKFZQOSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGFyYW1ldGVycy5zaG91
bGRFbmFibGVWUDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkg
JiYgKCFXZWJDb3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0Rl
Y29kZXJFbmFibGVkT25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA2NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3MTFmOTFiMmU1Li40Mzdh
Yjc1MGIzNWFiMTYzYjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCiAj
aW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIwMyw3ICsyMDQsNiBAQCBl
bnVtIGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURh
dGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1Y2U2NWU5ZDJkNTY1YjNm
MTI1ZjM0NTdhMjU2ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMyZTZhMTk5NzdkYjYxYmFi
NjEzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
LmgKQEAgLTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGQ0NDJiNjJi
NTIyNTg3ZjkwZmE2ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2ODhhMjY4MjE5NDFmZjdh
NDE4ZjRkZjVhOTc1YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKQEAgLTM4LDEwICszOCw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJ
bmZvOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMGNjMDYzZjY4ZDAxYmQ1ZDdkNDljNTU5YjE2OTY5MTg1M2ZlYmRjMy4uYjcwMDJm
NDE1ODZmZDRlZjg4NzQwNTllNzM2OWJkYjIxZTBiOWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MDEsNyArNzAxLDYgQEAKIAkJ
MkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5
NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0
OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAq
LzsgfTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdE
MTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBG
NDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5j
ZS5jcHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBG
NDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAw
RjQ5M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9
OwogCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYx
QTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtMTMwNiw2
ICsxMzA1LDcgQEAKIAkJN0FGQkQzNjMyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVE
QkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lV
dGlscy5oICovOyB9OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVu
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURC
MjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OwogCQk3QzA2NUYy
QzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFD
OENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87
IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3
M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0
OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICov
OyB9OwpAQCAtMjcyMyw3ICsyNzIzLDYgQEAKIAkJMUFDNUZGQzExNzRCRkQxQjAwMDE0ODNEIC8q
IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxv
YWRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlTG9hZFN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0Ix
NSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGFSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3
NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1
QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00Mzg5LDYgKzQzODgsMTcgQEAKIAkJN0FGQkQzNjUyMUU1MUJB
QjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaDsgcGF0aCA9IENsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNC
IC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lV
dGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMURCMjY1MjU2NjhDRTAw
MDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4
RTM0NDI1NzdBQzM3MDA5RjFEODMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjUy
NTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjcyNTRB
RkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2OTI1NEFG
RUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbklu
Zm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1
Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY4MCwx
MSArNjY5MCwxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENv
ZGVyLmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJz
LmNwcCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMu
aCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAq
LywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJ
CQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAz
MkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMx
MEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBG
MDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAw
NzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMx
NUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERl
Y29kZXIuaCAqLywKQEAgLTgzNTYsMTEgKzgzNjYsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3
MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERp
c3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDcz
RTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1
MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdG
MzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJ
CTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5
MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3
ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmgg
Ki8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JF
NzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3
MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODM3
NSw5ICs4MzkwLDE0IEBACiAJCTU1MDY0MEExMjQwNzFBMjkwMEFBRTA0NSAvKiBncmFwaGljcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0I0OEUzNDMy
NTc3QUJGODAwOUYxRDgzIC8qIGNvY29hICovLAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNF
MyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRB
RjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMy
NDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3
QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICov
LAorCQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oICovLAorCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFE
MDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2
NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJ
CQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAq
LywKQEAgLTg3NzUsNiArODc5NSwxNCBAQAogCQkJbmFtZSA9IENsYXNzaWZpZXI7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3QjQ4RTM0MzI1NzdBQkY4MDA5RjFEODMgLyog
Y29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdC
NDhFMzQ0MjU3N0FDMzcwMDlGMUQ4MyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cCAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUgLyogY29jb2EgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTEyMDUsNiArMTEyMzMsNyBAQAog
CQkJCTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0Yu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVu
dENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2
RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2MzRG
MjM0RjdDNjQwMEZGQTg2NCAvKiBBc3luY1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMTMyNzQsNyArMTMzMDMsNiBAQAogCQkJCTJEOTJBNzg1MjEyQjZBQjEwMEY0OTNGRCAv
KiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3
RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQky
RDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0OURBQTM4QzI0Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dzZXJD
aGVja3MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcgLyog
RGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmgKaW5kZXggZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2OThhMjEyOTBkMzYxZDRhNi4uYzlkYzY4
MmI4NzU0OWI4MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApA
QCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7
CiBjbGFzcyBQYXltZW50Q29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyYzBkZjViOWY1NDk2ODQ3ZWQ2Njkx
MGJmMmYzOWIyY2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5OTg4
NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5oCkBAIC0zNSwxMCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBS
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUy
MTJjNjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
I2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsK
K30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7Cisg
ICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNzYWdl
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0
cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAg
ICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2
ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0
aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxl
YXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVCdWZm
ZXIoKTsKKyNlbmRpZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAg
bV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgs
IGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZv
ckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9y
RGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgYXV0
byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7
CisgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0p
OworICAgIH0KKyNlbHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhN
RTogQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRoaXMg
aXMgdGhlIHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTM0OQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRh
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZh
aWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAgICBp
ZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVkIG91
dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25z
LCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAgIGZv
ciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVu
dC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVj
dG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5v
dGlmaWNhdGlvbigpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
aXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAgICAg
ICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0
V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRp
bWVkIG91dCwgc28gcmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxk
IGxvc2UgdGhlIGNvbnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1F
OiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8g
Zm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWRkNjljYWY5ZGMwM2M1MjRiMTAwYTliNmI3NmNmMGFkNzk5YTBkNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNDEyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRh
dGlvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlvbgor
Ly8gY29udmVydHMgdGhlIGludGVyZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdlcyBh
bmQgc2VuZHMgdGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBH
UFUgcHJvY2Vzcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBi
eSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVibGlj
IFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSgpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
IG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4K
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3Zl
cnJpZGVzLgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwor
ICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3JlOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQgZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7CisgICAg
dm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRl
Q29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsKKwor
ICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNldEZh
aWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9y
KEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJl
KSBmaW5hbDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IG5hbWUpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFJl
bmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7
CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkgZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xh
bXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAg
IHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5k
RXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpIGZp
bmFsOworICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0
b3IpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBH
Q0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkgZmlu
YWw7CisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQp
IGZpbmFsOworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAgIHZv
aWQgY2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1w
ZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0NH
TGNsYW1wZiBkZXB0aCkgZmluYWw7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBzKSBm
aW5hbDsKKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdy
ZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAgdm9p
ZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBj
b3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZl
cigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5h
bDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0g
bW9kZSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQgZGVw
dGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dM
Y2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsK
KyAgICB2b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJy
YXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmluYWw7
CisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFibGUo
R0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdD
R0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZvaWQg
Zmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0
dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7CisgICAg
dm9pZCBmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZU1p
cG1hcChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIp
IGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dMaW50
IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBu
YW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51
bSBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51
bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBn
ZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRl
Z2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NHTGlu
dCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
Ym9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7Cisg
ICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0
cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVj
dCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9M
b2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBH
Q0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKKyAg
ICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2
YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFt
ZSkgZmluYWw7CisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVkKEdD
R0xlbnVtIGNhcCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxvYXQg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFy
YW0pIGZpbmFsOworICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dM
ZmxvYXQgdW5pdHMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2
YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7
CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQg
cmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUo
R0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2sp
IGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAg
dm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spIGZp
bmFsOworICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBH
Q0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51
bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZp
bmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHkpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dM
ZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdD
R0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQg
c2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0
cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7
CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEs
IEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFs
OworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhl
bHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCBkaXZpc29yKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFy
cmF5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVh
ZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NH
TGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48
R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQg
c3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xp
bnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdD
R0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQ
bGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZp
bmFsOworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGludmFs
aWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNy
YykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9y
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2
b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhl
bHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1Yklt
YWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50
IHYxKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVp
bnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
NHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQg
djIsIEdDR0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBp
bmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWlu
dCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lk
IGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWlu
dCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1
ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xp
bnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
QnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGlu
dCBzdGVuY2lsKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsK
KyAgICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOwor
ICAgIHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVl
cnkpIGZpbmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVj
dCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlU2FtcGxlcigpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQgdW5p
dCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQg
cGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICBH
Q0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dM
c3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZp
bmFsOworICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICB2
b2lkIGRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xpZW50
V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRp
bWVvdXQpIGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZp
ZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5j
aShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJvb2xl
YW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2
b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBw
cmltaXRpdmVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkgZmlu
YWw7CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJN
b2RlKSBmaW5hbDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5h
bDsKKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIHJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikg
ZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWlwdHIpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5h
bWVzKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNl
cywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0lu
ZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tO
YW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmlu
YWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykgZmluYWw7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZlbnRN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBNYXJr
ZXJFWFQoKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAg
ICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykg
ZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7CisgICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0TXVs
dGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmluYWw7
CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZpbmFs
OworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAg
ICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCitw
cm90ZWN0ZWQ6CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJp
ZGVzLgorICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0ZToK
KyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQoU3Ry
aW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7
CisgICAgdm9pZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpOworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
eyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8vIFRo
ZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3Qg
aXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihH
Q0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVf
djxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1
Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hvcnQs
IGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwgdWlu
dDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJfdD4p
Oworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lX3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
UGxhdGZvcm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xj
aGFyKSA9PSBzaXplb2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludDY0
KSA9PSBzaXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2NCkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisvLyBHQ0dMc3luYyBhbmQgR0NHTCpwdHIgdHlwZXMgYXJl
IHBvaW50ZXJzLiBPbiBzb21lIHBsYXRmb3JtcywgdGhleSBhcmUgMzItYml0LgorLy8gQ3VycmVu
dGx5IHdlIGhhcmQtY29kZSBpdCBieSB1c2luZyA8PSwgYW5kIGFzc3VtZSB0aGF0IHdlIGRvIG5v
dCB0cmFuc2ZlciBhcnJheXMgb2YgdGhlIHR5cGVzLgorc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
TGludHB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dM
c2l6ZWlwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
THZvaWRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
THN5bmMpIDw9IHNpemVvZih1aW50NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2Yo
aW50cHRyX3QpKTsKKy8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBz
Y3JpcHQuCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZjJiMzJiMmJjMTAxMGVmOGVjZDBhZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5v
dFJlZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQor
ICAgIHZvaWQgV2FzQ2hhbmdlZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMxNGE0NDMxNTYyMTFjYzcxODUxMzczMzhjYWNjN2NlNTAzNTc5NWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAg
KzEsMTY0NyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0
R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xl
bnVtIGVycm9yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTeW50aGVzaXplR0xFcnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QoKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpN
b3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdD
R0xlbnVtIHRleHR1cmUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVy
KHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxh
dGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmli
TG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1H
TE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRS
ZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZm
ZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNs
YW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBH
Q0dMZW51bSBtb2RlQWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3Ip
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVu
YyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdD
R0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVu
dW0gZHN0QWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFy
Z2V0KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0
YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZm
ZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dM
Y2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dM
Ym9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCks
IHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRp
Y19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
QnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZv
cm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdM
T2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51
bSBhcmcwKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVRleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJh
bWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxh
ZykpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xh
bXBmIHpGYXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShH
Q0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
R0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZp
bmlzaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZp
bmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dM
ZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywg
R0NHTGludCBsZXZlbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQs
IGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2Uo
bW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlw
bWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZh
bHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5k
ZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJl
cGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQp
CisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50
PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQp
CisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAg
aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRl
eCkKK3sKKyAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8
Ym9vbD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZT
aXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVw
bHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHku
ZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVu
dW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3Ry
aW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShh
cmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7
CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNp
c2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24p
Cit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAg
IGludDMyX3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNp
b25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5
LCBwcmVjaXNpb25SZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBpZiAoc2VuZFJlc3VsdCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VS
ZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBp
ZiAocHJlY2lzaW9uKQorICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5Owor
ICAgIH0KK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRl
clNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxv
YXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4
UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dD
R0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+
IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFs
dWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAo
c2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgp
LCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisg
ICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6
ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihw
cm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAg
bWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6
ZW9mKHVpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRp
b24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0
ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0
LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVh
biBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29s
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNFbmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4
dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4
dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlu
ZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpM
aW5rUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9s
eWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9y
LCB1bml0cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xi
b29sZWFuIGludmVydCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcx
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJT
b3VyY2UoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBm
dW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0g
ZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywg
cmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNr
KG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNl
LCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9w
KGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShH
Q0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBh
c3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5j
aWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBw
YXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRl
cmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0x
ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
MmYobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJp
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
Pih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgs
IHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9h
dCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgs
IHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwg
dyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2
YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliMWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2
KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4
QXR0cmliMmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2
KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSwgR0NHTGZsb2F0IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAz
PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgs
IHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBl
LCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9m
ZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9y
bWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVz
YWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZm
ZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7
CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVw
bHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0
YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhl
bHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3Nl
ZFRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHBy
aW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlz
b3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRp
dmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRl
eEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
cmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwg
R0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRU
YXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
cmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3Vi
RGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJl
cGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRh
dGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNY
MCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBk
c3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJp
dGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEs
IHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGxheWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUs
IGxldmVsLCBsYXllciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFt
ZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNp
emUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NH
TGVudW0gc3JjKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZWFkQnVmZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
emVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhl
bHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFn
ZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1h
Z2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0Qx
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1
YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVz
c2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1h
Z2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihw
cm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFn
RGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
dWludCB2MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwg
R0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSks
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRy
aXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxi
b29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0
cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50
IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQs
IDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVp
KGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVp
dihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNp
emUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBt
b2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihi
dWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1
ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFy
QnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVz
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZl
cmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlUXVlcnkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0
dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2lu
UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwg
cXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdl
dCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NH
TGVudW0gcG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVp
KHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVl
cnlPYmplY3R1aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2Jq
ZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
U2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQs
IHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2Ft
cGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBh
cmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5
bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisK
K0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3lu
YyBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xp
ZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0
IHRpbWVvdXQpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0
aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFn
cywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5j
IGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0
aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShH
Q0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5
bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dM
Ym9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNr
KFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3Jt
RmVlZGJhY2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNm
b3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFu
c2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayh0YXJnZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1v
ZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZl
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVj
dG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZv
cm1OYW1lcyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUlu
ZGljZXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IHVuaWZvcm1CbG9ja05hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
QmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0luZGV4KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmco
cHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBw
YXJhbXMpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0lu
ZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAg
ICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZT
aXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9F
UyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0
RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtl
ckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
PiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4
LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5H
TEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dM
dm9pZCogcGl4ZWxzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50
ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhB
dHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50
ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50
ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgLy8gTk9MSU5UCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRN
dWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQq
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2
NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAppbmRleCA2ZGRlZTg3YWJkY2M3NmY4NjlhZDU1NGRiNTExMmIzNmI4MmYyZDZiLi5kYTM5
ODg2ZWJjOGYxNmQ4OGRmZTE4NzNjNTdhODdmZWNmNmU0NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwCkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwg
UGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTGVudW0sIGJvb2wsIGJvb2wpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
KiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggOTVj
ODM2ZTY5NTA0MWQ5N2QyNTkwMzZmZDczZGZmNWM0NmI4ZmY5MS4uYzhjNTgyOTA1MGE1MjU4Zjlk
OTMxOTc2Yjk1ZjA1ZTU5N2E1NmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6
Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0
aW9uLmFkZENsaWVudCgqdGhpcyk7Ci0gICAgYm9vbCBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoCisgICAgYXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1f
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJh
dGUoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkpLAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3Rp
bmF0aW9uSUQpLCAwKTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihzdHJlYW1Gb3JtYXQpOwogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9y
bWF0LCBtX251bWJlck9mRnJhbWVzKTsKLSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlx
dWU8V2ViQXVkaW9CdWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQpOworICAgIG1fYXVkaW9CdWZmZXJM
aXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1h
dCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5jcHAKaW5kZXggZGNi
ZDRmOGFmYWZlMTA2MGE2MWIwMzA1MzFlMTJjNzRkMzdlZmZkMy4uMmNhOTdjNjM3YjFmMTllODI3
OGE2YWU3MTNjNWMxNGU2NzY3MTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJfQVVESU8pICYmIFBMQVRGT1JNKENPQ09BKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHlNZXNzYWdlcy5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJv
dmlkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCmluZGV4IGI4ZjQ1YTZkNWJiNGRiNDYw
OTg4MDEyNDNiYjVlOTMxN2IxZTNlMmIuLjY1YjhmZDBkNzczNDdlOTM4YjU2NDU4MjI2Yjc4ZGE0
M2M5Nzg5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3Bw
CkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291
cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nv
dXJjZVByb3ZpZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCmluZGV4IGU1OWUxYjA2YjQ0N2U1
ZDgwY2E2MTA1MmM2YzdhMzJjNGJhMTQyZTYuLjgxOTQwOTBjOTMzYjJmMTFhNjQ2MGFiM2MxNzcy
ZDM3NjE2MzcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgK
QEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRlbnRpZmllci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5jcHAKaW5kZXggMGRiODVhZTliZDI0MWViYTFiZGE0ZTYyMjQ0MGY2MzI4ZTFkOGEwYi4u
Mjk3ZWViZGExOTE4OWRmZTBjZmU2YzFlZDc2OWFhY2I5ZDZkOTExOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb24uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXJDb3B5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGQ1NDI0NDJjODQ0
ZTU0ODNmZDNjZWQ3ODUwNWRjYTE4Njk0YWU0YTQuLmEzMzllYjdiZmZkNmI0NTE5NGQyOWExMDkx
NGJmYTJmZmJkNzRhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0zNSw3ICszNSw2IEBA
CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDBjNmY3M2Qw
NzE0NGI1NjI2NzY5MzY3YzlmMmEzYTQwMTdlYWRlODAuLjE2OGVmNDM1ZGRlNTYxNGQzMGYzYmUy
ODY3MGE0N2FlZDYxNmRlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAj
aWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCA3MzlhNDk2
ZWY0OTRjYjRhNjE4NTY2ZmZjNjRkNGEyNjRhNzRlOWQwLi40YmVhZTA2MjMxN2JhMjZhNjA2ODNm
MWY0NTEyMzNlYjEwNzNhYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVT
RShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKQEAgLTQzLDcgKzQ0LDYgQEAg
dXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7
CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDJkYWQyMDM4NDJm
MGU1NTNmZTNiNDYyNDQxZWU5NGZhMjY0OTNhMTEuLmMyOGNlN2YyZTE3ZTg5YThlNTE4NmE3NzA2
YTJlOGE0NGY2YjdlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRUeXBlcy5oPgpAQCAtNTQsNyArNTUsNiBAQCBjbGFzcyBE
YXRhOwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgQ29ubmVjdGlvbjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDQg
KzE2MSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDYyNzVjZjZhNmU3
ZTUwYzZiMzYwNjJlMTMxODc1NzUyODlhNTgwZWUuLmU1YmE2NjFhZTY2ZjU1YTkwNzQ2NGU2ZmYz
NmU0MmI3YWRkMDBkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
cihXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCYgaW5zcGVjdG9yRnJvbnRlbmQpCiAg
ICAgOiBtX2Zyb250ZW5kQ2xpZW50KG1ha2VXZWFrUHRyKGluc3BlY3RvckZyb250ZW5kKSkKIHsK
LSAgICBQYWdlKiBwYWdlID0gaW5zcGVjdG9yRnJvbnRlbmQuZnJvbnRlbmRQYWdlKCk7CisgICAg
V2ViQ29yZTo6UGFnZSogcGFnZSA9IGluc3BlY3RvckZyb250ZW5kLmZyb250ZW5kUGFnZSgpOwog
ICAgIEFTU0VSVChwYWdlKTsKIAogLy8gICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CkBAIC05Myw3
ICs5Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3Rl
ckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvCiAgICAgICAgIEpTT046OlZhbHVlOjpj
cmVhdGUoZXh0ZW5zaW9uSUQpLAogICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGRpc3BsYXlO
YW1lKSwKICAgICB9OwotICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hl
cigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygicmVnaXN0ZXJFeHRlbnNpb24iX3Ms
IFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21t
YW5kV2l0aFJlc3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVu
dHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zCiAgICAgfQogCiAgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3Vt
ZW50cyB7IEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07Ci0gICAgbV9mcm9udGVu
ZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3Vs
dEFzeW5jKCJ1bnJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRp
b25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250
ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdp
c3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVz
dWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0
KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAzMDY0ZTljNGFmY2MyY2ZmNTRhMzI1ZTI1MzFl
ZDA1MjJhMDAxMzkzLi5iOTc5NDY1OWVhYmQxODRiMzg5YzA2ZDEzMmY4YzQyZjgwNTIzY2MyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3Bh
Y2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggODY1NzExYjM2NmMyOGRmNDg0YjRjZGMwN2FhM2ZjZjNkY2ViZjJmNi4uNjk0ODk2Yzk5
N2E0OTQwZGJhYjJkYTc2NTc4MjBhMjc4YWYxZGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVy
LmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODNlMzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVh
OWQ1Mzk2NmZiLi43ZTFkNDk5NDcxNWY4ODQ5Y2U4YmZlNWVjMzQ1NWQ0NzM3NzgwMGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlJZGVudGlmaWVyLmgiCkBAIC0zNiw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3Jt
RGF0YVJlZmVyZW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5NGVmMGQxZmNlMmU2MDFkZjQ0OWNm
Zjg1MzlmYmQxNjQ3OTNlYmUyLi5mZjY5ZjU2MDllNTc3Y2FjNzc3ZjA0YWZhNzRhZjIxMDc0ODY0
Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nv
Y2tldENoYW5uZWxNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGY1MzQ3ODM0N2U3NzVkZjM3ZWE5NzYz
NGMyMzMwOTMyYjRhMTRkMjguLmFkN2ZmMTg3ZGJiNDM1M2I5ZWQzYmM1N2M1YmEyYzRhYTRlOGNm
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1NlbmRRdWV1ZS5o
PgpAQCAtMzgsNyArMzksNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHAKaW5kZXggYWYyNDJjZDJiNTk1YWM0YTQ0ODQyOTdiZTVkNWNmZTE4ZDQ4ZjMy
NC4uN2QwMDczNjliOWNjZTg1YjhmMDU0NTdkNjY2ZDFlNDQ1MWI5NmM1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uaAppbmRleCBkZDA4MjAxMDcxMmI5ZjVkYjlmZWJkODhkYTY2OWI2ZGY2MWQwZjI5Li5iNDNj
YjJlZmFkMWUxMDFlZTI2NWI5M2RkZTliMDYxMjczNmEwOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtMjUsNiArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGUuaD4KQEAgLTMzLDcgKzM0LDYgQEAKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgK
aW5kZXggY2I0OGUwNTczNDhhMmU4NjZiMDkxZmY1YWM4NzI2MDVjYTE5MmRkNS4uMzIzZjI1ZWU4
ZmQ4MWIwMjYzMGQyZjI1OWExYWZiODg0YjRjZjVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaApAQCAt
MzUsNyArMzUsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IGVhNTM1OTYwMTA5ZmVl
NmRjNDgwNWNmNjg5MTI3OThlZTlhYjZmMDMuLjQwYjRjOGYyMTI5Y2YxMjMzYTFiMzFiODUxMjdl
N2E3ZTllM2Q3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmgKQEAgLTYwLDEwICs2MCw2IEBAIE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9u
OwogT0JKQ19DTEFTUyBXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNT
IFdLUERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGU7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RD
YWNoZTsKIGNsYXNzIEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFj
ZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4
N2E4YzI2MzRlOWQ1NDkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4
LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkx
Miw2ICs5MTYsMjIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdl
LmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNp
emUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2lu
ZG93RGlzcGxheUlEKSBjb25zdAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgVU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGUoYXR0cmlidXRlcyk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisK
KyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBs
YXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5
ZjJjZDMzNzYwZGM4Li4xMjE1ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsK
KyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxh
eUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJp
Z2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7
CkBAIC00MDMsNiArNDA3LDcgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hl
ZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUg
Ym9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwog
ICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjY0MjE0NzdhNTZjZWUxYjQ1OWFiMWI3MGQ4ZGNhZDlk
M2RhZmMzNC4uZDQ2MzNkZGI2Y2M2NDk4MDNiOTI0NTc1NjI1YmZhNTI4YzE3ZDRiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyMiw2ICs0
MjIsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZh
c0luR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNz
IH0KICAgICAsIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91
bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVBy
b2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5B
QkxFKFdFQkdMKQorICAgICwgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFt
ZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJr
cyB7IHBhcmFtZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpA
QCAtNzI1LDcgKzcyOCw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rv
cnkoKSk7CiAjZW5kaWYKLSAgICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3Ig
IT0gMSkKICAgICAgICAgc2NhbGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApA
QCAtMzc5Myw2ICszNzk1LDkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zZXRVc2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyQ2FudmFz
SW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9j
ZXNzRm9yRE9NUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzKTsKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEobV9zaG91bGRQ
bGF5TWVkaWFJbkdQVVByb2Nlc3MpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0wobV9zaG91bGRSZW5kZXJXZWJH
TEluR1BVUHJvY2Vzcyk7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5H
X0FQSSkKQEAgLTY5OTAsNiArNjk5NSw3IEBAIHZvaWQgV2ViUGFnZTo6c3luY2hyb25pemVDT1JT
RGlzYWJsaW5nUGF0dGVybnNXaXRoTmV0d29ya1Byb2Nlc3MoKQogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2Fi
bGluZ1BhdHRlcm5zKG1faWRlbnRpZmllciwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpLCAwKTsK
IH0KIAorCiAjaWYgRU5BQkxFKE1FRElBX1VTQUdFKQogdm9pZCBXZWJQYWdlOjphZGRNZWRpYVVz
YWdlTWFuYWdlclNlc3Npb24oTWVkaWFTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcGFnZVVSTCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlN2Y4YzBhM2I2MDRl
N2FhMTU3Yzc0MDIzMWU1NTU3NDlkNGVmN2M3Li4yMTEwYTMyZjY3MGYwMGZhMjQ0ZmU2ZjlkNzk1
YTZkZGY2MGQxNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAi
Q2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFt
ZXMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5o
IgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5o
IgpAQCAtMTYwLDcgKzE2MSw2IEBAIGNsYXNzIEFycmF5OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNs
YXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5j
V2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkK
KyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJl
c0Jsb2NrZWRPblN5bmNocm9ub3VzUmVwbGllcygpOwogICAgICAgICByZXR1cm4gc2VuZFN5bmMo
V1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIFNlY29uZHM6OmluZmluaXR5KCksIElQ
Qzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKQEAg
LTE4MjYsNiArMTgyNiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckNhbnZh
c0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckRPTUluR1BV
UHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vz
cyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV9zaG91bGRSZW5kZXJX
ZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZh
bHNlIH07CiAjZW5kaWYKQEAgLTIxODMsNCArMjE4NiwzIEBAIGlubGluZSBib29sIFdlYlBhZ2U6
OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYp
IGNvCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMzgzOGFiMzI2
ZGQ4Mzk2YjYwMTA3Y2JhM2Y2MjQ1MDc0Yzk3ZjcxNS4uMGUyOTNmYTRkZjE5Y2JmOGNkNjc5MzE3
NmQ3ODc4OTJhZDhlMTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTUxNyw3ICs1MTcsNyBAQCBib29sIFdlYlBhZ2U6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAg
Ly8gRklYTUU6IEludGVycHJldCB0aGUgZXZlbnQgaW1tZWRpYXRlbHkgdXBvbiByZWNlaXZpbmcg
aXQgaW4gVUkgcHJvY2Vzcywgd2l0aG91dCBzZW5kaW5nIHRvIFdlYlByb2Nlc3MgZmlyc3QuCiAg
ICAgYm9vbCBldmVudFdhc0hhbmRsZWQgPSBmYWxzZTsKLSAgICBib29sIHNlbmRSZXN1bHQgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShT
aG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJm
b3JtTGF5b3V0OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpDaGFyKSwKICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0
S2V5RXZlbnQ6OlJlcGx5KGV2ZW50V2FzSGFuZGxlZCksIG1faWRlbnRpZmllcik7CiAgICAgcmV0
dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGYyZjIyODIyYzdiMjIzZmNhNTlmOTU1NzNkMTFkYzk5
YjEwMzQ4MTEuLjU4MmVlNzVkOTlhNzQyNDI1NGEzOWRhYjIwNmY4NDYxNzM0YWQ5YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5NDIsNiArMTk0MiwyMCBA
QCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQ
dXJwb3NlIHB1cnBvc2UpCiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KKworI2lmIEVOQUJM
RShXRUJHTCkKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wg
dXNlR1BVUHJvY2Vzc0ZvcldlYkdMKQoreworICAgIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMID0g
dXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQorCitib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VHUFVQcm9j
ZXNzRm9yV2ViR0w7Cit9CisKKyNlbmRpZgorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlOWM0N2RiNGM0NDdjMGY0YWI2
MjdjMDk0YjVmNjhkYjU2NWE5YTZjLi4xYTU4NWFjMTQyYjE4MzI3NjRjNGQ4NTM3OTA5MGIyY2Jj
YTczYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM0Nyw2ICsz
NDcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmlu
Zyhib29sKTsKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sKTsKICAgICBi
b29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3Nl
KTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0wo
Ym9vbCk7CisgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0
OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCkBAIC02ODcsNiArNjkxLDkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yTWVkaWEgeyBmYWxzZSB9OworI2lmIEVOQUJM
RShXRUJHTCkKKyAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMIHsgZmFsc2UgfTsKKyNl
bmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI3YzczMmNjMDg0NzBhODEyNWZjN2U1YTc0NWYx
ZDJmN2NjNWUxOWIuLjBhNDFkNTNjNWM4YTA5ZDEwZTFhODEyNTNjMWJlMDEwMTkxZjM5ODYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMiBAQAorMjAyMC0xMi0wMiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3ND
b250ZXh0R0wgZm9yIEdQVSBwcm9jZXNzLgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9u
IGlzIHVzaW5nIFdlYktpdCBJUEMgYW5kIGlzIGluY29tcGxldGUuCisKKyAgICAgICAgQWRkIHRo
ZSBjb2RlIGdlbmVyYXRvciB0byBnZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRs
eQorICAgICAgICB0aGUgZ2VuZXJhdG9yIGdlbmVyYXRlcyBhIFdlYktpdCBJUEMgaW1wbGVtZW50
YXRpb24uCisKKyAgICAgICAgVGhlIGlucHV0IGRlZmluaXRpb24gdG8gdGhlIGdlbmVyYXRvciBp
cyB0aGUgcHJveHkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaGVhZGVyIGZpbGVzLgorICAgICAg
ICBUaGUgb3V0cHV0IG9mIHRoZSBnZW5lcmF0b3IgaXMKKyAgICAgICAgICAgLSBXZWJLaXQgSVBD
IG1lc3NhZ2UgZGVmaW5pdGlvbiBmaWxlCisgICAgICAgICAgIC0gTWVzc2FnZSBzZW5kZXIgY29k
ZQorICAgICAgICAgICAtIE1lc3NhZ2UgcmVjZWl2ZXIgYW5kIHBheWxvYWQgaW52b2NhdGlvbiBj
b2RlCisKKyAgICAgICAgVGhlIGdlbmVyYXRvciBjb252ZXJ0cyBHcmFwaGljc0NvbnRleHRHTCBH
Q0dMIC1wcmVmaXhlZCB0eXBlcyB0bworICAgICAgICBzaXplZCBJUEMgdHlwZXMuCisKKyAgICAg
ICAgVGhlIGdlbmVyYXRvciBpcyBpbnZva2VkIGR1cmluZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0
aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgc3RvcmVkIGluIHRoZSByZXBvc2l0b3J5LgorCisgICAg
ICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOiBBZGRlZC4KKwogMjAyMC0xMi0wMSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEdQVVByb2Nl
c3MuQ3Jhc2hXaGlsZVBsYXlpbmdWaWRlbyBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdl
YmdsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYxNmI0MjIyOWNmMmY4MjhjNjZjN2U3YjQxNzczYzJlYmU0NDMxMTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAg
LTAsMCArMSwxMDQ0IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0
Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMg
dGhlIHNvdXJjZSBmaWxlcyBmb3IgV2ViR0wgR1BVIHByb2Nlc3MgSVBDLgorIworIyBweXRob24z
IC1tIGJsYWNrIC1sIDE1MCBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMgcHl0
aG9uMyAtbSBteXB5IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIworaW1wb3J0
IGFyZ3BhcnNlCitpbXBvcnQgZW51bQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0
IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCisKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0
LCBJdGVyYWJsZSwgQ2FsbGFibGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0
ZXJhdG9yLCBDb3VudGVyCisKK3Jvb3RfZGlyID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFy
ZW50IC8gIi4uIiAvICIuLiIpLnJlc29sdmUoKQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3Rf
ZGlyIC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJF
eHRlbnNpb25zR0wuaCIKKworZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsKKyAgICByb290X2RpciAv
ICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIg
LyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorXQordHlwZXNfaW5wdXRfZm4gPSBy
b290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJn
cmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisKK3RlbXBsYXRl
X3ByZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2Zu
ID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBo
aWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29u
dGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICAr
ICIiIi8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlv
biBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNw
cmFnbWEgb25jZQore30KKworIiIiCispCitjb250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIg
LyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxh
dGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCB7eworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JE
aXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNl
bmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkg
LT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkK
K3t9Cit9fQorCisjZW5kaWYKKworIiIiCispCisKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX2Zu
ID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIg
LyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuY3BwIgorY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVt
cGxhdGVfcHJlYW1ibGUKKyAgICArICIiIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHt7Cit7fQorCit9fQorCisj
ZW5kaWYKKworIiIiCispCisKKworZGVmIHdyaXRlX2ZpbGUoZm4sIG5ld19jb250ZW50cyk6Cisg
ICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBpZiBmLnJl
YWQoKSA9PSBuZXdfY29udGVudHM6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgZXhjZXB0
OgorICAgICAgICBwYXNzCisgICAgd2l0aCBvcGVuKGZuLCAidyIpIGFzIGY6CisgICAgICAgIGYu
d3JpdGUobmV3X2NvbnRlbnRzKQorCitjbGFzcyBjcHBfdHlwZShvYmplY3QpOgorICAgIHR5cGVf
bmFtZTogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyKToKKyAg
ICAgICAgc2VsZi50eXBlX25hbWUgPSB0eXBlX25hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2hhc2hfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi50eXBlX25hbWUpCisKKyAgICBkZWYgX19yZXBy
X18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9fZXFf
XyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSA9PSBvdGhlci50
eXBlX25hbWUKKworICAgIGRlZiBpc192b2lkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVy
biBzZWxmLnR5cGVfbmFtZSBpbiBbInZvaWQiLCAiR0NHTHZvaWQiLCAiY29uc3Qgdm9pZCIsICJj
b25zdCBHQ0dMdm9pZCJdCisKKyAgICBkZWYgaXNfY29uc3Qoc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoImNvbnN0ICIpCisKKyAgICBkZWYg
aXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg
ZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYpIC0+IGJv
b2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBnZXRfdmFsdWVf
dHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVm
IGdldF9kZWNheV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIGlmIHNlbGYuaXNf
Y29uc3QoKToKKyAgICAgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWVb
NjpdKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9ydmFsdWVfdHlwZShzZWxm
KSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9u
YW1lICsgIiYmIikKKworICAgIGRlZiBnZXRfcG9pbnRlcl90eXBlKHNlbGYpIC0+ICdjcHBfdHlw
ZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiKiIpCisK
K2NsYXNzIGNwcF90eXBlX2NvbnRhaW5lcihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHR5cGVfbmFtZSA6IHN0ciwgY29udGFpbmVyX25hbWUgOiBzdHIsIGNvbnRhaW5lZF90eXBl
IDogY3BwX3R5cGUsIGFyaXR5IDogT3B0aW9uYWxbaW50XSA9IE5vbmUpOgorICAgICAgICBjcHBf
dHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY29udGFpbmVyX25h
bWUgPSBjb250YWluZXJfbmFtZQorICAgICAgICBzZWxmLmNvbnRhaW5lZF90eXBlID0gY29udGFp
bmVkX3R5cGUKKyAgICAgICAgc2VsZi5hcml0eSA9IGFyaXR5CisgICAgZGVmIGlzX2NvbnRhaW5l
cihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBpc19zcGFuKHNl
bGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dM
U3BhbiIKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJl
dHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMg
Tm9uZQorICAgIGRlZiBnZXRfY29udGFpbmVyX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLmNvbnRhaW5lcl9uYW1lCisgICAgZGVmIGdldF9hcml0eShzZWxmKSAtPiBPcHRpb25hbFtp
bnRdOgorICAgICAgICByZXR1cm4gc2VsZi5hcml0eQorICAgIGRlZiBnZXRfY29udGFpbmVkX3R5
cGUoc2VsZikgLT4gY3BwX3R5cGU6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBl
CisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZS5pc19jb25zdCgpCisKK2RlZiBjcmVhdGVfY3BwX3R5
cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFp
bmVyXToKKyAgICBtID0gcmUubWF0Y2gociIoW1x3Ol0rKTwoLispPiQiLCB0eXBlX25hbWUpCisg
ICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgY29udGFpbmVyX25hbWUgPSBt
WzFdCisgICAgdGVtcGxhdGVzID0gbVsyXQorICAgIGFyaXR5ID0gTm9uZQorICAgIG0gPSByZS5t
YXRjaChyIihbXixdKyksXHMqKFxkKykiLCB0ZW1wbGF0ZXMpCisgICAgaWYgbToKKyAgICAgICAg
dGVtcGxhdGVzID0gbVsxXQorICAgICAgICBhcml0eSA9IGludChtWzJdKQorICAgIHJldHVybiBj
cHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lLCBjb250YWluZXJfbmFtZSwgZ2V0X2NwcF90eXBl
KHRlbXBsYXRlcyksIGFyaXR5KQorCitjbGFzcyBjcHBfdHlwZV9mdW5jdGlvbihjcHBfdHlwZSk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgcmV0dXJuX3ZhbHVlX3R5
cGUgOiBjcHBfdHlwZSwgYXJndW1lbnRfdHlwZXMgOiBMaXN0W2NwcF90eXBlXSk6CisgICAgICAg
IGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5yZXR1cm5f
dmFsdWVfdHlwZSAgPSByZXR1cm5fdmFsdWVfdHlwZQorICAgICAgICBzZWxmLmFyZ3VtZW50X3R5
cGVzID0gYXJndW1lbnRfdHlwZXMKKworZGVmIGNwcF9zcGxpdF9hcmdzX3NwZWNzKGFyZ3Nfc3Bl
YyA6IHN0cikgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAgIyBodHRwczovL3N0YWNrb3ZlcmZsb3cu
Y29tL3F1ZXN0aW9ucy8zMzUyNzI0NS9weXRob24tc3BsaXQtYnktY29tbWEtc2tpcHBpbmctdGhl
LWNvbnRlbnQtaW5zaWRlLXBhcmVudGhlc2VzCisgICAgY29tbWEgPSByIiwoPyEoPzpbXjxdKlw8
W14+XSpcPikqW148Pl0qXD4pIgorICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW2Euc3RyaXAoKSBm
b3IgYSBpbiByZS5zcGxpdChjb21tYSwgYXJnc19zcGVjLnN0cmlwKCkpXSkKKyAgICAKK2RlZiBj
cmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBf
dHlwZV9mdW5jdGlvbl06CisgICAgbSA9IHJlLm1hdGNoKHInKC4qKVwoKC4qKVwpJywgdHlwZV9u
YW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybl92YWx1
ZV90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgYXJnc190eXBlcyA9IFtnZXRfY3BwX3R5
cGUoYSkgZm9yIGEgaW4gY3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsyXSldCisgICAgcmV0dXJuIGNw
cF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSwgcmV0dXJuX3ZhbHVlX3R5cGUsIGFyZ3NfdHlwZXMp
CisgICAgICAgIAorIyBQb2ludGVyIG9yIHJlZmVyZXJlbmNlCitjbGFzcyBjcHBfdHlwZV9pbmRp
cmVjdChjcHBfdHlwZSk6CisgICAgY2F0ZWdvcnkgOiBzdHIKKyAgICB2YWx1ZV90eXBlIDogY3Bw
X3R5cGUKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjYXRl
Z29yeSA6IHN0ciwgdmFsdWVfdHlwZSA6IGNwcF90eXBlKToKKyAgICAgICAgY3BwX3R5cGUuX19p
bml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNhdGVnb3J5ID0gY2F0ZWdvcnkK
KyAgICAgICAgc2VsZi52YWx1ZV90eXBlID0gdmFsdWVfdHlwZQorCisgICAgZGVmIGlzX2NvbnN0
X3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQg
c2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBp
c19jb25zdF9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09
ICcmJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBub3Qgc2VsZi5pc19jb25zdCgp
CisgICAgZGVmIGlzX3J2YWx1ZV9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LmNhdGVnb3J5ID09ICcmJicKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLnZhbHVlX3R5cGUKKworZGVmIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdCh0
eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2luZGlyZWN0XToKKyAgICBtID0g
cmUubWF0Y2gociJjb25zdCAoLispJiYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAg
ICAgICBtID0gcmUubWF0Y2gociIoLispJiYkIiwgdHlwZV9uYW1lKSAKKyAgICBpZiBtOgorICAg
ICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnJiYnLCBnZXRfY3BwX3R5
cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYkIiwgdHlwZV9uYW1lKQor
ICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiQiLCB0eXBlX25hbWUp
CisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwg
JyYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKVwq
JCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4r
KVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5k
aXJlY3QodHlwZV9uYW1lLCAnKicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICByZXR1cm4gTm9u
ZQorCisKK2NsYXNzIGNwcF9leHByKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBl
eHByOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgZXhwcjog
c3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLmV4cHIgPSBleHBy
CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwcgorCisK
K0NwcEV4cHJDb252ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4
cHJdCisKKworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNh
c3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5
cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRl
cihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICBy
ZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9PihyZWlu
dGVycHJldF9jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisg
ICAgcmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcgorCitkZWYgY3BwX3Jl
aW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3Bw
X3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAg
ZGVmIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6
IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYi
cmVpbnRlcnByZXRfY2FzdDx7dHlwZS50eXBlX25hbWV9PihzdGF0aWNfY2FzdDx7c3RyKGNhc3Rf
dGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnBy
ZXRfY2FzdF90b19wb2ludGVyCisKK2RlZiBjcHBfc3RhdGljX2Nhc3QoZXhwcjogY3BwX2V4cHIs
IHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwg
ZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9Pih7c3RyKGV4cHIpfSkiKQorCisKK2RlZiBj
cHBfaW1wbGljaXRfY2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9l
eHByOgorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBzdHIoZXhwcikpCisKKworZGVmIGNwcF9h
cnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNw
cF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUg
PSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVy
biBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8e2VsZW1lbnRf
cG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIp
CisKK2RlZiB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2Nv
bnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3Bw
X2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlw
ZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIo
dHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qge2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0
cihleHByKX0uZGF0YSksIHtzdHIoZXhwcil9LmJ1ZlNpemUpIikKKworZGVmIGNwcF9tb3ZlX2V4
cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcihleHBy
LnR5cGUuZ2V0X3J2YWx1ZV90eXBlKCksIGYiV1RGTW92ZSh7c3RyKGV4cHIpfSkiKQorCisKK2Nw
cF90eXBlczogRGljdFtzdHIsIGNwcF90eXBlXSA9IHt9CisKK2NwcF90eXBlX2NvbnN0cnVjdG9y
cyA6IExpc3RbQ2FsbGFibGVbW3N0cl0sIE9wdGlvbmFsW2NwcF90eXBlXV1dID0gWworICAgIGNy
ZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbiwKKyAgICBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyLAor
ICAgIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdAorXQorCitkZWYgZ2V0X2NwcF90eXBlKHR5cGVf
bmFtZTogc3RyKToKKyAgICByID0gY3BwX3R5cGVzLmdldCh0eXBlX25hbWUsIE5vbmUpCisgICAg
aWYgcjoKKyAgICAgICAgcmV0dXJuIHIKKyAgICBmb3IgdHlwZV9jb25zdHIgaW4gY3BwX3R5cGVf
Y29uc3RydWN0b3JzOgorICAgICAgICByID0gdHlwZV9jb25zdHIodHlwZV9uYW1lKQorICAgICAg
ICBpZiByOgorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBub3QgcjoKKyAgICAgICAgciA9IGNw
cF90eXBlKHR5cGVfbmFtZSkKKyAgICBjcHBfdHlwZXNbdHlwZV9uYW1lXSA9IHIKKyAgICByZXR1
cm4gcgorCisKK2NsYXNzIGNwcF9hcmcob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICB0eXBl
OiBjcHBfdHlwZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1l
OiBzdHIpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYudHlwZSA9IHR5
cGUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9IHt9Ii5mb3Jt
YXQoc2VsZi50eXBlLCBzZWxmLm5hbWUpCisKKworY2xhc3MgY3BwX2RlY2wob2JqZWN0KToKKyAg
ICB0eXBlOiBjcHBfdHlwZQorICAgIG5hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisg
ICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gZiJ7c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5hbWV9IgorCisKK2NsYXNzIGNwcF9h
cmdfbGlzdChvYmplY3QpOgorICAgIGFyZ3M6IExpc3RbY3BwX2FyZ10KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJn
cworCisgICAgZGVmIG5hbWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKGEubmFt
ZSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhwcnMoc2VsZik6CisgICAgICAgIHJl
dHVybiBbY3BwX2V4cHIoYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAg
IGRlZiBkZWNscyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZGVjbChhLnR5cGUsIGEubmFt
ZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIHR5cGVzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gW2EudHlwZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihzdHIoYSkgZm9yIGEgaW4gc2VsZi5hcmdzKQor
CisKK2NsYXNzIGNwcF9mdW5jKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3Bw
X2FyZ19saXN0CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgaXNfZXh0ZW5zaW9uOiBi
b29sCisgICAgb3ZlcmxvYWRfc3VmZml4OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBu
YW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19l
eHRlbnNpb246IGJvb2wpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYu
cmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAg
ICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYub3Zlcmxv
YWRfc3VmZml4ID0gIiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
ZiJ7c2VsZi5yZXR1cm5fdHlwZX0ge3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSkiCisKKyAg
ICBkZWYgZ2V0X2FyZ3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBUdXBsZVtMaXN0W2NwcF9hcmddLCBM
aXN0W2NwcF9hcmddXToKKyAgICAgICAgaW5fYXJncyA9IFtdCisgICAgICAgIG91dF9hcmdzID0g
W10KKyAgICAgICAgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6CisgICAgICAgICAgICAjZm10OiBv
ZmYKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCkgb3IgXAorICAgICAgICAgICAg
ICAgIGEudHlwZS5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBb
YV0KKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5l
cikgYW5kICgoKGEudHlwZS5pc19zcGFuKCkgb3IgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpKSBh
bmQgbm90IGEudHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpKSk6CisgICAgICAg
ICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIGluX2FyZ3MgKz0gW2FdCisgICAgICAgICAgICAjZm10OiBvbgorICAgICAgICByZXR1cm4g
aW5fYXJncywgb3V0X2FyZ3MKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZF90eXBlKHNlbGYsIHR5
cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgdHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19p
bXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyIgaW4gYS50eXBlLnR5cGVfbmFtZSBmb3IgYSBp
biBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICNp
ZiAiR0NHTHN5bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1lOgorICAgICAgICAjICAg
IHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkoYS5uYW1lID09ICJidWZTaXplIiBmb3IgYSBp
biBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYg
YW55KGEudHlwZS5pc19wb2ludGVyKCkgYW5kIGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLmlzX3Zv
aWQoKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgaWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoYS50eXBlKSBmb3Ig
YSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg
aWYgc2VsZi5yZXR1cm5fdHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLnJldHVybl90
eXBlKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisK
K3dlYmtpdF9pcGNfdHlwZXM6IERpY3RbY3BwX3R5cGUsIGNwcF90eXBlXSA9IHt9CisKK3dlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyczogRGljdFtUdXBsZVtjcHBfdHlwZSwgY3BwX3R5cGVdLCBD
cHBFeHByQ29udmVydGVyXSA9IHt9CisKKworZGVmIHdlYmtpdF9pcGNfY29udmVydF9leHByKGV4
cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgIiIiIENvbnZl
cnRzIGBleHByYCBvZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlwZWAgIiIiCisgICAgY29udmVydCA9
IHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5nZXQoKGV4cHIudHlwZSwgdHlwZSksIE5vbmUp
CisgICAgaWYgbm90IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4cHIudHlwZSA9PSB0eXBlOgorICAg
ICAgICAgICAgcmV0dXJuIGV4cHIKKyAgICAgICAgY29udmVydCA9IGNwcF9pbXBsaWNpdF9jYXN0
CisgICAgcmV0dXJuIGNvbnZlcnQoZXhwciwgdHlwZSkKKworCitkZWYgd2Via2l0X2lwY19nZXRf
c3Bhbl90cmFuc2Zlcl90eXBlKHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBl
OgorICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5
X3R5cGUoKQorICAgIGFyaXR5ID0gdHlwZS5nZXRfYXJpdHkoKQorICAgIHdlYmtpdF9pcGNfZWxl
bWVudF90eXBlID0gd2Via2l0X2lwY190eXBlc1tlbGVtZW50X3R5cGVdIGlmIG5vdCBlbGVtZW50
X3R5cGUuaXNfdm9pZCgpIGVsc2UgZ2V0X2NwcF90eXBlKCd1aW50OF90JykKKyAgICBpZiBhcml0
eSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlS
ZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9LCB7YXJpdHl9PiIpCisgICAg
cmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBj
X2VsZW1lbnRfdHlwZSl9PiIpCisKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90
eXBlKHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90
eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgaWYg
ZWxlbWVudF90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgZWxlbWVudF90eXBlID0gZ2V0X2NwcF90
eXBlKCdHQ0dMY2hhcicpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAg
aW5saW5lX2NhcGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiBlbGVtZW50X3R5cGUudHlwZV9uYW1l
IGVsc2UgNAorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiVmVjdG9yPHtzdHIoZWxlbWVu
dF90eXBlKX0sIHtzdHIoaW5saW5lX2NhcGFjaXR5KX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90
eXBlKGYic3RkOjphcnJheTx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKHR5cGUuZ2V0X2FyaXR5
KCkpfT4iKQorCitkZWYgd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24oZXhwciA6
IGNwcF9leHByLCB0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBw
b2ludGVyX2Nhc3RfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJf
dHlwZSgpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgcmV0dXJuIGNw
cF9leHByKHR5cGUsIGYibWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVy
X2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXplKCkpIikK
KworICAgIGFzc2VydCh0eXBlLmlzX3NwYW4oKSkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwg
ZiJtYWtlR0NHTFNwYW48e3N0cih0eXBlLmdldF9hcml0eSgpKX0+KHJlaW50ZXJwcmV0X2Nhc3Q8
e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpKSIpCisKKyMgU2Vl
IG1lc3NhZ2VzLnB5IGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlCit3ZWJraXRfaXBjX2J1aWx0aW5f
dHlwZXMgPSBzZXQoCisgICAgWyJ1aW50OF90IiwgInVpbnQxNl90IiwgInVpbnQzMl90IiwgInVp
bnQ2NF90IiwgImludDhfdCIsICJpbnQxNl90IiwgImludDMyX3QiLCAiaW50NjRfdCIsICJib29s
IiwgImZsb2F0IiwgImRvdWJsZSIgImJvb2wiXQorKQorCisKK2RlZiB3ZWJraXRfaXBjX2dldF9t
ZXNzYWdlX2ZvcndhcmRlcl90eXBlKHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfdHlwZToKKyAgICBp
ZiB0eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJl
dHVybiB0eXBlCisgICAgcmV0dXJuIHR5cGUuZ2V0X3J2YWx1ZV90eXBlKCkKKworCitkZWYgd2Vi
a2l0X2lwY19tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIGlmIGV4
cHIudHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICBy
ZXR1cm4gZXhwcgorICAgIHJldHVybiBjcHBfbW92ZV9leHByKGV4cHIpCisKKworZGVmIHdlYmtp
dF9pcGNfbXNnX25hbWUoZnVuYzogY3BwX2Z1bmMpOgorICAgIHJldHVybiBmdW5jLm5hbWVbMF0u
Y2FwaXRhbGl6ZSgpICsgZnVuYy5uYW1lWzE6XSArIGZ1bmMub3ZlcmxvYWRfc3VmZml4CisKKwor
Y2xhc3Mgd2Via2l0X2lwY19tc2cob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBpbl9hcmdz
OiBjcHBfYXJnX2xpc3QKKyAgICBvdXRfYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSB3ZWJraXRf
aXBjX21zZ19uYW1lKGZ1bmMpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gZnVuYy5nZXRf
YXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgaXBjX2luX2FyZ3MgPSBbY3BwX2FyZyh3ZWJraXRf
aXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSkgZm9yIGEgaW4gaW5fYXJnc10KKyAgICAgICAgaXBj
X291dF9hcmdzID0gW10KKyAgICAgICAgaWYgbm90IGZ1bmMucmV0dXJuX3R5cGUuaXNfdm9pZCgp
OgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNb
ZnVuYy5yZXR1cm5fdHlwZV0sICJyZXR1cm5WYWx1ZSIpXQorICAgICAgICBmb3IgYSBpbiBvdXRf
YXJnczoKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5
cGVzW2EudHlwZV0sIGEubmFtZSldCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfZHluYW1pY19z
cGFuKCk6CisgICAgICAgICAgICAgICAgaXBjX2luX2FyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90
eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpXQorICAgICAgICBzZWxmLmluX2FyZ3Mg
PSBjcHBfYXJnX2xpc3QoaXBjX2luX2FyZ3MpCisgICAgICAgIHNlbGYub3V0X2FyZ3MgPSBjcHBf
YXJnX2xpc3QoaXBjX291dF9hcmdzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAg
IGlmIGxlbihzZWxmLm91dF9hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGYiXG4gICAg
dm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSAtPiAoe3N0cihzZWxmLm91dF9h
cmdzKX0pIFN5bmNocm9ub3VzIgorICAgICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5h
bWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5
X2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBtc2dfbmFtZTogc3RyCisgICAgcmV0
dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBwcmVfY2Fs
bF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9j
YWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICByZXR1cm5fc3RtdHM6IExpc3Rbc3RyXQorICAgIGlu
X2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBfZXhwcl0KKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxm
Lm5hbWUgPSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYubXNnX25hbWUgPSB3ZWJraXRfaXBj
X21zZ19uYW1lKGNwcF9mdW5jKQorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMu
cmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAg
ICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl9zdG10
cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBy
cyA9IFtdCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0
ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0
dXJuX3R5cGUpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmdzKGluX2FyZ3MpCisgICAgICAg
IHNlbGYucHJvY2Vzc19vdXRfYXJncyhvdXRfYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2Nh
bGwoKQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgaW5fZXhwcnMgPSAi
LCAiLmpvaW4oW3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkKKyAgICAgICAgb3V0X2V4
cHJzID0gIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAg
aXNfYXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykg
PT0gMAorICAgICAgICBpZiBpc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyAr
PSBbCisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
bmRfcmVzdWx0ID0gIiIKKyAgICAgICAgICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0bXRzOiAKKyAg
ICAgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRSZXN1bHQgPSAiCisgICAgICAg
ICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbCisgICAgICAgICAgICAgICAgICAgICJp
ZiAoc2VuZFJlc3VsdCkiICsgKCIgeyIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEg
ZWxzZSAiIikKKyAgICAgICAgICAgICAgICBdICsgWyIgICAgIiArIHMgZm9yIHMgaW4gc2VsZi5w
b3N0X2NhbGxfc3RtdHNdICsgWworICAgICAgICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxm
LnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3Vs
dH1zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19u
YW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2Vs
Zi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOyIsCisgICAgICAgICAgICBdCisKKworICAgIGRlZiBwcm9jZXNzX2luX2Fy
Z3Moc2VsZiwgaW5fYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBpIGluIGluX2Fy
Z3M6CisgICAgICAgICAgICBpZiBpLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAg
ICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBz
ZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihpLnR5cGUs
IGkubmFtZSksIHdlYmtpdF9pcGNfdHlwZXNbaS50eXBlXSldCisKKyAgICBkZWYgcHJvY2Vzc19v
dXRfYXJncyhzZWxmLCBvdXRfYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBvIGlu
IG91dF9hcmdzOgorICAgICAgICAgICAgaWYgby50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAg
ICAgICAgICB2YWx1ZV90eXBlID0gby50eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAg
ICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3ZhbHVlX3R5cGVd
CisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY192YWx1ZV90eXBlLCBvLm5h
bWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yi
e3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgICAgICBl
ID0gY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhw
cnMgKz0gW2VdCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAg
ICAgICAgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgICAgICAgICAgZiJpZiAoe28u
bmFtZX0pIiwKKyAgICAgICAgICAgICAgICAgICAgZiIgICAgKntvLm5hbWV9ID0ge3dlYmtpdF9p
cGNfY29udmVydF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCisgICAgICAgICAgICAgICAgICAgICNm
bXQ6IG9uCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxpZiBvLnR5cGUuaXNfc3Bh
bigpOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNb
by50eXBlXQorICAgICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlw
ZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJr
aXRfaXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVf
Y2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAg
ICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpXQorICAg
ICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJzaXplX3QiKSwg
ZiJ7by5uYW1lfS5idWZTaXplIildCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3Rt
dHMgKz0gWworICAgICAgICAgICAgICAgICAgICBmIm1lbWNweSh7by5uYW1lfS5kYXRhLCB7di5u
YW1lfS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXplb2Yoe3N0cih3ZWJraXRfaXBjX3R5
cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkpfSkpOyIKKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcihv
LnR5cGUsIG8ubmFtZSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0
dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgor
ICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlw
ZQorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBl
XQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKGlwY19yZXR1cm5fdHlwZSwg
InJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJu
X3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAg
ICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbcmV0dXJuX3ZhbHVlX2V4cHJdICsgc2VsZi5vdXRfZXhw
cnMKKyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbZiJyZXR1cm4ge3N0cih3ZWJraXRfaXBj
X2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgcmV0dXJuX3R5cGUpKX07Il0KKworICAg
IGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8i
IGluIHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAge2J9
IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5w
b3N0X2NhbGxfc3RtdHMgKyBzZWxmLnJldHVybl9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiJc
bntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ontz
ZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH0KK3t7e2JvZHl9Cit9fSIiIgorCisK
K2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKG9iamVjdCk6CisgICAgbmFt
ZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0
CisgICAgYm9keTogTGlzdFtzdHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6
IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorCisgICAgICAg
IHNlbGYucmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFy
Z3MgPSBjcHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYuYm9keSA9IFsibm90SW1wbGVtZW50ZWQo
KTsiXQorICAgICAgICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlwZS50eXBlX25hbWUgIT0gInZvaWQi
OgorICAgICAgICAgICAgc2VsZi5ib2R5ICs9IFsicmV0dXJuIHsgfTsiXQorCisgICAgZGVmIF9f
c3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2Vs
Zi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICJcbntcbiAgICAiICsgIlxuICAgICIuam9p
bihzZWxmLmJvZHkpICsgIlxufSIKKyAgICAgICAgcmV0dXJuIGYiXG57c3RyKHNlbGYucmV0dXJu
X3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNl
bGYuYXJncyl9KXtub2xpbnR9e2JvZHl9IgorCisKK2NsYXNzIGNvbnRleHRfcHJveHlfY3BwX3dl
YmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Vi
a2l0X2lwY19jcHBfcHJveHlfaW1wbF0KKyAgICB1bmltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3Bw
X3Byb3h5X3BsYWNlaG9sZGVyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVy
YWJsZVtjcHBfZnVuY10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAg
ICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChmKSBmb3IgZiBpbiBm
dW5jc10KKyAgICAgICAgc2VsZi51bmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNl
aG9sZGVyKGYpIGZvciBmIGluIHVuaW1wbGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9u
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5p
bXBscyArIHNlbGYudW5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAg
d3JpdGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuLAorICAg
ICAgICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0
X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwo
b2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBpc19l
eHRlbnNpb246IGJvb2wKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9z
dG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9l
eHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAg
cmV0dXJuX3ZhbHVlX2V4cHI6IE9wdGlvbmFsW2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5j
Lm5hbWUKKyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSBjcHBfZnVuYy5vdmVybG9hZF9z
dWZmaXgKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtdKQorICAgICAgICBzZWxm
LmlzX2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLnByZV9j
YWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2Vs
Zi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAg
ICAgc2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0g
Tm9uZQorCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJu
X3R5cGUpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0
ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3MuYXJncywg
c2V0KGluX2FyZ3MpLCBzZXQob3V0X2FyZ3MpKQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgp
CisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5z
aW9ucygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgorCisgICAgICAgIGluX2V4cHJz
ID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQorICAgICAgICBpc19h
c3luYyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAorCisgICAgICAgIGNhbGxfZXhwciA9IGYi
bV9jb250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBpZiBub3Qg
c2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBb
ZiJ7Y2FsbF9leHByfTsiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0
bXRzICs9IFtmIntzdHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxfZXhwcn07Il0K
KyAgICAgICAgaWYgbm90IGlzX2FzeW5jOgorICAgICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5q
b2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYucG9z
dF9jYWxsX3N0bXRzICs9IFtmImNvbXBsZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9KTsiXQorCisg
ICAgZGVmIHByb2Nlc3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddLCBpbl9hcmdzOiBT
ZXRbY3BwX2FyZ10sIG91dF9hcmdzOiBTZXRbY3BwX2FyZ10pOgorICAgICAgICBmb3IgYSBpbiBh
cmdzOgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAg
ICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGlmIGEgaW4gaW5fYXJnczoKKyAgICAg
ICAgICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJnKGEpCisgICAgICAgIGlmIHNlbGYub3V0
X2V4cHJzOgorICAgICAgICAgICAgb3V0X2FyZ19kZWNscyA9ICIsICIuam9pbihmIntzdHIoZS50
eXBlKX0iIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFy
Z3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh7b3V0
X2FyZ19kZWNsc30pPiYmIiksICJjb21wbGV0aW9uSGFuZGxlciIpXQorCisgICAgZGVmIHByb2Nl
c3NfaW5fYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBb
Y3BwX2FyZyh3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdlYmtpdF9pcGNf
dHlwZXNbYS50eXBlXSksIGEubmFtZSldCisgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtp
dF9pcGNfY29udmVydF9leHByKGNwcF9leHByKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5u
YW1lKSwgYS50eXBlKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmcoc2VsZiwgYTogY3BwX2Fy
Zyk6CisgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICB2YWx1ZV9h
cmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAg
ICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZh
bHVlX2FyZy5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBb
Y3BwX2V4cHIoYS50eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9IildCisgICAgICAgICAgICBlID0g
Y3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgd2Vi
a2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1tlLnR5cGVdCisgICAgICAgICAg
ICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lw
Y192YWx1ZV90eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6Cisg
ICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikp
CisgICAgICAgICAgICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIp
LCBmInthLm5hbWV9U2l6ZSIpCisgICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbc2l6ZV9h
cmddCisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5f
c3RvcmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0
bXRzICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0oc3Rh
dGljX2Nhc3Q8c2l6ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsiXQorICAgICAgICAgICAgc2VsZi5p
bl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIGYie3N0b3JlX2FyZy5uYW1lfSIp
XQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVd
CisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIo
Y3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBl
KV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlz
aW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgc3RvcmVf
YXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5u
YW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2Fy
Zy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxm
LmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpXQor
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisg
ICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3Bw
X2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0K
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBhLnR5cGUuaXNfcmVmZXJlbmNlKCkK
KyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQor
ICAgICAgICAgICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwg
YS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c2VsZi5ucyh2
YWx1ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAg
ICAgZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAg
ICAgIHNlbGYuaW5fZXhwcnMgKz0gW2VdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBb
d2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lw
Y190eXBlKSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5
cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNb
cmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIocmV0dXJu
X3R5cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yi
e3JldHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19
OyJdCisgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJr
aXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgaXBjX3JldHVybl90eXBlKSld
CisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSByZXR1cm5fdmFsdWVfZXhwcgorCisg
ICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAgICAg
IHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNl
bGYucG9zdF9jYWxsX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIiAgICB2b2lkIHtzZWxmLm5h
bWV9e3NlbGYub3ZlcmxvYWRfc3VmZml4fSh7c3RyKHNlbGYuYXJncyl9KQorICAgIHt7e2JvZHl9
CisgICAgfX0iIiIKKworICAgIGRlZiBucyhzZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAg
ICMgVE9ETzogbmFtZXNwYWNlIGluZm8gaXMgbm90IHN0b3JlZCBpbiBuYW1lcy4KKyAgICAgICAg
aWYgdHlwZS50eXBlX25hbWUgPT0gIkFjdGl2ZUluZm8iOgorICAgICAgICAgICAgcmV0dXJuICJX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6IiArIHN0cih0eXBlKQorICAgICAgICByZXR1cm4g
c3RyKHR5cGUpCisKK2RlZiB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNz
IDogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICBjb3VudHMgPSBjb2xsZWN0aW9ucy5Db3VudGVy
KGYubmFtZSBmb3IgZiBpbiBmdW5jcykKKyAgICBzdWZmaXhlcyA6IENvdW50ZXJbc3RyXSA9IGNv
bGxlY3Rpb25zLkNvdW50ZXIoKQorICAgIGZvciBmIGluIGZ1bmNzOgorICAgICAgICBpZiBjb3Vu
dHNbZi5uYW1lXSA+IDE6CisgICAgICAgICAgICBmLm92ZXJsb2FkX3N1ZmZpeCA9IHN0cihzdWZm
aXhlc1tmLm5hbWVdKQorICAgICAgICAgICAgc3VmZml4ZXMudXBkYXRlKFtmLm5hbWVdKQorCisK
K2NsYXNzIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAg
IGltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX2ltcGxdCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Vi
a2l0X2lwY19jcHBfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRlZiBnZXRfZnVuY3Rp
b25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBzZWxm
LmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAor
ICAgICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X2Z1
bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICAp
CisKKworY2xhc3MgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAg
ICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgV2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24g
Z2VuZXJhdG9yLiIKKyAgICBtc2dzOiBMaXN0W3dlYmtpdF9pcGNfbXNnXQorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLm1z
Z3MgPSBbd2Via2l0X2lwY19tc2coZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X21l
c3NhZ2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIuam9pbihzdHIobSkgZm9yIG0gaW4gc2Vs
Zi5tc2dzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKGNv
bnRleHRfbWVzc2FnZXNfZm4sIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUuZm9ybWF0KHNlbGYu
Z2V0X21lc3NhZ2VzKCkpKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYzogc3RyLCBh
cmdfaW5kZXg6IGludCk6CisgICAgciA9IGFyZ19zcGVjLnJzcGxpdCgiICIsIDEpCisgICAgbmFt
ZSA9ICIiCisgICAgdHlwZSA9IE5vbmUKKyAgICBpZiBsZW4ocikgPiAxIGFuZCByWzBdICE9ICJj
b25zdCI6CisgICAgICAgIG5hbWUgPSByWzFdLnN0cmlwKCkKKyAgICAgICAgdHlwZSA9IGdldF9j
cHBfdHlwZShyWzBdKQorICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSAiYXJne30iLmZvcm1hdChh
cmdfaW5kZXgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoYXJnX3NwZWMpCisgICAgcmV0
dXJuIGNwcF9hcmcodHlwZSwgbmFtZSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmdfbGlzdChhcmdz
X3NwZWNzOiBJdGVyYWJsZVtzdHJdKToKKyAgICByZXR1cm4gY3BwX2FyZ19saXN0KFtjcmVhdGVf
Y3BwX2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFy
Z3Nfc3BlY3MpXSkKKworCitkZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3Nw
ZWM6IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJdLCBpc19leHRlbnNpb246IGJvb2wpOgorICAg
IHJldHVybiBjcHBfZnVuYyhuYW1lPW5hbWUsIHJldHVybl90eXBlPWdldF9jcHBfdHlwZShyZXR1
cm5fc3BlYyksIGFyZ3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzKSwgaXNfZXh0ZW5z
aW9uPWlzX2V4dGVuc2lvbikKKworCitkZWYgcmVhZF9saW5lc191bnRpbChsaW5lcyA6IEl0ZXJh
YmxlW3N0cl0sIG1hdGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jbc3RyLCBOb25lLCBOb25lXToKKyAg
ICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgaWYgcmUubWF0Y2gobWF0Y2gsIGxpbmUuc3Ry
aXAoKSk6CisgICAgICAgICAgICBicmVhaworICAgICAgICB5aWVsZCBsaW5lCisKK2RlZiBtYWlu
KCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoInVzYWdlOiAlcHJvZyBb
b3B0aW9uc10iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGhlbHA9IlByaW50IHNvbWUgZGVidWcgaW5mbyBmcm9tIHRoZSBnZW5lcmF0
b3Igc2NyaXB0IikKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgIyBD
b25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNz
IHRvIEdQVSBwcm9jZXNzLgorCisgICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIg
aXMgcmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgorICAg
ICMgd2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5v
dCBhbiBleHRlbnNpb24gZnVuY3Rpb24uCisgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRb
c3RyXSA9IHNldCgpCisgICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6Cisg
ICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBtID0gcmUubWF0
Y2gociIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQorICAgICAg
ICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAg
ICAgICAgICAgICAgICAgICBuYW1lPW1bMl0sCisgICAgICAgICAgICAgICAgICAgIHJldHVybl9z
cGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nf
c3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRh
dGUoW3N0cihmdW5jKV0pCisgICAgZnVuY3MgPSBbXQorICAgIHVuaW1wbGVtZW50ZWQgPSBbXQor
ICAgIGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgorICAgICAgICB3aXRoIG9wZW4oZm4p
IGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAg
ICAgIGZvciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBGdW5jdGlvbnMgd2l0aCBh
IGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUt
Z3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAg
ICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNl
ZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBtID0g
cmUubWF0Y2gociJccyooXFMrKVxzKyhcdyspXCgoLiopXCkgZmluYWw7IiwgbGluZSkKKyAgICAg
ICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWUgPSBtWzJdCisg
ICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxp
dF9hcmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9u
PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGZ1bmMu
aXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCisgICAgICAg
ICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pbXBsZW1lbnRlZC5hcHBlbmQoZnVuYykKKworCisgICAg
d2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcykKKyAgICAjIEluaXRpYWxp
emUgV2ViS2l0IElQQyBnZW5lcmF0aW9uLiBDb25zdHJ1Y3QgdHlwZSBtYXBwaW5ncyBmb3IgdGhl
IHVzZWQgQysrIHR5cGVzIC0+IElQQyB0eXBlcy4KKyAgICAjIFRPRE86IG5hbWVzcGFjaW5nIGlz
c3Vlcy4KKyAgICBhaV90eXBlID0gZ2V0X2NwcF90eXBlKCJBY3RpdmVJbmZvJiIpCisgICAgYWlf
dHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZSgiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8iKQorICAgIHdlYmtpdF9pcGNfdHlwZXNbYWlfdHlwZV0gPSBhaV90cmFuc2Zl
cl90eXBlCisKKyAgICB3aXRoIG9wZW4odHlwZXNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGxp
bmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3Vu
dGlsKGxpbmVzLCAiLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBD
IHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIp
OgorICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGls
KGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlw
dC4iKToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc3RkOjpp
c19zYW1lX3Y8KFx3KyksIChcdyspPlwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2NwcF90eXBlKG1bMV0pXSA9IGdldF9j
cHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0g
cmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChc
dyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBf
dHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0
X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlw
ZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVy
c1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3Bw
X3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgRklY
TUU6IEhlcmUgd2UgdXNlIDw9IGluc3RlYWQgb2YgPT0gZHVlIHRvIHBvaW50ZXJzLCBzdWNoIGFz
IEdDR0xzeW5jLCBHQ0dMaW50cHRyLCAuLi4uCisgICAgICAgICAgICAjIFRoaXMgZW5kcyB1cCBm
YWlsaW5nIGlmIHRoZXJlIGV2ZXIgaXMgYXJyYXlzIG9mIHRoZXNlIHR5cGVzLCBzaW5jZSBhcnJh
eXMgYXJlIGN1cnJlbnRseQorICAgICAgICAgICAgIyByZWludGVycHJldC1jYXN0ZWQuCisgICAg
ICAgICAgICAjIFdlYktpdCBJUEMgcmVxdWlyZXMgb25lIHNpemVkIHR5cGUsIGJ1dCB0aGUgc2l6
ZSBvZiB0aGVzZSBwb2ludGVyLWJhc2VkIHZhbHVlcyB3aWxsIGNoYW5nZQorICAgICAgICAgICAg
IyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0
YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5l
KQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBf
dHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0p
CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQor
ICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlw
Y190eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0Cisg
ICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3Rh
dGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVvZlwoKFx3KylcKSAmJiBzaXplb2Zc
KChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06
CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAg
ICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNw
cF9jYXN0X3Rocm91Z2hfdHlwZSA9IGdldF9jcHBfdHlwZShtWzRdKQorICAgICAgICAgICAgICAg
IHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3
ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3Jl
aW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBl
KQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUs
IGNwcF90eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY3Bw
X2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAjIEZv
ciBhbGwgdHlwZXMgaW4gdGhlIGlucHV0IEFQSSwgZm9ybSBjb3JyZXNwb25kaW5nIElQQyB0eXBl
cyBhbmQgY29udmVyc2lvbnMuCisgICAgIyBUT0RPOiB0aGlzIGlzIG5vdCBkcml2ZW4gYnkgdGhl
IHR5cGluZy4KKyAgICBhbGxfdHlwZXMgPSBzZXQoKQorICAgIGZvciBmdW5jIGluIGZ1bmNzOgor
ICAgICAgIGFsbF90eXBlcy51cGRhdGUoZnVuYy5hcmdzLnR5cGVzKCkgKyBbZnVuYy5yZXR1cm5f
dHlwZV0pCisgICAgIyBTb3J0IGJ5IGxlbiBzbyB0aGF0IHRlbXBsYXRlIGFyZ3MgY29tZSBiZWZv
cmUgdGVtcGxhdGVzLgorICAgIGZvciBjcHBfdHlwZSBpbiBzb3J0ZWQoYWxsX3R5cGVzLCBrZXk9
bGFtYmRhIHg6IGxlbih4LnR5cGVfbmFtZSkpOgorICAgICAgICBpZiBjcHBfdHlwZSBpbiB3ZWJr
aXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgIAorICAgICAgICBpZiBj
cHBfdHlwZS5pc19keW5hbWljX3NwYW4oKSBvciBjcHBfdHlwZS5pc19zcGFuKCk6CisgICAgICAg
ICAgICB0cmFuc2Zlcl90eXBlID0gd2Via2l0X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKGNw
cF90eXBlKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFuc2Zl
cl90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgIGlmIGNwcF90eXBlLmdldF9jb250
YWluZWRfdHlwZSgpLmlzX2NvbnN0KCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gd2Via2l0X2lwY19zcGFu
X3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgICAgICAg
ICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyh0cmFuc2Zlcl90eXBlLCBjcHBfdHlwZSld
ID0gd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24KKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgc3RvcmVfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVf
dHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRl
cnNbKHN0b3JlX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9j
YXN0X2NvbnZlcnNpb24KKyAgICAgICAgZWxpZiBjcHBfdHlwZS5pc19yZWZlcmVuY2UoKSBvciBj
cHBfdHlwZS5pc19jb25zdF9yZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5pc19jb250YWluZXIoKToK
KyAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpIGlmIG5v
dCBjcHBfdHlwZS5pc19jb250YWluZXIoKSBlbHNlIGNwcF90eXBlCisgICAgICAgICAgICBpZiB2
YWx1ZV90eXBlLmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAgICAgIGNvbnRhaW5lZF90eXBl
ID0gdmFsdWVfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKQorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfY29udGFpbmVkX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2NvbnRhaW5lZF90eXBlXQor
ICAgICAgICAgICAgICAgIGlmIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUgPT0gY29udGFpbmVk
X3R5cGU6CisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0g
dmFsdWVfdHlwZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRy
YW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoZiJ7dmFsdWVfdHlwZS5nZXRfY29udGFpbmVyX25h
bWUoKX08e3N0cih3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlKX0+IikKKyAgICAgICAgICAgICAg
ICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBlCisgICAgICAg
ICAgICAgICAgICAgICMgVE9ETzogSGVyZSBtaWdodCBiZSBjYXNlIHdoZXJlIFZlY3RvcjxHQ0dM
aW50PiB3YXMgdXNlZCBpbiB0aGUgaW50ZXJmYWNlIGFuZCBWZWN0b3I8aW50MzJfdD4gaXMgdXNl
ZAorICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBJUEMgZGVmaW5pdGlvbi4gVGhlcmUgaXMg
bm8gc2Vuc2libGUgd2F5IHRvIGRvIHRoaXMgYXQgdGhlIG1vbWVudC4gV2UgZG8gbm90IGNvbnZl
cnQsIHJhdGhlcgorICAgICAgICAgICAgICAgICAgICAjIGV4cGVjdCB0aGF0IGFsbCB0aGUgaW52
b2NhdGlvbnMgYXJlIHRha2VuIGNhcmUgb2YgdGhlIGZhY3QgdGhhdCBHQ0dMaW50IGlzIHRoZSBz
YW1lIHR5cGUgYXMgaW50MzJfdC4KKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgbm90
IGhvbGQgZm9yIGFsbCB0eXBlcyBzdWNoIGFzIEdDR0xib29sZWFuLgorICAgICAgICAgICAgICAg
ICAgICAjd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlw
ZSldID0gY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHZhbHVl
X3R5cGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5
cGVdID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgIAorICAgICMgVGhlIGlucHV0IHRv
IHRoZSBnZW5lcmF0b3JzIGlzIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZS4KKyAgICAjIFJ1
biB0aGUgdmFyaW91cyBnZW5lcmF0b3JzLgorICAgIGdlbmVyYXRvcnMgPSBbCisgICAgICAgIGNv
bnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzLCB1bmltcGxlbWVudGVk
KSwKKyAgICAgICAgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAg
ICAgICBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcyksCisgICAgXQorICAg
IGZvciBnIGluIGdlbmVyYXRvcnM6CisgICAgICAgIGcuZ2VuZXJhdGUoKQorCisgICAgaWYgb3B0
aW9ucy52ZXJib3NlOgorICAgICAgICBwcmludCgiSW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJp
bnQoIiIuam9pbihmIiAgICB7c3RyKGkpfSBmaW5hbFxuIiBmb3IgaSBpbiBmdW5jcykpCisgICAg
ICAgIHByaW50KCJVbmltcGxlbWVudGVkOiIpCisgICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAg
e3N0cih1KX0gZmluYWxcbiIgZm9yIHUgaW4gdW5pbXBsZW1lbnRlZCkpCisgICAgICAgIHByaW50
KGYiSW1wbGVtZW50ZWQ6IHtsZW4oZnVuY3MpfSwgdW5pbXBsZW1lbnRlZDoge2xlbih1bmltcGxl
bWVudGVkKX0sIHRvdGFsOiB7bGVuKGZ1bmNzKStsZW4odW5pbXBsZW1lbnRlZCl9IikKKyAgICAg
ICAgcHJpbnQoIkMrKyB0eXBlIG1hcCB0byBXZWJLaXQgSVBDIHR5cGUgbWFwOiIpCisgICAgICAg
IGZvciBfLCB0IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdCBpbiB3ZWJr
aXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IC0+IHtz
dHIod2Via2l0X2lwY190eXBlc1t0XSl9IikKKyAgICAgICAgcHJpbnQoIkMrKyB0eXBlcyB3aXRo
b3V0IFdlYktpdCBJUEMgdHlwZToiKQorICAgICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRl
bXMoKToKKyAgICAgICAgICAgIGlmIHQgbm90IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAg
ICAgICAgICAgcHJpbnQoZiIgICAge3N0cih0KX0iKQorICAgICAgICBwcmludCgiV2ViS2l0IElQ
QyB0eXBlIGNvbnZlcnNpb25zIikKKyAgICAgICAgZm9yIChhLCBiKSwgY29udmVydGVyIGluIHdl
YmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5pdGVtcygpOgorICAgICAgICAgICAgcHJpbnQoZiIg
ICAge3N0cihhKX0gLT4ge3N0cihiKX0gOiB7Y29udmVydGVyLl9fbmFtZV9ffSIpCisgICAgICAg
IHByaW50KCJEb25lLiIpCisgICAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWlu
X18iOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZDcxNDJlY2Y4NGU4ZDZmMjk5ZTVh
Y2JhZDI4ODRmMGE2ODcyOTkxLi42MGVhODZhZmU4NzdhZjJmOTNiMTdhNzYyYTFjMmE0MzBhYzIz
NDY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMDIgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmlu
ZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAg
ICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgor
CisgICAgICAgIEFkZHMgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHRoZSBtaXNzaW5nIGZ1bmN0aW9u
YWxpdHkuIERvZXMgbm90IHlldAorICAgICAgICBlbmFibGUgdGhlIHRlc3RzIHRoYXQgYWN0dWFs
bHkgcGFzcyBidXQgd2hpY2ggd2VyZSBza2lwcGVkIGJlZm9yZSB0aGUKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24uCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIwLTEyLTAxICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
TElCXSBBZGQgc29tZSBXUEUtc3BlY2lmaWMgYmFzZWxpbmVzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nl
c3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhMjI1MjhmYTFiMjY3ODczMTg1MzA1ODAwMzM5MGZk
NzUzN2RjMGM2Li5iZDA3MDkyMjM3YzdjN2JjNDgyMTQ5MGEyZDQ2NzI2M2M3MDhjOTQ4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMxNyw2ICszMTcsMTQg
QEAgaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYWxs
b3dlZC13aXRoLWNyZWRlbnRpYWxzLmh0bWwKIGh0dHAvdGVzdHMvd2ViZ2wgWyBTa2lwIF0KIGpz
L3NoYXJlZC1hcnJheS1idWZmZXItd2ViZ2wuaHRtbCBbIFNraXAgXQogCit3ZWJraXQub3JnL2Iv
MjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLWZhbHNlLmh0bWwg
WyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMTgxODQgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2Uy
RC1tc2UtZmxpcFktdHJ1ZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE5MzQ5IGZhc3Qv
Y2FudmFzL3dlYmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE5MzQ5IGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsY29u
dGV4dGNoYW5nZWRldmVudC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3Qv
Y2FudmFzL3dlYmdsL2dsLXBpeGVsc3RvcmVpLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8yMTkzNTEgZmFzdC9jYW52YXMvd2ViZ2wvcHJlbXVsdGlwbHlhbHBoYS10ZXN0Lmh0bWwgWyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTkzNTIgZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250
ZXh0LW9uLXN0YXR1cy1mYWlsdXJlLmh0bWwgWyBGYWlsdXJlIF0KKwogd2ViZ3B1IFsgU2tpcCBd
CiAKIGFjY2Vzc2liaWxpdHkvcHJlc3Mtd29ya3Mtb24tY29udHJvbC10eXBlcy5odG1sIFsgU2tp
cCBdCg==
</data>
<flag name="commit-queue"
          id="432363"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415218</attachid>
            <date>2020-12-02 06:11:35 -0800</date>
            <delta_ts>2020-12-02 06:46:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201202161133.patch</filename>
            <type>text/plain</type>
            <size>569482</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM4NWFiOWQ4Nzg5YzU4
MTBkOTNjOGIxNGExNWM5MWFlNzdiZGM3MS4uYTE1MDIwY2NkZTcxYjcwZmY4NGNlMmU0N2ExOWJh
OGNiOWU2OTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTEyLTAxICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVSBQcm9jZXNzOiBJT1N1cmZh
Y2VzIHNob3VsZCBub3QgYmUgbWFwcGVkIGludG8gdGhlIFdlYiBDb250ZW50IFByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWIzNTQ0Y2UwODJiZDhhYzJjZmZlY2IyMmQwMWY3MWE3NDI5NDUxZC4uZjY2OGI2
ZTNlYzVkNDExN2M3MWJiYTM2MDhmNWY4ODg1YTQ2MGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NTIgQEAKKzIwMjAtMTItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlV2ViR0xCYWNrZW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBJbXBsZW1lbnRlZCB3aXRo
IGEgZ2VuZXJhdG9yIHNjcmlwdCBpbXBsZW1lbnRpbmcgdGhlIElQQyB0byBwYXNzIHRoZQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTCBtZW1iZXIgZnVuY3Rpb24gY2FsbHMgZnJvbSB3ZWIgcHJv
Y2VzcyB0byB0aGUgR1BVCisgICAgICAgIHByb2Nlc3MuIFRoZSBzY3JpcHQgaXMgcnVuIGR1cmlu
ZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgY29tbWl0dGVk
IHRvIHRoZSByZXBvIGZvciBlYXNlIG9mIHJldmlldy4KKworICAgICAgICBJbXBsZW1lbnQgdGhl
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIFdlYktpdCBzaWRlLiBUaGlzIGNsYXNzIHdpbGwK
KyAgICAgICAgZm9yd2FyZCBjYWxscyByZWNlaXZlZCB2aWEgSVBDIHRvIHRoZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC4gQXQgdGhlCisgICAgICAgIG1vbWVudCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBpbnN0YW5jZSBpcyBhIGRpcmVjdCBjaGlsZCBvZgorICAgICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLgorCisgICAgICAgIENoYW5nZXMgV2ViS2l0IElQQyB0byBzdXBwb3J0IHJl
Y2VpdmluZyB0eXBlZCBhcnJheXMgYXMgcmVmZXJlbmNlcy4gVGhpcworICAgICAgICBpcyBuZWVk
ZWQgdG8gc3VibWl0IEdMIGRhdGEgYXJyYXlzLCBzdWNoIGFzIEdMZmxvYXQgYXJyYXlzIGRpcmVj
dGx5IGZyb20KKyAgICAgICAgdGhlIElQQyBkYXRhIHN0b3JlIHdpdGhvdXQgYW4gZXh0cmEgY29w
eS4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9ydCBwYXNzaW5nIGRhdGEg
cmVmZXJlbmNlcywgaS5lLgorICAgICAgICBEYXRhUmVmZXJlbmNlIG9yIEFycmF5UmVmZXJlbmNl
LCBhcyBhIHN5bmNocm9uaXplZCBjYWxsIHJldHVybiB2YWx1ZS4KKyAgICAgICAgVGhlIGNhbGxl
ciBtdXN0IGhvbGQgdGhlIENvbm5lY3Rpb246OnN5bmNTZW5kKCkgcmVzdWx0IChEZWNvZGVyIG9i
amVjdCkKKyAgICAgICAgZm9yIHRoZSBkdXJpYXRpb24gb2YgdXNpbmcgdGhlIGRhdGEgdmFsdWVz
LgorCisgICAgICAgIENvbXBvc2l0aW5nIGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIFBMQVRGT1JN
KENPQ09BKS4KKworICAgICAgICBNaXNzaW5nOgorICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4
dCBsb3NzCisgICAgICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGNoYW5nZQorICAgICAgICAgLSBQ
YWludCBXZWJHTCBjb250ZW50cyB0byAyRCBjYW52YXMKKyAgICAgICAgIC0gVXBsb2FkIHZpZGVv
IHRvIFdlYkdMCisgICAgICAgICAtIFVwbG9hZCBjYW52YXMgdG8gV2ViR0wKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpkaWRDb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlc2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmg6IEFkZGVkLgorICAgICAgICAoc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6Cisg
ICAgICAgIChzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChtb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QpOgorICAgICAgICAoYWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChhdHRhY2hT
aGFkZXIpOgorICAgICAgICAoYmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKGJpbmRCdWZm
ZXIpOgorICAgICAgICAoYmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGJpbmRSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoYmluZFRleHR1cmUpOgorICAgICAgICAoYmxlbmRDb2xvcik6CisgICAg
ICAgIChibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6Cisg
ICAgICAgIChibGVuZEZ1bmMpOgorICAgICAgICAoYmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAg
ICAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChjbGVhcik6CisgICAgICAgIChj
bGVhckNvbG9yKToKKyAgICAgICAgKGNsZWFyRGVwdGgpOgorICAgICAgICAoY2xlYXJTdGVuY2ls
KToKKyAgICAgICAgKGNvbG9yTWFzayk6CisgICAgICAgIChjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKGNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKGNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVTaGFkZXIpOgorICAgICAgICAoY3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChjdWxs
RmFjZSk6CisgICAgICAgIChkZWxldGVCdWZmZXIpOgorICAgICAgICAoZGVsZXRlRnJhbWVidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChkZWxldGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGRlbGV0ZVRleHR1cmUpOgor
ICAgICAgICAoZGVwdGhGdW5jKToKKyAgICAgICAgKGRlcHRoTWFzayk6CisgICAgICAgIChkZXB0
aFJhbmdlKToKKyAgICAgICAgKGRldGFjaFNoYWRlcik6CisgICAgICAgIChkaXNhYmxlKToKKyAg
ICAgICAgKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChkcmF3QXJyYXlzKToK
KyAgICAgICAgKGRyYXdFbGVtZW50cyk6CisgICAgICAgIChlbmFibGUpOgorICAgICAgICAoZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZmluaXNoKToKKyAgICAgICAgKGZsdXNo
KToKKyAgICAgICAgKGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGZyb250RmFjZSk6CisgICAgICAgIChnZW5lcmF0ZU1p
cG1hcCk6CisgICAgICAgIChnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoZ2V0QWN0aXZlVW5p
Zm9ybSk6CisgICAgICAgIChnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChnZXRCdWZmZXJQ
YXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFN0cmluZyk6CisgICAgICAgIChnZXRGbG9hdHYpOgor
ICAgICAgICAoZ2V0SW50ZWdlcnYpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0KToKKyAgICAgICAg
KGdldEludGVnZXI2NGkpOgorICAgICAgICAoZ2V0UHJvZ3JhbWkpOgorICAgICAgICAoZ2V0Qm9v
bGVhbnYpOgorICAgICAgICAoZ2V0RXJyb3IpOgorICAgICAgICAoZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAg
IChnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFNoYWRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQpOgorICAgICAgICAoZ2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRl
cmYpOgorICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRVbmlmb3JtZnYp
OgorICAgICAgICAoZ2V0VW5pZm9ybWl2KToKKyAgICAgICAgKGdldFVuaWZvcm11aXYpOgorICAg
ICAgICAoZ2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdldFZlcnRleEF0dHJpYk9mZnNl
dCk6CisgICAgICAgIChoaW50KToKKyAgICAgICAgKGlzQnVmZmVyKToKKyAgICAgICAgKGlzRW5h
YmxlZCk6CisgICAgICAgIChpc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGlzUHJvZ3JhbSk6Cisg
ICAgICAgIChpc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChpc1NoYWRlcik6CisgICAgICAgIChp
c1RleHR1cmUpOgorICAgICAgICAobGluZVdpZHRoKToKKyAgICAgICAgKGxpbmtQcm9ncmFtKToK
KyAgICAgICAgKHBpeGVsU3RvcmVpKToKKyAgICAgICAgKHBvbHlnb25PZmZzZXQpOgorICAgICAg
ICAocmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChzYW1wbGVDb3ZlcmFnZSk6CisgICAg
ICAgIChzY2lzc29yKToKKyAgICAgICAgKHNoYWRlclNvdXJjZSk6CisgICAgICAgIChzdGVuY2ls
RnVuYyk6CisgICAgICAgIChzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5jaWxN
YXNrKToKKyAgICAgICAgKHN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoc3RlbmNpbE9w
KToKKyAgICAgICAgKHN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmYp
OgorICAgICAgICAodGV4UGFyYW1ldGVyaSk6CisgICAgICAgICh1bmlmb3JtMWYpOgorICAgICAg
ICAodW5pZm9ybTFmdik6CisgICAgICAgICh1bmlmb3JtMWkpOgorICAgICAgICAodW5pZm9ybTFp
dik6CisgICAgICAgICh1bmlmb3JtMmYpOgorICAgICAgICAodW5pZm9ybTJmdik6CisgICAgICAg
ICh1bmlmb3JtMmkpOgorICAgICAgICAodW5pZm9ybTJpdik6CisgICAgICAgICh1bmlmb3JtM2Yp
OgorICAgICAgICAodW5pZm9ybTNmdik6CisgICAgICAgICh1bmlmb3JtM2kpOgorICAgICAgICAo
dW5pZm9ybTNpdik6CisgICAgICAgICh1bmlmb3JtNGYpOgorICAgICAgICAodW5pZm9ybTRmdik6
CisgICAgICAgICh1bmlmb3JtNGkpOgorICAgICAgICAodW5pZm9ybTRpdik6CisgICAgICAgICh1
bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgICh1c2VQcm9ncmFtKToKKyAgICAgICAgKHZhbGlk
YXRlUHJvZ3JhbSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAodmVydGV4QXR0cmliMmYpOgorICAgICAgICAodmVydGV4QXR0
cmliMmZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjNmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0
ZnYpOgorICAgICAgICAodmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgICh2aWV3cG9ydCk6
CisgICAgICAgIChidWZmZXJEYXRhMCk6CisgICAgICAgIChidWZmZXJEYXRhMSk6CisgICAgICAg
IChidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMCk6CisgICAgICAgIChyZWFk
blBpeGVsczEpOgorICAgICAgICAodGV4SW1hZ2UyRDApOgorICAgICAgICAodGV4SW1hZ2UyRDEp
OgorICAgICAgICAodGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UyRDEpOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQwKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJ
bWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAo
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQxKToKKyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWQp
OgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoZGVsZXRl
VmVydGV4QXJyYXkpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChiaW5kVmVy
dGV4QXJyYXkpOgorICAgICAgICAoY29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoZnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoaW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyZWFkQnVmZmVyKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgICh0ZXhT
dG9yYWdlMkQpOgorICAgICAgICAodGV4U3RvcmFnZTNEKToKKyAgICAgICAgKHRleEltYWdlM0Qw
KToKKyAgICAgICAgKHRleEltYWdlM0QxKToKKyAgICAgICAgKHRleFN1YkltYWdlM0QwKToKKyAg
ICAgICAgKHRleFN1YkltYWdlM0QxKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTNEKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1h
Z2UzRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKToKKyAgICAgICAgKGNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChnZXRGcmFnRGF0YUxvY2F0aW9uKToK
KyAgICAgICAgKHVuaWZvcm0xdWkpOgorICAgICAgICAodW5pZm9ybTJ1aSk6CisgICAgICAgICh1
bmlmb3JtM3VpKToKKyAgICAgICAgKHVuaWZvcm00dWkpOgorICAgICAgICAodW5pZm9ybTF1aXYp
OgorICAgICAgICAodW5pZm9ybTJ1aXYpOgorICAgICAgICAodW5pZm9ybTN1aXYpOgorICAgICAg
ICAodW5pZm9ybTR1aXYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAg
KHVuaWZvcm1NYXRyaXgzeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAg
ICAgICAodW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzeDRmdik6
CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliSTRp
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1
aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcik6CisgICAgICAgIChkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChkcmF3QnVm
ZmVycyk6CisgICAgICAgIChjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKGNsZWFyQnVmZmVydWl2
KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmaSk6Cisg
ICAgICAgIChjcmVhdGVRdWVyeSk6CisgICAgICAgIChkZWxldGVRdWVyeSk6CisgICAgICAgIChp
c1F1ZXJ5KToKKyAgICAgICAgKGJlZ2luUXVlcnkpOgorICAgICAgICAoZW5kUXVlcnkpOgorICAg
ICAgICAoZ2V0UXVlcnkpOgorICAgICAgICAoZ2V0UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChj
cmVhdGVTYW1wbGVyKToKKyAgICAgICAgKGRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoaXNTYW1w
bGVyKToKKyAgICAgICAgKGJpbmRTYW1wbGVyKToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGZlbmNl
U3luYyk6CisgICAgICAgIChpc1N5bmMpOgorICAgICAgICAoZGVsZXRlU3luYyk6CisgICAgICAg
IChjbGllbnRXYWl0U3luYyk6CisgICAgICAgICh3YWl0U3luYyk6CisgICAgICAgIChnZXRTeW5j
aSk6CisgICAgICAgIChjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChpc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiZWdpblRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KToKKyAgICAgICAgKHBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAocmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoYmlu
ZEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKGdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKGdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAg
ICAgKGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAodW5pZm9ybUJsb2NrQmlu
ZGluZyk6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZlckFOR0xFKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAg
KGNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKGlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChp
bnNlcnRFdmVudE1hcmtlckVYVCk6CisgICAgICAgIChwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAg
ICAgICAocG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoZHJhd0J1ZmZlcnNFWFQpOgorICAg
ICAgICAoZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRh
c2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaC4KKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OkFycmF5UmVmZXJlbmNlKToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
QXJyYXlSZWZlcmVuY2U6OnZlY3RvciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJl
ZmVyZW5jZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OndyYXBGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmluZ1Jl
ZmVyZW5jZS5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgICogU2hhcmVkL3NvdXAvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzU291cC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2VydGlm
aWNhdGVJbmZvPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZp
Y2F0ZUluZm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlv
blNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuY3BwLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNv
bnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0
aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENv
bG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xv
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
RGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1
cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
b250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdp
ZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00Zik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4
QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFn
ZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29t
cHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNh
bXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZl
cnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJr
ZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
b3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50
ZXJmYWNlaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRVc2VH
UFVQcm9jZXNzRm9yV2ViR0wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisKIDIwMjAtMTItMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgR1BVIFByb2Nlc3M6IElPU3VyZmFjZXMgc2hvdWxkIG5vdCBi
ZSBtYXBwZWQgaW50byB0aGUgV2ViIENvbnRlbnQgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYTcyM2FlMDYzNzNkMmY1ZjVmZDAyZjdjMTgyOGYzMmYxNzAxYjVhNC4uZTNkZTA3OTY2N2Jj
YWFhODFjZTViOTUzNTAyNDI1OWJhMjZjM2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjQ4
LDYgKzEyNDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNmZWIw
MzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4OGJkNDA3N2EwYzU0
YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMTEs
MTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lu
dFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNv
cmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgyZGY4ODdiMWIwYzRkNGI4
MTJjYmZlNWEwNmRlYWU0MTgxMjBlMmIuLjEwNzE0ZjNmNGE1NjhmZmQwZDE1Njk0MDJlMGVjZGM0
Nzg3MDE3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJjNzk1MjZiYzZjZDE0
M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQwMGIwZmNlMjQxZWZm
YjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiArMzU3LDE0IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2Nv
YS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmU3
ZTlmZDJiOTFlYjgxMDEzNDU2MGRmZmQ4MGFjZDIxMGIzZmRjMC4uM2I0NDA5ZWIwNmRhYzg3ZDE5
ZDVhYzI5OWFiOTEyODJiZjg5ZWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Myw3ICsyMDUzLDcgQEAKIAkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xB
bnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcw
MDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdG
QjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9u
c0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3
RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07CisJCTZFNjdEMkE5
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDMyMjlD
OUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEUy
MjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RjIyOURD
RDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAv
KiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Nyw2ICsyMjQ3LDggQEAK
IAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAw
QzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEw
MzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjkwNDE3MDI1
NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVD
QjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIz
NEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUy
NTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3Mzgx
RkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAv
KiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjksOSArMTAyMzEsMTQgQEAK
IAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAx
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI0MjU0
QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTUyNTcxMkU5MTAw
MzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTcyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNldHRpbmdz
LmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNFMjRGQUQzNjAw
MDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5p
ZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjIxLDYgKzI2NjI4LDggQEAKIAkJCQkwNzRFODJCOTE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0Yx
M0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJN0I5MDQxNkUyNTUw
MTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJ
CQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywK
IAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywK
IAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAt
MjY3ODcsNiArMjY3OTYsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBENkExMjJBMjRFOTAw
MkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJG
MzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJCQkJN0I2REM4MTUy
NTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNw
cCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1OTU5NjIxNDZERjc4
MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RBNTk1OTcyMTQ2REY3
ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2Nzk4LDYgKzI2ODA5
LDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4RkIg
LyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0
QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlD
REVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJ
CQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJ
CQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
ICovLApAQCAtMzIwOTksNiArMzIxMTEsNyBAQAogCQkJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUzQyAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNCOUU5MjM3
NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVhZGVycyAqLywKQEAg
LTM0MDM1LDYgKzM0MDQ4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2
MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJl
bW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0
RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVjNzE3NDU5N2YwNmUw
ZTUwOWU3OGZhYS4uNmM3ODNiZDIyYmRmMTJlYTRjMDNkMzcxM2QwZWU3Yzc5MTE0ZGNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTY4MSwxNyArNjgxLDggQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAg
ICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ly8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZlclN1YkRhdGEoKSBjYWxscyB0byB1
c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0ciA9IG1fY29udGV4dC0+bWFwQnVm
ZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNldC51bnNhZmVHZXQoKSwgc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0aFB0ci51bnNhZmVHZXQoKSAqIGNo
ZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4o
ZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZz
ZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICogZWxlbWVudFNpemUpOwotCi0gICAg
aWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkpCi0gICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdldEJ1ZmZlclN1
YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZmZXIiKTsKLSNlbmRpZgotICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgbV9jb250ZXh0
LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9mZnNldCwgbWFrZUdDR0xTcGFuKHN0
YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVP
ZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBjb3B5TGVuZ3RoICogZWxlbWVudFNp
emUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCkBAIC0xOTY3LDkgKzE5
NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRl
cihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0UXVl
cnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRR
dWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8V2ViR0xT
YW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAgLTIwNTks
MTcgKzIwNDgsMTEgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxl
clBhcmFtZXRlcihXZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1M6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAg
ICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVyaXYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIu
b2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01B
WF9MT0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0g
ICAgICAgIGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFy
YW1ldGVyZnYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5f
TE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0
ZXIiLCAiSW52YWxpZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0ODUs
MjQgKzI0NjgsMjQgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2
ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZl
Y3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKLSAgICAKICAg
ICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9U
WVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX1RZUEU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGVudW0+KHgpOyB9KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX1NJWkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKKyAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19JTkRFWDoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX09GRlNFVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0FSUkFZX1NUUklERToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX01B
VFJJWF9TVFJJREU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
SVNfUk9XX01BSk9SOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9y
bUluZGljZXMsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lT
X1JPV19NQUpPUjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
Pih4KTsgfSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtcyIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3
Miw4ICszNTU1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEcKIAogICAgIGNsZWFySWZDb21w
b3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwogCi0gICAgR0NHTHNpemVpIGxlbmd0aCwgY29sdW1u
cywgcm93czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVz
dEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgJmxlbmd0aCwgJmNv
bHVtbnMsICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpLCB0cnVlKTsK
KyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDQwMDcxY2EyM2Iy
YzM1NWUxZTgxMDY0NjE3ZDUyYjlkMmZiODdhYzYuLmY3YzZhMmU4MmE0YmYwMzdhMWI0NzdkNzgz
ZmE1NDFhYzRmNTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MzIsOCArNzMyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0KLQotICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRl
cywgaG9zdFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAg
ICAgaWYgKGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3Bh
dGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250
ZXh0Y3JlYXRpb25lcnJvckV2ZW50LApAQCAtNDM5NSwxNSArNDM5NCwxMiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aAogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAog
I2lmIFVTRShBTkdMRSkKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBHQ0dMc2l6ZWkg
Y29sdW1ucyA9IDA7Ci0gICAgR0NHTHNpemVpIHJvd3MgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJv
d3MsIGRhdGEsIGZhbHNlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVu
Z3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxz
LmJ5dGVMZW5ndGgoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJk
NTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdl
YkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFwaGljc0Nv
bnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5jU3RhdHVz
KTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5
bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBpZiAobV9z
eW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAgICBzY2hl
ZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5k
ZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjliODZiYzMx
ODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
NTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVybiBtX2Ns
aWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShX
RUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJRCBDaHJv
bWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsK
QEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1fcGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQorICAgIC8v
IFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQgd29yaywg
cmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3NjQxZDAx
NDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEzY2ZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYK
KwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1
bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAz
YTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0OTkwMzc1
ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMg
dGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RX
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRleCA0M2Ri
MWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2MzMzdiMmU1
MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAvLyBNZXRo
b2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUyZmIzLi43
YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMzQsMTMg
KzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1
cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7
IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0luV2ViUHJv
Y2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3Mo
KTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZiZDFkNDNj
MDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFmNjRhYTBk
ZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC05Niw2
ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1bmRsZUlz
V2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJv
b2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07CisgICAgcmV0
dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNz
KCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9IFtbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4NjczNDQ3
NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAt
MjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9j
b21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NUQVRVU19L
SFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNp
b24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAvLyBHTF9B
UkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVy
cyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwog
CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQot
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7
CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAg
ICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNp
emVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKQEAg
LTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQU1E
KCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3QgYmUg
YXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZp
Z3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkZjRhMTE5
YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIxYWVhN2E1
YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQSElDU19D
T05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0
Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpAQCAt
NDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1bHQ7
CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhv
c3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdMOjpH
cmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJzKGF0
dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1MmRjNmVm
My4uNTYxM2NiMmY2YzkxMjcwYWJkMWJkNGU2NzEwMzllOGYyYzgwZmZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBA
IC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZvciBp
bXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgogICAg
IC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGljOgogICAg
ICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGljc0Nv
bnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24gaW4g
Y29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0IHRo
ZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBH
cmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAot
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRl
cnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgYWN0
aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFj
aFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05ODAsNyAr
OTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhD
b3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgPSAwOwog
CiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0dHJpYgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSA9
IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NH
TGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0xMTI0LDgg
KzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50
cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50
cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgR0NH
THZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAgICB2aXJ0
dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBnZXRRdWVy
eU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpID0gMDsK
QEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pID0gMDsK
ICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xi
b29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSA9
IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTeW5jaXYo
R0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVz
ZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NHTHVpbnQ+
IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRl
cgpAQCAtMTM5NCw3ICsxMzk0LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1
cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgK
aW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3
NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQg
R0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hh
ciBHQ0dMY2hhcjsKK3R5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYg
dm9pZCBHQ0dMdm9pZDsKKworLy8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0
Y2ggdGhlIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZp
bGUgZm9yIGFsbCBwbGF0Zm9ybXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBl
ZGVmIGludHB0cl90IEdDR0xzaXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19H
THN5bmMqIEdDR0xzeW5jOwotdHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1p
Y0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1
Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNp
dCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0
YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6
ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAg
ICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBH
Q0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwg
c3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAg
ICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAg
ICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6
OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQor
ICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0
YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBU
KiBkYXRhOwpAQCAtNzksNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50
PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBk
YXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDEx
IEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0
YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdD
R0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXpl
b2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1
ZlNpemU7CiB9OwpAQCAtMTUyLDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilb
Tl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4o
V1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihX
VEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3Qg
Y291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2U1NjBiOTYwNGFmYmE1MTI2MDA4YzllYTA1Yjg3ZjUxOTYxZDYxOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMpCit7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7Cit9CisK
K1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wo
KSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAoreworICAg
IHJldHVybiAwOworfQorCitFeHRlbnNpb25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJv
b2wpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBj
b25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAoreworICAgIHJldHVybiBjb250
ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJWE1FOiBUaGUg
Y2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlmIChtX2xheWVyQ29tcG9zaXRl
ZCkKKyAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgbV9sYXllckNvbXBv
c2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVl
OworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMu
cHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0g
R3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5k
ZXB0aCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4
dEdMOjpERVBUSF9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAg
ICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lM
X0JVRkZFUl9CSVQ7CisgICAgfQorICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9y
KG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKK2Jvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxk
IGJ1ZmZlcnMpCit7CisgICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNlcnZlRHJhd2lu
Z0J1ZmZlcikKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJzOworfQorCitH
Q0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEJ1ZmZlcnNU
b0F1dG9DbGVhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwor
fQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5hYmxlUHJlc2VydmVE
cmF3aW5nQnVmZmVyKCkKK3sKKyAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBvcnQgcmVhc29ucy4K
KyAgICAvLyBGSVhNRTogVGhlIHdob2xlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkLgorICAg
IEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKK30KKwor
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMoY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVu
dGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAg
ICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5z
aW9ucy5hZGQobmFtZSk7CisgICAgfQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRp
bEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0aWFsaXplKGNvbnN0IFN0cmlu
ZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNw
bGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgn
ICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30K
KworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZThhMDkxNGQ4ZThlMjllMmQyODMx
MjUwNGM0ZWIzMjBiMTE5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC0wLDAg
KzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wp
CisKKyNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBXZWJHTExheWVy
OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47CisjZW5kaWYKKworLy8g
QSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBwcm94eSBzaWRlIGltcGxl
bWVudGF0aW9uCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdl
YkNvcmUgaW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tp
bmcgbWFuYWdlbWVudC4KKy8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNz
Q29udGV4dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
KTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSBvdmVycmlkZTsKKwor
ICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB1
c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOworICAgIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IGZpbmFsOworICAgIFBs
YXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgZmluYWw7CisgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAgIEV4dGVuc2lvbnNHTCYg
Z2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9v
bCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVm
ZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29t
cGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5h
bDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0
QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxk
IGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBtYXJr
TGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdC
dWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikK
KyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7CisjZW5kaWYKKyAgICAvLyBP
dGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCisgICAgdXNpbmcgRXh0ZW5zaW9uc0dMOjppc0Vu
YWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0VuYWJsZWQo
Y29uc3QgU3RyaW5nJikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemUo
Y29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3Rh
YmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmlu
ZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAw
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisKKyAgICAvLyBHdWFyZGVkIGJ5
IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxl
RXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7
CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKKworICAgIC8vIEZJ
WE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91bGQgYmUgbW92ZWQgdG8gdGhl
IGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CisgICAgR0NHTGJp
dGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9OworCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAyODNkYTgyYzZhNjAyZWE0YjU1N2M2ODZjZmQ4MjNk
MDgxYzU1ZTRhLi43YzE1MWZhMjg1MGYzM2MxNDlhOWRjODIyMzgxYjhmY2JkZTljYjc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC00NiwyOCArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZykKICAgICA6IG1faW5p
dGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRl
eHQpCi0gICAgLCBtX2lzTlZJRElBKGZhbHNlKQotICAgICwgbV9pc0FNRChmYWxzZSkKLSAgICAs
IG1faXNJbnRlbChmYWxzZSkKLSAgICAsIG1faXNJbWFnaW5hdGlvbihmYWxzZSkKLSAgICAsIG1f
cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZShmYWxzZSkKICAgICAsIG1fdXNlSW5kZXhlZEdl
dFN0cmluZyh1c2VJbmRleGVkR2V0U3RyaW5nKQogewotICAgIC8vIEZJWE1FOiBpZGVhbGx5LCBy
ZW1vdmUgdGhpcyBpbml0aWFsaXphdGlvbiBhbHRvZ2V0aGVyLiBBTkdMRQotICAgIC8vIHN1YnN1
bWVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZ3JhcGhpY3MgZHJpdmVyIHdvcmthcm91bmRzLgot
ICAgIG1fdmVuZG9yID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpH
ZXRTdHJpbmcoR0xfVkVORE9SKSkpOwotICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKLQotICAg
IFZlY3RvcjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHMgPSBtX3ZlbmRvci5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpLnNwbGl0KCcgJyk7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFp
bnMoIm52aWRpYSIpKQotICAgICAgICBtX2lzTlZJRElBID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9y
Q29tcG9uZW50cy5jb250YWlucygiYXRpIikgfHwgdmVuZG9yQ29tcG9uZW50cy5jb250YWlucygi
YW1kIikpCi0gICAgICAgIG1faXNBTUQgPSB0cnVlOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRz
LmNvbnRhaW5zKCJpbnRlbCIpKQotICAgICAgICBtX2lzSW50ZWwgPSB0cnVlOwotICAgIGlmICh2
ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJpbWFnaW5hdGlvbiIpKQotICAgICAgICBtX2lzSW1h
Z2luYXRpb24gPSB0cnVlOwogfQogCiBFeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVuc2lvbnNHTEFO
R0xFKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDcgKzgzLDcgQEAgYm9vbCBFeHRlbnNpb25zR0xBTkdM
RTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpCitHTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjsKIH0KQEAgLTEx
NCwxMCArOTQsMTEgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShz
aGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUpOworCiAgICAg
aWYgKCFzb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIFZl
Y3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNMQVRFRF9TSEFERVJf
U09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgotICAgIGludCBy
ZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0NHTGludCByZXR1cm5lZExlbmd0aCA9IDA7CiAgICAg
Z2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwg
JnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFyZXR1cm5lZExlbmd0aCkK
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xNDcsNyArMTI4LDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogICAgIG1f
aW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcg
c3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxv
bmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpCit2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRp
bmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMTU2LDcgKzEzNyw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kw
LCBsb25nIHNyY1gxLCBsb25nCiAgICAgZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBz
cmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmls
dGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIzNSw3ICsyMTYsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICAgICBnbDo6RHJhd0J1ZmZl
cnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNDMsMTUg
KzIyNCwxNSBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaQogICAgIGdsOjpEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
dm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbDo6RHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQpOwor
ICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVp
bnRlcnByZXRfY2FzdDxHTHZvaWQqPihvZmZzZXQpLCBwcmltY291bnQpOwogfQogCi12b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzUwLDcg
KzMzMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBnbDo6R2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQog
ewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDMxLDcgKzQxMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRp
c2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kCiAgICAgZ2w6
OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0
aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
Cit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC00MzksNyArNDIwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGwKICAgICBnbDo6R2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2kK
ICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lk
dGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykKLXsKLSAgICAvLyBXZSBjYW4g
YXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRoZSBjYWxsaW5nIGZ1bmN0aW9u
cwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgaW50IHRvdGFsQnl0ZXMgPSB3
aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBp
ICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19Ci0jZW5kaWYKLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAq
Y29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVs
QnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1
c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKLSAgICAvLyBhbGwg
cHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBp
eGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJzID0gbV9jb250ZXh0LT5jb250
ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVmZmVyVGFyZ2V0ID0gbV9jb250
ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIg
OiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0YXRlID0gbV9jb250ZXh0LT5t
X3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICBtX2NvbnRleHQtPnJlc29s
dmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7
Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fY29udGV4
dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9Ci0gICAgKHZvaWQpIG1fY29u
dGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgZ2w6OlJlYWRuUGl4
ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXpl
LCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdMZW51bSBlcnJvciA9IGdsOjpH
ZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKTsKLQot
ICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZhaWx1cmUgZHVy
aW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFjZSB0aGlzIGlu
IHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAgdGhlIGFscGhh
IGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmpl
Y3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2Nv
bnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09
IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAgICB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0
YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3Qp
OwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0NDUsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24s
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCit2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAsNyArNDUzLDcgQEAgdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMu
LmNiZjQ5OGJkN2MxYTFhYjlhYTZiNzBmYjVkMzhhYzRiOTJmYjAzNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gx
LCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRz
dFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0
LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVy
biBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlv
bigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247
IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOyB9Cisg
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBHTF9BTkdM
RV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4
ZWxzKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVz
dEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkblBp
eGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXpl
aSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50
ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIC8v
IFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBib29sIG1faXNOVklESUE7Ci0g
ICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwotICAgIGJvb2wgbV9pc0ltYWdp
bmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsKLSAg
ICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOwotCiAgICAgYm9v
bCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0gICAgU3RyaW5nIG1fdmVuZG9y
OwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4w
LXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVl
biBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNiOGRiYTNjM2Y0NGNkNzY1ZGQ4
ZmM3MTFjZGQ4NzhkZTlhNC4uMWQ2MDRiNzFkNDgxNGY1OTdjMmMyZmM4OWVkYzk2NDhkYzEzYzc2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTQ0MywzMiArNDQzLDUz
IEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCog
ZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
cmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5i
dWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICByZWFkblBpeGVs
c0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lkKj4ob2Zmc2V0KSwgdHJ1ZSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzSW1wbChHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBk
YXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQogewotICAgIC8vIEZJWE1FOiBy
ZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4ZWQs
IGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUgZG9u
ZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2gg
Y2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKKyAgICAvLyBhbGwgcHJl
dmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVs
cy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMo
KTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1faXNGb3JXZWJHTDIgPyBHcmFw
aGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOworICAgIGlmIChhdHRy
cy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsK
ICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHksIHdp
ZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRh
cmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAgICB9Ci0gICAgZ2w6OlJlYWRQ
aXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKLSAgICBpZiAo
YXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVG
Qk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgZ2w6OlJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZT
aXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAgIEdMZW51bSBlcnJvciA9IGds
OjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFk
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJh
bWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJpbmcgdGhlIFJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4gdGhlCisgICAgICAgIC8vIHN5
bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEgY2hhbm5lbCBmaXh1cCBiZWxv
dy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlm
ICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9mYm8g
fHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2Ft
cGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCAmJiAhYXR0cnMu
YWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpV
TlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5h
bnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pKSkKICAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYWRp
bmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0KIC8vIFRoZSBjb250ZW50cyBv
ZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5H
TEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2ls
KGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTg5OCwyMCArOTE5
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6QnVmZmVyU3ViRGF0YSh0YXJn
ZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vz
cyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGdsOjpVbm1hcEJ1ZmZlcih0YXJn
ZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IGdsOjpNYXBCdWZmZXJS
YW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQ
X1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShk
YXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoIWdsOjpVbm1hcEJ1ZmZlcih0
YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5
QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwg
R0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlw
dHIgc2l6ZSkKQEAgLTEwMDgsMTQgKzEwMjUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwK
ICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ob2Zmc2V0KSwgMCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1J
bmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpCitWZWN0b3I8
R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGlj
ZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9y
bUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNl
cy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkpOwor
ICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUo
KSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAtMjEwMSwyMiArMjExOSw2IEBA
IEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGdsOjpHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdlJv
YnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0
YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYml2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUp
Ci17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5i
dWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMzky
LDEyICsyMzk0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuZFF1ZXJ5KEdD
R0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lKQogewor
ICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXYoaWQsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0aW9ucwpAQCAtMjgzOSwyMCAr
Mjg0MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVy
ZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAgIGdsOjpTYW1wbGVyUGFyYW1l
dGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAwLmY7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXIsIHBuYW1lLCB2
YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKHNhbXBsZXIs
IHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKQorR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0g
MDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
ciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVl
OwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xl
bnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjg5NSwxMiArMjkwMiwxNCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBH
Q0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0U3luYyhzeW5jLCBmbGFncywg
dGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpdihH
Q0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQg
KnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2koR0NHTHN5
bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBuYW1lLCBidWZTaXplLCBudWxs
cHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBwbmFtZSwgMSwgbnVsbHB0ciwg
JnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MzU5N2Y0NzUz
ZDBiZWMxZDAyZTdkNWZjZmRjNjQzYTk4M2M4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisKKyNpZiBFTkFC
TEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46On5HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpID0gZGVmYXVsdDsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk5ZTg4YzJmOTliMWNhYTU4MTE3YzczOTExYTUxYjY3ZGRlNjMyYmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFBMQVRGT1JNKENP
Q09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFjZSBmb3IgaW1wbGVtZW50aW5nIGZyb250
IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dhcAorLy8gY2hhaW4gb2YgSU9T
dXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxsIG93biB0aGUgSU9TdXJmYWNlcyBpdCB1
c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVh
Y2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRhCisvLyBiYWNrIG9uY2Ug
dGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5
IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8gb2J0YWluIHRoZSBJT1N1cmZhY2UgaXRz
ZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRhZGF0YSBpcyB0byB1c2Ug
RUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3YXkKKy8vIHdoZW4gdGhl
IGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBj
bGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5l
ZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dpYy4KK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpOworICAgIHN0cnVjdCBC
dWZmZXIgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJm
YWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgorICAgICAgICB2b2lkKiBoYW5kbGUgeyBudWxs
cHRyIH07IC8vIFByb2R1Y2VyIHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xT
dXJmYWNlKS4KKyAgICB9OworICAgIC8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRsZSBvZiBs
YXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xpZW50IG1heSByZWNpZXZlIGJh
Y2sgYWxzbyB0aGUgb3duZXJzaGlwIG9mIHRoZSBjb250ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0
IGlzIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAvLyB0aW1lIG9mIHRoZSBjYWxsLgorICAgIC8vIFJl
dHVybnMgZWl0aGVyOgorICAgIC8vIC0gRW1wdHkgYnVmZmVyIGlmIG5vIGJ1ZmZlciBoYXMgYmVl
biBzdWJtaXR0ZWQuCisgICAgLy8gLSBCdWZmZXIgd2l0aCBlbXB0eSBzdXJmYWNlIGFuZCBub24t
ZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBidWZmZXIgd2FzIGF2YWlsYWJs
ZQorICAgIC8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KKyAgICAvLyAtIFN1
cmZhY2UgYW5kIGhhbmRsZS4KKyAgICB2aXJ0dWFsIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgPSAw
OworCisgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlzcGxheSB3aXRoIGEgY29udGVu
dHMgYnVmZmVyLgorICAgIC8vIENsaWVudCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUg
SU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgorICAgIHZpcnR1YWwgdm9pZCBwcmVz
ZW50KEJ1ZmZlcikgPSAwOworCisgICAgLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJu
cyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgorICAgIC8vIFRo
ZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIg
bXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCisgICAgLy8gdGhpcy4KKyAgICB2
aXJ0dWFsIHZvaWQqIGRldGFjaENsaWVudCgpID0gMDsKK307CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCAyZTFjNzk5ZTgyODUz
YjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi40ODllNDVmY2NlNjNiZDg1NTg3YTQ4MzI4OThk
OTMyNDExY2U5ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKQEAgLTgxLDcgKzgyLDcgQEAgc3RhdGljIEVHTERpc3BsYXkgSW5pdGlhbGl6ZUVH
TERpc3BsYXkoKQogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwogICAgIEVHTGludCBtaW5v
clZlcnNpb24gPSAwOwogICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLSAgICBib29sIHNob3VsZElu
aXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICFpc0luV2ViUHJvY2VzcygpOwor
ICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIShp
c0luV2ViUHJvY2VzcygpIHx8IGlzSW5HUFVQcm9jZXNzKCkpOwogICAgIGlmIChzaG91bGRJbml0
aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKICAgICAgICAgLy8gRm9yIFdLMSB0
eXBlIEFQSXMgd2UgbmVlZCB0byBzZXQgInZvbGF0aWxlIHBsYXRmb3JtIGNvbnRleHQiIGZvciBz
cGVjaWZpYwogICAgICAgICAvLyBBUElzLCBzaW5jZSBjbGllbnQgY29kZSB3aWxsIGJlIGFibGUg
dG8gb3ZlcnJpZGUgdGhlIHRocmVhZC1nbG9iYWwgY29udGV4dApAQCAtMTM0LDcgKzEzNSw3IEBA
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHCiAgICAgaWYgKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0cygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29u
dGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdp
bmRvdywgZGVzdGluYXRpb24pKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIGhv
c3RXaW5kb3csIG51bGxwdHIsIG51bGxwdHIpKTsKIAogICAgIGlmICghY29udGV4dC0+bV9jb250
ZXh0T2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NywxMyArMTQ4LDE4IEBAIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZShHcmFwaGljc0NvbnRleHRHCiBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wm
IHNoYXJlZENvbnRleHQpCiB7CiAgICAgYXV0byBob3N0V2luZG93ID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaG9zdFdpbmRvd0ZvckNvbnRleHQoJnNo
YXJlZENvbnRleHQpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0V2lu
ZG93LCBzaGFyZWRDb250ZXh0LmRlc3RpbmF0aW9uKCksICZzaGFyZWRDb250ZXh0KSk7CisgICAg
YXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChzaGFy
ZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csICZzaGFyZWRDb250ZXh0
LCBudWxscHRyKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCksIGhvc3RXaW5kb3cpOwogCiAgICAg
cmV0dXJuIGNvbnRleHQ7CiB9CiAKK1JlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycywgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4qIHN3YXBDaGFpbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgbnVsbHB0ciwgc3dhcENoYWluKSk7Cit9CisKICNp
ZiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBiZSBqdXN0IGVu
YWJsZWQgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5ND4uCiAKIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVn
aXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVs
Rm9ybWF0T2JqLCBJT1JlZ2lzdHJ5R1BVSUQgcHJlZmVycmVkR1BVSUQpCkBAIC0yMDQsOCArMjEw
LDggQEAgc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4
dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWwKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
IAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3Jh
cGhpY3NDb250ZXh0R0w6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogc2hhcmVkQ29udGV4dCkKLSAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBk
ZXN0aW5hdGlvbiwgc2hhcmVkQ29udGV4dCkKK0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250
ZXh0LCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dhcENoYWluKQorICAg
IDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIHNoYXJl
ZENvbnRleHQpCiB7CiAgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJzLmlzV2ViR0wyOwogCkBAIC0y
OTMsMjYgKzI5OSwyOCBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIGlmIChtX2lzRm9y
V2ViR0wyKQogICAgICAgICBnbDo6RW5hYmxlKEdyYXBoaWNzQ29udGV4dEdMOjpQUklNSVRJVkVf
UkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKKyAgICBWZWN0b3I8QVNDSUlMaXRlcmFsLCA0PiByZXF1
aXJlZEV4dGVuc2lvbnM7CisgICAgaWYgKG1faXNGb3JXZWJHTDIpIHsKKyAgICAgICAgLy8gRm9y
IFdlYkdMIDIuMCBvY2NsdXNpb24gcXVlcmllcyB0byB3b3JrLgorICAgICAgICByZXF1aXJlZEV4
dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iX3MpOworICAg
IH0KICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIEV4dGVu
c2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKLQogICAgIGlmICghbmVlZHNF
QUdMT25NYWMoKSkgewotICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHJlcXVp
cmVkRXh0ZW5zaW9uc1tdID0gewotICAgICAgICAgICAgIkdMX0FOR0xFX3RleHR1cmVfcmVjdGFu
Z2xlIiwgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAgICAgICAgICAiR0xf
RVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiwgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3Vy
ZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocmVxdWlyZWRFeHRlbnNpb25zKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMocmVxdWlyZWRFeHRlbnNpb25z
W2ldKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0
ZW5zaW9uLiAlcyIsIHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KKyAgICAgICAg
cmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3Mp
OworICAgICAgICAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJm
YWNlLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9m
b3JtYXRfQkdSQTg4ODgiX3MpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBleHRlbnNp
b25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRFeHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0
ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJl
cXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0
ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRl
bnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7
CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
Ci0KICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUND
QVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBzdGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8v
IHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3JtU2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0
byBDYXRhbHlzdCB0b28uCkBAIC0zMzEsMTMgKzMzOSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJp
YnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0g
ICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExheWVyCisgICAgaWYgKHN3YXBDaGFpbikKKyAgICAgICAg
bV9zd2FwQ2hhaW4gPSBzd2FwQ2hhaW47CisgICAgZWxzZSB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVy
IGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBj
b250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIFtt
X3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CiAjZW5kaWYKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fc3dhcENoYWluID0gJlttX3dlYkdMTGF5ZXIg
c3dhcENoYWluXTsKKyAgICB9CiAKICAgICAvLyBDcmVhdGUgdGhlIHRleHR1cmUgdGhhdCB3aWxs
IGJlIHVzZWQgZm9yIHRoZSBmcmFtZWJ1ZmZlci4KICAgICBHTGVudW0gdGV4dHVyZVRhcmdldCA9
IElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKTsKQEAgLTQwNiwxMyArNDE4LDEyIEBAIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAgICAgICBpZiAo
bV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pCiAgICAgICAgICAgICBnbDo6RGVsZXRlRnJhbWVi
dWZmZXJzKDEsICZtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZCTyk7CiAgICAgfQotICAgIGlmICht
X2Rpc3BsYXlCdWZmZXJQYnVmZmVyKQorICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKSB7
CiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIpOwotICAgIGlmIChtX3dlYkdMTGF5ZXIpIHsKLSAgICAgICAgYXV0byByZWN5Y2xl
ZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgICAgIGF1dG8gcmVj
eWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgICAgICBpZiAo
cmVjeWNsZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1f
ZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxlKTsKLSAgICAgICAgYXV0byBjb250ZW50
c0hhbmRsZSA9IFttX3dlYkdMTGF5ZXIgZGV0YWNoQ2xpZW50XTsKKyAgICAgICAgYXV0byBjb250
ZW50c0hhbmRsZSA9IG1fc3dhcENoYWluLT5kZXRhY2hDbGllbnQoKTsKICAgICAgICAgaWYgKGNv
bnRlbnRzSGFuZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9i
aiwgY29udGVudHNIYW5kbGUpOwogICAgIH0KQEAgLTU3NSwxMSArNTg2LDE2IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAgICAg
Ly8gUmVzZXQgdGhlIGZ1dHVyZSByZWN5Y2xlZCBidWZmZXIgbm93LCBiZWNhdXNlIGl0IG1vc3Qg
bGlrZWx5IHdpbGwgbm90IGJlIHJldXNhYmxlIGF0IHRoZSB0aW1lIGl0IHdpbGwgYmUgcmV1c2Vk
LgotICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJd
OworICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigp
OwogICAgIGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgIEVHTF9EZXN0cm95U3Vy
ZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7CiAgICAgcmVjeWNsZWRC
dWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgIHJldHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5
QnVmZmVyQmFja2luZygpOworfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxv
Y2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCit7CisgICAgQVNTRVJUKCFnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAgYXV0byBiYWNraW5nID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2Vi
Q29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02MzcsNyArNjUzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKICAgICAvLyBmb3IgT3BlbkdMIHRv
IGRlY2lkZSB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheSAob25saW5lL29mZmxp
bmUpLgogICAgIC8vIE9wZW5HTCB3aWxsIHRoZW4gY29uc2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRl
cmVycywgYXMgb2ZmbGluZSwgd2hpY2ggbWVhbnMKICAgICAvLyBhbGwgb2ZmbGluZSByZW5kZXJl
cnMgbmVlZCB0byBiZSBjb25zaWRlcmVkIHdoZW4gZmluZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAg
ICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZG93U2VydmVy
IGNvbm5lY3Rpb24sIGFuZAorICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3Rp
bGwgYmUgYSBXaW5kd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKICAgICAvLyBtX2Rpc3BsYXlNYXNr
IHdpbGwgbm90IGJlIHNldCBpbiB0aGlzIGNhc2UuCiAgICAgaWYgKHByaW1hcnlPcGVuR0xEaXNw
bGF5TWFzaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY4MywxMCArNjk5LDEwIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAvLyBU
aGUgSU9TdXJmYWNlIHdpbGwgYmUgdXNlZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwg
c28gZmx1c2ggR0wgY29tbWFuZHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3lj
bGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3lj
bGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKIAogICAgIEVHTF9SZWxl
YXNlVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyLCBFR0xfQkFD
S19CVUZGRVIpOwotICAgIFttX3dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVu
dHM6IHtXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVm
ZmVyfV07CisgICAgbV9zd2FwQ2hhaW4tPnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZl
ckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIH0pOwogICAgIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKIAogICAgIGJvb2wgaGFzTmV3QmFja2luZyA9IGZh
bHNlOwpAQCAtNzAwLDcgKzcxNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBy
ZXBhcmVGb3JEaXNwbGF5KCkKIAogICAgIC8vIEVycm9yIHdpbGwgYmUgaGFuZGxlZCBieSBuZXh0
IGNhbGwgdG8gbWFrZUNvbnRleHRDdXJyZW50KCkgd2hpY2ggd2lsbCBub3RpY2UgbGFjayBvZiBk
aXNwbGF5IGJ1ZmZlci4KICAgICBpZiAoIWhhc05ld0JhY2tpbmcpCi0gICAgICAgIHJlc2hhcGVE
aXNwbGF5QnVmZmVyQmFja2luZygpOworICAgICAgICBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVm
ZmVyQmFja2luZygpOwogCiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGM0MTQwMTViN2IwZjM0YmIyOGJlMzQ1NTA5Yzc0MjllMzFkYWEzYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisK
KyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisjaW1wb3J0
ICJXZWJHTExheWVyLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2Vi
R0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVs
UmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFd
KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdM
IExheWVyIl07CisjZW5kaWYKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKwor
UGxhdGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7Cit9CisKKyNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCitHcmFwaGljc0NvbnRleHRHTENW
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6YXNDVigpCit7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisjZW5kaWYKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4mIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVN3YXBDaGFpbigp
Cit7CisgICAgcmV0dXJuIFttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKK30KKworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLmgKaW5kZXggMTRiMDFlNzA1ZjIwNTMwMWM3Yzk3Y2Y2NmU3MWEwOGJiZjQxZTcwNS4uN2Zl
ODhhMmZmNGNlMGY1NTlkNTlkYzFjZDk1MmEzYTdlYTg4MDk2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaApAQCAtMjMsNTIg
KzIzLDIyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIklPU3VyZmFjZS5oIgor
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8d3Rm
L05ha2VkUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBXZWJHTExheWVyQnVm
ZmVyIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAv
LyBUaGUgYWN0dWFsIGNvbnRlbnRzLgotICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8g
Q2xpZW50IHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KLX07
Ci19Ci0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKIC8vIEEgbGF5ZXIg
Y2xhc3MgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJp
bmcgc3dhcAogLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KLS8vIFRoZSBsYXllciB3aWxsIG93biB0
aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgotLy8gVGhlIGNsaWVudCBtYXkgYXR0
YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFk
YXRhCi0vLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2
ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKLS8vIGJlIGFibGUgdG8gb2J0YWlu
IHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KLS8vIEV4YW1wbGUgdXNlIG9mIHRoZSBt
ZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhp
cyB3YXkKLS8vIHdoZW4gdGhlIFdlYkdMTGF5ZXIgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2Ug
ZGlzcGxheSwgdGhlIGNsaWVudCBjYW4gY29udGludWUgdXNpbmcKLS8vIHRoZSBleGlzdGluZyBi
aW5kaW5nIG9idGFpbmVkIHRocm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgogQGludGVy
ZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0
aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNP
cGFxdWU7CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZToo
Q0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKLS8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhh
bmRsZSBvZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgbWF5IHJlY2ll
dmUgYmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNh
c2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRoZQotLy8gdGltZSBvZiB0aGUgY2FsbC4KLS8vIFJldHVy
bnMgZWl0aGVyOgotLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1p
dHRlZC4KLS8vIC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFk
YXRhIGhhbmRsZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKLS8vICAgYnV0
IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KLS8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgot
LSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcilyZWN5Y2xlQnVmZmVyOwotCi0vLyBQcmVwYXJl
cyB0aGUgbGF5ZXIgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVu
dCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhl
IGBidWZmZXJgLgotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29y
ZTo6V2ViR0xMYXllckJ1ZmZlcilidWZmZXI7Ci0KLS8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5k
IHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KLS8v
IFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZm
ZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCi0vLyB0aGlzLgotLSAodm9p
ZCopZGV0YWNoQ2xpZW50OworLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4mKSBzd2FwQ2hhaW47CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KaW5kZXggYzhmNGU3OWY3MzEy
ZWFhNmFiMDQ0NjgwODNlYThkMGM4YmVmYTNiYy4uMzg1OTdlNGE4ZjYzM2E1ZWU1ZGI3NDkzMzAy
MmRjMjM3ZmU3ZTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLm1tCkBAIC0zMiwxMyArMzIsMzkgQEAKICNpbXBvcnQgIkdy
YXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgorCitjbGFzcyBXZWJHTExheWVyU3dhcENoYWluIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJHTExheWVyU3dhcENoYWluKFdlYkdMTGF5ZXIq
IGxheWVyKSAgOiBtX2xheWVyKGxheWVyKSB7IH07CisgICAgfldlYkdMTGF5ZXJTd2FwQ2hhaW4o
KSBvdmVycmlkZSA9IGRlZmF1bHQ7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgb3ZlcnJpZGU7
CisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgeworICAgICAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIu
c3VyZmFjZS0+aXNJblVzZSgpKQorICAgICAgICAgICAgICAgIG1fc3BhcmVCdWZmZXIuc3VyZmFj
ZS5yZXNldCgpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9zcGFyZUJ1ZmZlcik7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdm9pZCogZGV0YWNoQ2xp
ZW50KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJm
YWNlKTsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gbV9kaXNwbGF5QnVmZmVyLmhhbmRsZTsKKyAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheVN1cmZhY2UoKSB7
IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZS5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBC
dWZmZXIgbV9kaXNwbGF5QnVmZmVyOworICAgIEJ1ZmZlciBtX3NwYXJlQnVmZmVyOworICAgIFdl
YkdMTGF5ZXIqIGNvbnN0IG1fbGF5ZXI7Cit9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXll
ciB7Ci0gICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfY29udGVudHNCdWZmZXI7Ci0gICAg
V2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfc3BhcmVCdWZmZXI7Ci0KICAgICBCT09MIF9wcmVw
YXJlZEZvckRpc3BsYXk7CisgICAgT3B0aW9uYWw8V2ViR0xMYXllclN3YXBDaGFpbj4gX3N3YXBD
aGFpbjsKIH0KIAogLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQ
aXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCkBAIC00Nyw2ICs3
Myw3IEBACiAgICAgc2VsZi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7CiAgICAg
c2VsZi5jb250ZW50c09wYXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwogICAgIHNlbGYuY29udGVudHNT
Y2FsZSA9IGRldmljZVBpeGVsUmF0aW87CisgICAgX3N3YXBDaGFpbi5lbXBsYWNlKHNlbGYpOwog
ICAgIHJldHVybiBzZWxmOwogfQogCkBAIC03MywzMCArMTAwLDIxIEBACiAgICAgVU5VU0VEX1BB
UkFNKGNvbG9yU3BhY2UpOwogICAgIHJldHVybiBudWxscHRyOwogfQotCi0tIChXZWJDb3JlOjpX
ZWJHTExheWVyQnVmZmVyKSByZWN5Y2xlQnVmZmVyCistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbgogewotICAgIGlmIChfc3BhcmVCdWZm
ZXIuc3VyZmFjZSkgewotICAgICAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2Uo
KSkKLSAgICAgICAgICAgIF9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7Ci0gICAgICAgIHJl
dHVybiBXVEZNb3ZlKF9zcGFyZUJ1ZmZlcik7Ci0gICAgfQotICAgIHJldHVybiB7IH07CisgICAg
cmV0dXJuIF9zd2FwQ2hhaW4udmFsdWUoKTsKIH0KIAotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxh
eVdpdGhDb250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgYnVmZmVyCistICh2b2lk
KXByZXBhcmVGb3JEaXNwbGF5CiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7
Ci0gICAgX3NwYXJlQnVmZmVyID0gV1RGTW92ZShfY29udGVudHNCdWZmZXIpOwotICAgIF9jb250
ZW50c0J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXld
OwogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBZRVM7CiB9CiAKIC0gKHZvaWQpZGlzcGxheQog
ewotICAgIGlmIChfY29udGVudHNCdWZmZXIuc3VyZmFjZSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5
KSB7Ci0gICAgICAgIHNlbGYuY29udGVudHMgPSBfY29udGVudHNCdWZmZXIuc3VyZmFjZS0+YXNM
YXllckNvbnRlbnRzKCk7CisgICAgaWYgKF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCkgJiYg
X3ByZXBhcmVkRm9yRGlzcGxheSkgeworICAgICAgICBzZWxmLmNvbnRlbnRzID0gX3N3YXBDaGFp
bi0+ZGlzcGxheVN1cmZhY2UoKS0+YXNMYXllckNvbnRlbnRzKCk7CiAgICAgICAgIFtzZWxmIHJl
bG9hZFZhbHVlRm9yS2V5UGF0aDpAImNvbnRlbnRzIl07CiAgICAgfQogICAgIGF1dG8gbGF5ZXIg
PSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2Jy
aWRnZSB2b2lkKilzZWxmKTsKQEAgLTEwNiwxMyArMTI0LDE0IEBACiAgICAgX3ByZXBhcmVkRm9y
RGlzcGxheSA9IE5POwogfQogCi0tICh2b2lkKikgZGV0YWNoQ2xpZW50CitAZW5kCisKK3ZvaWQg
V2ViR0xMYXllclN3YXBDaGFpbjo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQogewotICAgIEFTU0VS
VCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIHZvaWQqIHJlc3VsdCA9IF9jb250ZW50c0J1
ZmZlci5oYW5kbGU7Ci0gICAgX2NvbnRlbnRzQnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAg
bV9zcGFyZUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlC
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgW21fbGF5ZXIgcHJlcGFyZUZvckRpc3BsYXld
OwogfQotQGVuZAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4NTUyZjFlNDZhMWQz
NzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIuLjk5YWQ5MTY1MjU5MTg3M2UwZTgzZmU4Nzg5MjVlY2Ey
MzNhMWExYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCiAjaW1w
b3J0ICJTb3VyY2VHcmFwaGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0Lmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDdlYzgxY2Y0YWU1NzcyY2FlOTcyODhiYzgw
ZTM2NTY0NmQ2MjdjN2IuLmFkZDVmMzUyYWU0ZGU2YjZkNWRjMTkxZTY3M2I1YWFmYTU2ZGU5NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEV4dGVuc2lv
bnNHTE9wZW5HTDo6RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBj
b250ZXh0LCBib29sIHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNpb25zR0xPcGVuR0wo
KSA9IGRlZmF1bHQ7CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
cihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRz
dFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1h
c2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRG
cmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJh
bWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uCiAgICAgOjpn
bEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGJ1ZnMpCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzcsNyArMjM3LDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHMKICNlbmRpZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgRwogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQor
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApp
bmRleCA0OTYyODljZWEwZTZhMDlkNmRiNzMxZjg2OGI1NDk5M2E0NDQ0OWE4Li40NzUwMjI2ZWNl
Y2VmNDQzOTZlOTkzODY3NmNiNjM5YmU4MzQzN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
CkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVu
R0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZvaWQgYmxpdEZyYW1l
YnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxv
bmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxv
bmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
d2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAKICAgICBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
ZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKQEAgLTUyLDkg
KzUyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzdXBwb3J0c0V4dGVu
c2lvbihjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCA0M2I1MTYxZmJhNzc4ZjhmYjQzODRiMWJjMmRiMzhlY2Y2
YzQ4M2ViLi5iNzg5NjBjYjQ4MmU0ZWYyYWI5OGU0MDM5MmE2MzViYTdmZmI3YmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMzY2LDExICszNjYsNiBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKEdDR0xlbnVtLCBHQ0dMcwogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWks
IEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICos
IEdDR0xzaXplaSAqLCB2b2lkICosIGJvb2wpCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmgKaW5kZXggYmZlNDUyMTU0M2ZmNGIyNzIxMzdmMzQ0Y2VlNGEyMmQ4ZmIyOGM2
NC4uNmEzYTM5ZmUzYTFiYTViZDI1OTc3MTU4OTQ3NTYxY2NhZDVhZDQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtOTMsNyArOTMsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVp
ICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5
OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMzLi5lMWU0M2JmNTM5Mjg4NWEyNGZiYjMzY2IyNmI1
ZjZlNDkxZmJlMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwx
MiArMTAwLDEyIEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXIobG9uZyAvKiBzcmNYMCAqLywgbG9uZyAv
KiBzcmNZMCAqLywgbG9uZyAvKiBzcmNYMSAqLywgbG9uZyAvKiBzcmNZMSAqLywgbG9uZyAvKiBk
c3RYMCAqLywgbG9uZyAvKiBkc3RZMCAqLywgbG9uZyAvKiBkc3RYMSAqLywgbG9uZyAvKiBkc3RZ
MSAqLywgdW5zaWduZWQgbG9uZyAvKiBtYXNrICovLCB1bnNpZ25lZCBsb25nIC8qIGZpbHRlciAq
LykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xp
bnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQs
IEdDR0xpbnQsIEdDR0xiaXRmaWVsZCwgR0NHTGVudW0pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpn
ZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTAogICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKSB7CiAg
ICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHCiAgICAgbV9nbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI3Nyw3
ICsyNzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LAogICAgIG1fZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQq
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAg
aWYgKCFtX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuaAppbmRleCAwMTdhNDViNzM5OGQwOTkyZWQxNDc2N2YwNzY3ZTA0YjQ2NDE2Mjgz
Li41Yzc2MDM3ZmE3YmM2ZThlZWUzZTY3M2Y5OWE3ZGZjMmY3OGZiNGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRl
bnNpb24zRCBtZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJy
aWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KSBvdmVycmlkZTsKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CkBAIC04
Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFQgUm9idXN0
bmVzcyAtIHJlc2V0CiAgICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYzI1NWIwYzEyZjRmY2Jm
YTQ2ZGIwMmQ1NWM4MGI0Y2I3N2QxN2I3MC4uMTAzNTY4OGQxY2JlOWI4MGQzOTEyMjQ3OGJlZGQ4
ZDk4ZjY1NDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTU4LDYg
KzU4LDkgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNf
Q0xBU1MgV2ViR0xMYXllcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworfQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQog
CiAjaWYgVVNFKE5JQ09TSUEpCkBAIC04Niw3ICs4OSw3IEBAIHR5cGVkZWYgV1RGOjpIYXNoTWFw
PENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5h
bCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBE
ZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKTsKQEAgLTk0LDYgKzk3LDggQEAgcHVibGljOgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4g
Y3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KTsKKyAg
ICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluKik7CisKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHRPYmo7
IH0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fdGV4dHVyZTsgfQogICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0
KCkpOyB9CkBAIC0xOTEsNyArMTk2LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0QWN0aXZlQXR0
cmliSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJ
bmZvJik7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSBmaW5hbDsKICAgICBib29sIGdldEFjdGl2
ZVVuaWZvcm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFj
dGl2ZUluZm8mKTsKLSAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1H
TE9iamVjdCogc2hhZGVycykgZmluYWw7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291
bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpOwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKICAgICB2
b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFs
dWUpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKQEAgLTIxOSw4ICsyMjQsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgdm9pZCBnZXRVbmlm
b3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwotICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZp
bmFsOwogICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOwpAQCAtMjM2LDcgKzIzOSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsK
ICAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRz
KSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIHZvaWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1w
ZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKQEAgLTMxNywxMiArMzIxLDEwIEBA
IHB1YmxpYzoKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lk
KiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAjZW5kaWYK
ICAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVt
IHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZz
ZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKIAotICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgs
IEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwotICAgIEdDR0xib29sZWFuIHVubWFwQnVmZmVy
KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQg
c3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xp
bnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNr
LCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0
IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOwpAQCAtMzg0LDcg
KzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmlu
YWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZvaWQgZ2V0
UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdD
R0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKQEAgLTM5Myw4ICszOTUsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCBwYXJhbSkgZmluYWw7CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQq
IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKIAogICAgIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24s
IEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CiAgICAgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xz
eW5jKSBmaW5hbDsKQEAgLTQwMyw3ICs0MDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0U3lu
YyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7
CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgogICAgIC8vIEZJWE1FIC0gdGhpcyBjYW4gYmUgaW1w
bGVtZW50ZWQgYXQgdGhlIFdlYkdMIGxldmVsIGlmIHdlIHNpZ25hbCB0aGUgV2ViR0xTeW5jIG9i
amVjdC4KLSAgICB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5j
aShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlVHJhbnNm
b3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CkBAIC00MjAsNyArNDIyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogICAgIC8vIGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4g
dXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KICAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVu
aWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHVuaWZvcm1OYW1lcykgZmluYWw7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpIGZpbmFsOworICAg
IFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CiAKICAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CiAg
ICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyCkBAIC00MjksMTEgKzQzMSw2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCi0jaWYgIVVTRShBTkdMRSkKLSAgICB2b2lkIHJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KTsKLSNlbmRpZgotCiAgICAg
Ly8gSGVscGVyIG1ldGhvZHMuCiAKICAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWdu
ZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50
U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CkBAIC01MTUsNyArNTEyLDExIEBA
IHB1YmxpYzoKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250
ZXh0ID0gbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qID0gbnVs
bHB0cik7CisjZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9m
ZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRy
KTsKKyNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkg
cG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBi
eSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1
YWxseSBjYWxsIE9wZW5HTC4KQEAgLTUyOCw2ICs1MjksOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIAorICAgIHZvaWQgcmVh
ZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSog
cm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwor
CiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJhdGlvbiBsZWF2ZSB0aGUg
R1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwog
CkBAIC01NDgsMTAgKzU1MSwxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAgYm9vbCByZXNoYXBlRGlz
cGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZm
ZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
KiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKKyAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gYSBpbWFnZSBidWZmZXIuIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTc5IC4KICAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
R0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3ZWRm
MWY0ZTY4ODEzZjZiOS4uNjI5ODAzODhiNjUyNDc5Y2NiNDMzMWMyNWZmZWViYjY2YzZjYjU0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTQzMSw3
ICs0MzEsNyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRl
bnNpb25zKCkKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgYXV0byBhdHRycyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KLSAg
ICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEp
OworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
ZGF0YS5kYXRhKTsKICAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQo
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGJjNDRj
ZDU3Nzg4NjcyMDM5YWVhNGY1OTk5NmU0ZDk0ZTFjMWEwZmUuLjdiMmVhMDRhMjA5OTU2NWM3OTBl
YTU3YzY2N2IwZDljNjBhZjU1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcApAQCAtMjAyOSwyMiArMjAyOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvCiAgICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVk
TmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUs
IHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0
ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlLmRh
dGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIyNzgsMTkgKzIyNjIsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEcKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJ
bnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lv
bnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50
KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewotICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZp
c29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4
LCBkaXZpc29yKTsKIH0KIAogI2lmIEhBVkUoT1BFTkdMXzQpICYmIEVOQUJMRShXRUJHTDIpCkBA
IC0yMzM1LDQyICsyMzE5LDI1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0ciwKIH0KICNlbmRpZgog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBH
Q0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0J5dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShk
c3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
bGVuZ3RoKTsKLX0KLQogI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCi12
b2lkKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxk
IGFjY2VzcykKLXsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiA6OmdsTWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZz
ZXQsIGxlbmd0aCwgYWNjZXNzKTsKLX0KLQotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkKLXsKLSAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gR0xfRkFMU0U7Ci0KLSAgICByZXR1cm4gOjpn
bFVubWFwQnVmZmVyKHRhcmdldCk7Ci19CisgICAgICAgIHJldHVybjsKKyAgICBHQ0dMdm9pZCog
cHRyID0gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIEdy
YXBoaWNzQ29udGV4dEdMOjpNQVBfUkVBRF9CSVQpOworICAgIGlmICghcHRyKQorICAgICAgICBy
ZXR1cm47CisgICAgbWVtY3B5KGRhdGEuZGF0YSwgcHRyLCBkYXRhLmJ1ZlNpemUpOworICAgIGlm
ICghOjpnbFVubWFwQnVmZmVyKHRhcmdldCkpCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CiAjZWxzZQotdm9pZCogR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtLCBHQ0dMaW50cHRyLCBH
Q0dMc2l6ZWlwdHIsIEdDR0xiaXRmaWVsZCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVT
RURfUEFSQU0oZGF0YSk7CisgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfT1BFUkFUSU9OKTsKKyNlbmRpZgogfQogCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0pCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotI2VuZGlmCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsaXRGcmFtZWJ1
ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewpAQCAtMjcx
MiwxMSArMjY3OSwxMSBAQCBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYQogICAgIHJldHVybiAwOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHZhbHVlKQorR0NH
THVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5
KTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjc1NiwxOCArMjcyMywxOSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbgogICAgIFVOVVNFRF9QQVJBTShwYXJhbSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsK
ICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAg
cmV0dXJuIDAuZjsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKKwog
ewogICAgIFVOVVNFRF9QQVJBTShzYW1wbGVyKTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwot
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIEdDR0xzeW5jIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MpCkBAIC0yODA2LDEyICsyNzc0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5jIHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywg
R0NHTGluCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVvdXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lKQogewogICAg
IFVOVVNFRF9QQVJBTShzeW5jKTsKICAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNF
RF9QQVJBTShidWZTaXplKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAw
OwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpCkBAIC0yODkxLDIxICsyODU4LDIzIEBAIFZlY3RvcjxHQ0dMdWlu
dD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xP
YmplY3QgcHJvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotI2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhB
VkUoT1BFTkdMX0VTXzMpCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
CitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5p
Zm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1
bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKKyNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZF
KE9QRU5HTF9FU18zKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAg
ICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCks
IHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFtcy5kYXRhKCkpOworICAgIDo6Z2xH
ZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9y
bUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEoKSk7CisjZW5kaWYKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiBHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVu
aWZvcm1CbG9ja05hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNF
RF9QQVJBTSh1bmlmb3JtQmxvY2tOYW1lKTsKLQogICAgIHJldHVybiAwOwogfQogCkBAIC0yOTEz
LDcgKzI4ODIsNiBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncgogewogICAgIFVOVVNFRF9QQVJB
TShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwotCiAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKQEAgLTI5MjMsMjcgKzI4OTEsOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTAogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0JpbmRpbmcpOwogfQotI2Vsc2UKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mLCBHQ0dMZW51bSwgVmVjdG9yPEdDR0xpbnQ+JikKLXsK
LX0KLQotR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0lu
ZGV4KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCkKLXsKLSAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmlu
ZGluZyhQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCwgR0NHTHVpbnQpCi17Ci19Ci0jZW5kaWYK
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkKIHsKICAgICBVTlVTRURfUEFSQU0oeCk7CiAgICAgVU5VU0VEX1BB
UkFNKHkpOwpAQCAtMjk1NCwxOCArMjkwMyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKLXsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
ZHN0T2Zmc2V0KTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCmluZGV4IDIzZDc0ZmE4MGQ3MDc5MWJlNjAwZGY1OGU3NTYxNzMzOTZhYTU1MDUuLmEyMjE4
MGI0YmY0Y2UxMGYxODUyMTI0MDExZTg4YTQ0MjczYjQxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsCiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KIAotICAgIDo6Z2xSZWFkUGl4ZWxzKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgOjpnbFJlYWRQaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmRhdGEpOwogCiAgICAg
aWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3RkJPID09IG1fbXVs
dGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1fbXVsdGlzYW1wbGVGQk8pOwpAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgICAg
ICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4K
ICAgICAgICAgICAgIGlmIChzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyKSB7CiAgICAg
ICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBz
YW1wbGVDb3VudCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHdpZHRoLCBoZWlnaHQpOwogICAg
ICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwpCiAgICAgICAgICAgICAgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9B
VFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkKQEAgLTEzOCwxMiArMTM4LDEyIEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNp
emUpCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVz
LnN0ZW5jaWwpIHsKICAgICAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xf
UkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgICAgICAgICBleHRl
bnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNh
bXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
R0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgsIHdpZHRoLCBo
ZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBt
X3N0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
YXR0cmlidXRlcy5kZXB0aCkgewogICAgICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1
ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotICAgICAgICAgICAgICAgICAg
ICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZG
RVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09NUE9ORU5U
MTYsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRF
UkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKaW5kZXggODhlMTUxYjEyMjI0ZmViY2M4OTNiNTNkNjg1ZTNlYzFi
MDEwY2Q0NS4uMmI4OTZhOWFiYWMwZTEwNzRiMWUxMzUxOTMyMDQ5YWJlNzY4MDNjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9G
SUxFUwogICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIEdQVVBy
b2Nlc3MvR1BVUHJvY2VzcwogCisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTAogICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZAogCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcgpA
QCAtMjIxLDYgKzIyMiw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKKyAgICBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAKICAgICBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlNTFjYWVkMjFlMTg2Y2YyYTE3M2NiOGEz
MzMxMmJlMGIzMDRiYjAwLi5iY2UzMzhjNGI0NGYwNzllODBlZDBkNDZkNjcyMjkzYzIyN2U1OWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBA
IC0yMCw2ICsyMCw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvbW9k
ZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMv
Y29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0x
MzQsNiArMTM1LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlODhiMmMyMWZh
NzE3Yzc3ZDIzMDJjYjUxOGJhNGFkM2VkZTI1NzRhLi4xNWYzYzIzY2NlMDVlMmQzMmU1ZWViNjky
NDBjNjU0OGE5YmQxNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKQEAgLTE3OCw2ICsxNzgsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCA2ODE0ODU1ZmY5ZDIzYWYwYTc3ZTVmZGE2ZGZkMmZkNTUwOTc2
ZjY5Li4zNTNkNzZlZDFhNWYyMDllZWEzZjQ3ODMxZTA2Y2E4ZGQyMTA0M2NjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzEsNiArMTcxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMg
PSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCisJV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBcCiAJV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlIFwKQEAgLTIyNyw2ICsyMjgsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9
IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAogCUdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kIFwKKwlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFwK
IAlHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eSBcCiAJR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCiAJR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCAwZTJlODgzMmIxZTIwZjFlMGYzMTlkNWQ5ZjI1ZDcyY2UxYmY3M2FkLi40
NGI5ZjYzZTE0YzUwYjc0MTk5M2Q2ZjM1YTVhOTVmNWFmZDgwYTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC02NCw2ICs2NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAtMjkwLDYgKzI5NCwyMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIEVOQUJM
RShXRUJHTCkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
Cit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVu
c3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKKyAgICAgICAgcmV0dXJu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0g
bV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9CisjZW5kaWYKIHZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAg
ICAgZ3B1UHJvY2VzcygpLm5vd1BsYXlpbmdNYW5hZ2VyKCkuY2xlYXJOb3dQbGF5aW5nSW5mb0Ns
aWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNjc4ZGJjNGU1ZDM2NWZhZDI4ZThiNDgyNzg2Mzc2
MmEzYzQ1NzhkLi41YWVkZmJiNGQyY2FjN2I3NjYwZmYwNzM2MDlkMzc3YzYwMTU4NGI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRD
RW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CkBAIC0zOSw2ICs0MCwxMSBAQAog
I2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisj
aWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7CkBAIC01NCw2ICs2
MCw3IEBAIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsK
IGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFz
cyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lv
bkNvbmZpZ3VyYXRpb247CkBAIC0xMTksNiArMTI2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
IAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworI2VuZGlmCisKICAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8o
KTsKICAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCkBAIC0xODAsNyArMTkyLDEwIEBA
IHByaXZhdGU6CiAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1h
cDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcDsKLQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB1c2luZyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOworI2VuZGlm
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCA1MTk0ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1MmMzNjVlYjMyNzFm
MzQ0Li45ZDU0ZTE2NDU5NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5YzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3Jl
YXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tl
bmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcikKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRl
eHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6Okdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisj
ZW5kaWYKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxh
eWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgwNGQxZmE5OTk0ZDVmZmYzMTQz
NjRkNTliZWY5NWViNDllYTk5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTAsMCArMSwx
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4g
Y29udGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpKQorICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
ID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9j
b250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250
ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmlu
ZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25z
R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVz
dGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAg
ICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVz
c2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdAoreworICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9
CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0
dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmZvcmNlQ29udGV4dExvc3QoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgp
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAg
IGlmICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwg
aGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKworI2lm
ICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVG
b3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9Cisj
ZW5kaWYKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChTdHJpbmcmJiBleHRlbnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFy
a0NvbnRleHRDaGFuZ2VkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RiMGNmNTE4YWJmOWJiMjVhYjMzNmRk
ZGUwMzk5OTI1YWEwNWYzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lv
bnNHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0Ep
CituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8v
IEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdl
cyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
CisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyCisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKworICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdDsKKworcHJvdGVjdGVkOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4pOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRl
cy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
ZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBm
aW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAv
LyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBv
c2l0ZSgpIGZpbmFsOworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZv
aWQgcmVjeWNsZUNvbnRleHQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5n
ZWROb3RpZmljYXRpb24oKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVk
LgorICAgIHZvaWQgcmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAg
dm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmKTsKKyAgICB2b2lkIG5vdGlmeU1h
cmtDb250ZXh0Q2hhbmdlZCgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRS
aWdodCYmKT4mJikgPSAwOworI2Vsc2UKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Cisg
ICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYTcxNTI0ZDQwODE5YmEw
MzEwY2I0MjAxMzYwNzU2Njg3ODY4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwyOTQgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxh
eSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYK
KyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgp
IFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3Ry
aW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisKKyAg
ICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHZvaWQgU3ludGhlc2l6ZUdM
RXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJv
ckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEFjdGl2
ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgdm9pZCBCaW5kQXR0cmliTG9jYXRpb24o
dWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyBuYW1lKQorICAgIHZvaWQgQmlu
ZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kRnJh
bWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFJl
bmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5k
VGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCbGVuZENv
bG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAg
IHZvaWQgQmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgQmxlbmRFcXVhdGlv
blNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAgICB2b2lk
IEJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHZvaWQg
QmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQz
Ml90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB2b2lkIENoZWNrRnJhbWVidWZm
ZXJTdGF0dXModWludDMyX3QgdGFyZ2V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xlYXJDb2xv
cihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2
b2lkIENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwoaW50MzJf
dCBzKQorICAgIHZvaWQgQ29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUs
IGJvb2wgYWxwaGEpCisgICAgdm9pZCBDb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBDb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdl
MkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlRnJhbWVidWZmZXIoKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVQcm9ncmFtKCkgLT4gKHVp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUmVuZGVyYnVm
ZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3Jl
YXRlU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIENyZWF0ZVRleHR1cmUoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBDdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQg
RGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVGcmFtZWJ1ZmZlcih1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVT
aGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVRleHR1cmUodWludDMyX3QgYXJn
MCkKKyAgICB2b2lkIERlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHZvaWQgRGVwdGhNYXNr
KGJvb2wgZmxhZykKKyAgICB2b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIp
CisgICAgdm9pZCBEZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAg
ICB2b2lkIERpc2FibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRHJhd0FycmF5cyh1aW50MzJfdCBtb2Rl
LCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIEVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIEZpbmlzaCgpCisgICAgdm9pZCBG
bHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMy
X3QgYXJnMykKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBp
bnQzMl90IGxldmVsKQorICAgIHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9p
ZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRBY3RpdmVBdHRy
aWIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVl
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBp
bmRleCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBdHRyaWJMb2NhdGlvbih1
aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0U3RyaW5nKHVpbnQzMl90IG5hbWUpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVl
U2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkg
LT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWlu
dDMyX3QgaW5kZXgpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYodWludDMy
X3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9v
bD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJf
dCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVySW5m
b0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVp
bnQzMl90IHByZWNpc2lvblR5cGUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+
IHJhbmdlLCBHQ0dMaW50IHByZWNpc2lvbikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRl
clNvdXJjZSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQ
YXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQzMl90IHBy
b2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9y
bWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6
ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24s
IHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFy
ZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5h
bWUpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEhpbnQo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgSXNCdWZmZXIodWludDMy
X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0Vu
YWJsZWQodWludDMyX3QgY2FwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIElzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1Byb2dyYW0odWludDMyX3QgYXJnMCkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1aW50MzJf
dCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU2hh
ZGVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgSXNUZXh0dXJlKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgTGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgdm9pZCBMaW5rUHJv
Z3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgUGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUs
IGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxv
YXQgdW5pdHMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHZv
aWQgU2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQpCisgICAgdm9pZCBTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nIGFyZzEp
CisgICAgdm9pZCBTdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMy
X3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWlu
dDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2ls
TWFzayh1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJf
dCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQzMl90IGZhaWws
IHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFN0ZW5jaWxPcFNlcGFy
YXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJf
dCB6cGFzcykKKyAgICB2b2lkIFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBVbmlmb3JtMWYo
aW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB2b2lkIFVuaWZvcm0xZnYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0x
aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgdm9pZCBVbmlmb3JtMWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVu
aWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVW5p
Zm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQor
ICAgIHZvaWQgVW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5
KQorICAgIHZvaWQgVW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0zZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zaShp
bnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZv
aWQgVW5pZm9ybTNpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFVuaWZvcm00ZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm00aShp
bnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90
IHcpCisgICAgdm9pZCBVbmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQor
ICAgIHZvaWQgVW5pZm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVbmlmb3JtTWF0
cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAg
ICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmVydGV4QXR0
cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIxZnYo
dWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZhbHVlcykKKyAg
ICB2b2lkIFZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQor
ICAgIHZvaWQgVmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCAyPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBp
bmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNm
dih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4gdmFsdWVzKQor
ICAgIHZvaWQgVmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlw
ZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHZvaWQgVmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0LCB1aW50NjRf
dCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlckRhdGExKHVpbnQzMl90IHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhLCB1aW50MzJfdCB1c2FnZSkK
KyAgICB2b2lkIEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIFJlYWRuUGl4ZWxz
MChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZWFk
blBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRl
eFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENv
bXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VT
aXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwg
aW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJ
bnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRp
dmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBDcmVhdGVW
ZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIERlbGV0ZVZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFy
cmF5KHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5QnVmZmVy
U3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0
X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAg
dm9pZCBHZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1
aW50NjRfdCBkYXRhU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQz
Ml90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBp
bnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNr
LCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMy
X3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgdm9pZCBJbnZhbGlkYXRlRnJhbWVidWZmZXIo
dWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50
cykKKyAgICB2b2lkIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBSZWFkQnVmZmVy
KHVpbnQzMl90IHNyYykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTJEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UzRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgdm9pZCBUZXhJ
bWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQz
Ml90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlM0QxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJf
dCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1
YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFn
ZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCkKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNp
emUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNz
ZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3Qg
Zm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVp
bnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIEdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybTF1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB2b2lkIFVuaWZvcm0ydWkoaW50MzJf
dCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHZvaWQgVW5pZm9ybTN1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYy
KQorICAgIHZvaWQgVW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWlu
dDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB2b2lkIFVuaWZvcm0xdWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm00dWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0
cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEp
CisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3Jt
TWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgzZnYoaW50MzJf
dCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRh
dGEpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0
aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4gdmFsdWVz
KQorICAgIHZvaWQgVmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwg
dWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJp
Ykk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiB2
YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50
MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgRHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3Rh
cnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgRHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gYnVmcykKKyAgICB2b2lkIENsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90
IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVzKQorICAgIHZv
aWQgQ2xlYXJCdWZmZXJ1aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVy
ZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAg
dm9pZCBDcmVhdGVRdWVyeSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIERlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgSXNRdWVyeSh1
aW50MzJfdCBxdWVyeSkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBCZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBF
bmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFt
ZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRl
U2FtcGxlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IERlbGV0ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIElzU2FtcGxlcih1aW50
MzJfdCBzYW1wbGVyKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEJpbmRTYW1wbGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBT
YW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJf
dCBwYXJhbSkKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVp
bnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJm
KHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1w
bGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBGZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncykg
LT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTeW5jKHVp
bnQ2NF90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
RGVsZXRlU3luYyh1aW50NjRfdCBhcmcwKQorICAgIHZvaWQgQ2xpZW50V2FpdFN5bmModWludDY0
X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAs
IHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgdm9pZCBHZXRTeW5jaSh1aW50
NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KHVpbnQzMl90IGlkKQorICAgIHZvaWQgSXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJhbnNmb3Jt
RmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJlZ2luVHJh
bnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVuZFRyYW5z
Zm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMy
X3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUp
CisgICAgdm9pZCBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3JhbSwg
dWludDMyX3QgaW5kZXgpIC0+IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
byBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisg
ICAgdm9pZCBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBCaW5kQnVmZmVyQmFz
ZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAg
dm9pZCBCaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBH
ZXRVbmlmb3JtSW5kaWNlcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB1bmlmb3Jt
TmFtZXMpIC0+IChWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90
PiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUpIC0+IChWZWN0b3I8aW50MzJfdD4gcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50
MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZv
cm1CbG9ja0JpbmRpbmcpCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFt
cykgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAo
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMy
X3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGlu
dDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+
IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5
T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdy
b3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQor
ICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVm
cykKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9p
ZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlz
b3IpCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmZmU4YzFmYzdhZmExNzJmMWJiOWM3MzQy
Njc1YzVkZmU2ZTE3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApA
QCAtMCwwICsxLDExODMgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIHNob3VsZCBi
ZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisgICAgdm9pZCBzZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpOworICAgIH0KKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9y
KHVpbnQzMl90IGVycm9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihlcnJvcik7CisgICAgfQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBhY3RpdmVU
ZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmFjdGl2
ZVRleHR1cmUodGV4dHVyZSk7CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hhZGVyKHVpbnQzMl90
IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YXR0
YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgfQorICAgIHZvaWQgYmluZEF0dHJpYkxv
Y2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcmJiBuYW1lKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5h
bWUpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYXJn
MSk7CisgICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRh
cmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4dHVyZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRDb2xvcihmbG9h
dCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAg
fQorICAgIHZvaWQgYmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1
YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2Rl
QWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50
MzJfdCBkZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmMoc2ZhY3Rv
ciwgZGZhY3Rvcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qg
c3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RB
bHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdC
LCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckNvbG9y
KGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsK
KyAgICB9CisgICAgdm9pZCBjbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN0ZW5j
aWwoaW50MzJfdCBzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwocyk7
CisgICAgfQorICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJs
dWUsIGJvb2wgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGdyZWVu
KSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4oYWxwaGEpKTsKKyAgICB9CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgY29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdl
MkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
QnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVGcmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFkZXIodWludDMyX3Qg
YXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKGFyZzApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlVGV4dHVyZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBj
dWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jdWxsRmFj
ZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2
b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVBy
b2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJv
Z3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodWludDMyX3Qg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKGFyZzAp
OworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVUZXh0dXJlKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1aW50MzJfdCBmdW5j
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CisgICAgfQorICAg
IHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVw
dGhNYXNrKHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAgfQorICAgIHZvaWQg
ZGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0YWNoU2hh
ZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRldGFjaFNoYWRlcihhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlKHVp
bnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOworICAg
IH0KKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsK
KyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3Qs
IGludDMyX3QgY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9k
ZSwgZmlyc3QsIGNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHModWludDMyX3Qg
bW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0
YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGVuYWJsZSh1
aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOworICAg
IH0KKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7Cisg
ICAgfQorICAgIHZvaWQgZmluaXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZmluaXNo
KCk7CisgICAgfQorICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5m
bHVzaCgpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0
LCB1aW50MzJfdCBhcmczKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyk7
CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGlu
dDMyX3QgbGV2ZWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7CisgICAgfQor
ICAgIHZvaWQgZnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmZyb250RmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1aW50
MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRh
cmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBp
bmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1l
dGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmcodWludDMyX3QgbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGbG9hdHYo
dWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90
Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZh
bHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2
YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGlu
dCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdl
dEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2
NChwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1aW50MzJfdCBw
bmFtZSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHBu
YW1lLCBpbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0
X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbWkodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJv
Z3JhbSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVl
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMYm9vbGVhbiwg
ND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9j
b250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KHZh
bHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEVycm9yKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRFcnJvcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHBu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFNoYWRlcmkoYXJnMCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xvZyh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJnMCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWludDMyX3Qg
cHJlY2lzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3QsIDI+LCBpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIHN0ZDo6YXJyYXk8R0NHTGludCwgMj4gcmFuZ2UgeyB9OworICAgICAgICBHQ0dMaW50IHBy
ZWNpc2lvbiA9IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+KHJlaW50
ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNpemUoKSksIHByZWNp
c2lvbik7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKGFyZzApOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFy
YW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xm
bG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1l
dGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQz
Ml90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4o
dmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYodWludDMyX3QgcHJv
Z3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0
PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odmFs
dWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybXVp
dih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50LCA0PiB2
YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRl
eHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDx1aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFZlcnRl
eEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTHNpemVpcHRyIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAgfQorICAgIHZv
aWQgaXNCdWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNCdWZmZXIoYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNhcCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+aXNFbmFibGVkKGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNGcmFtZWJ1ZmZl
cih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGFyZzApOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5pc1Byb2dyYW0oYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19j
YXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNSZW5kZXJidWZmZXIo
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIoYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgaXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xi
b29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+aXNTaGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJlKHVpbnQzMl90
IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBsaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGlu
ZVdpZHRoKGFyZzApOworICAgIH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzAp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIHBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAgIH0KKyAg
ICB2b2lkIHBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKKyAgICB9Cisg
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGZsb2F0IHZh
bHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlQ292ZXJh
Z2UodmFsdWUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsKKyAgICB9CisgICAg
dm9pZCBzY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3Ry
aW5nJiYgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFyZzAs
IGFyZzEpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMy
X3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2ls
RnVuYyhmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJh
dGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1h
c2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwg
ZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFzayh1aW50MzJfdCBt
YXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsKKyAgICB9
CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1h
c2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwg
bWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90
IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNp
bE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJh
dGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90
IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNl
LCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmYodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0K
KyAgICB2b2lkIHRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwg
aW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmKGludDMyX3Qg
bG9jYXRpb24sIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihs
b2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0x
aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZs
b2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbiwgeCwg
eSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm0yZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xm
bG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmko
aW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYg
dikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNm
KGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2KGludDMyX3Qg
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24s
IHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0
IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwg
eiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm00ZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
NGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50
MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgs
IHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm00aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9z
ZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVl
LmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgz
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGludDMyX3Qg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZh
bHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZhbGlk
YXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52YWxp
ZGF0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYodWludDMy
X3QgaW5kZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YjFmKGluZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodWludDMyX3Qg
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0
IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5
KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQg
dmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHop
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6
KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQg
dmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4
LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3Qg
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBz
aXplLCB1aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50
ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihub3JtYWxpemVk
KSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCB2aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRo
LCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwg
dWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJ1ZmZlckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzEpLCB1c2Fn
ZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpLCB1c2Fn
ZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2
NF90IG9mZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dM
aW50cHRyPihvZmZzZXQpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFk
blBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRh
KHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5y
ZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCByZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZz
ZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
aW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3Vi
SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQs
IGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90
IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBp
eGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSks
IHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9Cisg
ICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxH
Q0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50
MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGlu
dDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5z
dGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMy
X3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2
b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3Ip
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRp
dmlzb3IpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShh
cmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmlu
ZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1
aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9m
ZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0
cj4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zm
c2V0LCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVi
dWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJf
dCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50
MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5ibGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEs
IGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2
b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0
YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0KKyAgICB2b2lkIGlu
dmFsaWRhdGVGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+JiYgYXR0YWNobWVudHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFs
aWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xlbnVtKj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cywgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSks
IGF0dGFjaG1lbnRzLnNpemUoKSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2
b2lkIHJlYWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5y
ZWFkQnVmZmVyKHNyYyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9y
YWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50ZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVs
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5k
YXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDEodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0Qw
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90
IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlM0Qo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3Qg
eW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhT
dWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3Jk
ZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGlt
YWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJf
dCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0
LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lk
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
eG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qg
aW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nh
c3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhZ0RhdGFMb2Nh
dGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpKGludDMyX3QgbG9j
YXRpb24sIHVpbnQzMl90IHYwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVp
KGxvY2F0aW9uLCB2MCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQzMl90IGxvY2F0
aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEs
IHYyKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQz
Ml90IHYwLCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtMXVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbiwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aXYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtNHVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRy
YW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRh
KCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdmVy
dGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0
aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdih1
aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiYmIHZhbHVlcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdD
R0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRhKCkp
KSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWlu
dDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90
IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdS
YW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQs
IGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291
bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIGRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7Cisg
ICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJh
d2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSwg
dmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KHVpbnQzMl90
IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVm
ZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dWludCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
Y2xlYXJCdWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90
IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3Rl
bmNpbCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9y
bUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAgfQorICAgIHZvaWQg
aXNRdWVyeSh1aW50MzJfdCBxdWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNRdWVyeShxdWVyeSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwgcXVl
cnkpOworICAgIH0KKyAgICB2b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRR
dWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRm
b3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWkodWludDMy
X3QgcXVlcnksIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1aW50IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnlPYmpl
Y3R1aShxdWVyeSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jcmVhdGVTYW1wbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgfQor
ICAgIHZvaWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
U2FtcGxlcihzYW1wbGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8
Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcih1aW50MzJf
dCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5k
U2FtcGxlcih1bml0LCBzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
aSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBh
cmFtKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVy
LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZmVu
Y2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTHN5bmMgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5mZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihyZXR1
cm5WYWx1ZSkpKTsKKyAgICB9CisgICAgdm9pZCBpc1N5bmModWludDY0X3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+aXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0
PGludHB0cl90PihhcmcwKSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5bmModWludDY0
X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3luYyhyZWludGVycHJl
dF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBjbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWlu
dDY0X3QgdGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRTeW5jKHJlaW50ZXJw
cmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBz
dGF0aWNfY2FzdDxHQ0dMdWludDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1aW50NjRfdCBhcmcw
LCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT53YWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0aW1lb3V0KSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRl
bGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgfQorICAgIHZvaWQgaXNUcmFu
c2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUcmFuc2Zvcm1G
ZWVkYmFjayhpZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJp
bmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblRy
YW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7CisgICAgfQor
ICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2YXJ5aW5ncywg
dWludDMyX3QgYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4
LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcmcyKSk7CisgICAg
fQorICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCByZXN1bWVU
cmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlc3VtZVRyYW5z
Zm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOworICAgIH0K
KyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZl
ciwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVp
cHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGljZXModWludDMyX3Qg
cHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPHVpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFt
ZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9y
PHVpbnQzMl90PiYmIHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3Qg
cHJvZ3JhbSwgU3RyaW5nJiYgdW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJ
bmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMy
X3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1C
bG9ja0JpbmRpbmcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRp
bmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAg
IH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1z
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0
PiBwYXJhbXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5k
ZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRh
KCkpLCBwYXJhbXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAg
ICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90
IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQz
Ml90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1
aW50MzJfdCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5ibGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAs
IGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5
T0VTKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VT
KGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlP
RVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2Vy
RVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3Jv
dXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBw
b3BHcm91cE1hcmtlckVYVCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5wb3BHcm91cE1hcmtlckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhU
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2Rl
LCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWlu
dDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zmc2V0KSwg
cHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWlu
dDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3Ip
OworICAgIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU3YzQwYzk4NWNiN2QyNzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFBM
QVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4K
KyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
K3B1YmxpYzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0OworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpIGZpbmFsOworCisgICAgLy8gR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgorICAgIEJ1ZmZlciBy
ZWN5Y2xlQnVmZmVyKCkgZmluYWw7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgZmluYWw7Cisg
ICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgZmluYWw7Citwcml2YXRlOgorICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOworfTsKKwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGF0dHJpYnV0
ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkKK3sKK30K
KworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpyZWN5Y2xlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gV1RGTW92
ZShtX2Rpc3BsYXlCdWZmZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fZGlzcGxheUJ1ZmZl
ci5zdXJmYWNlKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Cit9CisK
K3ZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRldGFjaENsaWVudCgpCit7Cisg
ICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9kaXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3Bs
YXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOworICAg
IGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOwor
ICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIGlmIChkaXNwbGF5QnVmZmVyKQorICAg
ICAgICBzZW5kUmlnaHQgPSBkaXNwbGF5QnVmZmVyLT5jcmVhdGVTZW5kUmlnaHQoKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCkpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1t
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCmluZGV4IGI3
YmI2M2IyOWFkODAyMTcyZGYyN2ExMjg5NWJiMTk5OGZhNGI2YjAuLjI0YzQzN2NhYWU3ZjhmOWE5
YWZmOTI3MDNlZmNmOWRhMDMxZTRjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWFjL0dQVVByb2Nlc3NNYWMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIlNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQ
SS5oPgotI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lz
ZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsOSArNDQsMTIgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB2b2lkIEdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGls
aWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIDAKICAgICAvLyBIYXZpbmcgYSB3aW5k
b3cgc2VydmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNzIHdvdWxkIHJlc3VsdCBpbiBzcGlu
IGxvZ3MgKDxyZGFyOi8vcHJvYmxlbS8xMzIzOTExOT4pLgotICAgIE9TU3RhdHVzIGVycm9yID0g
U2V0QXBwbGljYXRpb25Jc0RhZW1vbih0cnVlKTsKLSAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBl
cnJvciA9PSBub0Vycik7CisgICAgYXV0byByZXR2YWwgPSBDR1NTZXREZW55V2luZG93U2VydmVy
Q29ubmVjdGlvbnModHJ1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmV0dmFsID09IGtDR0Vycm9y
U3VjY2Vzcyk7CisgICAgQ0dTU2h1dGRvd25TZXJ2ZXJDb25uZWN0aW9ucygpOworI2VuZGlmCiAj
ZW5kaWYKIAogICAgIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vz
cy5zYi5pbgppbmRleCBkYjA2ZTUzNGY3ZjUxZDJlYmQwMzgyNWY1ODI0NWY4NDk2ZjhiMTc5Li5l
ZDEwMGIzNmVkNmY0NmQ0YWFmNjM1NDQ3Nzg4MmFiNzkzYTExYmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BV
UHJvY2Vzcy5zYi5pbgpAQCAtMjA3LDYgKzIwNyw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXkFBUEwsKERpc3BsYXlQaXBlfE9wZW5DTGRpc2FibGVkfElPR3JhcGhpY3NfTEVSKHxf
UmVnVGFnXzF8X1JlZ1RhZ18wfF9CdXN5XzIpfGFsaWFzLXBvbGljeXxib290LWRpc3BsYXl8ZGlz
cGxheS1hbGlhc3xtdXgtc3dpdGNoLXN0YXRlfG5kcnYtZGV2fHByaW1hcnktZGlzcGxheXxzbG90
LW5hbWUpIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeQVRZLChjYml0c3xmYl8obGlu
ZWJ5dGVzfG9mZnNldHxzaXplKXxpbnRyZXYpIikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxE
ZXZpY2VOYW1lIikgOzsgTmVlZGVkIGJ5IE1ldGFsIGNvbXBpbGVycworICAgIChpb2tpdC1wcm9w
ZXJ0eSAiQVRZLEVGSURpc3BsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEZhbWlseU5h
bWUiKSA7OyBEaXR0bwogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVZDU3VwcG9ydGVkIikKICAgICAo
aW9raXQtcHJvcGVydHkgIkJhY2tsaWdodEhhbmRsZSIpCkBAIC0yMTcsNiArMjE4LDkgQEAKICAg
ICAoaW9raXQtcHJvcGVydHkgIkNhcHNMb2NrRGVsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
Q2FzZVNlbnNpdGl2ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJDb25maWdTdGF0ZSIpCisgICAg
KGlva2l0LXByb3BlcnR5ICJEUExhbmVzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua0Jp
dCIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtSYXRlIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIkRlc2NyaXB0aW9uIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRldmVsb3BtZW50IikKICAg
ICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeRGV2aWNlKCBDaGFyYWN0ZXJpc3RpY3N8RXFJRCki
KQpAQCAtMjI5LDEwICsyMzMsMTcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIkZhbWlseSBJRCIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JjZVN1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJGb3JtYXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVyRW5hYmxlZCIp
CisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlclN0YXJ0ZWQiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiR1BVQ29uZmlndXJhdGlvblZhcmlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkg
IkdQVURDQ0Rpc3BsYXlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURlYnVnTnVsbENs
aWVudE1hc2siKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR3B1RGVidWdQb2xpY3kiKQorICAgIChp
b2tpdC1wcm9wZXJ0eSAiR1BVUmF3Q291bnRlckJ1bmRsZU5hbWUiKQorICAgIChpb2tpdC1wcm9w
ZXJ0eSAiR1BVUmF3Q291bnRlclBsdWdpbkNsYXNzTmFtZSIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJIRVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkhJRFBvaW50ZXJBY2NlbGVy
YXRpb25UeXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkh3Q3R4Q2FjaGVVcGRhdGUiKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0FjY2VsKERpc3BsYXlQaXBlQ2FwYWJpbGl0aWVz
fEluZGV4fFR5cGVzfFJldmlzaW9uKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklP
KENsYXNzfE1hdGNoQ2F0ZWdvcnl8TmFtZU1hdGNoKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJl
Z2V4ICMiXklPQXVkaW9Db250cm9sKENoYW5uZWxJRHxJRHxTdWJUeXBlfFVzYWdlfFZhbHVlKSIp
CkBAIC0yODIsNiArMjkzLDggQEAKICAgICAoaW9raXQtcHJvcGVydHkgIklPUGFyZW50TWF0Y2gi
KQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT1BDSSgoQ2xhc3N8UHJpbWFyeXxQcm9w
ZXJ0eXwpTWF0Y2h8RXhwcmVzcyhDYXBhYmlsaXRpZXN8TGluayhTdGF0dXN8Q2FwYWJpbGl0aWVz
KSl8TVNJTW9kZXxSZXNvdXJjZWR8VHVubmVsbGVkKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJ
T1BNSXNQb3dlck1hbmFnZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QZXJzb25hbGl0eVB1
Ymxpc2hlciIpCisKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9QbGF0Zm9ybShTZXJp
YWxOdW1iZXJ8VVVJRCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qb3dlck1hbmFnZW1lbnQi
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qcm9iZVNjb3JlIikKQEAgLTMxNyw2ICszMzAsNyBA
QAogICAgIChpb2tpdC1wcm9wZXJ0eSAiUHJvdG9jb2wgQ2hhcmFjdGVyaXN0aWNzIikKICAgICAo
aW9raXQtcHJvcGVydHkgIlJlbW92YWJsZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMi
XlJlc2V0T24oTG9ja3xVbmxvY2spTXMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiU1dJUF9wcm9w
ZXJ0aWVzIikKICAgICAoaW9raXQtcHJvcGVydHkgIlNhZmVFamVjdFJlcXVlc3RlZCIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJTYW1wbGVSYXRlcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTZXJp
YWwgTnVtYmVyIikKQEAgLTMzOCw2ICszNTIsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXR0
YWNoZWQtZ3B1LWNvbnRyb2wtcGF0aCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXmF1
ZGlvLShjb2RlYy1pbmZvfGRldmljZS1tdmFsdWV8ZGV2aWNlLW52YWx1ZXxzZWxlY3RvcikiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiYXYtc2lnbmFsLXR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiYmFja2xpZ2h0LVBXTS1mcmVxIikKICAgICAoaW9raXQtcHJvcGVydHkgImJjZFZlcnNpb24i
KQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oYm9hcmR8ZGV2aWNlfHJldmlzaW9ufHN1
YnN5c3RlbXx2ZW5kb3IpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImJvb3QtZ2FtbWEtcmVz
dG9yZWQiKQpAQCAtMzUwLDYgKzM2NSwxMSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiY29ubmVj
dG9yLXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oZGV2aWNlfHJldmlzaW9u
fHN1YnN5c3RlbS12ZW5kb3J8dG91Y2gtc2l6ZSktaWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAi
ZGV2aWNlX3R5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1icGMiKQorICAgIChp
b2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1jb25uZWN0LWZsYWdzIikKKyAgICAoaW9raXQtcHJvcGVy
dHkgImRpc3BsYXktbGluay1jb21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJk
aXNwbGF5LXBpeGVsLWNvbXBvbmVudC1iaXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3Bs
YXktdHlwZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJkcG0iKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiZXJyb3JkYiIpIDs7IE5lZWRlZCBmb3IgT3BlbkdMIG9uIG9sZGVyIGhhcmR3YXJlCiAgICAg
KGlva2l0LXByb3BlcnR5ICJmaWxldmF1bHQtaW1hZ2UiKSA7OyBOZWVkZWQgYnkgTGF1bmNoU2Vy
dmljZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCmluZGV4IGU2YTE4ZGRhNmUwOTJmZGIxODA0NDZlNGYz
YTA4M2NmNTNjMjc2MTkuLjM3OTI4ZTFiODNkNGU1MjQ0NTNhOGQyN2NjM2I4NzkwMWIyNDlhM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgVVNFKEFVRElPX1NFU1NJT04pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90
ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1Qcm94eS5jcHAKaW5kZXggZDliZjUyMjcyYzM3MjkxNTc1YjViMzkzMjYyZTc3MjEzYjkz
MGRkNC4uOGYwMTE5ZWRmZTFkNmU5MzI0MzAwNWIzNDQxMjViMjRlYWI5MWUzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyUHJveHkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTliZGI4Njdh
Yjg2YjhjNTdmMzZkZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVkNjZkZGY5
NWYyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMZWdhY3lD
RE1Qcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcwZmE1ZGU0
ZmFkZTE1MTQ0NDIxMTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4Yjgy
NWM2ZTQ1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4MDIzMTkwNGY4ZWYwZWFhOTM2
MjI5YWZhOTc1OTguLmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4OWI4MDNmNmFiZjQxYzhlOWVk
ZGU0MTQyNzY5MzI4MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1YWEzZDU0ODA2ZjcyYzdlZGMw
Y2IxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywxNSArMjcsMTYgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5LmNwcAppbmRleCBhZjdiZTUxMmVhYzJkMWFlNjU0YWUwOWNiNTJk
OTRiMzliMmM2MDc3Li40OTliZDYxYzJmNzgyMjIzZmEzOGZjOTdiMTgyZmE2ZDJiOTM4MWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVNZWRpYVNvdXJjZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJj
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eS5oCmluZGV4IDU5NjhjN2JiZDE4OWNkNDc5ZWY0YWVhYjRkNDQ5OTUzM2ZkM2Q2NWIu
LmZlNTQ0ZDU1NTE5MWU1NTZlMmQ3ZTIzMzk0NzVhMDJmYzI5ZGNmZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
aApAQCAtMzksNyArMzksNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggNmI4YmY4YjU3Y2MwYzhkOWQ1NDExZTk2NTIxYjQ1
YTk0YThlM2IzMi4uOTljYTZhNDE0ZWI1MDgzOTBjNzI4MzNhNjQ1MWU3MzAzOTQyMWQ3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIK
KwogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
QEAgLTM4LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNs
YXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5LmgKaW5kZXggMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYxODNhYmQwZTc0NWI4
MzUzMy4uODQzYmIwNmY3YjU2YzZlM2NmYmVlNzlhN2U0MjgxZWZlZThmOWE3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkuaApAQCAtMjgsMTQgKzI4LDE1IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmOGFiYzFmNDA1ZmMxNDY5NDc1
YjRkOTBiYWQzZDUzY2EwZjgwMTRlLi42MWM0NzA4YWU5NmRiY2FhNTY5ODA5ZWUxOTk1YmU4MTZh
OTFmZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShMSUJX
RUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbXBv
cnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJS
VENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDc4OGM1ZjAwYzAyZjRmMTQ4
ZmVlY2NkMzhkMTA2ODE4YjBkN2U5NjEuLjNhYjRlNGIxY2YxYzE0MTIzMGMxM2U0NTc2YzVlZDZl
NmVmYzJlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBI
QVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtMzYsNyArMzcsNiBAQAog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9D
b2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQppbmRleCA3YTYzMzYzNDdj
MDA3ZTk3YjczYjU0Mzc3NDkxNjgzOGQ2NDAzN2RhLi4xYWE1M2NjMmZiNzdiYWY5ZTMyNjUwNzIx
MDgwOWZkNzZjZmJiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2Nv
YS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtMjYsNyArMjYsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIu
aCIKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW1w
b3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBmNmVkODExZjUzNDJmZTQ4NTU1MTc2Zjg5
ZDUxNDU3NTYyYzY2NTg1Li4wYmNkNTY3M2M5MzQ2YWRhMTFkNjU2YzNhZGQ1MWJlNGVkYmMyNzMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCkBA
IC0zOSwxMCArNDAsNiBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb247CiBP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfSAvLyBuYW1lc3BhY2UgSVBDCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC0x
MTIsNCArMTA5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5j
cHAKaW5kZXggZGRiZTRlZWRkNDQxZGY4N2M1NWFkMzMwZjA0MmNjZGNmYWRmYjkwYi4uNjUxZmYy
NTRmOTA1YzE2YTkwY2I0ODJjOTc3M2Q0YWM3NDI5NGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5o
IgogI2luY2x1ZGUgIkRvd25sb2FkTW9uaXRvci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlN
ZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmgKaW5kZXggMzhhZjM1MDgwNzQ2NDI5M2I5NWZmYWYwNTlmZGVjMzY5MDE3NzI3
NC4uOTNmMDNhODI1NWYxYWU3MTczODNjMDAyOTBhMjRmOTFjYTdjNjU4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNp
bmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKQEAgLTQ0LDEwICs0NSw2IEBAIE9CSkNfQ0xBU1Mg
TlNQcm9ncmVzczsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlm
CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0MGYyN2MxNjA1
YzNjZDc0YmM2OTA3YjdkOTFiNDdiNzYyLi43MjZkZDk5MGJhZmQ0Mzk0YjVhZmMwMzJhMWNmMjBm
MTg0OWM0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1
MC4uOTgwYTA2Zjc4MzlkYmQ1ZTlmOWQ1MDQ1NDA5YTMzZDc3YjFjMDM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
TWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC00OSw3ICs1MCw2IEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlv
bjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNw
cAppbmRleCA0NDliMTNkOGUwN2IyY2QwNDJjNGJhMzYzNmFiNzkzZDM3YjFjM2Y0Li5jNzc4ODgx
MWYwMzJkNThmOGI1Mjc3MzZlMWQyMjc4NDEwZjkxM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFu
bmVsLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMzE5NjQxOTBkMTQxZDU0OWRhMGJh
ZjJkYzhiZjI5N2I0ZTU4MWU4OS4uMDQzNGJmODgwOWE3ZWIzZWNjMThlOGY2NTBjYzAyNzhhZTZl
YjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgpAQCAtNDAs
NyArNDEsNiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNz
IENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA1YjQ4OWNjNTM4ZjdjMDcxNTEwMTA2YzU4
ZjVjMDk0ZWM5YThlMWI4Li40OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2NjMzNlMzhjMTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJOZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVz
dEhlYWRlckZpZWxkUHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNTJlYzM5MjY5MDIxOGVkZTY2OGQ1NWU2Mzhk
OGUxNzUwMmZkNmVlNS4uNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5ZmIyMDZmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtRXJyb3IuaD4KQEAg
LTM3LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNz
IERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2NiZmYxMDg5Y2Mx
MDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLmQzN2Q3ODA2OTgzYmJhNTQ3Y2EwZjkyMzVlYjRi
ZjZiNzMxNTY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CkBAIC00Myw3ICs0NCw2IEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tl
dFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmlu
ZGV4IGRiNTc5NWRkMjE3ZjQ1YWQ1ZjY3ZTMwYjc5MWY5MmUyNzZjMDI5ODYuLjk2MWU0NjQ1OWJl
NzcxNzdlMjYwNWU3ZDg2NTJhZGE4MDIwOTdiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0zMSw5ICszMSw2IEBACiAjaW5jbHVkZSAiV2Vi
U29ja2V0VGFza1NvdXAuaCIKICNlbHNlCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCmluZGV4IGRh
YzY5MzUwN2ViM2VmY2VhNmQxMDk0ODAxYmMwMWIzNmZlMjYzOWQuLmU2ODI2ZTQ3ZTgzOTU5NDAy
OGFmOGY0YWVkMjM5MmI0YjA1ZDJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtMjcsMTUgKzI3LDEy
IEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzazsKIAotbmFt
ZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFz
a0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRU
YXNrQ29jb2EubW0KaW5kZXggODU1MzQ4NzQ0MDRjZTJiYWE0NGFlNjU2NTQ3ZDM3MjI1MzMyZWFi
OC4uOTBiYzQwOWJmZmI3MGEwZWU5ZTczNThiMzg2NzU5N2QyOWYyNGUwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tF
VCkKIAotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25D
b2NvYS5oIgogI2ltcG9ydCAiTmV0d29ya1NvY2tldENoYW5uZWwuaCIKICNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVUkxTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0NWZjNjY5ZDc2NmE3NjFj
NWQ3NzNkYzk1ZjA1NDFhMzhlMzZmOGUzLi5hM2U3MDE0YjVkOGVjMDk3MzhmZmE3ZDU2NjQ1NDUw
MTBmMDUzNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrU291cC5oIgogCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1NvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFz
a1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oCmluZGV4IGU0MjFiOWUxYzcxMzE4NDM0ZjY0ODdmNWZjYjVhNmE4N2JkNzM5MTkuLjA4
ODkyMzk1OWZlNDYwZmYyYmJhNGM4YzA4Mzk5ODA2NTdiZjM0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCkBAIC0y
NSwxNCArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU29j
a2V0Q2hhbm5lbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmgKaW5kZXggZTAwYTBjY2RmYTU4NzVjMDI4YzUwNTIzMTE0MTcyOGVlOTViNDM5Mi4uZTM4YmMx
YzYwYWY2ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC01Myw2ICs1NCw0
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1lbnRDb2RlciB7CiAg
ICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5
UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJy
YXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVu
Y2Uuc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICB9CisgICAgc3RhdGljIE9w
dGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
eworICAgICAgICBpZiAoIUV4dGVudCkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5j
ZVR5cGUoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKKyAgICAg
ICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRh
KSwgRXh0ZW50KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+
PiB7CisgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJy
YXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKKyAg
ICB7CisgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJl
ZmVyZW5jZS5zaXplKCkpKTsKKyAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXplKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSks
IGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQor
ICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHsKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIGlmICghc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUoKTsK
KyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhS
ZWZlcmVuY2Uoc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0
YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJh
eVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIHN0YXRpY19j
YXN0PHNpemVfdD4oc2l6ZSkpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25TZXQ8VD4mIG9wdGlvblNldCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZDMyYmI0NTdhNWI4ODVmM2Q1NjY4N2U3OWYxNWMzYTI2NzFiZTY0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaApAQCAtMCww
ICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bGltaXRz
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2lubGluZSBj
b25zdGV4cHIgc2l6ZV90IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50ID0gYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVu
Y2U7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlSZWZlcmVuY2U8VCwgYXJy
YXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PiB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2Uo
KSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAg
ICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBB
cnJheVJlZmVyZW5jZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCisg
ICAgICAgIDogbV9kYXRhKHZlY3Rvci5kYXRhKCkpCisgICAgICAgICwgbV9zaXplKHZlY3Rvci5z
aXplKCkpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX3NpemU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7Cisg
ICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0
b3I8VD4gcmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgbV9zaXplKTsKKwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBt
X2RhdGEgeyB9OworICAgIHNpemVfdCBtX3NpemUgeyB9OworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBFeHRlbnQ+CitjbGFzcyBBcnJheVJlZmVyZW5jZSB7CitwdWJsaWM6Cisg
ICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVyZW5jZShjb25z
dCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KKworICAg
IHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29u
c3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2
ZWN0b3IuZGF0YSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5zaXplKCkgPT0gRXh0
ZW50KTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIUV4dGVudDsgfQorCisgICAgY29uc3RleHByIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gRXh0ZW50OyB9CisKKyAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKKyAgICB7
CisgICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIGlmICghaXNFbXB0eSgpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIEV4dGVudCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFQqIG1fZGF0YSB7IH07Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitBcnJheVJlZmVy
ZW5jZShjb25zdCBXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBBcnJheVJlZmVy
ZW5jZTxUPjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgKaW5kZXggZWMzZDE0YWU4ZjNlYzI0NzA1NDc2M2NhZWU5MDljYzJjODc1ZjVk
OC4uYmJkN2FiY2I0Y2RjNjA0MzgyYjEwNjVlMzMyMzg0NDljNmFjNTk3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjI3LDEwICsyMjcsMTIgQEAgcHVibGlj
OgogICAgIHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7CiAK
ICAgICB2b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKTsK
LQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQgPSAwLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOyAvLyBUaHJlYWQtc2Fm
ZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsg
fSk7IC8vIFRocmVhZC1zYWZlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNl
dDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQg
b25seS4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGNoZWNrIHRoZSBTZW5kU3luY1Jlc3Vs
dCBmb3IgdHJ1ZS9mYWxzZSBpbiBjYXNlIHRoZXkgbmVlZCB0byBrbm93IGlmIHRoZSByZXN1bHQg
d2FzIHJlYWxseSByZWNlaXZlZC4KKyAgICAvLyBTeW5jIHNlbmRlcnMgc2hvdWxkIGhvbGQgb24g
dG8gdGhlIFNlbmRTeW5jUmVzdWx0IGluIGNhc2UgdGhleSByZWZlcmVuY2UgdGhlIGNvbnRlbnRz
IG9mIHRoZSByZXBseSB2aWEgRGF0YVJlZmVyZXJlbmNlIC8gQXJyYXlSZWZlcmVuY2UuCisgICAg
dXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj47CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+
IHdhaXRGb3JPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICAKICAgICAv
LyBUaHJlYWQtc2FmZS4KQEAgLTI0OSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYWlu
IHRocmVhZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAg
Ym9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRz
OjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3lu
YzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJ
bnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTU1MSw3ICs1NTMs
NyBAQCB2b2lkIG1vdmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYgYSwgc3RkOjp0dXBsZTxCLi4u
PiYgYikKICAgICBUdXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3RkOjp0dXBsZTxBLi4uPiwgc3Rk
Ojp0dXBsZTxCLi4uPj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwg
T3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpzZW5kU3luYyhU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU3MCwx
NSArNTcyLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICAvLyBOb3cgc2VuZCB0aGUg
bWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUo
ZW5jb2RlciksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgaWYgKCFyZXBseURlY29k
ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8v
IERlY29kZSB0aGUgcmVwbHkuCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVu
dHM+IHJlcGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7
CiAgICAgaWYgKCFyZXBseUFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIG1vdmVUdXBsZShXVEZNb3ZlKCpyZXBseUFyZ3VtZW50cyksIHJl
cGx5KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gcmVwbHlEZWNvZGVyOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9u
U2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjI1ZmRhN2JlZDJmZThjNDA0OWI1NTg3MDc5ZmQxZTE2MzU0ZjRmYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EYXRhUmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgot
Ci0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLQotbmFtZXNwYWNl
IElQQyB7Ci0KLXZvaWQgRGF0YVJlZmVyZW5jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheSgqdGhpcyk7
Ci19Ci0KLWJvb2wgRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlVmFy
aWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCmluZGV4IDM0
NTBjMzFiNzNkZGI2YWE1ZWRjZTJhZjgwMDI5ODg3Yzc5OGUyMDUuLmRiYjNkNjkyN2YzNDFjNWFh
OTNmYzEwNzNjYjA3NTZlM2NiYTM3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
YXRhUmVmZXJlbmNlLmgKQEAgLTI1LDU0ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgogCiBuYW1l
c3BhY2UgSVBDIHsKIAotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0gICAgCi1jbGFz
cyBEYXRhUmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICBEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0
OwotCi0gICAgRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkK
LSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIERhdGFSZWZl
cmVuY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQotICAg
ICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6
ZSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
bV9zaXplOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQot
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCAKLSAgICB7IAotICAgICAgICBpZiAoaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2Rh
dGE7IAotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25zdAotICAgIHsK
LSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCht
X2RhdGEsIG1fc2l6ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgRGF0YVJlZmVyZW5jZSYpOwotCi1wcml2YXRlOgotICAg
IGNvbnN0IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwotfTsKK3VzaW5nIERhdGFSZWZlcmVuY2UgPSBBcnJheVJlZmVyZW5jZTx1aW50OF90LCBh
cnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggNzhhNDYzOGViNzMwNWJmZDE5MTA4
NzA2OGQzMGJjZGI4ZGZlODJhZS4uMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJjNWFiOGJiYWRi
ZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAgLTE4NiwyMCAr
MTg2LDE1IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgRGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKK2NvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmRlY29kZUZpeGVkTGVu
Z3RoUmVmZXJlbmNlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQogewotICAgIHVpbnQ2
NF90IHNpemU7Ci0gICAgaWYgKCFkZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxpZ25tZW50LCBzaXpl
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhID0g
bV9idWZmZXJQb3M7CiAgICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKIAotICAgIGRhdGFSZWZlcmVu
Y2UgPSBEYXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBkYXRhOwogfQogCiBib29sIERlY29kZXI6OnJlbW92ZUF0dGFjaG1lbnQoQXR0YWNobWVu
dCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCBiNzJk
ZDhhY2UyNzczZGIzNTU5ZTM2NmRkOTUyNGYyMzQxZTU1ZTA2Li4zNDRjZTY4ODJmYzkwOTg0YjJm
YTU3YmY5YzQ4Yjk2NTBlMGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CkBAIC00MCw3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1jbGFzcyBEYXRhUmVmZXJl
bmNlOwogY2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSA6IHVpbnQ4X3Q7CkBAIC03OCw4ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXpl
X3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhlIGRhdGEgcmVm
ZXJlbmNlIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFy
Z3VtZW50RGVjb2RlciBvYmplY3QuCi0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZSYpOworICAgIC8vIFRoZSBkYXRh
IGluIHRoZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUg
bGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8gUmV0dXJucyBu
dWxscHRyIG9uIGZhaWx1cmUuCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0IHVpbnQ4X3Qq
IGRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGht
ZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKFQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRl
eCBmZDQwOTA3NzRiMmJjMmE3NjI5YjljMDJkYzU1NGM0Y2RjOThmNWNiLi5lODNhM2U0YWZmNDJh
NTc1NTA1ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KQEAgLTE0MSw3ICsxNDIsNyBAQCB2b2lkIEVuY29kZXI6OndyYXBGb3JUZXN0aW5n
KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKIAogICAgIG9yaWdpbmFsLT5zZXRT
aG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShTaG91bGREaXNwYXRj
aFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpOwogCi0gICAgZW5jb2RlVmFyaWFibGVMZW5n
dGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5i
dWZmZXJTaXplKCkpKTsKKyAgICAqdGhpcyA8PCBEYXRhUmVmZXJlbmNlKG9yaWdpbmFsLT5idWZm
ZXIoKSwgb3JpZ2luYWwtPmJ1ZmZlclNpemUoKSk7CiAKICAgICBWZWN0b3I8QXR0YWNobWVudD4g
YXR0YWNobWVudHMgPSBvcmlnaW5hbC0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgcmVzZXJ2
ZShhdHRhY2htZW50cy5zaXplKCkpOwpAQCAtMjE2LDEyICsyMTcsNiBAQCB2b2lkIEVuY29kZXI6
OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwg
c2l6ZV90IGFsaQogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVu
Y29kZXI6OmVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UpCi17Ci0gICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihkYXRh
UmVmZXJlbmNlLnNpemUoKSkpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIDEpOwotfQotCiB2b2lkIEVuY29kZXI6
OmFkZEF0dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0dGFjaG1lbnQpCiB7CiAgICAgbV9hdHRhY2ht
ZW50cy5hcHBlbmQoV1RGTW92ZShhdHRhY2htZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmgKaW5kZXggMGVjZjU0MWY3Nzg1ODUzNmYxZmNmYTgzNmI3NmYyNDgyZTRjOWExMS4u
ZWE2MTk2N2JlMWViY2JkOGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsK
IAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhf
dDsKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xhc3MgU2hvdWxk
RGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CkBAIC02Miw3ICs2MSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGVyPik7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwotICAgIHZvaWQgZW5jb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUgJiYgIXN0ZDo6
aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHZvaWQgZW5jb2RlKFQmJiB0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDdmZDE4
M2E1NmFlOThiMDY2NDVmZjc1MTQ4YWMyOTgzYzUyZTRhZWIuLjQxMjlkNGUyYjQ5ZDVjOGZjNDFh
MmQ2NTRhZGNkODllODZjNjM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CkBAIC05Niw3ICs5Nyw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0ZDo6
cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9OwogCi1j
bGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIHRl
bXBsYXRlPD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSY+IHsKICAgICB1c2luZyBUeXBlID0gRGF0YVJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCA0NmUyMWQ4ZDkzNmYyZDhiNTE2N2IyNDlm
ODgxMTE2ZmZlYjdkNGI5Li43NzQ2MWQ1NTViNzI5MmMyMGViZjUxNGEzMDJkMWRjNmU3NzcwMTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC01NCw5
ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZDxVPihtZXNzYWdl
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKICAgICB9CisgICAgdXNp
bmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHko
KSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAg
U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgc3Rh
dGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOwogCkBAIC02NCw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5
KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAg
IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRz
OjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpKTsK
IApAQCAtNzIsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSwgdHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5j
KFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCks
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RG
TW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNP
cHRpb25zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCmluZGV4IDdhM2NiMzM4NzYzNmRjYWZjZWFjZWFkOTFiODYzOWI3YmE3NjM2
YzYuLjUwMGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5o
IgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKQEAgLTQ4LDcg
KzQ5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhKSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwCmluZGV4IDJmNzI4NWFjMGI0YmQ2ZGUxMWRmZWI5ZmUzMjhmMDFjOTk5OTUw
YTAuLmU5NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKaW5kZXggODUyZWY0M2UwMDg2
MzFjOWZhZmE4MjMwYzkxOWMxN2E5ZDRhMjliNi4uMjE2MTEzOWMzMDE0ZjBlYWZiM2RjNDdjODVk
YTQxOTBhMmJhMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
aW5nUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdS
ZWZlcmVuY2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA4YjM3NDBmNGIxMDFhZDkwZjUwZWQ1N2M4NTBi
OTAzMGZjYzQzMGMyLi40YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTlBPYmplY3RQ
cm94eS5oIgogI2luY2x1ZGUgIk5QUmVtb3RlT2JqZWN0TWFwLmgiCiAjaW5jbHVkZSAiTlBSdW50
aW1lVXRpbGl0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggYWQ0ZmNkOWQ4Y2NmNDJmMTJlZTQ4OGUwMTM0NmM2
MTlhNzAxYjhkMi4uYzdhNzA1M2NiZDI2ZDIwNDU0YzA0MmM2YWNlMTZjYjUyNTMwZjQzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC0zNywxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKLW5hbWVzcGFjZSBJUEMg
ewotICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggY2EwYWUyODQxMWE4M2RlNGJmM2ZlMDhiMDEyZTQwNTU0OGQ4YjU3My4u
ODlmYjhhYmFmOWFlY2UwN2M2MzQ3MGRhM2RiODNjODgzMjZkZDNmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDMsNiArMjAzLDcgQEAgZGVmIGZvcndh
cmRfZGVjbGFyYXRpb25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5kX2FuZF90eXBlcyk6
CiAKIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0
dXJuIGZyb3plbnNldChbCisgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAn
TWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywK
QEAgLTIxNSw2ICsyMTYsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMnLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDMsNiArMjQ1
LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAg
ICAgJ1dlYktpdDo6RGlzcGxheUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93
bmxvYWRJRCcsCiAgICAgICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCisgICAg
ICAgICdXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9z
dGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQn
LApAQCAtNTMwLDYgKzUzMyw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRl
X3N0cmluZyk6CiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9u
U2V0Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCIn
XX0sCiAgICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdh
cmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAg
ICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpBcnJheVJl
ZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9j
b2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgfQogCiAgICAgbWF0
Y2ggPSByZS5tYXRjaCgnKD9QPHRlbXBsYXRlX25hbWU+Lis/KTwoP1A8cGFyYW1ldGVyX3N0cmlu
Zz4uKyk+JywgdGVtcGxhdGVfc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3Bw
CmluZGV4IDYxMzQzYmQ5NDEwNmI2ZTc4OWY4M2JjMjVkZTc5ZjdhNjA0MDkzY2MuLmM3ODIzMTZm
MzA1N2EzY2FmOWQzZTIwNzdjODEzMjU1M2U2OTc1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJRGF0YS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJBUElEYXRhLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
eGlsaWFyeVByb2Nlc3MuaAppbmRleCA3YmEyMDdhYmIwYWNjYzhhNTcwZjVjNjYzZjQ2Y2FhMjRh
ODI2ZDkxLi4zMWZkN2QwM2ZhZmUwMzk1ODc5NTJhNjM3OGQxYTljOGZmMmY3OTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNEYWVtb24oKTsKICAgICB2
b2lkIGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwogICAgIHZvaWQgc2V0UU9TKGludCBsYXRlbmN5
UU9TLCBpbnQgdGhyb3VnaHB1dFFPUyk7CiAjZW5kaWYKQEAgLTE4NCw0ICsxODMsMyBAQCBzdHJ1
Y3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggOWMyNmRiNGU5YTlmNmJhNzJlNDgyMGJiNDA2YzJjZmJkZTEx
M2U5Yi4uZGEzNzM0Yzg0ZDY1NGQ4ZDAzY2E3OTI1ZjdiZDc1OTkxM2JjMzRhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMjIxLDQg
KzMyMjEsODIgQEAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBXVEZNb3Zl
KCpyZXN1bHQpIH07CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJH
TCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0cmlidXRl
cy5hbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5jb2RlciA8
PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFudGlhbGlh
czsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOworICAgIGVu
Y29kZXIgPDwgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5jb2RlciA8
PCBhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5jb2RlciA8
PCBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMu
c2hhcmVSZXNvdXJjZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wyOworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8PCBhdHRy
aWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmluaXRp
YWxQb3dlclByZWZlcmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy54ckNvbXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3RlbmNp
bCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRy
aWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9y
bWFuY2VDYXZlYXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zaGFyZVJl
c291cmNlcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJp
YnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2Up
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCit2
b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZv
Lm5hbWU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2RlciA8PCBh
Y3RpdmVJbmZvLnNpemU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGFjdGl2ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5zaXplKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5mbzsKK30K
KworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1NWUyMTFlMTdj
NGJlZGVmMTcwNWQ2Li4xZGFlOTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2ZTlmYzYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzEs
NiArNzEsMTMgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJBcnJheVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
bmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIxMCwxMCBA
QCBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0aCA9IFZh
cmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlczsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0IENhY2hl
SW5mbzsKIHN0cnVjdCBSZWNvcmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlv
bj4gewogfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VC
R0wpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMg
T3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mKTsK
KyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewogCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsKK307Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUwODYzNjVkYmY3
N2ZhOThlNDFjMWM3NGEzZTdlMjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdiMDQ4YTNkZWM2
Y2Y4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxk
UmVuZGVyRE9NSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1lZGlhSW5H
UFVQcm9jZXNzOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRl
cldlYkdMSW5HUFVQcm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVW
UDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAgT3B0aW9uYWw8
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91
bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
I2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hv
dWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5h
YmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZDkxZTQ2
MDM4ZjMwOWI1MTMwYmZkZTU4ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1YmY0ZjkyY2Yw
NmZlNWUxMTIwNWE0YjUxMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJv
Y2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBm
YWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsK
KyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vz
cyB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBm
YWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0Fy
Z3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDliZDhhODE3NTQ5ZjU4ZmUzODNkNzI1ZGE2NjNmM2Jj
NTRjYTBkNzQuLjc3ZTliNGQ1Y2M3NTJmYmNkYjZiNjVmOWFkYzI2MDE5NTZjYTE0N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5o
IgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAu
Y3BwCmluZGV4IDFkODRlMmZlMjY4ZjM0NjBlYjI5NzVjNDJiYTk1ZDE0ZjFkMjM1Y2YuLmZhMjY4
ZDU4NGEwZmM4ZGY4N2EyMWZhNDU2MDc3YjhjNWQ0MmI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAt
ODEsNyArODEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENlcnRpZmljYXRlSQogICAgIC8vIEVuY29kZSBzdGFy
dGluZyBmcm9tIHRoZSByb290IGNlcnRpZmljYXRlLgogICAgIGZvciAoc2l6ZV90IGkgPSBjZXJ0
aWZpY2F0ZXNEYXRhTGlzdC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgR0J5dGVBcnJh
eSogY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdFtpIC0gMV0uZ2V0KCk7Ci0gICAg
ICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoSVBDOjpEYXRhUmVmZXJl
bmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKSk7CisgICAgICAgIGVuY29k
ZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+
bGVuKTsKICAgICB9CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihjZXJ0
aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2VydGlm
aWNhdGVJbmZvJiBjCiAgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlOwog
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjaGFpbkxlbmd0aDsgaSsrKSB7CiAgICAgICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7Ci0gICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjZXJ0aWZpY2F0ZURhdGFS
ZWZlcmVuY2UpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlRGF0YVJl
ZmVyZW5jZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgR0J5dGVBcnJh
eSogY2VydGlmaWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyhjZXJ0aWZpY2F0ZURh
dGFSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI3Nyw0ICsyNzcsMyBAQCBPcHRpb25hbDxTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+ICBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdQogI2VuZGlmCiAKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDkxN2YwMWJlMWM5ZjhjYWEy
YWJmN2YwZjg5MGY4OTVhM2YyZWY4Ni4uZjgzYTRjYWI5NWNhOGYwMTVjODk4NjVkN2ZmOTMwYWY1
MWU1ZjFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUu
Y3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCitHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyLmNwcApAQCAtMTM3LDcgKzEzOCw2IEBAIFBsYXRmb3JtL1NoYXJlZE1lbW9y
eS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIEBuby11bmlm
eQogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwIEBuby11bmlmeQotUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwIEBu
by11bmlmeQogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAgQG5v
LXVuaWZ5CkBAIC01NjgsNiArNTY4LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9B
dWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTY5MywzICs2OTUsNiBAQCBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5jcHAKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDRlYThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJkNmY5NzMuLjcx
ZmZjNWYyZTA0ZGVkMDVkZThmYWVhMmUwOWEwNDkyNjNhNjkxZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTU2LDYgKzU2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5jcHAKIAogR1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2Vydmlj
ZUVudHJ5UG9pbnQubW0KK0dQVVByb2Nlc3MvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVBy
b2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9T
b3VyY2VQcm92aWRlclByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCAyZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0
ZmVmNWY4MzkzNmIwZDNkLi43MzdiNjI1ODE5ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdD
bGllbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRp
bmdDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaAppbmRleCA0ZjM5OGI1MzBmNjA4NTc1Yzk2N2I4M2M3NGZhMmY0MzI4ZjZjZTNiLi44
Y2E5N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4NTYwM2E4YTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTMsNyArNTMsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSA9IDA7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25z
ID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNz
YWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRz
IHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMgPSB7IH0pOworICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBDOjpDb25uZWN0aW9u
OjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxk
U3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQm
JiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9w
dGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxk
U3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CkBAIC02NSw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
LSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFf
cywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkK
KyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNz
YWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwg
c2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC0xNjMsMTIgKzE2NCwxMiBAQCBib29sIEF1eGls
aWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgT3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKLWJvb2wgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiBy
ZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8
SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5OjpTZW5kU3luY1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3lu
Y09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4
cGVjdGVkKTsKIAogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBUcmFjZVNjb3BlIHNjb3BlKFN5bmNNZXNzYWdl
U3RhcnQsIFN5bmNNZXNzYWdlRW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZy
YW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDgyM2MyMDJhODU2YTAxMzZkZDllYTc1
OWYwZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhmNGZiNGY4NzM0ZDdiZmQ2MDhkMjAzODgw
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3ViRnJh
bWVTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIE5hdmlnYXRpb25TT0F1dGhv
cml6YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2FkU3RhdGU6Ok9ic2VydmVyIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oCmluZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZiYmJhNDJmYzkwY2VjMzU3N2YuLjEyOGEz
OTc3ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtMjUs
NiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM1LDEwICszNiw2IEBACiBP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQ
QyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0YTEwZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQz
ZmE5MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVkNjViNTdlZDBjODAxM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAsMTAgKzgxLDYgQEAgY2xhc3MgT3BlblBh
bmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1uYW1lc3BhY2UgSVBD
IHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IENvbG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwCmluZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRkNDVmMTJlZGUzNGEwZjc4Y2EwYTYuLjI0
OGU1M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVkYWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJB
UElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAj
aW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4
IDEyOWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1NmQzY2NjYjIuLmE0ZDhkN2NkODA0ZTY1
NjBkYWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAj
aW5jbHVkZSAiQ29udGVudFdvcmxkU2hhcmVkLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgi
CkBAIC00OCwxMCArNDksNiBAQCBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hl
ZXQ7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMzYzUyZDE2MGM0OWUwMmFiMmUy
NDc4NGNkY2QzZTFkMjVkYmU2YWMuLmJjZDAyN2IxNzM4MWJhODhhNWMzMWI5NzgwMDFiZTZjODI1
N2VmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTgs
NyArNTgsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
RHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNzkyNyw2ICs3OTI2LDEwIEBAIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3Mg
PSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFibGVkKCk7
CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNl
cygpLnVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVy
cy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nl
c3NGb3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcGFyYW1ldGVycy5z
aG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vz
c0ZvcldlYkdMRW5hYmxlZCgpOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJs
ZVZQOURlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAjaWYgRU5B
QkxFKFZQOSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVW
UDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkgJiYgKCFXZWJD
b3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0RlY29kZXJFbmFi
bGVkT25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA2NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3MTFmOTFiMmU1Li40MzdhYjc1MGIzNWFi
MTYzYjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCiAjaW5jbHVkZSAi
Q29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIK
ICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIwMyw3ICsyMDQsNiBAQCBlbnVtIGNsYXNz
IEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1Y2U2NWU5ZDJkNTY1YjNmMTI1ZjM0NTdh
MjU2ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMyZTZhMTk5NzdkYjYxYmFiNjEzMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMx
LDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGQ0NDJiNjJiNTIyNTg3Zjkw
ZmE2ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2ODhhMjY4MjE5NDFmZjdhNDE4ZjRkZjVh
OTc1YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
QEAgLTM4LDEwICszOCw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwogfQog
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MGNjMDYzZjY4ZDAxYmQ1ZDdkNDljNTU5YjE2OTY5MTg1M2ZlYmRjMy4uYjcwMDJmNDE1ODZmZDRl
Zjg4NzQwNTllNzM2OWJkYjIxZTBiOWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MDEsNyArNzAxLDYgQEAKIAkJMkQ5MkE3N0Iy
MTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBB
cmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBB
dHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJ
MkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVB
IC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyog
RGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi87
IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4
QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8q
IEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9OwogCQkyRDky
QTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFF
QjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtMTMwNiw2ICsxMzA1LDcg
QEAKIAkJN0FGQkQzNjMyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oICovOyB9OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQ
ZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICov
OyB9OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhD
RTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVG
MDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBD
MkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdD
MTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1
ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElE
aWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAt
MjcyMyw3ICsyNzIzLDYgQEAKIAkJMUFDNUZGQzExNzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdp
blByb2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1
Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlTG9hZFN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRh
UmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFS
ZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3RTE4M0JF
NTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
Qzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5n
RGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00Mzg5LDYgKzQzODgsMTcgQEAKIAkJN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNC
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDsgcGF0
aCA9IENsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJz
aXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNp
c3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAv
KiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJh
eVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4RTM0NDI1NzdB
QzM3MDA5RjFEODMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjUyNTRBRkRFQTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjcyNTRBRkUxNzAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3Jt
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY4MCwxMSArNjY5MCwx
MSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8s
CiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywK
IAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJ
CQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlC
Q0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2
NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQz
N0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAw
NThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUg
LyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8q
IERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVj
b2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAq
LywKQEAgLTgzNTYsMTEgKzgzNjYsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEg
LyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlz
cGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYg
LyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhG
MTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3
MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3Bw
ICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxh
dGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhC
RDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJ
N0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0
RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFF
MDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODM3NSw5ICs4Mzkw
LDE0IEBACiAJCTU1MDY0MEExMjQwNzFBMjkwMEFBRTA0NSAvKiBncmFwaGljcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0I0OEUzNDMyNTc3QUJGODAw
OUYxRDgzIC8qIGNvY29hICovLAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNw
bGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0Uz
IC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAw
REU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3QjkwNDE2OTI1
NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAorCQkJCTdC
OTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovLAor
CQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbiAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhB
MDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcx
QTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQw
QTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKQEAgLTg3
NzUsNiArODc5NSwxNCBAQAogCQkJbmFtZSA9IENsYXNzaWZpZXI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OworCQk3QjQ4RTM0MzI1NzdBQkY4MDA5RjFEODMgLyogY29jb2EgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdCNDhFMzQ0MjU3
N0FDMzcwMDlGMUQ4MyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTEyMDUsNiArMTEyMzMsNyBAQAogCQkJCTFBRUZE
MkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0Nv
Y29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJy
YXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAz
RiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2MzRGMjM0RjdDNjQw
MEZGQTg2NCAvKiBBc3luY1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRTk2
NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTMy
NzQsNyArMTMzMDMsNiBAQAogCQkJCTJEOTJBNzg1MjEyQjZBQjEwMEY0OTNGRCAvKiBCbG9iRGF0
YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RDIxMkI2QTcx
MDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyRDkyQTc3RTIx
MkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OURBQTM4QzI0Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFu
YWdlbWVudFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXgg
ZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2OThhMjEyOTBkMzYxZDRhNi4uYzlkYzY4MmI4NzU0OWI4
MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzYsMTAg
KzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBQ
YXltZW50Q29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyYzBkZjViOWY1NDk2ODQ3ZWQ2NjkxMGJmMmYzOWIy
Y2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5OTg4NzRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oCkBAIC0zNSwxMCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUyMTJjNjEyNjUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07Cit1c2lu
ZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUg
IkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKK30KKworUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2
ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2Fn
ZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAgICBJUEM6Ok1l
c3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsK
KyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhp
Y3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVCdWZmZXIoKTsKKyNl
bmRpZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgbV9jdXJyZW50
V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXko
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6
UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3Bh
Y2VSZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgYXV0byYgc2MgPSBw
bGF0Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CisgICAgICAg
IHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOworICAgIH0K
KyNlbHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
cmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBy
ZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVu
dGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgdGhlIHJp
Z2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM0OQor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0
ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAgICBpZiAobV9kaWRJ
bml0aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVkIG91dCBiZWZvcmUs
IHNvIGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0
ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAgIGZvciAoYXV0byog
Y2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9yY2VD
b250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xp
ZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlv
bigpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRpbElu
aXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47
CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlm
IChjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lm
U3luY01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91dCwg
c28gcmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2UgdGhl
IGNvbnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVkIHRv
IG1hcmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2UgbG9z
dCBpbiB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRk
NjljYWY5ZGMwM2M1MjRiMTAwYTliNmI3NmNmMGFkNzk5YTBkNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNDEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlvbgorLy8gY29udmVy
dHMgdGhlIGludGVyZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdlcyBhbmQgc2VuZHMg
dGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vz
cy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5n
IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAg
ICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVibGljIFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSgpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRl
cy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
ZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBm
aW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgor
ICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3JlOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQgZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7CisgICAgdm9pZCBub3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENo
YW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdl
YkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0
YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsKKworICAgIC8vIEZ1
bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNl
ZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNldEZhaWxOZXh0R1BV
U3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVt
IGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgp
IGZpbmFsOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5hbDsK
KyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3Jt
R0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9p
ZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmlu
YWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVu
LCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxl
bmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25T
ZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpIGZpbmFsOworICAg
IHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpIGZpbmFs
OworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBk
c3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkgZmluYWw7CisgICAg
R0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwor
ICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAgIHZvaWQgY2xlYXJD
b2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBH
Q0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0NHTGNsYW1wZiBk
ZXB0aCkgZmluYWw7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBzKSBmaW5hbDsKKyAg
ICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dM
Ym9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjb21waWxl
U2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFs
OworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlVGV4dHVyZSgpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0gbW9kZSkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZv
aWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQgZGVwdGhNYXNrKEdD
R0xib29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpO
ZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lk
IGRpc2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdDR0xl
bnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmluYWw7CisgICAgdm9p
ZCBkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFibGUoR0NHTGVudW0g
Y2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGlu
ZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZvaWQgZmx1c2goKSBm
aW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9y
bUdMT2JqZWN0IGFyZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7CisgICAgdm9pZCBmcm9u
dEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQ0dM
ZW51bSB0YXJnZXQpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOwor
ICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEF0dHJp
YkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5h
bDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSBm
aW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZs
b2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2Vy
NjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NHTGludCBnZXRQcm9n
cmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAg
ICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4g
dmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7CisgICAgR0NHTGlu
dCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRQ
cm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xpbnQg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1h
dChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxH
Q0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKKyAgICBTdHJpbmcg
Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGZs
b2F0IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmlu
YWw7CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmlu
YWw7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBn
ZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFVuaWZvcm1M
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7
CisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIG1vZGUpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVkKEdDR0xlbnVtIGNh
cCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFs
OworICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5p
dHMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NH
TGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9p
ZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmKSBmaW5h
bDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dM
dWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0g
ZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOwor
ICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVu
Y2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAg
IHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6
cGFzcykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBH
Q0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAg
IHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQg
eiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZp
bmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIz
ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6
LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2
b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NH
TGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9p
ZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVt
IHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZv
aWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBm
aW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFs
OworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3
RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZp
c29yKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwg
R0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3
cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+
IGRhdGEpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdD
R0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAs
IEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVs
ZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdM
T2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOworICAg
IHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRh
Y2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmluYWw7
CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0
b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFs
OworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xp
bnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdD
R0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1
aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQs
IDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYklQ
b2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdSYW5n
ZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFs
OworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNs
ZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYo
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2ls
KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CisgICAg
dm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICBHQ0dM
Ym9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQg
YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFs
OworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBQbGF0Zm9y
bUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFs
OworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxl
cigpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIpIGZpbmFsOworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZp
bmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQg
Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMc3luYyBmZW5j
ZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOworICAg
IEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0
ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMo
R0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpIGZp
bmFsOworICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdz
LCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3lu
YyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVh
dGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUcmFu
c2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRU
cmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpIGZp
bmFsOworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVN
b2RlKSBmaW5hbDsKKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAg
dm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKSBmaW5h
bDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICB2
b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZVRyYW5z
Zm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikgZmluYWw7Cisg
ICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwg
UGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIp
IGZpbmFsOworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBmaW5h
bDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5h
bDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CisgICAg
dm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFt
cykgZmluYWw7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7
CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNy
Y1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50
IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywg
R0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFs
OworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBmaW5hbDsKKyAg
ICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChj
b25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSBm
aW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBi
dWZzKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
IGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdD
R0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICB2b2lkIGdl
dEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6
ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgZmluYWw7Cisg
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgZmlu
YWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVy
UG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBnZXRT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RnJhbWVi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmlu
YWw7CisgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
Ym9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmluYWw7CisgICAgdm9p
ZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZpbmFsOworICAgIHZv
aWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1
c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICAvLyBFbmQg
b2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCitwcm90ZWN0ZWQ6
CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAg
IHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBN
ZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQoU3RyaW5nJiYgYXZh
aWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9p
ZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpOworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8vIFRoZSBHQ0dMIHR5
cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBi
eSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMYm9vbGVh
bikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJp
dGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMYnl0
ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1Ynl0ZSwgdWlu
dDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hvcnQsIGludDE2X3Q+
KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwgdWludDE2X3Q+KTsK
K3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJfdD4pOworc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8UGxhdGZvcm1H
TE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xjaGFyKSA9PSBz
aXplb2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludDY0KSA9PSBzaXpl
b2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2NCkgPT0gc2l6ZW9m
KHVpbnQ2NF90KSk7CisvLyBHQ0dMc3luYyBhbmQgR0NHTCpwdHIgdHlwZXMgYXJlIHBvaW50ZXJz
LiBPbiBzb21lIHBsYXRmb3JtcywgdGhleSBhcmUgMzItYml0LgorLy8gQ3VycmVudGx5IHdlIGhh
cmQtY29kZSBpdCBieSB1c2luZyA8PSwgYW5kIGFzc3VtZSB0aGF0IHdlIGRvIG5vdCB0cmFuc2Zl
ciBhcnJheXMgb2YgdGhlIHR5cGVzLgorc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludHB0cikg
PD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMc2l6ZWlwdHIp
IDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHZvaWRwdHIp
IDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMpIDw9
IHNpemVvZih1aW50NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRyX3Qp
KTsKKy8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJiMmJj
MTAxMGVmOGVjZDBhZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50
ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3Ry
aW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQg
V2FzQ2hhbmdlZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9u
c0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMxNGE0NDMxNTYyMTFjYzcxODUxMzczMzhjYWNjN2NlNTAzNTc5NWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NyBA
QAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13
ZWJnbC4gRG8gbm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVz
Q2hlY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9y
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVz
aXplR0xFcnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNF
cnJvckxpc3QoKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNF
cnJvckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRl
eHR1cmUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZVRleHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0s
IHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24o
YXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBh
cmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5k
RnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZm
ZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0
LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVl
LCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBt
b2RlQWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9y
LCBkZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNy
Y1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxw
aGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5k
RnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJs
dWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBi
bHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19j
YXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJv
b2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
cHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRm
b3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZy
YW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJh
bWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVj
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
UmVuZGVyYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1
ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1
ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4
dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIo
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRl
UHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNo
YWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
cHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFu
Z2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5k
ZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBj
YXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJs
ZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQg
aW5kZXgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5k
ZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2ht
ZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBs
ZXZlbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJh
bWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxl
dmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdl
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcy
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3Rp
dmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2
ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJv
Z3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3Ry
aW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2
YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAg
IG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNp
emVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkK
K3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAg
IG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNp
emVvZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0
PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAg
ICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFt
aShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGJvb2xlYW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFs
dWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVS
ZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2Vu
ZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2
YWx1ZS5idWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRF
cnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAg
ICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQ
cm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51
bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3Ry
aW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUs
IEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3Qg
cHJlY2lzaW9uUmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
c2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNp
b25SZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAo
c2VuZFJlc3VsdCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRh
KCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lz
aW9uKQorICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30K
KworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVy
U291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRl
clNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVy
Zih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRU
ZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJh
bWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQor
eworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3Vs
dCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5i
dWZTaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHBy
b2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1l
bWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVv
ZihpbnQzMl90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBs
b2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZh
bHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQz
Ml90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwg
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0
aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4
QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
THNpemVpcHRyPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7
CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNF
bmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVl
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFt
ZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
RnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNG
cmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5W
YWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dy
YW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwor
fQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1
ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVu
ZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVu
ZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZh
bHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNT
aGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1No
YWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisK
K0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcw
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3Jh
bShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNl
dChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVm
ZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGlu
dmVydCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2Ft
cGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVy
U291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJn
MCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dM
aW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NH
TGludCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNr
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWlu
dCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
dGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9w
KEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpm
YWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBm
YWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFy
YXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0
ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVy
Zih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRp
b24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGlu
dDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2Yo
bG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRh
dGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQ
cm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZh
bGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
MWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYo
aW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZs
b2F0IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NH
TGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHos
IHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVz
LmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9p
bnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9v
bGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
UG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCks
IHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0
YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRh
dGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVs
czAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJl
cGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5k
UmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRh
LmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMu
ZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdl
MkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVz
c2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdl
U2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5
c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRz
SW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRl
eEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdl
dCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0
ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdy
aXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJn
ZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFS
ZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2Vu
ZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0
YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NH
TGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1h
c2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBk
c3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNo
bWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxh
eWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFt
ZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBs
YXllciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0
YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFy
Z2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5
LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3Jj
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVm
ZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVs
cywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSks
IHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
Zm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBm
b3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhl
aWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1h
Z2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50
cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0Rh
dGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0
aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1
aShsb2NhdGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dM
dWludCB2MSwgR0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQg
djEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2
KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0
cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
ZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xp
bnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVl
cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4
QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4
LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRl
cihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dM
dWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1
ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEp
LCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVl
cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJC
dWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBH
Q0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2
KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZl
ciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVl
cnkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1
ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5h
bWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Nh
bXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNT
YW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVl
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihH
Q0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5h
bWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYo
c2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAg
ICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dM
c3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29s
ZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQor
eworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVTeW5jKEdDR0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5
bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQp
Cit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdD
R0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxp
bnQ2NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBh
cmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2ko
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwg
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3Jt
R0xPYmplY3QgaWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2so
aWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJh
Y2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVk
YmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0
YXJnZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVu
dW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmco
cHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxh
dGZvcm1HTE9iamVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRl
eCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlw
dHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQz
Ml90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBu
YW1lKQoreworICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1z
KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJs
b2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1C
bG9ja05hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRl
eChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9y
bUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxv
Y2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
SW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwg
dW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7
CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFt
ZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVt
Y3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6
ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJh
bWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gx
LCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRz
dFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVi
dWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RY
MSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZl
cnRleEFycmF5T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFy
cmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4
QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRl
bGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVy
c0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NH
THNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJp
bWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29y
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4
ZWxzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3Jt
YXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMZmxvYXQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgLy8gTk9MSU5UCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBs
ZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x1aW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVy
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRl
eCA2ZGRlZTg3YWJkY2M3NmY4NjlhZDU1NGRiNTExMmIzNmI4MmYyZDZiLi5kYTM5ODg2ZWJjOGYx
NmQ4OGRmZTE4NzNjNTdhODdmZWNmNmU0NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1H
TE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0s
IGJvb2wsIGJvb2wpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVu
dW0sIGJvb2wsIGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggOTVjODM2ZTY5NTA0
MWQ5N2QyNTkwMzZmZDczZGZmNWM0NmI4ZmY5MS4uYzhjNTgyOTA1MGE1MjU4ZjlkOTMxOTc2Yjk1
ZjA1ZTU5N2E1NmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAt
ODIsNyArODIsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRv
R1BVUHJvY2VzcygpCiAKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENs
aWVudCgqdGhpcyk7Ci0gICAgYm9vbCBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoCisgICAgYXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFy
ZHdhcmVTYW1wbGVSYXRlKCkpLAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQp
LCAwKTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24gc3RyZWFtRm9ybWF0OwogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJl
YW1Gb3JtYXQpOwogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251
bWJlck9mRnJhbWVzKTsKLSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVk
aW9CdWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5jcHAKaW5kZXggZGNiZDRmOGFmYWZl
MTA2MGE2MWIwMzA1MzFlMTJjNzRkMzdlZmZkMy4uMmNhOTdjNjM3YjFmMTllODI3OGE2YWU3MTNj
NWMxNGU2NzY3MTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8p
ICYmIFBMQVRGT1JNKENPQ09BKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIgogI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUGxheWVyUHJveHlNZXNzYWdlcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9T
b3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCmluZGV4IGI4ZjQ1YTZkNWJiNGRiNDYwOTg4MDEyNDNi
YjVlOTMxN2IxZTNlMmIuLjY1YjhmZDBkNzczNDdlOTM4YjU2NDU4MjI2Yjc4ZGE0M2M5Nzg5MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCkBAIC0yNiw3
ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCmluZGV4IGU1OWUxYjA2YjQ0N2U1ZDgwY2E2MTA1
MmM2YzdhMzJjNGJhMTQyZTYuLjgxOTQwOTBjOTMzYjJmMTFhNjQ2MGFiM2MxNzcyZDM3NjE2Mzcx
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKQEAgLTI3LDYg
KzI3LDkgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVySWRlbnRpZmllci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAK
aW5kZXggMGRiODVhZTliZDI0MWViYTFiZGE0ZTYyMjQ0MGY2MzI4ZTFkOGEwYi4uMjk3ZWViZGEx
OTE4OWRmZTBjZmU2YzFlZDc2OWFhY2I5ZDZkOTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24u
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGQ1NDI0NDJjODQ0ZTU0ODNmZDNj
ZWQ3ODUwNWRjYTE4Njk0YWU0YTQuLmEzMzllYjdiZmZkNmI0NTE5NGQyOWExMDkxNGJmYTJmZmJk
NzRhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVz
cGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDBjNmY3M2QwNzE0NGI1NjI2
NzY5MzY3YzlmMmEzYTQwMTdlYWRlODAuLjE2OGVmNDM1ZGRlNTYxNGQzMGYzYmUyODY3MGE0N2Fl
ZDYxNmRlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNFKExJ
QldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGliV2Vi
UlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCA3MzlhNDk2ZWY0OTRjYjRh
NjE4NTY2ZmZjNjRkNGEyNjRhNzRlOWQwLi40YmVhZTA2MjMxN2JhMjZhNjA2ODNmMWY0NTEyMzNl
YjEwNzNhYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJS
VEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKQEAgLTQzLDcgKzQ0LDYgQEAgdXNpbmcgQ1ZQ
aXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiAKIG5hbWVz
cGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFz
cyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDJkYWQyMDM4NDJmMGU1NTNmZTNi
NDYyNDQxZWU5NGZhMjY0OTNhMTEuLmMyOGNlN2YyZTE3ZTg5YThlNTE4NmE3NzA2YTJlOGE0NGY2
YjdlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJB
UElJbmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVXNlckNvbnRlbnRUeXBlcy5oPgpAQCAtNTQsNyArNTUsNiBAQCBjbGFzcyBEYXRhOwogbmFt
ZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDQgKzE2MSwzIEBA
IHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDYyNzVjZjZhNmU3ZTUwYzZiMzYw
NjJlMTMxODc1NzUyODlhNTgwZWUuLmU1YmE2NjFhZTY2ZjU1YTkwNzQ2NGU2ZmYzNmU0MmI3YWRk
MDBkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCYgaW5zcGVjdG9yRnJvbnRlbmQpCiAgICAgOiBtX2Zy
b250ZW5kQ2xpZW50KG1ha2VXZWFrUHRyKGluc3BlY3RvckZyb250ZW5kKSkKIHsKLSAgICBQYWdl
KiBwYWdlID0gaW5zcGVjdG9yRnJvbnRlbmQuZnJvbnRlbmRQYWdlKCk7CisgICAgV2ViQ29yZTo6
UGFnZSogcGFnZSA9IGluc3BlY3RvckZyb250ZW5kLmZyb250ZW5kUGFnZSgpOwogICAgIEFTU0VS
VChwYWdlKTsKIAogLy8gICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CkBAIC05Myw3ICs5Myw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIGV4dGVuc2lvCiAgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZXh0
ZW5zaW9uSUQpLAogICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGRpc3BsYXlOYW1lKSwKICAg
ICB9OwotICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3Bh
dGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygicmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUo
YXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9mcm9u
dGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJl
c3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhcmVzdWx0KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyOjp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0
ZW5zCiAgICAgfQogCiAgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpT
T046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07Ci0gICAgbV9mcm9udGVuZENsaWVudC0+
ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1
bnJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQm
JiByZXN1bHQpIG11dGFibGUgeworICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlz
cGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVu
c2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaAppbmRleCAzMDY0ZTljNGFmY2MyY2ZmNTRhMzI1ZTI1MzFlZDA1MjJhMDAx
MzkzLi5iOTc5NDY1OWVhYmQxODRiMzg5YzA2ZDEzMmY4YzQyZjgwNTIzY2MyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODY1
NzExYjM2NmMyOGRmNDg0YjRjZGMwN2FhM2ZjZjNkY2ViZjJmNi4uNjk0ODk2Yzk5N2E0OTQwZGJh
YjJkYTc2NTc4MjBhMjc4YWYxZGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKLSNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCA1ODNlMzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZi
Li43ZTFkNDk5NDcxNWY4ODQ5Y2U4YmZlNWVjMzQ1NWQ0NzM3NzgwMGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAj
aW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmgiCkBAIC0zNiw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVy
ZW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5NGVmMGQxZmNlMmU2MDFkZjQ0OWNmZjg1MzlmYmQx
NjQ3OTNlYmUyLi5mZjY5ZjU2MDllNTc3Y2FjNzc3ZjA0YWZhNzRhZjIxMDc0ODY0Zjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlNvY2tldENoYW5uZWwuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5u
ZWxNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGY1MzQ3ODM0N2U3NzVkZjM3ZWE5NzYzNGMyMzMwOTMy
YjRhMTRkMjguLmFkN2ZmMTg3ZGJiNDM1M2I5ZWQzYmM1N2M1YmEyYzRhYTRlOGNmZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1NlbmRRdWV1ZS5oPgpAQCAtMzgs
NyArMzksNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVj
b2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5j
cHAKaW5kZXggYWYyNDJjZDJiNTk1YWM0YTQ0ODQyOTdiZTVkNWNmZTE4ZDQ4ZjMyNC4uN2QwMDcz
NjliOWNjZTg1YjhmMDU0NTdkNjY2ZDFlNDQ1MWI5NmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgi
CiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRl
eCBkZDA4MjAxMDcxMmI5ZjVkYjlmZWJkODhkYTY2OWI2ZGY2MWQwZjI5Li5iNDNjYjJlZmFkMWUx
MDFlZTI2NWI5M2RkZTliMDYxMjczNmEwOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Tb2NrZXRTdHJlYW1IYW5kbGUuaD4KQEAgLTMzLDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKaW5kZXggY2I0
OGUwNTczNDhhMmU4NjZiMDkxZmY1YWM4NzI2MDVjYTE5MmRkNS4uMzIzZjI1ZWU4ZmQ4MWIwMjYz
MGQyZjI1OWExYWZiODg0YjRjZjVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaApAQCAtMzUsNyArMzUs
NiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IGVhNTM1OTYwMTA5ZmVlNmRjNDgwNWNm
Njg5MTI3OThlZTlhYjZmMDMuLjQwYjRjOGYyMTI5Y2YxMjMzYTFiMzFiODUxMjdlN2E3ZTllM2Q3
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmgKQEAgLTYwLDEwICs2MCw2IEBAIE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9uOwogT0JKQ19D
TEFTUyBXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUERGTGF5
ZXJDb250cm9sbGVyRGVsZWdhdGU7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNs
YXNzIEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1
ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRl
OWQ1NDkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYs
MjIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRl
cmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQog
CisjaWYgRU5BQkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxh
eUlEKSBjb25zdAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNl
UmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
VU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmli
dXRlcyk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgor
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6
YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYw
ZGM4Li4xMjE1ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25z
dCBmaW5hbDsKICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdz
IGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMs
NiArNDA3LDcgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFt
ZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2Nh
Y2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBh
Z2UmIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggZjY0MjE0NzdhNTZjZWUxYjQ1OWFiMWI3MGQ4ZGNhZDlkM2RhZmMzNC4u
ZDQ2MzNkZGI2Y2M2NDk4MDNiOTI0NTc1NjI1YmZhNTI4YzE3ZDRiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyMiw2ICs0MjIsOSBAQCBX
ZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJv
Y2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAs
IG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJE
T01JbkdQVVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBw
YXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdM
KQorICAgICwgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hv
dWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFt
ZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzI1LDcg
KzcyOCw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAj
ZW5kaWYKLSAgICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAg
ICAgICAgc2NhbGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5Myw2
ICszNzk1LDkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VH
UFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9j
ZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yRE9N
UmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEobV9zaG91bGRQbGF5TWVkaWFJ
bkdQVVByb2Nlc3MpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0wobV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJv
Y2Vzcyk7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKQEAg
LTY5OTAsNiArNjk5NSw3IEBAIHZvaWQgV2ViUGFnZTo6c3luY2hyb25pemVDT1JTRGlzYWJsaW5n
UGF0dGVybnNXaXRoTmV0d29ya1Byb2Nlc3MoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2FibGluZ1BhdHRl
cm5zKG1faWRlbnRpZmllciwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpLCAwKTsKIH0KIAorCiAj
aWYgRU5BQkxFKE1FRElBX1VTQUdFKQogdm9pZCBXZWJQYWdlOjphZGRNZWRpYVVzYWdlTWFuYWdl
clNlc3Npb24oTWVkaWFTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcGFnZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlN2Y4YzBhM2I2MDRlN2FhMTU3Yzc0
MDIzMWU1NTU3NDlkNGVmN2M3Li4yMTEwYTMyZjY3MGYwMGZhMjQ0ZmU2ZjlkNzk1YTZkZGY2MGQx
NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJ
RC5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1
ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMTYw
LDcgKzE2MSw2IEBAIGNsYXNzIEFycmF5OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1E
YXRhUmVmZXJlbmNlOwogfQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5
ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICBTZW5k
U3luY1Jlc3VsdCBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRP
blN5bmNocm9ub3VzUmVwbGllcygpOwogICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5
bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKQEAgLTE4MjYsNiAr
MTgyNiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJv
Y2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNl
IH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BV
UHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAj
ZW5kaWYKQEAgLTIxODMsNCArMjE4NiwzIEBAIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3Jt
TmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMzgzOGFiMzI2ZGQ4Mzk2YjYw
MTA3Y2JhM2Y2MjQ1MDc0Yzk3ZjcxNS4uMGUyOTNmYTRkZjE5Y2JmOGNkNjc5MzE3NmQ3ODc4OTJh
ZDhlMTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KQEAgLTUxNyw3ICs1MTcsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVk
aXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAgLy8gRklYTUU6
IEludGVycHJldCB0aGUgZXZlbnQgaW1tZWRpYXRlbHkgdXBvbiByZWNlaXZpbmcgaXQgaW4gVUkg
cHJvY2Vzcywgd2l0aG91dCBzZW5kaW5nIHRvIFdlYlByb2Nlc3MgZmlyc3QuCiAgICAgYm9vbCBl
dmVudFdhc0hhbmRsZWQgPSBmYWxzZTsKLSAgICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJm
b3JtTGF5b3V0OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpDaGFyKSwKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0
OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpD
aGFyKSwKICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQ6
OlJlcGx5KGV2ZW50V2FzSGFuZGxlZCksIG1faWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHNlbmRS
ZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IGYyZjIyODIyYzdiMjIzZmNhNTlmOTU1NzNkMTFkYzk5YjEwMzQ4MTEu
LjU4MmVlNzVkOTlhNzQyNDI1NGEzOWRhYjIwNmY4NDYxNzM0YWQ5YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5NDIsNiArMTk0MiwyMCBAQCBib29sIFdl
YlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1
cnBvc2UpCiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KKworI2lmIEVOQUJMRShXRUJHTCkK
K3ZvaWQgV2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wgdXNlR1BVUHJv
Y2Vzc0ZvcldlYkdMKQoreworICAgIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMID0gdXNlR1BVUHJv
Y2Vzc0ZvcldlYkdMOworfQorCitib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRl
cmluZ0ZvcldlYkdMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yV2Vi
R0w7Cit9CisKKyNlbmRpZgorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlOWM0N2RiNGM0NDdjMGY0YWI2MjdjMDk0YjVm
NjhkYjU2NWE5YTZjLi4xYTU4NWFjMTQyYjE4MzI3NjRjNGQ4NTM3OTA5MGIyY2JjYTczYzFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM0Nyw2ICszNDcsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhib29sKTsK
ICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sKTsKICAgICBib29sIHNob3Vs
ZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCk7Cisg
ICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0OworI2VuZGlm
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCkBAIC02ODcsNiArNjkxLDkgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV91c2VHUFVQcm9jZXNzRm9yTWVkaWEgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkK
KyAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMIHsgZmFsc2UgfTsKKyNlbmRpZgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGI3YzczMmNjMDg0NzBhODEyNWZjN2U1YTc0NWYxZDJmN2NjNWUx
OWIuLjBhNDFkNTNjNWM4YTA5ZDEwZTFhODEyNTNjMWJlMDEwMTkxZjM5ODYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAor
MjAyMC0xMi0wMiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVSBwcm9jZXNzLgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMgYW5kIGlzIGluY29tcGxldGUuCisKKyAgICAgICAgQWRkIHRoZSBjb2RlIGdl
bmVyYXRvciB0byBnZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseQorICAgICAg
ICB0aGUgZ2VuZXJhdG9yIGdlbmVyYXRlcyBhIFdlYktpdCBJUEMgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgVGhlIGlucHV0IGRlZmluaXRpb24gdG8gdGhlIGdlbmVyYXRvciBpcyB0aGUgcHJv
eHkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaGVhZGVyIGZpbGVzLgorICAgICAgICBUaGUgb3V0
cHV0IG9mIHRoZSBnZW5lcmF0b3IgaXMKKyAgICAgICAgICAgLSBXZWJLaXQgSVBDIG1lc3NhZ2Ug
ZGVmaW5pdGlvbiBmaWxlCisgICAgICAgICAgIC0gTWVzc2FnZSBzZW5kZXIgY29kZQorICAgICAg
ICAgICAtIE1lc3NhZ2UgcmVjZWl2ZXIgYW5kIHBheWxvYWQgaW52b2NhdGlvbiBjb2RlCisKKyAg
ICAgICAgVGhlIGdlbmVyYXRvciBjb252ZXJ0cyBHcmFwaGljc0NvbnRleHRHTCBHQ0dMIC1wcmVm
aXhlZCB0eXBlcyB0bworICAgICAgICBzaXplZCBJUEMgdHlwZXMuCisKKyAgICAgICAgVGhlIGdl
bmVyYXRvciBpcyBpbnZva2VkIGR1cmluZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0
cyBhcmUKKyAgICAgICAgc3RvcmVkIGluIHRoZSByZXBvc2l0b3J5LgorCisgICAgICAgICogU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOiBBZGRlZC4KKwogMjAyMC0xMi0wMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEdQVVByb2Nlc3MuQ3Jhc2hX
aGlsZVBsYXlpbmdWaWRlbyBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYxNmI0MjIyOWNmMmY4MjhjNjZjN2U3YjQxNzczYzJlYmU0NDMxMTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAsMCArMSwx
MDQ0IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQor
IworIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIHNvdXJj
ZSBmaWxlcyBmb3IgV2ViR0wgR1BVIHByb2Nlc3MgSVBDLgorIworIyBweXRob24zIC1tIGJsYWNr
IC1sIDE1MCBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMgcHl0aG9uMyAtbSBt
eXB5IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIworaW1wb3J0IGFyZ3BhcnNl
CitpbXBvcnQgZW51bQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1w
b3J0IGNvbGxlY3Rpb25zCisKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJdGVyYWJs
ZSwgQ2FsbGFibGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJhdG9yLCBD
b3VudGVyCisKK3Jvb3RfZGlyID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50IC8gIi4u
IiAvICIuLiIpLnJlc29sdmUoKQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNv
dXJjZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRlbnNpb25z
R0wuaCIKKworZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsKKyAgICByb290X2RpciAvICJTb3VyY2Ui
IC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorXQordHlwZXNfaW5wdXRfZm4gPSByb290X2RpciAv
ICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIg
LyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisKK3RlbXBsYXRlX3ByZWFtYmxl
ID0gIiIiLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1
cC13ZWJnbC4gRG8gbm90IGVkaXQuCisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2ZuID0gcm9vdF9k
aXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29udGV4dF9mdW5j
dGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIi8vIFRo
aXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUK
Ky8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25j
ZQore30KKworIiIiCispCitjb250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAiU291cmNl
IiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbiIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCisg
ICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90
UmVmQ291bnRlZCB7eworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkg
LT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNlbmRpZgorI2lm
ICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3lu
Y2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcg
ZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3t9Cit9fQor
CisjZW5kaWYKKworIiIiCispCisKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuID0gcm9vdF9k
aXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhp
Y3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
IgorY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJl
YW1ibGUKKyAgICArICIiIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHt7Cit7fQorCit9fQorCisjZW5kaWYKKwor
IiIiCispCisKKworZGVmIHdyaXRlX2ZpbGUoZm4sIG5ld19jb250ZW50cyk6CisgICAgdHJ5Ogor
ICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBpZiBmLnJlYWQoKSA9PSBu
ZXdfY29udGVudHM6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgZXhjZXB0OgorICAgICAg
ICBwYXNzCisgICAgd2l0aCBvcGVuKGZuLCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUobmV3
X2NvbnRlbnRzKQorCitjbGFzcyBjcHBfdHlwZShvYmplY3QpOgorICAgIHR5cGVfbmFtZTogc3Ry
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyKToKKyAgICAgICAgc2Vs
Zi50eXBlX25hbWUgPSB0eXBlX25hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIGhhc2goc2VsZi50eXBlX25hbWUpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBv
dGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSA9PSBvdGhlci50eXBlX25hbWUK
KworICAgIGRlZiBpc192b2lkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLnR5
cGVfbmFtZSBpbiBbInZvaWQiLCAiR0NHTHZvaWQiLCAiY29uc3Qgdm9pZCIsICJjb25zdCBHQ0dM
dm9pZCJdCisKKyAgICBkZWYgaXNfY29uc3Qoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJu
IHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoImNvbnN0ICIpCisKKyAgICBkZWYgaXNfY29udGFp
bmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX291
dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKwor
ICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisg
ICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBpc19wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxm
KSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9kZWNh
eV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIGlmIHNlbGYuaXNfY29uc3QoKToK
KyAgICAgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWVbNjpdKQorICAg
ICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9ydmFsdWVfdHlwZShzZWxmKSAtPiAnY3Bw
X3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIiYm
IikKKworICAgIGRlZiBnZXRfcG9pbnRlcl90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAg
ICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiKiIpCisKK2NsYXNzIGNw
cF90eXBlX2NvbnRhaW5lcihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVf
bmFtZSA6IHN0ciwgY29udGFpbmVyX25hbWUgOiBzdHIsIGNvbnRhaW5lZF90eXBlIDogY3BwX3R5
cGUsIGFyaXR5IDogT3B0aW9uYWxbaW50XSA9IE5vbmUpOgorICAgICAgICBjcHBfdHlwZS5fX2lu
aXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY29udGFpbmVyX25hbWUgPSBjb250
YWluZXJfbmFtZQorICAgICAgICBzZWxmLmNvbnRhaW5lZF90eXBlID0gY29udGFpbmVkX3R5cGUK
KyAgICAgICAgc2VsZi5hcml0eSA9IGFyaXR5CisgICAgZGVmIGlzX2NvbnRhaW5lcihzZWxmKSAt
PiBib29sOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJv
b2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIKKyAg
ICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxm
LmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMgTm9uZQorICAg
IGRlZiBnZXRfY29udGFpbmVyX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRh
aW5lcl9uYW1lCisgICAgZGVmIGdldF9hcml0eShzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAg
ICAgICByZXR1cm4gc2VsZi5hcml0eQorICAgIGRlZiBnZXRfY29udGFpbmVkX3R5cGUoc2VsZikg
LT4gY3BwX3R5cGU6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlCisgICAgZGVm
IGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2Vs
Zi5jb250YWluZWRfdHlwZS5pc19jb25zdCgpCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfY29udGFp
bmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFpbmVyXToKKyAg
ICBtID0gcmUubWF0Y2gociIoW1x3Ol0rKTwoLispPiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90
IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCisgICAg
dGVtcGxhdGVzID0gbVsyXQorICAgIGFyaXR5ID0gTm9uZQorICAgIG0gPSByZS5tYXRjaChyIihb
XixdKyksXHMqKFxkKykiLCB0ZW1wbGF0ZXMpCisgICAgaWYgbToKKyAgICAgICAgdGVtcGxhdGVz
ID0gbVsxXQorICAgICAgICBhcml0eSA9IGludChtWzJdKQorICAgIHJldHVybiBjcHBfdHlwZV9j
b250YWluZXIodHlwZV9uYW1lLCBjb250YWluZXJfbmFtZSwgZ2V0X2NwcF90eXBlKHRlbXBsYXRl
cyksIGFyaXR5KQorCitjbGFzcyBjcHBfdHlwZV9mdW5jdGlvbihjcHBfdHlwZSk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgcmV0dXJuX3ZhbHVlX3R5cGUgOiBjcHBf
dHlwZSwgYXJndW1lbnRfdHlwZXMgOiBMaXN0W2NwcF90eXBlXSk6CisgICAgICAgIGNwcF90eXBl
Ll9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfdHlw
ZSAgPSByZXR1cm5fdmFsdWVfdHlwZQorICAgICAgICBzZWxmLmFyZ3VtZW50X3R5cGVzID0gYXJn
dW1lbnRfdHlwZXMKKworZGVmIGNwcF9zcGxpdF9hcmdzX3NwZWNzKGFyZ3Nfc3BlYyA6IHN0cikg
LT4gSXRlcmF0b3Jbc3RyXToKKyAgICAgIyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0
aW9ucy8zMzUyNzI0NS9weXRob24tc3BsaXQtYnktY29tbWEtc2tpcHBpbmctdGhlLWNvbnRlbnQt
aW5zaWRlLXBhcmVudGhlc2VzCisgICAgY29tbWEgPSByIiwoPyEoPzpbXjxdKlw8W14+XSpcPikq
W148Pl0qXD4pIgorICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW2Euc3RyaXAoKSBmb3IgYSBpbiBy
ZS5zcGxpdChjb21tYSwgYXJnc19zcGVjLnN0cmlwKCkpXSkKKyAgICAKK2RlZiBjcmVhdGVfY3Bw
X3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9mdW5j
dGlvbl06CisgICAgbSA9IHJlLm1hdGNoKHInKC4qKVwoKC4qKVwpJywgdHlwZV9uYW1lKQorICAg
IGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybl92YWx1ZV90eXBlID0g
Z2V0X2NwcF90eXBlKG1bMV0pCisgICAgYXJnc190eXBlcyA9IFtnZXRfY3BwX3R5cGUoYSkgZm9y
IGEgaW4gY3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsyXSldCisgICAgcmV0dXJuIGNwcF90eXBlX2Z1
bmN0aW9uKHR5cGVfbmFtZSwgcmV0dXJuX3ZhbHVlX3R5cGUsIGFyZ3NfdHlwZXMpCisgICAgICAg
IAorIyBQb2ludGVyIG9yIHJlZmVyZXJlbmNlCitjbGFzcyBjcHBfdHlwZV9pbmRpcmVjdChjcHBf
dHlwZSk6CisgICAgY2F0ZWdvcnkgOiBzdHIKKyAgICB2YWx1ZV90eXBlIDogY3BwX3R5cGUKKyAg
ICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjYXRlZ29yeSA6IHN0
ciwgdmFsdWVfdHlwZSA6IGNwcF90eXBlKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2Vs
ZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNhdGVnb3J5ID0gY2F0ZWdvcnkKKyAgICAgICAg
c2VsZi52YWx1ZV90eXBlID0gdmFsdWVfdHlwZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgc2VsZi5pc19j
b25zdCgpCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNh
dGVnb3J5ID09ICcqJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19jb25zdF9y
ZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQg
c2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBub3Qgc2VsZi5pc19jb25zdCgpCisgICAgZGVm
IGlzX3J2YWx1ZV9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5
ID09ICcmJicKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLnZhbHVlX3R5cGUKKworZGVmIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUg
OiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2luZGlyZWN0XToKKyAgICBtID0gcmUubWF0Y2go
ciJjb25zdCAoLispJiYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0g
cmUubWF0Y2gociIoLispJiYkIiwgdHlwZV9uYW1lKSAKKyAgICBpZiBtOgorICAgICAgICByZXR1
cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnJiYnLCBnZXRfY3BwX3R5cGUobVsxXSkp
CisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5v
dCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiQiLCB0eXBlX25hbWUpCisgICAgaWYg
bToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYnLCBnZXRf
Y3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKVwqJCIsIHR5cGVf
bmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKVwqJCIsIHR5
cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlw
ZV9uYW1lLCAnKicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICByZXR1cm4gTm9uZQorCisKK2Ns
YXNzIGNwcF9leHByKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBleHByOiBzdHIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgZXhwcjogc3RyKToKKyAg
ICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLmV4cHIgPSBleHByCisKKyAgICBk
ZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwcgorCisKK0NwcEV4cHJD
b252ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdCisKKwor
ZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3Vn
aF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBf
ZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcihleHByOiBj
cHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4gY3Bw
X2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9PihyZWludGVycHJldF9j
YXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0dXJu
IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcgorCitkZWYgY3BwX3JlaW50ZXJwcmV0
X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+
IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9y
ZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBl
KSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYicmVpbnRlcnBy
ZXRfY2FzdDx7dHlwZS50eXBlX25hbWV9PihzdGF0aWNfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90
eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF90
b19wb2ludGVyCisKK2RlZiBjcHBfc3RhdGljX2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNw
cF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNf
Y2FzdDx7dHlwZS50eXBlX25hbWV9Pih7c3RyKGV4cHIpfSkiKQorCisKK2RlZiBjcHBfaW1wbGlj
aXRfY2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAg
IHJldHVybiBjcHBfZXhwcih0eXBlLCBzdHIoZXhwcikpCisKKworZGVmIGNwcF9hcnJheV9yZWlu
dGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2Nv
bnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdl
dF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhw
cih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8e2VsZW1lbnRfcG9pbnRlcl90
eXBlfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisKK2RlZiB3
ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24o
ZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6Cisg
ICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9w
b2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qge2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0u
ZGF0YSksIHtzdHIoZXhwcil9LmJ1ZlNpemUpIikKKworZGVmIGNwcF9tb3ZlX2V4cHIoZXhwcjog
Y3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcihleHByLnR5cGUuZ2V0
X3J2YWx1ZV90eXBlKCksIGYiV1RGTW92ZSh7c3RyKGV4cHIpfSkiKQorCisKK2NwcF90eXBlczog
RGljdFtzdHIsIGNwcF90eXBlXSA9IHt9CisKK2NwcF90eXBlX2NvbnN0cnVjdG9ycyA6IExpc3Rb
Q2FsbGFibGVbW3N0cl0sIE9wdGlvbmFsW2NwcF90eXBlXV1dID0gWworICAgIGNyZWF0ZV9jcHBf
dHlwZV9mdW5jdGlvbiwKKyAgICBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyLAorICAgIGNyZWF0
ZV9jcHBfdHlwZV9pbmRpcmVjdAorXQorCitkZWYgZ2V0X2NwcF90eXBlKHR5cGVfbmFtZTogc3Ry
KToKKyAgICByID0gY3BwX3R5cGVzLmdldCh0eXBlX25hbWUsIE5vbmUpCisgICAgaWYgcjoKKyAg
ICAgICAgcmV0dXJuIHIKKyAgICBmb3IgdHlwZV9jb25zdHIgaW4gY3BwX3R5cGVfY29uc3RydWN0
b3JzOgorICAgICAgICByID0gdHlwZV9jb25zdHIodHlwZV9uYW1lKQorICAgICAgICBpZiByOgor
ICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBub3QgcjoKKyAgICAgICAgciA9IGNwcF90eXBlKHR5
cGVfbmFtZSkKKyAgICBjcHBfdHlwZXNbdHlwZV9uYW1lXSA9IHIKKyAgICByZXR1cm4gcgorCisK
K2NsYXNzIGNwcF9hcmcob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICB0eXBlOiBjcHBfdHlw
ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgor
ICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKworICAg
IGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9IHt9Ii5mb3JtYXQoc2VsZi50
eXBlLCBzZWxmLm5hbWUpCisKKworY2xhc3MgY3BwX2RlY2wob2JqZWN0KToKKyAgICB0eXBlOiBj
cHBfdHlwZQorICAgIG5hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNw
cF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNl
bGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
ZiJ7c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5hbWV9IgorCisKK2NsYXNzIGNwcF9hcmdfbGlzdChv
YmplY3QpOgorICAgIGFyZ3M6IExpc3RbY3BwX2FyZ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBhcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworCisgICAg
ZGVmIG5hbWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKGEubmFtZSBmb3IgYSBp
biBzZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhwcnMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3Bw
X2V4cHIoYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiBkZWNs
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZGVjbChhLnR5cGUsIGEubmFtZSkgZm9yIGEg
aW4gc2VsZi5hcmdzXQorCisgICAgZGVmIHR5cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2Eu
dHlwZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuICIsICIuam9pbihzdHIoYSkgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisKK2NsYXNz
IGNwcF9mdW5jKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0
CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgaXNfZXh0ZW5zaW9uOiBib29sCisgICAg
b3ZlcmxvYWRfc3VmZml4OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIs
IHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246
IGJvb2wpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucmV0dXJuX3R5
cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYu
aXNfZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4
ID0gIiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7c2VsZi5y
ZXR1cm5fdHlwZX0ge3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSkiCisKKyAgICBkZWYgZ2V0
X2FyZ3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBUdXBsZVtMaXN0W2NwcF9hcmddLCBMaXN0W2NwcF9h
cmddXToKKyAgICAgICAgaW5fYXJncyA9IFtdCisgICAgICAgIG91dF9hcmdzID0gW10KKyAgICAg
ICAgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6CisgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAg
ICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCkgb3IgXAorICAgICAgICAgICAgICAgIGEudHlw
ZS5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAg
ICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikgYW5kICgo
KGEudHlwZS5pc19zcGFuKCkgb3IgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpKSBhbmQgbm90IGEu
dHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpKSk6CisgICAgICAgICAgICAgICAg
b3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluX2Fy
Z3MgKz0gW2FdCisgICAgICAgICAgICAjZm10OiBvbgorICAgICAgICByZXR1cm4gaW5fYXJncywg
b3V0X2FyZ3MKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZF90eXBlKHNlbGYsIHR5cGU6IGNwcF90
eXBlKToKKyAgICAgICAgaWYgdHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19pbXBsZW1lbnRl
ZChzZWxmKToKKyAgICAgICAgIyIgaW4gYS50eXBlLnR5cGVfbmFtZSBmb3IgYSBpbiBzZWxmLmFy
Z3MuYXJncyk6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICNpZiAiR0NHTHN5
bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1lOgorICAgICAgICAjICAgIHJldHVybiBG
YWxzZQorICAgICAgICBpZiBhbnkoYS5uYW1lID09ICJidWZTaXplIiBmb3IgYSBpbiBzZWxmLmFy
Z3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEudHlw
ZS5pc19wb2ludGVyKCkgYW5kIGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLmlzX3ZvaWQoKSBmb3Ig
YSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg
aWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoYS50eXBlKSBmb3IgYSBpbiBzZWxm
LmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5y
ZXR1cm5fdHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAg
ICAgaWYgbm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLnJldHVybl90eXBlKToKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK3dlYmtpdF9p
cGNfdHlwZXM6IERpY3RbY3BwX3R5cGUsIGNwcF90eXBlXSA9IHt9CisKK3dlYmtpdF9pcGNfdHlw
ZXNfY29udmVydGVyczogRGljdFtUdXBsZVtjcHBfdHlwZSwgY3BwX3R5cGVdLCBDcHBFeHByQ29u
dmVydGVyXSA9IHt9CisKKworZGVmIHdlYmtpdF9pcGNfY29udmVydF9leHByKGV4cHI6IGNwcF9l
eHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgIiIiIENvbnZlcnRzIGBleHBy
YCBvZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlwZWAgIiIiCisgICAgY29udmVydCA9IHdlYmtpdF9p
cGNfdHlwZXNfY29udmVydGVycy5nZXQoKGV4cHIudHlwZSwgdHlwZSksIE5vbmUpCisgICAgaWYg
bm90IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4cHIudHlwZSA9PSB0eXBlOgorICAgICAgICAgICAg
cmV0dXJuIGV4cHIKKyAgICAgICAgY29udmVydCA9IGNwcF9pbXBsaWNpdF9jYXN0CisgICAgcmV0
dXJuIGNvbnZlcnQoZXhwciwgdHlwZSkKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl90cmFu
c2Zlcl90eXBlKHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVs
ZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQor
ICAgIGFyaXR5ID0gdHlwZS5nZXRfYXJpdHkoKQorICAgIHdlYmtpdF9pcGNfZWxlbWVudF90eXBl
ID0gd2Via2l0X2lwY190eXBlc1tlbGVtZW50X3R5cGVdIGlmIG5vdCBlbGVtZW50X3R5cGUuaXNf
dm9pZCgpIGVsc2UgZ2V0X2NwcF90eXBlKCd1aW50OF90JykKKyAgICBpZiBhcml0eSBpcyBub3Qg
Tm9uZToKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8
e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9LCB7YXJpdHl9PiIpCisgICAgcmV0dXJuIGdl
dF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRf
dHlwZSl9PiIpCisKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKHR5cGU6
IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlw
ZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgaWYgZWxlbWVudF90
eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgZWxlbWVudF90eXBlID0gZ2V0X2NwcF90eXBlKCdHQ0dM
Y2hhcicpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgaW5saW5lX2Nh
cGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiBlbGVtZW50X3R5cGUudHlwZV9uYW1lIGVsc2UgNAor
ICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiVmVjdG9yPHtzdHIoZWxlbWVudF90eXBlKX0s
IHtzdHIoaW5saW5lX2NhcGFjaXR5KX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYic3Rk
OjphcnJheTx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4iKQor
CitkZWYgd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24oZXhwciA6IGNwcF9leHBy
LCB0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBwb2ludGVyX2Nh
c3RfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisg
ICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5
cGUsIGYibWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlw
ZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXplKCkpIikKKworICAgIGFz
c2VydCh0eXBlLmlzX3NwYW4oKSkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NH
TFNwYW48e3N0cih0eXBlLmdldF9hcml0eSgpKX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2lu
dGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpKSIpCisKKyMgU2VlIG1lc3NhZ2Vz
LnB5IGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlCit3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXMgPSBz
ZXQoCisgICAgWyJ1aW50OF90IiwgInVpbnQxNl90IiwgInVpbnQzMl90IiwgInVpbnQ2NF90Iiwg
ImludDhfdCIsICJpbnQxNl90IiwgImludDMyX3QiLCAiaW50NjRfdCIsICJib29sIiwgImZsb2F0
IiwgImRvdWJsZSIgImJvb2wiXQorKQorCisKK2RlZiB3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2Zv
cndhcmRlcl90eXBlKHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfdHlwZToKKyAgICBpZiB0eXBlLnR5
cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVybiB0eXBl
CisgICAgcmV0dXJuIHR5cGUuZ2V0X3J2YWx1ZV90eXBlKCkKKworCitkZWYgd2Via2l0X2lwY19t
b3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIGlmIGV4cHIudHlwZS50
eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1cm4gZXhw
cgorICAgIHJldHVybiBjcHBfbW92ZV9leHByKGV4cHIpCisKKworZGVmIHdlYmtpdF9pcGNfbXNn
X25hbWUoZnVuYzogY3BwX2Z1bmMpOgorICAgIHJldHVybiBmdW5jLm5hbWVbMF0uY2FwaXRhbGl6
ZSgpICsgZnVuYy5uYW1lWzE6XSArIGZ1bmMub3ZlcmxvYWRfc3VmZml4CisKKworY2xhc3Mgd2Vi
a2l0X2lwY19tc2cob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBpbl9hcmdzOiBjcHBfYXJn
X2xpc3QKKyAgICBvdXRfYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSB3ZWJraXRfaXBjX21zZ19u
YW1lKGZ1bmMpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gZnVuYy5nZXRfYXJnc19jYXRl
Z29yaWVzKCkKKyAgICAgICAgaXBjX2luX2FyZ3MgPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVz
W2EudHlwZV0sIGEubmFtZSkgZm9yIGEgaW4gaW5fYXJnc10KKyAgICAgICAgaXBjX291dF9hcmdz
ID0gW10KKyAgICAgICAgaWYgbm90IGZ1bmMucmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAg
ICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbZnVuYy5yZXR1
cm5fdHlwZV0sICJyZXR1cm5WYWx1ZSIpXQorICAgICAgICBmb3IgYSBpbiBvdXRfYXJnczoKKyAg
ICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlw
ZV0sIGEubmFtZSldCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6Cisg
ICAgICAgICAgICAgICAgaXBjX2luX2FyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50
NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpXQorICAgICAgICBzZWxmLmluX2FyZ3MgPSBjcHBfYXJn
X2xpc3QoaXBjX2luX2FyZ3MpCisgICAgICAgIHNlbGYub3V0X2FyZ3MgPSBjcHBfYXJnX2xpc3Qo
aXBjX291dF9hcmdzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGlmIGxlbihz
ZWxmLm91dF9hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2Vs
Zi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSAtPiAoe3N0cihzZWxmLm91dF9hcmdzKX0pIFN5
bmNocm9ub3VzIgorICAgICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIo
c2VsZi5pbl9hcmdzKX0pIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2Jq
ZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBtc2dfbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6
IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisKKyAgICBwcmVfY2FsbF9zdG10czog
TGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRz
OiBMaXN0W3N0cl0KKyAgICByZXR1cm5fc3RtdHM6IExpc3Rbc3RyXQorICAgIGluX2V4cHJzOiBM
aXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBfZXhwcl0KKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBj
cHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYubXNnX25hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1l
KGNwcF9mdW5jKQorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5
cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLnByZV9j
YWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2Vs
Zi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtdCisg
ICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisg
ICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygp
CisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUp
CisgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmdzKGluX2FyZ3MpCisgICAgICAgIHNlbGYucHJv
Y2Vzc19vdXRfYXJncyhvdXRfYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQorCisg
ICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4o
W3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkKKyAgICAgICAgb3V0X2V4cHJzID0gIiwg
Ii5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgaXNfYXN5bmMg
PSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykgPT0gMAorICAg
ICAgICBpZiBpc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAg
ICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3Nl
bGYubXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbmRfcmVzdWx0
ID0gIiIKKyAgICAgICAgICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0bXRzOiAKKyAgICAgICAgICAg
ICAgICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRSZXN1bHQgPSAiCisgICAgICAgICAgICAgICAg
c2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbCisgICAgICAgICAgICAgICAgICAgICJpZiAoc2VuZFJl
c3VsdCkiICsgKCIgeyIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikK
KyAgICAgICAgICAgICAgICBdICsgWyIgICAgIiArIHMgZm9yIHMgaW4gc2VsZi5wb3N0X2NhbGxf
c3RtdHNdICsgWworICAgICAgICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxmLnBvc3RfY2Fs
bF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgc2Vs
Zi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3VsdH1zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5f
ZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFt
ZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOyIsCisgICAgICAgICAgICBdCisKKworICAgIGRlZiBwcm9jZXNzX2luX2FyZ3Moc2VsZiwg
aW5fYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBpIGluIGluX2FyZ3M6CisgICAg
ICAgICAgICBpZiBpLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAgICAgICAgIGFz
c2VydCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmluX2V4
cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihpLnR5cGUsIGkubmFtZSks
IHdlYmtpdF9pcGNfdHlwZXNbaS50eXBlXSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJncyhz
ZWxmLCBvdXRfYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBvIGluIG91dF9hcmdz
OgorICAgICAgICAgICAgaWYgby50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICB2
YWx1ZV90eXBlID0gby50eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3ZhbHVlX3R5cGVdCisgICAgICAg
ICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY192YWx1ZV90eXBlLCBvLm5hbWUgKyAiUmVw
bHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5
cGUpfSB7c3RyKHYubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgICAgICBlID0gY3BwX2V4
cHIodi50eXBlLCB2Lm5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2Vd
CisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAg
ICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgICAgICAgICAgZiJpZiAoe28ubmFtZX0pIiwK
KyAgICAgICAgICAgICAgICAgICAgZiIgICAgKntvLm5hbWV9ID0ge3dlYmtpdF9pcGNfY29udmVy
dF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9uCisg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxpZiBvLnR5cGUuaXNfc3BhbigpOgorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQor
ICAgICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5
cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5
cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10
cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAgICAgICAgICBz
ZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpXQorICAgICAgICAgICAg
ICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJzaXplX3QiKSwgZiJ7by5uYW1l
fS5idWZTaXplIildCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWwor
ICAgICAgICAgICAgICAgICAgICBmIm1lbWNweSh7by5uYW1lfS5kYXRhLCB7di5uYW1lfS5kYXRh
KCksIHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXplb2Yoe3N0cih3ZWJraXRfaXBjX3R5cGUuZ2V0X2Nv
bnRhaW5lZF90eXBlKCkpfSkpOyIKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcihvLnR5cGUsIG8u
bmFtZSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6
IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAg
ICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBlXQorICAgICAg
ICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKGlwY19yZXR1cm5fdHlwZSwgInJldHVyblZh
bHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4
cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2Vs
Zi5vdXRfZXhwcnMgPSBbcmV0dXJuX3ZhbHVlX2V4cHJdICsgc2VsZi5vdXRfZXhwcnMKKyAgICAg
ICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbZiJyZXR1cm4ge3N0cih3ZWJraXRfaXBjX2NvbnZlcnRf
ZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgcmV0dXJuX3R5cGUpKX07Il0KKworICAgIGRlZiBfX3N0
cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYu
bmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAge2J9IiBmb3IgYiBp
biBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxf
c3RtdHMgKyBzZWxmLnJldHVybl9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiJcbntzdHIoc2Vs
Zi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxmLm5hbWV9
KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH0KK3t7e2JvZHl9Cit9fSIiIgorCisKK2NsYXNzIHdl
YmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisg
ICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgYm9k
eTogTGlzdFtzdHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5j
KToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorCisgICAgICAgIHNlbGYucmV0
dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBf
ZnVuYy5hcmdzCisgICAgICAgIHNlbGYuYm9keSA9IFsibm90SW1wbGVtZW50ZWQoKTsiXQorICAg
ICAgICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlwZS50eXBlX25hbWUgIT0gInZvaWQiOgorICAgICAg
ICAgICAgc2VsZi5ib2R5ICs9IFsicmV0dXJuIHsgfTsiXQorCisgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVs
c2UgIiIKKyAgICAgICAgYm9keSA9ICJcbntcbiAgICAiICsgIlxuICAgICIuam9pbihzZWxmLmJv
ZHkpICsgIlxufSIKKyAgICAgICAgcmV0dXJuIGYiXG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9
KXtub2xpbnR9e2JvZHl9IgorCisKK2NsYXNzIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNf
Z2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgQysr
IGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19j
cHBfcHJveHlfaW1wbF0KKyAgICB1bmltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3Byb3h5X3Bs
YWNlaG9sZGVyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBf
ZnVuY10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYu
aW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKyAg
ICAgICAgc2VsZi51bmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKGYp
IGZvciBmIGluIHVuaW1wbGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToK
KyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBscyArIHNl
bGYudW5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmls
ZSgKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAg
Y29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9u
cygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToK
KyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBpc19leHRlbnNpb246
IGJvb2wKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlz
dFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHByczogTGlz
dFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgcmV0dXJuX3Zh
bHVlX2V4cHI6IE9wdGlvbmFsW2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNw
cF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAg
ICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSBjcHBfZnVuYy5vdmVybG9hZF9zdWZmaXgKKyAg
ICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtdKQorICAgICAgICBzZWxmLmlzX2V4dGVu
c2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRz
ID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2Nh
bGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5v
dXRfZXhwcnMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gTm9uZQorCisg
ICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisg
ICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygp
CisgICAgICAgIHNlbGYucHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3MuYXJncywgc2V0KGluX2Fy
Z3MpLCBzZXQob3V0X2FyZ3MpKQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBk
ZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9ucygpLiIg
aWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgorCisgICAgICAgIGluX2V4cHJzID0gIiwgIi5q
b2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IGxl
bihzZWxmLm91dF9leHBycykgPT0gMAorCisgICAgICAgIGNhbGxfZXhwciA9IGYibV9jb250ZXh0
LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBpZiBub3Qgc2VsZi5yZXR1
cm5fdmFsdWVfZXhwcjoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9l
eHByfTsiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFtm
IntzdHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxfZXhwcn07Il0KKyAgICAgICAg
aWYgbm90IGlzX2FzeW5jOgorICAgICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihl
KSBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0
bXRzICs9IFtmImNvbXBsZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9KTsiXQorCisgICAgZGVmIHBy
b2Nlc3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddLCBpbl9hcmdzOiBTZXRbY3BwX2Fy
Z10sIG91dF9hcmdzOiBTZXRbY3BwX2FyZ10pOgorICAgICAgICBmb3IgYSBpbiBhcmdzOgorICAg
ICAgICAgICAgaWYgYS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICBh
c3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGlmIGEgaW4gaW5fYXJnczoKKyAgICAgICAgICAgICAg
ICBzZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHNlbGYucHJvY2Vzc19vdXRfYXJnKGEpCisgICAgICAgIGlmIHNlbGYub3V0X2V4cHJzOgor
ICAgICAgICAgICAgb3V0X2FyZ19kZWNscyA9ICIsICIuam9pbihmIntzdHIoZS50eXBlKX0iIGZv
ciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2Nw
cF9hcmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh7b3V0X2FyZ19kZWNs
c30pPiYmIiksICJjb21wbGV0aW9uSGFuZGxlciIpXQorCisgICAgZGVmIHByb2Nlc3NfaW5fYXJn
KHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyh3
ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdlYmtpdF9pcGNfdHlwZXNbYS50
eXBlXSksIGEubmFtZSldCisgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29u
dmVydF9leHByKGNwcF9leHByKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSwgYS50
eXBlKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAg
ICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBf
YXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnBy
ZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5u
YW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIo
YS50eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9IildCisgICAgICAgICAgICBlID0gY3BwX2V4cHIo
dmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgd2Via2l0X2lwY192
YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1tlLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91
dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY192YWx1ZV90
eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAg
ICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAg
ICAgICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5h
bWV9U2l6ZSIpCisgICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbc2l6ZV9hcmddCisgICAg
ICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlw
ZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0oc3RhdGljX2Nhc3Q8
c2l6ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyAr
PSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIGYie3N0b3JlX2FyZy5uYW1lfSIpXQorICAgICAg
ICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAg
ICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIo
c3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAg
ICAgZWxpZiBhLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uo
YS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3Bw
X2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAg
ICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0g
e3N0cihzdG9yZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJz
ICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpXQorICAgICAgICAg
ICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAg
ICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3Rv
cmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBhLnR5cGUuaXNfcmVmZXJlbmNlKCkKKyAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAg
ICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQor
ICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c2VsZi5ucyh2YWx1ZV9hcmcu
dHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgZSA9IGNw
cF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHNlbGYu
aW5fZXhwcnMgKz0gW2VdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lw
Y19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY190eXBlKSld
CisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90
eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0dXJuX3R5
cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIocmV0dXJuX3R5cGUsICJy
ZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92
YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAg
ICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2Nv
bnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgaXBjX3JldHVybl90eXBlKSldCisgICAgICAg
IHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSByZXR1cm5fdmFsdWVfZXhwcgorCisgICAgZGVmIF9f
c3RyX18oc2VsZik6CisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAgICAgIHtifSIgZm9y
IGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9zdF9j
YWxsX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIiAgICB2b2lkIHtzZWxmLm5hbWV9e3NlbGYu
b3ZlcmxvYWRfc3VmZml4fSh7c3RyKHNlbGYuYXJncyl9KQorICAgIHt7e2JvZHl9CisgICAgfX0i
IiIKKworICAgIGRlZiBucyhzZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAgICMgVE9ETzog
bmFtZXNwYWNlIGluZm8gaXMgbm90IHN0b3JlZCBpbiBuYW1lcy4KKyAgICAgICAgaWYgdHlwZS50
eXBlX25hbWUgPT0gIkFjdGl2ZUluZm8iOgorICAgICAgICAgICAgcmV0dXJuICJXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6IiArIHN0cih0eXBlKQorICAgICAgICByZXR1cm4gc3RyKHR5cGUp
CisKK2RlZiB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzIDogSXRlcmFi
bGVbY3BwX2Z1bmNdKToKKyAgICBjb3VudHMgPSBjb2xsZWN0aW9ucy5Db3VudGVyKGYubmFtZSBm
b3IgZiBpbiBmdW5jcykKKyAgICBzdWZmaXhlcyA6IENvdW50ZXJbc3RyXSA9IGNvbGxlY3Rpb25z
LkNvdW50ZXIoKQorICAgIGZvciBmIGluIGZ1bmNzOgorICAgICAgICBpZiBjb3VudHNbZi5uYW1l
XSA+IDE6CisgICAgICAgICAgICBmLm92ZXJsb2FkX3N1ZmZpeCA9IHN0cihzdWZmaXhlc1tmLm5h
bWVdKQorICAgICAgICAgICAgc3VmZml4ZXMudXBkYXRlKFtmLm5hbWVdKQorCisKK2NsYXNzIGNv
bnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBM
aXN0W3dlYmtpdF9pcGNfY3BwX2ltcGxdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6
IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19j
cHBfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYp
OgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBzZWxmLmltcGxzKQor
CisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAg
ICAgY29udGV4dF9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc190
ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xh
c3MgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgV2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZ2VuZXJhdG9y
LiIKKyAgICBtc2dzOiBMaXN0W3dlYmtpdF9pcGNfbXNnXQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLm1zZ3MgPSBbd2Vi
a2l0X2lwY19tc2coZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X21lc3NhZ2VzKHNl
bGYpOgorICAgICAgICByZXR1cm4gIiIuam9pbihzdHIobSkgZm9yIG0gaW4gc2VsZi5tc2dzKQor
CisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKGNvbnRleHRfbWVz
c2FnZXNfZm4sIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X21lc3Nh
Z2VzKCkpKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYzogc3RyLCBhcmdfaW5kZXg6
IGludCk6CisgICAgciA9IGFyZ19zcGVjLnJzcGxpdCgiICIsIDEpCisgICAgbmFtZSA9ICIiCisg
ICAgdHlwZSA9IE5vbmUKKyAgICBpZiBsZW4ocikgPiAxIGFuZCByWzBdICE9ICJjb25zdCI6Cisg
ICAgICAgIG5hbWUgPSByWzFdLnN0cmlwKCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShy
WzBdKQorICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSAiYXJne30iLmZvcm1hdChhcmdfaW5kZXgp
CisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoYXJnX3NwZWMpCisgICAgcmV0dXJuIGNwcF9h
cmcodHlwZSwgbmFtZSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzOiBJ
dGVyYWJsZVtzdHJdKToKKyAgICByZXR1cm4gY3BwX2FyZ19saXN0KFtjcmVhdGVfY3BwX2FyZyhh
cmdfc3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nfc3BlY3Mp
XSkKKworCitkZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwg
YXJnc19zcGVjczogTGlzdFtzdHJdLCBpc19leHRlbnNpb246IGJvb2wpOgorICAgIHJldHVybiBj
cHBfZnVuYyhuYW1lPW5hbWUsIHJldHVybl90eXBlPWdldF9jcHBfdHlwZShyZXR1cm5fc3BlYyks
IGFyZ3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzKSwgaXNfZXh0ZW5zaW9uPWlzX2V4
dGVuc2lvbikKKworCitkZWYgcmVhZF9saW5lc191bnRpbChsaW5lcyA6IEl0ZXJhYmxlW3N0cl0s
IG1hdGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jbc3RyLCBOb25lLCBOb25lXToKKyAgICBmb3IgbGlu
ZSBpbiBsaW5lczoKKyAgICAgICAgaWYgcmUubWF0Y2gobWF0Y2gsIGxpbmUuc3RyaXAoKSk6Cisg
ICAgICAgICAgICBicmVhaworICAgICAgICB5aWVsZCBsaW5lCisKK2RlZiBtYWluKCk6CisgICAg
cGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10i
KQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGhlbHA9IlByaW50IHNvbWUgZGVidWcgaW5mbyBmcm9tIHRoZSBnZW5lcmF0b3Igc2NyaXB0
IikKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgIyBDb25zdHJ1Y3Qg
dGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQVSBw
cm9jZXNzLgorCisgICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMgcmVtb3Zl
ZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICMgd2l0aCB0
aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBhbiBleHRl
bnNpb24gZnVuY3Rpb24uCisgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3RyXSA9IHNl
dCgpCisgICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGZv
ciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnZp
cnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQorICAgICAgICAgICAgaWYg
bToKKyAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAg
ICAgICAgICBuYW1lPW1bMl0sCisgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0s
CisgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsz
XSksCisgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAorICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUoW3N0cihm
dW5jKV0pCisgICAgZnVuY3MgPSBbXQorICAgIHVuaW1wbGVtZW50ZWQgPSBbXQorICAgIGZvciBm
biBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6Cisg
ICAgICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIGZvciBf
IGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRl
ZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBmb3IgbGlu
ZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5l
cmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2go
ciJccyooXFMrKVxzKyhcdyspXCgoLiopXCkgZmluYWw7IiwgbGluZSkKKyAgICAgICAgICAgICAg
ICBpZiBtOgorICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWUgPSBtWzJdCisgICAgICAgICAg
ICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1b
MV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3Nw
ZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5z
aW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCisgICAgICAgICAgICAgICAg
ICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1
bmNzLmFwcGVuZChmdW5jKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pbXBsZW1lbnRlZC5hcHBlbmQoZnVuYykKKworCisgICAgd2Via2l0X2lw
Y19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcykKKyAgICAjIEluaXRpYWxpemUgV2ViS2l0
IElQQyBnZW5lcmF0aW9uLiBDb25zdHJ1Y3QgdHlwZSBtYXBwaW5ncyBmb3IgdGhlIHVzZWQgQysr
IHR5cGVzIC0+IElQQyB0eXBlcy4KKyAgICAjIFRPRE86IG5hbWVzcGFjaW5nIGlzc3Vlcy4KKyAg
ICBhaV90eXBlID0gZ2V0X2NwcF90eXBlKCJBY3RpdmVJbmZvJiIpCisgICAgYWlfdHJhbnNmZXJf
dHlwZSA9IGdldF9jcHBfdHlwZSgiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8iKQorICAgIHdlYmtpdF9pcGNfdHlwZXNbYWlfdHlwZV0gPSBhaV90cmFuc2Zlcl90eXBlCisK
KyAgICB3aXRoIG9wZW4odHlwZXNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGxpbmVzID0gaXRl
cihmLnJlYWRsaW5lcygpKQorICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVz
LCAiLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBU
aGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAg
ICAgICAgcGFzcworICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAi
Ly8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAg
ICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc3RkOjppc19zYW1lX3Y8
KFx3KyksIChcdyspPlwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2NwcF90eXBlKG1bMV0pXSA9IGdldF9jcHBfdHlwZSht
WzJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUubWF0Y2go
ciIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsi
LCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdl
dF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBl
KG1bMl0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNf
dHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5
cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICB3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3N0YXRpY19j
YXN0CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgRklYTUU6IEhlcmUg
d2UgdXNlIDw9IGluc3RlYWQgb2YgPT0gZHVlIHRvIHBvaW50ZXJzLCBzdWNoIGFzIEdDR0xzeW5j
LCBHQ0dMaW50cHRyLCAuLi4uCisgICAgICAgICAgICAjIFRoaXMgZW5kcyB1cCBmYWlsaW5nIGlm
IHRoZXJlIGV2ZXIgaXMgYXJyYXlzIG9mIHRoZXNlIHR5cGVzLCBzaW5jZSBhcnJheXMgYXJlIGN1
cnJlbnRseQorICAgICAgICAgICAgIyByZWludGVycHJldC1jYXN0ZWQuCisgICAgICAgICAgICAj
IFdlYktpdCBJUEMgcmVxdWlyZXMgb25lIHNpemVkIHR5cGUsIGJ1dCB0aGUgc2l6ZSBvZiB0aGVz
ZSBwb2ludGVyLWJhc2VkIHZhbHVlcyB3aWxsIGNoYW5nZQorICAgICAgICAgICAgIyBiYXNlZCBv
biB0aGUgcGxhdGZvcm0uCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3Nl
cnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAg
ICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFd
KQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0g
PSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZl
cnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2Vy
dFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVvZlwoKFx3KylcKSAmJiBzaXplb2ZcKChcdyspXCkg
PT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAg
ICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBp
cGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNwcF9jYXN0X3Ro
cm91Z2hfdHlwZSA9IGdldF9jcHBfdHlwZShtWzRdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9p
cGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBj
X3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0
X2Nhc3RfZnJvbV9wb2ludGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBl
KV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhy
b3VnaF90eXBlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAjIEZvciBhbGwgdHlw
ZXMgaW4gdGhlIGlucHV0IEFQSSwgZm9ybSBjb3JyZXNwb25kaW5nIElQQyB0eXBlcyBhbmQgY29u
dmVyc2lvbnMuCisgICAgIyBUT0RPOiB0aGlzIGlzIG5vdCBkcml2ZW4gYnkgdGhlIHR5cGluZy4K
KyAgICBhbGxfdHlwZXMgPSBzZXQoKQorICAgIGZvciBmdW5jIGluIGZ1bmNzOgorICAgICAgIGFs
bF90eXBlcy51cGRhdGUoZnVuYy5hcmdzLnR5cGVzKCkgKyBbZnVuYy5yZXR1cm5fdHlwZV0pCisg
ICAgIyBTb3J0IGJ5IGxlbiBzbyB0aGF0IHRlbXBsYXRlIGFyZ3MgY29tZSBiZWZvcmUgdGVtcGxh
dGVzLgorICAgIGZvciBjcHBfdHlwZSBpbiBzb3J0ZWQoYWxsX3R5cGVzLCBrZXk9bGFtYmRhIHg6
IGxlbih4LnR5cGVfbmFtZSkpOgorICAgICAgICBpZiBjcHBfdHlwZSBpbiB3ZWJraXRfaXBjX3R5
cGVzOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgIAorICAgICAgICBpZiBjcHBfdHlwZS5p
c19keW5hbWljX3NwYW4oKSBvciBjcHBfdHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICB0cmFu
c2Zlcl90eXBlID0gd2Via2l0X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKGNwcF90eXBlKQor
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBlLmdl
dF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgIGlmIGNwcF90eXBlLmdldF9jb250YWluZWRfdHlw
ZSgpLmlzX2NvbnN0KCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0
ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gd2Via2l0X2lwY19zcGFuX3RyYW5zZmVy
X3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc19jb252ZXJ0ZXJzWyh0cmFuc2Zlcl90eXBlLCBjcHBfdHlwZSldID0gd2Via2l0
X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgc3RvcmVfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShjcHBf
dHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHN0b3Jl
X3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZl
cnNpb24KKyAgICAgICAgZWxpZiBjcHBfdHlwZS5pc19yZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5p
c19jb25zdF9yZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAg
ICAgIHZhbHVlX3R5cGUgPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpIGlmIG5vdCBjcHBfdHlw
ZS5pc19jb250YWluZXIoKSBlbHNlIGNwcF90eXBlCisgICAgICAgICAgICBpZiB2YWx1ZV90eXBl
LmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAgICAgIGNvbnRhaW5lZF90eXBlID0gdmFsdWVf
dHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfY29u
dGFpbmVkX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2NvbnRhaW5lZF90eXBlXQorICAgICAgICAg
ICAgICAgIGlmIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUgPT0gY29udGFpbmVkX3R5cGU6Cisg
ICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlw
ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyX3R5
cGUgPSBnZXRfY3BwX3R5cGUoZiJ7dmFsdWVfdHlwZS5nZXRfY29udGFpbmVyX25hbWUoKX08e3N0
cih3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlKX0+IikKKyAgICAgICAgICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBlCisgICAgICAgICAgICAgICAg
ICAgICMgVE9ETzogSGVyZSBtaWdodCBiZSBjYXNlIHdoZXJlIFZlY3RvcjxHQ0dMaW50PiB3YXMg
dXNlZCBpbiB0aGUgaW50ZXJmYWNlIGFuZCBWZWN0b3I8aW50MzJfdD4gaXMgdXNlZAorICAgICAg
ICAgICAgICAgICAgICAjIGluIHRoZSBJUEMgZGVmaW5pdGlvbi4gVGhlcmUgaXMgbm8gc2Vuc2li
bGUgd2F5IHRvIGRvIHRoaXMgYXQgdGhlIG1vbWVudC4gV2UgZG8gbm90IGNvbnZlcnQsIHJhdGhl
cgorICAgICAgICAgICAgICAgICAgICAjIGV4cGVjdCB0aGF0IGFsbCB0aGUgaW52b2NhdGlvbnMg
YXJlIHRha2VuIGNhcmUgb2YgdGhlIGZhY3QgdGhhdCBHQ0dMaW50IGlzIHRoZSBzYW1lIHR5cGUg
YXMgaW50MzJfdC4KKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgbm90IGhvbGQgZm9y
IGFsbCB0eXBlcyBzdWNoIGFzIEdDR0xib29sZWFuLgorICAgICAgICAgICAgICAgICAgICAjd2Vi
a2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3Bw
X2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHZhbHVlX3R5cGUKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gY3Bw
X3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgIAorICAgICMgVGhlIGlucHV0IHRvIHRoZSBnZW5l
cmF0b3JzIGlzIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZS4KKyAgICAjIFJ1biB0aGUgdmFy
aW91cyBnZW5lcmF0b3JzLgorICAgIGdlbmVyYXRvcnMgPSBbCisgICAgICAgIGNvbnRleHRfcHJv
eHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzLCB1bmltcGxlbWVudGVkKSwKKyAgICAg
ICAgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgICAgICBjb250
ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcyksCisgICAgXQorICAgIGZvciBnIGlu
IGdlbmVyYXRvcnM6CisgICAgICAgIGcuZ2VuZXJhdGUoKQorCisgICAgaWYgb3B0aW9ucy52ZXJi
b3NlOgorICAgICAgICBwcmludCgiSW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIuam9p
bihmIiAgICB7c3RyKGkpfSBmaW5hbFxuIiBmb3IgaSBpbiBmdW5jcykpCisgICAgICAgIHByaW50
KCJVbmltcGxlbWVudGVkOiIpCisgICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAge3N0cih1KX0g
ZmluYWxcbiIgZm9yIHUgaW4gdW5pbXBsZW1lbnRlZCkpCisgICAgICAgIHByaW50KGYiSW1wbGVt
ZW50ZWQ6IHtsZW4oZnVuY3MpfSwgdW5pbXBsZW1lbnRlZDoge2xlbih1bmltcGxlbWVudGVkKX0s
IHRvdGFsOiB7bGVuKGZ1bmNzKStsZW4odW5pbXBsZW1lbnRlZCl9IikKKyAgICAgICAgcHJpbnQo
IkMrKyB0eXBlIG1hcCB0byBXZWJLaXQgSVBDIHR5cGUgbWFwOiIpCisgICAgICAgIGZvciBfLCB0
IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdCBpbiB3ZWJraXRfaXBjX3R5
cGVzOgorICAgICAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IC0+IHtzdHIod2Via2l0
X2lwY190eXBlc1t0XSl9IikKKyAgICAgICAgcHJpbnQoIkMrKyB0eXBlcyB3aXRob3V0IFdlYktp
dCBJUEMgdHlwZToiKQorICAgICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAg
ICAgICAgICAgIGlmIHQgbm90IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAg
cHJpbnQoZiIgICAge3N0cih0KX0iKQorICAgICAgICBwcmludCgiV2ViS2l0IElQQyB0eXBlIGNv
bnZlcnNpb25zIikKKyAgICAgICAgZm9yIChhLCBiKSwgY29udmVydGVyIGluIHdlYmtpdF9pcGNf
dHlwZXNfY29udmVydGVycy5pdGVtcygpOgorICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cihh
KX0gLT4ge3N0cihiKX0gOiB7Y29udmVydGVyLl9fbmFtZV9ffSIpCisgICAgICAgIHByaW50KCJE
b25lLiIpCisgICAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAg
IHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZDcxNDJlY2Y4NGU4ZDZmMjk5ZTVhY2JhZDI4ODRm
MGE2ODcyOTkxLi42MGVhODZhZmU4NzdhZjJmOTNiMTdhNzYyYTFjMmE0MzBhYzIzNDY1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJl
bW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vz
cy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAg
IEFkZHMgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHRoZSBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkuIERv
ZXMgbm90IHlldAorICAgICAgICBlbmFibGUgdGhlIHRlc3RzIHRoYXQgYWN0dWFsbHkgcGFzcyBi
dXQgd2hpY2ggd2VyZSBza2lwcGVkIGJlZm9yZSB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTEyLTAx
ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBBZGQg
c29tZSBXUEUtc3BlY2lmaWMgYmFzZWxpbmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUt
cHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBhMjI1MjhmYTFiMjY3ODczMTg1MzA1ODAwMzM5MGZkNzUzN2RjMGM2
Li5iZDA3MDkyMjM3YzdjN2JjNDgyMTQ5MGEyZDQ2NzI2M2M3MDhjOTQ4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMxNyw2ICszMTcsMTQgQEAgaHR0cC90
ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYWxsb3dlZC13aXRo
LWNyZWRlbnRpYWxzLmh0bWwKIGh0dHAvdGVzdHMvd2ViZ2wgWyBTa2lwIF0KIGpzL3NoYXJlZC1h
cnJheS1idWZmZXItd2ViZ2wuaHRtbCBbIFNraXAgXQogCit3ZWJraXQub3JnL2IvMjE4MTg0IGZh
c3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLWZhbHNlLmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8yMTgxODQgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxp
cFktdHJ1ZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE5MzQ5IGZhc3QvY2FudmFzL3dl
YmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5odG1sIFsgU2tpcCBd
Cit3ZWJraXQub3JnL2IvMjE5MzQ5IGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsY29udGV4dGNoYW5n
ZWRldmVudC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dl
YmdsL2dsLXBpeGVsc3RvcmVpLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTkzNTEg
ZmFzdC9jYW52YXMvd2ViZ2wvcHJlbXVsdGlwbHlhbHBoYS10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMTkzNTIgZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXN0
YXR1cy1mYWlsdXJlLmh0bWwgWyBGYWlsdXJlIF0KKwogd2ViZ3B1IFsgU2tpcCBdCiAKIGFjY2Vz
c2liaWxpdHkvcHJlc3Mtd29ya3Mtb24tY29udHJvbC10eXBlcy5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415219</attachid>
            <date>2020-12-02 06:46:43 -0800</date>
            <delta_ts>2020-12-02 07:03:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201202164640.patch</filename>
            <type>text/plain</type>
            <size>569720</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM4NWFiOWQ4Nzg5YzU4
MTBkOTNjOGIxNGExNWM5MWFlNzdiZGM3MS4uYTE1MDIwY2NkZTcxYjcwZmY4NGNlMmU0N2ExOWJh
OGNiOWU2OTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTEyLTAxICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVSBQcm9jZXNzOiBJT1N1cmZh
Y2VzIHNob3VsZCBub3QgYmUgbWFwcGVkIGludG8gdGhlIFdlYiBDb250ZW50IFByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWIzNTQ0Y2UwODJiZDhhYzJjZmZlY2IyMmQwMWY3MWE3NDI5NDUxZC4uZjY2OGI2
ZTNlYzVkNDExN2M3MWJiYTM2MDhmNWY4ODg1YTQ2MGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NTIgQEAKKzIwMjAtMTItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlV2ViR0xCYWNrZW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBJbXBsZW1lbnRlZCB3aXRo
IGEgZ2VuZXJhdG9yIHNjcmlwdCBpbXBsZW1lbnRpbmcgdGhlIElQQyB0byBwYXNzIHRoZQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTCBtZW1iZXIgZnVuY3Rpb24gY2FsbHMgZnJvbSB3ZWIgcHJv
Y2VzcyB0byB0aGUgR1BVCisgICAgICAgIHByb2Nlc3MuIFRoZSBzY3JpcHQgaXMgcnVuIGR1cmlu
ZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgY29tbWl0dGVk
IHRvIHRoZSByZXBvIGZvciBlYXNlIG9mIHJldmlldy4KKworICAgICAgICBJbXBsZW1lbnQgdGhl
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIFdlYktpdCBzaWRlLiBUaGlzIGNsYXNzIHdpbGwK
KyAgICAgICAgZm9yd2FyZCBjYWxscyByZWNlaXZlZCB2aWEgSVBDIHRvIHRoZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC4gQXQgdGhlCisgICAgICAgIG1vbWVudCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBpbnN0YW5jZSBpcyBhIGRpcmVjdCBjaGlsZCBvZgorICAgICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLgorCisgICAgICAgIENoYW5nZXMgV2ViS2l0IElQQyB0byBzdXBwb3J0IHJl
Y2VpdmluZyB0eXBlZCBhcnJheXMgYXMgcmVmZXJlbmNlcy4gVGhpcworICAgICAgICBpcyBuZWVk
ZWQgdG8gc3VibWl0IEdMIGRhdGEgYXJyYXlzLCBzdWNoIGFzIEdMZmxvYXQgYXJyYXlzIGRpcmVj
dGx5IGZyb20KKyAgICAgICAgdGhlIElQQyBkYXRhIHN0b3JlIHdpdGhvdXQgYW4gZXh0cmEgY29w
eS4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9ydCBwYXNzaW5nIGRhdGEg
cmVmZXJlbmNlcywgaS5lLgorICAgICAgICBEYXRhUmVmZXJlbmNlIG9yIEFycmF5UmVmZXJlbmNl
LCBhcyBhIHN5bmNocm9uaXplZCBjYWxsIHJldHVybiB2YWx1ZS4KKyAgICAgICAgVGhlIGNhbGxl
ciBtdXN0IGhvbGQgdGhlIENvbm5lY3Rpb246OnN5bmNTZW5kKCkgcmVzdWx0IChEZWNvZGVyIG9i
amVjdCkKKyAgICAgICAgZm9yIHRoZSBkdXJpYXRpb24gb2YgdXNpbmcgdGhlIGRhdGEgdmFsdWVz
LgorCisgICAgICAgIENvbXBvc2l0aW5nIGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIFBMQVRGT1JN
KENPQ09BKS4KKworICAgICAgICBNaXNzaW5nOgorICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4
dCBsb3NzCisgICAgICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGNoYW5nZQorICAgICAgICAgLSBQ
YWludCBXZWJHTCBjb250ZW50cyB0byAyRCBjYW52YXMKKyAgICAgICAgIC0gVXBsb2FkIHZpZGVv
IHRvIFdlYkdMCisgICAgICAgICAtIFVwbG9hZCBjYW52YXMgdG8gV2ViR0wKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpkaWRDb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlc2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmg6IEFkZGVkLgorICAgICAgICAoc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6Cisg
ICAgICAgIChzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChtb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QpOgorICAgICAgICAoYWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChhdHRhY2hT
aGFkZXIpOgorICAgICAgICAoYmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKGJpbmRCdWZm
ZXIpOgorICAgICAgICAoYmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGJpbmRSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoYmluZFRleHR1cmUpOgorICAgICAgICAoYmxlbmRDb2xvcik6CisgICAg
ICAgIChibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6Cisg
ICAgICAgIChibGVuZEZ1bmMpOgorICAgICAgICAoYmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAg
ICAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChjbGVhcik6CisgICAgICAgIChj
bGVhckNvbG9yKToKKyAgICAgICAgKGNsZWFyRGVwdGgpOgorICAgICAgICAoY2xlYXJTdGVuY2ls
KToKKyAgICAgICAgKGNvbG9yTWFzayk6CisgICAgICAgIChjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKGNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKGNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVTaGFkZXIpOgorICAgICAgICAoY3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChjdWxs
RmFjZSk6CisgICAgICAgIChkZWxldGVCdWZmZXIpOgorICAgICAgICAoZGVsZXRlRnJhbWVidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChkZWxldGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGRlbGV0ZVRleHR1cmUpOgor
ICAgICAgICAoZGVwdGhGdW5jKToKKyAgICAgICAgKGRlcHRoTWFzayk6CisgICAgICAgIChkZXB0
aFJhbmdlKToKKyAgICAgICAgKGRldGFjaFNoYWRlcik6CisgICAgICAgIChkaXNhYmxlKToKKyAg
ICAgICAgKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChkcmF3QXJyYXlzKToK
KyAgICAgICAgKGRyYXdFbGVtZW50cyk6CisgICAgICAgIChlbmFibGUpOgorICAgICAgICAoZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZmluaXNoKToKKyAgICAgICAgKGZsdXNo
KToKKyAgICAgICAgKGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGZyb250RmFjZSk6CisgICAgICAgIChnZW5lcmF0ZU1p
cG1hcCk6CisgICAgICAgIChnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoZ2V0QWN0aXZlVW5p
Zm9ybSk6CisgICAgICAgIChnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChnZXRCdWZmZXJQ
YXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFN0cmluZyk6CisgICAgICAgIChnZXRGbG9hdHYpOgor
ICAgICAgICAoZ2V0SW50ZWdlcnYpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0KToKKyAgICAgICAg
KGdldEludGVnZXI2NGkpOgorICAgICAgICAoZ2V0UHJvZ3JhbWkpOgorICAgICAgICAoZ2V0Qm9v
bGVhbnYpOgorICAgICAgICAoZ2V0RXJyb3IpOgorICAgICAgICAoZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAg
IChnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFNoYWRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQpOgorICAgICAgICAoZ2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRl
cmYpOgorICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRVbmlmb3JtZnYp
OgorICAgICAgICAoZ2V0VW5pZm9ybWl2KToKKyAgICAgICAgKGdldFVuaWZvcm11aXYpOgorICAg
ICAgICAoZ2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdldFZlcnRleEF0dHJpYk9mZnNl
dCk6CisgICAgICAgIChoaW50KToKKyAgICAgICAgKGlzQnVmZmVyKToKKyAgICAgICAgKGlzRW5h
YmxlZCk6CisgICAgICAgIChpc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGlzUHJvZ3JhbSk6Cisg
ICAgICAgIChpc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChpc1NoYWRlcik6CisgICAgICAgIChp
c1RleHR1cmUpOgorICAgICAgICAobGluZVdpZHRoKToKKyAgICAgICAgKGxpbmtQcm9ncmFtKToK
KyAgICAgICAgKHBpeGVsU3RvcmVpKToKKyAgICAgICAgKHBvbHlnb25PZmZzZXQpOgorICAgICAg
ICAocmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChzYW1wbGVDb3ZlcmFnZSk6CisgICAg
ICAgIChzY2lzc29yKToKKyAgICAgICAgKHNoYWRlclNvdXJjZSk6CisgICAgICAgIChzdGVuY2ls
RnVuYyk6CisgICAgICAgIChzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5jaWxN
YXNrKToKKyAgICAgICAgKHN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoc3RlbmNpbE9w
KToKKyAgICAgICAgKHN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmYp
OgorICAgICAgICAodGV4UGFyYW1ldGVyaSk6CisgICAgICAgICh1bmlmb3JtMWYpOgorICAgICAg
ICAodW5pZm9ybTFmdik6CisgICAgICAgICh1bmlmb3JtMWkpOgorICAgICAgICAodW5pZm9ybTFp
dik6CisgICAgICAgICh1bmlmb3JtMmYpOgorICAgICAgICAodW5pZm9ybTJmdik6CisgICAgICAg
ICh1bmlmb3JtMmkpOgorICAgICAgICAodW5pZm9ybTJpdik6CisgICAgICAgICh1bmlmb3JtM2Yp
OgorICAgICAgICAodW5pZm9ybTNmdik6CisgICAgICAgICh1bmlmb3JtM2kpOgorICAgICAgICAo
dW5pZm9ybTNpdik6CisgICAgICAgICh1bmlmb3JtNGYpOgorICAgICAgICAodW5pZm9ybTRmdik6
CisgICAgICAgICh1bmlmb3JtNGkpOgorICAgICAgICAodW5pZm9ybTRpdik6CisgICAgICAgICh1
bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgICh1c2VQcm9ncmFtKToKKyAgICAgICAgKHZhbGlk
YXRlUHJvZ3JhbSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAodmVydGV4QXR0cmliMmYpOgorICAgICAgICAodmVydGV4QXR0
cmliMmZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjNmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0
ZnYpOgorICAgICAgICAodmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgICh2aWV3cG9ydCk6
CisgICAgICAgIChidWZmZXJEYXRhMCk6CisgICAgICAgIChidWZmZXJEYXRhMSk6CisgICAgICAg
IChidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMCk6CisgICAgICAgIChyZWFk
blBpeGVsczEpOgorICAgICAgICAodGV4SW1hZ2UyRDApOgorICAgICAgICAodGV4SW1hZ2UyRDEp
OgorICAgICAgICAodGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UyRDEpOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQwKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJ
bWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAo
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQxKToKKyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWQp
OgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoZGVsZXRl
VmVydGV4QXJyYXkpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChiaW5kVmVy
dGV4QXJyYXkpOgorICAgICAgICAoY29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoZnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoaW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyZWFkQnVmZmVyKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgICh0ZXhT
dG9yYWdlMkQpOgorICAgICAgICAodGV4U3RvcmFnZTNEKToKKyAgICAgICAgKHRleEltYWdlM0Qw
KToKKyAgICAgICAgKHRleEltYWdlM0QxKToKKyAgICAgICAgKHRleFN1YkltYWdlM0QwKToKKyAg
ICAgICAgKHRleFN1YkltYWdlM0QxKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTNEKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1h
Z2UzRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKToKKyAgICAgICAgKGNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChnZXRGcmFnRGF0YUxvY2F0aW9uKToK
KyAgICAgICAgKHVuaWZvcm0xdWkpOgorICAgICAgICAodW5pZm9ybTJ1aSk6CisgICAgICAgICh1
bmlmb3JtM3VpKToKKyAgICAgICAgKHVuaWZvcm00dWkpOgorICAgICAgICAodW5pZm9ybTF1aXYp
OgorICAgICAgICAodW5pZm9ybTJ1aXYpOgorICAgICAgICAodW5pZm9ybTN1aXYpOgorICAgICAg
ICAodW5pZm9ybTR1aXYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAg
KHVuaWZvcm1NYXRyaXgzeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAg
ICAgICAodW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzeDRmdik6
CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliSTRp
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1
aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcik6CisgICAgICAgIChkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChkcmF3QnVm
ZmVycyk6CisgICAgICAgIChjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKGNsZWFyQnVmZmVydWl2
KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmaSk6Cisg
ICAgICAgIChjcmVhdGVRdWVyeSk6CisgICAgICAgIChkZWxldGVRdWVyeSk6CisgICAgICAgIChp
c1F1ZXJ5KToKKyAgICAgICAgKGJlZ2luUXVlcnkpOgorICAgICAgICAoZW5kUXVlcnkpOgorICAg
ICAgICAoZ2V0UXVlcnkpOgorICAgICAgICAoZ2V0UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChj
cmVhdGVTYW1wbGVyKToKKyAgICAgICAgKGRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoaXNTYW1w
bGVyKToKKyAgICAgICAgKGJpbmRTYW1wbGVyKToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGZlbmNl
U3luYyk6CisgICAgICAgIChpc1N5bmMpOgorICAgICAgICAoZGVsZXRlU3luYyk6CisgICAgICAg
IChjbGllbnRXYWl0U3luYyk6CisgICAgICAgICh3YWl0U3luYyk6CisgICAgICAgIChnZXRTeW5j
aSk6CisgICAgICAgIChjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChpc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiZWdpblRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KToKKyAgICAgICAgKHBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAocmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoYmlu
ZEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKGdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKGdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAg
ICAgKGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAodW5pZm9ybUJsb2NrQmlu
ZGluZyk6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZlckFOR0xFKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAg
KGNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKGlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChp
bnNlcnRFdmVudE1hcmtlckVYVCk6CisgICAgICAgIChwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAg
ICAgICAocG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoZHJhd0J1ZmZlcnNFWFQpOgorICAg
ICAgICAoZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRh
c2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaC4KKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OkFycmF5UmVmZXJlbmNlKToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
QXJyYXlSZWZlcmVuY2U6OnZlY3RvciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJl
ZmVyZW5jZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OndyYXBGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmluZ1Jl
ZmVyZW5jZS5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgICogU2hhcmVkL3NvdXAvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzU291cC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2VydGlm
aWNhdGVJbmZvPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZp
Y2F0ZUluZm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlv
blNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuY3BwLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNv
bnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0
aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENv
bG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xv
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
RGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1
cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
b250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdp
ZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00Zik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4
QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFn
ZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29t
cHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNh
bXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZl
cnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJr
ZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
b3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50
ZXJmYWNlaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRVc2VH
UFVQcm9jZXNzRm9yV2ViR0wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisKIDIwMjAtMTItMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgR1BVIFByb2Nlc3M6IElPU3VyZmFjZXMgc2hvdWxkIG5vdCBi
ZSBtYXBwZWQgaW50byB0aGUgV2ViIENvbnRlbnQgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYTcyM2FlMDYzNzNkMmY1ZjVmZDAyZjdjMTgyOGYzMmYxNzAxYjVhNC4uZTNkZTA3OTY2N2Jj
YWFhODFjZTViOTUzNTAyNDI1OWJhMjZjM2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjQ4
LDYgKzEyNDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNmZWIw
MzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4OGJkNDA3N2EwYzU0
YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMTEs
MTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lu
dFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNv
cmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgyZGY4ODdiMWIwYzRkNGI4
MTJjYmZlNWEwNmRlYWU0MTgxMjBlMmIuLjEwNzE0ZjNmNGE1NjhmZmQwZDE1Njk0MDJlMGVjZGM0
Nzg3MDE3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJjNzk1MjZiYzZjZDE0
M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQwMGIwZmNlMjQxZWZm
YjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiArMzU3LDE0IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2Nv
YS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmU3
ZTlmZDJiOTFlYjgxMDEzNDU2MGRmZmQ4MGFjZDIxMGIzZmRjMC4uM2I0NDA5ZWIwNmRhYzg3ZDE5
ZDVhYzI5OWFiOTEyODJiZjg5ZWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Myw3ICsyMDUzLDcgQEAKIAkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xB
bnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcw
MDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdG
QjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9u
c0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3
RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07CisJCTZFNjdEMkE5
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDMyMjlD
OUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEUy
MjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RjIyOURD
RDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAv
KiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Nyw2ICsyMjQ3LDggQEAK
IAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAw
QzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEw
MzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjkwNDE3MDI1
NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVD
QjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIz
NEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUy
NTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3Mzgx
RkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAv
KiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjksOSArMTAyMzEsMTQgQEAK
IAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAx
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI0MjU0
QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTUyNTcxMkU5MTAw
MzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTcyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNldHRpbmdz
LmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNFMjRGQUQzNjAw
MDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5p
ZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjIxLDYgKzI2NjI4LDggQEAKIAkJCQkwNzRFODJCOTE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0Yx
M0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJN0I5MDQxNkUyNTUw
MTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJ
CQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywK
IAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywK
IAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAt
MjY3ODcsNiArMjY3OTYsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBENkExMjJBMjRFOTAw
MkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJG
MzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJCQkJN0I2REM4MTUy
NTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNw
cCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1OTU5NjIxNDZERjc4
MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RBNTk1OTcyMTQ2REY3
ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2Nzk4LDYgKzI2ODA5
LDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4RkIg
LyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0
QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlD
REVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJ
CQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJ
CQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
ICovLApAQCAtMzIwOTksNiArMzIxMTEsNyBAQAogCQkJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUzQyAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNCOUU5MjM3
NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVhZGVycyAqLywKQEAg
LTM0MDM1LDYgKzM0MDQ4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2
MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJl
bW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0
RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVjNzE3NDU5N2YwNmUw
ZTUwOWU3OGZhYS4uNmM3ODNiZDIyYmRmMTJlYTRjMDNkMzcxM2QwZWU3Yzc5MTE0ZGNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTY4MSwxNyArNjgxLDggQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAg
ICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ly8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZlclN1YkRhdGEoKSBjYWxscyB0byB1
c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0ciA9IG1fY29udGV4dC0+bWFwQnVm
ZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNldC51bnNhZmVHZXQoKSwgc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0aFB0ci51bnNhZmVHZXQoKSAqIGNo
ZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4o
ZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZz
ZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICogZWxlbWVudFNpemUpOwotCi0gICAg
aWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkpCi0gICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdldEJ1ZmZlclN1
YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZmZXIiKTsKLSNlbmRpZgotICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgbV9jb250ZXh0
LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9mZnNldCwgbWFrZUdDR0xTcGFuKHN0
YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVP
ZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBjb3B5TGVuZ3RoICogZWxlbWVudFNp
emUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCkBAIC0xOTY3LDkgKzE5
NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRl
cihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0UXVl
cnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRR
dWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8V2ViR0xT
YW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAgLTIwNTks
MTcgKzIwNDgsMTEgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxl
clBhcmFtZXRlcihXZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1M6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAg
ICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVyaXYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIu
b2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01B
WF9MT0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0g
ICAgICAgIGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFy
YW1ldGVyZnYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5f
TE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0
ZXIiLCAiSW52YWxpZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0ODUs
MjQgKzI0NjgsMjQgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2
ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZl
Y3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKLSAgICAKICAg
ICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9U
WVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX1RZUEU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGVudW0+KHgpOyB9KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX1NJWkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKKyAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19JTkRFWDoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX09GRlNFVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0FSUkFZX1NUUklERToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX01B
VFJJWF9TVFJJREU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
SVNfUk9XX01BSk9SOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9y
bUluZGljZXMsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lT
X1JPV19NQUpPUjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
Pih4KTsgfSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtcyIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3
Miw4ICszNTU1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEcKIAogICAgIGNsZWFySWZDb21w
b3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwogCi0gICAgR0NHTHNpemVpIGxlbmd0aCwgY29sdW1u
cywgcm93czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVz
dEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgJmxlbmd0aCwgJmNv
bHVtbnMsICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpLCB0cnVlKTsK
KyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDQwMDcxY2EyM2Iy
YzM1NWUxZTgxMDY0NjE3ZDUyYjlkMmZiODdhYzYuLmY3YzZhMmU4MmE0YmYwMzdhMWI0NzdkNzgz
ZmE1NDFhYzRmNTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MzIsOCArNzMyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0KLQotICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRl
cywgaG9zdFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAg
ICAgaWYgKGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3Bh
dGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250
ZXh0Y3JlYXRpb25lcnJvckV2ZW50LApAQCAtNDM5NSwxNSArNDM5NCwxMiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aAogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAog
I2lmIFVTRShBTkdMRSkKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBHQ0dMc2l6ZWkg
Y29sdW1ucyA9IDA7Ci0gICAgR0NHTHNpemVpIHJvd3MgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJv
d3MsIGRhdGEsIGZhbHNlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVu
Z3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxz
LmJ5dGVMZW5ndGgoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJk
NTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdl
YkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFwaGljc0Nv
bnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5jU3RhdHVz
KTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5
bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBpZiAobV9z
eW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAgICBzY2hl
ZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5k
ZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjliODZiYzMx
ODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
NTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVybiBtX2Ns
aWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShX
RUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJRCBDaHJv
bWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsK
QEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1fcGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQorICAgIC8v
IFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQgd29yaywg
cmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3NjQxZDAx
NDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEzY2ZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYK
KwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1
bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAz
YTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0OTkwMzc1
ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMg
dGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RX
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRleCA0M2Ri
MWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2MzMzdiMmU1
MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAvLyBNZXRo
b2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUyZmIzLi43
YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMzQsMTMg
KzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1
cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7
IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0luV2ViUHJv
Y2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3Mo
KTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZiZDFkNDNj
MDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFmNjRhYTBk
ZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC05Niw2
ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1bmRsZUlz
V2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJv
b2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07CisgICAgcmV0
dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNz
KCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9IFtbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4NjczNDQ3
NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAt
MjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9j
b21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NUQVRVU19L
SFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNp
b24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAvLyBHTF9B
UkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVy
cyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwog
CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQot
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7
CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAg
ICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNp
emVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKQEAg
LTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQU1E
KCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3QgYmUg
YXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZp
Z3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkZjRhMTE5
YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIxYWVhN2E1
YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQSElDU19D
T05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0
Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpAQCAt
NDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1bHQ7
CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhv
c3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdMOjpH
cmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJzKGF0
dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1MmRjNmVm
My4uNTYxM2NiMmY2YzkxMjcwYWJkMWJkNGU2NzEwMzllOGYyYzgwZmZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBA
IC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZvciBp
bXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgogICAg
IC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGljOgogICAg
ICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGljc0Nv
bnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24gaW4g
Y29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0IHRo
ZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBH
cmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAot
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRl
cnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgYWN0
aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFj
aFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05ODAsNyAr
OTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhD
b3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgPSAwOwog
CiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0dHJpYgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSA9
IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NH
TGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0xMTI0LDgg
KzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50
cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50
cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgR0NH
THZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAgICB2aXJ0
dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBnZXRRdWVy
eU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpID0gMDsK
QEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pID0gMDsK
ICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xi
b29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSA9
IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTeW5jaXYo
R0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVz
ZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NHTHVpbnQ+
IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRl
cgpAQCAtMTM5NCw3ICsxMzk0LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1
cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgK
aW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3
NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQg
R0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hh
ciBHQ0dMY2hhcjsKK3R5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYg
dm9pZCBHQ0dMdm9pZDsKKworLy8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0
Y2ggdGhlIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZp
bGUgZm9yIGFsbCBwbGF0Zm9ybXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBl
ZGVmIGludHB0cl90IEdDR0xzaXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19H
THN5bmMqIEdDR0xzeW5jOwotdHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1p
Y0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1
Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNp
dCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0
YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6
ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAg
ICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBH
Q0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwg
c3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAg
ICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAg
ICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6
OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQor
ICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0
YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBU
KiBkYXRhOwpAQCAtNzksNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50
PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBk
YXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDEx
IEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0
YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdD
R0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXpl
b2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1
ZlNpemU7CiB9OwpAQCAtMTUyLDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilb
Tl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4o
V1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihX
VEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3Qg
Y291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTBmMzMwNzA1NjA3NWNhOWFjNGU2M2FkNjY2MjM0ZDY5ZjA0MzIxMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cnMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpID0gZGVmYXVsdDsKKworUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1HcmFw
aGljc0NvbnRleHRHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK0V4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiAqdGhp
czsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVu
Y2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRG
b3JDcmVhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCkuaXNXZWJHTDI7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAg
Ly8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKQorICAgICAgICBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAg
ICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBtX2xheWVyQ29t
cG9zaXRlZCA9IHRydWU7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Cisg
ICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXJz
VG9BdXRvQ2xlYXIgPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICAg
ICAgaWYgKGF0dHJzLmRlcHRoKQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0g
R3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5z
dGVuY2lsKQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250
ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICB9CisgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaWRDb21wb3NpdGUo
KTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVh
cihHQ0dMYml0ZmllbGQgYnVmZmVycykKK3sKKyAgICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCku
cHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IGJ1
ZmZlcnM7Cit9CisKK0dDR0xiaXRmaWVsZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJz
VG9BdXRvQ2xlYXI7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpl
bmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQoreworICAgIC8vIFJlZGVjbGFyZWQgZm9yIGV4
cG9ydCByZWFzb25zLgorICAgIC8vIEZJWE1FOiBUaGUgd2hvbGUgZnVuY3Rpb24gc2hvdWxkIGJl
IHJlbW92ZWQuCisgICAgR3JhcGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1
ZmZlcigpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgeworICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOworICAgICAgICBt
X2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxp
emUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRl
bnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChl
eHRlbnNpb24pOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKworUGxhdGZv
cm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkyMjUzNTYx
MDFjNWNkNjQwNDFmYjFhMWI3N2RlOTAxZTNmNTJjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKK09CSkNfQ0xBU1MgV2ViR0xMYXllcjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluOworI2VuZGlmCisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgcHJveHkgc2lkZSBpbXBsZW1lbnRhdGlvbgorLy8gVGhpcyBpbXBsZW1lbnRz
IHRoZSBwYXJ0cyB0aGF0IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6
CisvLyAtIERyYXdpbmcgYnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCisvLyAtIENvbXBvc2l0
aW5nIHN1cHBvcnQuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNH
TCB7CitwdWJsaWM6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5h
YmxlZDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0woKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVy
ZSgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyAgICB2
b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0ZWQo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0Zmll
bGQpIGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciopIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOworICAg
IHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CisKKyNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXND
VigpIGZpbmFsOworI2VuZGlmCisgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3ZlcnJpZGVzLgor
ICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOworICAgIGJvb2wgc3VwcG9ydHMoY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYp
IGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAgIHZpcnR1YWwg
dm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2FwQ2hhaW4oKTsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
KyNlbmRpZgorCisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgorICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJp
bmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5h
YmxlZEV4dGVuc2lvbnM7CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIgY2xlYXIgdHJh
Y2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBtX2xheWVyQ29t
cG9zaXRlZCA9IGZhbHNlOworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9
IHsgMCB9OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggMjgz
ZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2ZkODIzZDA4MWM1NWU0YS4uN2MxNTFmYTI4NTBmMzNjMTQ5
YTlkYzgyMjM4MWI4ZmNiZGU5Y2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtNDYs
MjggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVu
c2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUlu
ZGV4ZWRHZXRTdHJpbmcpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhm
YWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9pc05WSURJQShmYWxzZSkK
LSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0gICAgLCBtX2lz
SW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0
aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUo
ZmFsc2UpCiAgICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykK
IHsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwgcmVtb3ZlIHRoaXMgaW5pdGlhbGl6YXRpb24gYWx0
b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJzdW1lcyB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGdy
YXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4KLSAgICBtX3ZlbmRvciA9IFN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1ZFTkRPUikpKTsKLSAgICBt
X3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRT
dHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2ZW5kb3JDb21wb25l
bnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnICcpOwotICAg
IGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJudmlkaWEiKSkKLSAgICAgICAgbV9pc05W
SURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImF0aSIpIHx8
IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIpKQotICAgICAgICBtX2lzQU1EID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW50ZWwiKSkKLSAgICAgICAg
bV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW1h
Z2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0aW9uID0gdHJ1ZTsKIH0KIAogRXh0ZW5z
aW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKQEAgLTEwMyw3ICs4
Myw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1pbnQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQorR0xpbnQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHRHTDo6Tk9fRVJST1I7CiB9CkBAIC0xMTQsMTAgKzk0LDExIEBAIFN0cmluZyBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3Qgc2hhZGVyCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGludCBzb3VyY2VMZW5n
dGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9T
T1VSQ0VfTEVOR1RIX0FOR0xFKTsKKwogICAgIGlmICghc291cmNlTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0
aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMg
bnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBpbnQgcmV0dXJuZWRMZW5ndGggPSAwOworICAgIEdDR0xp
bnQgcmV0dXJuZWRMZW5ndGggPSAwOwogICAgIGdsOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkp
OwogICAgIGlmICghcmV0dXJuZWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwpAQCAtMTQ3LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVB
dmFpbGFibGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9u
cyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihs
b25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgw
LCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ss
IHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsK
ICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlLgogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKQEAgLTE1Niw3ICsxMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVi
dWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZwogICAgIGdsOjpC
bGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzUsNyArMjE2LDcgQEAgdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGJ1ZnMpCiAgICAgZ2w6OkRyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRh
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjQzLDE1ICsyMjQsMTUgQEAgdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2kKICAgICBnbDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
bG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKKyAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4ob2Zmc2V0
KSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTM1MCw3ICszMzEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0MTIsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
cG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM5LDcgKzQyMCw3IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC00NTYsNTUgKzQzNyw3
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpCiAgICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi0jaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotc3RhdGljIHZvaWQgd2lwZUFs
cGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMpCi17Ci0gICAgLy8gV2UgY2FuIGFzc3VtZSB0aGlzIGRvZXNuJ3Qgb3ZlcmZsb3cg
YmVjYXVzZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMKLSAgICAvLyB1c2UgY2hlY2tlZCBhcml0aG1l
dGljLgotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBwaXhlbHNbaSArIDNd
ID0gMjU1OwotfQotI2VuZGlmCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9p
ZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcg
aXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91
bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCi0gICAgZ2w6OkZsdXNoKCk7Ci0gICAg
YXV0byBhdHRycyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBHQ0dMZW51
bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1fY29udGV4dC0+bV9pc0ZvcldlYkdMMiA/IEdyYXBoaWNz
Q29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSOwotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRH
TFN0YXRlJiBzdGF0ZSA9IG1fY29udGV4dC0+bV9zdGF0ZTsKLSAgICBpZiAoYXR0cnMuYW50aWFs
aWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8p
IHsKLSAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KElu
dFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVy
KGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fZmJvKTsKLSAgICAgICAgZ2w6OkZsdXNo
KCk7Ci0gICAgfQotICAgICh2b2lkKSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpOwotICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBkYXRh
KTsKLSAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKLSAgICBpZiAoYXR0cnMuYW50
aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVG
Qk8pCi0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fY29u
dGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgLy8g
QU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNSb2J1c3RBTkdM
RSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKLSAgICAgICAgLy8gc3ludGhldGljIGVy
cm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93LgotICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBp
ZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYmICFhdHRycy5hbHBoYSAmJiAoZm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRH
TDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpICYm
IChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX2ZibyB8fCAoYXR0cnMuYW50aWFs
aWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8p
KSkKLSAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKLSNlbmRpZgotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MTIsNyAr
NDQ1LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1mdlJv
YnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTIwLDcgKzQ1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sCiAgICAgZ2w6Okdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBhNzczMWRmZDIwYzVm
MDNhMzM1OTAzZmFhNmUzOGZmNzJmNGIyMzIzLi5jYmY0OThiZDdjMWExYWI5YWE2YjcwZmI1ZDM4
YWM0YjkyZmIwMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTU2LDIxICs1NiwxMiBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBz
cmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9u
ZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNp
Z25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywg
dW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBs
b25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlk
ZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9
Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KLSAgICBib29s
IGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBib29sIGlzSW1h
Z2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KLSAgICBTdHJp
bmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAgIGJvb2wgcmVx
dWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVp
cmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0
ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJp
Y3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2
b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
IG92ZXJyaWRlOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2
b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5z
LCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CkBAIC05Nyw3ICs4OCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVh
ZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTEzMCwx
OCArMTIwLDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0
OwogCi0gICAgYm9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1f
aXNJbnRlbDsKLSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZTsKLQogICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFs
c2UgfTsKIAotICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKLQog
ICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRl
cmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xD
b2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZl
ckZsb2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmlu
ZGV4IDEyN2EzYjhkYmEzYzNmNDRjZDc2NWRkOGZjNzExY2RkODc4ZGU5YTQuLjFkNjA0YjcxZDQ4
MTRmNTk3YzJjMmZjODllZGM5NjQ4ZGMxM2M3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCkBAIC00NDMsMzIgKzQ0Myw1MyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgZGF0YS5kYXRhLCBmYWxzZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2Fz
dDxHQ0dMdm9pZCo+KG9mZnNldCksIHRydWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkKIHsKLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBjYWxscyB3
aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBwcmV2aW91cyBy
ZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJ
WE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMg
Zml4ZWQsIGkuZS4sCisgICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQg
YmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAgICAgYXV0
byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgR0NHTGVudW0gZnJhbWVidWZmZXJU
YXJnZXQgPSBtX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZG
RVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgaWYgKGF0dHJzLmFudGlh
bGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CisgICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9zdGF0ZTsKKyAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5n
SWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fZmJvKTsKICAgICAgICAgZ2w6OkZs
dXNoKCk7CiAgICAgfQotICAgIGdsOjpSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YSk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQorICAgIG1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpOworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBk
YXRhKTsKKyAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKKyAgICBpZiAoYXR0cnMu
YW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAg
ICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX211bHRpc2FtcGxl
RkJPKTsKIAorICAgIGlmIChlcnJvcikgeworICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZh
aWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFj
ZSB0aGlzIGluIHRoZQorICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAg
dGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpC
R1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0
ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykpKQorICAgIGlmICghcmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAo
dHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJvdW5k
UmVhZEZCTyA9PSBtX2ZibyB8fCAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZC
TyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCiAgICAgICAgIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4
ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihkYXRhKSk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAjZW5k
aWYKIH0KIAotCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21t
b24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pCkBAIC04OTgsMjAgKzkxOSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
CiAgICAgZ2w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0
YS5kYXRhKTsKIH0KIAotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJh
bmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5n
dGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGdsOjpNYXBCdWZmZXJSYW5nZSh0
YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwotfQotCi1HQ0dMYm9vbGVhbiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQotewotICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAg
IHJldHVybiBnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIEdD
R0x2b2lkKiBwdHIgPSBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVm
U2l6ZSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisg
ICAgICAgIHJldHVybjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7
CisgICAgaWYgKCFnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRh
cmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGlu
dHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpCkBAIC0xMDA4LDE0ICsxMDI1LDE1
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsCiAgICAgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3Rv
cjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZl
Y3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBW
ZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7CiAgICAgQVNT
RVJUKHByb2dyYW0pOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZv
cm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRh
KCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5h
bWUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0xlbnVtIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRh
cmdldCkKQEAgLTIxMDEsMjIgKzIxMTksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAg
IHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVl
LmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7
Ci19Ci0KIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjM5MiwxMiArMjM5NCwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiAgICAgZ2w6OkVuZFF1
ZXJ5KHRhcmdldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5
T2JqZWN0dWl2KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHBhcmFtcykK
K0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKEdDR0x1
aW50IGlkLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMdWludCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFF1ZXJ5T2JqZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgMSwgbnVs
bHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIC8vIFRyYW5zZm9ybSBGZWVk
YmFjayBGdW5jdGlvbnMKQEAgLTI4MzksMjAgKzI4NDIsMjQgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW4KICAgICBnbDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGZsb2F0IHZhbHVlID0gMC5mOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6
R2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRy
LCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBm
bGFncykKQEAgLTI4OTUsMTIgKzI5MDIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAg
ICBnbDo6V2FpdFN5bmMoc3luYywgZmxhZ3MsIHRpbWVvdXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lKQogewor
ICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFN5bmNp
dihzeW5jLCBwbmFtZSwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUpOworICAgIGdsOjpHZXRTeW5j
aXYoc3luYywgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNzM1OTdmNDc1M2QwYmVjMWQwMmU3ZDVmY2ZkYzY0M2E5ODNjODhk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFBM
QVRGT1JNKENPQ09BKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluOjp+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4o
KSA9IGRlZmF1bHQ7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWU4OGMyZjk5YjFjYWE1ODEx
N2M3MzkxMWE1MWI2N2RkZTYzMmJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUkFQSElD
U19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIklPU3VyZmFjZS5o
IgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBbiBpbnRl
cmZhY2UgZm9yIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVm
ZmVyaW5nIHN3YXAKKy8vIGNoYWluIG9mIElPU3VyZmFjZXMuCisvLyBUaGUgaW1wbGVtZW50b3Ig
d2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KKy8vIFRoZSBjbGll
bnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2lsbCByZWNlaXZl
IHRoZSBtZXRhZGF0YQorLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJlZW4gZGlzcGxh
eWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5CisvLyBiZSBhYmxl
IHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCisvLyBFeGFtcGxlIHVz
ZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBhcyB0aGUgbWV0
YWRhdGEuIFRoaXMgd2F5CisvLyB3aGVuIHRoZSBkaXNwbGF5IGNsaWVudCBpcyBkb25lIHdpdGgg
dGhlIElPU3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1c2luZworLy8g
dGhlIGV4aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVyIHJlY3ljbGUg
bG9naWMuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4oKTsKKyAgICBzdHJ1Y3QgQnVmZmVyIHsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4K
KyAgICAgICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OyAvLyBQcm9kdWNlciBzcGVjaWZpYyBt
ZXRhZGF0YSBoYW5kbGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCisgICAgfTsKKyAgICAvLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgor
ICAgIC8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hpcCBvZiB0aGUg
Y29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhlCisgICAgLy8g
dGltZSBvZiB0aGUgY2FsbC4KKyAgICAvLyBSZXR1cm5zIGVpdGhlcjoKKyAgICAvLyAtIEVtcHR5
IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVkLgorICAgIC8vIC0gQnVmZmVy
IHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRsZSBpZiB0aGUg
cmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKKyAgICAvLyAgIGJ1dCB0aGUgc3VyZmFjZSBp
cyBzdGlsbCBpbiB1c2UuCisgICAgLy8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCisgICAgdmlydHVh
bCBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpID0gMDsKKworICAgIC8vIFByZXBhcmVzIHRoZSB0YXJn
ZXQgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgdHJh
bnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVm
ZmVyYC4KKyAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsKKworICAgIC8vIERl
dGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVy
IG1ldGFkYXRhIGhhbmRsZS4KKyAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJl
ZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUg
Y2FsbGluZworICAgIC8vIHRoaXMuCisgICAgdmlydHVhbCB2b2lkKiBkZXRhY2hDbGllbnQoKSA9
IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29jb2EubW0KaW5kZXggMmUxYzc5OWU4Mjg1M2IzMjBiOGNlZGRkNGE2ZmU1ZTUwNGE5ZDg5Yy4u
NDg5ZTQ1ZmNjZTYzYmQ4NTU4N2E0ODMyODk4ZDkzMjQxMWNlOWYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBv
cnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xF
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0
ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0
YXRpYyBFR0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JW
ZXJzaW9uID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5
IGRpc3BsYXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1
cHBvcnQgPSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRo
Vm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJv
Y2VzcygpKTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBw
b3J0KSB7CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xh
dGlsZSBwbGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2lu
Y2UgY2xpZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFs
IGNvbnRleHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAg
IGlmIChHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNU
b29NYW55Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7
CiAKICAgICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hh
cmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8g
aG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQu
Y29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlv
bigpLCAmc2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygp
LCBob3N0V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0
LnB0cigpLCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JH
UFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51
bGxwdHIsIHN3YXBDaGFpbikpOworfQorCiAjaWYgUExBVEZPUk0oTUFDKSAvLyBGSVhNRTogVGhp
cyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+
LgogCiBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0
T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9SZWdpc3RyeUdQVUlEIHBy
ZWZlcnJlZEdQVUlEKQpAQCAtMjA0LDggKzIxMCw4IEBAIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVn
aXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVs
CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCi0gICAg
OiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBE
ZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFyZWRDb250ZXh0KQogewogICAgIG1faXNGb3JXZWJH
TDIgPSBhdHRycy5pc1dlYkdMMjsKIApAQCAtMjkzLDI2ICsyOTksMjggQEAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHQKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgZ2w6OkVuYWJsZShH
cmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgpOwogCisgICAg
VmVjdG9yPEFTQ0lJTGl0ZXJhbCwgND4gcmVxdWlyZWRFeHRlbnNpb25zOworICAgIGlmIChtX2lz
Rm9yV2ViR0wyKSB7CisgICAgICAgIC8vIEZvciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1ZXJpZXMg
dG8gd29yay4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX29jY2x1
c2lvbl9xdWVyeV9ib29sZWFuIl9zKTsKKyAgICB9CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRl
bnNpb25zKCk7Ci0KICAgICBpZiAoIW5lZWRzRUFHTE9uTWFjKCkpIHsKLSAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZXF1aXJlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAg
ICAgICJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSIsIC8vIEZvciBJT1N1cmZhY2UtYmFja2Vk
IHRleHR1cmVzLgotICAgICAgICAgICAgIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIs
IC8vIEZvciBjcmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCi0gICAg
ICAgIH07Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHJlcXVpcmVkRXh0ZW5zaW9ucyk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFleHRlbnNpb25z
LnN1cHBvcnRzKHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSkpIHsKLSAgICAgICAgICAgICAgICBMT0co
V2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCByZXF1aXJlZEV4dGVuc2lv
bnNbaV0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRm9yIElPU3VyZmFj
ZS1iYWNrZWQgdGV4dHVyZXMuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdM
X0FOR0xFX3RleHR1cmVfcmVjdGFuZ2xlIl9zKTsKKyAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRo
ZSBFR0wgc3VyZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNp
b25zLmFwcGVuZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHJlcXVpcmVkRXh0
ZW5zaW9uc1tpXSk7CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRB
TFlTVCkKKyAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7Cisg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAg
aWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgIExPRyhX
ZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIGV4dGVuc2lvbi5jaGFyYWN0
ZXJzKCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGV4dGVuc2lv
bnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8v
IEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgTUFDQ0FUQUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3Rl
cHMgYXMgd2VsbCwgYnV0IHRoYXQKICAgICAvLyB3b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNj
cmVlbk1hYyBjb2RlIHRvIGJlIGV4cG9zZWQgdG8gQ2F0YWx5c3QgdG9vLgpAQCAtMzMxLDEzICsz
MzksMTcgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hh
bmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAotICAgIC8vIENyZWF0ZSB0aGUgV2ViR0xMYXllcgor
ICAgIGlmIChzd2FwQ2hhaW4pCisgICAgICAgIG1fc3dhcENoYWluID0gc3dhcENoYWluOworICAg
IGVsc2UgewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBtX3dlYkdM
TGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7
CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBM
YXllciJdOwogI2VuZGlmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBt
X3N3YXBDaGFpbiA9ICZbbV93ZWJHTExheWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8g
Q3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIu
CiAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBA
IC00MDYsMTMgKzQxOCwxMiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKCkKICAgICAgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQog
ICAgICAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdC
dWZmZXJGQk8pOwogICAgIH0KLSAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2Uo
bV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExh
eWVyKSB7Ci0gICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3lj
bGVCdWZmZXJdOworICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJl
Y3ljbGVCdWZmZXIoKTsKICAgICAgICAgaWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAg
ICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhh
bmRsZSk7Ci0gICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFj
aENsaWVudF07CisgICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0
YWNoQ2xpZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVH
TF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBA
IC01NzUsMTEgKzU4NiwxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBl
RGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0g
RUdMX05PX1NVUkZBQ0U7CiAgICAgfQogICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQg
YnVmZmVyIG5vdywgYmVjYXVzZSBpdCBtb3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBh
dCB0aGUgdGltZSBpdCB3aWxsIGJlIHJldXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0g
W21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0g
bV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFu
ZGxlKQogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1
ZmZlci5oYW5kbGUpOwogICAgIHJlY3ljbGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICBy
ZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKQoreworICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5
KCkpOwogICAgIGF1dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwog
ICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygp
IGNvbnN0CiAgICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3Rl
ZCB0byBhIGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVu
IGNvbnNpZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5z
CiAgICAgLy8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVu
IGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUg
d2lsbCBzdGlsbCBiZSBhIFdpbmRvd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBX
ZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlv
biwgYW5kCiAgICAgLy8gbV9kaXNwbGF5TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNl
LgogICAgIGlmIChwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC02ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJv
bSBvdGhlciBncmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGds
OjpGbHVzaCgpOwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVj
eWNsZUJ1ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5
Y2xlQnVmZmVyKCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9k
aXNwbGF5QnVmZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVy
IHByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJC
YWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVz
ZW50KHsgV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1
ZmZlciB9KTsKICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAK
ICAgICBib29sIGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBF
cnJvciB3aWxsIGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgp
IHdoaWNoIHdpbGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNO
ZXdCYWNraW5nKQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAg
ICAgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0
NTUwOWM3NDI5ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQorewor
ICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXll
ciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8g
Y29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBb
bV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV93ZWJHTExheWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQorR3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmFzQ1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVy
IHN3YXBDaGFpbl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFj
N2M5N2NmNjZlNzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3
ZWE4ODA5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaW1wb3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNp
bXBvcnQgPG1lbW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1zdHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5k
bGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZm
ZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFj
ZXMuCi0vLyBUaGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlz
cGxheS4KLS8vIFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFj
ZSBhbmQgd2lsbCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZh
Y2UgaGFzIGJlZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vz
c2FyaWx5Ci0vLyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1
c2UuCi0vLyBFeGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2Ug
YmluZGluZyBhcyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVy
IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRp
bnVlIHVzaW5nCi0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBi
dWZmZXIgcmVjeWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAog
LSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNv
bnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJ
bWFnZVNuYXBzaG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwog
Ci0vLyBSZXR1cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMg
YnVmZmVyLgotLy8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9m
IHRoZSBjb250ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8v
IHRpbWUgb2YgdGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVy
IGlmIG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5
IHN1cmZhY2UgYW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1
ZmZlciB3YXMgYXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2Uu
Ci0vLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIp
cmVjeWNsZUJ1ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGgg
YSBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2Yg
dGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZv
ckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwot
Ci0vLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRz
IGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZl
IGJlZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZv
cmUgY2FsbGluZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLm1tCmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMu
LjM4NTk3ZTRhOGY2MzNhNWVlNWRiNzQ5MzMwMjJkYzIzN2ZlN2U0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAt
MzIsMTMgKzMyLDM5IEBACiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIlBs
YXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKwor
Y2xhc3MgV2ViR0xMYXllclN3YXBDaGFpbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2Vi
R0xMYXllclN3YXBDaGFpbihXZWJHTExheWVyKiBsYXllcikgIDogbV9sYXllcihsYXllcikgeyB9
OworICAgIH5XZWJHTExheWVyU3dhcENoYWluKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworICAgIHZv
aWQgcHJlc2VudChCdWZmZXIpIG92ZXJyaWRlOworICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKKyAg
ICAgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKKyAgICAgICAg
ICAgICAgICBtX3NwYXJlQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKG1fc3BhcmVCdWZmZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorICAgIHZvaWQqIGRldGFjaENsaWVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9
IG1fZGlzcGxheUJ1ZmZlci5oYW5kbGU7CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUg
PSBudWxscHRyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBXZWJDb3JlOjpJ
T1N1cmZhY2UqIGRpc3BsYXlTdXJmYWNlKCkgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLnN1cmZh
Y2UuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgQnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBC
dWZmZXIgbV9zcGFyZUJ1ZmZlcjsKKyAgICBXZWJHTExheWVyKiBjb25zdCBtX2xheWVyOworfTsK
IAogQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIgewotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJC
dWZmZXIgX2NvbnRlbnRzQnVmZmVyOwotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX3Nw
YXJlQnVmZmVyOwotCiAgICAgQk9PTCBfcHJlcGFyZWRGb3JEaXNwbGF5OworICAgIE9wdGlvbmFs
PFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2FwQ2hhaW47CiB9CiAKIC0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQpAQCAtNDcsNiArNzMsNyBAQAogICAgIHNlbGYudHJhbnNmb3JtID0g
Q0FUcmFuc2Zvcm0zRElkZW50aXR5OwogICAgIHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50
c09wYXF1ZTsKICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOworICAg
IF9zd2FwQ2hhaW4uZW1wbGFjZShzZWxmKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNzMs
MzAgKzEwMCwyMSBAQAogICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KLQotLSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgcmVjeWNsZUJ1ZmZl
cgorLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2Fw
Q2hhaW4KIHsKLSAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKLSAgICAgICAgaWYgKF9z
cGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCi0gICAgICAgICAgICBfc3BhcmVCdWZmZXIu
c3VyZmFjZS5yZXNldCgpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShfc3BhcmVCdWZmZXIpOwot
ICAgIH0KLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBfc3dhcENoYWluLnZhbHVlKCk7CiB9
CiAKLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdM
TGF5ZXJCdWZmZXIpIGJ1ZmZlcgorLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheQogewotICAgIEFT
U0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIF9zcGFyZUJ1ZmZlciA9IFdURk1vdmUo
X2NvbnRlbnRzQnVmZmVyKTsKLSAgICBfY29udGVudHNCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0g
WUVTOwogfQogCiAtICh2b2lkKWRpc3BsYXkKIHsKLSAgICBpZiAoX2NvbnRlbnRzQnVmZmVyLnN1
cmZhY2UgJiYgX3ByZXBhcmVkRm9yRGlzcGxheSkgewotICAgICAgICBzZWxmLmNvbnRlbnRzID0g
X2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpOworICAgIGlmIChfc3dh
cENoYWluLT5kaXNwbGF5U3VyZmFjZSgpICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKKyAgICAg
ICAgc2VsZi5jb250ZW50cyA9IF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCktPmFzTGF5ZXJD
b250ZW50cygpOwogICAgICAgICBbc2VsZiByZWxvYWRWYWx1ZUZvcktleVBhdGg6QCJjb250ZW50
cyJdOwogICAgIH0KICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7CkBAIC0xMDYsMTMg
KzEyNCwxNCBAQAogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBOTzsKIH0KIAotLSAodm9pZCop
IGRldGFjaENsaWVudAorQGVuZAorCit2b2lkIFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnByZXNlbnQo
QnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBBU1NFUlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAg
ICB2b2lkKiByZXN1bHQgPSBfY29udGVudHNCdWZmZXIuaGFuZGxlOwotICAgIF9jb250ZW50c0J1
ZmZlci5oYW5kbGUgPSBudWxscHRyOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgQVNTRVJUKCFt
X3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgIG1fc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKG1fZGlz
cGxheUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAg
IFttX2xheWVyIHByZXBhcmVGb3JEaXNwbGF5XTsKIH0KLUBlbmQKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQppbmRleCAzOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi45OWFk
OTE2NTI1OTE4NzNlMGU4M2ZlODc4OTI1ZWNhMjMzYTFhMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0zNiw2ICszNiw3IEBACiAj
aW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgi
CiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAi
UGxhdGZvcm1JbWFnZUJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlR3JhcGhpYy5oIgogI2ltcG9y
dCA8Q29yZUltYWdlL0NJQ29udGV4dC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRl
eCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi5hZGQ1ZjM1MmFlNGRl
NmI2ZDVkYzE5MWU2NzNiNWFhZmE1NmRlOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5H
TChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dM
T3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTYsNyArNTYsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3Jj
WTAsIGxvbmcgc3JjWDEsIGxvbgogICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogI2VuZGlmCiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAjZW5k
aWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEcKICNlbmRpZgog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4
NjhiNTQ5OTNhNDQ0NDlhOC4uNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0Mzdi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wg
bWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kw
LCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRz
dFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVy
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGlu
dGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CkBAIC01Miw5ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBv
cEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9u
ZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2
MWZiYTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYi4uYjc4OTYwY2I0ODJlNGVmMmFiOThl
NDAzOTJhNjM1YmE3ZmZiN2JkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bi5jcHAKQEAgLTM2NiwxMSArMzY2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHMKICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50
LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqLCBib29sKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAq
KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNm
ZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhjNjQuLjZhM2EzOWZlM2ExYmE1YmQyNTk3NzE1ODk0
NzU2MWNjYWQ1YWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAg
LTkzLDcgKzkzLDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgs
IGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFk
aW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAKaW5kZXggMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMy4u
ZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5MWZiZTA3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMiBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9u
ZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVm
ZmVyKGxvbmcgLyogc3JjWDAgKi8sIGxvbmcgLyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8s
IGxvbmcgLyogc3JjWTEgKi8sIGxvbmcgLyogZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxv
bmcgLyogZHN0WDEgKi8sIGxvbmcgLyogZHN0WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAq
LywgdW5zaWduZWQgbG9uZyAvKiBmaWx0ZXIgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xl
bnVtKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwKICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhB
dHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1YjczOThk
MDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4My4uNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNmOTlh
N2RmYzJmNzhmYjRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDggKzc1
LDggQEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0
WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFz
aywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNh
bXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xp
bnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdD
R0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnNlcnRF
dmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFy
a2VyRVhUKHZvaWQpIG92ZXJyaWRlOwpAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lk
cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92
ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAogICAgIGludCBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IGMyNTViMGMxMmY0ZmNiZmE0NmRiMDJkNTVjODBiNGNiNzdkMTdiNzAuLjEw
MzU2ODhkMWNiZTliODBkMzkxMjI0NzhiZWRkOGQ5OGY2NTQ0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC01OCw2ICs1OCw5IEBACiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKK30K
ICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmIFVTRShOSUNPU0lBKQpAQCAtODYsNyAr
ODksNyBAQCB0eXBlZGVmIFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFt
ZUhhc2g7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMUHJpdmF0ZTsKIAotY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVi
bGljIEdyYXBoaWNzQ29udGV4dEdMCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywg
SG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbik7CkBAIC05
NCw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBS
ZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCYgc2hhcmVkQ29udGV4dCk7CisgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiopOworCiAgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb250ZXh0T2JqOyB9CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0
Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQpAQCAtMTkxLDcgKzE5Niw3IEBAIHB1
YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5p
Zm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZv
JikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQs
IEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAg
IHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNp
emVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJz
KTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1
ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBA
IC0yMTksOCArMjI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAg
ICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVy
dGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAK
ICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAg
LTIzNiw3ICsyMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xm
bG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2
b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkg
ZmluYWw7CkBAIC0zMTcsMTIgKzMyMSwxMCBAQCBwdWJsaWM6CiAjaWYgIVVTRShBTkdMRSkKICAg
ICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dM
ZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwogICAgIHZv
aWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNl
dCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5n
dGgpOwotICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0
LCBHQ0dMdWludCBsZW5ndGgpOwogI2VuZGlmCiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShH
Q0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFk
T2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7
CiAKLSAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSBmaW5hbDsK
LSAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAg
IHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGJsaXRGcmFtZWJ1
ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKICAg
ICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IGxheWVyKSBmaW5hbDsKQEAgLTM4NCw3ICszODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
bmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0
UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0
UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOworICAgIEdD
R0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgZmlu
YWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmlu
YWw7CkBAIC0zOTMsOCArMzk1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRl
cmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOwogICAgIC8vIGdl
dFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5h
bDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGZsb2F0
IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMc3luYyBm
ZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOwog
ICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgZmluYWw7CkBAIC00MDMsNyArNDA1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFn
cywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKICAg
ICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGF0IHRoZSBXZWJHTCBsZXZlbCBp
ZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3QuCi0gICAgdm9pZCBnZXRTeW5jaXYoR0NH
THN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBm
aW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3Qg
aWQpIGZpbmFsOwpAQCAtNDIwLDcgKzQyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRCdWZm
ZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0
IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKICAg
ICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUu
CiAgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpIGZpbmFsOwotICAg
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxH
Q0dMaW50PiYgcGFyYW1zKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5p
Zm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1
bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgR0NHTHVpbnQgZ2V0
VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtNDI5LDExICs0MzEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKIAot
I2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50
IGRzdE9mZnNldCk7Ci0jZW5kaWYKLQogICAgIC8vIEhlbHBlciBtZXRob2RzLgogCiAgICAgdm9p
ZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJ
bnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29u
dGV4dCYpOwpAQCAtNTE1LDcgKzUxMiwxMSBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gIVVTRShBTkdM
RSkKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIsIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxwdHIpOworI2Vsc2UKICAgICBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBE
ZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CisjZW5kaWYKIAogICAgIC8vIENhbGxlZCBv
bmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBP
cGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRz
IG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCkBAIC01MjgsNiAr
NTI5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNo
YXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJp
YnV0ZXMoKTsKICAgICAKKyAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJl
YWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKKwogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQg
ZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwog
ICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIApAQCAtNTQ4LDEwICs1NTEsMTMgQEAgcHJpdmF0
ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygp
IGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9v
bCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERp
c3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZv
aWQqIHBidWZmZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07Cisg
ICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRyYXdz
IHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4
IDYzNTZmODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2ODgxM2Y2YjkuLjYyOTgwMzg4YjY1MjQ3
OWNjYjQzMzFjMjVmZmVlYmI2NmM2Y2I1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgRXh0ZW5zaW9uc0dMJiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCkBAIC00
NDcsNyArNDQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
ICAgICA6OmdsRmx1c2goKTsKICAgICB9Ci0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuZGF0YSk7CiAgICAgaWYgKGF0dHJzLmFu
dGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAg
ICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
UiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4ODY3MjAzOWFlYTRmNTk5OTZlNGQ5NGUx
YzFhMGZlLi43YjJlYTA0YTIwOTk1NjVjNzkwZWE1N2M2NjdiMGQ5YzYwYWY1NWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTIwMjksMjIg
KzIwMjksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiA6OmdsR2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sIG1hcHBlZE5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0
VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0
cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0y
Mjc4LDE5ICsyMjYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
MkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAg
IGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwg
cHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7
CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNv
dW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkudmVy
dGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBIQVZFKE9Q
RU5HTF80KSAmJiBFTkFCTEUoV0VCR0wyKQpAQCAtMjMzNSw0MiArMjMxOSwyNSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xpbnRwdHIsCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9m
ZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBs
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRh
KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNCeXRl
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRz
dE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19Ci0KICNpZiBIQVZFKE9QRU5H
TF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCi17CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gOjpn
bE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdD
R0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIDo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpOwotfQorICAg
ICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IDo6Z2xNYXBCdWZmZXJSYW5nZSh0YXJn
ZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklU
KTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEs
IHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoITo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpKQor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogI2Vsc2UKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJS
YW5nZShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTHNpemVpcHRyLCBHQ0dMYml0ZmllbGQpCi17
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5V
U0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CisjZW5kaWYK
IH0KIAotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdD
R0xlbnVtKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBz
cmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGlu
dCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ss
IEdDR0xlbnVtIGZpbHRlcikKIHsKQEAgLTI3MTIsMTEgKzI2NzksMTEgQEAgUGxhdGZvcm1HTE9i
amVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmEKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkKK0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1l
KQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsK
LSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0Zm9ybUdM
T2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTYW1wbGVyKCkKQEAgLTI3NTYs
MTggKzI3MjMsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFt
ZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4KICAgICBVTlVTRURfUEFSQU0o
cGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwLmY7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCisKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7
CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAg
IHJldHVybiAwOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VT
eW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjgwNiwxMiAr
Mjc3NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3lu
YyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIFVOVVNFRF9QQVJBTSh0aW1l
b3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xz
eW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBz
eW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAgICAgVU5V
U0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAtMjg5MSwy
MSArMjg1OCwyMyBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiB7IH07CiB9
CiAKLSNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5h
bWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkK
IHsKKyAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7
CisjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKICAgICBBU1NFUlQocHJv
Z3JhbSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1l
LCBwYXJhbXMuZGF0YSgpKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1
bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3Vs
dC5kYXRhKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAgIFVOVVNF
RF9QQVJBTShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrTmFtZSk7Ci0K
ICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjkxMyw3ICsyODgyLDYgQEAgU3RyaW5nIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3IKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFN
KHVuaWZvcm1CbG9ja0luZGV4KTsKLQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCkBA
IC0yOTIzLDI3ICsyODkxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0wKICAgICBVTlVTRURf
UEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tC
aW5kaW5nKTsKIH0KLSNlbHNlCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3Rp
dmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiwgR0NH
TGVudW0sIFZlY3RvcjxHQ0dMaW50PiYpCi17Ci19Ci0KLUdDR0x1aW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBT
dHJpbmcmKQotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVp
bnQpCi17Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVp
bnQsIEdDR0x1aW50KQotewotfQotI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5KTsKQEAgLTI5NTQsMTggKzI5MDMsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVT
RURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9Q
QVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gcGFyYW1zKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAyM2Q3NGZhODBkNzA3OTFiZTYw
MGRmNThlNzU2MTczMzk2YWE1NTA1Li5hMjIxODBiNGJmNGNlMTBmMTg1MjEyNDAxMWU4OGE0NDI3
M2I0MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC00
MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZv
aWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsRmx1c2goKTsKICAg
ICB9CiAKLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgZGF0YS5kYXRhKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBt
X3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKQEAgLTEzMCw3
ICsxMzAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25z
dCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZl
ciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgICAgICBpZiAoc3VwcG9ydFBhY2tl
ZERlcHRoU3RlbmNpbEJ1ZmZlcikgewogICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVm
ZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJV
RkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5z
dGVuY2lsKQogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBt
X2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVw
dGgpCkBAIC0xMzgsMTIgKzEzOCwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7CiAgICAgICAgICAgICAgICAg
ICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVy
KTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgs
IHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQs
IEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAg
OjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FU
VEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRo
QnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09N
UE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25z
LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2Ft
cGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAg
ICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBH
TF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDg4ZTE1
MWIxMjIyNGZlYmNjODkzYjUzZDY4NWUzZWMxYjAxMGNkNDUuLjJiODk2YTlhYmFjMGUxMDc0YjFl
MTM1MTkzMjA0OWFiZTc2ODAzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTIzLDYgKzEyMyw3
IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MKICAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAorICAgIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIKQEAgLTIyMSw2ICsyMjIsNyBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbgogCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZTUxY2FlZDIxZTE4NmNmMmExNzNjYjhhMzMzMTJiZTBiMzA0YmIwMC4uYmNlMzM4YzRiNDRm
MDc5ZTgwZWQwZDQ2ZDY3MjI5M2MyMjdlNTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiArMjAsNyBAQCAkKEpBVkFTQ1JJUFRD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5z
Yi5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTM0LDYgKzEzNSw3IEBAICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggZTg4YjJjMjFmYTcxN2M3N2QyMzAyY2I1MThiYTRhZDNlZGUyNTc0
YS4uMTVmM2MyM2NjZTA1ZTJkMzJlNWVlYjY5MjQwYzY1NDhhOWJkMTYwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNzgsNiArMTc4
LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjgxNDg1NWZm
OWQyM2FmMGE3N2U1ZmRhNmRmZDJmZDU1MDk3NmY2OS4uMzUzZDc2ZWQxYTVmMjA5ZWVhM2Y0Nzgz
MWUwNmNhOGRkMjEwNDNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTcxLDYg
KzE3MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAogCVdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mg
XAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAogCVdl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCkBAIC0yMjcsNiAr
MjI4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzIFwKIAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAogCUdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCisJR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMGUyZTg4MzJiMWUyMGYx
ZTBmMzE5ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2UxNGM1MGI3NDE5OTNkNmYzNWE1YTk1
ZjVhZmQ4MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiArNjQsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
QkdMKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisjZW5kaWYKKwogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKQEAgLTI5MCw2
ICsyOTQsMjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRfVU5VU0VEKGZv
dW5kLCBmb3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9y
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IH0pOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29u
dGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAu
cmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChm
b3VuZCwgZm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQbGF5aW5nTWFu
YWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMjY3
OGRiYzRlNWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4ZC4uNWFlZGZiYjRkMmNhYzdiNzY2
MGZmMDczNjA5ZDM3N2M2MDE1ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9u
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisK
ICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgpAQCAtMzksNiArNDAsMTEgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBHUFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBjbGFzcyBSZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTsKIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwpAQCAtMTE5LDYgKzEy
NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9p
ZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5m
byhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5m
byYmKTsKIApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7Ci0KKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFw
PEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5
UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTE5NGZiNGY2
MDg1ZDYyNGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1NGUxNjQ1OTViMGEzNjFkZmU0Yzc1
YmZmNDAxOGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDYg
KzI1LDEwIEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlz
cGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICAg
ICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9pZCBSZWxlYXNl
R3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlp
bmdJbmZvKCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5m
bykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA4MjI5YTVlOGI4MjM5OWI3ZDFlNDZiNjA5OTgwOWVhOThhZWFiODQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCisjaW5j
bHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCisKK25hbWVzcGFj
ZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKKyAgICA6
IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQor
eworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250ZXh0LT5hZGRDbGll
bnQoKnRoaXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmco
R3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4
dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxF
X0VYVEVOU0lPTlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25z
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQo
KSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFw
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQQzo6Q29ubmVj
dGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBv
c2l0ZSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4
dExvc3QoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3Bh
dGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZXNo
YXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlmICh3aWR0aCAmJiBo
ZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBl
bHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKworI2lmICFQTEFURk9STShDT0NP
QSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisjZW5kaWYKKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJiBl
eHRlbnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZChleHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlN
YXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2Vk
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDE3OGU1YWNmMjY0MmE2NzMyMDM3NTU3MWI4MmY0MTk0MGNiMzVm
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkg
JiYgVVNFKEFOR0xFKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9u
c0dMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkK
K25hbWVzcGFjZSBXVEYgeworY2xhc3MgTWFjaFNlbmRSaWdodDsKK30KKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8g
R1BVIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2Vz
IGFib3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzCisvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhp
Y3NDb250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgorLy8gVGhl
IGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wK
KyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKKyAgICAsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNs
aWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIG92ZXJyaWRlOworCisgICAg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNv
bnN0OworCitwcm90ZWN0ZWQ6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVz
LgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8v
IEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkQ29tcG9z
aXRlKCkgZmluYWw7CisgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCkgZmluYWw7CisgICAgdm9p
ZCByZWN5Y2xlQ29udGV4dCgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdl
ZE5vdGlmaWNhdGlvbigpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQu
CisgICAgdm9pZCByZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKKyAgICB2
b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOworICAgIHZvaWQgbm90aWZ5TWFy
a0NvbnRleHRDaGFuZ2VkKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJp
Z2h0JiYpPiYmKSA9IDA7CisjZWxzZQorICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyNlbmRpZgorCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9MSU5UCisKKyAgICBSZWY8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsKKyAgICBXZWFrUHRyPEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAg
ICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTIzMGQ3Y2E5YjU5ZWEzODM1
M2Y0NjVjMTgzYTViMWM5MjExODgyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDI5NCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJv
bm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRp
c3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNp
b25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKQorCisgICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB2b2lk
IFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQorICAgIHZvaWQgTW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBBY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgdm9pZCBBdHRhY2hT
aGFkZXIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qgc2hhZGVyKQorICAgIHZvaWQgQmluZEF0
dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcgbmFtZSkK
KyAgICB2b2lkIEJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAg
IHZvaWQgQmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAg
ICB2b2lkIEJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQor
ICAgIHZvaWQgQmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAg
IHZvaWQgQmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9h
dCBhbHBoYSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB2b2lk
IEJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxw
aGEpCisgICAgdm9pZCBCbGVuZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3Rv
cikKKyAgICB2b2lkIEJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3Qg
ZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgdm9pZCBD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQzMl90IHRhcmdldCkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ2xlYXIodWludDMyX3QgbWFzaykKKyAgICB2
b2lkIENsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQg
YWxwaGEpCisgICAgdm9pZCBDbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHZvaWQgQ2xlYXJT
dGVuY2lsKGludDMyX3QgcykKKyAgICB2b2lkIENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVl
biwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHZvaWQgQ29tcGlsZVNoYWRlcih1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgQ29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB2b2lkIENv
cHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZUJ1ZmZlcigpIC0+ICh1aW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZUZyYW1lYnVmZmVyKCkg
LT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUHJv
Z3JhbSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENy
ZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIENyZWF0ZVNoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVUZXh0dXJlKCkgLT4gKHVpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3VsbEZhY2UodWludDMyX3QgbW9k
ZSkKKyAgICB2b2lkIERlbGV0ZUJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRl
RnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVByb2dyYW0odWludDMy
X3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVJlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgRGVsZXRlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVUZXh0dXJl
KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB2
b2lkIERlcHRoTWFzayhib29sIGZsYWcpCisgICAgdm9pZCBEZXB0aFJhbmdlKGZsb2F0IHpOZWFy
LCBmbG9hdCB6RmFyKQorICAgIHZvaWQgRGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQz
Ml90IGFyZzEpCisgICAgdm9pZCBEaXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIERpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIERyYXdBcnJheXMo
dWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB2b2lkIERy
YXdFbGVtZW50cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1
aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBFbmFibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQg
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBGaW5pc2go
KQorICAgIHZvaWQgRmx1c2goKQorICAgIHZvaWQgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0
YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWlu
dDMyX3QgYXJnMywgaW50MzJfdCBsZXZlbCkKKyAgICB2b2lkIEZyb250RmFjZSh1aW50MzJfdCBt
b2RlKQorICAgIHZvaWQgR2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQg
R2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9v
bCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJn
MikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QXR0
cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFN0cmluZyh1aW50MzJfdCBuYW1lKSAtPiAoU3RyaW5nIHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1
aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRf
dCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0KHVpbnQzMl90IHBuYW1lKSAtPiAoaW50NjRf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEludGVnZXI2NGkodWludDMy
X3QgcG5hbWUsIHVpbnQzMl90IGluZGV4KSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFByb2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBu
YW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJv
b2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5
UmVmZXJlbmNlPGJvb2w+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNo
bWVudCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQz
Ml90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBz
aGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNpb25UeXBlKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90LCAyPiByYW5nZSwgR0NHTGludCBwcmVjaXNpb24pIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAt
PiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1m
dih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUp
IC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFVuaWZvcm1pdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50
NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQz
Ml90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1Mb2NhdGlv
bih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IHBuYW1lKSAtPiAodWludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBIaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB2b2lkIElz
QnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgSXNFbmFibGVkKHVpbnQzMl90IGNhcCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBJc0ZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29s
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNQcm9ncmFtKHVpbnQzMl90IGFy
ZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNSZW5kZXJi
dWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBJc1NoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIElzVGV4dHVyZSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIExpbmVXaWR0aChmbG9hdCBhcmcwKQorICAg
IHZvaWQgTGlua1Byb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFBpeGVsU3RvcmVpKHVp
bnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgUG9seWdvbk9mZnNldChmbG9h
dCBmYWN0b3IsIGZsb2F0IHVuaXRzKQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIFNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGlu
dmVydCkKKyAgICB2b2lkIFNjaXNzb3IoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAs
IFN0cmluZyBhcmcxKQorICAgIHZvaWQgU3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJf
dCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQz
Ml90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAg
IHZvaWQgU3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2Vw
YXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1
aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBT
dGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6
ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZv
aWQgVW5pZm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3Jt
MWZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAg
dm9pZCBVbmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHZvaWQgVW5p
Zm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYp
CisgICAgdm9pZCBVbmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkK
KyAgICB2b2lkIFVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90
IHgsIGludDMyX3QgeSkKKyAgICB2b2lkIFVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTNmKGludDMyX3Qg
bG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBVbmlmb3JtM2Z2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9p
ZCBVbmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3QgeikKKyAgICB2b2lkIFVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24s
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3JtNGZ2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9p
ZCBVbmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVW5pZm9ybTRpdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MmZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVc2VQcm9ncmFtKHVpbnQz
Ml90IGFyZzApCisgICAgdm9pZCBWYWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2
b2lkIFZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHZvaWQgVmVy
dGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAx
PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQg
eCwgZmxvYXQgeSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmli
M2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQs
IDM+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGZ2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiB2YWx1ZXMpCisg
ICAgdm9pZCBWZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUs
IHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB2b2lkIFZpZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIEJ1ZmZlckRhdGEwKHVpbnQzMl90IHRh
cmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJEYXRh
MSh1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSwgdWlu
dDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWlu
dDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9p
ZCBSZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgUmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgdm9pZCBUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTJEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVGV4U3ViSW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMp
CisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNp
emUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBp
bnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAg
IHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRf
dCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGlu
dDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQg
RHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQz
Ml90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAg
IHZvaWQgQ3JlYXRlVmVydGV4QXJyYXkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgSXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZv
aWQgQ29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVU
YXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRf
dCBhcmc0KQorICAgIHZvaWQgR2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2
NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJf
dCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50
MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwg
dWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0
ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxheWVyKQorICAgIHZvaWQgSW52YWxpZGF0
ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gYXR0YWNobWVudHMpCisgICAgdm9pZCBJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMy
X3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cywgaW50
MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZv
aWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRl
eFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhT
dG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQor
ICAgIHZvaWQgVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTNE
MSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJv
cmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgdm9pZCBUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZv
aWQgVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UzRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zm
c2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGlu
dDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAg
dm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zm
c2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBHZXRGcmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0
cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IFVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlm
b3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2
b2lkIFVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
LCB1aW50MzJfdCB2MikKKyAgICB2b2lkIFVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWlu
dDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9p
ZCBVbmlmb3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm0zdWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9p
ZCBVbmlmb3JtNHVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4
NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAg
IHZvaWQgVW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJp
eDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWJJNGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3QsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgdm9p
ZCBWZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliSVBvaW50ZXIodWludDMy
X3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVp
bnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUs
IHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1
ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZh
bHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBk
cmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZXMpCisgICAgdm9p
ZCBDbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVp
bnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBz
dGVuY2lsKQorICAgIHZvaWQgQ3JlYXRlUXVlcnkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB2
b2lkIElzUXVlcnkodWludDMyX3QgcXVlcnkpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgQmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5
KQorICAgIHZvaWQgRW5kUXVlcnkodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0UXVlcnko
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwg
dWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIENyZWF0ZVNhbXBsZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBEZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJ
c1NhbXBsZXIodWludDMyX3Qgc2FtcGxlcikgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBCaW5kU2FtcGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVy
KQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3Qg
cG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJf
dCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBHZXRTYW1w
bGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmko
dWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgRmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWlu
dDMyX3QgZmxhZ3MpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIElzU3luYyh1aW50NjRfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIERlbGV0ZVN5bmModWludDY0X3QgYXJnMCkKKyAgICB2b2lkIENsaWVudFdh
aXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0KSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBXYWl0U3luYyh1
aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHZvaWQg
R2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB2b2lkIElzVHJhbnNmb3JtRmVlZGJhY2so
dWludDMyX3QgaWQpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
QmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAg
dm9pZCBCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAg
dm9pZCBFbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHZhcnlpbmdzLCB1aW50MzJf
dCBidWZmZXJNb2RlKQorICAgIHZvaWQgR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQz
Ml90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3Jt
RmVlZGJhY2soKQorICAgIHZvaWQgUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQg
QmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
YnVmZmVyKQorICAgIHZvaWQgQmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0
KQorICAgIHZvaWQgR2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0
cmluZz4gdW5pZm9ybU5hbWVzKSAtPiAoVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZl
Y3Rvcjx1aW50MzJfdD4gdW5pZm9ybUluZGljZXMsIHVpbnQzMl90IHBuYW1lKSAtPiAoVmVjdG9y
PGludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUJs
b2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgp
IC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3JtQmxv
Y2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1
aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJs
b2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQz
Ml90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBC
bGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90
IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQz
Ml90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIp
CisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0
ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJp
bmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBJbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAg
ICB2b2lkIFB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFBvcEdyb3Vw
TWFya2VyRVhUKCkKKyAgICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMy
X3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQp
CisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNv
dW50KQorICAgIHZvaWQgVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1
aW50MzJfdCBkaXZpc29yKQorfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZmZlOGMxZmM3YWZh
MTcyZjFiYjljNzM0MjY3NWM1ZGZlNmUxNzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmgKQEAgLTAsMCArMSwxMTgzIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMg
ZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8v
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQor
ICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAgICB9CisgICAgdm9pZCBzeW50
aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgIH0KKyAgICB2b2lkIG1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNo
YWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lk
IGJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5n
JiYgbmFtZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKGFy
ZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZl
cih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRSZW5kZXJidWZm
ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmlu
ZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJs
ZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvbihtb2RlKTsKKyAgICB9CisgICAg
dm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9k
ZUFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUo
bW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmModWludDMyX3Qg
c2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymxl
bmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFy
YXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwg
dWludDMyX3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1Nl
cGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgIH0KKyAgICB2
b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY2xlYXIodWludDMyX3QgbWFz
aykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFzayk7CisgICAgfQorICAgIHZv
aWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBh
bHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7CisgICAgfQorICAgIHZv
aWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xl
YXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBn
cmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
b2xvck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlZCksIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihibHVlKSwgc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAgIHZvaWQgY29tcGlsZVNoYWRlcih1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGFy
ZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworICAgIH0KKyAgICB2b2lkIGNv
cHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhl
aWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZv
cm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVidWZmZXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVByb2dyYW0oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUmVuZGVyYnVmZmVyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2hh
ZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRl
cihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRl
VGV4dHVyZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVpbnQz
Ml90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihhcmcwKTsK
KyAgICB9CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVJlbmRl
cmJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTaGFkZXIodWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGFyZzApOworICAgIH0K
KyAgICB2b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aEZ1bmMo
dWludDMyX3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMp
OworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZsYWcpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oZmxhZykpOworICAg
IH0KKyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpOworICAgIH0KKyAgICB2
b2lkIGRldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZv
aWQgZGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2Fi
bGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMy
X3QgaW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBp
bnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
cmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1l
bnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNv
dW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCBlbmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFi
bGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJf
dCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRl
cmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0
YXJnZXQsIGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50
MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFt
ZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2
ZWwpOworICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2VuZXJh
dGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZW5l
cmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYih1aW50
MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4
LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUo
YXJnMikpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYg
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdl
dEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3RyaW5n
KHVpbnQzMl90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRp
Y19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0Rmxv
YXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFt
ZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
VmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
aW50NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyNjQocG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2
NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dy
YW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1
aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVy
ZW5jZTxib29sPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPihyZWludGVycHJldF9j
YXN0PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRFcnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50
LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbUluZm9M
b2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhhcmcw
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7
CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGFyZzAsIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlcklu
Zm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5
cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiwgaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBzdGQ6OmFycmF5PEdDR0xpbnQsIDI+IHJhbmdlIHsgfTsKKyAgICAg
ICAgR0NHTGludCBwcmVjaXNpb24gPSB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLCAmcHJlY2lz
aW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90LCAyPihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihyYW5nZS5kYXRhKCkpLCByYW5nZS5z
aXplKCkpLCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlclNvdXJjZSh1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShhcmcwKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFy
YW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtZnYodWludDMyX3Qg
cHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNf
Y2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZv
cm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFs
dWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2
KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1
ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQt
PmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0
X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMdWludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3Ry
aW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOwor
ICAgIH0KKyAgICB2b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9v
bGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmlzQnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxi
b29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBj
YXAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRW5hYmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGlzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1
ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4o
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlz
UmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVm
ZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4
dHVyZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBw
YXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFt
KTsKKyAgICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5p
dHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0
cyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3Zl
cmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7
CisgICAgfQorICAgIHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3Io
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQz
Ml90IGFyZzAsIFN0cmluZyYmIGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNoYWRl
clNvdXJjZShhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuYyh1aW50MzJf
dCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVu
Y2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVm
LCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuY1Nl
cGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1h
c2sodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2so
bWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNl
LCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFza1Nl
cGFyYXRlKGZhY2UsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcCh1aW50MzJfdCBm
YWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHN0
ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpm
YWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9w
U2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBh
cmFtKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRl
eFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtMWYobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZnYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9u
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkp
LCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYo
bG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb24sIHgsIHkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNmKGludDMyX3QgbG9j
YXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTNmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2l2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9j
YXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZnYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRp
KGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNw
b3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFs
dWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJp
eDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSks
IHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVzZVByb2dyYW0odWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShhcmcwKTsKKyAgICB9Cisg
ICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
MWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiYmIHZhbHVl
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtl
R0NHTFNwYW48MT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0
YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBm
bG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIy
ZihpbmRleCwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVpbnQzMl90
IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiYmIHZhbHVlcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihp
bmRleCwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVpbnQzMl90
IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiYmIHZhbHVlcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAg
IH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
NGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiYmIHZhbHVl
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtl
R0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0
YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5k
ZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90
IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7
CisgICAgfQorICAgIHZvaWQgdmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52aWV3cG9y
dCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMCh1aW50
MzJfdCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRy
PihhcmcxKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGExKHVpbnQzMl90IHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEsIHVpbnQzMl90IHVzYWdl
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodWludDMyX3Qg
dGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgcmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRf
dCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dM
Y2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAg
IG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlYWRu
UGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAg
ICB2b2lkIHRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBp
eGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1h
Z2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGlu
dDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0
KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRl
eFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQz
Ml90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAg
fQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsK
KyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50
MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZp
c29yKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
VmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheSh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weUJ1
ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVp
bnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3
cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ocmVhZE9mZnNldCksIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihh
cmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBWZWN0b3I8R0NHTGNoYXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90
PihkYXRhU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFy
Z2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgYmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qg
c3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMy
X3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsK
KyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgbGF5ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICB9
CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRzKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1l
bnRzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1
aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVu
dHMsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdl
dCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2ht
ZW50cy5kYXRhKCkpLCBhdHRhY2htZW50cy5zaXplKCkpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICB9CisgICAgdm9pZCByZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFy
Z2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAg
IHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QwKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVy
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZv
aWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRl
eEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGlu
dDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4
ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvcHlU
ZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJ
bWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVy
LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBm
b3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYg
ZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9y
bWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNp
emUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGdl
dEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1
aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWko
aW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
LCB1aW50MzJfdCB2MikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2Nh
dGlvbiwgdjAsIHYxLCB2Mik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aShpbnQzMl90IGxv
Y2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2
MykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1
aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0z
dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aXYobG9jYXRpb24sIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3Nl
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgy
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3Qg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRh
dGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwgaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRl
eEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwg
ND4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYo
aW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2
YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkodWludDMy
X3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHks
IHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBz
aXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwg
dHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9Cisg
ICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBzdGFydCwg
dWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0
YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzKG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2YWx1
ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3
YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFs
dWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZl
cnVpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdi
dWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSksIHZh
bHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1
ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgZGVwdGgsIHN0ZW5jaWwpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVRdWVyeSh1aW50MzJfdCBx
dWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUXVlcnkocXVlcnkpOworICAg
IH0KKyAgICB2b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
UXVlcnkocXVlcnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJlZ2luUXVlcnkodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5RdWVy
eSh0YXJnZXQsIHF1ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBlbmRRdWVyeSh1aW50MzJfdCB0YXJn
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldCk7CisgICAgfQor
ICAgIHZvaWQgZ2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeU9i
amVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
dWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNhbXBsZXIoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2FtcGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2FtcGxlcih1aW50MzJf
dCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTYW1wbGVyKHNhbXBs
ZXIpOworICAgIH0KKyAgICB2b2lkIGlzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFNh
bXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3Qg
cGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBs
ZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYodWlu
dDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwor
ICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBs
ZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAg
IH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIs
IHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZsYWdzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xzeW5jIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4ocmV0dXJuVmFsdWUpKSk7CisgICAgfQorICAgIHZvaWQgaXNTeW5jKHVpbnQ2NF90
IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5j
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBkZWxl
dGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVN5
bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzAp
KSk7CisgICAgfQorICAgIHZvaWQgY2xpZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMy
X3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jbGllbnRXYWl0
U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTHVpbnQ2ND4odGltZW91dCkpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgd2FpdFN5bmMo
dWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+d2FpdFN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4o
dGltZW91dCkpOworICAgIH0KKyAgICB2b2lkIGdldFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN5bmNpKHJlaW50ZXJwcmV0X2Nhc3Q8R0NH
THN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgIH0KKyAg
ICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9v
bGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmlzVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRUcmFuc2Zv
cm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCk7CisgICAgfQorICAg
IHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1v
ZGUpOworICAgIH0KKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCB0
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+
JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1v
ZGUpOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFy
ZzIgeyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhw
cm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
YXJnMikpOworICAgIH0KKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAg
IHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJC
YXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVm
ZmVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90
IGFyZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQs
IGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHN0YXRpY19j
YXN0PEdDR0xzaXplaXB0cj4oYXJnNCkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1JbmRp
Y2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdW5pZm9ybU5hbWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQ+IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUluZGljZXMocHJvZ3Jh
bSwgdW5pZm9ybU5hbWVzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHBy
b2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4mJiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0lu
ZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrSW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tC
aW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50
MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tC
aW5kaW5nKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0
b3I8R0NHTGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDAp
OworICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3Qq
PihwYXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBz
cmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJf
dCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWlu
dDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwg
c3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0K
KyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVh
dGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWxldGVW
ZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFy
cmF5T0VTKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmlu
ZFZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpbnNl
cnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAg
IHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7CisgICAg
fQorICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQoKTsKKyAgICB9CisgICAgdm9pZCBk
cmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwg
YnVmcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
dWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmlt
Y291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0K
KyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMy
X3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291
bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTHZvaWRw
dHI+KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGlu
ZGV4LCBkaXZpc29yKTsKKyAgICB9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2M0MGM5ODVjYjdkMjcyMjg2OWE1ZGZmOTY5MTk0
NzA3N2FmNDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC0wLDAgKzEs
OTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg+CisjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworY2xh
c3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZpbmFsID0gZGVmYXVsdDsKKworICAgIC8vIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmKSBmaW5hbDsK
KworICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIG92ZXJyaWRlcy4K
KyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudChCdWZm
ZXIpIGZpbmFsOworICAgIHZvaWQqIGRldGFjaENsaWVudCgpIGZpbmFsOworcHJpdmF0ZToKKyAg
ICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIG1fZGlzcGxheUJ1
ZmZlcjsKK307CisKK30KKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywg
dGhpcykpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZm
ZXIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVjeWNsZUJ1ZmZlcigpCit7CisgICAg
cmV0dXJuIFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpwcmVzZW50KEJ1ZmZlciBidWZmZXIpCit7CisgICAgQVNTRVJUKCFt
X2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOworfQorCit2b2lkKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hD
bGllbnQoKQoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlci5oYW5k
bGUsIG51bGxwdHIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBy
ZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRp
c3BsYXkoKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZl
ci5zdXJmYWNlKTsKKyAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBpZiAoZGlzcGxh
eUJ1ZmZlcikKKyAgICAgICAgc2VuZFJpZ2h0ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJp
Z2h0KCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpKTsKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BV
UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01h
Yy5tbQppbmRleCBiN2JiNjNiMjlhZDgwMjE3MmRmMjdhMTI4OTViYjE5OThmYTRiNmIwLi4yNGM0
MzdjYWFlN2Y4ZjlhOWFmZjkyNzAzZWZjZjlkYTAzMWU0YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCkBAIC0zMiw4ICszMiw4IEBACiAjaW1w
b3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXS0ZvdW5k
YXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1
bmNoU2VydmljZXNTUEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4K
ICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1wb3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDkgKzQ0LDEyIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdm9pZCBHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vz
cyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKIHsKICNp
ZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyNpZiAwCiAgICAgLy8g
SGF2aW5nIGEgd2luZG93IHNlcnZlciBjb25uZWN0aW9uIGluIHRoaXMgcHJvY2VzcyB3b3VsZCBy
ZXN1bHQgaW4gc3BpbiBsb2dzICg8cmRhcjovL3Byb2JsZW0vMTMyMzkxMTk+KS4KLSAgICBPU1N0
YXR1cyBlcnJvciA9IFNldEFwcGxpY2F0aW9uSXNEYWVtb24odHJ1ZSk7Ci0gICAgQVNTRVJUX1VO
VVNFRChlcnJvciwgZXJyb3IgPT0gbm9FcnIpOworICAgIGF1dG8gcmV0dmFsID0gQ0dTU2V0RGVu
eVdpbmRvd1NlcnZlckNvbm5lY3Rpb25zKHRydWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHJldHZh
bCA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAgIENHU1NodXRkb3duU2VydmVyQ29ubmVjdGlvbnMo
KTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBsYXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQ
cm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2Vi
S2l0LkdQVVByb2Nlc3Muc2IuaW4KaW5kZXggZGIwNmU1MzRmN2Y1MWQyZWJkMDM4MjVmNTgyNDVm
ODQ5NmY4YjE3OS4uZWQxMDBiMzZlZDZmNDZkNGFhZjYzNTQ0Nzc4ODJhYjc5M2ExMWJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQ
VVByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBw
bGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KQEAgLTIwNyw2ICsyMDcsNyBAQAogICAgIChpb2tp
dC1wcm9wZXJ0eS1yZWdleCAjIl5BQVBMLChEaXNwbGF5UGlwZXxPcGVuQ0xkaXNhYmxlZHxJT0dy
YXBoaWNzX0xFUih8X1JlZ1RhZ18xfF9SZWdUYWdfMHxfQnVzeV8yKXxhbGlhcy1wb2xpY3l8Ym9v
dC1kaXNwbGF5fGRpc3BsYXktYWxpYXN8bXV4LXN3aXRjaC1zdGF0ZXxuZHJ2LWRldnxwcmltYXJ5
LWRpc3BsYXl8c2xvdC1uYW1lKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkFUWSwo
Y2JpdHN8ZmJfKGxpbmVieXRlc3xvZmZzZXR8c2l6ZSl8aW50cmV2KSIpCiAgICAgKGlva2l0LXBy
b3BlcnR5ICJBVFksRGV2aWNlTmFtZSIpIDs7IE5lZWRlZCBieSBNZXRhbCBjb21waWxlcnMKKyAg
ICAoaW9raXQtcHJvcGVydHkgIkFUWSxFRklEaXNwbGF5IikKICAgICAoaW9raXQtcHJvcGVydHkg
IkFUWSxGYW1pbHlOYW1lIikgOzsgRGl0dG8KICAgICAoaW9raXQtcHJvcGVydHkgIkFWQ1N1cHBv
cnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJCYWNrbGlnaHRIYW5kbGUiKQpAQCAtMjE3LDYg
KzIxOCw5IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJDYXBzTG9ja0RlbGF5IikKICAgICAoaW9r
aXQtcHJvcGVydHkgIkNhc2VTZW5zaXRpdmUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ29uZmln
U3RhdGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRFBMYW5lcyIpCisgICAgKGlva2l0LXByb3Bl
cnR5ICJEUExpbmtCaXQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRFBMaW5rUmF0ZSIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJEZXNjcmlwdGlvbiIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXZl
bG9wbWVudCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkRldmljZSggQ2hhcmFjdGVy
aXN0aWNzfEVxSUQpIikKQEAgLTIyOSwxMCArMjMzLDE3IEBACiAgICAgKGlva2l0LXByb3BlcnR5
ICJGYW1pbHkgSUQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9yY2VTdXBwb3J0ZWQiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiRm9ybWF0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1
ZmZlckVuYWJsZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRnJhbWVidWZmZXJTdGFydGVkIikK
ICAgICAoaW9raXQtcHJvcGVydHkgIkdQVUNvbmZpZ3VyYXRpb25WYXJpYWJsZSIpCisgICAgKGlv
a2l0LXByb3BlcnR5ICJHUFVEQ0NEaXNwbGF5YWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJH
UFVEZWJ1Z051bGxDbGllbnRNYXNrIikKICAgICAoaW9raXQtcHJvcGVydHkgIkdwdURlYnVnUG9s
aWN5IikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0NvdW50ZXJCdW5kbGVOYW1lIikKKyAg
ICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0NvdW50ZXJQbHVnaW5DbGFzc05hbWUiKQogICAgIChp
b2tpdC1wcm9wZXJ0eSAiSEVWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJISURQ
b2ludGVyQWNjZWxlcmF0aW9uVHlwZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJId0N0eENhY2hl
VXBkYXRlIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9BY2NlbChEaXNwbGF5UGlw
ZUNhcGFiaWxpdGllc3xJbmRleHxUeXBlc3xSZXZpc2lvbikiKQogICAgIChpb2tpdC1wcm9wZXJ0
eS1yZWdleCAjIl5JTyhDbGFzc3xNYXRjaENhdGVnb3J5fE5hbWVNYXRjaCkiKQogICAgIChpb2tp
dC1wcm9wZXJ0eS1yZWdleCAjIl5JT0F1ZGlvQ29udHJvbChDaGFubmVsSUR8SUR8U3ViVHlwZXxV
c2FnZXxWYWx1ZSkiKQpAQCAtMjgyLDYgKzI5Myw4IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJJ
T1BhcmVudE1hdGNoIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9QQ0koKENsYXNz
fFByaW1hcnl8UHJvcGVydHl8KU1hdGNofEV4cHJlc3MoQ2FwYWJpbGl0aWVzfExpbmsoU3RhdHVz
fENhcGFiaWxpdGllcykpfE1TSU1vZGV8UmVzb3VyY2VkfFR1bm5lbGxlZCkiKQogICAgIChpb2tp
dC1wcm9wZXJ0eSAiSU9QTUlzUG93ZXJNYW5hZ2VkIikKKyAgICAoaW9raXQtcHJvcGVydHkgIklP
UGVyc29uYWxpdHlQdWJsaXNoZXIiKQorCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklP
UGxhdGZvcm0oU2VyaWFsTnVtYmVyfFVVSUQpIikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUG93
ZXJNYW5hZ2VtZW50IikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUHJvYmVTY29yZSIpCkBAIC0z
MTcsNiArMzMwLDcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIlByb3RvY29sIENoYXJhY3Rlcmlz
dGljcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJSZW1vdmFibGUiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eS1yZWdleCAjIl5SZXNldE9uKExvY2t8VW5sb2NrKU1zIikKKyAgICAoaW9raXQtcHJvcGVy
dHkgIlNXSVBfcHJvcGVydGllcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTYWZlRWplY3RSZXF1
ZXN0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2FtcGxlUmF0ZXMiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiU2VyaWFsIE51bWJlciIpCkBAIC0zMzgsNiArMzUyLDcgQEAKICAgICAoaW9raXQt
cHJvcGVydHkgImF0dGFjaGVkLWdwdS1jb250cm9sLXBhdGgiKQogICAgIChpb2tpdC1wcm9wZXJ0
eS1yZWdleCAjIl5hdWRpby0oY29kZWMtaW5mb3xkZXZpY2UtbXZhbHVlfGRldmljZS1udmFsdWV8
c2VsZWN0b3IpIikKICAgICAoaW9raXQtcHJvcGVydHkgImF2LXNpZ25hbC10eXBlIikKKyAgICAo
aW9raXQtcHJvcGVydHkgImJhY2tsaWdodC1QV00tZnJlcSIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJiY2RWZXJzaW9uIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeKGJvYXJkfGRldmlj
ZXxyZXZpc2lvbnxzdWJzeXN0ZW18dmVuZG9yKS1pZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJi
b290LWdhbW1hLXJlc3RvcmVkIikKQEAgLTM1MCw2ICszNjUsMTEgQEAKICAgICAoaW9raXQtcHJv
cGVydHkgImNvbm5lY3Rvci10eXBlIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeKGRl
dmljZXxyZXZpc2lvbnxzdWJzeXN0ZW0tdmVuZG9yfHRvdWNoLXNpemUpLWlkIikKICAgICAoaW9r
aXQtcHJvcGVydHkgImRldmljZV90eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXkt
YnBjIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktY29ubmVjdC1mbGFncyIpCisgICAg
KGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWxpbmstY29tcG9uZW50LWJpdHMiKQorICAgIChpb2tp
dC1wcm9wZXJ0eSAiZGlzcGxheS1waXhlbC1jb21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXBy
b3BlcnR5ICJkaXNwbGF5LXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZHBtIikKICAgICAo
aW9raXQtcHJvcGVydHkgImVycm9yZGIiKSA7OyBOZWVkZWQgZm9yIE9wZW5HTCBvbiBvbGRlciBo
YXJkd2FyZQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZmlsZXZhdWx0LWltYWdlIikgOzsgTmVlZGVk
IGJ5IExhdW5jaFNlcnZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAppbmRleCBlNmExOGRkYTZlMDky
ZmRiMTgwNDQ2ZTRmM2EwODNjZjUzYzI3NjE5Li4zNzkyOGUxYjgzZDRlNTI0NDUzYThkMjdjYzNi
ODc5MDFiMjQ5YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFVTRShBVURJT19TRVNTSU9OKQogCiAjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNp
bmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCmluZGV4IGQ5YmY1MjI3MmMzNzI5MTU3NWI1YjM5
MzI2MmU3NzIxM2I5MzBkZDQuLjhmMDExOWVkZmUxZDZlOTMyNDMwMDViMzQ0MTI1YjI0ZWFiOTFl
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKICNpbmNsdWRlICJHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggNmE1YzY3
MjVjYWE5YmRiODY3YWI4NmI4YzU3ZjM2ZGUyYzg5NmRjZi4uYmU3ZjUyMjBiZTliODVmODY4YTVm
ODM3ZWZlZDY2ZGRmOTVmMjk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTM5LDEwICszOSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
UmVtb3RlTGVnYWN5Q0RNUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggNDdm
NWQyZjI3MGZhNWRlNGZhZGUxNTE0NDQyMTExNzk0ZWQzNmQyOC4uMmM1ZTdkZTdkMmU3NTY5NjBh
M2YzZWM4NzZjOGI4MjVjNmU0NWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGVn
YWN5Q0RNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBhOThjZmE0YzlmODAyMzE5
MDRmOGVmMGVhYTkzNjIyOWFmYTk3NTk4Li5mZWM2NWNmNjJiNjY3NGI4MzAwYzUwY2Q0MzM0MTVl
OTE1MTE0NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2UuaCIK
ICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAppbmRleCBkODliODAz
ZjZhYmY0MWM4ZTllZGRlNDE0Mjc2OTMyODI2ZDFiMzM4Li4wODFlYjMxODBkMDIxNjRiNWFhM2Q1
NDgwNmY3MmM3ZWRjMGNiMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaApAQCAtMjcsMTUgKzI3
LDE2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvUG9saWN5Q2hlY2tl
ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5kZXggYWY3YmU1MTJlYWMyZDFh
ZTY1NGFlMDljYjUyZDk0YjM5YjJjNjA3Ny4uNDk5YmQ2MWMyZjc4MjIyM2ZhMzhmYzk3YjE4MmZh
NmQyYjkzODFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhU291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFTb3VyY2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
bnRUeXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCA1OTY4YzdiYmQxODljZDQ3OWVmNGFlYWI0ZDQ0
OTk1MzNmZDNkNjViLi5mZTU0NGQ1NTUxOTFlNTU2ZTJkN2UyMzM5NDc1YTAyZmMyOWRjZmQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVNvdXJjZVByb3h5LmgKQEAgLTM5LDcgKzM5LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IDZiOGJmOGI1N2NjMGM4ZDlk
NTQxMWU5NjUyMWI0NWE5NGE4ZTNiMzIuLjk5Y2E2YTQxNGViNTA4MzkwYzcyODMzYTY0NTFlNzMw
Mzk0MjFkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC0yNyw5ICsyNywxMSBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJ
ZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CkBAIC0zOCw3ICs0MCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IDM2MDMxMGI3ZDEyMWQyODZkOGQxNjFm
MTgzYWJkMGU3NDViODM1MzMuLjg0M2JiMDZmN2I1NmM2ZTNjZmJlZTc5YTdlNDI4MWVmZWU4Zjlh
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTI4LDE0ICsyOCwxNSBAQAogI2lmIFVTRShMSUJXRUJSVEMp
ICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJUQ0Rl
Y29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKwog
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggZjhhYmMx
ZjQwNWZjMTQ2OTQ3NWI0ZDkwYmFkM2Q1M2NhMGY4MDE0ZS4uNjFjNDcwOGFlOTZkYmNhYTU2OTgw
OWVlMTk5NWJlODE2YTkxZmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2lt
cG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCA3ODhj
NWYwMGMwMmY0ZjE0OGZlZWNjZDM4ZDEwNjgxOGIwZDdlOTYxLi4zYWI0ZTRiMWNmMWMxNDEyMzBj
MTNlNDU3NmM1ZWQ2ZTZlZmMyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAgLTM2
LDcgKzM3LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5k
ZXggN2E2MzM2MzQ3YzAwN2U5N2I3M2I1NDM3NzQ5MTY4MzhkNjQwMzdkYS4uMWFhNTNjYzJmYjc3
YmFmOWUzMjY1MDcyMTA4MDlmZDc2Y2ZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Q
cm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTI2
LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmgiCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkxl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJv
Y2Vzcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Q
cm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZjZlZDgxMWY1MzQy
ZmU0ODU1NTE3NmY4OWQ1MTQ1NzU2MmM2NjU4NS4uMGJjZDU2NzNjOTM0NmFkYTExZDY1NmMzYWRk
NTFiZTRlZGJjMjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oIgpAQCAtMzksMTAgKzQwLDYgQEAgT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Db25m
aWd1cmF0aW9uOwogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sOwogI2VuZGlmCiAKLW5hbWVz
cGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0gLy8gbmFtZXNwYWNlIElQQwotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwpAQCAtMTEyLDQgKzEwOSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwCmluZGV4IGRkYmU0ZWVkZDQ0MWRmODdjNTVhZDMzMGYwNDJjY2RjZmFk
ZmI5MGIuLjY1MWZmMjU0ZjkwNWMxNmE5MGNiNDgyYzk3NzNkNGFjNzQyOTRlYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAK
QEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3du
bG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZE1vbml0b3IuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDM4YWYzNTA4MDc0NjQyOTNiOTVmZmFmMDU5
ZmRlYzM2OTAxNzcyNzQuLjkzZjAzYTgyNTVmMWFlNzE3MzgzYzAwMjkwYTI0ZjkxY2E3YzY1ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNb25pdG9yLmgiCkBAIC00NCwxMCArNDUsNiBA
QCBPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2Fk
VGFzazsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwog
Y2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMzMy
MTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4uNzI2ZGQ5OTBiYWZkNDM5NGI1
YWZjMDMyYTFjZjIwZjE4NDljNDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgi
CiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAx
NjVmMWM3MjY3OGZhNTAuLjk4MGEwNmY3ODM5ZGJkNWU5ZjlkNTA0NTQwOWEzM2Q3N2IxYzAzODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNs
dWRlICJEb3dubG9hZE1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgpAQCAtNDks
NyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggNDQ5YjEzZDhlMDdiMmNkMDQyYzRiYTM2MzZhYjc5M2QzN2Ix
YzNmNC4uYzc3ODg4MTFmMDMyZDU4ZjhiNTI3NzM2ZTFkMjI3ODQxMGY5MTNhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3
b3JrU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDMxOTY0MTkw
ZDE0MWQ1NDlkYTBiYWYyZGM4YmYyOTdiNGU1ODFlODkuLjA0MzRiZjg4MDlhN2ViM2VjYzE4ZThm
NjUwY2MwMjc4YWU2ZWI1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
ZXIuaD4KQEAgLTQwLDcgKzQxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNWI0ODljYzUzOGY3
YzA3MTUxMDEwNmM1OGY1YzA5NGVjOWE4ZTFiOC4uNDhjODgzYmZjMGZjN2Q1MDFjOGE0YTRlNzY4
NGNjYzMzZTM4YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCmluZGV4IDUyZWMzOTI2OTAyMThl
ZGU2NjhkNTVlNjM4ZDhlMTc1MDJmZDZlZTUuLjczNDI5YTAyNzkwNmI0MTZhMzhjMGM2YjM5NDZh
MGRiOWZiMjA2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVh
bUVycm9yLmg+CkBAIC0zNyw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBk
MzNjYmZmMTA4OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi5kMzdkNzgwNjk4M2JiYTU0
N2NhMGY5MjM1ZWI0YmY2YjczMTU2NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgpAQCAtNDMsNyArNDQs
NiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZv
cm1EYXRhUmVmZXJlbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTb2NrZXRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNv
Y2tldFRhc2suaAppbmRleCBkYjU3OTVkZDIxN2Y0NWFkNWY2N2UzMGI3OTFmOTJlMjc2YzAyOTg2
Li45NjFlNDY0NTliZTc3MTc3ZTI2MDVlN2Q4NjUyYWRhODAyMDk3YjUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApAQCAtMzEsOSArMzEsNiBAQAog
I2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAjZWxzZQogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2Nv
YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EuaAppbmRleCBkYWM2OTM1MDdlYjNlZmNlYTZkMTA5NDgwMWJjMDFiMzZmZTI2MzlkLi5lNjgy
NmU0N2U4Mzk1OTQwMjhhZjhmNGFlZDIzOTJiNGIwNWQyZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKQEAg
LTI3LDE1ICsyNywxMiBAQAogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbldlYlNvY2tl
dFRhc2s7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTZXNz
aW9uQ29jb2E7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L1dlYlNvY2tldFRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvV2ViU29ja2V0VGFza0NvY29hLm1tCmluZGV4IDg1NTM0ODc0NDA0Y2UyYmFhNDRhZTY1NjU0
N2QzNzIyNTMzMmVhYjguLjkwYmM0MDliZmZiNzBhMGVlOWU3MzU4YjM4Njc1OTdkMjlmMjRlMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0
VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2Vi
U29ja2V0VGFza0NvY29hLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBIQVZFKE5TVVJMU0VT
U0lPTl9XRUJTT0NLRVQpCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIk5l
dHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKaW5kZXggNDVm
YzY2OWQ3NjZhNzYxYzVkNzczZGM5NWYwNTQxYTM4ZTM2ZjhlMy4uYTNlNzAxNGI1ZDhlYzA5NzM4
ZmZhN2Q1NjY0NTQ1MDEwZjA1MzQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIKIAot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQ
UGFyc2Vycy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBlNDIxYjllMWM3MTMxODQzNGY2NDg3ZjVmY2I1YTZh
ODdiZDczOTE5Li4wODg5MjM5NTlmZTQ2MGZmMmJiYTRjOGMwODM5OTgwNjU3YmYzNDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1Nv
dXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFz
a1NvdXAuaApAQCAtMjUsMTQgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCi1uYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5oCmluZGV4IGUwMGEwY2NkZmE1ODc1YzAyOGM1MDUyMzExNDE3MjhlZTk1
YjQzOTIuLmUzOGJjMWM2MGFmNmRjZjAzNjk2NWFhNzhhYWRiZDZkOGQ0YjYyNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgpA
QCAtNTMsNiArNTQsNDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3Vt
ZW50Q29kZXIgewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRl
bnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKKyAg
ICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+Owor
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVy
ZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSks
IGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQor
ICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm4g
QXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKEV4dGVudCAqIHNpemVvZihUKSwgYWxpZ25v
ZihUKSk7CisgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBUKj4oZGF0YSksIEV4dGVudCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VE
eW5hbWljRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVm
ZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlS
ZWZlcmVuY2UpCisgICAgeworICAgICAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKSk7CisgICAgICAgIGlmICghYXJyYXlSZWZlcmVu
Y2Uuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVy
ZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2Yo
VCkpOworICAgIH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZl
cmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29k
ZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemUgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAg
ICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRh
dGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8VD4+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uU2V0PFQ+JiBvcHRp
b25TZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJy
YXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2QzMmJiNDU3YTViODg1ZjNkNTY2ODdlNzlmMTVjM2EyNjcxYmU2NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJl
bmNlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBJUEMg
eworCitpbmxpbmUgY29uc3RleHByIHNpemVfdCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IEV4dGVudCA9IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4KK2NsYXNz
IEFycmF5UmVmZXJlbmNlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFycmF5UmVm
ZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4geworcHVibGljOgorICAgIEFy
cmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCog
ZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV9z
aXplKHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQorICAgICAgICAsIG1f
c2l6ZSh2ZWN0b3Iuc2l6ZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhbV9zaXplOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gbV9kYXRhOworICAgIH0KKworICAgIFZlY3RvcjxUPiB2ZWN0b3IoKSBjb25zdAorICAgIHsK
KyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEs
IG1fc2l6ZSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgY29uc3QgVCogbV9kYXRhIHsgfTsKKyAgICBzaXplX3QgbV9zaXplIHsgfTsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVuY2Ug
eworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlS
ZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRh
dGEpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUgPT0gRXh0ZW50KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEFycmF5
UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKKyAgICAg
ICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2ZWN0b3Iu
c2l6ZSgpID09IEV4dGVudCk7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuICFFeHRlbnQ7IH0KKworICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIEV4dGVudDsgfQorCisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3Rvcigp
IGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICBpZiAoIWlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBFeHRlbnQpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBtX2Rh
dGEgeyB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgorQXJyYXlSZWZlcmVuY2UoY29uc3QgV1RGOjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+Jikg
LT4gQXJyYXlSZWZlcmVuY2U8VD47CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGVjM2QxNGFlOGYzZWMyNDcwNTQ3NjNjYWVl
OTA5Y2MyYzg3NWY1ZDguLmJiZDdhYmNiNGNkYzYwNDM4MmIxMDY1ZTMzMjM4NDQ5YzZhYzU5NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTIyNywxMCArMjI3
LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFz
SW52YWxpZCgpOwogCiAgICAgdm9pZCBwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9u
V29ya1F1ZXVlKCk7Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPiB2b2lk
IHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+ID0geyB9KTsg
Ly8gVGhyZWFkLXNhZmUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBt
ZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2Vu
ZE9wdGlvbnMgPSB7IH0pOyAvLyBUaHJlYWQtc2FmZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0
eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8v
IE1haW4gdGhyZWFkIG9ubHkuCisgICAgLy8gU3luYyBzZW5kZXJzIHNob3VsZCBjaGVjayB0aGUg
U2VuZFN5bmNSZXN1bHQgZm9yIHRydWUvZmFsc2UgaW4gY2FzZSB0aGV5IG5lZWQgdG8ga25vdyBp
ZiB0aGUgcmVzdWx0IHdhcyByZWFsbHkgcmVjZWl2ZWQuCisgICAgLy8gU3luYyBzZW5kZXJzIHNo
b3VsZCBob2xkIG9uIHRvIHRoZSBTZW5kU3luY1Jlc3VsdCBpbiBjYXNlIHRoZXkgcmVmZXJlbmNl
IHRoZSBjb250ZW50cyBvZiB0aGUgcmVwbHkgdmlhIERhdGFSZWZlcmVyZW5jZSAvIEFycmF5UmVm
ZXJlbmNlLgorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHku
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxX
YWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHku
CiAgICAgCiAgICAgLy8gVGhyZWFkLXNhZmUuCkBAIC0yNDksNyArMjUxLDcgQEAgcHVibGljOgog
CiAgICAgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1l
b3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGlu
YXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0
PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBy
ZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3Rp
bmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBA
IC01NTEsNyArNTUzLDcgQEAgdm9pZCBtb3ZlVHVwbGUoc3RkOjp0dXBsZTxBLi4uPiYmIGEsIHN0
ZDo6dHVwbGU8Qi4uLj4mIGIpCiAgICAgVHVwbGVNb3ZlcjxzaXplb2YuLi4oQSksIHN0ZDo6dHVw
bGU8QS4uLj4sIHN0ZDo6dHVwbGU8Qi4uLj4+Ojptb3ZlKFdURk1vdmUoYSksIGIpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlv
bjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVDo6aXNTeW5jLCBT
eW5jTWVzc2FnZUV4cGVjdGVkKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CkBAIC01NzAsMTUgKzU3MiwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5l
Y3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmCiAgICAgLy8g
Tm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVwbHkuCiAgICAgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVz
dElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIGlm
ICghcmVwbHlEZWNvZGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7
IH07CiAKICAgICAvLyBEZWNvZGUgdGhlIHJlcGx5LgogICAgIE9wdGlvbmFsPHR5cGVuYW1lIFQ6
OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3VtZW50czsKICAgICAqcmVwbHlEZWNvZGVyID4+IHJl
cGx5QXJndW1lbnRzOwogICAgIGlmICghcmVwbHlBcmd1bWVudHMpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBtb3ZlVHVwbGUoV1RGTW92ZSgqcmVwbHlB
cmd1bWVudHMpLCByZXBseSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHJlcGx5RGVj
b2RlcjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIyNWZkYTdiZWQyZmU4YzQwNDliNTU4NzA3OWZkMWUxNjM1NGY0ZmEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgi
Ci0KLW5hbWVzcGFjZSBJUEMgewotCi12b2lkIERhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRl
QXJyYXkoKnRoaXMpOwotfQotCi1ib29sIERhdGFSZWZlcmVuY2U6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewotICAgIHJldHVybiBkZWNv
ZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFSZWZlcmVuY2UpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVu
Y2UuaAppbmRleCAzNDUwYzMxYjczZGRiNmFhNWVkY2UyYWY4MDAyOTg4N2M3OThlMjA1Li5kYmIz
ZDY5MjdmMzQxYzVhYTkzZmMxMDczY2IwNzU2ZTNjYmEzN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw1NCArMjUsMTAgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiQXJyYXlSZWZlcmVu
Y2UuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVy
OwotICAgIAotY2xhc3MgRGF0YVJlZmVyZW5jZSB7Ci1wdWJsaWM6Ci0gICAgRGF0YVJlZmVyZW5j
ZSgpID0gZGVmYXVsdDsKLQotICAgIERhdGFSZWZlcmVuY2UoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEpCi0gICAgICAgICwgbV9zaXplKHNp
emUpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4K
LSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0IFZlY3Rvcjx1aW50OF90LCBpbmxpbmVDYXBhY2l0eT4m
IHZlY3RvcikKLSAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKLSAgICAgICAgLCBtX3Np
emUodmVjdG9yLnNpemUoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIW1fc2l6ZTsgfQotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgCi0gICAgeyAKLSAg
ICAgICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICByZXR1cm4gbV9kYXRhOyAKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQobV9kYXRhLCBtX3NpemUpOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIERhdGFSZWZlcmVuY2UmKTsKLQot
cHJpdmF0ZToKLSAgICBjb25zdCB1aW50OF90KiBtX2RhdGEgeyBudWxscHRyIH07Ci0gICAgc2l6
ZV90IG1fc2l6ZSB7IDAgfTsKLX07Cit1c2luZyBEYXRhUmVmZXJlbmNlID0gQXJyYXlSZWZlcmVu
Y2U8dWludDhfdCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKIAogfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDc4YTQ2Mzhl
YjczMDViZmQxOTEwODcwNjhkMzBiY2RiOGRmZTgyYWUuLjJjYjc5YjczMWM4ZDM1MWEyZDA1OTQ2
MzYyYzVhYjhiYmFkYmRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CkBAIC0xODYsMjAgKzE4NiwxNSBAQCBib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0
YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIERlY29kZXI6OmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5
KERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCitjb25zdCB1aW50OF90KiBEZWNvZGVyOjpk
ZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkK
IHsKLSAgICB1aW50NjRfdCBzaXplOwotICAgIGlmICghZGVjb2RlKHNpemUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKDEsIHNpemUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKGFs
aWdubWVudCwgc2l6ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY29uc3QgdWlu
dDhfdCogZGF0YSA9IG1fYnVmZmVyUG9zOwogICAgIG1fYnVmZmVyUG9zICs9IHNpemU7CiAKLSAg
ICBkYXRhUmVmZXJlbmNlID0gRGF0YVJlZmVyZW5jZShkYXRhLCBzaXplKTsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAogYm9vbCBEZWNvZGVyOjpyZW1vdmVBdHRhY2ht
ZW50KEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmgKaW5kZXggYjcyZGQ4YWNlMjc3M2RiMzU1OWUzNjZkZDk1MjRmMjM0MWU1NWUwNi4uMzQ0Y2U2
ODgyZmM5MDk4NGIyZmE1N2JmOWM0OGI5NjUwZTBmZjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuaApAQCAtNDAsNyArNDAsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEltcG9ydGFuY2VBc3NlcnRpb247CiBlbnVtIGNsYXNz
IE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNzgsOCArNzcsOSBAQCBwdWJsaWM6CiAK
ICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIAotICAgIC8vIFRoZSBkYXRhIGlu
IHRoZSBkYXRhIHJlZmVyZW5jZSBoZXJlIHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0
aW1lIG9mIHRoZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgotICAgIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmKTsKKyAg
ICAvLyBUaGUgZGF0YSBpbiB0aGUgcmV0dXJuZWQgcG9pbnRlciBoZXJlIHdpbGwgb25seSBiZSB2
YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgorICAg
IC8vIFJldHVybnMgbnVsbHB0ciBvbiBmYWlsdXJlLgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBj
b25zdCB1aW50OF90KiBkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplX3QsIHNpemVfdCBh
bGlnbm1lbnQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShUJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5jcHAKaW5kZXggZmQ0MDkwNzc0YjJiYzJhNzYyOWI5YzAyZGM1NTRjNGNkYzk4ZjVjYi4u
ZTgzYTNlNGFmZjQyYTU3NTUwNWRjOGYwNzMxN2ExYzFhYzE5ZGVhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0xNDEsNyArMTQyLDcgQEAgdm9pZCBFbmNvZGVyOjp3
cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gb3JpZ2luYWwpCiAKICAgICBv
cmlnaW5hbC0+c2V0U2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHko
U2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTo6WWVzKTsKIAotICAgIGVuY29k
ZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2Uob3JpZ2luYWwtPmJ1ZmZlcigp
LCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKSk7CisgICAgKnRoaXMgPDwgRGF0YVJlZmVyZW5jZShv
cmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJTaXplKCkpOwogCiAgICAgVmVjdG9y
PEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gb3JpZ2luYWwtPnJlbGVhc2VBdHRhY2htZW50cygp
OwogICAgIHJlc2VydmUoYXR0YWNobWVudHMuc2l6ZSgpKTsKQEAgLTIxNiwxMiArMjE3LDYgQEAg
dm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUsIHNpemVfdCBhbGkKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsK
IH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjb25zdCBE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewotICAgIGVuY29kZShzdGF0aWNfY2FzdDx1
aW50NjRfdD4oZGF0YVJlZmVyZW5jZS5zaXplKCkpKTsKLSAgICBlbmNvZGVGaXhlZExlbmd0aERh
dGEoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpLCAxKTsKLX0KLQog
dm9pZCBFbmNvZGVyOjphZGRBdHRhY2htZW50KEF0dGFjaG1lbnQmJiBhdHRhY2htZW50KQogewog
ICAgIG1fYXR0YWNobWVudHMuYXBwZW5kKFdURk1vdmUoYXR0YWNobWVudCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IDBlY2Y1NDFmNzc4NTg1MzZmMWZjZmE4MzZiNzZm
MjQ4MmU0YzlhMTEuLmVhNjE5NjdiZTFlYmNiZDhiNmZiYmFhOGI4NWFmNDE4ZThkNTBjY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKIAogbmFt
ZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBlbnVtIGNsYXNzIE1lc3NhZ2VG
bGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7CiBlbnVt
IGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwpA
QCAtNjIsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cmFwRm9yVGVzdGluZyhzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2Rlcj4pOwogCiAgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKLSAgICB2b2lkIGVu
Y29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZlcmVuY2UmKTsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZh
bHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxz
dGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICB2b2lk
IGVuY29kZShUJiYgdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2Uu
aAppbmRleCA3ZmQxODNhNTZhZTk4YjA2NjQ1ZmY3NTE0OGFjMjk4M2M1MmU0YWViLi40MTI5ZDRl
MmI0OWQ1YzhmYzQxYTJkNjU0YWRjZDg5ZTg2YzYzN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIApAQCAtOTYsNyArOTcsNiBAQCBzdHJ1Y3QgQ29kaW5nVHlwZSB7CiAgICAg
dHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiBU
eXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmPiB7CiAgICAgdXNpbmcgVHlwZSA9IERhdGFSZWZlcmVuY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggNDZlMjFkOGQ5MzZm
MmQ4YjUxNjdiMjQ5Zjg4MTExNmZmZWI3ZDRiOS4uNzc0NjFkNTU1YjcyOTJjMjBlYmY1MTRhMzAy
ZDFkYzZlNzc3MDExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuaApAQCAtNTQsOSArNTQsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIHNl
bmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CiAg
ICAgfQorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1
bHQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29u
ZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25z
ID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgp
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7
CiAgICAgICAgIHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEi
KTsKIApAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNv
bmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1l
b3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBBU1NFUlQobWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSk7CiAKQEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhVJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0
aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jl
c3VsdCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2Jq
ZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRz
OjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3luYzxVPihzdGQ6OmZvcndhcmQ8VT4o
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVv
dXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA3YTNjYjMzODc2MzZkY2FmY2VhY2VhZDkx
Yjg2MzliN2JhNzYzNmM2Li41MDBmODM5ZGZhYWU5Mjk3ZjRkYzYzZGM2NjMwNTg3N2IyMmRmMmY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckNvcHkuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVy
LmgiCkBAIC00OCw3ICs0OSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiBPcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZm
ZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXko
ZGF0YSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRh
dGEuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAppbmRleCAyZjcyODVhYzBiNGJkNmRlMTFkZmViOWZl
MzI4ZjAxYzk5OTk1MGEwLi5lOTZkZmIxZmJmODkxY2Q0YTBjNzc0ZTg1YzkwNzg3NThhNmZlODI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKIAorI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwCmluZGV4
IDg1MmVmNDNlMDA4NjMxYzlmYWZhODIzMGM5MTljMTdhOWQ0YTI5YjYuLjIxNjExMzljMzAxNGYw
ZWFmYjNkYzQ3Yzg1ZGE0MTkwYTJiYTA2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOGIzNzQwZjRiMTAxYWQ5
MGY1MGVkNTdjODUwYjkwMzBmY2M0MzBjMi4uNGIyMGM4NWFjNTM2MjM2NDAzYTgzZWE5NzNjZGNj
ZDEwZmRmNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIk5QT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJOUFJlbW90ZU9iamVjdE1hcC5oIgogI2lu
Y2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IGFkNGZjZDlkOGNjZjQyZjEy
ZWU0ODhlMDEzNDZjNjE5YTcwMWI4ZDIuLmM3YTcwNTNjYmQyNmQyMDQ1NGMwNDJjNmFjZTE2Y2I1
MjUzMGY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzcsMTAgKzM4LDYgQEAKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi1u
YW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGNhMGFlMjg0MTFhODNkZTRiZjNmZTA4YjAxMmU0
MDU1NDhkOGI1NzMuLjg5ZmI4YWJhZjlhZWNlMDdjNjM0NzBkYTNkYjgzYzg4MzI2ZGQzZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjAzLDYgKzIwMyw3
IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfbmFtZXNwYWNlKG5hbWVzcGFjZSwga2lu
ZF9hbmRfdHlwZXMpOgogCiBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgIHJldHVybiBmcm96ZW5zZXQoWworICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNl
JywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAg
ICAgJ1N0cmluZycsCkBAIC0yMTUsNiArMjE2LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2Jl
X2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJywKICAgICAgICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLApA
QCAtMjQzLDYgKzI0NSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xh
cmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkRpc3BsYXlMaW5rT2JzZXJ2ZXJJRCcsCiAgICAgICAg
ICdXZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAgICAnV2ViS2l0OjpHZW9sb2NhdGlvbklkZW50
aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUnLAogICAgICAgICAnV2Vi
S2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpMZWdhY3lDdXN0
b21Qcm90b2NvbElEJywKQEAgLTUzMCw2ICs1MzMsNyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVh
ZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAgICAnT3B0aW9uU2V0JzogeydoZWFkZXJzJzog
Wyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3Vt
ZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnVmVjdG9yJzogeydoZWFkZXJzJzogWyc8d3RmL1Zl
Y3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgi
J119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2Fy
Z3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKKyAgICAgICAg
J0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRlcnMnOiBbJyJBcnJheVJlZmVyZW5jZS5oIidd
LCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAg
IH0KIAogICAgIG1hdGNoID0gcmUubWF0Y2goJyg/UDx0ZW1wbGF0ZV9uYW1lPi4rPyk8KD9QPHBh
cmFtZXRlcl9zdHJpbmc+LispPicsIHRlbXBsYXRlX3N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElEYXRhLmNwcAppbmRleCA2MTM0M2JkOTQxMDZiNmU3ODlmODNiYzI1ZGU3OWY3YTYwNDA5
M2NjLi5jNzgyMzE2ZjMwNTdhM2NhZjlkM2UyMDc3YzgxMzI1NTNlNjk3NTZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggN2JhMjA3YWJiMGFjY2M4YTU3MGY1
YzY2M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdkMDNmYWZlMDM5NTg3OTUyYTYzNzhkMWE5YzhmZjJm
NzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtODQsNyAr
ODQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJv
b2wpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzRGFl
bW9uKCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsKICAgICB2b2lkIHNldFFP
UyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91Z2hwdXRRT1MpOwogI2VuZGlmCkBAIC0xODQsNCAr
MTgzLDMgQEAgc3RydWN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMg
ewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBi
YjQwNmMyY2ZiZGUxMTNlOWIuLmJiYjc1NzY1Y2ZlZDQwNzI1MWY2NThjNjBkNmNjYjA5NTY4NDgy
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMzIyMSw0ICszMjIxLDgyIEBAIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURh
dGE+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6CiAgICAgcmV0
dXJuIHsgV1RGTW92ZSgqcmVzdWx0KSB9OwogfQogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQor
eworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJp
YnV0ZXMuZGVwdGg7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLmFudGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMu
cHJlbXVsdGlwbGllZEFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVzZXJ2ZURy
YXdpbmdCdWZmZXI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9y
bWFuY2VDYXZlYXQ7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsK
KyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXM7CisgICAgZW5jb2RlciA8
PCBhdHRyaWJ1dGVzLmlzV2ViR0wyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5ub0V4dGVu
c2lvbnM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2U7CisjaWYgRU5BQkxF
KFdFQlhSKQorICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy54ckNvbXBhdGlibGU7CisjZW5kaWYK
K30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRy
aWJ1dGVzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLmRlcHRoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3RlbmNpbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLnByZW11bHRpcGxpZWRBbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShh
dHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wb3dlclBy
ZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcykpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmlzV2ViR0wyKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMu
eHJDb21wYXRpYmxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAg
IHJldHVybiBhdHRyaWJ1dGVzOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mIGFjdGl2ZUluZm8pCit7
CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLm5hbWU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJ
bmZvLnR5cGU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9CisKK09wdGlvbmFs
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0
aXZlSW5mbzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8ubmFtZSkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJ
bmZvLnR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYWN0aXZlSW5mby5zaXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gYWN0aXZlSW5mbzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0
YTkzMjE1OTEzMGNiN2JjZGU1NWUyMTFlMTdjNGJlZGVmMTcwNWQ2Li42YTlkYTdlMzMwYmQ4Yjg4
MWY3Mjk4ZjUyODFiZjkwZDg1Y2FmNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzEsNiArNzEsMTMgQEAKICNpbmNsdWRlICJBcmd1bWVu
dENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkgJiYgVVNFKEFOR0xFKQorI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1R5
cGVzR0wuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsK
IGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC0yMDMsNiArMjEwLDEwIEBAIHN0cnVjdCBTZXJpYWxp
emVkQXR0YWNobWVudERhdGE7CiB1c2luZyBJREJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZl
Y3RvcjxTdHJpbmc+PjsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpICYmIFVTRShBTkdMRSkKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXM7CisjZW5kaWYKKwogbmFtZXNwYWNlIERPTUNhY2hlRW5naW5lIHsKIHN0cnVjdCBDYWNoZUlu
Zm87CiBzdHJ1Y3QgUmVjb3JkOwpAQCAtODczLDYgKzg4NCwxOSBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IHsKIH07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KSAmJiBVU0UoQU5HTEUpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsK
KyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1
cz4gewogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KSAmJiBVU0UoQU5HTEUpCisKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVu
Y2UsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1
bHQsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bv
d2VyLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdo
UGVyZm9ybWFuY2UKKyAgICA+OworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
aW5kZXggY2YxMzFhOTIxZTA4NjM2NWRiZjc3ZmE5OGU0MWMxYzc0YTNlN2UyNS4uYWRkOTQ5YmE1
MDhkOGU4MTQwODdmZWRlN2IwNDhhM2RlYzZjZjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE1OCw2ICsxNTgsOSBA
QCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nl
c3M7CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3M7CiAgICAgZW5j
b2RlciA8PCBzaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3M7CisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7CisjZW5kaWYKICAg
ICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91
bGRFbmFibGVWUDlTV0RlY29kZXI7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAt
NTEwLDYgKzUxMywxMCBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcykpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaAppbmRleCBkOTFlNDYwMzhmMzA5YjUxMzBiZmRlNThkZmY0YTlmMTgxOTUx
ZGZkLi5jMjA2MTIzMTE0MzViZjRmOTJjZjA2ZmU1ZTExMjA1YTRiNTExMmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMjks
NiArMjI5LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wg
c2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3Vs
ZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRQbGF5TWVk
aWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIHNo
b3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wg
c2hvdWxkRW5hYmxlVlA5RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVW
UDlTV0RlY29kZXIgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggOWJkOGE4
MTc1NDlmNThmZTM4M2Q3MjVkYTY2M2YzYmM1NGNhMGQ3NC4uNzdlOWI0ZDVjYzc1MmZiY2RiNmI2
NWY5YWRjMjYwMTk1NmNhMTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKaW5kZXggMWQ4NGUyZmUyNjhmMzQ2MGViMjk3
NWM0MmJhOTVkMTRmMWQyMzVjZi4uZmEyNjhkNTg0YTBmYzhkZjg3YTIxZmE0NTYwNzdiOGM1ZDQy
Yjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1l
bnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVB
cmd1bWVudENvZGVyc1NvdXAuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2VydGlm
aWNhdGVJCiAgICAgLy8gRW5jb2RlIHN0YXJ0aW5nIGZyb20gdGhlIHJvb3QgY2VydGlmaWNhdGUu
CiAgICAgZm9yIChzaXplX3QgaSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0LnNpemUoKTsgaSA+IDA7
IC0taSkgewogICAgICAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlc0Rh
dGFMaXN0W2kgLSAxXS5nZXQoKTsKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVWYXJpYWJsZUxlbmd0
aEJ5dGVBcnJheShJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmlj
YXRlLT5sZW4pKTsKKyAgICAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoY2VydGlm
aWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pOwogICAgIH0KIAogICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7CkBAIC0x
MDAsNyArMTAwLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBDZXJ0aWZpY2F0ZUluZm8mIGMKICAgICBHUmVmUHRyPEdUbHND
ZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGU7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNo
YWluTGVuZ3RoOyBpKyspIHsKICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNlcnRpZmljYXRl
RGF0YVJlZmVyZW5jZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3Ro
Qnl0ZUFycmF5KGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZSkpCisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJy
YXlfc2l6ZWRfbmV3KGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjc3LDQg
KzI3NywzIEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3Vt
ZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1CiAjZW5kaWYKIAogfQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAppbmRleCAwOTE3ZjAxYmUxYzlmOGNhYTJhYmY3ZjBmODkwZjg5NWEzZjJlZjg2Li5mODNhNGNh
Yjk1Y2E4ZjAxNWM4OTg2NWQ3ZmY5MzBhZjUxZTVmMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI2LDYg
KzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCkBAIC0xMzcsNyArMTM4
LDYgQEAgUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAg
QG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5Ci1QbGF0Zm9y
bS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5j
cHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9y
bS9JUEMvSlNJUENCaW5kaW5nLmNwcCBAbm8tdW5pZnkKQEAgLTU2OCw2ICs1NjgsOCBAQCBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAK
IFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCitXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAt
NjkzLDMgKzY5NSw2IEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3Bw
CiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCiBXZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorCitSZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGVhOGI3ODFkMjBhODFhMDhl
NDRiNDRkYmEwYjU4ZjIxYmQ2Zjk3My4uNzFmZmM1ZjJlMDRkZWQwNWRlOGZhZWEyZTA5YTA0OTI2
M2E2OTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTYsNiArNTYsNyBAQCBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAogTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcAogCiBHUFVQcm9jZXNzL0VudHJ5UG9pbnQv
Q29jb2EvWFBDU2VydmljZS9HUFVTZXJ2aWNlRW50cnlQb2ludC5tbQorR1BVUHJvY2Vzcy9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAogR1BVUHJvY2Vzcy9p
b3MvR1BVUHJvY2Vzc0lPUy5tbQogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4
IDJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QuLjczN2I2MjU4MTk4NjZh
MGVjYjU5OWEyMTMwYjMyOTEzZWFmMzk2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zMCwxMCArMzAsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDRmMzk4YjUzMGY2MDg1NzVj
OTY3YjgzYzc0ZmEyZjQzMjhmNmNlM2IuLjhjYTk3ZTZlNTk3YmQ3MTEwYTBkNzM4ZTBjNGE3Yzg1
NjAzYThhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nl
c3NQcm94eS5oCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFByb2Nlc3NU
aHJvdHRsZXImIHRocm90dGxlcigpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CisgICAgdXNpbmcgU2VuZFN5
bmNSZXN1bHQgPSBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAx
X3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0p
OwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA6
IGJvb2wgeyBObywgWWVzIH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4g
dm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmLCBDJiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQg
PSAwLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiA9IHsgfSwgU2hvdWxkU3RhcnRQcm9jZXNz
VGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6
WWVzKTsKQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVy
biBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTE2
MywxMiArMTY0LDEyIEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNz
YWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IAotYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNz
YWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMpCitBdXhpbGlhcnlQcm9jZXNzUHJveHk6OlNlbmRTeW5jUmVzdWx0IEF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVw
bHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PElQ
Qzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VS
VChVOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFRy
YWNlU2NvcGUgc2NvcGUoU3luY01lc3NhZ2VTdGFydCwgU3luY01lc3NhZ2VFbmQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5k
ZXggODIzYzIwMmE4NTZhMDEzNmRkOWVhNzU5ZjBlY2RlYmE0N2Y0ZjM2Mi4uYjU3N2NiZGY4ZTA3
OGY0ZmI0Zjg3MzRkN2JmZDYwOGQyMDM4ODA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaApAQCAtMzIsMTAgKzMyLDYgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24gZmluYWwg
OiBwdWJsaWMgTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24sIHB1YmxpYyBGcmFtZUxv
YWRTdGF0ZTo6T2JzZXJ2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKaW5kZXggZmY5OGI4NGZhODlkYmVmZGQ2NDY2
NmJiYmE0MmZjOTBjZWMzNTc3Zi4uMTI4YTM5NzdlNjNlZTRmNGVmMWYyMGVhYWVjODZkMDhlY2Jm
NThkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29s
SUQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgpAQCAtMzUsMTAgKzM2LDYgQEAKIE9CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbExvYWRl
cjsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzRjNzE4NzRh
MTBkYTliNTQxZmVlMjgyMDgwOGMxZTUwZDNmYTkyYi4uOWRiM2E1MDliOTE0YzA5M2NhZjE2OWEw
NWQ2NWI1N2VkMGM4MDEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCkBAIC04
MCwxMCArODEsNiBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggMjRiNjMzZTQ4NGQyYTM1YmE3
NGQ0NWYxMmVkZTM0YTBmNzhjYTBhNi4uMjQ4ZTUzYTA4M2QxOWEwZWY0ZDgzYzIzYjhjY2UwMDM0
NWRhYWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJJbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggMTI5YTM0MGYwODk2NGQwZmZhMjNhMzcxMDFhMDlh
ODU2ZDNjY2NiMi4uYTRkOGQ3Y2Q4MDRlNjU2MGRhYmZkZTYxMTRmZjA2MjExYmFkNDdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb250ZW50V29ybGRTaGFyZWQuaCIK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTQ4LDEwICs0OSw2IEBAIGNsYXNzIFVzZXJT
Y3JpcHQ7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggYzNjNTJkMTYwYzQ5ZTAyYWIyZTI0Nzg0Y2RjZDNlMWQyNWRiZTZhYy4uYmNkMDI3YjE3
MzgxYmE4OGE1YzMxYjk3ODAwMWJlNmM4MjU3ZWY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OCw3ICs1OCw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC03OTI3LDYg
Kzc5MjYsMTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zv
ckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRP
TUluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmlu
Z0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyA9
IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpOworI2lmIEVOQUJM
RShXRUJHTCkKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzID0g
cHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCk7CisjZW5kaWYKKwog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5
RGVjb2RlckVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkKICAg
ICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5
RGVjb2RlckVuYWJsZWQoKSAmJiAoIVdlYkNvcmU6OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVm
ZXJlbmNlcygpLnZwOVNXRGVjb2RlckVuYWJsZWRPbkJhdHRlcnkoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY0MjQ0NmY5ZTlhYTRiNTIxMTE0OTAzYjZmMGI1
ZjcxMWY5MWIyZTUuLjQzN2FiNzUwYjM1YWIxNjNiMmE1ODBhZTg2NzJlZDQ2MDE2NDc0MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRl
ICJEcmFnQ29udHJvbGxlckFjdGlvbi5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAt
MjAzLDcgKzIwNCw2IEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7
CiB9CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29k
ZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKaW5kZXggZjQy
NDVjZTY1ZTlkMmQ1NjViM2YxMjVmMzQ1N2EyNTZmYjM5YzlkNC4uZDIzOGMyYTFhNjA4ZGM1YTQ2
MzJlNmExOTk3N2RiNjFiYWI2MTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKaW5kZXggZDQ0MmI2MmI1MjI1ODdmOTBmYTY4OWQ1NmIyMDYyNzZkZWI0NDgyYi4uODI1Y2Qw
MjY4OGEyNjgyMTk0MWZmN2E0MThmNGRmNWE5NzViYTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzgsMTAgKzM4LDYgQEAgbmFtZXNwYWNlIEFQ
SSB7CiBjbGFzcyBGcmFtZUluZm87CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwY2MwNjNmNjhkMDFiZDVkN2Q0OWM1NTliMTY5Njkx
ODUzZmViZGMzLi5iNzAwMmY0MTU4NmZkNGVmODg3NDA1OWU3MzY5YmRiMjFlMGI5ZDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcw
MSw3ICs3MDEsNiBAQAogCQkyRDkyQTc3QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJndW1lbnRDb2Rl
cnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEz
RDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKIAkJMkQ5
MkE3N0MyMTJCNkE3MTAwRjQ5M0ZEIC8qIEF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk2NkExMTJGQUY1NzAwNkJDQzI0IC8q
IEF0dGFjaG1lbnQuY3BwICovOyB9OwogCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi87IH07Ci0JCTJE
OTJBNzdFMjEyQjZBNzEwMEY0OTNGRCAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQzc1MzdEMTgzQkU1MEYwMDcyQ0Ix
NSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZE
IC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovOyB9OwogCQky
RDkyQTc4MDIxMkI2QTcxMDBGNDkzRkQgLyogRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ5RjEwRjQzN0QxMDA1OEMxNUEgLyog
RW5jb2Rlci5jcHAgKi87IH07CiAJCTJEOTJBNzgxMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEzRUVEMEMxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAg
Ki87IH07CkBAIC0xMzA2LDYgKzEzMDUsNyBAQAogCQk3QUZCRDM2MzIxRTUwRjM5MDA1REJBQ0Ig
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi87IH07CiAJCTdBRkJEMzY3MjFFNTFCQUIw
MDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVE
QkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FG
QkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CisJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZC
QyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmgg
Ki87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEz
M0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBB
UElEaWN0aW9uYXJ5LmggKi87IH07CkBAIC0yNzIzLDcgKzI3MjMsNiBAQAogCQkxQUM1RkZDMTE3
NEJGRDFCMDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2Fk
U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUxvYWRT
dGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1MzdBMTgzQTlGREIw
MDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhZ2VMb2FkU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFDNzUz
N0QxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdE
ZXRlY3Rpb25EaXNhYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5n
RGV0ZWN0aW9uRGlzYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVB
MUMxQjMzNjk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhhbmdEZXRlY3Rpb25EaXNhYmxlck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzODksNiArNDM4OCwxNyBAQAog
CQk3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oOyBwYXRoID0gQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQz
NkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGVyc2lzdGVuY3lVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2
RTIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQZXJzaXN0ZW5jeVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCNDhFMzQ0MjU3N0FDMzcwMDlGMUQ4MyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1
QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVy
YXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYw
MEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMkExQzhDRDk1
RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2
QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NjgwLDExICs2NjkwLDExIEBACiAJCQkJMUFFRkQyNzgxMUQxNkM4MTAwODIx
OUQzIC8qIEFyZ3VtZW50Q29kZXIuaCAqLywKIAkJCQkxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUg
LyogQXJndW1lbnRDb2RlcnMuY3BwICovLAogCQkJCTFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAv
KiBBcmd1bWVudENvZGVycy5oICovLAorCQkJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBB
cnJheVJlZmVyZW5jZS5oICovLAogCQkJCUJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRh
Y2htZW50LmNwcCAqLywKIAkJCQlCQ0VFOTY2QjExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVu
dC5oICovLAogCQkJCUJDMDMyREEyMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAq
LywKIAkJCQlCQzAzMkRBMzEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5oICovLAotCQkJ
CTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkx
QUM3NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUJDMDMy
RDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQz
N0QxMDA1OEMxNUEgLyogRGVjb2Rlci5oICovLApAQCAtODM1NiwxMSArODM2NiwxNiBAQAogCQkJ
CTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKIAkJCQlGNDA5NENCQTI1NTMw
NDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwICovLAogCQkJCUY0MDk0
Q0I5MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oICovLAorCQkJ
CTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
aCAqLywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3
RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2Vu
ZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaCAqLywKKwkJCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8sCisJCQkJN0I5MDQxNjYyNTRBRkRFQjAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLywKKwkJCQk3QjkwNDE2
NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdl
cy5pbiAqLywKKwkJCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8sCiAJCQkJNzI3QTdGNDkyNDA4
QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDA5
RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywK
IAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmggKi8sCkBAIC04Mzc1LDkgKzgzOTAsMTQgQEAKIAkJNTUwNjQwQTEyNDA3MUEyOTAwQUFF
MDQ1IC8qIGdyYXBoaWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk3QjQ4RTM0MzI1NzdBQkY4MDA5RjFEODMgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRD
QkMyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAqLywKIAkJ
CQlGNDA5NENCQjI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCAq
LywKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1
ZmZlci5oICovLAorCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAorCQkJCTdCOTA0MTZEMjU1
MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oICovLAogCQkJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZl
ci5oICovLAogCQkJCTU1MDY0MEEyMjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCAqLywKIAkJCQk1NTA2NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oICovLApAQCAtODc3NSw2ICs4Nzk1LDE0IEBACiAJCQluYW1lID0gQ2xh
c3NpZmllcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTdCNDhFMzQzMjU3
N0FCRjgwMDlGMUQ4MyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJN0I0OEUzNDQyNTc3QUMzNzAwOUYxRDgzIC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTdDNkU3MEY4MThCMkQ0N0UwMEYyNEUyRSAvKiBj
b2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMTIw
NSw2ICsxMTIzMyw3IEBACiAJCQkJMUFFRkQyRjcxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50
Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMEM0QTEyQjE2MzM0MDA4RTQ5RTIgLyog
QXJndW1lbnRDb2RlcnNDRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3NUM0NEEyMUFBMzE3MTAw
MDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCMURC
MjY2MjU2NjhDRTEwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUFGQTYzNEYyMzRGN0M2NDAwRkZBODY0IC8qIEFzeW5jUmV2YWxpZGF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0VFOTY2RDExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzI3NCw3ICsxMzMwMyw2IEBACiAJCQkJMkQ5MkE3ODUy
MTJCNkFCMTAwRjQ5M0ZEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5z
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRiAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTJEOTJBNzdFMjEyQjZBNzEwMEY0OTNGRCAvKiBEYXRhUmVmZXJlbmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNv
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5REFBMzhDMjRDQkExQTgwMDc5M0Q3NSAvKiBE
ZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMEM1NkZFMjI5
RjFERUEwMEJEMzNFNyAvKiBEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuaAppbmRleCBmOTJkYTZhNDdmN2UyNGYzODM5OWFhMzY5OGEyMTI5
MGQzNjFkNGE2Li5jOWRjNjgyYjg3NTQ5YjgyNTBkYjIyYjJhMWNlMjE1NTUwMDBjZWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oCkBAIC0zNiwxMCArMzYsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBh
eW1lbnRDb29yZGluYXRvcjsKIGNsYXNzIFBheW1lbnRDb250YWN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDJjMGRm
NWI5ZjU0OTY4NDdlZDY2OTEwYmYyZjM5YjJjZGM2MGNhMDIuLjViZThiOTk3NTIwYzRhZDdmMWI0
NDA3YWU3MjA0Yzg0YTk5ODg3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM1LDEwICszNSw2IEBACiAjaW5jbHVk
ZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZhMmE2OWMzODA3M2Fk
MTFmMmQ5Y2U5NGUyNzNiNjczZTViOGJmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKKworI2luY2x1ZGUg
PHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJiN2I5ZWFjMTg5MDk4
ZjM1ODVjMWE0Yzc0MmMwNTg5ZjEzNjI4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKKworI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKK30KKworUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJN
YXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJl
Y2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAgICBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAg
ICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3ND
b250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVCdWZmZXIoKTsKKyNlbmRp
ZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwor
fQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgbV9jdXJyZW50V2lk
dGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVw
bHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VS
ZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgYXV0byYgc2MgPSBwbGF0
Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CisgICAgICAgIHNj
LnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOworICAgIH0KKyNl
bHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVw
YXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5
IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgdGhlIHJpZ2h0
IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM0OQorICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAgICBpZiAobV9kaWRJbml0
aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVkIG91dCBiZWZvcmUsIHNv
IGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRF
eHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAgIGZvciAoYXV0byogY2xp
ZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9yY2VDb250
ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0No
YW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50
cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRpbEluaXRp
YWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47Cisg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChj
b25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3lu
Y01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91dCwgc28g
cmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2UgdGhlIGNv
bnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1h
cmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2UgbG9zdCBp
biB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEzYWFh
MGMxOGNhNzBiM2FlOTY2MTcwNjAxZmQ3MTlkNTk0MTk1NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC0wLDAgKzEsNDEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBXZWIgcHJvY2VzcyBzaWRlIGltcGxlbWVu
dGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGludGVyZmFjZS4gVGhlIGltcGxlbWVudGF0aW9u
CisvLyBjb252ZXJ0cyB0aGUgaW50ZXJmYWNlIHRvIGEgc2VxdWVuY2Ugb2YgSVBDIG1lc3NhZ2Vz
IGFuZCBzZW5kcyB0aGUgbWVzc2FnZXMgdG8KKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGlu
IEdQVSBwcm9jZXNzLgorLy8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVk
IGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBmaW5hbAorICAgIDogcHVibGljIElQQzo6TWVzc2Fn
ZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+CisgICAgLCBwdWJs
aWMgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIH5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KCkgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIgb3ZlcnJpZGVzLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVz
LgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBv
dmVycmlkZXMuCisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7
CisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOworICAgIHVzaW5nIFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7CisgICAgdm9pZCBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKKyAg
ICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgc2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpIGZpbmFsOwor
CisgICAgLy8gRnVuY3Rpb25zIHdpdGggYSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMg
bGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorICAgIHZvaWQgc2V0
RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFsOworICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJy
b3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOworICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGlj
RXJyb3JMaXN0KCkgZmluYWw7CisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1
cmUpIGZpbmFsOworICAgIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpIGZpbmFsOworICAgIHZvaWQgYmluZEF0dHJpYkxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5k
UmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5h
bDsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xj
bGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7Cisg
ICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgYmxl
bmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkg
ZmluYWw7CisgICAgdm9pZCBibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZh
Y3RvcikgZmluYWw7CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBzcmNSR0Is
IEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFscGhhKSBm
aW5hbDsKKyAgICBHQ0dMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdl
dCkgZmluYWw7CisgICAgdm9pZCBjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykgZmluYWw7CisgICAg
dm9pZCBjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xh
bXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQgY2xlYXJEZXB0aChH
Q0dMY2xhbXBmIGRlcHRoKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyU3RlbmNpbChHQ0dMaW50IHMp
IGZpbmFsOworICAgIHZvaWQgY29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4g
Z3JlZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhhKSBmaW5hbDsKKyAgICB2
b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lk
IGNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVm
ZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZp
bmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUHJvZ3JhbSgpIGZpbmFsOworICAgIFBs
YXRmb3JtR0xPYmplY3QgY3JlYXRlUmVuZGVyYnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVUZXh0dXJlKCkgZmluYWw7CisgICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51
bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBkZXB0aEZ1bmMoR0NHTGVudW0gZnVuYykgZmluYWw7CisgICAgdm9pZCBk
ZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykgZmluYWw7CisgICAgdm9pZCBkZXB0aFJhbmdlKEdD
R0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikgZmluYWw7CisgICAgdm9pZCBkZXRhY2hT
aGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFs
OworICAgIHZvaWQgZGlzYWJsZShHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIHZvaWQgZGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdB
cnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50KSBmaW5h
bDsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGVuYWJs
ZShHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
R0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgZmluaXNoKCkgZmluYWw7CisgICAgdm9p
ZCBmbHVzaCgpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRl
eHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRl
eHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczLCBHQ0dMaW50IGxldmVsKSBmaW5hbDsKKyAg
ICB2b2lkIGZyb250RmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdlbmVyYXRl
TWlwbWFwKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJn
MikgZmluYWw7CisgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcm
IG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDR0xl
bnVtIG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVnZXJ2KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludDY0
IGdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludDY0IGdldElu
dGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsK
KyAgICBHQ0dMaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAg
U3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgR0NHTGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2hhZGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzAsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVySW5m
b0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZ2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUs
IEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pIGZpbmFsOwor
ICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICBHQ0dMZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtZnYoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+
IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsK
KyAgICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQg
Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBu
YW1lKSBmaW5hbDsKKyAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBoaW50KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNCdWZmZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0VuYWJsZWQo
R0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNQcm9ncmFtKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNSZW5kZXJidWZmZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVGV4dHVyZShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgbGluZVdpZHRoKEdDR0xmbG9h
dCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmtQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBw
YXJhbSkgZmluYWw7CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdD
R0xmbG9hdCB1bml0cykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBm
IHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpIGZpbmFsOworICAgIHZvaWQgc2Npc3NvcihHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5h
bDsKKyAgICB2b2lkIHNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0
cmluZyYpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NHTGlu
dCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0
ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFz
aykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAg
ICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykg
ZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWws
IEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xl
bnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykg
ZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NH
TGludCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2YoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
M2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xmbG9hdCB4KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQ0dM
dWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpIGZpbmFsOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdD
R0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQg
dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwg
R0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpIGZp
bmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGlu
dCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkg
c3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB2aWV3cG9ydChHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5h
bDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJn
MSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgZmlu
YWw7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJl
YWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7Cisg
ICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAg
ICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4
QXJyYXkoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIpIGZpbmFsOworICAgIHZvaWQgZ2V0
QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bh
bjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGlu
dCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NH
TGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwg
R0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCBmcmFt
ZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQs
IFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikg
ZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpIGZpbmFsOworICAgIHZvaWQgaW52
YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0g
c3JjKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0
b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAg
IHZvaWQgdGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lk
IHRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFnRGF0YUxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0xdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjApIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVp
bnQgdjEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
dWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWlu
dCB2MiwgR0NHTHVpbnQgdjMpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTF1aXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRh
dGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
eDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdDR0x1aW50
IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpIGZpbmFs
OworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTGludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWko
R0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1
aW50IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVy
dGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZv
aWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1
aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YnVmcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NH
TGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1ZXMpIGZpbmFsOwor
ICAgIHZvaWQgY2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJmaShH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dM
aW50IHN0ZW5jaWwpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUXVlcnkoKSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFs
OworICAgIEdDR0xib29sZWFuIGlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7
CisgICAgdm9pZCBiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBx
dWVyeSkgZmluYWw7CisgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwor
ICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2Jq
ZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVTYW1wbGVyKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTYW1wbGVyKFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9pZCBiaW5kU2FtcGxlcihHQ0dMdWludCB1
bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAg
IEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdD
R0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykg
ZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAg
IHZvaWQgZGVsZXRlU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBjbGll
bnRXYWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQg
dGltZW91dCkgZmluYWw7CisgICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0
ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFN5
bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICBHQ0dMYm9v
bGVhbiBpc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAg
IHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9i
amVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVt
IHByaW1pdGl2ZU1vZGUpIGZpbmFsOworICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKSBm
aW5hbDsKKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZl
ck1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZp
bmFsOworICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQg
cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVy
KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1
aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdD
R0xzaXplaXB0cikgZmluYWw7CisgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNl
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3Jt
TmFtZXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2Nr
SW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9j
a05hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBm
aW5hbDsKKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gcGFyYW1zKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAs
IEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0
WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRm
aWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxl
cywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcHVzaEdyb3Vw
TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwb3BHcm91cE1h
cmtlckVYVCgpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRy
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxz
KSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmlu
YWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSBmaW5hbDsgLy8gTk9MSU5UCisgICAgdm9pZCBnZXRN
dWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKSBmaW5h
bDsKKyAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRU
ZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFO
R0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
dGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pIGZpbmFsOworICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkgZmlu
YWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpIGZpbmFsOwor
ICAgIC8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisK
K3Byb3RlY3RlZDoKKyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVy
cmlkZXMuCisgICAgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpIGZpbmFsOworCitwcml2YXRl
OgorICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQgd2FzQ3JlYXRlZChT
dHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25z
KTsKKyAgICB2b2lkIHdhc0xvc3QoKTsKKyAgICB2b2lkIHdhc0NoYW5nZWQoKTsKKworICAgIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJik7CisgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxzZSB9OworICAg
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciB7IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworfTsKKworLy8g
VGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlz
dCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0Lgorc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWVfdjxHQ0dMZW51bSwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KEdDR0xib29sZWFuKSA9PSBzaXplb2YoYm9vbCkpOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWVfdjxHQ0dMYml0ZmllbGQsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZV92PEdDR0xieXRlLCBpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NH
THVieXRlLCB1aW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xzaG9y
dCwgaW50MTZfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdXNob3J0LCB1
aW50MTZfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMaW50LCBpbnQzMl90
Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xzaXplaSwgaW50MzJfdD4pOwor
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWludCwgdWludDMyX3Q+KTsKK3N0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGZsb2F0LCBmbG9hdD4pOworc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWVfdjxHQ0dMaGFsZmZsb2F0LCB1aW50MTZfdD4pOworc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWVfdjxHQ0dMY2xhbXBmLCBmbG9hdD4pOworc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWVfdjxHQ0dMdm9pZCwgdm9pZD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVf
djxQbGF0Zm9ybUdMT2JqZWN0LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
TGNoYXIpID09IHNpemVvZih1aW50OF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMaW50
NjQpID09IHNpemVvZihpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMdWludDY0
KSA9PSBzaXplb2YodWludDY0X3QpKTsKKy8vIEdDR0xzeW5jIGFuZCBHQ0dMKnB0ciB0eXBlcyBh
cmUgcG9pbnRlcnMuIE9uIHNvbWUgcGxhdGZvcm1zLCB0aGV5IGFyZSAzMi1iaXQuCisvLyBDdXJy
ZW50bHkgd2UgaGFyZC1jb2RlIGl0IGJ5IHVzaW5nIDw9LCBhbmQgYXNzdW1lIHRoYXQgd2UgZG8g
bm90IHRyYW5zZmVyIGFycmF5cyBvZiB0aGUgdHlwZXMuCitzdGF0aWNfYXNzZXJ0KHNpemVvZihH
Q0dMaW50cHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0xzaXplaXB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihH
Q0dMdm9pZHB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihH
Q0dMc3luYykgPD0gc2l6ZW9mKHVpbnQ2NF90KSAmJiBzaXplb2YoR0NHTHN5bmMpID09IHNpemVv
ZihpbnRwdHJfdCkpOworLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmds
IHNjcmlwdC4KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ1NzRiNzllNGE4ODY3ZDg0MmRmOWUyMTVmZjhlZTRkNDYyM2FmYzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFdhc0NyZWF0ZWQoU3RyaW5n
IGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCisgICAg
dm9pZCBXYXNMb3N0KCkKKyAgICB2b2lkIFdhc0NoYW5nZWQoKTsKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjQxYTNkOTFkMDlkNWM3NjYzZTI3NTRlZDBh
ZjljYjMyYjFkMGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJh
dGVkLmNwcApAQCAtMCwwICsxLDE2NDcgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKQoreworICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVy
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0
LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcx
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4
dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBm
IHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENv
bG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRp
b24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRp
b25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBh
cmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdDR0xl
bnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0
UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNyY1JH
QiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihH
Q0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNvbG9yKEdDR0xjbGFt
cGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxw
aGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFy
Q29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJEZXB0
aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNp
bChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVh
biByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBh
bHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29s
b3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwg
c3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVy
KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmpl
Y3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sK
KyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUo
KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFj
ZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1l
YnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRl
cmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKEdD
R0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayhHQ0dMYm9vbGVh
biBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhS
YW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZv
cm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxl
KEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdB
cnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyhH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1
c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVz
aCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0
dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQo
dGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZW5l
cmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0
cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworYm9v
bCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7Cisg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJl
dHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRp
b24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0
cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZl
clBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xlbnVt
IG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZsb2F0
dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2KHBu
YW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRh
LCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAg
IAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFt
ZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRh
LCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7Cisg
ICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRl
Z2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVn
ZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdl
cjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9
CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRp
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAgICBpbnQ2NF90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50
NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1l
KQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVl
KQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVSZXBseTsKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAg
bWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6
ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0
cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUlu
Zm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3Jh
bUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5m
b0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xl
bnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQs
IDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3QgcHJlY2lzaW9uUmVwbHkgPSB7
IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lz
aW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkgeworICAg
ICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUg
KiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lzaW9uKQorICAgICAgICAgICAg
KnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30KKworU3RyaW5nIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQor
eworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
KQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3Jh
bSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5
KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZs
b2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2
YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAg
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1
aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZVJl
cGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6
UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVw
bHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgCit9CisK
K0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
KQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0
cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5W
YWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
QnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVl
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFi
bGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkKGNhcCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xl
YW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xi
b29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3JhbShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJv
b2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFt
ZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9y
LCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNv
dmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFsdWUs
IHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3NvcihHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHks
IHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQg
bWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3Rl
bmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2Vw
YXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50
IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0
ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3Rl
bmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRl
KGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdD
R0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWls
LCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpm
YWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBw
YXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYo
bG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5k
YXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpKGxv
Y2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHop
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2KGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0
IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00
ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBH
Q0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
NGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJp
eDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEp
LCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQg
aW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4
LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRl
eCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBH
Q0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6
ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmlld3BvcnQoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lk
dGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2Fn
ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVy
RGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2Yo
dWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJl
YWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFn
ZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VT
aXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1Yklt
YWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBm
aXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNv
dW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0
ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
VmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNW
ZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5W
YWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRl
eEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVU
YXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NH
THNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9m
ZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFu
PEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0
YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAg
bWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9m
KHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBz
cmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGlu
dCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRl
cikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZy
YW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgx
LCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9i
amVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXll
cih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRh
Y2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52
YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNo
bWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNyYyksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxl
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3Rv
cmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdldCwg
bGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2Uz
RDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBy
ZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwg
R0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
M3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQg
djIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBH
Q0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRh
dGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
ZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJp
eDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgs
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4
LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpdihpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGlu
dDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBH
Q0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5k
YXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2lu
dGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlw
ZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVp
bnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFu
Z2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRy
YXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZh
bHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVy
ZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwg
R0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQoreworICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRm
b3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5k
UXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0
dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
U2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBs
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxl
cihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9v
bGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBh
cmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZmxvYXQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNh
bXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUp
Cit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFy
YW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc3luYyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29u
ZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VT
eW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIGJvb2wgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKEdDR0xzeW5jIGFy
ZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFy
ZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwg
R0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7CisgICAgdWludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRp
bWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3lu
Yzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywg
R0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0
PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7Cisg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9y
bUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3Jh
bSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFj
dGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9ybUZl
ZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3Jt
RmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJh
c2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZm
ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRC
dWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVm
ZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVj
dCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRh
cmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRp
Y19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRV
bmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIFZlY3Rv
cjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0
aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpCit7CisgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3Jt
QmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
QmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQoreworICAgIFN0
cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9y
bUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgs
IHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJs
b2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBw
YXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAg
ICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dM
aW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBH
Q0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkx
LCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwg
c3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZp
bHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKK3sK
KyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VT
KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJn
MCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5n
JiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
bnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5k
YXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
ZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSog
Y29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVy
eWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2
b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFt
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBh
cmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiog
ZGF0YSkgLy8gTk9MSU5UCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQb2ludGVy
dlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5p
Zm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2Vu
ZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2ZGRlZTg3YWJkY2M3NmY4
NjlhZDU1NGRiNTExMmIzNmI4MmYyZDZiLi5kYTM5ODg2ZWJjOGYxNmQ4OGRmZTE4NzNjNTdhODdm
ZWNmNmU0NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC04MTgsNyArODE4
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0s
IEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCitib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVu
dW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggOTVjODM2ZTY5NTA0MWQ5N2QyNTkwMzZmZDczZGZm
NWM0NmI4ZmY5MS4uYzhjNTgyOTA1MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5N2E1NmIzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lk
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAKICAg
ICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7Ci0gICAg
Ym9vbCBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCisgICAg
YXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCiAgICAg
ICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9E
ZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkp
LAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0
ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsKIApAQCAtMTAwLDcg
KzEwMCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQ
cm9jZXNzKCkKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owog
ICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwogICAgIG1f
cmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJhbWVzKTsKLSAg
ICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihzdHJl
YW1Gb3JtYXQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpX
ZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlci5jcHAKaW5kZXggZGNiZDRmOGFmYWZlMTA2MGE2MWIwMzA1MzFlMTJj
NzRkMzdlZmZkMy4uMmNhOTdjNjM3YjFmMTllODI3OGE2YWU3MTNjNWMxNGU2NzY3MTdlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nv
dXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKENPQ09B
KQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVy
UHJveHlNZXNzYWdlcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuY3BwCmluZGV4IGI4ZjQ1YTZkNWJiNGRiNDYwOTg4MDEyNDNiYjVlOTMxN2IxZTNlMmIuLjY1
YjhmZDBkNzczNDdlOTM4YjU2NDU4MjI2Yjc4ZGE0M2M5Nzg5MTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIu
aCIKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJS
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVy
TWFuYWdlci5oCmluZGV4IGU1OWUxYjA2YjQ0N2U1ZDgwY2E2MTA1MmM2YzdhMzJjNGJhMTQyZTYu
LjgxOTQwOTBjOTMzYjJmMTFhNjQ2MGFiM2MxNzcyZDM3NjE2MzcxMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVy
SWRlbnRpZmllci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggMGRiODVhZTliZDI0
MWViYTFiZGE0ZTYyMjQ0MGY2MzI4ZTFkOGEwYi4uMjk3ZWViZGExOTE4OWRmZTBjZmU2YzFlZDc2
OWFhY2I5ZDZkOTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZS5oCmluZGV4IGQ1NDI0NDJjODQ0ZTU0ODNmZDNjZWQ3ODUwNWRjYTE4Njk0YWU0
YTQuLmEzMzllYjdiZmZkNmI0NTE5NGQyOWExMDkxNGJmYTJmZmJkNzRhM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZS5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCmluZGV4IDBjNmY3M2QwNzE0NGI1NjI2NzY5MzY3YzlmMmEzYTQwMTdl
YWRlODAuLjE2OGVmNDM1ZGRlNTYxNGQzMGYzYmUyODY3MGE0N2FlZDYxNmRlMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxpYldl
YlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNz
YWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuaAppbmRleCA3MzlhNDk2ZWY0OTRjYjRhNjE4NTY2ZmZjNjRkNGEyNjRh
NzRlOWQwLi40YmVhZTA2MjMxN2JhMjZhNjA2ODNmMWY0NTEyMzNlYjEwNzNhYTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2Rlcklk
ZW50aWZpZXIuaCIKQEAgLTQzLDcgKzQ0LDYgQEAgdXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYg
PSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IDJkYWQyMDM4NDJmMGU1NTNmZTNiNDYyNDQxZWU5NGZhMjY0OTNh
MTEuLmMyOGNlN2YyZTE3ZTg5YThlNTE4NmE3NzA2YTJlOGE0NGY2YjdlMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZUJ1
bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRUeXBl
cy5oPgpAQCAtNTQsNyArNTUsNiBAQCBjbGFzcyBEYXRhOwogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBEZWNvZGVyOwogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDQgKzE2MSwzIEBAIHByaXZhdGU6CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDYyNzVjZjZhNmU3ZTUwYzZiMzYwNjJlMTMxODc1NzUyODlhNTgw
ZWUuLmU1YmE2NjFhZTY2ZjU1YTkwNzQ2NGU2ZmYzNmU0MmI3YWRkMDBkZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCYgaW5zcGVjdG9yRnJvbnRlbmQpCiAgICAgOiBtX2Zyb250ZW5kQ2xpZW50KG1ha2VX
ZWFrUHRyKGluc3BlY3RvckZyb250ZW5kKSkKIHsKLSAgICBQYWdlKiBwYWdlID0gaW5zcGVjdG9y
RnJvbnRlbmQuZnJvbnRlbmRQYWdlKCk7CisgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IGluc3Bl
Y3RvckZyb250ZW5kLmZyb250ZW5kUGFnZSgpOwogICAgIEFTU0VSVChwYWdlKTsKIAogLy8gICAg
V1RGUmVwb3J0QmFja3RyYWNlKCk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvCiAgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpLAogICAgICAg
ICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGRpc3BsYXlOYW1lKSwKICAgICB9OwotICAgIG1fZnJvbnRl
bmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1
bHRBc3luYygicmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlv
blJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRl
bmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJyZWdpc3Rl
ckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zCiAgICAgfQogCiAgICAg
VmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZhbHVlOjpjcmVhdGUo
ZXh0ZW5zaW9uSUQpIH07Ci0gICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRj
aGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1bnJlZ2lzdGVyRXh0ZW5zaW9u
Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUg
eworICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNo
Q29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShh
cmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERl
c3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRl
eCAzMDY0ZTljNGFmY2MyY2ZmNTRhMzI1ZTI1MzFlZDA1MjJhMDAxMzkzLi5iOTc5NDY1OWVhYmQx
ODRiMzg5YzA2ZDEzMmY4YzQyZjgwNTIzY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAt
MzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODY1NzExYjM2NmMyOGRmNDg0YjRj
ZGMwN2FhM2ZjZjNkY2ViZjJmNi4uNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4MjBhMjc4YWYx
ZGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1
ODNlMzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZiLi43ZTFkNDk5NDcxNWY4ODQ5
Y2U4YmZlNWVjMzQ1NWQ0NzM3NzgwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
UmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC0zNiw3
ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cAppbmRleCA5NGVmMGQxZmNlMmU2MDFkZjQ0OWNmZjg1MzlmYmQxNjQ3OTNlYmUyLi5mZjY5ZjU2
MDllNTc3Y2FjNzc3ZjA0YWZhNzRhZjIxMDc0ODY0Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwu
aCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5o
CmluZGV4IGY1MzQ3ODM0N2U3NzVkZjM3ZWE5NzYzNGMyMzMwOTMyYjRhMTRkMjguLmFkN2ZmMTg3
ZGJiNDM1M2I5ZWQzYmM1N2M1YmEyYzRhYTRlOGNmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya1NlbmRRdWV1ZS5oPgpAQCAtMzgsNyArMzksNiBAQAogbmFtZXNw
YWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5kZXggYWYyNDJjZDJi
NTk1YWM0YTQ0ODQyOTdiZTVkNWNmZTE4ZDQ4ZjMyNC4uN2QwMDczNjliOWNjZTg1YjhmMDU0NTdk
NjY2ZDFlNDQ1MWI5NmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCBkZDA4MjAxMDcxMmI5ZjVk
YjlmZWJkODhkYTY2OWI2ZGY2MWQwZjI5Li5iNDNjYjJlZmFkMWUxMDFlZTI2NWI5M2RkZTliMDYx
MjczNmEwOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRTdHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1I
YW5kbGUuaD4KQEAgLTMzLDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKaW5kZXggY2I0OGUwNTczNDhhMmU4NjZiMDkx
ZmY1YWM4NzI2MDVjYTE5MmRkNS4uMzIzZjI1ZWU4ZmQ4MWIwMjYzMGQyZjI1OWExYWZiODg0YjRj
ZjVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaApAQCAtMzUsNyArMzUsNiBAQAogCiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVj
b2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCmluZGV4IGVhNTM1OTYwMTA5ZmVlNmRjNDgwNWNmNjg5MTI3OThlZTlhYjZmMDMu
LjQwYjRjOGYyMTI5Y2YxMjMzYTFiMzFiODUxMjdlN2E3ZTllM2Q3Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTYwLDEwICs2
MCw2IEBAIE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9uOwogT0JKQ19DTEFTUyBXS1BERlBsdWdpbkFj
Y2Vzc2liaWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUERGTGF5ZXJDb250cm9sbGVyRGVsZWdh
dGU7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2
ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRlOWQ1NDkyMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9N
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYsMjIgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdM
KQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdAoreworICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9y
V2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1ZBUklBQkxFKGhv
c3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7CisjZWxzZQorICAg
IHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNz
TGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRl
eCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4Li4xMjE1ZjkyYTAzMTk1
ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDMs
NyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQ
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNv
cmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgor
I2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGlu
Z1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMsNiArNDA3LDcgQEAgcHJpdmF0
ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3Jv
bGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc1Zl
cnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjY0
MjE0NzdhNTZjZWUxYjQ1OWFiMWI3MGQ4ZGNhZDlkM2RhZmMzNC4uZDQ2MzNkZGI2Y2M2NDk4MDNi
OTI0NTc1NjI1YmZhNTI4YzE3ZDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyMiw2ICs0MjIsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMu
c2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUmVuZGVyRE9N
SW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgfQog
ICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFBs
YXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAgICwgbV9zaG91bGRS
ZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQ
VVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBt
X25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMubmVlZHNJbkFwcEJy
b3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzI1LDcgKzcyOCw2IEBAIFdlYlBhZ2U6
OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciogbWFuYWdl
ciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyPigpKQog
ICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSht
YW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYKLSAgICAKICAgICBp
ZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAgICAgICAgc2NhbGVWaWV3KHBh
cmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5Myw2ICszNzk1LDkgQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yQ2FudmFz
UmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nKG1fc2hvdWxk
UmVuZGVyRE9NSW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRV
c2VHUFVQcm9jZXNzRm9yTWVkaWEobV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpOworI2lm
IEVOQUJMRShXRUJHTCkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9j
ZXNzRm9yV2ViR0wobV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzcyk7CisjZW5kaWYKICNl
bmRpZgogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKQEAgLTY5OTAsNiArNjk5NSw3IEBA
IHZvaWQgV2ViUGFnZTo6c3luY2hyb25pemVDT1JTRGlzYWJsaW5nUGF0dGVybnNXaXRoTmV0d29y
a1Byb2Nlc3MoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1faWRlbnRpZmllciwg
bV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpLCAwKTsKIH0KIAorCiAjaWYgRU5BQkxFKE1FRElBX1VT
QUdFKQogdm9pZCBXZWJQYWdlOjphZGRNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24oTWVkaWFTZXNz
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIs
IGNvbnN0IFVSTCYgcGFnZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCBlN2Y4YzBhM2I2MDRlN2FhMTU3Yzc0MDIzMWU1NTU3NDlkNGVmN2M3
Li4yMTEwYTMyZjY3MGYwMGZhMjQ0ZmU2ZjlkNzk1YTZkZGY2MGQxNzA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkNv
bnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5m
by5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMTYwLDcgKzE2MSw2IEBAIGNsYXNz
IEFycmF5OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpA
QCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3lu
Y1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkp
CiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRPblN5bmNocm9ub3VzUmVwbGll
cygpOwogICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShy
ZXBseSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBs
YXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKQEAgLTE4MjYsNiArMTgyNiw5IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIGJvb2wgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07
CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRz
SW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYKQEAgLTIxODMsNCAr
MjE4NiwzIEBAIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0
b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggMzgzOGFiMzI2ZGQ4Mzk2YjYwMTA3Y2JhM2Y2MjQ1MDc0Yzk3
ZjcxNS4uMGUyOTNmYTRkZjE5Y2JmOGNkNjc5MzE3NmQ3ODc4OTJhZDhlMTI4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAg
LTUxNyw3ICs1MTcsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAgLy8gRklYTUU6IEludGVycHJldCB0aGUgZXZl
bnQgaW1tZWRpYXRlbHkgdXBvbiByZWNlaXZpbmcgaXQgaW4gVUkgcHJvY2Vzcywgd2l0aG91dCBz
ZW5kaW5nIHRvIFdlYlByb2Nlc3MgZmlyc3QuCiAgICAgYm9vbCBldmVudFdhc0hhbmRsZWQgPSBm
YWxzZTsKLSAgICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJ
bnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpLCBw
bGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRL
ZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpLCBwbGF0Zm9ybUV2
ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKICAgICAgICAgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQ6OlJlcGx5KGV2ZW50V2FzSGFu
ZGxlZCksIG1faWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNI
YW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGYy
ZjIyODIyYzdiMjIzZmNhNTlmOTU1NzNkMTFkYzk5YjEwMzQ4MTEuLjU4MmVlNzVkOTlhNzQyNDI1
NGEzOWRhYjIwNmY4NDYxNzM0YWQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTE5NDIsNiArMTk0MiwyMCBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UpCiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KKworI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgV2ViUHJvY2Vzczo6
c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wgdXNlR1BVUHJvY2Vzc0ZvcldlYkdMKQorewor
ICAgIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMID0gdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQor
Citib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKKyNlbmRpZgor
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCBlOWM0N2RiNGM0NDdjMGY0YWI2MjdjMDk0YjVmNjhkYjU2NWE5YTZjLi4xYTU4
NWFjMTQyYjE4MzI3NjRjNGQ4NTM3OTA5MGIyY2JjYTczYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM0Nyw2ICszNDcsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhib29sKTsKICAgICB2b2lkIHNldFVzZUdQ
VVByb2Nlc3NGb3JNZWRpYShib29sKTsKICAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmlu
Z0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAg
dm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCk7CisgICAgYm9vbCBzaG91bGRVc2VS
ZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShWUDkpCkBAIC02ODcsNiArNjkxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlR1BV
UHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZUdQVVBy
b2Nlc3NGb3JET01SZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNz
Rm9yTWVkaWEgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fdXNlR1BV
UHJvY2Vzc0ZvcldlYkdMIHsgZmFsc2UgfTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VlA5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGI3YzczMmNjMDg0NzBhODEyNWZjN2U1YTc0NWYxZDJmN2NjNWUxOWIuLjBhNDFkNTNjNWM4YTA5
ZDEwZTFhODEyNTNjMWJlMDEwMTkxZjM5ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0xMi0wMiAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRz
IGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVSBwcm9jZXNzLgor
ICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMgYW5kIGlz
IGluY29tcGxldGUuCisKKyAgICAgICAgQWRkIHRoZSBjb2RlIGdlbmVyYXRvciB0byBnZW5lcmF0
ZSB0aGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseQorICAgICAgICB0aGUgZ2VuZXJhdG9yIGdl
bmVyYXRlcyBhIFdlYktpdCBJUEMgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgVGhlIGlucHV0
IGRlZmluaXRpb24gdG8gdGhlIGdlbmVyYXRvciBpcyB0aGUgcHJveHkgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaGVhZGVyIGZpbGVzLgorICAgICAgICBUaGUgb3V0cHV0IG9mIHRoZSBnZW5lcmF0
b3IgaXMKKyAgICAgICAgICAgLSBXZWJLaXQgSVBDIG1lc3NhZ2UgZGVmaW5pdGlvbiBmaWxlCisg
ICAgICAgICAgIC0gTWVzc2FnZSBzZW5kZXIgY29kZQorICAgICAgICAgICAtIE1lc3NhZ2UgcmVj
ZWl2ZXIgYW5kIHBheWxvYWQgaW52b2NhdGlvbiBjb2RlCisKKyAgICAgICAgVGhlIGdlbmVyYXRv
ciBjb252ZXJ0cyBHcmFwaGljc0NvbnRleHRHTCBHQ0dMIC1wcmVmaXhlZCB0eXBlcyB0bworICAg
ICAgICBzaXplZCBJUEMgdHlwZXMuCisKKyAgICAgICAgVGhlIGdlbmVyYXRvciBpcyBpbnZva2Vk
IGR1cmluZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgc3Rv
cmVkIGluIHRoZSByZXBvc2l0b3J5LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsOiBBZGRlZC4KKwogMjAyMC0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEdQVVByb2Nlc3MuQ3Jhc2hXaGlsZVBsYXlpbmdWaWRlbyBp
cyBmbGFreQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMDk4OTA5ZGUx
MzFhOTI0NGEyOWM5YTI2Y2JhMzZjMGY5MDVkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9T
Y3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAsMCArMSwxMDQ0IEBACisjIS91c3IvYmlu
L2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIHNvdXJjZSBmaWxlcyBmb3IgV2ViR0wg
R1BVIHByb2Nlc3MgSVBDLgorIworIyBweXRob24zIC1tIGJsYWNrIC1sIDE1MCBUb29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMgcHl0aG9uMyAtbSBteXB5IFRvb2xzL1NjcmlwdHMv
Z2VuZXJhdGUtZ3B1cC13ZWJnbAorIworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZW51bQoraW1w
b3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCisK
K2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJdGVyYWJsZSwgQ2FsbGFibGUsIFR1cGxl
LCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJhdG9yLCBDb3VudGVyCisKK3Jvb3RfZGly
ID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50IC8gIi4uIiAvICIuLiIpLnJlc29sdmUo
KQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIg
LyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRlbnNpb25zR0wuaCIKKworZnVuY3Rpb25z
X2lucHV0X2ZucyA9IFsKKyAgICByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2Vi
UHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oIgorXQordHlwZXNfaW5wdXRfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktp
dCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oIgorCisKK3RlbXBsYXRlX3ByZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8v
IFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVk
aXQuCisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJX
ZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAo
CisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIi8vIFRoaXMgZmlsZSBzaG91bGQgYmUg
aW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQore30KKworIiIiCispCitj
b250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQ
VVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbiIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1i
bGUKKyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYg
VVNFKEFOR0xFKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZD
b3VudGVkIHt7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAo
TWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJv
bm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRl
bnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQore30KK319CisKKyNl
bmRpZgorCisiIiIKKykKKworY29udGV4dF9wcm94eV9mdW5jdGlvbnNfZm4gPSByb290X2RpciAv
ICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIg
LyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAiCitj
b250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJs
ZQorICAgICsgIiIiCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpICYmIFVTRShBTkdMRSkKKworbmFtZXNwYWNlIFdlYktpdCB7ewore30KKworfX0KKwor
I2VuZGlmCisKKyIiIgorKQorCisKK2RlZiB3cml0ZV9maWxlKGZuLCBuZXdfY29udGVudHMpOgor
ICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgaWYgZi5y
ZWFkKCkgPT0gbmV3X2NvbnRlbnRzOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgIGV4Y2Vw
dDoKKyAgICAgICAgcGFzcworICAgIHdpdGggb3BlbihmbiwgInciKSBhcyBmOgorICAgICAgICBm
LndyaXRlKG5ld19jb250ZW50cykKKworY2xhc3MgY3BwX3R5cGUob2JqZWN0KToKKyAgICB0eXBl
X25hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0cik6Cisg
ICAgICAgIHNlbGYudHlwZV9uYW1lID0gdHlwZV9uYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBkZWYgX19oYXNoX18oc2Vs
Zik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYudHlwZV9uYW1lKQorCisgICAgZGVmIF9fcmVw
cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2Vx
X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUgPT0gb3RoZXIu
dHlwZV9uYW1lCisKKyAgICBkZWYgaXNfdm9pZChzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gc2VsZi50eXBlX25hbWUgaW4gWyJ2b2lkIiwgIkdDR0x2b2lkIiwgImNvbnN0IHZvaWQiLCAi
Y29uc3QgR0NHTHZvaWQiXQorCisgICAgZGVmIGlzX2NvbnN0KHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZS5zdGFydHN3aXRoKCJjb25zdCAiKQorCisgICAgZGVm
IGlzX2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9wb2ludGVyKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZ2V0X3ZhbHVl
X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRl
ZiBnZXRfZGVjYXlfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICBpZiBzZWxmLmlz
X2NvbnN0KCk6CisgICAgICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1l
WzY6XSkKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXRfcnZhbHVlX3R5cGUoc2Vs
ZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVf
bmFtZSArICImJiIpCisKKyAgICBkZWYgZ2V0X3BvaW50ZXJfdHlwZShzZWxmKSAtPiAnY3BwX3R5
cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIioiKQor
CitjbGFzcyBjcHBfdHlwZV9jb250YWluZXIoY3BwX3R5cGUpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0eXBlX25hbWUgOiBzdHIsIGNvbnRhaW5lcl9uYW1lIDogc3RyLCBjb250YWluZWRfdHlw
ZSA6IGNwcF90eXBlLCBhcml0eSA6IE9wdGlvbmFsW2ludF0gPSBOb25lKToKKyAgICAgICAgY3Bw
X3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNvbnRhaW5lcl9u
YW1lID0gY29udGFpbmVyX25hbWUKKyAgICAgICAgc2VsZi5jb250YWluZWRfdHlwZSA9IGNvbnRh
aW5lZF90eXBlCisgICAgICAgIHNlbGYuYXJpdHkgPSBhcml0eQorICAgIGRlZiBpc19jb250YWlu
ZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYgaXNfc3Bhbihz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NH
TFNwYW4iCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iIGFuZCBzZWxmLmFyaXR5IGlz
IE5vbmUKKyAgICBkZWYgZ2V0X2NvbnRhaW5lcl9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5jb250YWluZXJfbmFtZQorICAgIGRlZiBnZXRfYXJpdHkoc2VsZikgLT4gT3B0aW9uYWxb
aW50XToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXJpdHkKKyAgICBkZWYgZ2V0X2NvbnRhaW5lZF90
eXBlKHNlbGYpIC0+IGNwcF90eXBlOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlw
ZQorICAgIGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHNlbGYuY29udGFpbmVkX3R5cGUuaXNfY29uc3QoKQorCitkZWYgY3JlYXRlX2NwcF90
eXBlX2NvbnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRh
aW5lcl06CisgICAgbSA9IHJlLm1hdGNoKHIiKFtcdzpdKyk8KC4rKT4kIiwgdHlwZV9uYW1lKQor
ICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGNvbnRhaW5lcl9uYW1lID0g
bVsxXQorICAgIHRlbXBsYXRlcyA9IG1bMl0KKyAgICBhcml0eSA9IE5vbmUKKyAgICBtID0gcmUu
bWF0Y2gociIoW14sXSspLFxzKihcZCspIiwgdGVtcGxhdGVzKQorICAgIGlmIG06CisgICAgICAg
IHRlbXBsYXRlcyA9IG1bMV0KKyAgICAgICAgYXJpdHkgPSBpbnQobVsyXSkKKyAgICByZXR1cm4g
Y3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSwgY29udGFpbmVyX25hbWUsIGdldF9jcHBfdHlw
ZSh0ZW1wbGF0ZXMpLCBhcml0eSkKKworY2xhc3MgY3BwX3R5cGVfZnVuY3Rpb24oY3BwX3R5cGUp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIHJldHVybl92YWx1ZV90
eXBlIDogY3BwX3R5cGUsIGFyZ3VtZW50X3R5cGVzIDogTGlzdFtjcHBfdHlwZV0pOgorICAgICAg
ICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYucmV0dXJu
X3ZhbHVlX3R5cGUgID0gcmV0dXJuX3ZhbHVlX3R5cGUKKyAgICAgICAgc2VsZi5hcmd1bWVudF90
eXBlcyA9IGFyZ3VtZW50X3R5cGVzCisKK2RlZiBjcHBfc3BsaXRfYXJnc19zcGVjcyhhcmdzX3Nw
ZWMgOiBzdHIpIC0+IEl0ZXJhdG9yW3N0cl06CisgICAgICMgaHR0cHM6Ly9zdGFja292ZXJmbG93
LmNvbS9xdWVzdGlvbnMvMzM1MjcyNDUvcHl0aG9uLXNwbGl0LWJ5LWNvbW1hLXNraXBwaW5nLXRo
ZS1jb250ZW50LWluc2lkZS1wYXJlbnRoZXNlcworICAgIGNvbW1hID0gciIsKD8hKD86W148XSpc
PFtePl0qXD4pKltePD5dKlw+KSIKKyAgICByZXR1cm4gZmlsdGVyKE5vbmUsIFthLnN0cmlwKCkg
Zm9yIGEgaW4gcmUuc3BsaXQoY29tbWEsIGFyZ3Nfc3BlYy5zdHJpcCgpKV0pCisgICAgCitkZWYg
Y3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3Bw
X3R5cGVfZnVuY3Rpb25dOgorICAgIG0gPSByZS5tYXRjaChyJyguKilcKCguKilcKScsIHR5cGVf
bmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm5fdmFs
dWVfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgIGFyZ3NfdHlwZXMgPSBbZ2V0X2NwcF90
eXBlKGEpIGZvciBhIGluIGNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bMl0pXQorICAgIHJldHVybiBj
cHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUsIHJldHVybl92YWx1ZV90eXBlLCBhcmdzX3R5cGVz
KQorICAgICAgICAKKyMgUG9pbnRlciBvciByZWZlcmVyZW5jZQorY2xhc3MgY3BwX3R5cGVfaW5k
aXJlY3QoY3BwX3R5cGUpOgorICAgIGNhdGVnb3J5IDogc3RyCisgICAgdmFsdWVfdHlwZSA6IGNw
cF90eXBlCisgICAgCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY2F0
ZWdvcnkgOiBzdHIsIHZhbHVlX3R5cGUgOiBjcHBfdHlwZSk6CisgICAgICAgIGNwcF90eXBlLl9f
aW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5jYXRlZ29yeSA9IGNhdGVnb3J5
CisgICAgICAgIHNlbGYudmFsdWVfdHlwZSA9IHZhbHVlX3R5cGUKKworICAgIGRlZiBpc19jb25z
dF9wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5k
IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYg
aXNfY29uc3RfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9
PSAnJicgYW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19yZWZlcmVuY2Uoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgbm90IHNlbGYuaXNfY29uc3Qo
KQorICAgIGRlZiBpc19ydmFsdWVfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5jYXRlZ29yeSA9PSAnJiYnCisgICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi52YWx1ZV90eXBlCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3Qo
dHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9pbmRpcmVjdF06CisgICAgbSA9
IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAg
ICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYmJCIsIHR5cGVfbmFtZSkgCisgICAgaWYgbToKKyAg
ICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYmJywgZ2V0X2NwcF90
eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJCIsIHR5cGVfbmFtZSkK
KyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYkIiwgdHlwZV9uYW1l
KQorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUs
ICcmJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKylc
KiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIigu
KylcKiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2lu
ZGlyZWN0KHR5cGVfbmFtZSwgJyonLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgcmV0dXJuIE5v
bmUKKworCitjbGFzcyBjcHBfZXhwcihvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAg
ZXhwcjogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIGV4cHI6
IHN0cik6CisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5leHByID0gZXhw
cgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmV4cHIKKwor
CitDcHBFeHByQ29udmVydGVyID0gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9l
eHByXQorCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChj
YXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90
eXBlXSwgY3BwX2V4cHJdOgorICAgIGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50
ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAg
cmV0dXJuIGNwcF9leHByKHR5cGUsIGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4ocmVp
bnRlcnByZXRfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQor
ICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIKKworZGVmIGNwcF9y
ZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXJfdGhyb3VnaChjYXN0X3Rocm91Z2hfdHlwZSA6IGNw
cF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdOgorICAg
IGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBl
OiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBm
InJlaW50ZXJwcmV0X2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oc3RhdGljX2Nhc3Q8e3N0cihjYXN0
X3Rocm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJw
cmV0X2Nhc3RfdG9fcG9pbnRlcgorCitkZWYgY3BwX3N0YXRpY19jYXN0KGV4cHI6IGNwcF9leHBy
LCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUs
IGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oe3N0cihleHByKX0pIikKKworCitkZWYg
Y3BwX2ltcGxpY2l0X2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBf
ZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgc3RyKGV4cHIpKQorCisKK2RlZiBjcHBf
YXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBj
cHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBl
ID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1
cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfShyZWludGVycHJldF9jYXN0PHtlbGVtZW50
X3BvaW50ZXJfdHlwZX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9LnNpemUoKSki
KQorCitkZWYgd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9j
b252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNw
cF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5
cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3Ry
KHR5cGUpfShyZWludGVycHJldF9jYXN0PGNvbnN0IHtlbGVtZW50X3BvaW50ZXJfdHlwZX0+KHtz
dHIoZXhwcil9LmRhdGEpLCB7c3RyKGV4cHIpfS5idWZTaXplKSIpCisKK2RlZiBjcHBfbW92ZV9l
eHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIoZXhw
ci50eXBlLmdldF9ydmFsdWVfdHlwZSgpLCBmIldURk1vdmUoe3N0cihleHByKX0pIikKKworCitj
cHBfdHlwZXM6IERpY3Rbc3RyLCBjcHBfdHlwZV0gPSB7fQorCitjcHBfdHlwZV9jb25zdHJ1Y3Rv
cnMgOiBMaXN0W0NhbGxhYmxlW1tzdHJdLCBPcHRpb25hbFtjcHBfdHlwZV1dXSA9IFsKKyAgICBj
cmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24sCisgICAgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lciwK
KyAgICBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QKK10KKworZGVmIGdldF9jcHBfdHlwZSh0eXBl
X25hbWU6IHN0cik6CisgICAgciA9IGNwcF90eXBlcy5nZXQodHlwZV9uYW1lLCBOb25lKQorICAg
IGlmIHI6CisgICAgICAgIHJldHVybiByCisgICAgZm9yIHR5cGVfY29uc3RyIGluIGNwcF90eXBl
X2NvbnN0cnVjdG9yczoKKyAgICAgICAgciA9IHR5cGVfY29uc3RyKHR5cGVfbmFtZSkKKyAgICAg
ICAgaWYgcjoKKyAgICAgICAgICAgIGJyZWFrCisgICAgaWYgbm90IHI6CisgICAgICAgIHIgPSBj
cHBfdHlwZSh0eXBlX25hbWUpCisgICAgY3BwX3R5cGVzW3R5cGVfbmFtZV0gPSByCisgICAgcmV0
dXJuIHIKKworCitjbGFzcyBjcHBfYXJnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgdHlw
ZTogY3BwX3R5cGUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFt
ZTogc3RyKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnR5cGUgPSB0
eXBlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7fSB7fSIuZm9y
bWF0KHNlbGYudHlwZSwgc2VsZi5uYW1lKQorCisKK2NsYXNzIGNwcF9kZWNsKG9iamVjdCk6Cisg
ICAgdHlwZTogY3BwX3R5cGUKKyAgICBuYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB0eXBlOiBjcHBfdHlwZSwgbmFtZTogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQor
ICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIGYie3N0cihzZWxmLnR5cGUpfSB7c2VsZi5uYW1lfSIKKworCitjbGFzcyBjcHBf
YXJnX2xpc3Qob2JqZWN0KToKKyAgICBhcmdzOiBMaXN0W2NwcF9hcmddCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIHNlbGYuYXJncyA9IGFy
Z3MKKworICAgIGRlZiBuYW1lcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihhLm5h
bWUgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisgICAgZGVmIGV4cHJzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gW2NwcF9leHByKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAg
ICBkZWYgZGVjbHMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2RlY2woYS50eXBlLCBhLm5h
bWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiB0eXBlcyhzZWxmKToKKyAgICAgICAg
cmV0dXJuIFthLnR5cGUgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CisgICAgICAgIHJldHVybiAiLCAiLmpvaW4oc3RyKGEpIGZvciBhIGluIHNlbGYuYXJncykK
KworCitjbGFzcyBjcHBfZnVuYyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNw
cF9hcmdfbGlzdAorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGlzX2V4dGVuc2lvbjog
Ym9vbAorICAgIG92ZXJsb2FkX3N1ZmZpeDogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bmFtZTogc3RyLCByZXR1cm5fdHlwZTogY3BwX3R5cGUsIGFyZ3M6IGNwcF9hcmdfbGlzdCwgaXNf
ZXh0ZW5zaW9uOiBib29sKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxm
LnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAg
ICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLm92ZXJs
b2FkX3N1ZmZpeCA9ICIiCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IGYie3NlbGYucmV0dXJuX3R5cGV9IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pIgorCisg
ICAgZGVmIGdldF9hcmdzX2NhdGVnb3JpZXMoc2VsZikgLT4gVHVwbGVbTGlzdFtjcHBfYXJnXSwg
TGlzdFtjcHBfYXJnXV06CisgICAgICAgIGluX2FyZ3MgPSBbXQorICAgICAgICBvdXRfYXJncyA9
IFtdCisgICAgICAgIGZvciBhIGluIHNlbGYuYXJncy5hcmdzOgorICAgICAgICAgICAgI2ZtdDog
b2ZmCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpIG9yIFwKKyAgICAgICAgICAg
ICAgICBhLnR5cGUuaXNfcmVmZXJlbmNlKCk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0g
W2FdCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWlu
ZXIpIGFuZCAoKChhLnR5cGUuaXNfc3BhbigpIG9yIGEudHlwZS5pc19keW5hbWljX3NwYW4oKSkg
YW5kIG5vdCBhLnR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKSkpOgorICAgICAg
ICAgICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBpbl9hcmdzICs9IFthXQorICAgICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgcmV0dXJu
IGluX2FyZ3MsIG91dF9hcmdzCisKKyAgICBkZWYgaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLCB0
eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgaXNf
aW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgICMiIGluIGEudHlwZS50eXBlX25hbWUgZm9yIGEg
aW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICAj
aWYgIkdDR0xzeW5jIiBpbiBzZWxmLnJldHVybl90eXBlLnR5cGVfbmFtZToKKyAgICAgICAgIyAg
ICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEubmFtZSA9PSAiYnVmU2l6ZSIgZm9yIGEg
aW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlm
IGFueShhLnR5cGUuaXNfcG9pbnRlcigpIGFuZCBhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKS5pc192
b2lkKCkgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIGlmIGFueShub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKGEudHlwZSkgZm9y
IGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
IGlmIHNlbGYucmV0dXJuX3R5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoc2VsZi5yZXR1cm5f
dHlwZSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKwor
Cit3ZWJraXRfaXBjX3R5cGVzOiBEaWN0W2NwcF90eXBlLCBjcHBfdHlwZV0gPSB7fQorCit3ZWJr
aXRfaXBjX3R5cGVzX2NvbnZlcnRlcnM6IERpY3RbVHVwbGVbY3BwX3R5cGUsIGNwcF90eXBlXSwg
Q3BwRXhwckNvbnZlcnRlcl0gPSB7fQorCisKK2RlZiB3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihl
eHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICIiIiBDb252
ZXJ0cyBgZXhwcmAgb2YgdHlwZSBvZiBgc2VsZmAgdG8gYHR5cGVgICIiIgorICAgIGNvbnZlcnQg
PSB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuZ2V0KChleHByLnR5cGUsIHR5cGUpLCBOb25l
KQorICAgIGlmIG5vdCBjb252ZXJ0OgorICAgICAgICBpZiBleHByLnR5cGUgPT0gdHlwZToKKyAg
ICAgICAgICAgIHJldHVybiBleHByCisgICAgICAgIGNvbnZlcnQgPSBjcHBfaW1wbGljaXRfY2Fz
dAorICAgIHJldHVybiBjb252ZXJ0KGV4cHIsIHR5cGUpCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0
X3NwYW5fdHJhbnNmZXJfdHlwZSh0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlw
ZToKKyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNh
eV90eXBlKCkKKyAgICBhcml0eSA9IHR5cGUuZ2V0X2FyaXR5KCkKKyAgICB3ZWJraXRfaXBjX2Vs
ZW1lbnRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZWxlbWVudF90eXBlXSBpZiBub3QgZWxlbWVu
dF90eXBlLmlzX3ZvaWQoKSBlbHNlIGdldF9jcHBfdHlwZSgndWludDhfdCcpCisgICAgaWYgYXJp
dHkgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5
UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50X3R5cGUpfSwge2FyaXR5fT4iKQorICAg
IHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lw
Y19lbGVtZW50X3R5cGUpfT4iKQorCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVf
dHlwZSh0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRf
dHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGlm
IGVsZW1lbnRfdHlwZS5pc192b2lkKCk6CisgICAgICAgIGVsZW1lbnRfdHlwZSA9IGdldF9jcHBf
dHlwZSgnR0NHTGNoYXInKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAg
IGlubGluZV9jYXBhY2l0eSA9IDE2IGlmICJmbG9hdCIgaW4gZWxlbWVudF90eXBlLnR5cGVfbmFt
ZSBlbHNlIDQKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIlZlY3Rvcjx7c3RyKGVsZW1l
bnRfdHlwZSl9LCB7c3RyKGlubGluZV9jYXBhY2l0eSl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBf
dHlwZShmInN0ZDo6YXJyYXk8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cih0eXBlLmdldF9hcml0
eSgpKX0+IikKKworZGVmIHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uKGV4cHIg
OiBjcHBfZXhwciwgdHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAg
cG9pbnRlcl9jYXN0X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVy
X3R5cGUoKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgIHJldHVybiBj
cHBfZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PHtzdHIocG9pbnRl
cl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIp
CisKKyAgICBhc3NlcnQodHlwZS5pc19zcGFuKCkpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUs
IGYibWFrZUdDR0xTcGFuPHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9PihyZWludGVycHJldF9jYXN0
PHtzdHIocG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSkiKQorCisjIFNl
ZSBtZXNzYWdlcy5weSBmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZQord2Via2l0X2lwY19idWlsdGlu
X3R5cGVzID0gc2V0KAorICAgIFsidWludDhfdCIsICJ1aW50MTZfdCIsICJ1aW50MzJfdCIsICJ1
aW50NjRfdCIsICJpbnQ4X3QiLCAiaW50MTZfdCIsICJpbnQzMl90IiwgImludDY0X3QiLCAiYm9v
bCIsICJmbG9hdCIsICJkb3VibGUiICJib29sIl0KKykKKworCitkZWYgd2Via2l0X2lwY19nZXRf
bWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX3R5cGU6CisgICAg
aWYgdHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICBy
ZXR1cm4gdHlwZQorICAgIHJldHVybiB0eXBlLmdldF9ydmFsdWVfdHlwZSgpCisKKworZGVmIHdl
YmtpdF9pcGNfbW92ZV9leHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICBpZiBl
eHByLnR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoKKyAgICAgICAg
cmV0dXJuIGV4cHIKKyAgICByZXR1cm4gY3BwX21vdmVfZXhwcihleHByKQorCisKK2RlZiB3ZWJr
aXRfaXBjX21zZ19uYW1lKGZ1bmM6IGNwcF9mdW5jKToKKyAgICByZXR1cm4gZnVuYy5uYW1lWzBd
LmNhcGl0YWxpemUoKSArIGZ1bmMubmFtZVsxOl0gKyBmdW5jLm92ZXJsb2FkX3N1ZmZpeAorCisK
K2NsYXNzIHdlYmtpdF9pcGNfbXNnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgaW5fYXJn
czogY3BwX2FyZ19saXN0CisgICAgb3V0X2FyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZ1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gd2Via2l0
X2lwY19tc2dfbmFtZShmdW5jKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGZ1bmMuZ2V0
X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIGlwY19pbl9hcmdzID0gW2NwcF9hcmcod2Via2l0
X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUpIGZvciBhIGluIGluX2FyZ3NdCisgICAgICAgIGlw
Y19vdXRfYXJncyA9IFtdCisgICAgICAgIGlmIG5vdCBmdW5jLnJldHVybl90eXBlLmlzX3ZvaWQo
KToKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVz
W2Z1bmMucmV0dXJuX3R5cGVdLCAicmV0dXJuVmFsdWUiKV0KKyAgICAgICAgZm9yIGEgaW4gb3V0
X2FyZ3M6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY190
eXBlc1thLnR5cGVdLCBhLm5hbWUpXQorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2R5bmFtaWNf
c3BhbigpOgorICAgICAgICAgICAgICAgIGlwY19pbl9hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBf
dHlwZSgidWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUiKV0KKyAgICAgICAgc2VsZi5pbl9hcmdz
ID0gY3BwX2FyZ19saXN0KGlwY19pbl9hcmdzKQorICAgICAgICBzZWxmLm91dF9hcmdzID0gY3Bw
X2FyZ19saXN0KGlwY19vdXRfYXJncykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICBpZiBsZW4oc2VsZi5vdXRfYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBmIlxuICAg
IHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkgLT4gKHtzdHIoc2VsZi5vdXRf
YXJncyl9KSBTeW5jaHJvbm91cyIKKyAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5u
YW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSIKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94
eV9pbXBsKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgbXNnX25hbWU6IHN0cgorICAgIHJl
dHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgcHJlX2Nh
bGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3Rf
Y2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcmV0dXJuX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBp
bl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2Vs
Zi5uYW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm1zZ19uYW1lID0gd2Via2l0X2lw
Y19tc2dfbmFtZShjcHBfZnVuYykKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5j
LnJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAg
c2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisg
ICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fc3Rt
dHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhw
cnMgPSBbXQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2Nh
dGVnb3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJl
dHVybl90eXBlKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJncyhpbl9hcmdzKQorICAgICAg
ICBzZWxmLnByb2Nlc3Nfb3V0X2FyZ3Mob3V0X2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19j
YWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGluX2V4cHJzID0g
IiwgIi5qb2luKFtzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbl9leHByc10pCisgICAgICAgIG91dF9l
eHBycyA9ICIsICIuam9pbihzdHIobykgZm9yIG8gaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAg
IGlzX2FzeW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192b2lkKCkgYW5kIGxlbihvdXRfZXhwcnMp
ID09IDAKKyAgICAgICAgaWYgaXNfYXN5bmM6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMg
Kz0gWworICAgICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOyIsCisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
ZW5kX3Jlc3VsdCA9ICIiCisgICAgICAgICAgICBpZiBzZWxmLnBvc3RfY2FsbF9zdG10czogCisg
ICAgICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiYXV0byBzZW5kUmVzdWx0ID0gIgorICAgICAg
ICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gWworICAgICAgICAgICAgICAgICAgICAi
aWYgKHNlbmRSZXN1bHQpIiArICgiIHsiIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAx
IGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXSArIFsiICAgICIgKyBzIGZvciBzIGluIHNlbGYu
cG9zdF9jYWxsX3N0bXRzXSArIFsKKyAgICAgICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2Vs
Zi5wb3N0X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1
bHR9c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2df
bmFtZX0oe2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3Nl
bGYubXNnX25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsiLAorICAgICAgICAgICAgXQorCisKKyAgICBkZWYgcHJvY2Vzc19pbl9h
cmdzKHNlbGYsIGluX2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgaSBpbiBpbl9h
cmdzOgorICAgICAgICAgICAgaWYgaS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAg
ICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2VsZi5pbl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoaS50eXBl
LCBpLm5hbWUpLCB3ZWJraXRfaXBjX3R5cGVzW2kudHlwZV0pXQorCisgICAgZGVmIHByb2Nlc3Nf
b3V0X2FyZ3Moc2VsZiwgb3V0X2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgbyBp
biBvdXRfYXJnczoKKyAgICAgICAgICAgIGlmIG8udHlwZS5pc19wb2ludGVyKCk6CisgICAgICAg
ICAgICAgICAgdmFsdWVfdHlwZSA9IG8udHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAg
ICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1t2YWx1ZV90eXBl
XQorICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdmFsdWVfdHlwZSwgby5u
YW1lICsgIlJlcGx5IikKKyAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICAgICAg
ZSA9IGNwcF9leHByKHYudHlwZSwgdi5uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4
cHJzICs9IFtlXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKKyAg
ICAgICAgICAgICAgICAgICAgI2ZtdDogb2ZmCisgICAgICAgICAgICAgICAgICAgIGYiaWYgKHtv
Lm5hbWV9KSIsCisgICAgICAgICAgICAgICAgICAgIGYiICAgICp7by5uYW1lfSA9IHt3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihlLCB2YWx1ZV90eXBlKX07IgorICAgICAgICAgICAgICAgICAgICAj
Zm10OiBvbgorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsaWYgby50eXBlLmlzX3Nw
YW4oKToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W28udHlwZV0KKyAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5
cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Vi
a2l0X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJl
X2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAg
ICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KKyAg
ICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90Iiks
IGYie28ubmFtZX0uYnVmU2l6ZSIpXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0
bXRzICs9IFsKKyAgICAgICAgICAgICAgICAgICAgZiJtZW1jcHkoe28ubmFtZX0uZGF0YSwge3Yu
bmFtZX0uZGF0YSgpLCB7by5uYW1lfS5idWZTaXplICogc2l6ZW9mKHtzdHIod2Via2l0X2lwY190
eXBlLmdldF9jb250YWluZWRfdHlwZSgpKX0pKTsiCisgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIo
by50eXBlLCBvLm5hbWUpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJl
dHVybl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToK
KyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5
cGUKKyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlw
ZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhwcihpcGNfcmV0dXJuX3R5cGUs
ICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVy
bl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisg
ICAgICAgIHNlbGYub3V0X2V4cHJzID0gW3JldHVybl92YWx1ZV9leHByXSArIHNlbGYub3V0X2V4
cHJzCisgICAgICAgIHNlbGYucmV0dXJuX3N0bXRzID0gW2YicmV0dXJuIHtzdHIod2Via2l0X2lw
Y19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIHJldHVybl90eXBlKSl9OyJdCisKKyAg
ICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJf
IiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgIHti
fSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYu
cG9zdF9jYWxsX3N0bXRzICsgc2VsZi5yZXR1cm5fc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIi
XG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7
c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9Cit7e3tib2R5fQorfX0iIiIKKwor
CitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcihvYmplY3QpOgorICAgIG5h
bWU6IHN0cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlz
dAorICAgIGJvZHk6IExpc3Rbc3RyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5j
OiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKworICAgICAg
ICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5h
cmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLmJvZHkgPSBbIm5vdEltcGxlbWVudGVk
KCk7Il0KKyAgICAgICAgaWYgY3BwX2Z1bmMucmV0dXJuX3R5cGUudHlwZV9uYW1lICE9ICJ2b2lk
IjoKKyAgICAgICAgICAgIHNlbGYuYm9keSArPSBbInJldHVybiB7IH07Il0KKworICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNl
bGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiXG57XG4gICAgIiArICJcbiAgICAiLmpv
aW4oc2VsZi5ib2R5KSArICJcbn0iCisgICAgICAgIHJldHVybiBmIlxue3N0cihzZWxmLnJldHVy
bl90eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihz
ZWxmLmFyZ3MpfSl7bm9saW50fXtib2R5fSIKKworCitjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93
ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5IEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dl
YmtpdF9pcGNfY3BwX3Byb3h5X2ltcGxdCisgICAgdW5pbXBsczogTGlzdFt3ZWJraXRfaXBjX2Nw
cF9wcm94eV9wbGFjZWhvbGRlcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRl
cmFibGVbY3BwX2Z1bmNdLCB1bmltcGxlbWVudGVkOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAg
ICAgICBzZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwoZikgZm9yIGYgaW4g
ZnVuY3NdCisgICAgICAgIHNlbGYudW5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFj
ZWhvbGRlcihmKSBmb3IgZiBpbiB1bmltcGxlbWVudGVkXQorCisgICAgZGVmIGdldF9mdW5jdGlv
bnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZvciBpIGluIHNlbGYu
aW1wbHMgKyBzZWxmLnVuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAg
IHdyaXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiwKKyAg
ICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdl
dF9mdW5jdGlvbnMoKSksCisgICAgICAgICkKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBs
KG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgaXNf
ZXh0ZW5zaW9uOiBib29sCisgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxf
c3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgaW5f
ZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAg
IHJldHVybl92YWx1ZV9leHByOiBPcHRpb25hbFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVu
Yy5uYW1lCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gY3BwX2Z1bmMub3ZlcmxvYWRf
c3VmZml4CisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9hcmdfbGlzdChbXSkKKyAgICAgICAgc2Vs
Zi5pc19leHRlbnNpb24gPSBjcHBfZnVuYy5pc19leHRlbnNpb24KKyAgICAgICAgc2VsZi5wcmVf
Y2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNl
bGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAg
ICAgIHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9
IE5vbmUKKworICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVy
bl90eXBlKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2Nh
dGVnb3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfYXJncyhjcHBfZnVuYy5hcmdzLmFyZ3Ms
IHNldChpbl9hcmdzKSwgc2V0KG91dF9hcmdzKSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwo
KQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgZXh0ID0gImdldEV4dGVu
c2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVsc2UgIiIKKworICAgICAgICBpbl9leHBy
cyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5pbl9leHBycykKKyAgICAgICAgaXNf
YXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMpID09IDAKKworICAgICAgICBjYWxsX2V4cHIgPSBm
Im1fY29udGV4dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5fZXhwcnN9KSIKKyAgICAgICAgaWYgbm90
IHNlbGYucmV0dXJuX3ZhbHVlX2V4cHI6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0g
W2Yie2NhbGxfZXhwcn07Il0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2FsbF9z
dG10cyArPSBbZiJ7c3RyKHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIpfSA9IHtjYWxsX2V4cHJ9OyJd
CisgICAgICAgIGlmIG5vdCBpc19hc3luYzoKKyAgICAgICAgICAgIG91dF9leHBycyA9ICIsICIu
am9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAgICBzZWxmLnBv
c3RfY2FsbF9zdG10cyArPSBbZiJjb21wbGV0aW9uSGFuZGxlcih7b3V0X2V4cHJzfSk7Il0KKwor
ICAgIGRlZiBwcm9jZXNzX2FyZ3Moc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSwgaW5fYXJnczog
U2V0W2NwcF9hcmddLCBvdXRfYXJnczogU2V0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGEgaW4g
YXJnczoKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAg
ICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBpZiBhIGluIGluX2FyZ3M6CisgICAg
ICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZyhhKQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2FyZyhhKQorICAgICAgICBpZiBzZWxmLm91
dF9leHByczoKKyAgICAgICAgICAgIG91dF9hcmdfZGVjbHMgPSAiLCAiLmpvaW4oZiJ7c3RyKGUu
dHlwZSl9IiBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYuYXJncy5h
cmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZShmIkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoe291
dF9hcmdfZGVjbHN9KT4mJiIpLCAiY29tcGxldGlvbkhhbmRsZXIiKV0KKworICAgIGRlZiBwcm9j
ZXNzX2luX2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0g
W2NwcF9hcmcod2Via2l0X2lwY19nZXRfbWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh3ZWJraXRfaXBj
X3R5cGVzW2EudHlwZV0pLCBhLm5hbWUpXQorICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJr
aXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcih3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEu
bmFtZSksIGEudHlwZSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJnKHNlbGYsIGE6IGNwcF9h
cmcpOgorICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgdmFsdWVf
YXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAg
ICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2
YWx1ZV9hcmcubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0g
W2NwcF9leHByKGEudHlwZSwgZiIme3ZhbHVlX2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgZSA9
IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHdl
YmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZS50eXBlXQorICAgICAgICAg
ICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9p
cGNfdmFsdWVfdHlwZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgor
ICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIp
KQorICAgICAgICAgICAgc2l6ZV9hcmcgPSBjcHBfYXJnKGdldF9jcHBfdHlwZSgidWludDY0X3Qi
KSwgZiJ7YS5uYW1lfVNpemUiKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW3NpemVf
YXJnXQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFu
X3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9z
dG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9KHN0
YXRpY19jYXN0PHNpemVfdD4oe2EubmFtZX1TaXplKSwgMCk7Il0KKyAgICAgICAgICAgIHNlbGYu
aW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBmIntzdG9yZV9hcmcubmFtZX0i
KV0KKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBl
XQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHBy
KGNwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlw
ZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChp
c2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgIHN0b3Jl
X2FyZyA9IGNwcF9hcmcod2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEu
bmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9h
cmcudHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgc2Vs
Zi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKV0K
KyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQor
ICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNw
cF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSld
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgYS50eXBlLmlzX3JlZmVyZW5jZSgp
CisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0K
KyAgICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCks
IGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3NlbGYubnMo
dmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAg
ICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAgICAg
ICAgICBzZWxmLmluX2V4cHJzICs9IFtlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0g
W3dlYmtpdF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9p
cGNfdHlwZSkpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90
eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W3JldHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKHJldHVy
bl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9
fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Vi
a2l0X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIGlwY19yZXR1cm5fdHlwZSkp
XQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gcmV0dXJuX3ZhbHVlX2V4cHIKKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgICAg
ICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBz
ZWxmLnBvc3RfY2FsbF9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiIgICAgdm9pZCB7c2VsZi5u
YW1lfXtzZWxmLm92ZXJsb2FkX3N1ZmZpeH0oe3N0cihzZWxmLmFyZ3MpfSkKKyAgICB7e3tib2R5
fQorICAgIH19IiIiCisKKyAgICBkZWYgbnMoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAg
ICAjIFRPRE86IG5hbWVzcGFjZSBpbmZvIGlzIG5vdCBzdG9yZWQgaW4gbmFtZXMuCisgICAgICAg
IGlmIHR5cGUudHlwZV9uYW1lID09ICJBY3RpdmVJbmZvIjoKKyAgICAgICAgICAgIHJldHVybiAi
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OiIgKyBzdHIodHlwZSkKKyAgICAgICAgcmV0dXJu
IHN0cih0eXBlKQorCitkZWYgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5j
cyA6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgY291bnRzID0gY29sbGVjdGlvbnMuQ291bnRl
cihmLm5hbWUgZm9yIGYgaW4gZnVuY3MpCisgICAgc3VmZml4ZXMgOiBDb3VudGVyW3N0cl0gPSBj
b2xsZWN0aW9ucy5Db3VudGVyKCkKKyAgICBmb3IgZiBpbiBmdW5jczoKKyAgICAgICAgaWYgY291
bnRzW2YubmFtZV0gPiAxOgorICAgICAgICAgICAgZi5vdmVybG9hZF9zdWZmaXggPSBzdHIoc3Vm
Zml4ZXNbZi5uYW1lXSkKKyAgICAgICAgICAgIHN1ZmZpeGVzLnVwZGF0ZShbZi5uYW1lXSkKKwor
CitjbGFzcyBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAg
ICBpbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9pbXBsXQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dl
YmtpdF9pcGNfY3BwX2ltcGwoZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X2Z1bmN0
aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2Vs
Zi5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgK
KyAgICAgICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9m
dW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAg
KQorCisKK2NsYXNzIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6Cisg
ICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9u
IGdlbmVyYXRvci4iCisgICAgbXNnczogTGlzdFt3ZWJraXRfaXBjX21zZ10KKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5t
c2dzID0gW3dlYmtpdF9pcGNfbXNnKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdldF9t
ZXNzYWdlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oc3RyKG0pIGZvciBtIGluIHNl
bGYubXNncykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZShj
b250ZXh0X21lc3NhZ2VzX2ZuLCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlLmZvcm1hdChzZWxm
LmdldF9tZXNzYWdlcygpKSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM6IHN0ciwg
YXJnX2luZGV4OiBpbnQpOgorICAgIHIgPSBhcmdfc3BlYy5yc3BsaXQoIiAiLCAxKQorICAgIG5h
bWUgPSAiIgorICAgIHR5cGUgPSBOb25lCisgICAgaWYgbGVuKHIpID4gMSBhbmQgclswXSAhPSAi
Y29uc3QiOgorICAgICAgICBuYW1lID0gclsxXS5zdHJpcCgpCisgICAgICAgIHR5cGUgPSBnZXRf
Y3BwX3R5cGUoclswXSkKKyAgICBlbHNlOgorICAgICAgICBuYW1lID0gImFyZ3t9Ii5mb3JtYXQo
YXJnX2luZGV4KQorICAgICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKGFyZ19zcGVjKQorICAgIHJl
dHVybiBjcHBfYXJnKHR5cGUsIG5hbWUpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJn
c19zcGVjczogSXRlcmFibGVbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRl
X2NwcF9hcmcoYXJnX3NwZWM9ZSwgYXJnX2luZGV4PWkpIGZvciBpLCBlIGluIGVudW1lcmF0ZShh
cmdzX3NwZWNzKV0pCisKKworZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9z
cGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAg
ICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0
dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjcyksIGlzX2V4dGVu
c2lvbj1pc19leHRlbnNpb24pCisKKworZGVmIHJlYWRfbGluZXNfdW50aWwobGluZXMgOiBJdGVy
YWJsZVtzdHJdLCBtYXRjaCA6IHN0cikgLT4gR2VuZXJhdG9yW3N0ciwgTm9uZSwgTm9uZV06Cisg
ICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIGlmIHJlLm1hdGNoKG1hdGNoLCBsaW5lLnN0
cmlwKCkpOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgeWllbGQgbGluZQorCitkZWYgbWFp
bigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCJ1c2FnZTogJXByb2cg
W29wdGlvbnNdIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rpb249
InN0b3JlX3RydWUiLCBoZWxwPSJQcmludCBzb21lIGRlYnVnIGluZm8gZnJvbSB0aGUgZ2VuZXJh
dG9yIHNjcmlwdCIpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgICMg
Q29uc3RydWN0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUgZnJvbSB3ZWIgcHJvY2Vz
cyB0byBHUFUgcHJvY2Vzcy4KKworICAgICMgRklYTUU6IFVudGlsIGV4dGVuc2lvbnMgaGVhZGVy
IGlzIHJlbW92ZWQsIHdlIG5lZWQgdG8gY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50YXRpb24KKyAg
ICAjIHdpdGggdGhlIGRpc3RpbmN0aW9uIG9mIHdoZXRoZXIgYSBmdW5jdGlvbiBpcyBvciBpcyBu
b3QgYW4gZXh0ZW5zaW9uIGZ1bmN0aW9uLgorICAgIGV4dGVuc2lvbl9zaWduYXR1cmVzIDogU2V0
W3N0cl0gPSBzZXQoKQorICAgIHdpdGggb3BlbihleHRlbnNpb25zX2lucHV0X2ZuKSBhcyBmOgor
ICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKHIiLip2aXJ0dWFsIChcUyspXHMrKFx3KylcKCguKilcKSA9IDA7IiwgbGluZSkKKyAgICAg
ICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZT1tWzJdLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5f
c3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdz
X3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249VHJ1ZSwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMudXBk
YXRlKFtzdHIoZnVuYyldKQorICAgIGZ1bmNzID0gW10KKyAgICB1bmltcGxlbWVudGVkID0gW10K
KyAgICBmb3IgZm4gaW4gZnVuY3Rpb25zX2lucHV0X2ZuczoKKyAgICAgICAgd2l0aCBvcGVuKGZu
KSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAg
ICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRnVuY3Rpb25zIHdpdGgg
YSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAg
ICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVz
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgbSA9
IHJlLm1hdGNoKHIiXHMqKFxTKylccysoXHcrKVwoKC4qKVwpIGZpbmFsOyIsIGxpbmUpCisgICAg
ICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgZnVuY19uYW1lID0gbVsyXQor
ICAgICAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZT1mdW5jX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm5fc3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBfc3Bs
aXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lv
bj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBmdW5j
LmlzX2V4dGVuc2lvbiA9IHN0cihmdW5jKSBpbiBleHRlbnNpb25fc2lnbmF0dXJlcworICAgICAg
ICAgICAgICAgICAgICBpZiBmdW5jLmlzX2ltcGxlbWVudGVkKCk6CisgICAgICAgICAgICAgICAg
ICAgICAgICBmdW5jcy5hcHBlbmQoZnVuYykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVuaW1wbGVtZW50ZWQuYXBwZW5kKGZ1bmMpCisKKworICAg
IHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZmaXgoZnVuY3MpCisgICAgIyBJbml0aWFs
aXplIFdlYktpdCBJUEMgZ2VuZXJhdGlvbi4gQ29uc3RydWN0IHR5cGUgbWFwcGluZ3MgZm9yIHRo
ZSB1c2VkIEMrKyB0eXBlcyAtPiBJUEMgdHlwZXMuCisgICAgIyBUT0RPOiBuYW1lc3BhY2luZyBp
c3N1ZXMuCisgICAgYWlfdHlwZSA9IGdldF9jcHBfdHlwZSgiQWN0aXZlSW5mbyYiKQorICAgIGFp
X3RyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvIikKKyAgICB3ZWJraXRfaXBjX3R5cGVzW2FpX3R5cGVdID0gYWlfdHJhbnNm
ZXJfdHlwZQorCisgICAgd2l0aCBvcGVuKHR5cGVzX2lucHV0X2ZuKSBhcyBmOgorICAgICAgICBs
aW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191
bnRpbChsaW5lcywgIi8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQ
QyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4i
KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRp
bChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3Jp
cHQuIik6CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHN0ZDo6
aXNfc2FtZV92PChcdyspLCAoXHcrKT5cKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2dldF9jcHBfdHlwZShtWzFdKV0gPSBnZXRf
Y3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9
IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgo
XHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3Bw
X3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdl
dF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5
cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRl
cnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAg
ICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNw
cF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEZJ
WE1FOiBIZXJlIHdlIHVzZSA8PSBpbnN0ZWFkIG9mID09IGR1ZSB0byBwb2ludGVycywgc3VjaCBh
cyBHQ0dMc3luYywgR0NHTGludHB0ciwgLi4uLgorICAgICAgICAgICAgIyBUaGlzIGVuZHMgdXAg
ZmFpbGluZyBpZiB0aGVyZSBldmVyIGlzIGFycmF5cyBvZiB0aGVzZSB0eXBlcywgc2luY2UgYXJy
YXlzIGFyZSBjdXJyZW50bHkKKyAgICAgICAgICAgICMgcmVpbnRlcnByZXQtY2FzdGVkLgorICAg
ICAgICAgICAgIyBXZWJLaXQgSVBDIHJlcXVpcmVzIG9uZSBzaXplZCB0eXBlLCBidXQgdGhlIHNp
emUgb2YgdGhlc2UgcG9pbnRlci1iYXNlZCB2YWx1ZXMgd2lsbCBjaGFuZ2UKKyAgICAgICAgICAg
ICMgYmFzZWQgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipz
dGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGlu
ZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3Bw
X3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJd
KQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUK
KyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBp
cGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190
eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0
YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXplb2ZcKChcdyspXCkgJiYgc2l6ZW9m
XCgoXHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBt
OgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAg
ICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBj
cHBfY2FzdF90aHJvdWdoX3R5cGUgPSBnZXRfY3BwX3R5cGUobVs0XSkKKyAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAg
d2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9y
ZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlw
ZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBl
LCBjcHBfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNw
cF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgIyBG
b3IgYWxsIHR5cGVzIGluIHRoZSBpbnB1dCBBUEksIGZvcm0gY29ycmVzcG9uZGluZyBJUEMgdHlw
ZXMgYW5kIGNvbnZlcnNpb25zLgorICAgICMgVE9ETzogdGhpcyBpcyBub3QgZHJpdmVuIGJ5IHRo
ZSB0eXBpbmcuCisgICAgYWxsX3R5cGVzID0gc2V0KCkKKyAgICBmb3IgZnVuYyBpbiBmdW5jczoK
KyAgICAgICBhbGxfdHlwZXMudXBkYXRlKGZ1bmMuYXJncy50eXBlcygpICsgW2Z1bmMucmV0dXJu
X3R5cGVdKQorICAgICMgU29ydCBieSBsZW4gc28gdGhhdCB0ZW1wbGF0ZSBhcmdzIGNvbWUgYmVm
b3JlIHRlbXBsYXRlcy4KKyAgICBmb3IgY3BwX3R5cGUgaW4gc29ydGVkKGFsbF90eXBlcywga2V5
PWxhbWJkYSB4OiBsZW4oeC50eXBlX25hbWUpKToKKyAgICAgICAgaWYgY3BwX3R5cGUgaW4gd2Vi
a2l0X2lwY190eXBlczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAKKyAgICAgICAgaWYg
Y3BwX3R5cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3BwX3R5cGUuaXNfc3BhbigpOgorICAgICAg
ICAgICAgdHJhbnNmZXJfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNmZXJfdHlwZShj
cHBfdHlwZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNm
ZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICBpZiBjcHBfdHlwZS5nZXRfY29u
dGFpbmVkX3R5cGUoKS5pc19jb25zdCgpOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IHdlYmtpdF9pcGNfc3Bh
bl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1sodHJhbnNmZXJfdHlwZSwgY3BwX3R5cGUp
XSA9IHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3Jl
X3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0
ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRf
Y2FzdF9jb252ZXJzaW9uCisgICAgICAgIGVsaWYgY3BwX3R5cGUuaXNfcmVmZXJlbmNlKCkgb3Ig
Y3BwX3R5cGUuaXNfY29uc3RfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29udGFpbmVyKCk6
CisgICAgICAgICAgICB2YWx1ZV90eXBlID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKSBpZiBu
b3QgY3BwX3R5cGUuaXNfY29udGFpbmVyKCkgZWxzZSBjcHBfdHlwZQorICAgICAgICAgICAgaWYg
dmFsdWVfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgICAgICBjb250YWluZWRfdHlw
ZSA9IHZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX2NvbnRhaW5lZF90eXBlID0gd2Via2l0X2lwY190eXBlc1tjb250YWluZWRfdHlwZV0K
KyAgICAgICAgICAgICAgICBpZiB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID09IGNvbnRhaW5l
ZF90eXBlOgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9
IHZhbHVlX3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0
cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKGYie3ZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lcl9u
YW1lKCl9PHtzdHIod2Via2l0X2lwY19jb250YWluZWRfdHlwZSl9PiIpCisgICAgICAgICAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlwZQorICAgICAg
ICAgICAgICAgICAgICAjIFRPRE86IEhlcmUgbWlnaHQgYmUgY2FzZSB3aGVyZSBWZWN0b3I8R0NH
TGludD4gd2FzIHVzZWQgaW4gdGhlIGludGVyZmFjZSBhbmQgVmVjdG9yPGludDMyX3Q+IGlzIHVz
ZWQKKyAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgSVBDIGRlZmluaXRpb24uIFRoZXJlIGlz
IG5vIHNlbnNpYmxlIHdheSB0byBkbyB0aGlzIGF0IHRoZSBtb21lbnQuIFdlIGRvIG5vdCBjb252
ZXJ0LCByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgIyBleHBlY3QgdGhhdCBhbGwgdGhlIGlu
dm9jYXRpb25zIGFyZSB0YWtlbiBjYXJlIG9mIHRoZSBmYWN0IHRoYXQgR0NHTGludCBpcyB0aGUg
c2FtZSB0eXBlIGFzIGludDMyX3QuCisgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIG5v
dCBob2xkIGZvciBhbGwgdHlwZXMgc3VjaCBhcyBHQ0dMYm9vbGVhbi4KKyAgICAgICAgICAgICAg
ICAgICAgI3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5
cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB2YWx1
ZV90eXBlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90
eXBlXSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAKKyAgICAjIFRoZSBpbnB1dCB0
byB0aGUgZ2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUuCisgICAgIyBS
dW4gdGhlIHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBnZW5lcmF0b3JzID0gWworICAgICAgICBj
b250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcywgdW5pbXBsZW1lbnRl
ZCksCisgICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAg
ICAgICAgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgIF0KKyAg
ICBmb3IgZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBnLmdlbmVyYXRlKCkKKworICAgIGlmIG9w
dGlvbnMudmVyYm9zZToKKyAgICAgICAgcHJpbnQoIkltcGxlbWVudGVkOiIpCisgICAgICAgIHBy
aW50KCIiLmpvaW4oZiIgICAge3N0cihpKX0gZmluYWxcbiIgZm9yIGkgaW4gZnVuY3MpKQorICAg
ICAgICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYiICAg
IHtzdHIodSl9IGZpbmFsXG4iIGZvciB1IGluIHVuaW1wbGVtZW50ZWQpKQorICAgICAgICBwcmlu
dChmIkltcGxlbWVudGVkOiB7bGVuKGZ1bmNzKX0sIHVuaW1wbGVtZW50ZWQ6IHtsZW4odW5pbXBs
ZW1lbnRlZCl9LCB0b3RhbDoge2xlbihmdW5jcykrbGVuKHVuaW1wbGVtZW50ZWQpfSIpCisgICAg
ICAgIHByaW50KCJDKysgdHlwZSBtYXAgdG8gV2ViS2l0IElQQyB0eXBlIG1hcDoiKQorICAgICAg
ICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgaW4gd2Vi
a2l0X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSAtPiB7
c3RyKHdlYmtpdF9pcGNfdHlwZXNbdF0pfSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZXMgd2l0
aG91dCBXZWJLaXQgSVBDIHR5cGU6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0
ZW1zKCk6CisgICAgICAgICAgICBpZiB0IG5vdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAg
ICAgICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IikKKyAgICAgICAgcHJpbnQoIldlYktpdCBJ
UEMgdHlwZSBjb252ZXJzaW9ucyIpCisgICAgICAgIGZvciAoYSwgYiksIGNvbnZlcnRlciBpbiB3
ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIHByaW50KGYi
ICAgIHtzdHIoYSl9IC0+IHtzdHIoYil9IDoge2NvbnZlcnRlci5fX25hbWVfX30iKQorICAgICAg
ICBwcmludCgiRG9uZS4iKQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFp
bl9fIjoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Q3MTQyZWNmODRlOGQ2ZjI5OWU1
YWNiYWQyODg0ZjBhNjg3Mjk5MS4uNjBlYTg2YWZlODc3YWYyZjkzYjE3YTc2MmExYzJhNDMwYWMy
MzQ2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTEyLTAyICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5p
bmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAg
ICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4K
KworICAgICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGUgbWlzc2luZyBmdW5jdGlv
bmFsaXR5LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxlIHRoZSB0ZXN0cyB0aGF0IGFjdHVh
bGx5IHBhc3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBiZWZvcmUgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAyMC0xMi0wMSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R0xJQl0gQWRkIHNvbWUgV1BFLXNwZWNpZmljIGJhc2VsaW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9j
ZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4NTMwNTgwMDMzOTBm
ZDc1MzdkYzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBhMmQ0NjcyNjNjNzA4Yzk0OCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTcsNiArMzE3LDE0
IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFs
bG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmdsIFsgU2tpcCBdCiBq
cy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9i
LzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdl
MkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0
L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRt
bCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNv
bnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0
L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sIFsg
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29u
dGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmdwdSBbIFNraXAg
XQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlwZXMuaHRtbCBbIFNr
aXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415220</attachid>
            <date>2020-12-02 07:03:28 -0800</date>
            <delta_ts>2020-12-02 07:13:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201202170326.patch</filename>
            <type>text/plain</type>
            <size>581456</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM4NWFiOWQ4Nzg5YzU4
MTBkOTNjOGIxNGExNWM5MWFlNzdiZGM3MS4uYTE1MDIwY2NkZTcxYjcwZmY4NGNlMmU0N2ExOWJh
OGNiOWU2OTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTEyLTAxICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVSBQcm9jZXNzOiBJT1N1cmZh
Y2VzIHNob3VsZCBub3QgYmUgbWFwcGVkIGludG8gdGhlIFdlYiBDb250ZW50IFByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWIzNTQ0Y2UwODJiZDhhYzJjZmZlY2IyMmQwMWY3MWE3NDI5NDUxZC4uZjY2OGI2
ZTNlYzVkNDExN2M3MWJiYTM2MDhmNWY4ODg1YTQ2MGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NTIgQEAKKzIwMjAtMTItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlV2ViR0xCYWNrZW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBJbXBsZW1lbnRlZCB3aXRo
IGEgZ2VuZXJhdG9yIHNjcmlwdCBpbXBsZW1lbnRpbmcgdGhlIElQQyB0byBwYXNzIHRoZQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTCBtZW1iZXIgZnVuY3Rpb24gY2FsbHMgZnJvbSB3ZWIgcHJv
Y2VzcyB0byB0aGUgR1BVCisgICAgICAgIHByb2Nlc3MuIFRoZSBzY3JpcHQgaXMgcnVuIGR1cmlu
ZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgY29tbWl0dGVk
IHRvIHRoZSByZXBvIGZvciBlYXNlIG9mIHJldmlldy4KKworICAgICAgICBJbXBsZW1lbnQgdGhl
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIFdlYktpdCBzaWRlLiBUaGlzIGNsYXNzIHdpbGwK
KyAgICAgICAgZm9yd2FyZCBjYWxscyByZWNlaXZlZCB2aWEgSVBDIHRvIHRoZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC4gQXQgdGhlCisgICAgICAgIG1vbWVudCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBpbnN0YW5jZSBpcyBhIGRpcmVjdCBjaGlsZCBvZgorICAgICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLgorCisgICAgICAgIENoYW5nZXMgV2ViS2l0IElQQyB0byBzdXBwb3J0IHJl
Y2VpdmluZyB0eXBlZCBhcnJheXMgYXMgcmVmZXJlbmNlcy4gVGhpcworICAgICAgICBpcyBuZWVk
ZWQgdG8gc3VibWl0IEdMIGRhdGEgYXJyYXlzLCBzdWNoIGFzIEdMZmxvYXQgYXJyYXlzIGRpcmVj
dGx5IGZyb20KKyAgICAgICAgdGhlIElQQyBkYXRhIHN0b3JlIHdpdGhvdXQgYW4gZXh0cmEgY29w
eS4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9ydCBwYXNzaW5nIGRhdGEg
cmVmZXJlbmNlcywgaS5lLgorICAgICAgICBEYXRhUmVmZXJlbmNlIG9yIEFycmF5UmVmZXJlbmNl
LCBhcyBhIHN5bmNocm9uaXplZCBjYWxsIHJldHVybiB2YWx1ZS4KKyAgICAgICAgVGhlIGNhbGxl
ciBtdXN0IGhvbGQgdGhlIENvbm5lY3Rpb246OnN5bmNTZW5kKCkgcmVzdWx0IChEZWNvZGVyIG9i
amVjdCkKKyAgICAgICAgZm9yIHRoZSBkdXJpYXRpb24gb2YgdXNpbmcgdGhlIGRhdGEgdmFsdWVz
LgorCisgICAgICAgIENvbXBvc2l0aW5nIGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIFBMQVRGT1JN
KENPQ09BKS4KKworICAgICAgICBNaXNzaW5nOgorICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4
dCBsb3NzCisgICAgICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGNoYW5nZQorICAgICAgICAgLSBQ
YWludCBXZWJHTCBjb250ZW50cyB0byAyRCBjYW52YXMKKyAgICAgICAgIC0gVXBsb2FkIHZpZGVv
IHRvIFdlYkdMCisgICAgICAgICAtIFVwbG9hZCBjYW52YXMgdG8gV2ViR0wKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpkaWRDb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlc2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmg6IEFkZGVkLgorICAgICAgICAoc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6Cisg
ICAgICAgIChzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChtb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QpOgorICAgICAgICAoYWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChhdHRhY2hT
aGFkZXIpOgorICAgICAgICAoYmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKGJpbmRCdWZm
ZXIpOgorICAgICAgICAoYmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGJpbmRSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoYmluZFRleHR1cmUpOgorICAgICAgICAoYmxlbmRDb2xvcik6CisgICAg
ICAgIChibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6Cisg
ICAgICAgIChibGVuZEZ1bmMpOgorICAgICAgICAoYmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAg
ICAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChjbGVhcik6CisgICAgICAgIChj
bGVhckNvbG9yKToKKyAgICAgICAgKGNsZWFyRGVwdGgpOgorICAgICAgICAoY2xlYXJTdGVuY2ls
KToKKyAgICAgICAgKGNvbG9yTWFzayk6CisgICAgICAgIChjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKGNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKGNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVTaGFkZXIpOgorICAgICAgICAoY3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChjdWxs
RmFjZSk6CisgICAgICAgIChkZWxldGVCdWZmZXIpOgorICAgICAgICAoZGVsZXRlRnJhbWVidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChkZWxldGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGRlbGV0ZVRleHR1cmUpOgor
ICAgICAgICAoZGVwdGhGdW5jKToKKyAgICAgICAgKGRlcHRoTWFzayk6CisgICAgICAgIChkZXB0
aFJhbmdlKToKKyAgICAgICAgKGRldGFjaFNoYWRlcik6CisgICAgICAgIChkaXNhYmxlKToKKyAg
ICAgICAgKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChkcmF3QXJyYXlzKToK
KyAgICAgICAgKGRyYXdFbGVtZW50cyk6CisgICAgICAgIChlbmFibGUpOgorICAgICAgICAoZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZmluaXNoKToKKyAgICAgICAgKGZsdXNo
KToKKyAgICAgICAgKGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGZyb250RmFjZSk6CisgICAgICAgIChnZW5lcmF0ZU1p
cG1hcCk6CisgICAgICAgIChnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoZ2V0QWN0aXZlVW5p
Zm9ybSk6CisgICAgICAgIChnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChnZXRCdWZmZXJQ
YXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFN0cmluZyk6CisgICAgICAgIChnZXRGbG9hdHYpOgor
ICAgICAgICAoZ2V0SW50ZWdlcnYpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0KToKKyAgICAgICAg
KGdldEludGVnZXI2NGkpOgorICAgICAgICAoZ2V0UHJvZ3JhbWkpOgorICAgICAgICAoZ2V0Qm9v
bGVhbnYpOgorICAgICAgICAoZ2V0RXJyb3IpOgorICAgICAgICAoZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAg
IChnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFNoYWRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQpOgorICAgICAgICAoZ2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRl
cmYpOgorICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRVbmlmb3JtZnYp
OgorICAgICAgICAoZ2V0VW5pZm9ybWl2KToKKyAgICAgICAgKGdldFVuaWZvcm11aXYpOgorICAg
ICAgICAoZ2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdldFZlcnRleEF0dHJpYk9mZnNl
dCk6CisgICAgICAgIChoaW50KToKKyAgICAgICAgKGlzQnVmZmVyKToKKyAgICAgICAgKGlzRW5h
YmxlZCk6CisgICAgICAgIChpc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGlzUHJvZ3JhbSk6Cisg
ICAgICAgIChpc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChpc1NoYWRlcik6CisgICAgICAgIChp
c1RleHR1cmUpOgorICAgICAgICAobGluZVdpZHRoKToKKyAgICAgICAgKGxpbmtQcm9ncmFtKToK
KyAgICAgICAgKHBpeGVsU3RvcmVpKToKKyAgICAgICAgKHBvbHlnb25PZmZzZXQpOgorICAgICAg
ICAocmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChzYW1wbGVDb3ZlcmFnZSk6CisgICAg
ICAgIChzY2lzc29yKToKKyAgICAgICAgKHNoYWRlclNvdXJjZSk6CisgICAgICAgIChzdGVuY2ls
RnVuYyk6CisgICAgICAgIChzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5jaWxN
YXNrKToKKyAgICAgICAgKHN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoc3RlbmNpbE9w
KToKKyAgICAgICAgKHN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmYp
OgorICAgICAgICAodGV4UGFyYW1ldGVyaSk6CisgICAgICAgICh1bmlmb3JtMWYpOgorICAgICAg
ICAodW5pZm9ybTFmdik6CisgICAgICAgICh1bmlmb3JtMWkpOgorICAgICAgICAodW5pZm9ybTFp
dik6CisgICAgICAgICh1bmlmb3JtMmYpOgorICAgICAgICAodW5pZm9ybTJmdik6CisgICAgICAg
ICh1bmlmb3JtMmkpOgorICAgICAgICAodW5pZm9ybTJpdik6CisgICAgICAgICh1bmlmb3JtM2Yp
OgorICAgICAgICAodW5pZm9ybTNmdik6CisgICAgICAgICh1bmlmb3JtM2kpOgorICAgICAgICAo
dW5pZm9ybTNpdik6CisgICAgICAgICh1bmlmb3JtNGYpOgorICAgICAgICAodW5pZm9ybTRmdik6
CisgICAgICAgICh1bmlmb3JtNGkpOgorICAgICAgICAodW5pZm9ybTRpdik6CisgICAgICAgICh1
bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgICh1c2VQcm9ncmFtKToKKyAgICAgICAgKHZhbGlk
YXRlUHJvZ3JhbSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAodmVydGV4QXR0cmliMmYpOgorICAgICAgICAodmVydGV4QXR0
cmliMmZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjNmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0
ZnYpOgorICAgICAgICAodmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgICh2aWV3cG9ydCk6
CisgICAgICAgIChidWZmZXJEYXRhMCk6CisgICAgICAgIChidWZmZXJEYXRhMSk6CisgICAgICAg
IChidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMCk6CisgICAgICAgIChyZWFk
blBpeGVsczEpOgorICAgICAgICAodGV4SW1hZ2UyRDApOgorICAgICAgICAodGV4SW1hZ2UyRDEp
OgorICAgICAgICAodGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UyRDEpOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQwKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJ
bWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAo
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQxKToKKyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWQp
OgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoZGVsZXRl
VmVydGV4QXJyYXkpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChiaW5kVmVy
dGV4QXJyYXkpOgorICAgICAgICAoY29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoZnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoaW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyZWFkQnVmZmVyKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgICh0ZXhT
dG9yYWdlMkQpOgorICAgICAgICAodGV4U3RvcmFnZTNEKToKKyAgICAgICAgKHRleEltYWdlM0Qw
KToKKyAgICAgICAgKHRleEltYWdlM0QxKToKKyAgICAgICAgKHRleFN1YkltYWdlM0QwKToKKyAg
ICAgICAgKHRleFN1YkltYWdlM0QxKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTNEKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1h
Z2UzRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKToKKyAgICAgICAgKGNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChnZXRGcmFnRGF0YUxvY2F0aW9uKToK
KyAgICAgICAgKHVuaWZvcm0xdWkpOgorICAgICAgICAodW5pZm9ybTJ1aSk6CisgICAgICAgICh1
bmlmb3JtM3VpKToKKyAgICAgICAgKHVuaWZvcm00dWkpOgorICAgICAgICAodW5pZm9ybTF1aXYp
OgorICAgICAgICAodW5pZm9ybTJ1aXYpOgorICAgICAgICAodW5pZm9ybTN1aXYpOgorICAgICAg
ICAodW5pZm9ybTR1aXYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAg
KHVuaWZvcm1NYXRyaXgzeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAg
ICAgICAodW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzeDRmdik6
CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliSTRp
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1
aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcik6CisgICAgICAgIChkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChkcmF3QnVm
ZmVycyk6CisgICAgICAgIChjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKGNsZWFyQnVmZmVydWl2
KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmaSk6Cisg
ICAgICAgIChjcmVhdGVRdWVyeSk6CisgICAgICAgIChkZWxldGVRdWVyeSk6CisgICAgICAgIChp
c1F1ZXJ5KToKKyAgICAgICAgKGJlZ2luUXVlcnkpOgorICAgICAgICAoZW5kUXVlcnkpOgorICAg
ICAgICAoZ2V0UXVlcnkpOgorICAgICAgICAoZ2V0UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChj
cmVhdGVTYW1wbGVyKToKKyAgICAgICAgKGRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoaXNTYW1w
bGVyKToKKyAgICAgICAgKGJpbmRTYW1wbGVyKToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGZlbmNl
U3luYyk6CisgICAgICAgIChpc1N5bmMpOgorICAgICAgICAoZGVsZXRlU3luYyk6CisgICAgICAg
IChjbGllbnRXYWl0U3luYyk6CisgICAgICAgICh3YWl0U3luYyk6CisgICAgICAgIChnZXRTeW5j
aSk6CisgICAgICAgIChjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChpc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiZWdpblRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KToKKyAgICAgICAgKHBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAocmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoYmlu
ZEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKGdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKGdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAg
ICAgKGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAodW5pZm9ybUJsb2NrQmlu
ZGluZyk6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZlckFOR0xFKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAg
KGNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKGlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChp
bnNlcnRFdmVudE1hcmtlckVYVCk6CisgICAgICAgIChwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAg
ICAgICAocG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoZHJhd0J1ZmZlcnNFWFQpOgorICAg
ICAgICAoZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRh
c2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaC4KKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OkFycmF5UmVmZXJlbmNlKToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
QXJyYXlSZWZlcmVuY2U6OnZlY3RvciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJl
ZmVyZW5jZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OndyYXBGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmluZ1Jl
ZmVyZW5jZS5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgICogU2hhcmVkL3NvdXAvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzU291cC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2VydGlm
aWNhdGVJbmZvPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZp
Y2F0ZUluZm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlv
blNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuY3BwLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNv
bnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0
aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENv
bG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xv
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
RGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1
cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
b250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdp
ZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00Zik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4
QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFn
ZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29t
cHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNh
bXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZl
cnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJr
ZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
b3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50
ZXJmYWNlaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRVc2VH
UFVQcm9jZXNzRm9yV2ViR0wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisKIDIwMjAtMTItMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgR1BVIFByb2Nlc3M6IElPU3VyZmFjZXMgc2hvdWxkIG5vdCBi
ZSBtYXBwZWQgaW50byB0aGUgV2ViIENvbnRlbnQgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYTcyM2FlMDYzNzNkMmY1ZjVmZDAyZjdjMTgyOGYzMmYxNzAxYjVhNC4uZTNkZTA3OTY2N2Jj
YWFhODFjZTViOTUzNTAyNDI1OWJhMjZjM2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjQ4
LDYgKzEyNDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNmZWIw
MzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4OGJkNDA3N2EwYzU0
YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMTEs
MTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lu
dFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNv
cmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgyZGY4ODdiMWIwYzRkNGI4
MTJjYmZlNWEwNmRlYWU0MTgxMjBlMmIuLjEwNzE0ZjNmNGE1NjhmZmQwZDE1Njk0MDJlMGVjZGM0
Nzg3MDE3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJjNzk1MjZiYzZjZDE0
M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQwMGIwZmNlMjQxZWZm
YjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiArMzU3LDE0IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2Nv
YS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmU3
ZTlmZDJiOTFlYjgxMDEzNDU2MGRmZmQ4MGFjZDIxMGIzZmRjMC4uM2I0NDA5ZWIwNmRhYzg3ZDE5
ZDVhYzI5OWFiOTEyODJiZjg5ZWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Myw3ICsyMDUzLDcgQEAKIAkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xB
bnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcw
MDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdG
QjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9u
c0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3
RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07CisJCTZFNjdEMkE5
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDMyMjlD
OUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEUy
MjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RjIyOURD
RDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAv
KiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Nyw2ICsyMjQ3LDggQEAK
IAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAw
QzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEw
MzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjkwNDE3MDI1
NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVD
QjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIz
NEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUy
NTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3Mzgx
RkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAv
KiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjksOSArMTAyMzEsMTQgQEAK
IAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAx
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI0MjU0
QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTUyNTcxMkU5MTAw
MzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTcyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNldHRpbmdz
LmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNFMjRGQUQzNjAw
MDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5p
ZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjIxLDYgKzI2NjI4LDggQEAKIAkJCQkwNzRFODJCOTE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0Yx
M0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJN0I5MDQxNkUyNTUw
MTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJ
CQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywK
IAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywK
IAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAt
MjY3ODcsNiArMjY3OTYsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBENkExMjJBMjRFOTAw
MkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJG
MzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJCQkJN0I2REM4MTUy
NTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNw
cCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1OTU5NjIxNDZERjc4
MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RBNTk1OTcyMTQ2REY3
ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2Nzk4LDYgKzI2ODA5
LDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4RkIg
LyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0
QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlD
REVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJ
CQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJ
CQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
ICovLApAQCAtMzIwOTksNiArMzIxMTEsNyBAQAogCQkJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUzQyAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNCOUU5MjM3
NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVhZGVycyAqLywKQEAg
LTM0MDM1LDYgKzM0MDQ4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2
MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJl
bW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0
RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVjNzE3NDU5N2YwNmUw
ZTUwOWU3OGZhYS4uNmM3ODNiZDIyYmRmMTJlYTRjMDNkMzcxM2QwZWU3Yzc5MTE0ZGNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTY4MSwxNyArNjgxLDggQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAg
ICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ly8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZlclN1YkRhdGEoKSBjYWxscyB0byB1
c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0ciA9IG1fY29udGV4dC0+bWFwQnVm
ZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNldC51bnNhZmVHZXQoKSwgc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0aFB0ci51bnNhZmVHZXQoKSAqIGNo
ZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4o
ZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZz
ZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICogZWxlbWVudFNpemUpOwotCi0gICAg
aWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkpCi0gICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdldEJ1ZmZlclN1
YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZmZXIiKTsKLSNlbmRpZgotICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgbV9jb250ZXh0
LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9mZnNldCwgbWFrZUdDR0xTcGFuKHN0
YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVP
ZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBjb3B5TGVuZ3RoICogZWxlbWVudFNp
emUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCkBAIC0xOTY3LDkgKzE5
NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRl
cihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0UXVl
cnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRR
dWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8V2ViR0xT
YW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAgLTIwNTks
MTcgKzIwNDgsMTEgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxl
clBhcmFtZXRlcihXZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1M6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAg
ICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVyaXYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIu
b2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01B
WF9MT0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0g
ICAgICAgIGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFy
YW1ldGVyZnYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5f
TE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0
ZXIiLCAiSW52YWxpZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0ODUs
MjQgKzI0NjgsMjQgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2
ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZl
Y3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKLSAgICAKICAg
ICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9U
WVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX1RZUEU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGVudW0+KHgpOyB9KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX1NJWkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKKyAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19JTkRFWDoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX09GRlNFVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0FSUkFZX1NUUklERToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX01B
VFJJWF9TVFJJREU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
SVNfUk9XX01BSk9SOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9y
bUluZGljZXMsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lT
X1JPV19NQUpPUjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
Pih4KTsgfSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtcyIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3
Miw4ICszNTU1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEcKIAogICAgIGNsZWFySWZDb21w
b3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwogCi0gICAgR0NHTHNpemVpIGxlbmd0aCwgY29sdW1u
cywgcm93czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVz
dEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgJmxlbmd0aCwgJmNv
bHVtbnMsICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpLCB0cnVlKTsK
KyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDQwMDcxY2EyM2Iy
YzM1NWUxZTgxMDY0NjE3ZDUyYjlkMmZiODdhYzYuLmY3YzZhMmU4MmE0YmYwMzdhMWI0NzdkNzgz
ZmE1NDFhYzRmNTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MzIsOCArNzMyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0KLQotICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRl
cywgaG9zdFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAg
ICAgaWYgKGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3Bh
dGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250
ZXh0Y3JlYXRpb25lcnJvckV2ZW50LApAQCAtNDM5NSwxNSArNDM5NCwxMiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aAogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAog
I2lmIFVTRShBTkdMRSkKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBHQ0dMc2l6ZWkg
Y29sdW1ucyA9IDA7Ci0gICAgR0NHTHNpemVpIHJvd3MgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJv
d3MsIGRhdGEsIGZhbHNlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVu
Z3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxz
LmJ5dGVMZW5ndGgoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJk
NTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdl
YkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFwaGljc0Nv
bnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5jU3RhdHVz
KTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5
bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBpZiAobV9z
eW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAgICBzY2hl
ZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5k
ZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjliODZiYzMx
ODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
NTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVybiBtX2Ns
aWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShX
RUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJRCBDaHJv
bWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsK
QEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1fcGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQorICAgIC8v
IFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQgd29yaywg
cmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3NjQxZDAx
NDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEzY2ZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYK
KwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1
bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAz
YTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0OTkwMzc1
ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMg
dGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RX
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRleCA0M2Ri
MWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2MzMzdiMmU1
MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAvLyBNZXRo
b2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUyZmIzLi43
YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMzQsMTMg
KzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1
cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7
IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0luV2ViUHJv
Y2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3Mo
KTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZiZDFkNDNj
MDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFmNjRhYTBk
ZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC05Niw2
ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1bmRsZUlz
V2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJv
b2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07CisgICAgcmV0
dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNz
KCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9IFtbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4NjczNDQ3
NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAt
MjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9j
b21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NUQVRVU19L
SFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNp
b24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAvLyBHTF9B
UkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVy
cyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwog
CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQot
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7
CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAg
ICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNp
emVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKQEAg
LTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQU1E
KCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3QgYmUg
YXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZp
Z3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkZjRhMTE5
YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIxYWVhN2E1
YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQSElDU19D
T05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0
Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpAQCAt
NDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1bHQ7
CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhv
c3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdMOjpH
cmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJzKGF0
dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1MmRjNmVm
My4uNTYxM2NiMmY2YzkxMjcwYWJkMWJkNGU2NzEwMzllOGYyYzgwZmZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBA
IC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZvciBp
bXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgogICAg
IC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGljOgogICAg
ICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGljc0Nv
bnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24gaW4g
Y29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0IHRo
ZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBH
cmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAot
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRl
cnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgYWN0
aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFj
aFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05ODAsNyAr
OTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhD
b3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgPSAwOwog
CiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0dHJpYgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSA9
IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NH
TGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0xMTI0LDgg
KzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50
cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50
cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgR0NH
THZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAgICB2aXJ0
dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBnZXRRdWVy
eU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpID0gMDsK
QEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pID0gMDsK
ICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xi
b29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSA9
IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTeW5jaXYo
R0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVz
ZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NHTHVpbnQ+
IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRl
cgpAQCAtMTM5NCw3ICsxMzk0LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1
cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgK
aW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3
NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQg
R0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hh
ciBHQ0dMY2hhcjsKK3R5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYg
dm9pZCBHQ0dMdm9pZDsKKworLy8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0
Y2ggdGhlIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZp
bGUgZm9yIGFsbCBwbGF0Zm9ybXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBl
ZGVmIGludHB0cl90IEdDR0xzaXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19H
THN5bmMqIEdDR0xzeW5jOwotdHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1p
Y0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1
Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNp
dCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0
YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6
ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAg
ICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBH
Q0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwg
c3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAg
ICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAg
ICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6
OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQor
ICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0
YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBU
KiBkYXRhOwpAQCAtNzksNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50
PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBk
YXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDEx
IEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0
YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdD
R0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXpl
b2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1
ZlNpemU7CiB9OwpAQCAtMTUyLDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilb
Tl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4o
V1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihX
VEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3Qg
Y291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTBmMzMwNzA1NjA3NWNhOWFjNGU2M2FkNjY2MjM0ZDY5ZjA0MzIxMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cnMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpID0gZGVmYXVsdDsKKworUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1HcmFw
aGljc0NvbnRleHRHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK0V4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiAqdGhp
czsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVu
Y2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRG
b3JDcmVhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCkuaXNXZWJHTDI7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAg
Ly8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKQorICAgICAgICBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAg
ICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBtX2xheWVyQ29t
cG9zaXRlZCA9IHRydWU7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Cisg
ICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXJz
VG9BdXRvQ2xlYXIgPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICAg
ICAgaWYgKGF0dHJzLmRlcHRoKQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0g
R3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5z
dGVuY2lsKQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250
ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICB9CisgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaWRDb21wb3NpdGUo
KTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVh
cihHQ0dMYml0ZmllbGQgYnVmZmVycykKK3sKKyAgICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCku
cHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IGJ1
ZmZlcnM7Cit9CisKK0dDR0xiaXRmaWVsZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJz
VG9BdXRvQ2xlYXI7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpl
bmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQoreworICAgIC8vIFJlZGVjbGFyZWQgZm9yIGV4
cG9ydCByZWFzb25zLgorICAgIC8vIEZJWE1FOiBUaGUgd2hvbGUgZnVuY3Rpb24gc2hvdWxkIGJl
IHJlbW92ZWQuCisgICAgR3JhcGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1
ZmZlcigpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgeworICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOworICAgICAgICBt
X2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxp
emUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRl
bnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChl
eHRlbnNpb24pOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKworUGxhdGZv
cm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkyMjUzNTYx
MDFjNWNkNjQwNDFmYjFhMWI3N2RlOTAxZTNmNTJjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKK09CSkNfQ0xBU1MgV2ViR0xMYXllcjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluOworI2VuZGlmCisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgcHJveHkgc2lkZSBpbXBsZW1lbnRhdGlvbgorLy8gVGhpcyBpbXBsZW1lbnRz
IHRoZSBwYXJ0cyB0aGF0IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6
CisvLyAtIERyYXdpbmcgYnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCisvLyAtIENvbXBvc2l0
aW5nIHN1cHBvcnQuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNH
TCB7CitwdWJsaWM6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5h
YmxlZDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0woKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVy
ZSgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyAgICB2
b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0ZWQo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0Zmll
bGQpIGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciopIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOworICAg
IHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CisKKyNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXND
VigpIGZpbmFsOworI2VuZGlmCisgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3ZlcnJpZGVzLgor
ICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOworICAgIGJvb2wgc3VwcG9ydHMoY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYp
IGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAgIHZpcnR1YWwg
dm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2FwQ2hhaW4oKTsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
KyNlbmRpZgorCisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgorICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJp
bmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5h
YmxlZEV4dGVuc2lvbnM7CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIgY2xlYXIgdHJh
Y2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBtX2xheWVyQ29t
cG9zaXRlZCA9IGZhbHNlOworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9
IHsgMCB9OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggMjgz
ZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2ZkODIzZDA4MWM1NWU0YS4uN2MxNTFmYTI4NTBmMzNjMTQ5
YTlkYzgyMjM4MWI4ZmNiZGU5Y2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtNDYs
MjggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVu
c2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUlu
ZGV4ZWRHZXRTdHJpbmcpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhm
YWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9pc05WSURJQShmYWxzZSkK
LSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0gICAgLCBtX2lz
SW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0
aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUo
ZmFsc2UpCiAgICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykK
IHsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwgcmVtb3ZlIHRoaXMgaW5pdGlhbGl6YXRpb24gYWx0
b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJzdW1lcyB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGdy
YXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4KLSAgICBtX3ZlbmRvciA9IFN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1ZFTkRPUikpKTsKLSAgICBt
X3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRT
dHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2ZW5kb3JDb21wb25l
bnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnICcpOwotICAg
IGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJudmlkaWEiKSkKLSAgICAgICAgbV9pc05W
SURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImF0aSIpIHx8
IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIpKQotICAgICAgICBtX2lzQU1EID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW50ZWwiKSkKLSAgICAgICAg
bV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW1h
Z2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0aW9uID0gdHJ1ZTsKIH0KIAogRXh0ZW5z
aW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKQEAgLTEwMyw3ICs4
Myw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1pbnQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQorR0xpbnQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHRHTDo6Tk9fRVJST1I7CiB9CkBAIC0xMTQsMTAgKzk0LDExIEBAIFN0cmluZyBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3Qgc2hhZGVyCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGludCBzb3VyY2VMZW5n
dGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9T
T1VSQ0VfTEVOR1RIX0FOR0xFKTsKKwogICAgIGlmICghc291cmNlTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0
aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMg
bnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBpbnQgcmV0dXJuZWRMZW5ndGggPSAwOworICAgIEdDR0xp
bnQgcmV0dXJuZWRMZW5ndGggPSAwOwogICAgIGdsOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkp
OwogICAgIGlmICghcmV0dXJuZWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwpAQCAtMTQ3LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVB
dmFpbGFibGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9u
cyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihs
b25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgw
LCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ss
IHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsK
ICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlLgogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKQEAgLTE1Niw3ICsxMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVi
dWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZwogICAgIGdsOjpC
bGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzUsNyArMjE2LDcgQEAgdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGJ1ZnMpCiAgICAgZ2w6OkRyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRh
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjQzLDE1ICsyMjQsMTUgQEAgdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2kKICAgICBnbDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
bG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKKyAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4ob2Zmc2V0
KSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTM1MCw3ICszMzEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0MTIsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
cG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM5LDcgKzQyMCw3IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC00NTYsNTUgKzQzNyw3
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpCiAgICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi0jaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotc3RhdGljIHZvaWQgd2lwZUFs
cGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMpCi17Ci0gICAgLy8gV2UgY2FuIGFzc3VtZSB0aGlzIGRvZXNuJ3Qgb3ZlcmZsb3cg
YmVjYXVzZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMKLSAgICAvLyB1c2UgY2hlY2tlZCBhcml0aG1l
dGljLgotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBwaXhlbHNbaSArIDNd
ID0gMjU1OwotfQotI2VuZGlmCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9p
ZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcg
aXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91
bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCi0gICAgZ2w6OkZsdXNoKCk7Ci0gICAg
YXV0byBhdHRycyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBHQ0dMZW51
bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1fY29udGV4dC0+bV9pc0ZvcldlYkdMMiA/IEdyYXBoaWNz
Q29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSOwotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRH
TFN0YXRlJiBzdGF0ZSA9IG1fY29udGV4dC0+bV9zdGF0ZTsKLSAgICBpZiAoYXR0cnMuYW50aWFs
aWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8p
IHsKLSAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KElu
dFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVy
KGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fZmJvKTsKLSAgICAgICAgZ2w6OkZsdXNo
KCk7Ci0gICAgfQotICAgICh2b2lkKSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpOwotICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBkYXRh
KTsKLSAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKLSAgICBpZiAoYXR0cnMuYW50
aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVG
Qk8pCi0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fY29u
dGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgLy8g
QU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNSb2J1c3RBTkdM
RSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKLSAgICAgICAgLy8gc3ludGhldGljIGVy
cm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93LgotICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBp
ZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYmICFhdHRycy5hbHBoYSAmJiAoZm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRH
TDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpICYm
IChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX2ZibyB8fCAoYXR0cnMuYW50aWFs
aWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8p
KSkKLSAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKLSNlbmRpZgotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MTIsNyAr
NDQ1LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1mdlJv
YnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTIwLDcgKzQ1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sCiAgICAgZ2w6Okdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBhNzczMWRmZDIwYzVm
MDNhMzM1OTAzZmFhNmUzOGZmNzJmNGIyMzIzLi5jYmY0OThiZDdjMWExYWI5YWE2YjcwZmI1ZDM4
YWM0YjkyZmIwMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTU2LDIxICs1NiwxMiBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBz
cmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9u
ZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNp
Z25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywg
dW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBs
b25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlk
ZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9
Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KLSAgICBib29s
IGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBib29sIGlzSW1h
Z2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KLSAgICBTdHJp
bmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAgIGJvb2wgcmVx
dWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVp
cmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0
ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJp
Y3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2
b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
IG92ZXJyaWRlOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2
b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5z
LCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CkBAIC05Nyw3ICs4OCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVh
ZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTEzMCwx
OCArMTIwLDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0
OwogCi0gICAgYm9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1f
aXNJbnRlbDsKLSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZTsKLQogICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFs
c2UgfTsKIAotICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKLQog
ICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRl
cmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xD
b2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZl
ckZsb2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmlu
ZGV4IDEyN2EzYjhkYmEzYzNmNDRjZDc2NWRkOGZjNzExY2RkODc4ZGU5YTQuLjFkNjA0YjcxZDQ4
MTRmNTk3YzJjMmZjODllZGM5NjQ4ZGMxM2M3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCkBAIC00NDMsMzIgKzQ0Myw1MyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgZGF0YS5kYXRhLCBmYWxzZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2Fz
dDxHQ0dMdm9pZCo+KG9mZnNldCksIHRydWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkKIHsKLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBjYWxscyB3
aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBwcmV2aW91cyBy
ZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJ
WE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMg
Zml4ZWQsIGkuZS4sCisgICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQg
YmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAgICAgYXV0
byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgR0NHTGVudW0gZnJhbWVidWZmZXJU
YXJnZXQgPSBtX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZG
RVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgaWYgKGF0dHJzLmFudGlh
bGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CisgICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9zdGF0ZTsKKyAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5n
SWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fZmJvKTsKICAgICAgICAgZ2w6OkZs
dXNoKCk7CiAgICAgfQotICAgIGdsOjpSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YSk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQorICAgIG1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpOworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBk
YXRhKTsKKyAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKKyAgICBpZiAoYXR0cnMu
YW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAg
ICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX211bHRpc2FtcGxl
RkJPKTsKIAorICAgIGlmIChlcnJvcikgeworICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZh
aWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFj
ZSB0aGlzIGluIHRoZQorICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAg
dGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpC
R1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0
ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykpKQorICAgIGlmICghcmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAo
dHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJvdW5k
UmVhZEZCTyA9PSBtX2ZibyB8fCAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZC
TyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCiAgICAgICAgIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4
ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihkYXRhKSk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAjZW5k
aWYKIH0KIAotCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21t
b24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pCkBAIC04OTgsMjAgKzkxOSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
CiAgICAgZ2w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0
YS5kYXRhKTsKIH0KIAotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJh
bmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5n
dGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGdsOjpNYXBCdWZmZXJSYW5nZSh0
YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwotfQotCi1HQ0dMYm9vbGVhbiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQotewotICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAg
IHJldHVybiBnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIEdD
R0x2b2lkKiBwdHIgPSBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVm
U2l6ZSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisg
ICAgICAgIHJldHVybjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7
CisgICAgaWYgKCFnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRh
cmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGlu
dHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpCkBAIC0xMDA4LDE0ICsxMDI1LDE1
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsCiAgICAgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3Rv
cjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZl
Y3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBW
ZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7CiAgICAgQVNT
RVJUKHByb2dyYW0pOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZv
cm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRh
KCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5h
bWUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0xlbnVtIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRh
cmdldCkKQEAgLTIxMDEsMjIgKzIxMTksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAg
IHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVl
LmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7
Ci19Ci0KIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjM5MiwxMiArMjM5NCwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiAgICAgZ2w6OkVuZFF1
ZXJ5KHRhcmdldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5
T2JqZWN0dWl2KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHBhcmFtcykK
K0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKEdDR0x1
aW50IGlkLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMdWludCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFF1ZXJ5T2JqZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgMSwgbnVs
bHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIC8vIFRyYW5zZm9ybSBGZWVk
YmFjayBGdW5jdGlvbnMKQEAgLTI4MzksMjAgKzI4NDIsMjQgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW4KICAgICBnbDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGZsb2F0IHZhbHVlID0gMC5mOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6
R2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRy
LCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBm
bGFncykKQEAgLTI4OTUsMTIgKzI5MDIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAg
ICBnbDo6V2FpdFN5bmMoc3luYywgZmxhZ3MsIHRpbWVvdXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lKQogewor
ICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFN5bmNp
dihzeW5jLCBwbmFtZSwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUpOworICAgIGdsOjpHZXRTeW5j
aXYoc3luYywgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNzM1OTdmNDc1M2QwYmVjMWQwMmU3ZDVmY2ZkYzY0M2E5ODNjODhk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFBM
QVRGT1JNKENPQ09BKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluOjp+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4o
KSA9IGRlZmF1bHQ7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWU4OGMyZjk5YjFjYWE1ODEx
N2M3MzkxMWE1MWI2N2RkZTYzMmJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUkFQSElD
U19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIklPU3VyZmFjZS5o
IgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBbiBpbnRl
cmZhY2UgZm9yIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVm
ZmVyaW5nIHN3YXAKKy8vIGNoYWluIG9mIElPU3VyZmFjZXMuCisvLyBUaGUgaW1wbGVtZW50b3Ig
d2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KKy8vIFRoZSBjbGll
bnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2lsbCByZWNlaXZl
IHRoZSBtZXRhZGF0YQorLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJlZW4gZGlzcGxh
eWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5CisvLyBiZSBhYmxl
IHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCisvLyBFeGFtcGxlIHVz
ZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBhcyB0aGUgbWV0
YWRhdGEuIFRoaXMgd2F5CisvLyB3aGVuIHRoZSBkaXNwbGF5IGNsaWVudCBpcyBkb25lIHdpdGgg
dGhlIElPU3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1c2luZworLy8g
dGhlIGV4aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVyIHJlY3ljbGUg
bG9naWMuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4oKTsKKyAgICBzdHJ1Y3QgQnVmZmVyIHsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4K
KyAgICAgICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OyAvLyBQcm9kdWNlciBzcGVjaWZpYyBt
ZXRhZGF0YSBoYW5kbGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCisgICAgfTsKKyAgICAvLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgor
ICAgIC8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hpcCBvZiB0aGUg
Y29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhlCisgICAgLy8g
dGltZSBvZiB0aGUgY2FsbC4KKyAgICAvLyBSZXR1cm5zIGVpdGhlcjoKKyAgICAvLyAtIEVtcHR5
IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVkLgorICAgIC8vIC0gQnVmZmVy
IHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRsZSBpZiB0aGUg
cmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKKyAgICAvLyAgIGJ1dCB0aGUgc3VyZmFjZSBp
cyBzdGlsbCBpbiB1c2UuCisgICAgLy8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCisgICAgdmlydHVh
bCBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpID0gMDsKKworICAgIC8vIFByZXBhcmVzIHRoZSB0YXJn
ZXQgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgdHJh
bnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVm
ZmVyYC4KKyAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsKKworICAgIC8vIERl
dGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVy
IG1ldGFkYXRhIGhhbmRsZS4KKyAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJl
ZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUg
Y2FsbGluZworICAgIC8vIHRoaXMuCisgICAgdmlydHVhbCB2b2lkKiBkZXRhY2hDbGllbnQoKSA9
IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29jb2EubW0KaW5kZXggMmUxYzc5OWU4Mjg1M2IzMjBiOGNlZGRkNGE2ZmU1ZTUwNGE5ZDg5Yy4u
NDg5ZTQ1ZmNjZTYzYmQ4NTU4N2E0ODMyODk4ZDkzMjQxMWNlOWYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBv
cnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xF
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0
ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0
YXRpYyBFR0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JW
ZXJzaW9uID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5
IGRpc3BsYXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1
cHBvcnQgPSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRo
Vm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJv
Y2VzcygpKTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBw
b3J0KSB7CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xh
dGlsZSBwbGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2lu
Y2UgY2xpZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFs
IGNvbnRleHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAg
IGlmIChHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNU
b29NYW55Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7
CiAKICAgICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hh
cmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8g
aG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQu
Y29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlv
bigpLCAmc2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygp
LCBob3N0V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0
LnB0cigpLCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JH
UFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51
bGxwdHIsIHN3YXBDaGFpbikpOworfQorCiAjaWYgUExBVEZPUk0oTUFDKSAvLyBGSVhNRTogVGhp
cyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+
LgogCiBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0
T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9SZWdpc3RyeUdQVUlEIHBy
ZWZlcnJlZEdQVUlEKQpAQCAtMjA0LDggKzIxMCw4IEBAIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVn
aXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVs
CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCi0gICAg
OiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBE
ZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFyZWRDb250ZXh0KQogewogICAgIG1faXNGb3JXZWJH
TDIgPSBhdHRycy5pc1dlYkdMMjsKIApAQCAtMjkzLDI2ICsyOTksMjggQEAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHQKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgZ2w6OkVuYWJsZShH
cmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgpOwogCisgICAg
VmVjdG9yPEFTQ0lJTGl0ZXJhbCwgND4gcmVxdWlyZWRFeHRlbnNpb25zOworICAgIGlmIChtX2lz
Rm9yV2ViR0wyKSB7CisgICAgICAgIC8vIEZvciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1ZXJpZXMg
dG8gd29yay4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX29jY2x1
c2lvbl9xdWVyeV9ib29sZWFuIl9zKTsKKyAgICB9CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRl
bnNpb25zKCk7Ci0KICAgICBpZiAoIW5lZWRzRUFHTE9uTWFjKCkpIHsKLSAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZXF1aXJlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAg
ICAgICJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSIsIC8vIEZvciBJT1N1cmZhY2UtYmFja2Vk
IHRleHR1cmVzLgotICAgICAgICAgICAgIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIs
IC8vIEZvciBjcmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCi0gICAg
ICAgIH07Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHJlcXVpcmVkRXh0ZW5zaW9ucyk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFleHRlbnNpb25z
LnN1cHBvcnRzKHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSkpIHsKLSAgICAgICAgICAgICAgICBMT0co
V2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCByZXF1aXJlZEV4dGVuc2lv
bnNbaV0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRm9yIElPU3VyZmFj
ZS1iYWNrZWQgdGV4dHVyZXMuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdM
X0FOR0xFX3RleHR1cmVfcmVjdGFuZ2xlIl9zKTsKKyAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRo
ZSBFR0wgc3VyZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNp
b25zLmFwcGVuZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHJlcXVpcmVkRXh0
ZW5zaW9uc1tpXSk7CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRB
TFlTVCkKKyAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7Cisg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAg
aWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgIExPRyhX
ZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIGV4dGVuc2lvbi5jaGFyYWN0
ZXJzKCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGV4dGVuc2lv
bnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8v
IEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgTUFDQ0FUQUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3Rl
cHMgYXMgd2VsbCwgYnV0IHRoYXQKICAgICAvLyB3b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNj
cmVlbk1hYyBjb2RlIHRvIGJlIGV4cG9zZWQgdG8gQ2F0YWx5c3QgdG9vLgpAQCAtMzMxLDEzICsz
MzksMTcgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hh
bmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAotICAgIC8vIENyZWF0ZSB0aGUgV2ViR0xMYXllcgor
ICAgIGlmIChzd2FwQ2hhaW4pCisgICAgICAgIG1fc3dhcENoYWluID0gc3dhcENoYWluOworICAg
IGVsc2UgewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBtX3dlYkdM
TGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7
CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBM
YXllciJdOwogI2VuZGlmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBt
X3N3YXBDaGFpbiA9ICZbbV93ZWJHTExheWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8g
Q3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIu
CiAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBA
IC00MDYsMTMgKzQxOCwxMiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKCkKICAgICAgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQog
ICAgICAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdC
dWZmZXJGQk8pOwogICAgIH0KLSAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2Uo
bV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExh
eWVyKSB7Ci0gICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3lj
bGVCdWZmZXJdOworICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJl
Y3ljbGVCdWZmZXIoKTsKICAgICAgICAgaWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAg
ICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhh
bmRsZSk7Ci0gICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFj
aENsaWVudF07CisgICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0
YWNoQ2xpZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVH
TF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBA
IC01NzUsMTEgKzU4NiwxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBl
RGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0g
RUdMX05PX1NVUkZBQ0U7CiAgICAgfQogICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQg
YnVmZmVyIG5vdywgYmVjYXVzZSBpdCBtb3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBh
dCB0aGUgdGltZSBpdCB3aWxsIGJlIHJldXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0g
W21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0g
bV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFu
ZGxlKQogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1
ZmZlci5oYW5kbGUpOwogICAgIHJlY3ljbGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICBy
ZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKQoreworICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5
KCkpOwogICAgIGF1dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwog
ICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygp
IGNvbnN0CiAgICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3Rl
ZCB0byBhIGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVu
IGNvbnNpZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5z
CiAgICAgLy8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVu
IGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUg
d2lsbCBzdGlsbCBiZSBhIFdpbmRvd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBX
ZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlv
biwgYW5kCiAgICAgLy8gbV9kaXNwbGF5TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNl
LgogICAgIGlmIChwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC02ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJv
bSBvdGhlciBncmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGds
OjpGbHVzaCgpOwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVj
eWNsZUJ1ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5
Y2xlQnVmZmVyKCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9k
aXNwbGF5QnVmZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVy
IHByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJC
YWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVz
ZW50KHsgV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1
ZmZlciB9KTsKICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAK
ICAgICBib29sIGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBF
cnJvciB3aWxsIGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgp
IHdoaWNoIHdpbGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNO
ZXdCYWNraW5nKQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAg
ICAgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0
NTUwOWM3NDI5ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQorewor
ICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXll
ciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8g
Y29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBb
bV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV93ZWJHTExheWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQorR3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmFzQ1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVy
IHN3YXBDaGFpbl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFj
N2M5N2NmNjZlNzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3
ZWE4ODA5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaW1wb3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNp
bXBvcnQgPG1lbW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1zdHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5k
bGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZm
ZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFj
ZXMuCi0vLyBUaGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlz
cGxheS4KLS8vIFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFj
ZSBhbmQgd2lsbCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZh
Y2UgaGFzIGJlZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vz
c2FyaWx5Ci0vLyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1
c2UuCi0vLyBFeGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2Ug
YmluZGluZyBhcyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVy
IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRp
bnVlIHVzaW5nCi0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBi
dWZmZXIgcmVjeWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAog
LSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNv
bnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJ
bWFnZVNuYXBzaG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwog
Ci0vLyBSZXR1cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMg
YnVmZmVyLgotLy8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9m
IHRoZSBjb250ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8v
IHRpbWUgb2YgdGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVy
IGlmIG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5
IHN1cmZhY2UgYW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1
ZmZlciB3YXMgYXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2Uu
Ci0vLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIp
cmVjeWNsZUJ1ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGgg
YSBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2Yg
dGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZv
ckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwot
Ci0vLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRz
IGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZl
IGJlZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZv
cmUgY2FsbGluZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLm1tCmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMu
LjM4NTk3ZTRhOGY2MzNhNWVlNWRiNzQ5MzMwMjJkYzIzN2ZlN2U0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAt
MzIsMTMgKzMyLDM5IEBACiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIlBs
YXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKwor
Y2xhc3MgV2ViR0xMYXllclN3YXBDaGFpbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2Vi
R0xMYXllclN3YXBDaGFpbihXZWJHTExheWVyKiBsYXllcikgIDogbV9sYXllcihsYXllcikgeyB9
OworICAgIH5XZWJHTExheWVyU3dhcENoYWluKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworICAgIHZv
aWQgcHJlc2VudChCdWZmZXIpIG92ZXJyaWRlOworICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKKyAg
ICAgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKKyAgICAgICAg
ICAgICAgICBtX3NwYXJlQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKG1fc3BhcmVCdWZmZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorICAgIHZvaWQqIGRldGFjaENsaWVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9
IG1fZGlzcGxheUJ1ZmZlci5oYW5kbGU7CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUg
PSBudWxscHRyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBXZWJDb3JlOjpJ
T1N1cmZhY2UqIGRpc3BsYXlTdXJmYWNlKCkgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLnN1cmZh
Y2UuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgQnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBC
dWZmZXIgbV9zcGFyZUJ1ZmZlcjsKKyAgICBXZWJHTExheWVyKiBjb25zdCBtX2xheWVyOworfTsK
IAogQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIgewotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJC
dWZmZXIgX2NvbnRlbnRzQnVmZmVyOwotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX3Nw
YXJlQnVmZmVyOwotCiAgICAgQk9PTCBfcHJlcGFyZWRGb3JEaXNwbGF5OworICAgIE9wdGlvbmFs
PFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2FwQ2hhaW47CiB9CiAKIC0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQpAQCAtNDcsNiArNzMsNyBAQAogICAgIHNlbGYudHJhbnNmb3JtID0g
Q0FUcmFuc2Zvcm0zRElkZW50aXR5OwogICAgIHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50
c09wYXF1ZTsKICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOworICAg
IF9zd2FwQ2hhaW4uZW1wbGFjZShzZWxmKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNzMs
MzAgKzEwMCwyMSBAQAogICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KLQotLSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgcmVjeWNsZUJ1ZmZl
cgorLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2Fw
Q2hhaW4KIHsKLSAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKLSAgICAgICAgaWYgKF9z
cGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCi0gICAgICAgICAgICBfc3BhcmVCdWZmZXIu
c3VyZmFjZS5yZXNldCgpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShfc3BhcmVCdWZmZXIpOwot
ICAgIH0KLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBfc3dhcENoYWluLnZhbHVlKCk7CiB9
CiAKLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdM
TGF5ZXJCdWZmZXIpIGJ1ZmZlcgorLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheQogewotICAgIEFT
U0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIF9zcGFyZUJ1ZmZlciA9IFdURk1vdmUo
X2NvbnRlbnRzQnVmZmVyKTsKLSAgICBfY29udGVudHNCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0g
WUVTOwogfQogCiAtICh2b2lkKWRpc3BsYXkKIHsKLSAgICBpZiAoX2NvbnRlbnRzQnVmZmVyLnN1
cmZhY2UgJiYgX3ByZXBhcmVkRm9yRGlzcGxheSkgewotICAgICAgICBzZWxmLmNvbnRlbnRzID0g
X2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpOworICAgIGlmIChfc3dh
cENoYWluLT5kaXNwbGF5U3VyZmFjZSgpICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKKyAgICAg
ICAgc2VsZi5jb250ZW50cyA9IF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCktPmFzTGF5ZXJD
b250ZW50cygpOwogICAgICAgICBbc2VsZiByZWxvYWRWYWx1ZUZvcktleVBhdGg6QCJjb250ZW50
cyJdOwogICAgIH0KICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7CkBAIC0xMDYsMTMg
KzEyNCwxNCBAQAogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBOTzsKIH0KIAotLSAodm9pZCop
IGRldGFjaENsaWVudAorQGVuZAorCit2b2lkIFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnByZXNlbnQo
QnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBBU1NFUlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAg
ICB2b2lkKiByZXN1bHQgPSBfY29udGVudHNCdWZmZXIuaGFuZGxlOwotICAgIF9jb250ZW50c0J1
ZmZlci5oYW5kbGUgPSBudWxscHRyOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgQVNTRVJUKCFt
X3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgIG1fc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKG1fZGlz
cGxheUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAg
IFttX2xheWVyIHByZXBhcmVGb3JEaXNwbGF5XTsKIH0KLUBlbmQKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQppbmRleCAzOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi45OWFk
OTE2NTI1OTE4NzNlMGU4M2ZlODc4OTI1ZWNhMjMzYTFhMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0zNiw2ICszNiw3IEBACiAj
aW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgi
CiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAi
UGxhdGZvcm1JbWFnZUJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlR3JhcGhpYy5oIgogI2ltcG9y
dCA8Q29yZUltYWdlL0NJQ29udGV4dC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRl
eCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi5hZGQ1ZjM1MmFlNGRl
NmI2ZDVkYzE5MWU2NzNiNWFhZmE1NmRlOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5H
TChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dM
T3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTYsNyArNTYsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3Jj
WTAsIGxvbmcgc3JjWDEsIGxvbgogICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogI2VuZGlmCiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAjZW5k
aWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEcKICNlbmRpZgog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4
NjhiNTQ5OTNhNDQ0NDlhOC4uNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0Mzdi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wg
bWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kw
LCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRz
dFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVy
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGlu
dGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CkBAIC01Miw5ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBv
cEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9u
ZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2
MWZiYTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYi4uYjc4OTYwY2I0ODJlNGVmMmFiOThl
NDAzOTJhNjM1YmE3ZmZiN2JkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bi5jcHAKQEAgLTM2NiwxMSArMzY2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHMKICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50
LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqLCBib29sKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAq
KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNm
ZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhjNjQuLjZhM2EzOWZlM2ExYmE1YmQyNTk3NzE1ODk0
NzU2MWNjYWQ1YWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAg
LTkzLDcgKzkzLDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgs
IGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFk
aW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAKaW5kZXggMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMy4u
ZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5MWZiZTA3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMiBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9u
ZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVm
ZmVyKGxvbmcgLyogc3JjWDAgKi8sIGxvbmcgLyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8s
IGxvbmcgLyogc3JjWTEgKi8sIGxvbmcgLyogZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxv
bmcgLyogZHN0WDEgKi8sIGxvbmcgLyogZHN0WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAq
LywgdW5zaWduZWQgbG9uZyAvKiBmaWx0ZXIgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xl
bnVtKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwKICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhB
dHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1YjczOThk
MDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4My4uNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNmOTlh
N2RmYzJmNzhmYjRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDggKzc1
LDggQEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0
WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFz
aywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNh
bXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xp
bnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdD
R0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnNlcnRF
dmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFy
a2VyRVhUKHZvaWQpIG92ZXJyaWRlOwpAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lk
cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92
ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAogICAgIGludCBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IGMyNTViMGMxMmY0ZmNiZmE0NmRiMDJkNTVjODBiNGNiNzdkMTdiNzAuLjEw
MzU2ODhkMWNiZTliODBkMzkxMjI0NzhiZWRkOGQ5OGY2NTQ0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC01OCw2ICs1OCw5IEBACiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKK30K
ICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmIFVTRShOSUNPU0lBKQpAQCAtODYsNyAr
ODksNyBAQCB0eXBlZGVmIFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFt
ZUhhc2g7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMUHJpdmF0ZTsKIAotY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVi
bGljIEdyYXBoaWNzQ29udGV4dEdMCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywg
SG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbik7CkBAIC05
NCw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBS
ZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCYgc2hhcmVkQ29udGV4dCk7CisgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiopOworCiAgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb250ZXh0T2JqOyB9CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0
Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQpAQCAtMTkxLDcgKzE5Niw3IEBAIHB1
YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5p
Zm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZv
JikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQs
IEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAg
IHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNp
emVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJz
KTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1
ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBA
IC0yMTksOCArMjI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAg
ICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVy
dGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAK
ICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAg
LTIzNiw3ICsyMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xm
bG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2
b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkg
ZmluYWw7CkBAIC0zMTcsMTIgKzMyMSwxMCBAQCBwdWJsaWM6CiAjaWYgIVVTRShBTkdMRSkKICAg
ICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dM
ZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwogICAgIHZv
aWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNl
dCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5n
dGgpOwotICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0
LCBHQ0dMdWludCBsZW5ndGgpOwogI2VuZGlmCiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShH
Q0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFk
T2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7
CiAKLSAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSBmaW5hbDsK
LSAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAg
IHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGJsaXRGcmFtZWJ1
ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKICAg
ICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IGxheWVyKSBmaW5hbDsKQEAgLTM4NCw3ICszODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
bmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0
UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0
UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOworICAgIEdD
R0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgZmlu
YWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmlu
YWw7CkBAIC0zOTMsOCArMzk1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRl
cmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOwogICAgIC8vIGdl
dFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5h
bDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGZsb2F0
IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMc3luYyBm
ZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOwog
ICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgZmluYWw7CkBAIC00MDMsNyArNDA1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFn
cywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKICAg
ICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGF0IHRoZSBXZWJHTCBsZXZlbCBp
ZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3QuCi0gICAgdm9pZCBnZXRTeW5jaXYoR0NH
THN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBm
aW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3Qg
aWQpIGZpbmFsOwpAQCAtNDIwLDcgKzQyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRCdWZm
ZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0
IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKICAg
ICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUu
CiAgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpIGZpbmFsOwotICAg
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxH
Q0dMaW50PiYgcGFyYW1zKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5p
Zm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1
bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgR0NHTHVpbnQgZ2V0
VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtNDI5LDExICs0MzEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKIAot
I2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50
IGRzdE9mZnNldCk7Ci0jZW5kaWYKLQogICAgIC8vIEhlbHBlciBtZXRob2RzLgogCiAgICAgdm9p
ZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJ
bnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29u
dGV4dCYpOwpAQCAtNTE1LDcgKzUxMiwxMSBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gIVVTRShBTkdM
RSkKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIsIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxwdHIpOworI2Vsc2UKICAgICBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBE
ZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CisjZW5kaWYKIAogICAgIC8vIENhbGxlZCBv
bmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBP
cGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRz
IG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCkBAIC01MjgsNiAr
NTI5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNo
YXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJp
YnV0ZXMoKTsKICAgICAKKyAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJl
YWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKKwogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQg
ZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwog
ICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIApAQCAtNTQ4LDEwICs1NTEsMTMgQEAgcHJpdmF0
ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygp
IGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9v
bCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERp
c3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZv
aWQqIHBidWZmZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07Cisg
ICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRyYXdz
IHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4
IDYzNTZmODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2ODgxM2Y2YjkuLjYyOTgwMzg4YjY1MjQ3
OWNjYjQzMzFjMjVmZmVlYmI2NmM2Y2I1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgRXh0ZW5zaW9uc0dMJiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCkBAIC00
NDcsNyArNDQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
ICAgICA6OmdsRmx1c2goKTsKICAgICB9Ci0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuZGF0YSk7CiAgICAgaWYgKGF0dHJzLmFu
dGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAg
ICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
UiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4ODY3MjAzOWFlYTRmNTk5OTZlNGQ5NGUx
YzFhMGZlLi43YjJlYTA0YTIwOTk1NjVjNzkwZWE1N2M2NjdiMGQ5YzYwYWY1NWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTIwMjksMjIg
KzIwMjksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiA6OmdsR2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sIG1hcHBlZE5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0
VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0
cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0y
Mjc4LDE5ICsyMjYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
MkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAg
IGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwg
cHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7
CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNv
dW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkudmVy
dGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBIQVZFKE9Q
RU5HTF80KSAmJiBFTkFCTEUoV0VCR0wyKQpAQCAtMjMzNSw0MiArMjMxOSwyNSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xpbnRwdHIsCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9m
ZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBs
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRh
KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNCeXRl
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRz
dE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19Ci0KICNpZiBIQVZFKE9QRU5H
TF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCi17CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gOjpn
bE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdD
R0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIDo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpOwotfQorICAg
ICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IDo6Z2xNYXBCdWZmZXJSYW5nZSh0YXJn
ZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklU
KTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEs
IHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoITo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpKQor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogI2Vsc2UKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJS
YW5nZShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTHNpemVpcHRyLCBHQ0dMYml0ZmllbGQpCi17
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5V
U0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CisjZW5kaWYK
IH0KIAotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdD
R0xlbnVtKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBz
cmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGlu
dCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ss
IEdDR0xlbnVtIGZpbHRlcikKIHsKQEAgLTI3MTIsMTEgKzI2NzksMTEgQEAgUGxhdGZvcm1HTE9i
amVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmEKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkKK0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1l
KQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsK
LSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0Zm9ybUdM
T2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTYW1wbGVyKCkKQEAgLTI3NTYs
MTggKzI3MjMsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFt
ZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4KICAgICBVTlVTRURfUEFSQU0o
cGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwLmY7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCisKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7
CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAg
IHJldHVybiAwOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VT
eW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjgwNiwxMiAr
Mjc3NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3lu
YyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIFVOVVNFRF9QQVJBTSh0aW1l
b3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xz
eW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBz
eW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAgICAgVU5V
U0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAtMjg5MSwy
MSArMjg1OCwyMyBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiB7IH07CiB9
CiAKLSNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5h
bWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkK
IHsKKyAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7
CisjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKICAgICBBU1NFUlQocHJv
Z3JhbSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1l
LCBwYXJhbXMuZGF0YSgpKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1
bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3Vs
dC5kYXRhKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAgIFVOVVNF
RF9QQVJBTShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrTmFtZSk7Ci0K
ICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjkxMyw3ICsyODgyLDYgQEAgU3RyaW5nIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3IKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFN
KHVuaWZvcm1CbG9ja0luZGV4KTsKLQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCkBA
IC0yOTIzLDI3ICsyODkxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0wKICAgICBVTlVTRURf
UEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tC
aW5kaW5nKTsKIH0KLSNlbHNlCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3Rp
dmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiwgR0NH
TGVudW0sIFZlY3RvcjxHQ0dMaW50PiYpCi17Ci19Ci0KLUdDR0x1aW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBT
dHJpbmcmKQotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVp
bnQpCi17Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVp
bnQsIEdDR0x1aW50KQotewotfQotI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5KTsKQEAgLTI5NTQsMTggKzI5MDMsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVT
RURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9Q
QVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gcGFyYW1zKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAyM2Q3NGZhODBkNzA3OTFiZTYw
MGRmNThlNzU2MTczMzk2YWE1NTA1Li5hMjIxODBiNGJmNGNlMTBmMTg1MjEyNDAxMWU4OGE0NDI3
M2I0MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC00
MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZv
aWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsRmx1c2goKTsKICAg
ICB9CiAKLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgZGF0YS5kYXRhKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBt
X3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKQEAgLTEzMCw3
ICsxMzAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25z
dCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZl
ciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgICAgICBpZiAoc3VwcG9ydFBhY2tl
ZERlcHRoU3RlbmNpbEJ1ZmZlcikgewogICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVm
ZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJV
RkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5z
dGVuY2lsKQogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBt
X2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVw
dGgpCkBAIC0xMzgsMTIgKzEzOCwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7CiAgICAgICAgICAgICAgICAg
ICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVy
KTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgs
IHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQs
IEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAg
OjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FU
VEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRo
QnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09N
UE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25z
LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2Ft
cGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAg
ICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBH
TF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDg4ZTE1
MWIxMjIyNGZlYmNjODkzYjUzZDY4NWUzZWMxYjAxMGNkNDUuLjJiODk2YTlhYmFjMGUxMDc0YjFl
MTM1MTkzMjA0OWFiZTc2ODAzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTIzLDYgKzEyMyw3
IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MKICAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAorICAgIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIKQEAgLTIyMSw2ICsyMjIsNyBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbgogCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZTUxY2FlZDIxZTE4NmNmMmExNzNjYjhhMzMzMTJiZTBiMzA0YmIwMC4uYmNlMzM4YzRiNDRm
MDc5ZTgwZWQwZDQ2ZDY3MjI5M2MyMjdlNTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiArMjAsNyBAQCAkKEpBVkFTQ1JJUFRD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5z
Yi5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTM0LDYgKzEzNSw3IEBAICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggZTg4YjJjMjFmYTcxN2M3N2QyMzAyY2I1MThiYTRhZDNlZGUyNTc0
YS4uMTVmM2MyM2NjZTA1ZTJkMzJlNWVlYjY5MjQwYzY1NDhhOWJkMTYwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNzgsNiArMTc4
LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjgxNDg1NWZm
OWQyM2FmMGE3N2U1ZmRhNmRmZDJmZDU1MDk3NmY2OS4uMzUzZDc2ZWQxYTVmMjA5ZWVhM2Y0Nzgz
MWUwNmNhOGRkMjEwNDNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTcxLDYg
KzE3MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAogCVdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mg
XAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAogCVdl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCkBAIC0yMjcsNiAr
MjI4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzIFwKIAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAogCUdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCisJR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMGUyZTg4MzJiMWUyMGYx
ZTBmMzE5ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2UxNGM1MGI3NDE5OTNkNmYzNWE1YTk1
ZjVhZmQ4MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiArNjQsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
QkdMKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisjZW5kaWYKKwogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKQEAgLTI5MCw2
ICsyOTQsMjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRfVU5VU0VEKGZv
dW5kLCBmb3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9y
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IH0pOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29u
dGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAu
cmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChm
b3VuZCwgZm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQbGF5aW5nTWFu
YWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMjY3
OGRiYzRlNWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4ZC4uNWFlZGZiYjRkMmNhYzdiNzY2
MGZmMDczNjA5ZDM3N2M2MDE1ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9u
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisK
ICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgpAQCAtMzksNiArNDAsMTEgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBHUFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBjbGFzcyBSZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTsKIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwpAQCAtMTE5LDYgKzEy
NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9p
ZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5m
byhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5m
byYmKTsKIApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7Ci0KKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFw
PEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5
UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTE5NGZiNGY2
MDg1ZDYyNGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1NGUxNjQ1OTViMGEzNjFkZmU0Yzc1
YmZmNDAxOGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDYg
KzI1LDEwIEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlz
cGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICAg
ICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9pZCBSZWxlYXNl
R3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlp
bmdJbmZvKCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5m
bykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ4MDRkMWZhOTk5NGQ1ZmZmMzE0MzY0ZDU5YmVmOTVlYjQ5ZWE5OTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgIVBMQVRGT1JNKENPQ09BKQorc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KyNlbmRpZgorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBS
ZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vh
a1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0
byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2Vp
dmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSwgKnRoaXMpOworICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAg
ICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4
dEdMOjpFWFRFTlNJT05TKTsKKyAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9j
b250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dMOjpSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FO
R0xFKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpX
YXNDcmVhdGVkKGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1v
dGVHcmFwaGljc0NvbnRleHRHTCgpCit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7Cit9
CisKK0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAg
aWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBudWxscHRyOworfQorCit1aW50NjRfdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAor
eworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaWRDb21wb3NpdGUoKQoreworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNMb3N0KCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFu
Z2VkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpXYXNDaGFuZ2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKK3sKKyAgICBpZiAod2lkdGggJiYgaGVpZ2h0KQorICAgICAg
ICBtX2NvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CisgICAgZWxzZQorICAgICAgICBm
b3JjZUNvbnRleHRMb3N0KCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYgZXh0ZW5zaW9uKQorewor
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9uKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFu
Z2VkKCkKK3sKKyAgICBtX2NvbnRleHQtPm1hcmtDb250ZXh0Q2hhbmdlZCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdkYjBjZjUxOGFiZjliYjI1YWIzMzZkZGRlMDM5OTkyNWFhMDVmMzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgor
CisjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+Cisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNYWNo
U2VuZFJpZ2h0OworfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBHUFUgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0
aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZXMgYWJvdXQgR3JhcGhpY3NDb250ZXh0R0wgY2Fs
bHMKKy8vIGFuZCBpc3N1ZXMgcmVhbCBHcmFwaGljc0NvbnRleHRHTCBjYWxscyBiYXNlZCBvbiB0
aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBn
ZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCitj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHJpdmF0ZSBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgflJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKCkgb3ZlcnJpZGU7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+KTsKKworICAgIC8v
IElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCBv
dmVycmlkZXMuCisgICAgdm9pZCBkaWRDb21wb3NpdGUoKSBmaW5hbDsKKyAgICB2b2lkIGZvcmNl
Q29udGV4dExvc3QoKSBmaW5hbDsKKyAgICB2b2lkIHJlY3ljbGVDb250ZXh0KCkgZmluYWw7Cisg
ICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkgZmluYWw7CisKKyAg
ICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChT
dHJpbmcmJik7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpID0gMDsKKyNlbHNlCisgICAg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2Vu
ZGlmCisKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oIiAvLyBOT0xJTlQKKworICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TD4gbV9jb250ZXh0OworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lZWE3MTUyNGQ0MDgxOWJhMDMxMGNiNDIwMTM2MDc1NjY4Nzg2ODU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjk0IEBACisvKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3Qg
ZWRpdC4KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBS
ZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5
QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZv
aWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9p
ZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKQorCisgICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1c0No
ZWNrKCkKKyAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQorICAgIHZv
aWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBBY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisg
ICAgdm9pZCBBdHRhY2hTaGFkZXIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qgc2hhZGVyKQor
ICAgIHZvaWQgQmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4
LCBTdHJpbmcgbmFtZSkKKyAgICB2b2lkIEJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBhcmcxKQorICAgIHZvaWQgQmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBm
bG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb24odWludDMyX3Qg
bW9kZSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1
aW50MzJfdCBtb2RlQWxwaGEpCisgICAgdm9pZCBCbGVuZEZ1bmModWludDMyX3Qgc2ZhY3Rvciwg
dWludDMyX3QgZGZhY3RvcikKKyAgICB2b2lkIEJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNy
Y1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxw
aGEpCisgICAgdm9pZCBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQzMl90IHRhcmdldCkgLT4g
KHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ2xlYXIodWludDMy
X3QgbWFzaykKKyAgICB2b2lkIENsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxv
YXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBDbGVhckRlcHRoKGZsb2F0IGRlcHRoKQor
ICAgIHZvaWQgQ2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB2b2lkIENvbG9yTWFzayhib29s
IHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHZvaWQgQ29tcGls
ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weVRleEltYWdlMkQodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRl
cikKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZUJ1ZmZl
cigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0
ZUZyYW1lYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQ3JlYXRlUHJvZ3JhbSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAo
dWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVUZXh0dXJl
KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3VsbEZh
Y2UodWludDMyX3QgbW9kZSkKKyAgICB2b2lkIERlbGV0ZUJ1ZmZlcih1aW50MzJfdCBhcmcwKQor
ICAgIHZvaWQgRGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0
ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVJlbmRlcmJ1ZmZlcih1aW50
MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9p
ZCBEZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZXB0aEZ1bmModWludDMy
X3QgZnVuYykKKyAgICB2b2lkIERlcHRoTWFzayhib29sIGZsYWcpCisgICAgdm9pZCBEZXB0aFJh
bmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHZvaWQgRGV0YWNoU2hhZGVyKHVpbnQz
Ml90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBEaXNhYmxlKHVpbnQzMl90IGNhcCkK
KyAgICB2b2lkIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2
b2lkIERyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3Vu
dCkKKyAgICB2b2lkIERyYXdFbGVtZW50cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1
aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBFbmFibGUodWludDMyX3Qg
Y2FwKQorICAgIHZvaWQgRW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisg
ICAgdm9pZCBGaW5pc2goKQorICAgIHZvaWQgRmx1c2goKQorICAgIHZvaWQgRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJf
dCByZW5kZXJidWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgdm9pZCBGcmFtZWJ1ZmZl
clRleHR1cmUyRCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90
IHRleHRhcmdldCwgdWludDMyX3QgYXJnMywgaW50MzJfdCBsZXZlbCkKKyAgICB2b2lkIEZyb250
RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgR2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFy
Z2V0KQorICAgIHZvaWQgR2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90
IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm0o
dWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVlLCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QnVmZmVyUGFy
YW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFN0cmluZyh1aW50MzJfdCBuYW1lKSAt
PiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RmxvYXR2KHVp
bnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEludGVnZXJ2KHVpbnQzMl90
IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0KHVpbnQzMl90IHBu
YW1lKSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldElu
dGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4KSAtPiAoaW50NjRfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFByb2dyYW1pKHVpbnQzMl90IHByb2dy
YW0sIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUp
IC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJn
MCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGlu
dDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJpKHVpbnQz
Ml90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmlu
ZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclByZWNpc2lvbkZv
cm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNpb25UeXBlKSAtPiAoSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZSwgR0NHTGludCBwcmVjaXNpb24pIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCkgLT4gKFN0
cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFRleFBhcmFtZXRlcmYo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50
NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1pdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90
IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybXVpdih1aW50MzJf
dCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
dWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDY0X3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBIaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgbW9k
ZSkKKyAgICB2b2lkIElzQnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNFbmFibGVkKHVpbnQzMl90IGNhcCkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0ZyYW1lYnVmZmVyKHVpbnQzMl90
IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNQcm9n
cmFtKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgSXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1NoYWRlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzVGV4dHVyZSh1aW50MzJfdCBhcmcw
KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIExpbmVXaWR0aChm
bG9hdCBhcmcwKQorICAgIHZvaWQgTGlua1Byb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lk
IFBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgUG9s
eWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRzKQorICAgIHZvaWQgUmVuZGVyYnVm
ZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFNhbXBsZUNvdmVyYWdlKGZsb2F0
IHZhbHVlLCBib29sIGludmVydCkKKyAgICB2b2lkIFNjaXNzb3IoaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2hhZGVyU291cmNl
KHVpbnQzMl90IGFyZzAsIFN0cmluZyBhcmcxKQorICAgIHZvaWQgU3RlbmNpbEZ1bmModWludDMy
X3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsRnVu
Y1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50
MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB2b2lk
IFN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgbWFzaykKKyAgICB2
b2lkIFN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBh
c3MpCisgICAgdm9pZCBTdGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBm
YWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBUZXhQYXJhbWV0
ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHZv
aWQgVGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90
IHBhcmFtKQorICAgIHZvaWQgVW5pZm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisg
ICAgdm9pZCBVbmlmb3JtMWZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4
KQorICAgIHZvaWQgVW5pZm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtMmYoaW50MzJfdCBsb2NhdGlvbiwgZmxv
YXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0yaShpbnQzMl90IGxv
Y2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB2b2lkIFVuaWZvcm0yaXYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5p
Zm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAg
dm9pZCBVbmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3QgeikKKyAgICB2b2lkIFVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybTRmKGlu
dDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAg
dm9pZCBVbmlmb3JtNGZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVW5pZm9ybTRpdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBV
bmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgzZnYoaW50
MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBV
c2VQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWYWxpZGF0ZVByb2dyYW0odWludDMy
X3QgYXJnMCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4
KQorICAgIHZvaWQgVmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0LCAxPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZih1aW50MzJf
dCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmdih1aW50
MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4gdmFsdWVzKQorICAgIHZv
aWQgVmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHopCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDM+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmKHVpbnQz
Ml90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQg
VmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJQb2ludGVyKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgaW50MzJfdCBz
dHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFZpZXdwb3J0KGludDMyX3QgeCwgaW50
MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIEJ1ZmZlckRh
dGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAg
dm9pZCBCdWZmZXJEYXRhMSh1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4gZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJTdWJEYXRhKHVpbnQz
Ml90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
IGRhdGEpCisgICAgdm9pZCBSZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRh
KSBTeW5jaHJvbm91cworICAgIHZvaWQgUmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhJbWFnZTJEMCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9p
ZCBUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3Jk
ZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHZvaWQgVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1
aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRl
eEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwg
aW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9m
ZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWlu
dDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1h
Z2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkKHVp
bnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNv
dW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMy
X3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291
bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBkaXZpc29yKQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXkoKSAtPiAodWludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheSh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgQ29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwg
dWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRl
T2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0QnVmZmVyU3ViRGF0YSh1aW50MzJf
dCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJh
bWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50
MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwg
aW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZvaWQg
RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2ht
ZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGxheWVyKQorICAg
IHZvaWQgSW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMpCisgICAgdm9pZCBJbnZhbGlkYXRlU3ViRnJh
bWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBh
dHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHZvaWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAgdm9pZCBSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBs
ZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyAgICB2b2lkIFRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxz
LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQp
CisgICAgdm9pZCBUZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoKQorICAgIHZvaWQgVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAg
dm9pZCBUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRl
cHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4g
cGl4ZWxzKQorICAgIHZvaWQgVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb3B5VGV4
U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJ
bWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50
MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGlt
YWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdl
M0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhT
dWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VT
aXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBHZXRGcmFnRGF0YUxvY2F0aW9uKHVpbnQz
Ml90IHByb2dyYW0sIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIFVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAp
CisgICAgdm9pZCBVbmlmb3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50
MzJfdCB2MSkKKyAgICB2b2lkIFVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3Qg
djAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB2b2lkIFVuaWZvcm00dWkoaW50MzJf
dCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MiwgdWludDMy
X3QgdjMpCisgICAgdm9pZCBVbmlmb3JtMXVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTJ1aXYoaW50MzJfdCBs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVu
aWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtNHVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4M2Z2KGlu
dDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQg
VW5pZm9ybU1hdHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4MmZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVmVydGV4QXR0cmliSTRp
KHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90
IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3QsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWko
dWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQz
Ml90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJfdCBpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmli
SVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgaW50
MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdSYW5nZUVsZW1lbnRz
KHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMyX3QgY291
bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdCdWZmZXJz
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBDbGVhckJ1ZmZl
cml2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1
ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2
YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBk
cmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZXMpCisgICAgdm9pZCBD
bGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBk
ZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHZvaWQgQ3JlYXRlUXVlcnkoKSAtPiAodWludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVRdWVyeSh1aW50MzJf
dCBxdWVyeSkKKyAgICB2b2lkIElzUXVlcnkodWludDMyX3QgcXVlcnkpIC0+IChib29sIHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgRW5kUXVlcnkodWludDMyX3QgdGFyZ2V0KQorICAg
IHZvaWQgR2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UXVlcnlPYmplY3R1aSh1
aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNhbXBsZXIoKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBs
ZXIpCisgICAgdm9pZCBJc1NhbXBsZXIodWludDMyX3Qgc2FtcGxlcikgLT4gKGJvb2wgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kU2FtcGxlcih1aW50MzJfdCB1bml0LCB1
aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2Ft
cGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBTYW1wbGVyUGFy
YW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisg
ICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBw
bmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2Ft
cGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRmVuY2VTeW5jKHVpbnQzMl90
IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIElzU3luYyh1aW50NjRfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVN5bmModWludDY0X3QgYXJnMCkKKyAg
ICB2b2lkIENsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCB1aW50
NjRfdCB0aW1lb3V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1l
b3V0KQorICAgIHZvaWQgR2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB2b2lkIElzVHJh
bnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgQmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgaWQpCisgICAgdm9pZCBCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1p
dGl2ZU1vZGUpCisgICAgdm9pZCBFbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHZh
cnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHZvaWQgR2V0VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lk
IFBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgUmVzdW1lVHJhbnNmb3JtRmVlZGJh
Y2soKQorICAgIHZvaWQgQmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBp
bmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHZvaWQgQmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0
LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJv
Z3JhbSwgVmVjdG9yPFN0cmluZz4gdW5pZm9ybU5hbWVzKSAtPiAoVmVjdG9yPHVpbnQzMl90PiBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1zKHVpbnQz
Ml90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4gdW5pZm9ybUluZGljZXMsIHVpbnQzMl90IHBu
YW1lKSAtPiAoVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIHVuaWZvcm1C
bG9ja05hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5p
Zm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZv
cm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHZvaWQgR2V0
QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJs
b2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90
IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQz
Ml90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1
aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlVmVy
dGV4QXJyYXlPRVMoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBEZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0
ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQg
R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJbnNlcnRFdmVudE1hcmtlckVYVChT
dHJpbmcgYXJnMCkKKyAgICB2b2lkIFB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAg
ICB2b2lkIFBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50
MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50
MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQs
IGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVp
bnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZmZlOGMxZmM3YWZhMTcyZjFiYjljNzM0MjY3NWM1ZGZlNmUxNzZlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTAsMCArMSwxMTgzIEBACisvKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3Qg
ZWRpdC4KKy8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2Vj
dGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4K
KyNwcmFnbWEgb25jZQorICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAgICB9
CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgIH0KKyAgICB2b2lk
IG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKyAg
ICB2b2lkIGF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwor
ICAgIH0KKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJf
dCBpbmRleCwgU3RyaW5nJiYgbmFtZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEF0
dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVm
ZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRGcmFt
ZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lk
IGJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAg
fQorICAgIHZvaWQgYmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpOworICAg
IH0KKyAgICB2b2lkIGJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1
ZSwgZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29sb3IocmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb24odWlu
dDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvbihtb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJH
QiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVx
dWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVu
ZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAgICB2b2lk
IGJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50
MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEp
OworICAgIH0KKyAgICB2b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY2xl
YXIodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFzayk7
CisgICAgfQorICAgIHZvaWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9h
dCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xv
cihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0aChm
bG9hdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7
CisgICAgfQorICAgIHZvaWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhi
b29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jb2xvck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlZCksIHN0
YXRpY19jYXN0PEdDR0xib29sZWFuPihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihi
bHVlKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAgIHZvaWQg
Y29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
b21waWxlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBi
b3JkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworICAg
IH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVidWZmZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVBy
b2dyYW0oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRl
UmVuZGVyYnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgY3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1H
TE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmNyZWF0ZVNoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZGVs
ZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZUJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQg
ZGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTaGFk
ZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVy
KGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBkZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZGVwdGhGdW5jKGZ1bmMpOworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZsYWcpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4oZmxhZykpOworICAgIH0KKyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0
IHpGYXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIp
OworICAgIH0KKyAgICB2b2lkIGRldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBh
cmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSk7
CisgICAgfQorICAgIHZvaWQgZGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRpc2FibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5cyh1
aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAgfQorICAg
IHZvaWQgZHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90
IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0Vs
ZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQp
KTsKKyAgICB9CisgICAgdm9pZCBlbmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5lbmFibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZsdXNoKCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9pZCBmcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQs
IHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50
LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVy
VGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3Qg
dGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRh
cmdldCwgYXJnMywgbGV2ZWwpOworICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50MzJfdCBt
b2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CisgICAgfQor
ICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdldEFj
dGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFy
ZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmli
KHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUsIFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0o
dWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwg
aW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RG
TW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWludDMyX3Qg
YXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihh
cmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAg
IH0KKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgZ2V0U3RyaW5nKHVpbnQzMl90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3RyaW5n
KG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1
ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwg
MTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2
YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2Vy
dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVf
dD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUs
IHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludDY0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGdldFByb2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52KHVp
bnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpBcnJheVJlZmVyZW5jZTxib29sPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBWZWN0b3I8R0NHTGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4o
dmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHZh
bHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxib29s
PihyZWludGVycHJldF9jYXN0PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCBnZXRFcnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXJyb3IoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Z2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9n
cmFtSW5mb0xvZyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyaSh1aW50MzJfdCBhcmcw
LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGFyZzAsIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRT
aGFkZXJJbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVp
bnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiwgaW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6OmFycmF5PEdDR0xpbnQsIDI+IHJh
bmdlIHsgfTsKKyAgICAgICAgR0NHTGludCBwcmVjaXNpb24gPSB7IH07CisgICAgICAgIG1fY29u
dGV4dC0+Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUs
IHJhbmdlLCAmcHJlY2lzaW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90LCAyPihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihyYW5nZS5k
YXRhKCkpLCByYW5nZS5zaXplKCkpLCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdldFNo
YWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJj
ZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlm
b3JtZnYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVT
aXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2
PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2Nv
bnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2
NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAg
ICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBs
b2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxHQ0dMdWludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1
ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxv
Y2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZS5kYXRhKCkp
LCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24odWlu
dDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24oYXJnMCwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgs
IHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9m
ZnNldChpbmRleCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aGludCh0
YXJnZXQsIG1vZGUpOworICAgIH0KKyAgICB2b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzQnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRW5h
YmxlZCh1aW50MzJfdCBjYXAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRW5hYmxlZChjYXApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGlzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+aXNGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rh
dGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dyYW0o
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGlzUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
Ym9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmlzUmVuZGVyYnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0
aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVyKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2hhZGVyKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGlzVGV4dHVyZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4g
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1Rl
eHR1cmUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9p
ZCBsaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5s
aW5rUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBw
bmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9y
ZWkocG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZh
Y3RvciwgZmxvYXQgdW5pdHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZz
ZXQoZmFjdG9yLCB1bml0cyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3Rv
cmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAg
dm9pZCBzYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4oaW52ZXJ0KSk7CisgICAgfQorICAgIHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2hh
ZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIGFyZzEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnNoYWRlclNvdXJjZShhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBzdGVu
Y2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9
CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1
bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAg
IHZvaWQgc3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+c3RlbmNpbE1hc2sobWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0
ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5zdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5j
aWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOworICAg
IH0KKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZh
aWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9
CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUs
IGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJmKHRh
cmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4m
JiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGlu
dDMyX3QgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB4
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtMWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
aW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZihp
bnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT51bmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0y
ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwg
aW50MzJfdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb24s
IHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0yaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTNmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRp
b24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0
YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2koaW50MzJfdCBsb2Nh
dGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtM2l2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4m
JiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZv
cm00ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3Qg
eCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4m
JiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRy
YW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+
KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVzZVByb2dy
YW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShh
cmcwKTsKKyAgICB9CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0LCAxPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmli
MWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48MT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxv
YXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKHVp
bnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0
cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiYmIHZh
bHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBt
YWtlR0NHTFNwYW48Mj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMu
ZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVpbnQzMl90IGluZGV4
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0
cmliM2Z2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiYmIHZh
bHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBt
YWtlR0NHTFNwYW48Mz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMu
ZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZv
aWQgdmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmli
NGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxv
YXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50
ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3Jt
YWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdmlld3BvcnQoaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBi
dWZmZXJEYXRhMCh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdl
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc3RhdGljX2Nh
c3Q8R0NHTHNpemVpcHRyPihhcmcxKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRh
dGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEs
IHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRh
cmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRh
LmRhdGEoKSksIGRhdGEuc2l6ZSgpKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlclN1
YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJE
YXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJf
dCB0eXBlLCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXpl
KSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMxKGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4m
JiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5k
YXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDEodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNl
dCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQw
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBp
bWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1
aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQor
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6
ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7
CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHBy
aW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50
MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50c0lu
c3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0
KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQz
Ml90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBjcmVh
dGVWZXJ0ZXhBcnJheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVWZXJ0ZXhBcnJh
eSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgZGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0
ZXhBcnJheSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qg
d3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1
aW50NjRfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5QnVmZmVyU3ViRGF0
YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ocmVhZE9m
ZnNldCksIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8
R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGNoYXIsIDQ+IGRhdGEoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRh
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAsIGludDMyX3Qg
c3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMy
X3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVp
bnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxpdEZyYW1lYnVmZmVy
KHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwg
bWFzaywgZmlsdGVyKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWws
IGxheWVyKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3Qg
dGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRh
dGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+JiYgYXR0YWNobWVudHMsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZy
YW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
TGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkpLCBhdHRhY2htZW50cy5zaXplKCkpLCB4LCB5LCB3
aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCByZWFkQnVmZmVyKHVpbnQzMl90IHNyYykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMpOworICAgIH0KKyAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdldCwg
bGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQg
dGV4U3RvcmFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIH0KKyAgICB2b2lk
IHRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2Uz
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAg
ICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwg
dHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhl
bHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdl
M0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0K
KyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50
MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VT
aXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNz
ZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNl
dCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBp
bnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRl
cHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3Nl
ZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAg
IH0KKyAgICB2b2lkIGdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5n
JiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5h
bWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3Qg
djAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90
IHYyLCB1aW50MzJfdCB2MykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aShs
b2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWl2KGlu
dDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aXYo
bG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24sIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxv
Y2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
TGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXg0eDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFu
c3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDN4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgp
KSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoaW50
MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwg
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdCwgND4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYkk0aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90
IHosIHVpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0
dWkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiYmIHZhbHVl
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIG1h
a2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVzLmRh
dGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBp
bmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJUG9pbnRl
cihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZz
ZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1
aW50MzJfdCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdSYW5nZUVs
ZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVycyhJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdC
dWZmZXJzKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVm
cy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYo
dWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVy
aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMaW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBjbGVhckJ1ZmZlcnVpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVy
LCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWVz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1
ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFs
dWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZl
cmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50
MzJfdCBzdGVuY2lsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZpKGJ1
ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOworICAgIH0KKyAgICB2b2lkIGNyZWF0
ZVF1ZXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVR
dWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUXVl
cnkocXVlcnkpOworICAgIH0KKyAgICB2b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmlzUXVlcnkocXVlcnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJlZ2luUXVl
cnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBlbmRRdWVy
eSh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5KHRh
cmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnkodGFyZ2V0LCBwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNh
bXBsZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2FtcGxlcigpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRl
U2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVTYW1wbGVyKHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIGlzU2FtcGxlcih1aW50MzJfdCBz
YW1wbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgYmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7CisgICAg
fQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3Qg
cG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQ
YXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFt
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBw
bmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQz
Ml90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQ
YXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90
IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJh
bWV0ZXJpKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVp
bnQzMl90IGZsYWdzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzeW5jIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxh
Z3MpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKSk7CisgICAgfQorICAgIHZvaWQg
aXNTeW5jKHVpbnQ2NF90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU3luYyhyZWludGVycHJl
dF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9
CisgICAgdm9pZCBkZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlbGV0ZVN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGFyZzApKSk7CisgICAgfQorICAgIHZvaWQgY2xpZW50V2FpdFN5bmModWludDY0
X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jbGllbnRXYWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTHVpbnQ2ND4odGltZW91
dCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgd2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGlt
ZW91dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+d2FpdFN5bmMocmVpbnRlcnByZXRfY2Fz
dDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19j
YXN0PEdDR0xpbnQ2ND4odGltZW91dCkpOworICAgIH0KKyAgICB2b2lkIGdldFN5bmNpKHVpbnQ2
NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN5bmNpKHJlaW50
ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVj
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNy
ZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJf
dCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2so
aWQpOworICAgIH0KKyAgICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBp
ZCk7CisgICAgfQorICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmlt
aXRpdmVNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZlZWRi
YWNrKHByaW1pdGl2ZU1vZGUpOworICAgIH0KKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNr
KCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAg
ICB9CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0s
IFZlY3RvcjxTdHJpbmc+JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFy
eWluZ3MsIGJ1ZmZlck1vZGUpOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVl
ZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCk7CisgICAgfQorICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2
b2lkIGJpbmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQz
Ml90IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlckJhc2UodGFy
Z2V0LCBpbmRleCwgYnVmZmVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBv
ZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZm
ZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnNCkpOworICAgIH0KKyAgICB2b2lk
IGdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdW5p
Zm9ybU5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50MzJfdD4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQ+IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9y
bUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZv
cm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4mJiB1bmlmb3JtSW5kaWNlcywg
dWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGludDMyX3Q+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0
aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdl
dFVuaWZvcm1CbG9ja0luZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIHVuaWZvcm1CbG9j
a05hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1
bmlmb3JtQmxvY2tOYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJv
Z3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1C
bG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWlu
dDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVfdD4o
cGFyYW1zU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGludDMyX3QqPihwYXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
QU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJf
dCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50
MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAs
IHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBm
aWx0ZXIpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xP
YmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFy
cmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5kZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1Zl
cnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5pc1ZlcnRleEFycmF5T0VTKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0
ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuYmluZFZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9
CisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJn
MCk7CisgICAgfQorICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBNYXJrZXJF
WFQoYXJnMCk7CisgICAgfQorICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQoKTsKKyAg
ICB9CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3
QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+
KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3Vu
dCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQz
Ml90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwg
aW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8R0NHTHZvaWRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29y
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9jb2NvYS9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2M0MGM5ODVjYjdkMjcy
Mjg2OWE1ZGZmOTY5MTk0NzA3N2FmNDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Y3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIHsKKworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1
YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZpbmFsID0gZGVmYXVsdDsK
KworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0
JiYpPiYmKSBmaW5hbDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluIG92ZXJyaWRlcy4KKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIGZpbmFsOworICAgIHZv
aWQgcHJlc2VudChCdWZmZXIpIGZpbmFsOworICAgIHZvaWQqIGRldGFjaENsaWVudCgpIGZpbmFs
OworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVm
ZmVyIG1fZGlzcGxheUJ1ZmZlcjsKK307CisKK30KKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlm
aWVyKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlv
biwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nl
c3MoYXR0cmlidXRlcywgdGhpcykpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluOjpCdWZmZXIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVjeWNsZUJ1
ZmZlcigpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVzZW50KEJ1ZmZlciBidWZmZXIpCit7
CisgICAgQVNTRVJUKCFtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7CisgICAgbV9kaXNwbGF5QnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpOworfQorCit2b2lkKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hOjpkZXRhY2hDbGllbnQoKQoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGlz
cGxheUJ1ZmZlci5oYW5kbGUsIG51bGxwdHIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RG
OjpNYWNoU2VuZFJpZ2h0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29udGV4
dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXVEZNb3Zl
KG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsK
KyAgICBpZiAoZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgc2VuZFJpZ2h0ID0gZGlzcGxheUJ1ZmZl
ci0+Y3JlYXRlU2VuZFJpZ2h0KCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5k
UmlnaHQpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
YWMvR1BVUHJvY2Vzc01hYy5tbQppbmRleCBiN2JiNjNiMjlhZDgwMjE3MmRmMjdhMTI4OTViYjE5
OThmYTRiNmIwLi4yNGM0MzdjYWFlN2Y4ZjlhOWFmZjkyNzAzZWZjZjlkYTAzMWU0YzQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCkBAIC0zMiw4
ICszMiw4IEBACiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAj
aW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5n
cy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJ
U2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1wb3J0IDx3dGYvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0
LDkgKzQ0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdm9pZCBHUFVQcm9jZXNzOjpp
bml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzJikKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
KyNpZiAwCiAgICAgLy8gSGF2aW5nIGEgd2luZG93IHNlcnZlciBjb25uZWN0aW9uIGluIHRoaXMg
cHJvY2VzcyB3b3VsZCByZXN1bHQgaW4gc3BpbiBsb2dzICg8cmRhcjovL3Byb2JsZW0vMTMyMzkx
MTk+KS4KLSAgICBPU1N0YXR1cyBlcnJvciA9IFNldEFwcGxpY2F0aW9uSXNEYWVtb24odHJ1ZSk7
Ci0gICAgQVNTRVJUX1VOVVNFRChlcnJvciwgZXJyb3IgPT0gbm9FcnIpOworICAgIGF1dG8gcmV0
dmFsID0gQ0dTU2V0RGVueVdpbmRvd1NlcnZlckNvbm5lY3Rpb25zKHRydWUpOworICAgIFJFTEVB
U0VfQVNTRVJUKHJldHZhbCA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAgIENHU1NodXRkb3duU2Vy
dmVyQ29ubmVjdGlvbnMoKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBsYXVuY2hTZXJ2aWNlc0No
ZWNrSW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvY29tLmFw
cGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21h
Yy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KaW5kZXggZGIwNmU1MzRmN2Y1MWQy
ZWJkMDM4MjVmNTgyNDVmODQ5NmY4YjE3OS4uZWQxMDBiMzZlZDZmNDZkNGFhZjYzNTQ0Nzc4ODJh
Yjc5M2ExMWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20u
YXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KQEAgLTIwNyw2ICsyMDcs
NyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5BQVBMLChEaXNwbGF5UGlwZXxPcGVu
Q0xkaXNhYmxlZHxJT0dyYXBoaWNzX0xFUih8X1JlZ1RhZ18xfF9SZWdUYWdfMHxfQnVzeV8yKXxh
bGlhcy1wb2xpY3l8Ym9vdC1kaXNwbGF5fGRpc3BsYXktYWxpYXN8bXV4LXN3aXRjaC1zdGF0ZXxu
ZHJ2LWRldnxwcmltYXJ5LWRpc3BsYXl8c2xvdC1uYW1lKSIpCiAgICAgKGlva2l0LXByb3BlcnR5
LXJlZ2V4ICMiXkFUWSwoY2JpdHN8ZmJfKGxpbmVieXRlc3xvZmZzZXR8c2l6ZSl8aW50cmV2KSIp
CiAgICAgKGlva2l0LXByb3BlcnR5ICJBVFksRGV2aWNlTmFtZSIpIDs7IE5lZWRlZCBieSBNZXRh
bCBjb21waWxlcnMKKyAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxFRklEaXNwbGF5IikKICAgICAo
aW9raXQtcHJvcGVydHkgIkFUWSxGYW1pbHlOYW1lIikgOzsgRGl0dG8KICAgICAoaW9raXQtcHJv
cGVydHkgIkFWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJCYWNrbGlnaHRIYW5k
bGUiKQpAQCAtMjE3LDYgKzIxOCw5IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJDYXBzTG9ja0Rl
bGF5IikKICAgICAoaW9raXQtcHJvcGVydHkgIkNhc2VTZW5zaXRpdmUiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiQ29uZmlnU3RhdGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRFBMYW5lcyIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtCaXQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRFBM
aW5rUmF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXNjcmlwdGlvbiIpCiAgICAgKGlva2l0
LXByb3BlcnR5ICJEZXZlbG9wbWVudCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkRl
dmljZSggQ2hhcmFjdGVyaXN0aWNzfEVxSUQpIikKQEAgLTIyOSwxMCArMjMzLDE3IEBACiAgICAg
KGlva2l0LXByb3BlcnR5ICJGYW1pbHkgSUQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9yY2VT
dXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9ybWF0cyIpCisgICAgKGlva2l0LXBy
b3BlcnR5ICJGcmFtZWJ1ZmZlckVuYWJsZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiRnJhbWVi
dWZmZXJTdGFydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkdQVUNvbmZpZ3VyYXRpb25WYXJp
YWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEQ0NEaXNwbGF5YWJsZSIpCisgICAgKGlv
a2l0LXByb3BlcnR5ICJHUFVEZWJ1Z051bGxDbGllbnRNYXNrIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIkdwdURlYnVnUG9saWN5IikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0NvdW50ZXJC
dW5kbGVOYW1lIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0NvdW50ZXJQbHVnaW5DbGFz
c05hbWUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSEVWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0
LXByb3BlcnR5ICJISURQb2ludGVyQWNjZWxlcmF0aW9uVHlwZSIpCisgICAgKGlva2l0LXByb3Bl
cnR5ICJId0N0eENhY2hlVXBkYXRlIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9B
Y2NlbChEaXNwbGF5UGlwZUNhcGFiaWxpdGllc3xJbmRleHxUeXBlc3xSZXZpc2lvbikiKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JTyhDbGFzc3xNYXRjaENhdGVnb3J5fE5hbWVNYXRj
aCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0F1ZGlvQ29udHJvbChDaGFubmVs
SUR8SUR8U3ViVHlwZXxVc2FnZXxWYWx1ZSkiKQpAQCAtMjgyLDYgKzI5Myw4IEBACiAgICAgKGlv
a2l0LXByb3BlcnR5ICJJT1BhcmVudE1hdGNoIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXgg
IyJeSU9QQ0koKENsYXNzfFByaW1hcnl8UHJvcGVydHl8KU1hdGNofEV4cHJlc3MoQ2FwYWJpbGl0
aWVzfExpbmsoU3RhdHVzfENhcGFiaWxpdGllcykpfE1TSU1vZGV8UmVzb3VyY2VkfFR1bm5lbGxl
ZCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QTUlzUG93ZXJNYW5hZ2VkIikKKyAgICAoaW9r
aXQtcHJvcGVydHkgIklPUGVyc29uYWxpdHlQdWJsaXNoZXIiKQorCiAgICAgKGlva2l0LXByb3Bl
cnR5LXJlZ2V4ICMiXklPUGxhdGZvcm0oU2VyaWFsTnVtYmVyfFVVSUQpIikKICAgICAoaW9raXQt
cHJvcGVydHkgIklPUG93ZXJNYW5hZ2VtZW50IikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUHJv
YmVTY29yZSIpCkBAIC0zMTcsNiArMzMwLDcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIlByb3Rv
Y29sIENoYXJhY3RlcmlzdGljcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJSZW1vdmFibGUiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5SZXNldE9uKExvY2t8VW5sb2NrKU1zIikKKyAg
ICAoaW9raXQtcHJvcGVydHkgIlNXSVBfcHJvcGVydGllcyIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJTYWZlRWplY3RSZXF1ZXN0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2FtcGxlUmF0ZXMi
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2VyaWFsIE51bWJlciIpCkBAIC0zMzgsNiArMzUyLDcg
QEAKICAgICAoaW9raXQtcHJvcGVydHkgImF0dGFjaGVkLWdwdS1jb250cm9sLXBhdGgiKQogICAg
IChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5hdWRpby0oY29kZWMtaW5mb3xkZXZpY2UtbXZhbHVl
fGRldmljZS1udmFsdWV8c2VsZWN0b3IpIikKICAgICAoaW9raXQtcHJvcGVydHkgImF2LXNpZ25h
bC10eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgImJhY2tsaWdodC1QV00tZnJlcSIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJiY2RWZXJzaW9uIikKICAgICAoaW9raXQtcHJvcGVydHktcmVnZXgg
IyJeKGJvYXJkfGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW18dmVuZG9yKS1pZCIpCiAgICAgKGlv
a2l0LXByb3BlcnR5ICJib290LWdhbW1hLXJlc3RvcmVkIikKQEAgLTM1MCw2ICszNjUsMTEgQEAK
ICAgICAoaW9raXQtcHJvcGVydHkgImNvbm5lY3Rvci10eXBlIikKICAgICAoaW9raXQtcHJvcGVy
dHktcmVnZXggIyJeKGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW0tdmVuZG9yfHRvdWNoLXNpemUp
LWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImRldmljZV90eXBlIikKKyAgICAoaW9raXQtcHJv
cGVydHkgImRpc3BsYXktYnBjIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktY29ubmVj
dC1mbGFncyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWxpbmstY29tcG9uZW50LWJp
dHMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1waXhlbC1jb21wb25lbnQtYml0cyIp
CisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXR5cGUiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiZHBtIikKICAgICAoaW9raXQtcHJvcGVydHkgImVycm9yZGIiKSA7OyBOZWVkZWQgZm9yIE9w
ZW5HTCBvbiBvbGRlciBoYXJkd2FyZQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZmlsZXZhdWx0LWlt
YWdlIikgOzsgTmVlZGVkIGJ5IExhdW5jaFNlcnZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAppbmRl
eCBlNmExOGRkYTZlMDkyZmRiMTgwNDQ2ZTRmM2EwODNjZjUzYzI3NjE5Li4zNzkyOGUxYjgzZDRl
NTI0NDUzYThkMjdjYzNiODc5MDFiMjQ5YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFVTRShBVURJT19TRVNTSU9O
KQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQ
VVByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25NZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCmluZGV4IGQ5YmY1MjI3
MmMzNzI5MTU3NWI1YjM5MzI2MmU3NzIxM2I5MzBkZDQuLjhmMDExOWVkZmUxZDZlOTMyNDMwMDVi
MzQ0MTI1YjI0ZWFiOTFlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmgKaW5kZXggNmE1YzY3MjVjYWE5YmRiODY3YWI4NmI4YzU3ZjM2ZGUyYzg5NmRjZi4uYmU3ZjUy
MjBiZTliODVmODY4YTVmODM3ZWZlZDY2ZGRmOTVmMjk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTM5LDEw
ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAot
bmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5jcHAKaW5kZXggNDdmNWQyZjI3MGZhNWRlNGZhZGUxNTE0NDQyMTExNzk0ZWQzNmQyOC4uMmM1
ZTdkZTdkMmU3NTY5NjBhM2YzZWM4NzZjOGI4MjVjNmU0NWI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBh
OThjZmE0YzlmODAyMzE5MDRmOGVmMGVhYTkzNjIyOWFmYTk3NTk4Li5mZWM2NWNmNjJiNjY3NGI4
MzAwYzUwY2Q0MzM0MTVlOTE1MTE0NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIu
aAppbmRleCBkODliODAzZjZhYmY0MWM4ZTllZGRlNDE0Mjc2OTMyODI2ZDFiMzM4Li4wODFlYjMx
ODBkMDIxNjRiNWFhM2Q1NDgwNmY3MmM3ZWRjMGNiMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIu
aApAQCAtMjcsMTUgKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNv
cmUvUG9saWN5Q2hlY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5kZXgg
YWY3YmU1MTJlYWMyZDFhZTY1NGFlMDljYjUyZDk0YjM5YjJjNjA3Ny4uNDk5YmQ2MWMyZjc4MjIy
M2ZhMzhmYzk3YjE4MmZhNmQyYjkzODFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
IAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFTb3VyY2VQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCA1OTY4YzdiYmQxODlj
ZDQ3OWVmNGFlYWI0ZDQ0OTk1MzNmZDNkNjViLi5mZTU0NGQ1NTUxOTFlNTU2ZTJkN2UyMzM5NDc1
YTAyZmMyOWRjZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTM5LDcgKzM5LDYgQEAKIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IDZi
OGJmOGI1N2NjMGM4ZDlkNTQxMWU5NjUyMWI0NWE5NGE4ZTNiMzIuLjk5Y2E2YTQxNGViNTA4Mzkw
YzcyODMzYTY0NTFlNzMwMzk0MjFkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC0yNyw5ICsyNywx
MSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQog
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1
ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0zOCw3ICs0MCw2IEBACiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IDM2MDMxMGI3
ZDEyMWQyODZkOGQxNjFmMTgzYWJkMGU3NDViODM1MzMuLjg0M2JiMDZmN2I1NmM2ZTNjZmJlZTc5
YTdlNDI4MWVmZWU4ZjlhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTI4LDE0ICsyOCwxNSBAQAogI2lm
IFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2Rlcklk
ZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5o
PgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bW0KaW5kZXggZjhhYmMxZjQwNWZjMTQ2OTQ3NWI0ZDkwYmFkM2Q1M2NhMGY4MDE0ZS4uNjFjNDcw
OGFlOTZkYmNhYTU2OTgwOWVlMTk5NWJlODE2YTkxZmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0y
OCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuaAppbmRleCA3ODhjNWYwMGMwMmY0ZjE0OGZlZWNjZDM4ZDEwNjgxOGIwZDdlOTYxLi4zYWI0
ZTRiMWNmMWMxNDEyMzBjMTNlNDU3NmM1ZWQ2ZTZlZmMyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRN
ZW1vcnkuaCIKQEAgLTM2LDcgKzM3LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29h
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ29jb2EubW0KaW5kZXggN2E2MzM2MzQ3YzAwN2U5N2I3M2I1NDM3NzQ5MTY4MzhkNjQwMzdk
YS4uMWFhNTNjYzJmYjc3YmFmOWUzMjY1MDcyMTA4MDlmZDc2Y2ZiYmYyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q29jb2EubW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1w
b3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24u
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5k
ZXggZjZlZDgxMWY1MzQyZmU0ODU1NTE3NmY4OWQ1MTQ1NzU2MmM2NjU4NS4uMGJjZDU2NzNjOTM0
NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJjMjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9t
UHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgpAQCAtMzksMTAgKzQwLDYgQEAgT0JKQ19DTEFTUyBO
U1VSTFNlc3Npb25Db25maWd1cmF0aW9uOwogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sOwog
I2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0gLy8gbmFt
ZXNwYWNlIElQQwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMTEyLDQgKzEwOSwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmluZGV4IGRkYmU0ZWVkZDQ0MWRmODdjNTVh
ZDMzMGYwNDJjY2RjZmFkZmI5MGIuLjY1MWZmMjU0ZjkwNWMxNmE5MGNiNDgyYzk3NzNkNGFjNzQy
OTRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZE1vbml0b3Iu
aCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDM4YWYzNTA4MDc0
NjQyOTNiOTVmZmFmMDU5ZmRlYzM2OTAxNzcyNzQuLjkzZjAzYTgyNTVmMWFlNzE3MzgzYzAwMjkw
YTI0ZjkxY2E3YzY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNb25pdG9yLmgiCkBA
IC00NCwxMCArNDUsNiBAQCBPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7CiBPQkpDX0NMQVNTIE5TVVJM
U2Vzc2lvbkRvd25sb2FkVGFzazsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4uNzI2
ZGQ5OTBiYWZkNDM5NGI1YWZjMDMyYTFjZjIwZjE4NDljNDlhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
RG93bmxvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMz
ZTc4OWUyMjQ2YzA1YjAxNjVmMWM3MjY3OGZhNTAuLjk4MGEwNmY3ODM5ZGJkNWU5ZjlkNTA0NTQw
OWEzM2Q3N2IxYzAzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRh
VGFzay5oIgpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNDQ5YjEzZDhlMDdiMmNkMDQyYzRi
YTM2MzZhYjc5M2QzN2IxYzNmNC4uYzc3ODg4MTFmMDMyZDU4ZjhiNTI3NzM2ZTFkMjI3ODQxMGY5
MTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5o
CmluZGV4IDMxOTY0MTkwZDE0MWQ1NDlkYTBiYWYyZGM4YmYyOTdiNGU1ODFlODkuLjA0MzRiZjg4
MDlhN2ViM2VjYzE4ZThmNjUwY2MwMjc4YWU2ZWI1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvVGltZXIuaD4KQEAgLTQwLDcgKzQxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5k
ZXggNWI0ODljYzUzOGY3YzA3MTUxMDEwNmM1OGY1YzA5NGVjOWE4ZTFiOC4uNDhjODgzYmZjMGZj
N2Q1MDFjOGE0YTRlNzY4NGNjYzMzZTM4YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgog
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCmluZGV4
IDUyZWMzOTI2OTAyMThlZGU2NjhkNTVlNjM4ZDhlMTc1MDJmZDZlZTUuLjczNDI5YTAyNzkwNmI0
MTZhMzhjMGM2YjM5NDZhMGRiOWZiMjA2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CkBAIC0zNyw3ICszOCw2IEBACiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaAppbmRleCBkMzNjYmZmMTA4OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi5k
MzdkNzgwNjk4M2JiYTU0N2NhMGY5MjM1ZWI0YmY2YjczMTU2NWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5o
PgpAQCAtNDMsNyArNDQsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVj
b2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAppbmRleCBkYjU3OTVkZDIxN2Y0NWFkNWY2N2UzMGI3
OTFmOTJlMjc2YzAyOTg2Li45NjFlNDY0NTliZTc3MTc3ZTI2MDVlN2Q4NjUyYWRhODAyMDk3YjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApAQCAt
MzEsOSArMzEsNiBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAjZWxzZQogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dl
YlNvY2tldFRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9X
ZWJTb2NrZXRUYXNrQ29jb2EuaAppbmRleCBkYWM2OTM1MDdlYjNlZmNlYTZkMTA5NDgwMWJjMDFi
MzZmZTI2MzlkLi5lNjgyNmU0N2U4Mzk1OTQwMjhhZjhmNGFlZDIzOTJiNGIwNWQyZjVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0
VGFza0NvY29hLmgKQEAgLTI3LDE1ICsyNywxMiBAQAogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05f
V0VCU09DS0VUKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIE5TVVJM
U2Vzc2lvbldlYlNvY2tldFRhc2s7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNs
YXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCmluZGV4IDg1NTM0ODc0NDA0
Y2UyYmFhNDRhZTY1NjU0N2QzNzIyNTMzMmVhYjguLjkwYmM0MDliZmZiNzBhMGVlOWU3MzU4YjM4
Njc1OTdkMjlmMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
ZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIk5ldHdvcmtTb2Nr
ZXRDaGFubmVsLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291
cC5jcHAKaW5kZXggNDVmYzY2OWQ3NjZhNzYxYzVkNzczZGM5NWYwNTQxYTM4ZTM2ZjhlMy4uYTNl
NzAxNGI1ZDhlYzA5NzM4ZmZhN2Q1NjY0NTQ1MDEwZjA1MzQwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
VGFza1NvdXAuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBlNDIxYjllMWM3MTMxODQz
NGY2NDg3ZjVmY2I1YTZhODdiZDczOTE5Li4wODg5MjM5NTlmZTQ2MGZmMmJiYTRjOGMwODM5OTgw
NjU3YmYzNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAtMjUsMTQgKzI1LDExIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGUwMGEwY2NkZmE1ODc1YzAyOGM1
MDUyMzExNDE3MjhlZTk1YjQzOTIuLmUzOGJjMWM2MGFmNmRjZjAzNjk2NWFhNzhhYWRiZDZkOGQ0
YjYyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNs
dWRlIDx1dGlsaXR5PgpAQCAtNTMsNiArNTQsNDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIgewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQs
IEV4dGVudD4+IHsKKyAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5j
ZTxULCBFeHRlbnQ+OworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAg
aWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVm
ZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25v
ZihUKSk7CisgICAgfQorICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAg
ICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKEV4dGVudCAqIHNp
emVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIEV4dGVudCk7CisgICAgfQorfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwg
YXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5UmVmZXJlbmNl
VHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJl
bmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBlbmNvZGVyLmVuY29kZShz
dGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKSk7CisgICAgICAgIGlm
ICghYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXpl
b2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZl
cmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHVpbnQ2
NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICBy
ZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEg
PSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemUgKiBzaXplb2YoVCksIGFs
aWdub2YoVCkpOworICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKKyAgICB9Cit9
OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8
VD4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0
aW9uU2V0PFQ+JiBvcHRpb25TZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FycmF5UmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzMmJiNDU3YTViODg1ZjNkNTY2ODdlNzlm
MTVjM2EyNjcxYmU2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FycmF5UmVmZXJlbmNlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBJUEMgeworCitpbmxpbmUgY29uc3RleHByIHNpemVfdCBhcnJheVJlZmVyZW5j
ZUR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGFycmF5UmVmZXJlbmNlRHluYW1p
Y0V4dGVudD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4gewor
cHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZl
cmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRhdGEp
CisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlIDxz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgp
KQorICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6ZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9CisKKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIFZlY3RvcjxUPiB2ZWN0b3Io
KSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgY29uc3QgVCogbV9kYXRhIHsgfTsKKyAgICBzaXplX3QgbV9zaXpl
IHsgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PgorY2xhc3Mg
QXJyYXlSZWZlcmVuY2UgeworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0
OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAg
ICAgIDogbV9kYXRhKGRhdGEpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNp
emUgPT0gRXh0ZW50KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4m
IHZlY3RvcikKKyAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKKyAgICB7CisgICAgICAg
IEFTU0VSVCh2ZWN0b3Iuc2l6ZSgpID09IEV4dGVudCk7CisgICAgfQorCisgICAgY29uc3RleHBy
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFFeHRlbnQ7IH0KKworICAgIGNvbnN0ZXhw
ciBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEV4dGVudDsgfQorCisgICAgY29uc3QgVCog
ZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgVmVj
dG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0Owor
ICAgICAgICBpZiAoIWlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRh
LCBFeHRlbnQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBjb25zdCBUKiBtX2RhdGEgeyB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5PgorQXJyYXlSZWZlcmVuY2UoY29uc3QgV1RGOjpWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHk+JikgLT4gQXJyYXlSZWZlcmVuY2U8VD47CisKK30gLy8gbmFtZXNwYWNlIElQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGVjM2QxNGFlOGYz
ZWMyNDcwNTQ3NjNjYWVlOTA5Y2MyYzg3NWY1ZDguLmJiZDdhYmNiNGNkYzYwNDM4MmIxMDY1ZTMz
MjM4NDQ5YzZhYzU5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
QEAgLTIyNywxMCArMjI3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtDdXJyZW50bHlEaXNw
YXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwogCiAgICAgdm9pZCBwb3N0Q29ubmVjdGlvbkRpZENs
b3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBs
ZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PFNlbmRP
cHRpb24+ID0geyB9KTsgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOyAvLyBUaHJlYWQtc2FmZS4KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBT
ZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0
aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCisgICAgLy8gU3luYyBzZW5kZXJzIHNo
b3VsZCBjaGVjayB0aGUgU2VuZFN5bmNSZXN1bHQgZm9yIHRydWUvZmFsc2UgaW4gY2FzZSB0aGV5
IG5lZWQgdG8ga25vdyBpZiB0aGUgcmVzdWx0IHdhcyByZWFsbHkgcmVjZWl2ZWQuCisgICAgLy8g
U3luYyBzZW5kZXJzIHNob3VsZCBob2xkIG9uIHRvIHRoZSBTZW5kU3luY1Jlc3VsdCBpbiBjYXNl
IHRoZXkgcmVmZXJlbmNlIHRoZSBjb250ZW50cyBvZiB0aGUgcmVwbHkgdmlhIERhdGFSZWZlcmVy
ZW5jZSAvIEFycmF5UmVmZXJlbmNlLgorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgp
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1h
aW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5k
RGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVv
dXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7IC8vIE1h
aW4gdGhyZWFkIG9ubHkuCiAgICAgCiAgICAgLy8gVGhyZWFkLXNhZmUuCkBAIC0yNDksNyArMjUx
LDcgQEAgcHVibGljOgogCiAgICAgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRT
eW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2Vu
ZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50
aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAg
ICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRp
b25zKTsKICAgICB9CkBAIC01NTEsNyArNTUzLDcgQEAgdm9pZCBtb3ZlVHVwbGUoc3RkOjp0dXBs
ZTxBLi4uPiYmIGEsIHN0ZDo6dHVwbGU8Qi4uLj4mIGIpCiAgICAgVHVwbGVNb3ZlcjxzaXplb2Yu
Li4oQSksIHN0ZDo6dHVwbGU8QS4uLj4sIHN0ZDo6dHVwbGU8Qi4uLj4+Ojptb3ZlKFdURk1vdmUo
YSksIGIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRT
eW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9u
U2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NF
UlQoVDo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKICAgICBSRUxFQVNFX0FTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CkBAIC01NzAsMTUgKzU3MiwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmCiAgICAgLy8gTm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVwbHku
CiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVz
c2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBzZW5kU3luY09w
dGlvbnMpOwogICAgIGlmICghcmVwbHlEZWNvZGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBEZWNvZGUgdGhlIHJlcGx5LgogICAgIE9wdGlv
bmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3VtZW50czsKICAgICAqcmVw
bHlEZWNvZGVyID4+IHJlcGx5QXJndW1lbnRzOwogICAgIGlmICghcmVwbHlBcmd1bWVudHMpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBtb3ZlVHVwbGUo
V1RGTW92ZSgqcmVwbHlBcmd1bWVudHMpLCByZXBseSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIHJlcGx5RGVjb2RlcjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25u
ZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0
aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVu
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNWZkYTdiZWQyZmU4YzQwNDliNTU4NzA3OWZk
MWUxNjM1NGY0ZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNs
dWRlICJFbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSBJUEMgewotCi12b2lkIERhdGFSZWZlcmVuY2U6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIuZW5jb2RlVmFy
aWFibGVMZW5ndGhCeXRlQXJyYXkoKnRoaXMpOwotfQotCi1ib29sIERhdGFSZWZlcmVuY2U6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewot
ICAgIHJldHVybiBkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFSZWZl
cmVuY2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RhdGFSZWZlcmVuY2UuaAppbmRleCAzNDUwYzMxYjczZGRiNmFhNWVkY2UyYWY4MDAyOTg4
N2M3OThlMjA1Li5kYmIzZDY5MjdmMzQxYzVhYTkzZmMxMDczY2IwNzU2ZTNjYmEzN2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw1NCArMjUs
MTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSAiQXJyYXlSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERlY29kZXI7
Ci1jbGFzcyBFbmNvZGVyOwotICAgIAotY2xhc3MgRGF0YVJlZmVyZW5jZSB7Ci1wdWJsaWM6Ci0g
ICAgRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIERhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEpCi0gICAg
ICAgICwgbV9zaXplKHNpemUpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KLSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0IFZlY3Rvcjx1aW50OF90LCBp
bmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKLSAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkK
LSAgICAgICAgLCBtX3NpemUodmVjdG9yLnNpemUoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQotCi0gICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3QgCi0gICAgeyAKLSAgICAgICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICByZXR1cm4gbV9kYXRhOyAKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1
bHQ7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBtX3NpemUpOwotCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIERhdGFS
ZWZlcmVuY2UmKTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCB1aW50OF90KiBtX2RhdGEgeyBudWxs
cHRyIH07Ci0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLX07Cit1c2luZyBEYXRhUmVmZXJlbmNl
ID0gQXJyYXlSZWZlcmVuY2U8dWludDhfdCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsK
IAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CmluZGV4IDc4YTQ2MzhlYjczMDViZmQxOTEwODcwNjhkMzBiY2RiOGRmZTgyYWUuLjJjYjc5Yjcz
MWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCkBAIC0xODYsMjAgKzE4NiwxNSBAQCBib29sIERlY29kZXI6OmRlY29k
ZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdu
bWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERlY29kZXI6OmRlY29kZVZhcmlhYmxl
TGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCitjb25zdCB1aW50
OF90KiBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplX3Qgc2l6ZSwgc2l6
ZV90IGFsaWdubWVudCkKIHsKLSAgICB1aW50NjRfdCBzaXplOwotICAgIGlmICghZGVjb2RlKHNp
emUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKCFhbGlnbkJ1ZmZlclBv
c2l0aW9uKDEsIHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFhbGlnbkJ1
ZmZlclBvc2l0aW9uKGFsaWdubWVudCwgc2l6ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IG1fYnVmZmVyUG9zOwogICAgIG1fYnVmZmVyUG9z
ICs9IHNpemU7CiAKLSAgICBkYXRhUmVmZXJlbmNlID0gRGF0YVJlZmVyZW5jZShkYXRhLCBzaXpl
KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAogYm9vbCBEZWNvZGVy
OjpyZW1vdmVBdHRhY2htZW50KEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggYjcyZGQ4YWNlMjc3M2RiMzU1OWUzNjZkZDk1MjRmMjM0
MWU1NWUwNi4uMzQ0Y2U2ODgyZmM5MDk4NGIyZmE1N2JmOWM0OGI5NjUwZTBmZjc0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtNDAsNyArNDAsNiBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEltcG9ydGFuY2VBc3NlcnRp
b247CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNzgsOCArNzcs
OSBAQCBwdWJsaWM6CiAKICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExl
bmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIAotICAg
IC8vIFRoZSBkYXRhIGluIHRoZSBkYXRhIHJlZmVyZW5jZSBoZXJlIHdpbGwgb25seSBiZSB2YWxp
ZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgotICAgIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFS
ZWZlcmVuY2UmKTsKKyAgICAvLyBUaGUgZGF0YSBpbiB0aGUgcmV0dXJuZWQgcG9pbnRlciBoZXJl
IHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29k
ZXIgb2JqZWN0LgorICAgIC8vIFJldHVybnMgbnVsbHB0ciBvbiBmYWlsdXJlLgorICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBjb25zdCB1aW50OF90KiBkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShz
aXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgog
ICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShUJiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggZmQ0MDkwNzc0YjJiYzJhNzYyOWI5YzAyZGM1
NTRjNGNkYzk4ZjVjYi4uZTgzYTNlNGFmZjQyYTU3NTUwNWRjOGYwNzMxN2ExYzFhYzE5ZGVhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKKyNpbmNsdWRlICJB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0xNDEsNyArMTQyLDcgQEAg
dm9pZCBFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gb3Jp
Z2luYWwpCiAKICAgICBvcmlnaW5hbC0+c2V0U2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTo6WWVz
KTsKIAotICAgIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2Uob3Jp
Z2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKSk7CisgICAgKnRoaXMgPDwg
RGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJTaXplKCkp
OwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gb3JpZ2luYWwtPnJlbGVh
c2VBdHRhY2htZW50cygpOwogICAgIHJlc2VydmUoYXR0YWNobWVudHMuc2l6ZSgpKTsKQEAgLTIx
NiwxMiArMjE3LDYgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGkKICAgICBtZW1jcHkoYnVmZmVy
LCBkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVWYXJpYWJsZUxlbmd0aEJ5
dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewotICAgIGVuY29k
ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGF0YVJlZmVyZW5jZS5zaXplKCkpKTsKLSAgICBlbmNv
ZGVGaXhlZExlbmd0aERhdGEoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6
ZSgpLCAxKTsKLX0KLQogdm9pZCBFbmNvZGVyOjphZGRBdHRhY2htZW50KEF0dGFjaG1lbnQmJiBh
dHRhY2htZW50KQogewogICAgIG1fYXR0YWNobWVudHMuYXBwZW5kKFdURk1vdmUoYXR0YWNobWVu
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IDBlY2Y1NDFmNzc4NTg1
MzZmMWZjZmE4MzZiNzZmMjQ4MmU0YzlhMTEuLmVhNjE5NjdiZTFlYmNiZDhiNmZiYmFhOGI4NWFm
NDE4ZThkNTBjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAgLTM2LDcg
KzM2LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBlbnVt
IGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDog
dWludDE2X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkgOiB1aW50OF90OwpAQCAtNjIsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cmFwRm9y
VGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCiAgICAgdm9pZCBlbmNvZGVGaXhl
ZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50
KTsKLSAgICB2b2lkIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFSZWZl
cmVuY2UmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0
ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZV90PFQ+Pj46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KICAgICB2b2lkIGVuY29kZShUJiYgdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaAppbmRleCA3ZmQxODNhNTZhZTk4YjA2NjQ1ZmY3NTE0OGFjMjk4M2M1
MmU0YWViLi40MTI5ZDRlMmI0OWQ1YzhmYzQxYTJkNjU0YWRjZDg5ZTg2YzYzN2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtOTYsNyArOTcsNiBAQCBzdHJ1Y3QgQ29k
aW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RpbmdUeXBlPGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7CiAgICAgdXNpbmcgVHlwZSA9IERhdGFS
ZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
U2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5k
ZXggNDZlMjFkOGQ5MzZmMmQ4YjUxNjdiMjQ5Zjg4MTExNmZmZWI3ZDRiOS4uNzc0NjFkNTU1Yjcy
OTJjMjBlYmY1MTRhMzAyZDFkYzZlNzc3MDExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNTQsOSArNTQsMTAgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBz
ZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlv
bjo6U2VuZFN5bmNSZXN1bHQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wg
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMg
dGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNv
bmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cyA9IHsgfSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2Fn
ZSBpcyBub3Qgc3luYyEiKTsKIApAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0
eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRz
IHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRT
eW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBBU1NFUlQo
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSk7CiAKQEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBz
ZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRl
bnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZp
bml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkK
KyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVw
bHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3luYzxVPihz
dGQ6OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA3YTNjYjMzODc2
MzZkY2FmY2VhY2VhZDkxYjg2MzliN2JhNzYzNmM2Li41MDBmODM5ZGZhYWU5Mjk3ZjRkYzYzZGM2
NjMwNTg3N2IyMmRmMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNp
bmNsdWRlICJFbmNvZGVyLmgiCkBAIC00OCw3ICs0OSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ29w
eTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiBPcHRpb25hbDxTaGFyZWRCdWZmZXJD
b3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoZGF0YSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAppbmRleCAyZjcyODVhYzBi
NGJkNmRlMTFkZmViOWZlMzI4ZjAxYzk5OTk1MGEwLi5lOTZkZmIxZmJmODkxY2Q0YTBjNzc0ZTg1
YzkwNzg3NThhNmZlODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIK
IAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBu
YW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmluZ1JlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZl
cmVuY2UuY3BwCmluZGV4IDg1MmVmNDNlMDA4NjMxYzlmYWZhODIzMGM5MTljMTdhOWQ0YTI5YjYu
LjIxNjExMzljMzAxNGYwZWFmYjNkYzQ3Yzg1ZGE0MTkwYTJiYTA2NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogCisj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXgg
OGIzNzQwZjRiMTAxYWQ5MGY1MGVkNTdjODUwYjkwMzBmY2M0MzBjMi4uNGIyMGM4NWFjNTM2MjM2
NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAK
IAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0jaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk5QT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJOUFJlbW90ZU9i
amVjdE1hcC5oIgogI2luY2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IGFk
NGZjZDlkOGNjZjQyZjEyZWU0ODhlMDEzNDZjNjE5YTcwMWI4ZDIuLmM3YTcwNTNjYmQyNmQyMDQ1
NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAi
UGx1Z2luQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzcs
MTAgKzM4LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGNhMGFlMjg0MTFhODNk
ZTRiZjNmZTA4YjAxMmU0MDU1NDhkOGI1NzMuLjg5ZmI4YWJhZjlhZWNlMDdjNjM0NzBkYTNkYjgz
Yzg4MzI2ZGQzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMjAzLDYgKzIwMyw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfbmFtZXNwYWNl
KG5hbWVzcGFjZSwga2luZF9hbmRfdHlwZXMpOgogCiBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVf
Zm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVybiBmcm96ZW5zZXQoWworICAgICAgICAnSVBD
OjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVk
aWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC0yMTUsNiArMjE2LDcgQEAgZGVmIHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRv
Y3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXInLAorICAgICAgICAnV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJywKICAgICAgICAgJ1dlYkNvcmU6Okxp
YldlYlJUQ1NvY2tldElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXll
cklkZW50aWZpZXInLApAQCAtMjQzLDYgKzI0NSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9i
ZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkRpc3BsYXlMaW5rT2JzZXJ2
ZXJJRCcsCiAgICAgICAgICdXZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAgICAnV2ViS2l0OjpH
ZW9sb2NhdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUn
LAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2Vi
S2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEJywKQEAgLTUzMCw2ICs1MzMsNyBAQCBkZWYgY2xh
c3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAgICAnT3B0aW9uU2V0
JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVh
ZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnVmVjdG9yJzogeydoZWFk
ZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFkZXJzJzogWyc8
dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5o
IiddfSwKKyAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRlcnMnOiBbJyJBcnJh
eVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29k
ZXJzLmgiJ119LAogICAgIH0KIAogICAgIG1hdGNoID0gcmUubWF0Y2goJyg/UDx0ZW1wbGF0ZV9u
YW1lPi4rPyk8KD9QPHBhcmFtZXRlcl9zdHJpbmc+LispPicsIHRlbXBsYXRlX3N0cmluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCA2MTM0M2JkOTQxMDZiNmU3ODlmODNi
YzI1ZGU3OWY3YTYwNDA5M2NjLi5jNzgyMzE2ZjMwNTdhM2NhZjlkM2UyMDc3YzgxMzI1NTNlNjk3
NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogCisjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rl
ci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggN2JhMjA3
YWJiMGFjY2M4YTU3MGY1YzY2M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdkMDNmYWZlMDM5NTg3OTUy
YTYzNzhkMWE5YzhmZjJmNzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4
aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nl
c3MuaApAQCAtODQsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBzZXRB
cHBsaWNhdGlvbklzRGFlbW9uKCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsK
ICAgICB2b2lkIHNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91Z2hwdXRRT1MpOwogI2Vu
ZGlmCkBAIC0xODQsNCArMTgzLDMgQEAgc3RydWN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDljMjZkYjRl
OWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIuLmU0OWY2YzRjY2QzMDk3YjZmOTc3N2M3
YWJlNDY5MWM4ZmEyMDVjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMjc5LDEyICsyNzksMTIgQEAgYXV0byBBcmd1bWVudENvZGVy
PERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4g
T3B0aW8KICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiBuYW1lOwogICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRp
ZmllciksIFdURk1vdmUoKm5hbWUpIH19OwogfQogCkBAIC00OTUsMTIgKzQ5NSwxMiBAQCBib29s
IEFyZ3VtZW50Q29kZXI8TGluZWFyVGltaW5nRnVuY3Rpb24+OjpkZWNvZGUoRGVjb2RlciYsIExp
bmVhclRpbWluZ0Z1bmN0aW9uJgogdm9pZCBBcmd1bWVudENvZGVyPEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24pCiB7CiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5j
dGlvbi50eXBlKCk7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1bmN0aW9uLngxKCk7
CiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi55MSgpOwogICAgIGVuY29kZXIgPDwgdGlt
aW5nRnVuY3Rpb24ueDIoKTsKICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1bmN0aW9uLnkyKCk7Ci0g
ICAgCisKICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1bmN0aW9uLnRpbWluZ0Z1bmN0aW9uUHJlc2V0
KCk7CiB9CiAKQEAgLTUzNiw3ICs1MzYsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDdWJpY0Jlegogdm9p
ZCBBcmd1bWVudENvZGVyPFN0ZXBzVGltaW5nRnVuY3Rpb24+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24pCiB7CiAgICAg
ZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi50eXBlKCk7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8
IHRpbWluZ0Z1bmN0aW9uLm51bWJlck9mU3RlcHMoKTsKICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1
bmN0aW9uLnN0ZXBQb3NpdGlvbigpOwogfQpAQCAtNTYxLDcgKzU2MSw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxTdGVwc1RpbWluZ0Z1bmN0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN0
ZXBzVGltaW5nRnVuCiB2b2lkIEFyZ3VtZW50Q29kZXI8U3ByaW5nVGltaW5nRnVuY3Rpb24+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mIHRpbWlu
Z0Z1bmN0aW9uKQogewogICAgIGVuY29kZXIgPDwgdGltaW5nRnVuY3Rpb24udHlwZSgpOwotICAg
IAorCiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi5tYXNzKCk7CiAgICAgZW5jb2RlciA8
PCB0aW1pbmdGdW5jdGlvbi5zdGlmZm5lc3MoKTsKICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1bmN0
aW9uLmRhbXBpbmcoKTsKQEAgLTY0NCwxMiArNjQ0LDEyIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxG
bG9hdEJveEV4dGVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGbG9hdEJveEV4
dGVuCiB7CiAgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdEJveEV4dGVudD46OmVuY29kZShl
bmNvZGVyLCBmbG9hdEJveEV4dGVudCk7CiB9Ci0gICAgCisKIGJvb2wgQXJndW1lbnRDb2RlcjxG
bG9hdEJveEV4dGVudD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGbG9hdEJveEV4dGVudCYg
ZmxvYXRCb3hFeHRlbnQpCiB7CiAgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8RmxvYXRC
b3hFeHRlbnQ+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRCb3hFeHRlbnQpOwogfQotICAgIAorCiAK
IHZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFNpemU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgRmxvYXRTaXplJiBmbG9hdFNpemUpCiB7CkBAIC04MDQsMTIgKzgwNCwxMiBAQCBPcHRp
b25hbDxSZWNlbnRTZWFyY2g+IEFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAgICAgaWYgKCFzdHJpbmcp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICBPcHRpb25hbDxXYWxs
VGltZT4gdGltZTsKICAgICBkZWNvZGVyID4+IHRpbWU7CiAgICAgaWYgKCF0aW1lKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnN0
cmluZyksIFdURk1vdmUoKnRpbWUpIH19OwogfQogCkBAIC05MTgsNyArOTE4LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IEF1dGgKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBjaGFsbGVuZ2UpCi17ICAgIAorewogICAgIFByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9u
U3BhY2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm90ZWN0aW9uU3BhY2UpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05MjcsNyArOTI3LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF1dGhlbnRp
Y2EKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3Bvc2VkQ3JlZGVudGlhbCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50OyAgICAK
KyAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHByZXZpb3VzRmFpbHVyZUNvdW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05
MzgsNyArOTM4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF1dGhlbnRpY2EKICAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXJyb3IpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCisKICAgICBjaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShw
cm90ZWN0aW9uU3BhY2UsIHByb3Bvc2VkQ3JlZGVudGlhbCwgcHJldmlvdXNGYWlsdXJlQ291bnQs
IGZhaWx1cmVSZXNwb25zZSwgZXJyb3IpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTc4LDcg
Kzk3OCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgUHJvdGVjdGlvblNwYWNlJiBzCiAgICAgU3RyaW5nIHJlYWxtOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVhbG0pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBhdXRoZW50aWNhdGlv
blNjaGVtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF1dGhlbnRpY2F0aW9uU2NoZW1lKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ3JlZGVudGlhbCYg
Y3JlZGVudGlhbCkKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwZXJzaXN0ZW5jZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKKwogICAgIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKHVzZXIsIHBhc3N3b3JkLCBwZXJz
aXN0ZW5jZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlSW1hZ2UoRGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPEltYWdlPiYgaW1hZwogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKKwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGhhbmRsZSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTExMjksNyArMTEyOSw3IEBAIE9wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFy
Z3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvCiAgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgT3B0aW9uYWw8UmVm
PEZvbnQ+PiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogdm9pZCBBcmd1bWVudENvZGVyPEN1cnNvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBDdXJzb3ImIGN1cnNvcikKIHsKICAgICBlbmNvZGVyIDw8IGN1cnNvci50eXBlKCk7Ci0g
ICAgICAgIAorCiAgICAgaWYgKGN1cnNvci50eXBlKCkgIT0gQ3Vyc29yOjpDdXN0b20pCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTU1OCw3ICsxNTU4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERh
dGFiYXNlRGV0YWlscz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEYXRhYmFzZURl
dGEKICAgICBlbmNvZGVyIDw8IGRldGFpbHMuY3JlYXRpb25UaW1lKCk7CiAgICAgZW5jb2RlciA8
PCBkZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUoKTsKIH0KLSAgICAKKwogYm9vbCBBcmd1bWVudENv
ZGVyPERhdGFiYXNlRGV0YWlscz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhYmFzZURl
dGFpbHMmIGRldGFpbHMpCiB7CiAgICAgU3RyaW5nIG5hbWU7CkBAIC0xODkzLDcgKzE4OTMsNyBA
QCBib29sIEFyZ3VtZW50Q29kZXI8UmF3RmlsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBS
YXdGaWxlJiBmaWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9
Ci0gICAgCisKIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGE+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU2hhcmVEYXRhJiBzZXR0aW5ncykKIHsKICAgICBlbmNvZGVyIDw8IHNl
dHRpbmdzLnRpdGxlOwpAQCAtMTkxMSw3ICsxOTExLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNo
YXJlRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURhdGEmIHNldHRpbmdzKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCisKIHZvaWQg
QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNldHRpbmdzKQogewogICAgIGVu
Y29kZXIgPDwgc2V0dGluZ3Muc2hhcmVEYXRhOwpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgT3B0aW9u
YWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46
OmRlY29kZShEZWNvZGVyJgogICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAor
CiAgICAgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOwogICAgIGRlY29kZXIgPj4gcmFu
Z2U7CiAgICAgaWYgKCFyYW5nZSkKQEAgLTIxMjQsNyArMjEyNCw3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBGCiAgICAgRmxvYXRTaXplIGFsaWdubWVudE9mZnNldDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGFsaWdubWVudE9mZnNldCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
KwogICAgIFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VzIGFuY2hvckVkZ2VzOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYW5jaG9yRWRnZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Rml4ZWRQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRgogCiAgICAgdmll
d3BvcnRDb25zdHJhaW50cy5zZXRWaWV3cG9ydFJlY3RBdExhc3RMYXlvdXQodmlld3BvcnRSZWN0
QXRMYXN0TGF5b3V0KTsKICAgICB2aWV3cG9ydENvbnN0cmFpbnRzLnNldExheWVyUG9zaXRpb25B
dExhc3RMYXlvdXQobGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCk7Ci0gICAgCisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMjE5MiwxMSArMjE5MiwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8
U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsCiAgICAgRmxvYXRTaXplIGFsaWdubWVudE9mZnNldDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGFsaWdubWVudE9mZnNldCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAg
IFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VzIGFuY2hvckVkZ2VzOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYW5jaG9yRWRnZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICBmbG9hdCBsZWZ0T2Zmc2V0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGVmdE9m
ZnNldCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyMTIsNyArMjIxMiw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwKICAgICBmbG9hdCBib3R0b21PZmZzZXQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShib3R0b21PZmZzZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisK
ICAgICBGbG9hdFJlY3QgY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yMjI4LDcgKzIyMjgsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8U3RpY2t5
UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsCiAg
ICAgRmxvYXRTaXplIHN0aWNreU9mZnNldEF0TGFzdExheW91dDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0aWNreU9mZnNldEF0TGFzdExheW91dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKKwogICAgIEZsb2F0UG9pbnQgbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8U3Rp
Y2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
CiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRSaWdodE9mZnNldChyaWdodE9mZnNldCk7CiAg
ICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRUb3BPZmZzZXQodG9wT2Zmc2V0KTsKICAgICB2aWV3
cG9ydENvbnN0cmFpbnRzLnNldEJvdHRvbU9mZnNldChib3R0b21PZmZzZXQpOwotICAgIAorCiAg
ICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRDb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KGNv
bnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQpOwogICAgIHZpZXdwb3J0Q29uc3RyYWludHMuc2V0
Q29udGFpbmluZ0Jsb2NrUmVjdChjb250YWluaW5nQmxvY2tSZWN0KTsKICAgICB2aWV3cG9ydENv
bnN0cmFpbnRzLnNldFN0aWNreUJveFJlY3Qoc3RpY2t5Qm94UmVjdCk7CkBAIC0yMzYyLDcgKzIz
NjIsNyBAQCBib29sIGRlY29kZUZpbHRlck9wZXJhdGlvbihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiYgZmlsdGVyKQogICAgICAgICBmaWx0ZXIgPSBQYXNzdGhyb3Vn
aEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICAgICAgICAgIAorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtMjYwMSw5ICsyNjAxLDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPEV4Y2VwdGlv
bkRldGFpbHM+OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBFeGNlcHRpb25EZXQKIHZv
aWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3Rp
Y3MpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluOwotICAg
IAorCiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmxhc3RTZWVuLnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKTsKLSAgICAKKwogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBlbmNvZGVy
IDw8IHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uOwogICAgIGVuY29kZXIgPDwgc3RhdGlz
dGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCk7CkBAIC0yNjE5LDcgKzI2MTksNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDbwogCiAg
ICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWluczsKLSAgICAKKwogICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCiAg
ICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnM7
CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87
CkBAIC0yNjM0LDkgKzI2MzQsOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDbwogICAgIGVuY29k
ZXIgPDwgc3RhdGlzdGljcy5mb250c0ZhaWxlZFRvTG9hZDsKICAgICBlbmNvZGVyIDw8IHN0YXRp
c3RpY3MuZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQ7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNz
LnRvcEZyYW1lUmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXM7Ci0gICAgCisK
ICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MuY2FudmFzQWN0aXZpdHlSZWNvcmQ7Ci0gICAgCisK
ICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MubmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQ7CiAg
ICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkOwogI2VuZGlm
CkBAIC0yNjU1LDcgKzI2NTUsNyBAQCBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBB
cmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUoRAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobGFzdFNlZW5UaW1lQXNEb3VibGUpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MubGFzdFNlZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMobGFzdFNlZW5UaW1lQXNEb3VibGUpOwotICAgIAorCiAgICAgLy8gVXNlciBpbnRlcmFj
dGlvbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rp
b24pKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMjcyNiwyNiArMjcyNiwyNiBA
QCBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcmd1bWVudENvZGVyPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUoRAogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0
aXN0aWNzLmlzVmVyeVByZXZhbGVudFJlc291cmNlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5kYXRhUmVj
b3Jkc1JlbW92ZWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAjaWYg
RU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRp
c3RpY3MuZm9udHNGYWlsZWRUb0xvYWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIAorCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmZvbnRzU3VjY2Vzc2Z1
bGx5TG9hZGVkKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKKwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1do
aWNoQWNjZXNzZWRXZWJBUElzKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAK
KwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5jYW52YXNBY3Rpdml0eVJlY29y
ZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MubmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICNlbmRpZgpAQCAtMjkxMCwxMiArMjkxMCwxMiBAQCBPcHRpb25hbDxNZWRpYVNl
bGVjdGlvbk9wdGlvbj4gQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj46OmRlY29k
ZShEZWNvZAogICAgIGRlY29kZXIgPj4gZGlzcGxheU5hbWU7CiAgICAgaWYgKCFkaXNwbGF5TmFt
ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKKwogICAgIE9wdGlvbmFsPE1l
ZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAg
ICBpZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICBy
ZXR1cm4ge3sgV1RGTW92ZSgqZGlzcGxheU5hbWUpLCBXVEZNb3ZlKCp0eXBlKSB9fTsKIH0KIApA
QCAtMjk1OCw3ICsyOTU4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb24KICAgICBmb3IgKGF1
dG8mIG9yaWdpbiA6IG9yaWdpbnMpCiAgICAgICAgIGVuY29kZXIgPDwgKm9yaWdpbjsKIH0KLSAg
ICAKKwogYm9vbCBBcmd1bWVudENvZGVyPFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+Pj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4m
IG9yaWdpbnMpCiB7CiAgICAgdWludDY0X3QgZGF0YVNpemU7CkBAIC0zMjIxLDQgKzMyMjEsODIg
QEAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBXVEZNb3ZlKCpyZXN1bHQp
IH07CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKK3ZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbHBoYTsK
KyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFudGlhbGlhczsKKyAgICBl
bmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOworICAgIGVuY29kZXIgPDwg
YXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc2hhcmVSZXNv
dXJjZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wyOworICAgIGVuY29kZXIg
PDwgYXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRl
dmljZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclBy
ZWZlcmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy54
ckNvbXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0
cmlidXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3RlbmNpbCkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBy
ZXNlcnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZl
YXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcykp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShh
dHRyaWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGV2
aWNlUGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2UpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLm5hbWU7Cisg
ICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZv
LnNpemU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJ
bmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZv
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFj
dGl2ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5zaXplKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5mbzsKK30KKworI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1NWUyMTFlMTdjNGJlZGVmMTcw
NWQ2Li4xZGFlOTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2ZTlmYzYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzEsNiArNzEsMTMg
QEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNl
IFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIxMCwxMCBAQCBzdHJ1Y3Qg
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0aCA9IFZhcmlhbnQ8U3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczsKKyNl
bmRpZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0IENhY2hlSW5mbzsKIHN0
cnVjdCBSZWNvcmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogfTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mKTsKKyAgICBzdGF0
aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3Bh
Y2UgV1RGIHsKQEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewogCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZT4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsKK307CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUwODYzNjVkYmY3N2ZhOThlNDFj
MWM3NGEzZTdlMjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdiMDQ4YTNkZWM2Y2Y4NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxk
UmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyRE9N
SW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNz
OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlcldlYkdMSW5H
UFVQcm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlEZWNvZGVy
OwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwogI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAgT3B0aW9uYWw8V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQbGF5TWVk
aWFJbkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJM
RShXRUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVy
V2ViR0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlm
CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVj
b2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZDkxZTQ2MDM4ZjMwOWI1
MTMwYmZkZTU4ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1YmY0ZjkyY2YwNmZlNWUxMTIw
NWE0YjUxMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZh
bHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxzZSB9Owog
ICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNl
IH07CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9Owog
ICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9B
cmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29k
ZXJzQ0YuY3BwCmluZGV4IDliZDhhODE3NTQ5ZjU4ZmUzODNkNzI1ZGE2NjNmM2JjNTRjYTBkNzQu
Ljc3ZTliNGQ1Y2M3NTJmYmNkYjZiNjVmOWFkYzI2MDE5NTZjYTE0N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgogCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCmluZGV4
IDFkODRlMmZlMjY4ZjM0NjBlYjI5NzVjNDJiYTk1ZDE0ZjFkMjM1Y2YuLmZhMjY4ZDU4NGEwZmM4
ZGY4N2EyMWZhNDU2MDc3YjhjNWQ0MmI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtODEsNyArODEs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IENlcnRpZmljYXRlSQogICAgIC8vIEVuY29kZSBzdGFydGluZyBmcm9t
IHRoZSByb290IGNlcnRpZmljYXRlLgogICAgIGZvciAoc2l6ZV90IGkgPSBjZXJ0aWZpY2F0ZXNE
YXRhTGlzdC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgR0J5dGVBcnJheSogY2VydGlm
aWNhdGUgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdFtpIC0gMV0uZ2V0KCk7Ci0gICAgICAgIGVuY29k
ZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoSVBDOjpEYXRhUmVmZXJlbmNlKGNlcnRp
ZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKSk7CisgICAgICAgIGVuY29kZXIgPDwgSVBD
OjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKTsKICAg
ICB9CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihjZXJ0aWZpY2F0ZUlu
Zm8udGxzRXJyb3JzKCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxD
ZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2VydGlmaWNhdGVJbmZv
JiBjCiAgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlOwogICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBjaGFpbkxlbmd0aDsgaSsrKSB7CiAgICAgICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7Ci0gICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2Up
KQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgR0J5dGVBcnJheSogY2VydGlm
aWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyhjZXJ0aWZpY2F0ZURhdGFSZWZlcmVu
Y2Uuc2l6ZSgpKTsKQEAgLTI3Nyw0ICsyNzcsMyBAQCBPcHRpb25hbDxTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlVmFsdWU+ICBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdQog
I2VuZGlmCiAKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDkxN2YwMWJlMWM5ZjhjYWEyYWJmN2YwZjg5
MGY4OTVhM2YyZWY4Ni4uZjgzYTRjYWI5NWNhOGYwMTVjODk4NjVkN2ZmOTMwYWY1MWU1ZjFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCitHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyLmNwcApAQCAtMTM3LDcgKzEzOCw2IEBAIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgQG5v
LXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIEBuby11bmlmeQogUGxhdGZv
cm0vSVBDL0F0dGFjaG1lbnQuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
Y3BwIEBuby11bmlmeQotUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwIEBuby11bmlmeQog
UGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0VuY29kZXIu
Y3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAgQG5vLXVuaWZ5CkBA
IC01NjgsNiArNTY4LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNw
cAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNr
UHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTY5MywzICs2OTUsNiBAQCBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKwor
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDRlYThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJkNmY5NzMuLjcxZmZjNWYyZTA0
ZGVkMDVkZThmYWVhMmUwOWEwNDkyNjNhNjkxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTU2LDYgKzU2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAKIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKIAog
R1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2VydmljZUVudHJ5UG9p
bnQubW0KK0dQVVByb2Nlc3MvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3MvbWFj
L0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlclByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNv
bkxvYWRpbmdDbGllbnQuaAppbmRleCAyZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4Mzkz
NmIwZDNkLi43MzdiNjI1ODE5ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApA
QCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApp
bmRleCA0ZjM5OGI1MzBmNjA4NTc1Yzk2N2I4M2M3NGZhMmY0MzI4ZjZjZTNiLi44Y2E5N2U2ZTU5
N2JkNzExMGEwZDczOGUwYzRhN2M4NTYwM2E4YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSA9IDA7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7
IH0pOworICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3lu
Y1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkU3RhcnRQcm9j
ZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwgQyYmLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7
IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9j
ZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBib29s
IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJ
ZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9u
U2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5k
U3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBs
eSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAx
X3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0p
CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RG
TW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNP
cHRpb25zKTsKICAgICB9CkBAIC0xNjMsMTIgKzE2NCwxMiBAQCBib29sIEF1eGlsaWFyeVByb2Nl
c3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9u
U2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKLWJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpTZW5k
U3luY1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0
eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRz
IHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMp
CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsK
IAogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiB7IH07CiAKICAgICBUcmFjZVNjb3BlIHNjb3BlKFN5bmNNZXNzYWdlU3RhcnQsIFN5
bmNNZXNzYWdlRW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRo
b3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDgyM2MyMDJhODU2YTAxMzZkZDllYTc1OWYwZWNkZWJh
NDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhmNGZiNGY4NzM0ZDdiZmQ2MDhkMjAzODgwNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgK
QEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVm
ZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3ViRnJhbWVTT0F1dGhv
cml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIE5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25T
ZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2FkU3RhdGU6Ok9ic2VydmVyIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCmluZGV4
IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZiYmJhNDJmYzkwY2VjMzU3N2YuLjEyOGEzOTc3ZTYzZWU0
ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM1LDEwICszNiw2IEBACiBPQkpDX0NMQVNT
IFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCmluZGV4IGM0YzcxODc0YTEwZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQzZmE5MmIuLjlk
YjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVkNjViNTdlZDBjODAxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgog
I2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAsMTAgKzgxLDYgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1l
dGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwog
Y2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRkNDVmMTJlZGUzNGEwZjc4Y2EwYTYuLjI0OGU1M2EwODNk
MTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVkYWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBUElTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAi
QVBJVXNlclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJv
eHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDEyOWEzNDBm
MDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1NmQzY2NjYjIuLmE0ZDhkN2NkODA0ZTY1NjBkYWJmZGU2
MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAi
Q29udGVudFdvcmxkU2hhcmVkLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC00OCwx
MCArNDksNiBAQCBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiB9CiAK
LW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMzYzUyZDE2MGM0OWUwMmFiMmUyNDc4NGNkY2Qz
ZTFkMjVkYmU2YWMuLmJjZDAyN2IxNzM4MWJhODhhNWMzMWI5NzgwMDFiZTZjODI1N2VmNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTgsNyArNTgsNiBA
QAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHku
aCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFQcm94eS5oIgpAQCAtNzkyNyw2ICs3OTI2LDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgPSBwcmVmZXJl
bmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFy
YW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQ
VVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQ
bGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JNZWRp
YUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcGFyYW1ldGVycy5zaG91bGRSZW5k
ZXJXZWJHTEluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvcldlYkdM
RW5hYmxlZCgpOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29k
ZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxFKFZQOSkg
JiYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29k
ZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkgJiYgKCFXZWJDb3JlOjpzeXN0
ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0RlY29kZXJFbmFibGVkT25CYXR0
ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2NDI0NDZm
OWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3MTFmOTFiMmU1Li40MzdhYjc1MGIzNWFiMTYzYjJhNTgw
YWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJD
b250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1l
bnVDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJE
b3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKICNpbmNsdWRl
ICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIwMyw3ICsyMDQsNiBAQCBlbnVtIGNsYXNzIEluc3BlY3Rv
clRhcmdldFR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiBjbGFz
cyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1Y2U2NWU5ZDJkNTY1YjNmMTI1ZjM0NTdhMjU2ZmIzOWM5
ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMyZTZhMTk5NzdkYjYxYmFiNjEzMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMxLDEwICszMSw2
IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGQ0NDJiNjJiNTIyNTg3ZjkwZmE2ODlkNTZi
MjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2ODhhMjY4MjE5NDFmZjdhNDE4ZjRkZjVhOTc1YmExN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM4LDEw
ICszOCw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwogfQogCi1uYW1lc3Bh
Y2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGNjMDYzZjY4
ZDAxYmQ1ZDdkNDljNTU5YjE2OTY5MTg1M2ZlYmRjMy4uYjcwMDJmNDE1ODZmZDRlZjg4NzQwNTll
NzM2OWJkYjIxZTBiOWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC03MDEsNyArNzAxLDYgQEAKIAkJMkQ5MkE3N0IyMTJCNkE3MTAw
RjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENv
ZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5
NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0Qy
MTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5l
Y3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVy
ZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07CiAJCTJE
OTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBE
ZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVuY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJE
OUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MTIxMkI2
QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAvKiBN
ZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtMTMwNiw2ICsxMzA1LDcgQEAKIAkJN0FG
QkQzNjMyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjIy
MUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyB9
OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5j
eVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OworCQk3
QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZC
QyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAg
LyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTcz
QjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyog
V0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMz
QzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtMjcyMyw3ICsy
NzIzLDYgQEAKIAkJMUFDNUZGQzExNzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRy
aWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblByb2Nlc3NB
dHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1Mzc5MTgzQTlG
REEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlTG9hZFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFSZWZlcmVuY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNC
MTUgLyogRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
YXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFBMUIz
MzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9u
RGlzYWJsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBI
YW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00Mzg5LDYgKzQzODgsMTcgQEAKIAkJN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDsgcGF0aCA9IENsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0
aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRp
bHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJl
ZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5j
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4RTM0NDI1NzdBQzM3MDA5RjFE
ODMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2QTI1
NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVu
Y3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
RnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcy
NjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY4MCwxMSArNjY5MCwxMSBAQAogCQkJ
CTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJCQkJMUEz
RDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVG
RDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3QjFEQjI2
NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VFOTY2QTEx
MkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIxMTJGQUY1
NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0QxMDA1OEMx
NUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThDMTVBIC8q
IENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJl
ZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZl
cmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAg
Ki8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKQEAgLTgz
NTYsMTEgKzgzNjYsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2Eg
Ki8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RX
cml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMx
IC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAw
MDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJ
CTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3
NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5MDQxNjUy
NTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovLAor
CQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1
RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
ICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODM3NSw5ICs4MzkwLDE0IEBACiAJ
CTU1MDY0MEExMjQwNzFBMjkwMEFBRTA0NSAvKiBncmFwaGljcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0I0OEUzNDMyNTc3QUJGODAwOUYxRDgzIC8q
IGNvY29hICovLAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3Bs
YXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8q
IFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3QjkwNDE2OTI1NEFGRUE3MDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAorCQkJCTdCOTA0MTZBMjU0
QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovLAorCQkJCTdCOTA0
MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
biAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTRE
MkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUw
NDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2
MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKQEAgLTg3NzUsNiArODc5
NSwxNCBAQAogCQkJbmFtZSA9IENsYXNzaWZpZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk3QjQ4RTM0MzI1NzdBQkY4MDA5RjFEODMgLyogY29jb2EgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdCNDhFMzQ0MjU3N0FDMzcwMDlG
MUQ4MyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLywKKwkJCSk7CisJCQlw
YXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3QzZFNzBG
ODE4QjJENDdFMDBGMjRFMkUgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtMTEyMDUsNiArMTEyMzMsNyBAQAogCQkJCTFBRUZEMkY3MTFEMTgw
N0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjBD
NEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVu
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3lu
Y1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2MzRGMjM0RjdDNjQwMEZGQTg2NCAv
KiBBc3luY1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRTk2NkQxMTJGQUY1
NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTMyNzQsNyArMTMz
MDMsNiBAQAogCQkJCTJEOTJBNzg1MjEyQjZBQjEwMEY0OTNGRCAvKiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBF
MzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQg
LyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyRDkyQTc3RTIxMkI2QTcxMDBG
NDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIx
MkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OURBQTM4
QzI0Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gaW4gU291cmNl
cyAqLywKIAkJCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNv
ZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZjkyZGE2YTQ3
ZjdlMjRmMzgzOTlhYTM2OThhMjEyOTBkMzYxZDRhNi4uYzlkYzY4MmI4NzU0OWI4MjUwZGIyMmIy
YTFjZTIxNTU1MDAwY2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzYsMTAgKzM2LDYgQEAK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBQYXltZW50Q29u
dGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaAppbmRleCAyYzBkZjViOWY1NDk2ODQ3ZWQ2NjkxMGJmMmYzOWIyY2RjNjBjYTAy
Li41YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5OTg4NzRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0z
NSwxMCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUyMTJjNjEyNjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisj
aW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmI3Yjll
YWMxODkwOThmMzU4NWMxYTRjNzQyYzA1ODlmMTM2MjhkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCisjaW5j
bHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3ND
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoYXR0cmlidXRlcykpOworfQor
CitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCisgICAgOiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKK3sKKyAgICBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBt
ZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKK30KKworUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQoreworICAgIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1h
cCgpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMp
OworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVhc2VH
cmFwaGljc0NvbnRleHRHTChtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIHBsYXRmb3JtU3dhcENoYWluKCkucmVjeWNsZUJ1ZmZlcigp
OworI2VuZGlmCit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCk7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBtX2N1
cnJlbnRXaWR0aCA9IHdpZHRoOworICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKK3sKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQ7CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlz
cGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNw
bGF5OjpSZXBseShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29s
b3JTcGFjZVJlZigpKTsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikgeworICAgICAgICBhdXRvJiBz
YyA9IHBsYXRmb3JtU3dhcENoYWluKCk7CisgICAgICAgIHNjLnJlY3ljbGVCdWZmZXIoKTsKKyAg
ICAgICAgc2MucHJlc2VudCh7IFdURk1vdmUoZGlzcGxheUJ1ZmZlciksIG51bGxwdHIgfSk7Cisg
ICAgfQorI2Vsc2UKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyNlbmRpZgorICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbiksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJWE1FOiBD
dXJyZW50bHkgbm90IGltcGxlbWVudGVkIGJlY2F1c2UgaXQncyBub3QgY2xlYXIgdGhpcyBpcyB0
aGUgcmlnaHQgd2F5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5
MzQ5CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChTdHJpbmcmJiBhdmFpbGFi
bGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQoreworICAgIGlmICht
X2RpZEluaXRpYWxpemUpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6YXRpb24gdGltZWQgb3V0IGJl
Zm9yZSwgc28gbG9zZSB0aGUgY29udGV4dCBub3cuCisgICAgICAgIHdhc0xvc3QoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpbml0aWFsaXplKGF2YWlsYWJsZUV4dGVuc2lvbnMsIHJl
cXVlc3RlZEV4dGVuc2lvbnMpOworICAgIG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCgpCit7CisgICAgZm9yIChh
dXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5m
b3JjZUNvbnRleHRMb3N0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FzQ2hhbmdlZCgpCit7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3Io
bV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZp
Y2F0aW9uKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFVu
dGlsSW5pdGlhbGl6ZWQoKQoreworICAgIGlmIChtX2RpZEluaXRpYWxpemUpCisgICAgICAgIHJl
dHVybjsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cisg
ICAgaWYgKGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkPihtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQorICAgICAgICByZXR1cm47CisgICAgLy8gVGltZWQg
b3V0LCBzbyByZXBvcnQgaW5pdGlhbGl6ZWQgd2l0aCBkdW1teSBkYXRhLiBXZSBzaG91bGQgbG9z
ZSB0aGUgY29udGV4dC4KKyAgICB3YXNDcmVhdGVkKCIiLCAiIik7CisgICAgLy8gRklYTUU6IE5l
ZWQgdG8gbWFyayB0aGUgY29udGV4dCBhcyBsb3N0LCBidXQgaXQncyBub3Qgc2FmZSB0byBmb3Jj
ZSBsb3N0IGluIHRoaXMgY2FsbCBzdGFjay4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YTNhYWEwYzE4Y2E3MGIzYWU5NjYxNzA2MDFmZDcxOWQ1OTQxOTU0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKQEAgLTAsMCArMSw0MTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCisKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgor
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFdlYiBwcm9jZXNzIHNpZGUg
aW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgaW50ZXJmYWNlLiBUaGUgaW1wbGVt
ZW50YXRpb24KKy8vIGNvbnZlcnRzIHRoZSBpbnRlcmZhY2UgdG8gYSBzZXF1ZW5jZSBvZiBJUEMg
bWVzc2FnZXMgYW5kIHNlbmRzIHRoZSBtZXNzYWdlcyB0bworLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgaW4gR1BVIHByb2Nlc3MuCisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBn
ZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCitj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KKyAg
ICAsIHB1YmxpYyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAg
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVz
c2FnZVNlbmRlciBvdmVycmlkZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBv
dmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KSBmaW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgdXNpbmcg
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsKKyAg
ICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGZp
bmFsOworICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9p
ZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkg
ZmluYWw7CisKKyAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlv
bi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisgICAg
dm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7CisgICAgdm9pZCBzeW50aGVz
aXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVu
dW0gdGV4dHVyZSkgZmluYWw7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgZmluYWw7CisgICAgdm9pZCBiaW5k
QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29u
c3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZEZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2
b2lkIGJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJl
ZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBm
aW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAg
dm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9k
ZUFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dM
ZW51bSBkZmFjdG9yKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVt
IHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0
QWxwaGEpIGZpbmFsOworICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVu
dW0gdGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5h
bDsKKyAgICB2b2lkIGNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4s
IEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjbGVh
ckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdD
R0xpbnQgcykgZmluYWw7CisgICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dM
Ym9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZpbmFs
OworICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgY29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZpbmFsOworICAgIHZvaWQg
Y29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVCdWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUZyYW1lYnVm
ZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQcm9ncmFtKCkgZmluYWw7
CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVSZW5kZXJidWZmZXIoKSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRleHR1cmUoKSBmaW5hbDsKKyAgICB2b2lkIGN1bGxGYWNl
KEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKSBmaW5hbDsKKyAg
ICB2b2lkIGRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRo
UmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKSBmaW5hbDsKKyAgICB2b2lk
IGRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJn
MSkgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9p
ZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZv
aWQgZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZv
aWQgZW5hYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2goKSBmaW5hbDsK
KyAgICB2b2lkIGZsdXNoKCkgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1
ZmZlcnRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NH
TGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwpIGZp
bmFsOworICAgIHZvaWQgZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQg
Z2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2
ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJ
bmZvJiBhcmcyKSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7Cisg
ICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0
IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTdHJp
bmcoR0NHTGVudW0gbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdl
cnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBH
Q0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50
NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOwor
ICAgIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBnZXRFcnJvcigp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBmaW5h
bDsKKyAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTaGFkZXJpKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRT
aGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBnZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lz
aW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikg
ZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1m
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdD
R0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUp
IGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CisgICAg
R0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBT
dHJpbmcmIG5hbWUpIGZpbmFsOworICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGhpbnQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBp
c0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlz
RW5hYmxlZChHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRnJhbWVidWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1Byb2dy
YW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1JlbmRl
cmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlz
U2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNU
ZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5lV2lkdGgo
R0NHTGZsb2F0IGFyZzApIGZpbmFsOworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm1HTE9i
amVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZh
Y3RvciwgR0NHTGZsb2F0IHVuaXRzKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdD
R0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CisgICAgdm9pZCBzY2lz
c29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsOworICAgIHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwg
Y29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5j
LCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVu
Y1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dM
dWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spIGZp
bmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWlu
dCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51
bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJh
dGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVt
IHpwYXNzKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFt
ZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJm
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB4LCBHQ0dMaW50IHkpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0z
ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgs
IEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
NGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdXNlUHJvZ3Jh
bShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFt
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihH
Q0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmli
MWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpIGZpbmFsOworICAg
IHZvaWQgdmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZh
bHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4
LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdD
R0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHZpZXdw
b3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVz
YWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAg
IHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lk
IHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBm
aW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZp
bmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVh
dGVWZXJ0ZXhBcnJheSgpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRP
ZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0cikgZmluYWw7CisgICAg
dm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZl
cihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2
b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IGxheWVyKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykgZmluYWw7CisgICAg
dm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihH
Q0dMZW51bSBzcmMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZv
aWQgdGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2
ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNv
cHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
TGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYWdEYXRh
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
LCBHQ0dMdWludCB2MSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEs
IEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
NHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGko
R0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQg
dykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQg
eiwgR0NHTHVpbnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFy
dCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykg
ZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7CisgICAg
dm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1
ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVw
dGgsIEdDR0xpbnQgc3RlbmNpbCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVR
dWVyeSgpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVy
eSkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5
KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkg
ZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRm
b3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxh
dGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRTYW1wbGVyKEdD
R0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmlu
YWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CisgICAgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxk
IGZsYWdzKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIEdDR0xl
bnVtIGNsaWVudFdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NH
THVpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKKyAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jIGFyZzAs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0U3luY2koR0NHTHN5bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBs
YXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lk
IGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAg
IEdDR0xib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmlu
YWw7CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2so
R0NHTGVudW0gcHJpbWl0aXZlTW9kZSkgZmluYWw7CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVk
YmFjaygpIGZpbmFsOworICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVu
dW0gYnVmZmVyTW9kZSkgZmluYWw7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYg
YXJnMikgZmluYWw7CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7Cisg
ICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1
ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVj
dCBidWZmZXIpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZv
cm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHVuaWZvcm1OYW1lcykgZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZv
cm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5p
Zm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0Jp
bmRpbmcpIGZpbmFsOworICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGlu
dCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NH
TGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwg
R0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCByZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGlu
c2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9pZCBw
dXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBv
cEdyb3VwTWFya2VyRVhUKCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NH
THZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
ZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lk
KiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAg
dm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZp
bmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNl
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNl
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKKyAgICB2
b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQg
aW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2
YWwpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7
CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBh
cmFtKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRR
dWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykg
ZmluYWw7CisgICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNj
cmlwdC4KKworcHJvdGVjdGVkOgorICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXND
cmVhdGVkKFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4
dGVuc2lvbnMpOworICAgIHZvaWQgd2FzTG9zdCgpOworICAgIHZvaWQgd2FzQ2hhbmdlZCgpOwor
CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNl
IH07CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9
OworCisvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMu
IFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCitzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xlbnVtLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2Vy
dChzaXplb2YoR0NHTGJvb2xlYW4pID09IHNpemVvZihib29sKSk7CitzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZV92PEdDR0xiaXRmaWVsZCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lX3Y8R0NHTGJ5dGUsIGludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWVfdjxHQ0dMdWJ5dGUsIHVpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
R0NHTHNob3J0LCBpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1
c2hvcnQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xpbnQs
IGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNpemVpLCBpbnQz
Ml90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1aW50LCB1aW50MzJfdD4p
Oworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMZmxvYXQsIGZsb2F0Pik7CitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xoYWxmZmxvYXQsIHVpbnQxNl90Pik7CitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xjbGFtcGYsIGZsb2F0Pik7CitzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x2b2lkLCB2b2lkPik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZV92PFBsYXRmb3JtR0xPYmplY3QsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNp
emVvZihHQ0dMY2hhcikgPT0gc2l6ZW9mKHVpbnQ4X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KEdDR0xpbnQ2NCkgPT0gc2l6ZW9mKGludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0x1aW50NjQpID09IHNpemVvZih1aW50NjRfdCkpOworLy8gR0NHTHN5bmMgYW5kIEdDR0wqcHRy
IHR5cGVzIGFyZSBwb2ludGVycy4gT24gc29tZSBwbGF0Zm9ybXMsIHRoZXkgYXJlIDMyLWJpdC4K
Ky8vIEN1cnJlbnRseSB3ZSBoYXJkLWNvZGUgaXQgYnkgdXNpbmcgPD0sIGFuZCBhc3N1bWUgdGhh
dCB3ZSBkbyBub3QgdHJhbnNmZXIgYXJyYXlzIG9mIHRoZSB0eXBlcy4KK3N0YXRpY19hc3NlcnQo
c2l6ZW9mKEdDR0xpbnRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChz
aXplb2YoR0NHTHNpemVpcHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQo
c2l6ZW9mKEdDR0x2b2lkcHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQo
c2l6ZW9mKEdDR0xzeW5jKSA8PSBzaXplb2YodWludDY0X3QpICYmIHNpemVvZihHQ0dMc3luYykg
PT0gc2l6ZW9mKGludHB0cl90KSk7CisvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdw
dXAtd2ViZ2wgc2NyaXB0LgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDU3NGI3OWU0YTg4NjdkODQyZGY5ZTIxNWZmOGVlNGQ0NjIzYWZjMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisjIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCittZXNzYWdlcyAtPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRl
ZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9u
cykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2FzQ2hhbmdlZCgpOworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNDFhM2Q5MWQwOWQ1Yzc2NjNl
Mjc1NGVkMGFmOWNiMzJiMWQwYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmls
ZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFO
R0xFKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5bnRoZXNpemVHTEVycm9y
KGVycm9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlVGV4dHVy
ZSh0ZXh0dXJlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAs
IEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRl
eCwgbmFtZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kQnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
RnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRGcmFtZWJ1ZmZl
cih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENvbG9yKEdD
R0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFt
cGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVh
dGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1
bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3Ip
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dM
ZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jU2VwYXJh
dGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1czo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDbGVhcihtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQ29sb3Io
R0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNs
YW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyRGVwdGgoZGVwdGgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xl
YXJTdGVuY2lsKEdDR0xpbnQgcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q2xlYXJTdGVuY2lsKHMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKEdD
R0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xi
b29sZWFuIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb2xvck1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4ocmVkKSwgc3RhdGljX2Nhc3Q8Ym9vbD4o
Z3JlZW4pLCBzdGF0aWNfY2FzdDxib29sPihibHVlKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYWxwaGEp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21waWxlU2hh
ZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVj
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIoKQoreworICAgIHVp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlRnJh
bWVidWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXIo
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0oKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZv
cm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZm
ZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApCit7CisgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
VGV4dHVyZSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkN1bGxGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlQnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVsZXRlQnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVs
ZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVGcmFtZWJ1ZmZlcihhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVQcm9ncmFtKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlUmVuZGVyYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVsZXRlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVGV4dHVy
ZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0
aEZ1bmMoR0NHTGVudW0gZnVuYykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKEdD
R0xib29sZWFuIGZsYWcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlcHRoTWFzayhzdGF0aWNfY2FzdDxib29sPihmbGFnKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwg
ekZhciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRpc2FibGUoR0NHTGVudW0gY2FwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Vs
ZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NH
TGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5hYmxlKGNhcCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmluaXNoKCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmluaXNoKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpmbHVzaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkZsdXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFj
aG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1
ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xl
bnVtIHRleHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczLCBHQ0dMaW50IGxldmVsKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRl
eHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyb250RmFjZShtb2RlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdlbmVyYXRlTWlwbWFwKEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2VuZXJhdGVNaXBtYXAodGFyZ2V0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRB
Y3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0o
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJn
MikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRl
eCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybTo6
UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRy
aWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dM
aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTdHJpbmco
R0NHTGVudW0gbmFtZSkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmcobmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQorewor
ICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRG
bG9hdHYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEZsb2F0djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZh
bHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0
KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50
ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQoreworICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVn
ZXJ2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRJbnRlZ2Vydjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZh
bHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMy
X3QpKTsKKyAgICAKK30KKworR0NHTGludDY0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQ2NF90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZWdlcjY0KHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRJbnRlZ2VyNjQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZh
bHVlKTsKK30KKworR0NHTGludDY0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldElu
dGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KQoreworICAgIGludDY0X3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xpbnQ2ND4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVu
dW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pKHByb2dyYW0s
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVh
bj4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPiB2YWx1ZVJlcGx5Owor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQor
ICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNp
emUgKiBzaXplb2YoYm9vbCkpOworICAgIAorfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRFcnJvcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRF
cnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVycm9yOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbmZv
TG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQ
cm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0xlbnVtIHBuYW1lKQor
eworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpKGFyZzAsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRT
aGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTaGFkZXJJbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNoYWRlckluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48
R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikKK3sKKyAgICBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlUmVwbHk7CisgICAgaW50MzJfdCBwcmVjaXNpb25S
ZXBseSA9IHsgfTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBl
LCBwcmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJhbmdlUmVwbHksIHByZWNpc2lvblJlcGx5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0
KSB7CisgICAgICAgIG1lbWNweShyYW5nZS5kYXRhLCByYW5nZVJlcGx5LmRhdGEoKSwgcmFuZ2Uu
YnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgIGlmIChwcmVjaXNpb24pCisgICAg
ICAgICAgICAqcHJlY2lzaW9uID0gcHJlY2lzaW9uUmVwbHk7CisgICAgfQorfQorCitTdHJpbmcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3VyY2UoYXJn
MCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwg
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRl
cmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmkodGFy
Z2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFy
YW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1m
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAg
ICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBz
aXplb2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm1pdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVl
LmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3Qp
KTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlm
b3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTHVpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtdWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwg
dmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YodWludDMyX3QpKTsKKyAg
ICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3Jt
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb246OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHNpemVpcHRyIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoaW5kZXgsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+
KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpo
aW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SGludCh0YXJnZXQsIG1vZGUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29s
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNCdWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0
dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojppc0VuYWJsZWQoR0NHTGVudW0gY2FwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0VuYWJs
ZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0VuYWJsZWQ6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZl
cihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVy
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFtKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFtKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xi
b29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUmVuZGVyYnVmZmVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXIo
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXI6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
CitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVyKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVyOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xl
YW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJlKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6bGluZVdpZHRoKEdDR0xmbG9hdCBhcmcwKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5lV2lkdGgoYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0p
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBpeGVsU3Rv
cmVpKHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KEdDR0xmbG9h
dCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdl
KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVDb3ZlcmFn
ZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lz
c29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNjaXNz
b3IoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFkZXJTb3VyY2UoUGxh
dGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIGFyZzEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJjZShhcmcwLCBhcmcxKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBH
Q0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwg
R0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2sobWFzayksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNr
U2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3AoR0NHTGVudW0g
ZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNz
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xl
bnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwg
ZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJmKHRhcmdldCwg
cG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBw
YXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0xZihsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0
YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMy
X3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGlu
dCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMmkobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYu
ZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZihsb2NhdGlvbiwg
eCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMaW50IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRp
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M2Z2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVl
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZh
bHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFs
dWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0oUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVc2VQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9n
cmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZihpbmRleCwg
eCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMu
ZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZihH
Q0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwg
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMu
ZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZihH
Q0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
M2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Z2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2Z2KGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwg
R0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZh
bHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1h
bGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJQb2ludGVyKGlu
ZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxib29sPihub3JtYWxpemVkKSwgc3RyaWRlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydChH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4
LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NHTGVudW0gdXNhZ2UpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGEwKHRhcmdldCwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xl
bnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCdWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSwgdXNh
Z2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMCh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwOjpSZXBseShkYXRhUmVwbHkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisg
ICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAq
IHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdl
MkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4
ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDAodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXpl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJl
c3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFn
ZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2Vk
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWQo
bW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBwcmltY291
bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwg
R0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvciksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCit7CisgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
aW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXkoYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51
bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zm
c2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YTo6UmVwbHkoZGF0YVJlcGx5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQor
ICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUg
KiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBH
Q0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkw
LCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVu
dW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZ
MCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZm
ZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0
Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xT
cGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSksIHgsIHksIHdpZHRoLCBo
ZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0
LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlMkQo
dGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1
YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0
LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
aW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb246OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpKGxvY2F0aW9u
LCB2MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBH
Q0dMdWludCB2MikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVp
bnQgdjIsIEdDR0x1aW50IHYzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MyksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aXYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0
eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29s
Pih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4
NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWlu
dCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJ
NGkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpdihH
Q0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGl2
KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1
aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
dmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBz
aXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0
LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVycyhHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcml2KGJ1
ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBk
cmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVm
ZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xl
YXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0
IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwg
c3RlbmNpbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1H
TE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSgpCit7Cisg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUXVlcnkoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVsZXRlUXVlcnkocXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVl
cnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVy
eShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVl
cnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVTYW1wbGVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxl
dGVTYW1wbGVyKHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcihz
YW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXI6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVu
aXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxlciksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSwgcGFyYW0p
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBw
bmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xm
bG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmko
c2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNh
bXBsZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzeW5j
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRp
b24sIEdDR0xiaXRmaWVsZCBmbGFncykKK3sKKyAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNl
U3luYyhjb25kaXRpb24sIGZsYWdzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpGZW5jZVN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKEdDR0xzeW5jIGFyZzApCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1N5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVN5bmMoR0NH
THN5bmMgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dM
ZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyhHQ0dMc3lu
YyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkKK3sKKyAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVu
dFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxk
IGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PGludDY0X3Q+KHRp
bWVvdXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMaW50IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaShzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2k6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgdWludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVHJhbnNm
b3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBp
ZCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVkYmFjayhpZCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRp
dmVNb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5k
VHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
cyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBp
bmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhdXNlVHJh
bnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXN1bWVU
cmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
QnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2Jq
ZWN0IGJ1ZmZlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9y
bUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVy
UmFuZ2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitWZWN0b3I8R0NHTHVpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlczo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitWZWN0b3I8R0NHTGludD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwg
dW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dM
dWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtQmxvY2tJbmRleChQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0s
IHVuaWZvcm1CbG9ja05hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm1CbG9ja0luZGV4OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmlu
ZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpCit7
CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFt
LCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1CbG9ja0JpbmRpbmco
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5OworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMu
YnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5p
Zm9ybUJsb2NraXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkocGFyYW1z
LmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJf
dCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFO
R0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQg
c3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xp
bnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xF
KHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwg
bWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3Jt
R0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlP
RVMoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVMoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUzo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4
QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NH
TGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJy
YXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhB
cnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25z
dCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdy
b3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzRVhUKElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291
bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lk
cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Y291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBwcmltY291bnQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xm
bG9hdCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xi
b29sZWFuKiBkYXRhKSAvLyBOT0xJTlQKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRU
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFy
YW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQq
IHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1
aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
fQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZkZGVlODdh
YmRjYzc2Zjg2OWFkNTU0ZGI1MTEyYjM2YjgyZjJkNmIuLmRhMzk4ODZlYmM4ZjE2ZDg4ZGZlMTg3
M2M1N2E4N2ZlY2Y2ZTQ2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTgx
OCw3ICs4MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9v
bCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0
LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwg
Ym9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCA5NWM4MzZlNjk1MDQxZDk3ZDI1OTAz
NmZkNzNkZmY1YzQ2YjhmZjkxLi5jOGM1ODI5MDUwYTUyNThmOWQ5MzE5NzZiOTVmMDVlNTk3YTU2
YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNz
KCkKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlz
KTsKLSAgICBib29sIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YygKKyAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YygKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJPZklucHV0Q2hhbm5l
bHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwgc2FtcGxlUmF0ZSgpLCBoYXJkd2FyZVNhbXBs
ZVJhdGUoKSksCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCksIDApOwogCkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5l
Y3RUb0dQVVByb2Nlc3MoKQogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1G
b3JtYXQ7CiAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7
CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFt
ZXMpOwotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxp
c3Q+KHN0cmVhbUZvcm1hdCk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdl
YkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
U291cmNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAppbmRleCBkY2JkNGY4YWZhZmUxMDYwYTYxYjAz
MDUzMWUxMmM3NGQzN2VmZmQzLi4yY2E5N2M2MzdiMWYxOWU4Mjc4YTZhZTcxM2M1YzE0ZTY3Njcx
N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZP
Uk0oQ09DT0EpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eU1lc3NhZ2VzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyTWFuYWdlci5jcHAKaW5kZXggYjhmNDVhNmQ1YmI0ZGI0NjA5ODgwMTI0M2JiNWU5MzE3YjFl
M2UyYi4uNjViOGZkMGQ3NzM0N2U5MzhiNTY0NTgyMjZiNzhkYTQzYzk3ODkxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVy
TWFuYWdlci5oIgogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmgKaW5kZXggZTU5ZTFiMDZiNDQ3ZTVkODBjYTYxMDUyYzZjN2EzMmM0
YmExNDJlNi4uODE5NDA5MGM5MzNiMmYxMWE2NDYwYWIzYzE3NzJkMzc2MTYzNzEwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJj
ZVByb3ZpZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaApAQCAtMjcsNiArMjcsOSBAQAog
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFQbGF5ZXJJZGVudGlmaWVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCAwZGI4
NWFlOWJkMjQxZWJhMWJkYTRlNjIyNDQwZjYzMjhlMWQ4YTBiLi4yOTdlZWJkYTE5MTg5ZGZlMGNm
ZTZjMWVkNzY5YWFjYjlkNmQ5MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggZDU0MjQ0MmM4NDRlNTQ4M2ZkM2NlZDc4NTA1ZGNh
MTg2OTRhZTRhNC4uYTMzOWViN2JmZmQ2YjQ1MTk0ZDI5YTEwOTE0YmZhMmZmYmQ3NGEzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2
YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTM1LDcgKzM1LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7
CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMGM2ZjczZDA3MTQ0YjU2MjY3NjkzNjdjOWYy
YTNhNDAxN2VhZGU4MC4uMTY4ZWY0MzVkZGU1NjE0ZDMwZjNiZTI4NjcwYTQ3YWVkNjE2ZGUwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAm
JiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NQ
cm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDczOWE0OTZlZjQ5NGNiNGE2MTg1NjZmZmM2
NGQ0YTI2NGE3NGU5ZDAuLjRiZWFlMDYyMzE3YmEyNmE2MDY4M2YxZjQ1MTIzM2ViMTA3M2FhN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENF
bmNvZGVySWRlbnRpZmllci5oIgpAQCAtNDMsNyArNDQsNiBAQCB1c2luZyBDVlBpeGVsQnVmZmVy
UG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKIAogbmFtZXNwYWNlIElQQyB7
CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggMmRhZDIwMzg0MmYwZTU1M2ZlM2I0NjI0NDFlZTk0
ZmEyNjQ5M2ExMS4uYzI4Y2U3ZjJlMTdlODlhOGU1MTg2YTc3MDZhMmU4YTQ0ZjZiN2UzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSUluamVjdGVk
QnVuZGxlQnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29u
dGVudFR5cGVzLmg+CkBAIC01NCw3ICs1NSw2IEBAIGNsYXNzIERhdGE7CiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjEsNCArMTYxLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5jcHAKaW5kZXggNjI3NWNmNmE2ZTdlNTBjNmIzNjA2MmUxMzE4NzU3
NTI4OWE1ODBlZS4uZTViYTY2MWFlNjZmNTVhOTA3NDY0ZTZmZjM2ZTQyYjdhZGQwMGRmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApAQCAtNDAsNyAr
NDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50JiBpbnNwZWN0b3JGcm9udGVuZCkKICAgICA6IG1fZnJvbnRlbmRDbGll
bnQobWFrZVdlYWtQdHIoaW5zcGVjdG9yRnJvbnRlbmQpKQogewotICAgIFBhZ2UqIHBhZ2UgPSBp
bnNwZWN0b3JGcm9udGVuZC5mcm9udGVuZFBhZ2UoKTsKKyAgICBXZWJDb3JlOjpQYWdlKiBwYWdl
ID0gaW5zcGVjdG9yRnJvbnRlbmQuZnJvbnRlbmRQYWdlKCk7CiAgICAgQVNTRVJUKHBhZ2UpOwog
CiAvLyAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW8KICAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCks
CiAgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZGlzcGxheU5hbWUpLAogICAgIH07Ci0gICAg
bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5k
V2l0aFJlc3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMp
LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpF
dmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBtX2Zyb250ZW5kQ2xpZW50
LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMo
InJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRp
b25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFy
ZXN1bHQpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKElu
c3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnMKICAgICB9
CiAKICAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4gYXJndW1lbnRzIHsgSlNPTjo6VmFsdWU6
OmNyZWF0ZShleHRlbnNpb25JRCkgfTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQ
SURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInVucmVnaXN0ZXJF
eHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKElu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCku
ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1bnJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBX
VEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpD
b250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oCmluZGV4IDMwNjRlOWM0YWZjYzJjZmY1NGEzMjVlMjUzMWVkMDUyMmEwMDEzOTMuLmI5Nzk0
NjU5ZWFiZDE4NGIzODljMDZkMTMyZjhjNDJmODA1MjNjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0
YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4NjU3MTFiMzY2YzI4
ZGY0ODRiNGNkYzA3YWEzZmNmM2RjZWJmMmY2Li42OTQ4OTZjOTk3YTQ5NDBkYmFiMmRhNzY1Nzgy
MGEyNzhhZjFkYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKIAotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUzOTY2ZmIuLjdlMWQ0OTk0
NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3Mzc3ODAwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMjYsNiArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJT
aGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
QEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJ
UEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IDk0ZWYwZDFmY2UyZTYwMWRmNDQ5Y2ZmODUzOWZiZDE2NDc5M2ViZTIu
LmZmNjlmNTYwOWU1NzdjYWM3NzdmMDRhZmE3NGFmMjEwNzQ4NjRmODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2Vz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmgKaW5kZXggZjUzNDc4MzQ3ZTc3NWRmMzdlYTk3NjM0YzIzMzA5MzJiNGExNGQyOC4u
YWQ3ZmYxODdkYmI0MzUzYjllZDNiYzU3YzViYTJjNGFhNGU4Y2ZlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMjUs
NiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2VuZFF1ZXVlLmg+CkBAIC0zOCw3ICszOSw2IEBA
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBh
ZjI0MmNkMmI1OTVhYzRhNDQ4NDI5N2JlNWQ1Y2ZlMThkNDhmMzI0Li43ZDAwNzM2OWI5Y2NlODVi
OGYwNTQ1N2Q2NjZkMWU0NDUxYjk2YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKIAotI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCmluZGV4IGRkMDgyMDEw
NzEyYjlmNWRiOWZlYmQ4OGRhNjY5YjZkZjYxZDBmMjkuLmI0M2NiMmVmYWQxZTEwMWVlMjY1Yjkz
ZGRlOWIwNjEyNzM2YTA5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tl
dFN0cmVhbUhhbmRsZS5oPgpAQCAtMzMsNyArMzQsNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAppbmRleCBjYjQ4ZTA1NzM0OGEy
ZTg2NmIwOTFmZjVhYzg3MjYwNWNhMTkyZGQ1Li4zMjNmMjVlZThmZDgxYjAyNjMwZDJmMjU5YTFh
ZmI4ODRiNGNmNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBj
bGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKaW5kZXggZWE1MzU5NjAxMDlmZWU2ZGM0ODA1Y2Y2ODkxMjc5OGVl
OWFiNmYwMy4uNDBiNGM4ZjIxMjljZjEyMzNhMWIzMWI4NTEyN2U3YTdlOWUzZDdjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAt
NjAsMTAgKzYwLDYgQEAgT0JKQ19DTEFTUyBQREZTZWxlY3Rpb247CiBPQkpDX0NMQVNTIFdLUERG
UGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdDsKIE9CSkNfQ0xBU1MgV0tQREZMYXllckNvbnRyb2xs
ZXJEZWxlZ2F0ZTsKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgRWxlbWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMzM0NzY0YWNlMmE4YzQzODU4OGIzMTk4MDYy
ZjM2NWEzNjZlOGJkYS4uNWIyNzMyZjJjNGU0YzQ4M2ViZjg0MDg3YThjMjYzNGU5ZDU0OTIzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEwOCw2ICsxMDgsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNlbmRpZgogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtOTEyLDYgKzkxNiwyMiBAQCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBSZQogICAgIHJldHVybiBtX3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9CiAKKyNpZiBFTkFC
TEUoV0VCR0wpCisKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIFBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0
Cit7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3JXZWJHTCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBVTlVTRURfVkFS
SUFCTEUoaG9zdFdpbmRvd0Rpc3BsYXlJRCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0
dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShhdHRyaWJ1dGVzKTsKKyNl
bHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworI2VuZGlmCisKICNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290
R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCmluZGV4IGVjMTRmZGIxNmM4MWNjMTI3MDZjZmNiNTllOTlmMmNkMzM3NjBkYzguLjEyMTVm
OTJhMDMxOTU4MGEwZGRkOTIxMDUxM2RkMmQ1ZDMwNTA1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
QEAgLTI0Myw3ICsyNDMsMTEgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
ICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0IGZpbmFsOworI2lmIEVOQUJMRShXRUJHTCkK
KyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwog
I2VuZGlmCisjZW5kaWYKKwogCiAgICAgQ29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENv
bXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBmaW5hbAogICAgIHsKQEAgLTQwMyw2ICs0MDcsNyBA
QCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpv
bnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZy
YW1lSGFzVmVydGljYWxTY3JvbGxiYXIgeyBmYWxzZSB9OworCiAgICAgV2ViUGFnZSYgbV9wYWdl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBmNjQyMTQ3N2E1NmNlZTFiNDU5YWIxYjcwZDhkY2FkOWQzZGFmYzM0Li5kNDYzM2RkYjZj
YzY0OTgwM2I5MjQ1NzU2MjViZmE1MjhjMTdkNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDIyLDYgKzQyMiw5IEBAIFdlYlBhZ2U6Oldl
YlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICAgICAsIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgcGFy
YW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRS
ZW5kZXJET01JbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRPTUluR1BVUHJv
Y2VzcyB9CiAgICAgLCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMu
c2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIH0KKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgLCBt
X3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJX
ZWJHTEluR1BVUHJvY2Vzc30KKyNlbmRpZgogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICAsIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgcGFyYW1ldGVycy5uZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgfQogI2VuZGlmCkBAIC03MjUsNyArNzI4LDYgQEAg
V2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmIChXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
KiBtYW5hZ2VyID0gd2ViUHJvY2Vzcy5zdXBwbGVtZW50PFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXI+KCkpCiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KG1hbmFnZXItPm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSgpKTsKICNlbmRpZgotICAg
IAogICAgIGlmIChwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3RvciAhPSAxKQogICAgICAgICBzY2Fs
ZVZpZXcocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IpOwogCkBAIC0zNzkzLDYgKzM3OTUsOSBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NG
b3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MpOwogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmco
bV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vz
cyk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVz
ZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKKyNl
bmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpAQCAtNjk5MCw2ICs2
OTk1LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJvbml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dp
dGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobV9pZGVu
dGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyksIDApOwogfQogCisKICNpZiBFTkFCTEUo
TUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihN
ZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRl
bnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGU3ZjhjMGEzYjYwNGU3YWExNTdjNzQwMjMxZTU1NTc0
OWQ0ZWY3YzcuLjIxMTBhMzJmNjcwZjAwZmEyNDRmZTZmOWQ3OTVhNmRkZjYwZDE3MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5j
bHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBAIC0xNjAsNyArMTYxLDYg
QEAgY2xhc3MgQXJyYXk7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiB9CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZl
V2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIFNlbmRTeW5jUmVzdWx0
IHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiByZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNlbEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25v
dXNSZXBsaWVzKCk7CiAgICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBX
VEZNb3ZlKHJlcGx5KSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6
SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwpAQCAtMTgyNiw2ICsxODI2LDkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFs
c2UgfTsKICAgICBib29sIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsg
ZmFsc2UgfTsKKyNlbmRpZgogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29s
IG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgZmFsc2UgfTsKICNlbmRpZgpAQCAt
MjE4Myw0ICsyMTg2LDMgQEAgaW5saW5lIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xheW91
dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY28KICNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAzODM4YWIzMjZkZDgzOTZiNjAxMDdjYmEzZjYy
NDUwNzRjOTdmNzE1Li4wZTI5M2ZhNGRmMTljYmY4Y2Q2NzkzMTc2ZDc4Nzg5MmFkOGUxMjgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQpAQCAtNTE3LDcgKzUxNyw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJv
YXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKICAgICAvLyBGSVhNRTogSW50ZXJwcmV0
IHRoZSBldmVudCBpbW1lZGlhdGVseSB1cG9uIHJlY2VpdmluZyBpdCBpbiBVSSBwcm9jZXNzLCB3
aXRob3V0IHNlbmRpbmcgdG8gV2ViUHJvY2VzcyBmaXJzdC4KICAgICBib29sIGV2ZW50V2FzSGFu
ZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgc2VuZFJlc3VsdCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1MYXlvdXQ6
OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNo
YXIpLAorICAgIGF1dG8gc2VuZFJlc3VsdCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Oklu
dGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBs
YXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpLAogICAg
ICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudDo6UmVwbHkoZXZl
bnRXYXNIYW5kbGVkKSwgbV9pZGVudGlmaWVyKTsKICAgICByZXR1cm4gc2VuZFJlc3VsdCAmJiBl
dmVudFdhc0hhbmRsZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggZjJmMjI4MjJjN2IyMjNmY2E1OWY5NTU3M2QxMWRjOTliMTAzNDgxMS4uNTgyZWU3NWQ5
OWE3NDI0MjU0YTM5ZGFiMjA2Zjg0NjE3MzRhZDlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtMTk0Miw2ICsxOTQyLDIwIEBAIGJvb2wgV2ViUHJvY2Vzczo6
c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSkKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCisjaWYgRU5BQkxFKFdFQkdMKQordm9pZCBXZWJQ
cm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCB1c2VHUFVQcm9jZXNzRm9yV2Vi
R0wpCit7CisgICAgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgPSB1c2VHUFVQcm9jZXNzRm9yV2Vi
R0w7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2Vi
R0woKSBjb25zdAoreworICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKwor
I2VuZGlmCisKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IGU5YzQ3ZGI0YzQ0N2MwZjRhYjYyN2MwOTRiNWY2OGRiNTY1YTlh
NmMuLjFhNTg1YWMxNDJiMTgzMjc2NGM0ZDg1Mzc5MDkwYjJjYmNhNzNjMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzQ3LDYgKzM0NywxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nKGJvb2wpOwogICAgIHZvaWQg
c2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wpOwogICAgIGJvb2wgc2hvdWxkVXNlUmVtb3Rl
UmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UpOworI2lmIEVOQUJMRShXRUJH
TCkKKyAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChib29sKTsKKyAgICBib29sIHNo
b3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkgY29uc3Q7CisjZW5kaWYKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4Nyw2ICs2OTEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
dXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZUdQ
VVByb2Nlc3NGb3JNZWRpYSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wg
bV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgeyBmYWxzZSB9OworI2VuZGlmCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYjdjNzMyY2MwODQ3MGE4MTI1ZmM3ZTVhNzQ1ZjFkMmY3Y2M1ZTE5Yi4uMGE0MWQ1
M2M1YzhhMDlkMTBlMWE4MTI1M2MxYmUwMTAxOTFmMzk4NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTEyLTAy
ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2
MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudHMgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BVIHBy
b2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQ
QyBhbmQgaXMgaW5jb21wbGV0ZS4KKworICAgICAgICBBZGQgdGhlIGNvZGUgZ2VuZXJhdG9yIHRv
IGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbi4gQ3VycmVudGx5CisgICAgICAgIHRoZSBnZW5l
cmF0b3IgZ2VuZXJhdGVzIGEgV2ViS2l0IElQQyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBU
aGUgaW5wdXQgZGVmaW5pdGlvbiB0byB0aGUgZ2VuZXJhdG9yIGlzIHRoZSBwcm94eSBpbXBsZW1l
bnRhdGlvbgorICAgICAgICBoZWFkZXIgZmlsZXMuCisgICAgICAgIFRoZSBvdXRwdXQgb2YgdGhl
IGdlbmVyYXRvciBpcworICAgICAgICAgICAtIFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9u
IGZpbGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHNlbmRlciBjb2RlCisgICAgICAgICAgIC0gTWVz
c2FnZSByZWNlaXZlciBhbmQgcGF5bG9hZCBpbnZvY2F0aW9uIGNvZGUKKworICAgICAgICBUaGUg
Z2VuZXJhdG9yIGNvbnZlcnRzIEdyYXBoaWNzQ29udGV4dEdMIEdDR0wgLXByZWZpeGVkIHR5cGVz
IHRvCisgICAgICAgIHNpemVkIElQQyB0eXBlcy4KKworICAgICAgICBUaGUgZ2VuZXJhdG9yIGlz
IGludm9rZWQgZHVyaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAg
ICAgICBzdG9yZWQgaW4gdGhlIHJlcG9zaXRvcnkuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2w6IEFkZGVkLgorCiAyMDIwLTEyLTAxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gR1BVUHJvY2Vzcy5DcmFzaFdoaWxlUGxheWlu
Z1ZpZGVvIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAt
d2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIw
YWUzMDAzMDA1OThjM2YwOTBmNzhkOWMyZWFiMmM3NWE1ZGI4NQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAtMCwwICsxLDEwNDQgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworCisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgc291cmNlIGZpbGVzIGZv
ciBXZWJHTCBHUFUgcHJvY2VzcyBJUEMuCisjCisjIHB5dGhvbjMgLW0gYmxhY2sgLWwgMTUwIFRv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIyBweXRob24zIC1tIG15cHkgVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisjCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBl
bnVtCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgY29sbGVj
dGlvbnMKKworZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJs
ZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIKKwor
cm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIiku
cmVzb2x2ZSgpCitleHRlbnNpb25zX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJX
ZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgorCitm
dW5jdGlvbnNfaW5wdXRfZm5zID0gWworICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0
IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmgiCitdCit0eXBlc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIg
LyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKwordGVtcGxhdGVfcHJlYW1ibGUgPSAiIiIvKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBE
byBub3QgZWRpdC4KKyIiIgorY29udGV4dF9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3Vy
Y2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiCitjb250ZXh0X2Z1bmN0aW9uc190ZW1w
bGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiLy8gVGhpcyBmaWxlIHNo
b3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCit7fQorCisi
IiIKKykKK2NvbnRleHRfbWVzc2FnZXNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktp
dCIgLyAiR1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluIgorY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0
ZV9wcmVhbWJsZQorICAgICsgIiIiI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVk
IHt7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNl
bmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JN
KENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwor
I2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24p
CisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQore30KK319CisKKyNlbmRpZgor
CisiIiIKKykKKworY29udGV4dF9wcm94eV9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3Vy
Y2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAiCitjb250ZXh0
X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAg
ICsgIiIiCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wp
ICYmIFVTRShBTkdMRSkKKworbmFtZXNwYWNlIFdlYktpdCB7ewore30KKworfX0KKworI2VuZGlm
CisKKyIiIgorKQorCisKK2RlZiB3cml0ZV9maWxlKGZuLCBuZXdfY29udGVudHMpOgorICAgIHRy
eToKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgaWYgZi5yZWFkKCkg
PT0gbmV3X2NvbnRlbnRzOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgIGV4Y2VwdDoKKyAg
ICAgICAgcGFzcworICAgIHdpdGggb3BlbihmbiwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRl
KG5ld19jb250ZW50cykKKworY2xhc3MgY3BwX3R5cGUob2JqZWN0KToKKyAgICB0eXBlX25hbWU6
IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0cik6CisgICAgICAg
IHNlbGYudHlwZV9uYW1lID0gdHlwZV9uYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiBoYXNoKHNlbGYudHlwZV9uYW1lKQorCisgICAgZGVmIF9fcmVwcl9fKHNl
bGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2VxX18oc2Vs
Ziwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUgPT0gb3RoZXIudHlwZV9u
YW1lCisKKyAgICBkZWYgaXNfdm9pZChzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2Vs
Zi50eXBlX25hbWUgaW4gWyJ2b2lkIiwgIkdDR0x2b2lkIiwgImNvbnN0IHZvaWQiLCAiY29uc3Qg
R0NHTHZvaWQiXQorCisgICAgZGVmIGlzX2NvbnN0KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJl
dHVybiBzZWxmLnR5cGVfbmFtZS5zdGFydHN3aXRoKCJjb25zdCAiKQorCisgICAgZGVmIGlzX2Nv
bnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBp
c19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9wb2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKSAtPiBib29sOgor
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUo
c2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXRf
ZGVjYXlfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICBpZiBzZWxmLmlzX2NvbnN0
KCk6CisgICAgICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lWzY6XSkK
KyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXRfcnZhbHVlX3R5cGUoc2VsZikgLT4g
J2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFtZSAr
ICImJiIpCisKKyAgICBkZWYgZ2V0X3BvaW50ZXJfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgor
ICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIioiKQorCitjbGFz
cyBjcHBfdHlwZV9jb250YWluZXIoY3BwX3R5cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
eXBlX25hbWUgOiBzdHIsIGNvbnRhaW5lcl9uYW1lIDogc3RyLCBjb250YWluZWRfdHlwZSA6IGNw
cF90eXBlLCBhcml0eSA6IE9wdGlvbmFsW2ludF0gPSBOb25lKToKKyAgICAgICAgY3BwX3R5cGUu
X19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNvbnRhaW5lcl9uYW1lID0g
Y29udGFpbmVyX25hbWUKKyAgICAgICAgc2VsZi5jb250YWluZWRfdHlwZSA9IGNvbnRhaW5lZF90
eXBlCisgICAgICAgIHNlbGYuYXJpdHkgPSBhcml0eQorICAgIGRlZiBpc19jb250YWluZXIoc2Vs
ZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAt
PiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4i
CisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4g
c2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iIGFuZCBzZWxmLmFyaXR5IGlzIE5vbmUK
KyAgICBkZWYgZ2V0X2NvbnRhaW5lcl9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5j
b250YWluZXJfbmFtZQorICAgIGRlZiBnZXRfYXJpdHkoc2VsZikgLT4gT3B0aW9uYWxbaW50XToK
KyAgICAgICAgcmV0dXJuIHNlbGYuYXJpdHkKKyAgICBkZWYgZ2V0X2NvbnRhaW5lZF90eXBlKHNl
bGYpIC0+IGNwcF90eXBlOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZQorICAg
IGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJu
IHNlbGYuY29udGFpbmVkX3R5cGUuaXNfY29uc3QoKQorCitkZWYgY3JlYXRlX2NwcF90eXBlX2Nv
bnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06
CisgICAgbSA9IHJlLm1hdGNoKHIiKFtcdzpdKyk8KC4rKT4kIiwgdHlwZV9uYW1lKQorICAgIGlm
IG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGNvbnRhaW5lcl9uYW1lID0gbVsxXQor
ICAgIHRlbXBsYXRlcyA9IG1bMl0KKyAgICBhcml0eSA9IE5vbmUKKyAgICBtID0gcmUubWF0Y2go
ciIoW14sXSspLFxzKihcZCspIiwgdGVtcGxhdGVzKQorICAgIGlmIG06CisgICAgICAgIHRlbXBs
YXRlcyA9IG1bMV0KKyAgICAgICAgYXJpdHkgPSBpbnQobVsyXSkKKyAgICByZXR1cm4gY3BwX3R5
cGVfY29udGFpbmVyKHR5cGVfbmFtZSwgY29udGFpbmVyX25hbWUsIGdldF9jcHBfdHlwZSh0ZW1w
bGF0ZXMpLCBhcml0eSkKKworY2xhc3MgY3BwX3R5cGVfZnVuY3Rpb24oY3BwX3R5cGUpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIHJldHVybl92YWx1ZV90eXBlIDog
Y3BwX3R5cGUsIGFyZ3VtZW50X3R5cGVzIDogTGlzdFtjcHBfdHlwZV0pOgorICAgICAgICBjcHBf
dHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVl
X3R5cGUgID0gcmV0dXJuX3ZhbHVlX3R5cGUKKyAgICAgICAgc2VsZi5hcmd1bWVudF90eXBlcyA9
IGFyZ3VtZW50X3R5cGVzCisKK2RlZiBjcHBfc3BsaXRfYXJnc19zcGVjcyhhcmdzX3NwZWMgOiBz
dHIpIC0+IEl0ZXJhdG9yW3N0cl06CisgICAgICMgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9x
dWVzdGlvbnMvMzM1MjcyNDUvcHl0aG9uLXNwbGl0LWJ5LWNvbW1hLXNraXBwaW5nLXRoZS1jb250
ZW50LWluc2lkZS1wYXJlbnRoZXNlcworICAgIGNvbW1hID0gciIsKD8hKD86W148XSpcPFtePl0q
XD4pKltePD5dKlw+KSIKKyAgICByZXR1cm4gZmlsdGVyKE5vbmUsIFthLnN0cmlwKCkgZm9yIGEg
aW4gcmUuc3BsaXQoY29tbWEsIGFyZ3Nfc3BlYy5zdHJpcCgpKV0pCisgICAgCitkZWYgY3JlYXRl
X2NwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVf
ZnVuY3Rpb25dOgorICAgIG0gPSByZS5tYXRjaChyJyguKilcKCguKilcKScsIHR5cGVfbmFtZSkK
KyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm5fdmFsdWVfdHlw
ZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgIGFyZ3NfdHlwZXMgPSBbZ2V0X2NwcF90eXBlKGEp
IGZvciBhIGluIGNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bMl0pXQorICAgIHJldHVybiBjcHBfdHlw
ZV9mdW5jdGlvbih0eXBlX25hbWUsIHJldHVybl92YWx1ZV90eXBlLCBhcmdzX3R5cGVzKQorICAg
ICAgICAKKyMgUG9pbnRlciBvciByZWZlcmVyZW5jZQorY2xhc3MgY3BwX3R5cGVfaW5kaXJlY3Qo
Y3BwX3R5cGUpOgorICAgIGNhdGVnb3J5IDogc3RyCisgICAgdmFsdWVfdHlwZSA6IGNwcF90eXBl
CisgICAgCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY2F0ZWdvcnkg
OiBzdHIsIHZhbHVlX3R5cGUgOiBjcHBfdHlwZSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9f
KHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5jYXRlZ29yeSA9IGNhdGVnb3J5CisgICAg
ICAgIHNlbGYudmFsdWVfdHlwZSA9IHZhbHVlX3R5cGUKKworICAgIGRlZiBpc19jb25zdF9wb2lu
dGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIHNlbGYu
aXNfY29uc3QoKQorICAgIGRlZiBpc19wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5jYXRlZ29yeSA9PSAnKicgYW5kIG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfY29u
c3RfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicg
YW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19yZWZlcmVuY2Uoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQorICAg
IGRlZiBpc19ydmFsdWVfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRl
Z29yeSA9PSAnJiYnCisgICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi52YWx1ZV90eXBlCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9u
YW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9pbmRpcmVjdF06CisgICAgbSA9IHJlLm1h
dGNoKHIiY29uc3QgKC4rKSYmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAg
bSA9IHJlLm1hdGNoKHIiKC4rKSYmJCIsIHR5cGVfbmFtZSkgCisgICAgaWYgbToKKyAgICAgICAg
cmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYmJywgZ2V0X2NwcF90eXBlKG1b
MV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJCIsIHR5cGVfbmFtZSkKKyAgICBp
ZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYkIiwgdHlwZV9uYW1lKQorICAg
IGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcmJywg
Z2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKylcKiQiLCB0
eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKylcKiQi
LCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0
KHR5cGVfbmFtZSwgJyonLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgcmV0dXJuIE5vbmUKKwor
CitjbGFzcyBjcHBfZXhwcihvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgZXhwcjog
c3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIGV4cHI6IHN0cik6
CisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5leHByID0gZXhwcgorCisg
ICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmV4cHIKKworCitDcHBF
eHByQ29udmVydGVyID0gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHByXQor
CisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjYXN0X3Ro
cm91Z2hfdHlwZSA6IGNwcF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwg
Y3BwX2V4cHJdOgorICAgIGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIoZXhw
cjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJu
IGNwcF9leHByKHR5cGUsIGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4ocmVpbnRlcnBy
ZXRfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJl
dHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIKKworZGVmIGNwcF9yZWludGVy
cHJldF9jYXN0X3RvX3BvaW50ZXJfdGhyb3VnaChjYXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBl
KSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdOgorICAgIGRlZiBj
cHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBf
dHlwZSkgLT4gY3BwX2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInJlaW50
ZXJwcmV0X2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oc3RhdGljX2Nhc3Q8e3N0cihjYXN0X3Rocm91
Z2hfdHlwZSl9Pih7c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nh
c3RfdG9fcG9pbnRlcgorCitkZWYgY3BwX3N0YXRpY19jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBl
OiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYic3Rh
dGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oe3N0cihleHByKX0pIikKKworCitkZWYgY3BwX2lt
cGxpY2l0X2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoK
KyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgc3RyKGV4cHIpKQorCisKK2RlZiBjcHBfYXJyYXlf
cmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlw
ZV9jb250YWluZXIpIC0+IGNwcF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0gdHlw
ZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4gY3Bw
X2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfShyZWludGVycHJldF9jYXN0PHtlbGVtZW50X3BvaW50
ZXJfdHlwZX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9LnNpemUoKSkiKQorCitk
ZWYgd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJz
aW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHBy
OgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5n
ZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUp
fShyZWludGVycHJldF9jYXN0PGNvbnN0IHtlbGVtZW50X3BvaW50ZXJfdHlwZX0+KHtzdHIoZXhw
cil9LmRhdGEpLCB7c3RyKGV4cHIpfS5idWZTaXplKSIpCisKK2RlZiBjcHBfbW92ZV9leHByKGV4
cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIoZXhwci50eXBl
LmdldF9ydmFsdWVfdHlwZSgpLCBmIldURk1vdmUoe3N0cihleHByKX0pIikKKworCitjcHBfdHlw
ZXM6IERpY3Rbc3RyLCBjcHBfdHlwZV0gPSB7fQorCitjcHBfdHlwZV9jb25zdHJ1Y3RvcnMgOiBM
aXN0W0NhbGxhYmxlW1tzdHJdLCBPcHRpb25hbFtjcHBfdHlwZV1dXSA9IFsKKyAgICBjcmVhdGVf
Y3BwX3R5cGVfZnVuY3Rpb24sCisgICAgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lciwKKyAgICBj
cmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QKK10KKworZGVmIGdldF9jcHBfdHlwZSh0eXBlX25hbWU6
IHN0cik6CisgICAgciA9IGNwcF90eXBlcy5nZXQodHlwZV9uYW1lLCBOb25lKQorICAgIGlmIHI6
CisgICAgICAgIHJldHVybiByCisgICAgZm9yIHR5cGVfY29uc3RyIGluIGNwcF90eXBlX2NvbnN0
cnVjdG9yczoKKyAgICAgICAgciA9IHR5cGVfY29uc3RyKHR5cGVfbmFtZSkKKyAgICAgICAgaWYg
cjoKKyAgICAgICAgICAgIGJyZWFrCisgICAgaWYgbm90IHI6CisgICAgICAgIHIgPSBjcHBfdHlw
ZSh0eXBlX25hbWUpCisgICAgY3BwX3R5cGVzW3R5cGVfbmFtZV0gPSByCisgICAgcmV0dXJuIHIK
KworCitjbGFzcyBjcHBfYXJnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgdHlwZTogY3Bw
X3R5cGUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFtZTogc3Ry
KToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisK
KyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7fSB7fSIuZm9ybWF0KHNl
bGYudHlwZSwgc2VsZi5uYW1lKQorCisKK2NsYXNzIGNwcF9kZWNsKG9iamVjdCk6CisgICAgdHlw
ZTogY3BwX3R5cGUKKyAgICBuYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBl
OiBjcHBfdHlwZSwgbmFtZTogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAg
ICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIGYie3N0cihzZWxmLnR5cGUpfSB7c2VsZi5uYW1lfSIKKworCitjbGFzcyBjcHBfYXJnX2xp
c3Qob2JqZWN0KToKKyAgICBhcmdzOiBMaXN0W2NwcF9hcmddCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKwor
ICAgIGRlZiBuYW1lcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihhLm5hbWUgZm9y
IGEgaW4gc2VsZi5hcmdzKQorCisgICAgZGVmIGV4cHJzKHNlbGYpOgorICAgICAgICByZXR1cm4g
W2NwcF9leHByKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYg
ZGVjbHMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2RlY2woYS50eXBlLCBhLm5hbWUpIGZv
ciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiB0eXBlcyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IFthLnR5cGUgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiAiLCAiLmpvaW4oc3RyKGEpIGZvciBhIGluIHNlbGYuYXJncykKKworCitj
bGFzcyBjcHBfZnVuYyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9hcmdf
bGlzdAorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGlzX2V4dGVuc2lvbjogYm9vbAor
ICAgIG92ZXJsb2FkX3N1ZmZpeDogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZTog
c3RyLCByZXR1cm5fdHlwZTogY3BwX3R5cGUsIGFyZ3M6IGNwcF9hcmdfbGlzdCwgaXNfZXh0ZW5z
aW9uOiBib29sKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnJldHVy
bl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBz
ZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1
ZmZpeCA9ICIiCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGYie3Nl
bGYucmV0dXJuX3R5cGV9IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pIgorCisgICAgZGVm
IGdldF9hcmdzX2NhdGVnb3JpZXMoc2VsZikgLT4gVHVwbGVbTGlzdFtjcHBfYXJnXSwgTGlzdFtj
cHBfYXJnXV06CisgICAgICAgIGluX2FyZ3MgPSBbXQorICAgICAgICBvdXRfYXJncyA9IFtdCisg
ICAgICAgIGZvciBhIGluIHNlbGYuYXJncy5hcmdzOgorICAgICAgICAgICAgI2ZtdDogb2ZmCisg
ICAgICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpIG9yIFwKKyAgICAgICAgICAgICAgICBh
LnR5cGUuaXNfcmVmZXJlbmNlKCk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisg
ICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpIGFu
ZCAoKChhLnR5cGUuaXNfc3BhbigpIG9yIGEudHlwZS5pc19keW5hbWljX3NwYW4oKSkgYW5kIG5v
dCBhLnR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKSkpOgorICAgICAgICAgICAg
ICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBp
bl9hcmdzICs9IFthXQorICAgICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgcmV0dXJuIGluX2Fy
Z3MsIG91dF9hcmdzCisKKyAgICBkZWYgaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxmLCB0eXBlOiBj
cHBfdHlwZSk6CisgICAgICAgIGlmIHR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgaXNfaW1wbGVt
ZW50ZWQoc2VsZik6CisgICAgICAgICMiIGluIGEudHlwZS50eXBlX25hbWUgZm9yIGEgaW4gc2Vs
Zi5hcmdzLmFyZ3MpOgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICAjaWYgIkdD
R0xzeW5jIiBpbiBzZWxmLnJldHVybl90eXBlLnR5cGVfbmFtZToKKyAgICAgICAgIyAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEubmFtZSA9PSAiYnVmU2l6ZSIgZm9yIGEgaW4gc2Vs
Zi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShh
LnR5cGUuaXNfcG9pbnRlcigpIGFuZCBhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKS5pc192b2lkKCkg
Zm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgIGlmIGFueShub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKGEudHlwZSkgZm9yIGEgaW4g
c2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNl
bGYucmV0dXJuX3R5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgIGlmIG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoc2VsZi5yZXR1cm5fdHlwZSk6
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworCit3ZWJr
aXRfaXBjX3R5cGVzOiBEaWN0W2NwcF90eXBlLCBjcHBfdHlwZV0gPSB7fQorCit3ZWJraXRfaXBj
X3R5cGVzX2NvbnZlcnRlcnM6IERpY3RbVHVwbGVbY3BwX3R5cGUsIGNwcF90eXBlXSwgQ3BwRXhw
ckNvbnZlcnRlcl0gPSB7fQorCisKK2RlZiB3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihleHByOiBj
cHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICIiIiBDb252ZXJ0cyBg
ZXhwcmAgb2YgdHlwZSBvZiBgc2VsZmAgdG8gYHR5cGVgICIiIgorICAgIGNvbnZlcnQgPSB3ZWJr
aXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuZ2V0KChleHByLnR5cGUsIHR5cGUpLCBOb25lKQorICAg
IGlmIG5vdCBjb252ZXJ0OgorICAgICAgICBpZiBleHByLnR5cGUgPT0gdHlwZToKKyAgICAgICAg
ICAgIHJldHVybiBleHByCisgICAgICAgIGNvbnZlcnQgPSBjcHBfaW1wbGljaXRfY2FzdAorICAg
IHJldHVybiBjb252ZXJ0KGV4cHIsIHR5cGUpCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5f
dHJhbnNmZXJfdHlwZSh0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlwZToKKyAg
ICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNheV90eXBl
KCkKKyAgICBhcml0eSA9IHR5cGUuZ2V0X2FyaXR5KCkKKyAgICB3ZWJraXRfaXBjX2VsZW1lbnRf
dHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZWxlbWVudF90eXBlXSBpZiBub3QgZWxlbWVudF90eXBl
LmlzX3ZvaWQoKSBlbHNlIGdldF9jcHBfdHlwZSgndWludDhfdCcpCisgICAgaWYgYXJpdHkgaXMg
bm90IE5vbmU6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJl
bmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50X3R5cGUpfSwge2FyaXR5fT4iKQorICAgIHJldHVy
biBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVt
ZW50X3R5cGUpfT4iKQorCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZSh0
eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlwZSA9
IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGlmIGVsZW1l
bnRfdHlwZS5pc192b2lkKCk6CisgICAgICAgIGVsZW1lbnRfdHlwZSA9IGdldF9jcHBfdHlwZSgn
R0NHTGNoYXInKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgIGlubGlu
ZV9jYXBhY2l0eSA9IDE2IGlmICJmbG9hdCIgaW4gZWxlbWVudF90eXBlLnR5cGVfbmFtZSBlbHNl
IDQKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIlZlY3Rvcjx7c3RyKGVsZW1lbnRfdHlw
ZSl9LCB7c3RyKGlubGluZV9jYXBhY2l0eSl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlwZShm
InN0ZDo6YXJyYXk8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cih0eXBlLmdldF9hcml0eSgpKX0+
IikKKworZGVmIHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uKGV4cHIgOiBjcHBf
ZXhwciwgdHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgcG9pbnRl
cl9jYXN0X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUo
KQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgIHJldHVybiBjcHBfZXhw
cih0eXBlLCBmIm1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PHtzdHIocG9pbnRlcl9jYXN0
X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisKKyAg
ICBhc3NlcnQodHlwZS5pc19zcGFuKCkpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYibWFr
ZUdDR0xTcGFuPHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9PihyZWludGVycHJldF9jYXN0PHtzdHIo
cG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSkiKQorCisjIFNlZSBtZXNz
YWdlcy5weSBmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZQord2Via2l0X2lwY19idWlsdGluX3R5cGVz
ID0gc2V0KAorICAgIFsidWludDhfdCIsICJ1aW50MTZfdCIsICJ1aW50MzJfdCIsICJ1aW50NjRf
dCIsICJpbnQ4X3QiLCAiaW50MTZfdCIsICJpbnQzMl90IiwgImludDY0X3QiLCAiYm9vbCIsICJm
bG9hdCIsICJkb3VibGUiICJib29sIl0KKykKKworCitkZWYgd2Via2l0X2lwY19nZXRfbWVzc2Fn
ZV9mb3J3YXJkZXJfdHlwZSh0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX3R5cGU6CisgICAgaWYgdHlw
ZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1cm4g
dHlwZQorICAgIHJldHVybiB0eXBlLmdldF9ydmFsdWVfdHlwZSgpCisKKworZGVmIHdlYmtpdF9p
cGNfbW92ZV9leHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICBpZiBleHByLnR5
cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoKKyAgICAgICAgcmV0dXJu
IGV4cHIKKyAgICByZXR1cm4gY3BwX21vdmVfZXhwcihleHByKQorCisKK2RlZiB3ZWJraXRfaXBj
X21zZ19uYW1lKGZ1bmM6IGNwcF9mdW5jKToKKyAgICByZXR1cm4gZnVuYy5uYW1lWzBdLmNhcGl0
YWxpemUoKSArIGZ1bmMubmFtZVsxOl0gKyBmdW5jLm92ZXJsb2FkX3N1ZmZpeAorCisKK2NsYXNz
IHdlYmtpdF9pcGNfbXNnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgaW5fYXJnczogY3Bw
X2FyZ19saXN0CisgICAgb3V0X2FyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGZ1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gd2Via2l0X2lwY19t
c2dfbmFtZShmdW5jKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGZ1bmMuZ2V0X2FyZ3Nf
Y2F0ZWdvcmllcygpCisgICAgICAgIGlwY19pbl9hcmdzID0gW2NwcF9hcmcod2Via2l0X2lwY190
eXBlc1thLnR5cGVdLCBhLm5hbWUpIGZvciBhIGluIGluX2FyZ3NdCisgICAgICAgIGlwY19vdXRf
YXJncyA9IFtdCisgICAgICAgIGlmIG5vdCBmdW5jLnJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAg
ICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2Z1bmMu
cmV0dXJuX3R5cGVdLCAicmV0dXJuVmFsdWUiKV0KKyAgICAgICAgZm9yIGEgaW4gb3V0X2FyZ3M6
CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY190eXBlc1th
LnR5cGVdLCBhLm5hbWUpXQorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2R5bmFtaWNfc3Bhbigp
OgorICAgICAgICAgICAgICAgIGlwY19pbl9hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZSgi
dWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUiKV0KKyAgICAgICAgc2VsZi5pbl9hcmdzID0gY3Bw
X2FyZ19saXN0KGlwY19pbl9hcmdzKQorICAgICAgICBzZWxmLm91dF9hcmdzID0gY3BwX2FyZ19s
aXN0KGlwY19vdXRfYXJncykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBpZiBs
ZW4oc2VsZi5vdXRfYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBmIlxuICAgIHZvaWQg
e3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkgLT4gKHtzdHIoc2VsZi5vdXRfYXJncyl9
KSBTeW5jaHJvbm91cyIKKyAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7
c3RyKHNlbGYuaW5fYXJncyl9KSIKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBs
KG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgbXNnX25hbWU6IHN0cgorICAgIHJldHVybl90
eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorCisgICAgcHJlX2NhbGxfc3Rt
dHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9z
dG10czogTGlzdFtzdHJdCisgICAgcmV0dXJuX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHBy
czogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1l
ID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm1zZ19uYW1lID0gd2Via2l0X2lwY19tc2df
bmFtZShjcHBfZnVuYykKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVy
bl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5w
cmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAg
IHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBb
XQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBb
XQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVnb3Jp
ZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVybl90
eXBlKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJncyhpbl9hcmdzKQorICAgICAgICBzZWxm
LnByb2Nlc3Nfb3V0X2FyZ3Mob3V0X2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19jYWxsKCkK
KworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGluX2V4cHJzID0gIiwgIi5q
b2luKFtzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbl9leHByc10pCisgICAgICAgIG91dF9leHBycyA9
ICIsICIuam9pbihzdHIobykgZm9yIG8gaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgIGlzX2Fz
eW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192b2lkKCkgYW5kIGxlbihvdXRfZXhwcnMpID09IDAK
KyAgICAgICAgaWYgaXNfYXN5bmM6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWwor
ICAgICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOyIsCisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZW5kX3Jl
c3VsdCA9ICIiCisgICAgICAgICAgICBpZiBzZWxmLnBvc3RfY2FsbF9zdG10czogCisgICAgICAg
ICAgICAgICAgc2VuZF9yZXN1bHQgPSAiYXV0byBzZW5kUmVzdWx0ID0gIgorICAgICAgICAgICAg
ICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gWworICAgICAgICAgICAgICAgICAgICAiaWYgKHNl
bmRSZXN1bHQpIiArICgiIHsiIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2Ug
IiIpCisgICAgICAgICAgICAgICAgXSArIFsiICAgICIgKyBzIGZvciBzIGluIHNlbGYucG9zdF9j
YWxsX3N0bXRzXSArIFsKKyAgICAgICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2VsZi5wb3N0
X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
IHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9c2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0o
e2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNn
X25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsiLAorICAgICAgICAgICAgXQorCisKKyAgICBkZWYgcHJvY2Vzc19pbl9hcmdzKHNl
bGYsIGluX2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgaSBpbiBpbl9hcmdzOgor
ICAgICAgICAgICAgaWYgaS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5p
bl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoaS50eXBlLCBpLm5h
bWUpLCB3ZWJraXRfaXBjX3R5cGVzW2kudHlwZV0pXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0X2Fy
Z3Moc2VsZiwgb3V0X2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3IgbyBpbiBvdXRf
YXJnczoKKyAgICAgICAgICAgIGlmIG8udHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICAg
ICAgdmFsdWVfdHlwZSA9IG8udHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICAgICAg
d2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1t2YWx1ZV90eXBlXQorICAg
ICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdmFsdWVfdHlwZSwgby5uYW1lICsg
IlJlcGx5IikKKyAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIo
di50eXBlKX0ge3N0cih2Lm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICAgICAgZSA9IGNw
cF9leHByKHYudHlwZSwgdi5uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9
IFtlXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKKyAgICAgICAg
ICAgICAgICAgICAgI2ZtdDogb2ZmCisgICAgICAgICAgICAgICAgICAgIGYiaWYgKHtvLm5hbWV9
KSIsCisgICAgICAgICAgICAgICAgICAgIGYiICAgICp7by5uYW1lfSA9IHt3ZWJraXRfaXBjX2Nv
bnZlcnRfZXhwcihlLCB2YWx1ZV90eXBlKX07IgorICAgICAgICAgICAgICAgICAgICAjZm10OiBv
bgorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsaWYgby50eXBlLmlzX3NwYW4oKToK
KyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28udHlw
ZV0KKyAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUsIGNw
cF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lw
Y190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxf
c3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAg
ICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KKyAgICAgICAg
ICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYie28u
bmFtZX0uYnVmU2l6ZSIpXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9
IFsKKyAgICAgICAgICAgICAgICAgICAgZiJtZW1jcHkoe28ubmFtZX0uZGF0YSwge3YubmFtZX0u
ZGF0YSgpLCB7by5uYW1lfS5idWZTaXplICogc2l6ZW9mKHtzdHIod2Via2l0X2lwY190eXBlLmdl
dF9jb250YWluZWRfdHlwZSgpKX0pKTsiCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIoby50eXBl
LCBvLm5hbWUpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90
eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKKyAg
ICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0KKyAg
ICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhwcihpcGNfcmV0dXJuX3R5cGUsICJyZXR1
cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92YWx1
ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAgICAg
IHNlbGYub3V0X2V4cHJzID0gW3JldHVybl92YWx1ZV9leHByXSArIHNlbGYub3V0X2V4cHJzCisg
ICAgICAgIHNlbGYucmV0dXJuX3N0bXRzID0gW2YicmV0dXJuIHtzdHIod2Via2l0X2lwY19jb252
ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIHJldHVybl90eXBlKSl9OyJdCisKKyAgICBkZWYg
X19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJfIiBpbiBz
ZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgIHtifSIgZm9y
IGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9zdF9j
YWxsX3N0bXRzICsgc2VsZi5yZXR1cm5fc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIiXG57c3Ry
KHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5u
YW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9Cit7e3tib2R5fQorfX0iIiIKKworCitjbGFz
cyB3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcihvYmplY3QpOgorICAgIG5hbWU6IHN0
cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorICAg
IGJvZHk6IExpc3Rbc3RyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBf
ZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKworICAgICAgICBzZWxm
LnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0g
Y3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLmJvZHkgPSBbIm5vdEltcGxlbWVudGVkKCk7Il0K
KyAgICAgICAgaWYgY3BwX2Z1bmMucmV0dXJuX3R5cGUudHlwZV9uYW1lICE9ICJ2b2lkIjoKKyAg
ICAgICAgICAgIHNlbGYuYm9keSArPSBbInJldHVybiB7IH07Il0KKworICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYubmFt
ZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiXG57XG4gICAgIiArICJcbiAgICAiLmpvaW4oc2Vs
Zi5ib2R5KSArICJcbn0iCisgICAgICAgIHJldHVybiBmIlxue3N0cihzZWxmLnJldHVybl90eXBl
KX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFy
Z3MpfSl7bm9saW50fXtib2R5fSIKKworCitjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRf
aXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
IEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9p
cGNfY3BwX3Byb3h5X2ltcGxdCisgICAgdW5pbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9wcm94
eV9wbGFjZWhvbGRlcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVb
Y3BwX2Z1bmNdLCB1bmltcGxlbWVudGVkOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBz
ZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwoZikgZm9yIGYgaW4gZnVuY3Nd
CisgICAgICAgIHNlbGYudW5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRl
cihmKSBmb3IgZiBpbiB1bmltcGxlbWVudGVkXQorCisgICAgZGVmIGdldF9mdW5jdGlvbnMoc2Vs
Zik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZvciBpIGluIHNlbGYuaW1wbHMg
KyBzZWxmLnVuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdyaXRl
X2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc19mbiwKKyAgICAgICAg
ICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5j
dGlvbnMoKSksCisgICAgICAgICkKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBsKG9iamVj
dCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgaXNfZXh0ZW5z
aW9uOiBib29sCisgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6
IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgaW5fZXhwcnM6
IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIHJldHVy
bl92YWx1ZV9leHByOiBPcHRpb25hbFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1l
CisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gY3BwX2Z1bmMub3ZlcmxvYWRfc3VmZml4
CisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9hcmdfbGlzdChbXSkKKyAgICAgICAgc2VsZi5pc19l
eHRlbnNpb24gPSBjcHBfZnVuYy5pc19leHRlbnNpb24KKyAgICAgICAgc2VsZi5wcmVfY2FsbF9z
dG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYucG9z
dF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAgICAgIHNl
bGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IE5vbmUK
KworICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9mdW5jLnJldHVybl90eXBl
KQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdldF9hcmdzX2NhdGVnb3Jp
ZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfYXJncyhjcHBfZnVuYy5hcmdzLmFyZ3MsIHNldChp
bl9hcmdzKSwgc2V0KG91dF9hcmdzKSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQorCisg
ICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgZXh0ID0gImdldEV4dGVuc2lvbnMo
KS4iIGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVsc2UgIiIKKworICAgICAgICBpbl9leHBycyA9ICIs
ICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5pbl9leHBycykKKyAgICAgICAgaXNfYXN5bmMg
PSBsZW4oc2VsZi5vdXRfZXhwcnMpID09IDAKKworICAgICAgICBjYWxsX2V4cHIgPSBmIm1fY29u
dGV4dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5fZXhwcnN9KSIKKyAgICAgICAgaWYgbm90IHNlbGYu
cmV0dXJuX3ZhbHVlX2V4cHI6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yie2Nh
bGxfZXhwcn07Il0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyAr
PSBbZiJ7c3RyKHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIpfSA9IHtjYWxsX2V4cHJ9OyJdCisgICAg
ICAgIGlmIG5vdCBpc19hc3luYzoKKyAgICAgICAgICAgIG91dF9leHBycyA9ICIsICIuam9pbihz
dHIoZSkgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAgICBzZWxmLnBvc3RfY2Fs
bF9zdG10cyArPSBbZiJjb21wbGV0aW9uSGFuZGxlcih7b3V0X2V4cHJzfSk7Il0KKworICAgIGRl
ZiBwcm9jZXNzX2FyZ3Moc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSwgaW5fYXJnczogU2V0W2Nw
cF9hcmddLCBvdXRfYXJnczogU2V0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGEgaW4gYXJnczoK
KyAgICAgICAgICAgIGlmIGEudHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICAg
ICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBpZiBhIGluIGluX2FyZ3M6CisgICAgICAgICAg
ICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZyhhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2FyZyhhKQorICAgICAgICBpZiBzZWxmLm91dF9leHBy
czoKKyAgICAgICAgICAgIG91dF9hcmdfZGVjbHMgPSAiLCAiLmpvaW4oZiJ7c3RyKGUudHlwZSl9
IiBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNlbGYuYXJncy5hcmdzICs9
IFtjcHBfYXJnKGdldF9jcHBfdHlwZShmIkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoe291dF9hcmdf
ZGVjbHN9KT4mJiIpLCAiY29tcGxldGlvbkhhbmRsZXIiKV0KKworICAgIGRlZiBwcm9jZXNzX2lu
X2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2NwcF9h
cmcod2Via2l0X2lwY19nZXRfbWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh3ZWJraXRfaXBjX3R5cGVz
W2EudHlwZV0pLCBhLm5hbWUpXQorICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBj
X2NvbnZlcnRfZXhwcihjcHBfZXhwcih3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSks
IGEudHlwZSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgor
ICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAgdmFsdWVfYXJnID0g
Y3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9h
cmcubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9l
eHByKGEudHlwZSwgZiIme3ZhbHVlX2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgZSA9IGNwcF9l
eHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHdlYmtpdF9p
cGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZS50eXBlXQorICAgICAgICAgICAgc2Vs
Zi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9pcGNfdmFs
dWVfdHlwZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAg
ICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAg
ICAgICAgICAgc2l6ZV9hcmcgPSBjcHBfYXJnKGdldF9jcHBfdHlwZSgidWludDY0X3QiKSwgZiJ7
YS5uYW1lfVNpemUiKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW3NpemVfYXJnXQor
ICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3Jl
X3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyAr
PSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9KHN0YXRpY19j
YXN0PHNpemVfdD4oe2EubmFtZX1TaXplKSwgMCk7Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhw
cnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBmIntzdG9yZV9hcmcubmFtZX0iKV0KKyAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAg
ICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9l
eHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSldCisg
ICAgICAgIGVsaWYgYS50eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3Rh
bmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgIHN0b3JlX2FyZyA9
IGNwcF9hcmcod2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkK
KyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlw
ZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9l
eHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKV0KKyAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAg
ICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHBy
KHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9pcGNfdHlwZSldCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgYS50eXBlLmlzX3JlZmVyZW5jZSgpCisgICAg
ICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAg
ICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEubmFt
ZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3NlbGYubnModmFsdWVf
YXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAgICAgIGUg
PSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLmluX2V4cHJzICs9IFtlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtp
dF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHdlYmtpdF9pcGNfdHlw
ZSkpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYsIHJldHVybl90eXBlOiBj
cHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3JldHVy
bl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKHJldHVybl90eXBl
LCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntyZXR1
cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9fTsiXQor
ICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lw
Y19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIGlwY19yZXR1cm5fdHlwZSkpXQorICAg
ICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gcmV0dXJuX3ZhbHVlX2V4cHIKKworICAgIGRl
ZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBib2R5ID0gIiIuam9pbihmIlxuICAgICAgICB7Yn0i
IGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBzZWxmLnBv
c3RfY2FsbF9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiIgICAgdm9pZCB7c2VsZi5uYW1lfXtz
ZWxmLm92ZXJsb2FkX3N1ZmZpeH0oe3N0cihzZWxmLmFyZ3MpfSkKKyAgICB7e3tib2R5fQorICAg
IH19IiIiCisKKyAgICBkZWYgbnMoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICAjIFRP
RE86IG5hbWVzcGFjZSBpbmZvIGlzIG5vdCBzdG9yZWQgaW4gbmFtZXMuCisgICAgICAgIGlmIHR5
cGUudHlwZV9uYW1lID09ICJBY3RpdmVJbmZvIjoKKyAgICAgICAgICAgIHJldHVybiAiV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OiIgKyBzdHIodHlwZSkKKyAgICAgICAgcmV0dXJuIHN0cih0
eXBlKQorCitkZWYgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcyA6IEl0
ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgY291bnRzID0gY29sbGVjdGlvbnMuQ291bnRlcihmLm5h
bWUgZm9yIGYgaW4gZnVuY3MpCisgICAgc3VmZml4ZXMgOiBDb3VudGVyW3N0cl0gPSBjb2xsZWN0
aW9ucy5Db3VudGVyKCkKKyAgICBmb3IgZiBpbiBmdW5jczoKKyAgICAgICAgaWYgY291bnRzW2Yu
bmFtZV0gPiAxOgorICAgICAgICAgICAgZi5vdmVybG9hZF9zdWZmaXggPSBzdHIoc3VmZml4ZXNb
Zi5uYW1lXSkKKyAgICAgICAgICAgIHN1ZmZpeGVzLnVwZGF0ZShbZi5uYW1lXSkKKworCitjbGFz
cyBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBpbXBs
czogTGlzdFt3ZWJraXRfaXBjX2NwcF9pbXBsXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1
bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dlYmtpdF9p
cGNfY3BwX2ltcGwoZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBs
cykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAg
ICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlv
bnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisK
K2NsYXNzIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGdlbmVy
YXRvci4iCisgICAgbXNnczogTGlzdFt3ZWJraXRfaXBjX21zZ10KKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5tc2dzID0g
W3dlYmtpdF9pcGNfbXNnKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdldF9tZXNzYWdl
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oc3RyKG0pIGZvciBtIGluIHNlbGYubXNn
cykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZShjb250ZXh0
X21lc3NhZ2VzX2ZuLCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9t
ZXNzYWdlcygpKSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM6IHN0ciwgYXJnX2lu
ZGV4OiBpbnQpOgorICAgIHIgPSBhcmdfc3BlYy5yc3BsaXQoIiAiLCAxKQorICAgIG5hbWUgPSAi
IgorICAgIHR5cGUgPSBOb25lCisgICAgaWYgbGVuKHIpID4gMSBhbmQgclswXSAhPSAiY29uc3Qi
OgorICAgICAgICBuYW1lID0gclsxXS5zdHJpcCgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5
cGUoclswXSkKKyAgICBlbHNlOgorICAgICAgICBuYW1lID0gImFyZ3t9Ii5mb3JtYXQoYXJnX2lu
ZGV4KQorICAgICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKGFyZ19zcGVjKQorICAgIHJldHVybiBj
cHBfYXJnKHR5cGUsIG5hbWUpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVj
czogSXRlcmFibGVbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRlX2NwcF9h
cmcoYXJnX3NwZWM9ZSwgYXJnX2luZGV4PWkpIGZvciBpLCBlIGluIGVudW1lcmF0ZShhcmdzX3Nw
ZWNzKV0pCisKKworZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVjOiBz
dHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAgICByZXR1
cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0dXJuX3Nw
ZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjcyksIGlzX2V4dGVuc2lvbj1p
c19leHRlbnNpb24pCisKKworZGVmIHJlYWRfbGluZXNfdW50aWwobGluZXMgOiBJdGVyYWJsZVtz
dHJdLCBtYXRjaCA6IHN0cikgLT4gR2VuZXJhdG9yW3N0ciwgTm9uZSwgTm9uZV06CisgICAgZm9y
IGxpbmUgaW4gbGluZXM6CisgICAgICAgIGlmIHJlLm1hdGNoKG1hdGNoLCBsaW5lLnN0cmlwKCkp
OgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgeWllbGQgbGluZQorCitkZWYgbWFpbigpOgor
ICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCJ1c2FnZTogJXByb2cgW29wdGlv
bnNdIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBoZWxwPSJQcmludCBzb21lIGRlYnVnIGluZm8gZnJvbSB0aGUgZ2VuZXJhdG9yIHNj
cmlwdCIpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgICMgQ29uc3Ry
dWN0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUgZnJvbSB3ZWIgcHJvY2VzcyB0byBH
UFUgcHJvY2Vzcy4KKworICAgICMgRklYTUU6IFVudGlsIGV4dGVuc2lvbnMgaGVhZGVyIGlzIHJl
bW92ZWQsIHdlIG5lZWQgdG8gY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAjIHdp
dGggdGhlIGRpc3RpbmN0aW9uIG9mIHdoZXRoZXIgYSBmdW5jdGlvbiBpcyBvciBpcyBub3QgYW4g
ZXh0ZW5zaW9uIGZ1bmN0aW9uLgorICAgIGV4dGVuc2lvbl9zaWduYXR1cmVzIDogU2V0W3N0cl0g
PSBzZXQoKQorICAgIHdpdGggb3BlbihleHRlbnNpb25zX2lucHV0X2ZuKSBhcyBmOgorICAgICAg
ICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIi
Lip2aXJ0dWFsIChcUyspXHMrKFx3KylcKCguKilcKSA9IDA7IiwgbGluZSkKKyAgICAgICAgICAg
IGlmIG06CisgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAgICAgICAg
ICAgICAgICAgICAgbmFtZT1tWzJdLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3BlYz1t
WzFdLAorICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNz
KG1bM10pLAorICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249VHJ1ZSwKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMudXBkYXRlKFtz
dHIoZnVuYyldKQorICAgIGZ1bmNzID0gW10KKyAgICB1bmltcGxlbWVudGVkID0gW10KKyAgICBm
b3IgZm4gaW4gZnVuY3Rpb25zX2lucHV0X2ZuczoKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBm
OgorICAgICAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgICAgICBm
b3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRnVuY3Rpb25zIHdpdGggYSBnZW5l
cmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZm9y
IGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkg
Z2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKHIiXHMqKFxTKylccysoXHcrKVwoKC4qKVwpIGZpbmFsOyIsIGxpbmUpCisgICAgICAgICAg
ICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgZnVuY19uYW1lID0gbVsyXQorICAgICAg
ICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZT1mdW5jX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3Bl
Yz1tWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBfc3BsaXRfYXJn
c19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1GYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBmdW5jLmlzX2V4
dGVuc2lvbiA9IHN0cihmdW5jKSBpbiBleHRlbnNpb25fc2lnbmF0dXJlcworICAgICAgICAgICAg
ICAgICAgICBpZiBmdW5jLmlzX2ltcGxlbWVudGVkKCk6CisgICAgICAgICAgICAgICAgICAgICAg
ICBmdW5jcy5hcHBlbmQoZnVuYykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaW1wbGVtZW50ZWQuYXBwZW5kKGZ1bmMpCisKKworICAgIHdlYmtp
dF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZmaXgoZnVuY3MpCisgICAgIyBJbml0aWFsaXplIFdl
YktpdCBJUEMgZ2VuZXJhdGlvbi4gQ29uc3RydWN0IHR5cGUgbWFwcGluZ3MgZm9yIHRoZSB1c2Vk
IEMrKyB0eXBlcyAtPiBJUEMgdHlwZXMuCisgICAgIyBUT0RPOiBuYW1lc3BhY2luZyBpc3N1ZXMu
CisgICAgYWlfdHlwZSA9IGdldF9jcHBfdHlwZSgiQWN0aXZlSW5mbyYiKQorICAgIGFpX3RyYW5z
ZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvIikKKyAgICB3ZWJraXRfaXBjX3R5cGVzW2FpX3R5cGVdID0gYWlfdHJhbnNmZXJfdHlw
ZQorCisgICAgd2l0aCBvcGVuKHR5cGVzX2lucHV0X2ZuKSBhcyBmOgorICAgICAgICBsaW5lcyA9
IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChs
aW5lcywgIi8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBl
cy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChsaW5l
cywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6
CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHN0ZDo6aXNfc2Ft
ZV92PChcdyspLCAoXHcrKT5cKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAg
ICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2dldF9jcHBfdHlwZShtWzFdKV0gPSBnZXRfY3BwX3R5
cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwp
XCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUg
PSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBf
dHlwZShtWzJdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0g
aXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNw
cF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0
aWNfY2FzdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEZJWE1FOiBI
ZXJlIHdlIHVzZSA8PSBpbnN0ZWFkIG9mID09IGR1ZSB0byBwb2ludGVycywgc3VjaCBhcyBHQ0dM
c3luYywgR0NHTGludHB0ciwgLi4uLgorICAgICAgICAgICAgIyBUaGlzIGVuZHMgdXAgZmFpbGlu
ZyBpZiB0aGVyZSBldmVyIGlzIGFycmF5cyBvZiB0aGVzZSB0eXBlcywgc2luY2UgYXJyYXlzIGFy
ZSBjdXJyZW50bHkKKyAgICAgICAgICAgICMgcmVpbnRlcnByZXQtY2FzdGVkLgorICAgICAgICAg
ICAgIyBXZWJLaXQgSVBDIHJlcXVpcmVzIG9uZSBzaXplZCB0eXBlLCBidXQgdGhlIHNpemUgb2Yg
dGhlc2UgcG9pbnRlci1iYXNlZCB2YWx1ZXMgd2lsbCBjaGFuZ2UKKyAgICAgICAgICAgICMgYmFz
ZWQgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNf
YXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAg
ICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUo
bVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlw
ZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19j
b252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19h
c3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXplb2ZcKChcdyspXCkgJiYgc2l6ZW9mXCgoXHcr
KVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAg
ICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAg
ICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjcHBfY2Fz
dF90aHJvdWdoX3R5cGUgPSBnZXRfY3BwX3R5cGUobVs0XSkKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9yZWludGVy
cHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBf
dHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0
X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgIyBGb3IgYWxs
IHR5cGVzIGluIHRoZSBpbnB1dCBBUEksIGZvcm0gY29ycmVzcG9uZGluZyBJUEMgdHlwZXMgYW5k
IGNvbnZlcnNpb25zLgorICAgICMgVE9ETzogdGhpcyBpcyBub3QgZHJpdmVuIGJ5IHRoZSB0eXBp
bmcuCisgICAgYWxsX3R5cGVzID0gc2V0KCkKKyAgICBmb3IgZnVuYyBpbiBmdW5jczoKKyAgICAg
ICBhbGxfdHlwZXMudXBkYXRlKGZ1bmMuYXJncy50eXBlcygpICsgW2Z1bmMucmV0dXJuX3R5cGVd
KQorICAgICMgU29ydCBieSBsZW4gc28gdGhhdCB0ZW1wbGF0ZSBhcmdzIGNvbWUgYmVmb3JlIHRl
bXBsYXRlcy4KKyAgICBmb3IgY3BwX3R5cGUgaW4gc29ydGVkKGFsbF90eXBlcywga2V5PWxhbWJk
YSB4OiBsZW4oeC50eXBlX25hbWUpKToKKyAgICAgICAgaWYgY3BwX3R5cGUgaW4gd2Via2l0X2lw
Y190eXBlczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAKKyAgICAgICAgaWYgY3BwX3R5
cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3BwX3R5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAg
dHJhbnNmZXJfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNmZXJfdHlwZShjcHBfdHlw
ZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlw
ZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICBpZiBjcHBfdHlwZS5nZXRfY29udGFpbmVk
X3R5cGUoKS5pc19jb25zdCgpOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29u
dmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IHdlYmtpdF9pcGNfc3Bhbl90cmFu
c2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICAgICAgICAgIHdl
YmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1sodHJhbnNmZXJfdHlwZSwgY3BwX3R5cGUpXSA9IHdl
YmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHN0b3JlX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUo
Y3BwX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhz
dG9yZV90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9j
b252ZXJzaW9uCisgICAgICAgIGVsaWYgY3BwX3R5cGUuaXNfcmVmZXJlbmNlKCkgb3IgY3BwX3R5
cGUuaXNfY29uc3RfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAg
ICAgICAgICB2YWx1ZV90eXBlID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKSBpZiBub3QgY3Bw
X3R5cGUuaXNfY29udGFpbmVyKCkgZWxzZSBjcHBfdHlwZQorICAgICAgICAgICAgaWYgdmFsdWVf
dHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgICAgICBjb250YWluZWRfdHlwZSA9IHZh
bHVlX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBj
X2NvbnRhaW5lZF90eXBlID0gd2Via2l0X2lwY190eXBlc1tjb250YWluZWRfdHlwZV0KKyAgICAg
ICAgICAgICAgICBpZiB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID09IGNvbnRhaW5lZF90eXBl
OgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHZhbHVl
X3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0cmFuc2Zl
cl90eXBlID0gZ2V0X2NwcF90eXBlKGYie3ZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lcl9uYW1lKCl9
PHtzdHIod2Via2l0X2lwY19jb250YWluZWRfdHlwZSl9PiIpCisgICAgICAgICAgICAgICAgICAg
IHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlwZQorICAgICAgICAgICAg
ICAgICAgICAjIFRPRE86IEhlcmUgbWlnaHQgYmUgY2FzZSB3aGVyZSBWZWN0b3I8R0NHTGludD4g
d2FzIHVzZWQgaW4gdGhlIGludGVyZmFjZSBhbmQgVmVjdG9yPGludDMyX3Q+IGlzIHVzZWQKKyAg
ICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgSVBDIGRlZmluaXRpb24uIFRoZXJlIGlzIG5vIHNl
bnNpYmxlIHdheSB0byBkbyB0aGlzIGF0IHRoZSBtb21lbnQuIFdlIGRvIG5vdCBjb252ZXJ0LCBy
YXRoZXIKKyAgICAgICAgICAgICAgICAgICAgIyBleHBlY3QgdGhhdCBhbGwgdGhlIGludm9jYXRp
b25zIGFyZSB0YWtlbiBjYXJlIG9mIHRoZSBmYWN0IHRoYXQgR0NHTGludCBpcyB0aGUgc2FtZSB0
eXBlIGFzIGludDMyX3QuCisgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIG5vdCBob2xk
IGZvciBhbGwgdHlwZXMgc3VjaCBhcyBHQ0dMYm9vbGVhbi4KKyAgICAgICAgICAgICAgICAgICAg
I3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9
IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB2YWx1ZV90eXBl
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9
IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAKKyAgICAjIFRoZSBpbnB1dCB0byB0aGUg
Z2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUuCisgICAgIyBSdW4gdGhl
IHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBnZW5lcmF0b3JzID0gWworICAgICAgICBjb250ZXh0
X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcywgdW5pbXBsZW1lbnRlZCksCisg
ICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAgICAgICAg
Y29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgIF0KKyAgICBmb3Ig
ZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBnLmdlbmVyYXRlKCkKKworICAgIGlmIG9wdGlvbnMu
dmVyYm9zZToKKyAgICAgICAgcHJpbnQoIkltcGxlbWVudGVkOiIpCisgICAgICAgIHByaW50KCIi
LmpvaW4oZiIgICAge3N0cihpKX0gZmluYWxcbiIgZm9yIGkgaW4gZnVuY3MpKQorICAgICAgICBw
cmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIo
dSl9IGZpbmFsXG4iIGZvciB1IGluIHVuaW1wbGVtZW50ZWQpKQorICAgICAgICBwcmludChmIklt
cGxlbWVudGVkOiB7bGVuKGZ1bmNzKX0sIHVuaW1wbGVtZW50ZWQ6IHtsZW4odW5pbXBsZW1lbnRl
ZCl9LCB0b3RhbDoge2xlbihmdW5jcykrbGVuKHVuaW1wbGVtZW50ZWQpfSIpCisgICAgICAgIHBy
aW50KCJDKysgdHlwZSBtYXAgdG8gV2ViS2l0IElQQyB0eXBlIG1hcDoiKQorICAgICAgICBmb3Ig
XywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgaW4gd2Via2l0X2lw
Y190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSAtPiB7c3RyKHdl
YmtpdF9pcGNfdHlwZXNbdF0pfSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZXMgd2l0aG91dCBX
ZWJLaXQgSVBDIHR5cGU6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6
CisgICAgICAgICAgICBpZiB0IG5vdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAg
ICAgIHByaW50KGYiICAgIHtzdHIodCl9IikKKyAgICAgICAgcHJpbnQoIldlYktpdCBJUEMgdHlw
ZSBjb252ZXJzaW9ucyIpCisgICAgICAgIGZvciAoYSwgYiksIGNvbnZlcnRlciBpbiB3ZWJraXRf
aXBjX3R5cGVzX2NvbnZlcnRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIHByaW50KGYiICAgIHtz
dHIoYSl9IC0+IHtzdHIoYil9IDoge2NvbnZlcnRlci5fX25hbWVfX30iKQorICAgICAgICBwcmlu
dCgiRG9uZS4iKQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK
KyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Q3MTQyZWNmODRlOGQ2ZjI5OWU1YWNiYWQy
ODg0ZjBhNjg3Mjk5MS4uNjBlYTg2YWZlODc3YWYyZjkzYjE3YTc2MmExYzJhNDMwYWMyMzQ2NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTEyLTAyICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcy
MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2Yg
YSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHBy
b2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAg
ICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGUgbWlzc2luZyBmdW5jdGlvbmFsaXR5
LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxlIHRoZSB0ZXN0cyB0aGF0IGFjdHVhbGx5IHBh
c3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBiZWZvcmUgdGhlCisgICAgICAgIGltcGxlbWVudGF0
aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0x
Mi0wMSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0g
QWRkIHNvbWUgV1BFLXNwZWNpZmljIGJhc2VsaW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4NTMwNTgwMDMzOTBmZDc1Mzdk
YzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBhMmQ0NjcyNjNjNzA4Yzk0OCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTcsNiArMzE3LDE0IEBAIGh0
dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQt
d2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmdsIFsgU2tpcCBdCiBqcy9zaGFy
ZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIxODE4
NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNl
LWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZh
cy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFNr
aXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRj
aGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZh
cy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5
MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sIFsgRmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1v
bi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmdwdSBbIFNraXAgXQogCiBh
Y2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlwZXMuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415221</attachid>
            <date>2020-12-02 07:13:39 -0800</date>
            <delta_ts>2020-12-02 07:20:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201202171337.patch</filename>
            <type>text/plain</type>
            <size>581514</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM4NWFiOWQ4Nzg5YzU4
MTBkOTNjOGIxNGExNWM5MWFlNzdiZGM3MS4uYTE1MDIwY2NkZTcxYjcwZmY4NGNlMmU0N2ExOWJh
OGNiOWU2OTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTEyLTAxICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVSBQcm9jZXNzOiBJT1N1cmZh
Y2VzIHNob3VsZCBub3QgYmUgbWFwcGVkIGludG8gdGhlIFdlYiBDb250ZW50IFByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWIzNTQ0Y2UwODJiZDhhYzJjZmZlY2IyMmQwMWY3MWE3NDI5NDUxZC4uZjY2OGI2
ZTNlYzVkNDExN2M3MWJiYTM2MDhmNWY4ODg1YTQ2MGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NTIgQEAKKzIwMjAtMTItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlV2ViR0xCYWNrZW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBJbXBsZW1lbnRlZCB3aXRo
IGEgZ2VuZXJhdG9yIHNjcmlwdCBpbXBsZW1lbnRpbmcgdGhlIElQQyB0byBwYXNzIHRoZQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTCBtZW1iZXIgZnVuY3Rpb24gY2FsbHMgZnJvbSB3ZWIgcHJv
Y2VzcyB0byB0aGUgR1BVCisgICAgICAgIHByb2Nlc3MuIFRoZSBzY3JpcHQgaXMgcnVuIGR1cmlu
ZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgY29tbWl0dGVk
IHRvIHRoZSByZXBvIGZvciBlYXNlIG9mIHJldmlldy4KKworICAgICAgICBJbXBsZW1lbnQgdGhl
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIFdlYktpdCBzaWRlLiBUaGlzIGNsYXNzIHdpbGwK
KyAgICAgICAgZm9yd2FyZCBjYWxscyByZWNlaXZlZCB2aWEgSVBDIHRvIHRoZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC4gQXQgdGhlCisgICAgICAgIG1vbWVudCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBpbnN0YW5jZSBpcyBhIGRpcmVjdCBjaGlsZCBvZgorICAgICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLgorCisgICAgICAgIENoYW5nZXMgV2ViS2l0IElQQyB0byBzdXBwb3J0IHJl
Y2VpdmluZyB0eXBlZCBhcnJheXMgYXMgcmVmZXJlbmNlcy4gVGhpcworICAgICAgICBpcyBuZWVk
ZWQgdG8gc3VibWl0IEdMIGRhdGEgYXJyYXlzLCBzdWNoIGFzIEdMZmxvYXQgYXJyYXlzIGRpcmVj
dGx5IGZyb20KKyAgICAgICAgdGhlIElQQyBkYXRhIHN0b3JlIHdpdGhvdXQgYW4gZXh0cmEgY29w
eS4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9ydCBwYXNzaW5nIGRhdGEg
cmVmZXJlbmNlcywgaS5lLgorICAgICAgICBEYXRhUmVmZXJlbmNlIG9yIEFycmF5UmVmZXJlbmNl
LCBhcyBhIHN5bmNocm9uaXplZCBjYWxsIHJldHVybiB2YWx1ZS4KKyAgICAgICAgVGhlIGNhbGxl
ciBtdXN0IGhvbGQgdGhlIENvbm5lY3Rpb246OnN5bmNTZW5kKCkgcmVzdWx0IChEZWNvZGVyIG9i
amVjdCkKKyAgICAgICAgZm9yIHRoZSBkdXJpYXRpb24gb2YgdXNpbmcgdGhlIGRhdGEgdmFsdWVz
LgorCisgICAgICAgIENvbXBvc2l0aW5nIGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIFBMQVRGT1JN
KENPQ09BKS4KKworICAgICAgICBNaXNzaW5nOgorICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4
dCBsb3NzCisgICAgICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGNoYW5nZQorICAgICAgICAgLSBQ
YWludCBXZWJHTCBjb250ZW50cyB0byAyRCBjYW52YXMKKyAgICAgICAgIC0gVXBsb2FkIHZpZGVv
IHRvIFdlYkdMCisgICAgICAgICAtIFVwbG9hZCBjYW52YXMgdG8gV2ViR0wKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpkaWRDb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlc2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmg6IEFkZGVkLgorICAgICAgICAoc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6Cisg
ICAgICAgIChzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChtb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QpOgorICAgICAgICAoYWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChhdHRhY2hT
aGFkZXIpOgorICAgICAgICAoYmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKGJpbmRCdWZm
ZXIpOgorICAgICAgICAoYmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGJpbmRSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoYmluZFRleHR1cmUpOgorICAgICAgICAoYmxlbmRDb2xvcik6CisgICAg
ICAgIChibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6Cisg
ICAgICAgIChibGVuZEZ1bmMpOgorICAgICAgICAoYmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAg
ICAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChjbGVhcik6CisgICAgICAgIChj
bGVhckNvbG9yKToKKyAgICAgICAgKGNsZWFyRGVwdGgpOgorICAgICAgICAoY2xlYXJTdGVuY2ls
KToKKyAgICAgICAgKGNvbG9yTWFzayk6CisgICAgICAgIChjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKGNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKGNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVTaGFkZXIpOgorICAgICAgICAoY3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChjdWxs
RmFjZSk6CisgICAgICAgIChkZWxldGVCdWZmZXIpOgorICAgICAgICAoZGVsZXRlRnJhbWVidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChkZWxldGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGRlbGV0ZVRleHR1cmUpOgor
ICAgICAgICAoZGVwdGhGdW5jKToKKyAgICAgICAgKGRlcHRoTWFzayk6CisgICAgICAgIChkZXB0
aFJhbmdlKToKKyAgICAgICAgKGRldGFjaFNoYWRlcik6CisgICAgICAgIChkaXNhYmxlKToKKyAg
ICAgICAgKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChkcmF3QXJyYXlzKToK
KyAgICAgICAgKGRyYXdFbGVtZW50cyk6CisgICAgICAgIChlbmFibGUpOgorICAgICAgICAoZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZmluaXNoKToKKyAgICAgICAgKGZsdXNo
KToKKyAgICAgICAgKGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGZyb250RmFjZSk6CisgICAgICAgIChnZW5lcmF0ZU1p
cG1hcCk6CisgICAgICAgIChnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoZ2V0QWN0aXZlVW5p
Zm9ybSk6CisgICAgICAgIChnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChnZXRCdWZmZXJQ
YXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFN0cmluZyk6CisgICAgICAgIChnZXRGbG9hdHYpOgor
ICAgICAgICAoZ2V0SW50ZWdlcnYpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0KToKKyAgICAgICAg
KGdldEludGVnZXI2NGkpOgorICAgICAgICAoZ2V0UHJvZ3JhbWkpOgorICAgICAgICAoZ2V0Qm9v
bGVhbnYpOgorICAgICAgICAoZ2V0RXJyb3IpOgorICAgICAgICAoZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAg
IChnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFNoYWRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQpOgorICAgICAgICAoZ2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRl
cmYpOgorICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRVbmlmb3JtZnYp
OgorICAgICAgICAoZ2V0VW5pZm9ybWl2KToKKyAgICAgICAgKGdldFVuaWZvcm11aXYpOgorICAg
ICAgICAoZ2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdldFZlcnRleEF0dHJpYk9mZnNl
dCk6CisgICAgICAgIChoaW50KToKKyAgICAgICAgKGlzQnVmZmVyKToKKyAgICAgICAgKGlzRW5h
YmxlZCk6CisgICAgICAgIChpc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGlzUHJvZ3JhbSk6Cisg
ICAgICAgIChpc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChpc1NoYWRlcik6CisgICAgICAgIChp
c1RleHR1cmUpOgorICAgICAgICAobGluZVdpZHRoKToKKyAgICAgICAgKGxpbmtQcm9ncmFtKToK
KyAgICAgICAgKHBpeGVsU3RvcmVpKToKKyAgICAgICAgKHBvbHlnb25PZmZzZXQpOgorICAgICAg
ICAocmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChzYW1wbGVDb3ZlcmFnZSk6CisgICAg
ICAgIChzY2lzc29yKToKKyAgICAgICAgKHNoYWRlclNvdXJjZSk6CisgICAgICAgIChzdGVuY2ls
RnVuYyk6CisgICAgICAgIChzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5jaWxN
YXNrKToKKyAgICAgICAgKHN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoc3RlbmNpbE9w
KToKKyAgICAgICAgKHN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmYp
OgorICAgICAgICAodGV4UGFyYW1ldGVyaSk6CisgICAgICAgICh1bmlmb3JtMWYpOgorICAgICAg
ICAodW5pZm9ybTFmdik6CisgICAgICAgICh1bmlmb3JtMWkpOgorICAgICAgICAodW5pZm9ybTFp
dik6CisgICAgICAgICh1bmlmb3JtMmYpOgorICAgICAgICAodW5pZm9ybTJmdik6CisgICAgICAg
ICh1bmlmb3JtMmkpOgorICAgICAgICAodW5pZm9ybTJpdik6CisgICAgICAgICh1bmlmb3JtM2Yp
OgorICAgICAgICAodW5pZm9ybTNmdik6CisgICAgICAgICh1bmlmb3JtM2kpOgorICAgICAgICAo
dW5pZm9ybTNpdik6CisgICAgICAgICh1bmlmb3JtNGYpOgorICAgICAgICAodW5pZm9ybTRmdik6
CisgICAgICAgICh1bmlmb3JtNGkpOgorICAgICAgICAodW5pZm9ybTRpdik6CisgICAgICAgICh1
bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgICh1c2VQcm9ncmFtKToKKyAgICAgICAgKHZhbGlk
YXRlUHJvZ3JhbSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAodmVydGV4QXR0cmliMmYpOgorICAgICAgICAodmVydGV4QXR0
cmliMmZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjNmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0
ZnYpOgorICAgICAgICAodmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgICh2aWV3cG9ydCk6
CisgICAgICAgIChidWZmZXJEYXRhMCk6CisgICAgICAgIChidWZmZXJEYXRhMSk6CisgICAgICAg
IChidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMCk6CisgICAgICAgIChyZWFk
blBpeGVsczEpOgorICAgICAgICAodGV4SW1hZ2UyRDApOgorICAgICAgICAodGV4SW1hZ2UyRDEp
OgorICAgICAgICAodGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UyRDEpOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQwKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJ
bWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAo
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQxKToKKyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWQp
OgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoZGVsZXRl
VmVydGV4QXJyYXkpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChiaW5kVmVy
dGV4QXJyYXkpOgorICAgICAgICAoY29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoZnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoaW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyZWFkQnVmZmVyKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgICh0ZXhT
dG9yYWdlMkQpOgorICAgICAgICAodGV4U3RvcmFnZTNEKToKKyAgICAgICAgKHRleEltYWdlM0Qw
KToKKyAgICAgICAgKHRleEltYWdlM0QxKToKKyAgICAgICAgKHRleFN1YkltYWdlM0QwKToKKyAg
ICAgICAgKHRleFN1YkltYWdlM0QxKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTNEKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1h
Z2UzRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKToKKyAgICAgICAgKGNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChnZXRGcmFnRGF0YUxvY2F0aW9uKToK
KyAgICAgICAgKHVuaWZvcm0xdWkpOgorICAgICAgICAodW5pZm9ybTJ1aSk6CisgICAgICAgICh1
bmlmb3JtM3VpKToKKyAgICAgICAgKHVuaWZvcm00dWkpOgorICAgICAgICAodW5pZm9ybTF1aXYp
OgorICAgICAgICAodW5pZm9ybTJ1aXYpOgorICAgICAgICAodW5pZm9ybTN1aXYpOgorICAgICAg
ICAodW5pZm9ybTR1aXYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAg
KHVuaWZvcm1NYXRyaXgzeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAg
ICAgICAodW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzeDRmdik6
CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliSTRp
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1
aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcik6CisgICAgICAgIChkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChkcmF3QnVm
ZmVycyk6CisgICAgICAgIChjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKGNsZWFyQnVmZmVydWl2
KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmaSk6Cisg
ICAgICAgIChjcmVhdGVRdWVyeSk6CisgICAgICAgIChkZWxldGVRdWVyeSk6CisgICAgICAgIChp
c1F1ZXJ5KToKKyAgICAgICAgKGJlZ2luUXVlcnkpOgorICAgICAgICAoZW5kUXVlcnkpOgorICAg
ICAgICAoZ2V0UXVlcnkpOgorICAgICAgICAoZ2V0UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChj
cmVhdGVTYW1wbGVyKToKKyAgICAgICAgKGRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoaXNTYW1w
bGVyKToKKyAgICAgICAgKGJpbmRTYW1wbGVyKToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGZlbmNl
U3luYyk6CisgICAgICAgIChpc1N5bmMpOgorICAgICAgICAoZGVsZXRlU3luYyk6CisgICAgICAg
IChjbGllbnRXYWl0U3luYyk6CisgICAgICAgICh3YWl0U3luYyk6CisgICAgICAgIChnZXRTeW5j
aSk6CisgICAgICAgIChjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChpc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiZWdpblRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KToKKyAgICAgICAgKHBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAocmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoYmlu
ZEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKGdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKGdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAg
ICAgKGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAodW5pZm9ybUJsb2NrQmlu
ZGluZyk6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZlckFOR0xFKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAg
KGNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKGlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChp
bnNlcnRFdmVudE1hcmtlckVYVCk6CisgICAgICAgIChwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAg
ICAgICAocG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoZHJhd0J1ZmZlcnNFWFQpOgorICAg
ICAgICAoZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRh
c2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaC4KKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OkFycmF5UmVmZXJlbmNlKToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
QXJyYXlSZWZlcmVuY2U6OnZlY3RvciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJl
ZmVyZW5jZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OndyYXBGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmluZ1Jl
ZmVyZW5jZS5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgICogU2hhcmVkL3NvdXAvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzU291cC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2VydGlm
aWNhdGVJbmZvPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZp
Y2F0ZUluZm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlv
blNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuY3BwLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNv
bnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0
aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENv
bG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xv
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
RGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1
cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
b250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdp
ZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00Zik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4
QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFn
ZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29t
cHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNh
bXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZl
cnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJr
ZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
b3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50
ZXJmYWNlaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRVc2VH
UFVQcm9jZXNzRm9yV2ViR0wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisKIDIwMjAtMTItMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgR1BVIFByb2Nlc3M6IElPU3VyZmFjZXMgc2hvdWxkIG5vdCBi
ZSBtYXBwZWQgaW50byB0aGUgV2ViIENvbnRlbnQgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYTcyM2FlMDYzNzNkMmY1ZjVmZDAyZjdjMTgyOGYzMmYxNzAxYjVhNC4uZTNkZTA3OTY2N2Jj
YWFhODFjZTViOTUzNTAyNDI1OWJhMjZjM2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjQ4
LDYgKzEyNDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNmZWIw
MzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4OGJkNDA3N2EwYzU0
YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMTEs
MTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lu
dFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNv
cmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgyZGY4ODdiMWIwYzRkNGI4
MTJjYmZlNWEwNmRlYWU0MTgxMjBlMmIuLjEwNzE0ZjNmNGE1NjhmZmQwZDE1Njk0MDJlMGVjZGM0
Nzg3MDE3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJjNzk1MjZiYzZjZDE0
M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQwMGIwZmNlMjQxZWZm
YjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiArMzU3LDE0IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2Nv
YS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmU3
ZTlmZDJiOTFlYjgxMDEzNDU2MGRmZmQ4MGFjZDIxMGIzZmRjMC4uM2I0NDA5ZWIwNmRhYzg3ZDE5
ZDVhYzI5OWFiOTEyODJiZjg5ZWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Myw3ICsyMDUzLDcgQEAKIAkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xB
bnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcw
MDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdG
QjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9u
c0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3
RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07CisJCTZFNjdEMkE5
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDMyMjlD
OUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEUy
MjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RjIyOURD
RDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAv
KiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Nyw2ICsyMjQ3LDggQEAK
IAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAw
QzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEw
MzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjkwNDE3MDI1
NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVD
QjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIz
NEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUy
NTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3Mzgx
RkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAv
KiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjksOSArMTAyMzEsMTQgQEAK
IAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAx
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI0MjU0
QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTUyNTcxMkU5MTAw
MzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTcyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNldHRpbmdz
LmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNFMjRGQUQzNjAw
MDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5p
ZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjIxLDYgKzI2NjI4LDggQEAKIAkJCQkwNzRFODJCOTE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0Yx
M0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJN0I5MDQxNkUyNTUw
MTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJ
CQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywK
IAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywK
IAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAt
MjY3ODcsNiArMjY3OTYsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBENkExMjJBMjRFOTAw
MkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJG
MzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJCQkJN0I2REM4MTUy
NTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNw
cCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1OTU5NjIxNDZERjc4
MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RBNTk1OTcyMTQ2REY3
ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2Nzk4LDYgKzI2ODA5
LDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4RkIg
LyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0
QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlD
REVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJ
CQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJ
CQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
ICovLApAQCAtMzIwOTksNiArMzIxMTEsNyBAQAogCQkJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUzQyAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNCOUU5MjM3
NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVhZGVycyAqLywKQEAg
LTM0MDM1LDYgKzM0MDQ4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2
MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJl
bW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0
RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVjNzE3NDU5N2YwNmUw
ZTUwOWU3OGZhYS4uNmM3ODNiZDIyYmRmMTJlYTRjMDNkMzcxM2QwZWU3Yzc5MTE0ZGNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTY4MSwxNyArNjgxLDggQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAg
ICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ly8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZlclN1YkRhdGEoKSBjYWxscyB0byB1
c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0ciA9IG1fY29udGV4dC0+bWFwQnVm
ZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNldC51bnNhZmVHZXQoKSwgc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0aFB0ci51bnNhZmVHZXQoKSAqIGNo
ZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4o
ZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZz
ZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICogZWxlbWVudFNpemUpOwotCi0gICAg
aWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkpCi0gICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdldEJ1ZmZlclN1
YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZmZXIiKTsKLSNlbmRpZgotICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgbV9jb250ZXh0
LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9mZnNldCwgbWFrZUdDR0xTcGFuKHN0
YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVP
ZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBjb3B5TGVuZ3RoICogZWxlbWVudFNp
emUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCkBAIC0xOTY3LDkgKzE5
NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRl
cihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0UXVl
cnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRR
dWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8V2ViR0xT
YW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAgLTIwNTks
MTcgKzIwNDgsMTEgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxl
clBhcmFtZXRlcihXZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1M6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAg
ICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVyaXYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIu
b2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01B
WF9MT0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0g
ICAgICAgIGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFy
YW1ldGVyZnYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5f
TE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0
ZXIiLCAiSW52YWxpZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0ODUs
MjQgKzI0NjgsMjQgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2
ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZl
Y3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKLSAgICAKICAg
ICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9U
WVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX1RZUEU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGVudW0+KHgpOyB9KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX1NJWkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKKyAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19JTkRFWDoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX09GRlNFVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0FSUkFZX1NUUklERToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX01B
VFJJWF9TVFJJREU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
SVNfUk9XX01BSk9SOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9y
bUluZGljZXMsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lT
X1JPV19NQUpPUjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
Pih4KTsgfSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtcyIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3
Miw4ICszNTU1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEcKIAogICAgIGNsZWFySWZDb21w
b3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwogCi0gICAgR0NHTHNpemVpIGxlbmd0aCwgY29sdW1u
cywgcm93czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVz
dEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgJmxlbmd0aCwgJmNv
bHVtbnMsICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpLCB0cnVlKTsK
KyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDQwMDcxY2EyM2Iy
YzM1NWUxZTgxMDY0NjE3ZDUyYjlkMmZiODdhYzYuLmY3YzZhMmU4MmE0YmYwMzdhMWI0NzdkNzgz
ZmE1NDFhYzRmNTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MzIsOCArNzMyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0KLQotICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRl
cywgaG9zdFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAg
ICAgaWYgKGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3Bh
dGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250
ZXh0Y3JlYXRpb25lcnJvckV2ZW50LApAQCAtNDM5NSwxNSArNDM5NCwxMiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aAogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAog
I2lmIFVTRShBTkdMRSkKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBHQ0dMc2l6ZWkg
Y29sdW1ucyA9IDA7Ci0gICAgR0NHTHNpemVpIHJvd3MgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJv
d3MsIGRhdGEsIGZhbHNlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVu
Z3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxz
LmJ5dGVMZW5ndGgoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJk
NTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdl
YkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFwaGljc0Nv
bnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5jU3RhdHVz
KTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5
bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBpZiAobV9z
eW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAgICBzY2hl
ZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5k
ZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjliODZiYzMx
ODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
NTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVybiBtX2Ns
aWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShX
RUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJRCBDaHJv
bWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsK
QEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1fcGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQorICAgIC8v
IFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQgd29yaywg
cmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3NjQxZDAx
NDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEzY2ZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYK
KwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1
bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAz
YTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0OTkwMzc1
ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMg
dGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RX
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRleCA0M2Ri
MWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2MzMzdiMmU1
MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAvLyBNZXRo
b2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUyZmIzLi43
YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMzQsMTMg
KzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1
cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7
IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0luV2ViUHJv
Y2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3Mo
KTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZiZDFkNDNj
MDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFmNjRhYTBk
ZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC05Niw2
ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1bmRsZUlz
V2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJv
b2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07CisgICAgcmV0
dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNz
KCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9IFtbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4NjczNDQ3
NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAt
MjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9j
b21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NUQVRVU19L
SFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNp
b24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAvLyBHTF9B
UkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVy
cyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwog
CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQot
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7
CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAg
ICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNp
emVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKQEAg
LTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQU1E
KCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3QgYmUg
YXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZp
Z3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkZjRhMTE5
YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIxYWVhN2E1
YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQSElDU19D
T05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0
Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpAQCAt
NDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1bHQ7
CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhv
c3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdMOjpH
cmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJzKGF0
dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1MmRjNmVm
My4uNTYxM2NiMmY2YzkxMjcwYWJkMWJkNGU2NzEwMzllOGYyYzgwZmZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBA
IC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZvciBp
bXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgogICAg
IC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGljOgogICAg
ICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGljc0Nv
bnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24gaW4g
Y29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0IHRo
ZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBH
cmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAot
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRl
cnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgYWN0
aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFj
aFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05ODAsNyAr
OTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhD
b3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgPSAwOwog
CiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0dHJpYgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSA9
IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NH
TGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0xMTI0LDgg
KzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50
cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50
cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgR0NH
THZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAgICB2aXJ0
dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBnZXRRdWVy
eU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpID0gMDsK
QEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pID0gMDsK
ICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xi
b29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSA9
IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTeW5jaXYo
R0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVz
ZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NHTHVpbnQ+
IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRl
cgpAQCAtMTM5NCw3ICsxMzk0LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1
cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgK
aW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3
NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQg
R0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hh
ciBHQ0dMY2hhcjsKK3R5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYg
dm9pZCBHQ0dMdm9pZDsKKworLy8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0
Y2ggdGhlIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZp
bGUgZm9yIGFsbCBwbGF0Zm9ybXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBl
ZGVmIGludHB0cl90IEdDR0xzaXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19H
THN5bmMqIEdDR0xzeW5jOwotdHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1p
Y0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1
Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNp
dCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0
YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6
ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAg
ICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBH
Q0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwg
c3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAg
ICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAg
ICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6
OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQor
ICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0
YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBU
KiBkYXRhOwpAQCAtNzksNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50
PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBk
YXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDEx
IEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0
YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdD
R0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXpl
b2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1
ZlNpemU7CiB9OwpAQCAtMTUyLDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilb
Tl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4o
V1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihX
VEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3Qg
Y291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTBmMzMwNzA1NjA3NWNhOWFjNGU2M2FkNjY2MjM0ZDY5ZjA0MzIxMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cnMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpID0gZGVmYXVsdDsKKworUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1HcmFw
aGljc0NvbnRleHRHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK0V4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiAqdGhp
czsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVu
Y2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRG
b3JDcmVhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCkuaXNXZWJHTDI7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAg
Ly8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKQorICAgICAgICBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAg
ICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBtX2xheWVyQ29t
cG9zaXRlZCA9IHRydWU7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Cisg
ICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXJz
VG9BdXRvQ2xlYXIgPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICAg
ICAgaWYgKGF0dHJzLmRlcHRoKQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0g
R3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5z
dGVuY2lsKQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250
ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICB9CisgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaWRDb21wb3NpdGUo
KTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVh
cihHQ0dMYml0ZmllbGQgYnVmZmVycykKK3sKKyAgICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCku
cHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IGJ1
ZmZlcnM7Cit9CisKK0dDR0xiaXRmaWVsZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJz
VG9BdXRvQ2xlYXI7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpl
bmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQoreworICAgIC8vIFJlZGVjbGFyZWQgZm9yIGV4
cG9ydCByZWFzb25zLgorICAgIC8vIEZJWE1FOiBUaGUgd2hvbGUgZnVuY3Rpb24gc2hvdWxkIGJl
IHJlbW92ZWQuCisgICAgR3JhcGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1
ZmZlcigpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgeworICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOworICAgICAgICBt
X2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxp
emUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRl
bnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChl
eHRlbnNpb24pOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKworUGxhdGZv
cm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkyMjUzNTYx
MDFjNWNkNjQwNDFmYjFhMWI3N2RlOTAxZTNmNTJjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKK09CSkNfQ0xBU1MgV2ViR0xMYXllcjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluOworI2VuZGlmCisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgcHJveHkgc2lkZSBpbXBsZW1lbnRhdGlvbgorLy8gVGhpcyBpbXBsZW1lbnRz
IHRoZSBwYXJ0cyB0aGF0IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6
CisvLyAtIERyYXdpbmcgYnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCisvLyAtIENvbXBvc2l0
aW5nIHN1cHBvcnQuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNH
TCB7CitwdWJsaWM6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5h
YmxlZDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0woKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVy
ZSgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyAgICB2
b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0ZWQo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0Zmll
bGQpIGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciopIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOworICAg
IHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CisKKyNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXND
VigpIGZpbmFsOworI2VuZGlmCisgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3ZlcnJpZGVzLgor
ICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOworICAgIGJvb2wgc3VwcG9ydHMoY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYp
IGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAgIHZpcnR1YWwg
dm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2FwQ2hhaW4oKTsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
KyNlbmRpZgorCisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgorICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJp
bmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5h
YmxlZEV4dGVuc2lvbnM7CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIgY2xlYXIgdHJh
Y2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBtX2xheWVyQ29t
cG9zaXRlZCA9IGZhbHNlOworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9
IHsgMCB9OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggMjgz
ZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2ZkODIzZDA4MWM1NWU0YS4uN2MxNTFmYTI4NTBmMzNjMTQ5
YTlkYzgyMjM4MWI4ZmNiZGU5Y2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtNDYs
MjggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVu
c2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUlu
ZGV4ZWRHZXRTdHJpbmcpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhm
YWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9pc05WSURJQShmYWxzZSkK
LSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0gICAgLCBtX2lz
SW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0
aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUo
ZmFsc2UpCiAgICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykK
IHsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwgcmVtb3ZlIHRoaXMgaW5pdGlhbGl6YXRpb24gYWx0
b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJzdW1lcyB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGdy
YXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4KLSAgICBtX3ZlbmRvciA9IFN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1ZFTkRPUikpKTsKLSAgICBt
X3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRT
dHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2ZW5kb3JDb21wb25l
bnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnICcpOwotICAg
IGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJudmlkaWEiKSkKLSAgICAgICAgbV9pc05W
SURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImF0aSIpIHx8
IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIpKQotICAgICAgICBtX2lzQU1EID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW50ZWwiKSkKLSAgICAgICAg
bV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW1h
Z2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0aW9uID0gdHJ1ZTsKIH0KIAogRXh0ZW5z
aW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKQEAgLTEwMyw3ICs4
Myw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1pbnQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQorR0xpbnQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHRHTDo6Tk9fRVJST1I7CiB9CkBAIC0xMTQsMTAgKzk0LDExIEBAIFN0cmluZyBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3Qgc2hhZGVyCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGludCBzb3VyY2VMZW5n
dGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9T
T1VSQ0VfTEVOR1RIX0FOR0xFKTsKKwogICAgIGlmICghc291cmNlTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0
aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMg
bnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBpbnQgcmV0dXJuZWRMZW5ndGggPSAwOworICAgIEdDR0xp
bnQgcmV0dXJuZWRMZW5ndGggPSAwOwogICAgIGdsOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkp
OwogICAgIGlmICghcmV0dXJuZWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwpAQCAtMTQ3LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVB
dmFpbGFibGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9u
cyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihs
b25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgw
LCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ss
IHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsK
ICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlLgogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKQEAgLTE1Niw3ICsxMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVi
dWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZwogICAgIGdsOjpC
bGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzUsNyArMjE2LDcgQEAgdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGJ1ZnMpCiAgICAgZ2w6OkRyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRh
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjQzLDE1ICsyMjQsMTUgQEAgdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2kKICAgICBnbDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
bG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKKyAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4ob2Zmc2V0
KSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTM1MCw3ICszMzEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0MTIsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
cG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM5LDcgKzQyMCw3IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC00NTYsNTUgKzQzNyw3
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpCiAgICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi0jaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotc3RhdGljIHZvaWQgd2lwZUFs
cGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMpCi17Ci0gICAgLy8gV2UgY2FuIGFzc3VtZSB0aGlzIGRvZXNuJ3Qgb3ZlcmZsb3cg
YmVjYXVzZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMKLSAgICAvLyB1c2UgY2hlY2tlZCBhcml0aG1l
dGljLgotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBwaXhlbHNbaSArIDNd
ID0gMjU1OwotfQotI2VuZGlmCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9p
ZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcg
aXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91
bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCi0gICAgZ2w6OkZsdXNoKCk7Ci0gICAg
YXV0byBhdHRycyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBHQ0dMZW51
bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1fY29udGV4dC0+bV9pc0ZvcldlYkdMMiA/IEdyYXBoaWNz
Q29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSOwotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRH
TFN0YXRlJiBzdGF0ZSA9IG1fY29udGV4dC0+bV9zdGF0ZTsKLSAgICBpZiAoYXR0cnMuYW50aWFs
aWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8p
IHsKLSAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KElu
dFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVy
KGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fZmJvKTsKLSAgICAgICAgZ2w6OkZsdXNo
KCk7Ci0gICAgfQotICAgICh2b2lkKSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpOwotICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBkYXRh
KTsKLSAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKLSAgICBpZiAoYXR0cnMuYW50
aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVG
Qk8pCi0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fY29u
dGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgLy8g
QU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNSb2J1c3RBTkdM
RSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKLSAgICAgICAgLy8gc3ludGhldGljIGVy
cm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93LgotICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBp
ZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYmICFhdHRycy5hbHBoYSAmJiAoZm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRH
TDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpICYm
IChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX2ZibyB8fCAoYXR0cnMuYW50aWFs
aWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8p
KSkKLSAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKLSNlbmRpZgotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MTIsNyAr
NDQ1LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1mdlJv
YnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTIwLDcgKzQ1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sCiAgICAgZ2w6Okdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBhNzczMWRmZDIwYzVm
MDNhMzM1OTAzZmFhNmUzOGZmNzJmNGIyMzIzLi5jYmY0OThiZDdjMWExYWI5YWE2YjcwZmI1ZDM4
YWM0YjkyZmIwMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTU2LDIxICs1NiwxMiBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBz
cmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9u
ZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNp
Z25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywg
dW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBs
b25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlk
ZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9
Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KLSAgICBib29s
IGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBib29sIGlzSW1h
Z2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KLSAgICBTdHJp
bmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAgIGJvb2wgcmVx
dWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVp
cmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0
ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJp
Y3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2
b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
IG92ZXJyaWRlOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2
b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5z
LCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CkBAIC05Nyw3ICs4OCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVh
ZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTEzMCwx
OCArMTIwLDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0
OwogCi0gICAgYm9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1f
aXNJbnRlbDsKLSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZTsKLQogICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFs
c2UgfTsKIAotICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKLQog
ICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRl
cmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xD
b2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZl
ckZsb2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmlu
ZGV4IDEyN2EzYjhkYmEzYzNmNDRjZDc2NWRkOGZjNzExY2RkODc4ZGU5YTQuLjFkNjA0YjcxZDQ4
MTRmNTk3YzJjMmZjODllZGM5NjQ4ZGMxM2M3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCkBAIC00NDMsMzIgKzQ0Myw1MyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgZGF0YS5kYXRhLCBmYWxzZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2Fz
dDxHQ0dMdm9pZCo+KG9mZnNldCksIHRydWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkKIHsKLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBjYWxscyB3
aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBwcmV2aW91cyBy
ZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJ
WE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMg
Zml4ZWQsIGkuZS4sCisgICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQg
YmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAgICAgYXV0
byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgR0NHTGVudW0gZnJhbWVidWZmZXJU
YXJnZXQgPSBtX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZG
RVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgaWYgKGF0dHJzLmFudGlh
bGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CisgICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9zdGF0ZTsKKyAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5n
SWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fZmJvKTsKICAgICAgICAgZ2w6OkZs
dXNoKCk7CiAgICAgfQotICAgIGdsOjpSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YSk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQorICAgIG1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpOworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBk
YXRhKTsKKyAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKKyAgICBpZiAoYXR0cnMu
YW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAg
ICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX211bHRpc2FtcGxl
RkJPKTsKIAorICAgIGlmIChlcnJvcikgeworICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZh
aWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFj
ZSB0aGlzIGluIHRoZQorICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAg
dGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpC
R1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0
ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykpKQorICAgIGlmICghcmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAo
dHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJvdW5k
UmVhZEZCTyA9PSBtX2ZibyB8fCAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZC
TyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCiAgICAgICAgIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4
ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihkYXRhKSk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAjZW5k
aWYKIH0KIAotCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21t
b24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pCkBAIC04OTgsMjAgKzkxOSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
CiAgICAgZ2w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0
YS5kYXRhKTsKIH0KIAotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJh
bmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5n
dGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGdsOjpNYXBCdWZmZXJSYW5nZSh0
YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwotfQotCi1HQ0dMYm9vbGVhbiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQotewotICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAg
IHJldHVybiBnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIEdD
R0x2b2lkKiBwdHIgPSBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVm
U2l6ZSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisg
ICAgICAgIHJldHVybjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7
CisgICAgaWYgKCFnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRh
cmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGlu
dHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpCkBAIC0xMDA4LDE0ICsxMDI1LDE1
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsCiAgICAgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3Rv
cjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZl
Y3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBW
ZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7CiAgICAgQVNT
RVJUKHByb2dyYW0pOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZv
cm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRh
KCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5h
bWUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0xlbnVtIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRh
cmdldCkKQEAgLTIxMDEsMjIgKzIxMTksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAg
IHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVl
LmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7
Ci19Ci0KIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjM5MiwxMiArMjM5NCwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiAgICAgZ2w6OkVuZFF1
ZXJ5KHRhcmdldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5
T2JqZWN0dWl2KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHBhcmFtcykK
K0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKEdDR0x1
aW50IGlkLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMdWludCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFF1ZXJ5T2JqZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgMSwgbnVs
bHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIC8vIFRyYW5zZm9ybSBGZWVk
YmFjayBGdW5jdGlvbnMKQEAgLTI4MzksMjAgKzI4NDIsMjQgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW4KICAgICBnbDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGZsb2F0IHZhbHVlID0gMC5mOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6
R2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRy
LCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBm
bGFncykKQEAgLTI4OTUsMTIgKzI5MDIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAg
ICBnbDo6V2FpdFN5bmMoc3luYywgZmxhZ3MsIHRpbWVvdXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lKQogewor
ICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFN5bmNp
dihzeW5jLCBwbmFtZSwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUpOworICAgIGdsOjpHZXRTeW5j
aXYoc3luYywgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNzM1OTdmNDc1M2QwYmVjMWQwMmU3ZDVmY2ZkYzY0M2E5ODNjODhk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFBM
QVRGT1JNKENPQ09BKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluOjp+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4o
KSA9IGRlZmF1bHQ7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWU4OGMyZjk5YjFjYWE1ODEx
N2M3MzkxMWE1MWI2N2RkZTYzMmJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUkFQSElD
U19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIklPU3VyZmFjZS5o
IgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBbiBpbnRl
cmZhY2UgZm9yIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVm
ZmVyaW5nIHN3YXAKKy8vIGNoYWluIG9mIElPU3VyZmFjZXMuCisvLyBUaGUgaW1wbGVtZW50b3Ig
d2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KKy8vIFRoZSBjbGll
bnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2lsbCByZWNlaXZl
IHRoZSBtZXRhZGF0YQorLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJlZW4gZGlzcGxh
eWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5CisvLyBiZSBhYmxl
IHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCisvLyBFeGFtcGxlIHVz
ZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBhcyB0aGUgbWV0
YWRhdGEuIFRoaXMgd2F5CisvLyB3aGVuIHRoZSBkaXNwbGF5IGNsaWVudCBpcyBkb25lIHdpdGgg
dGhlIElPU3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1c2luZworLy8g
dGhlIGV4aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVyIHJlY3ljbGUg
bG9naWMuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4oKTsKKyAgICBzdHJ1Y3QgQnVmZmVyIHsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4K
KyAgICAgICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OyAvLyBQcm9kdWNlciBzcGVjaWZpYyBt
ZXRhZGF0YSBoYW5kbGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCisgICAgfTsKKyAgICAvLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgor
ICAgIC8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hpcCBvZiB0aGUg
Y29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhlCisgICAgLy8g
dGltZSBvZiB0aGUgY2FsbC4KKyAgICAvLyBSZXR1cm5zIGVpdGhlcjoKKyAgICAvLyAtIEVtcHR5
IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVkLgorICAgIC8vIC0gQnVmZmVy
IHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRsZSBpZiB0aGUg
cmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKKyAgICAvLyAgIGJ1dCB0aGUgc3VyZmFjZSBp
cyBzdGlsbCBpbiB1c2UuCisgICAgLy8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCisgICAgdmlydHVh
bCBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpID0gMDsKKworICAgIC8vIFByZXBhcmVzIHRoZSB0YXJn
ZXQgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgdHJh
bnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVm
ZmVyYC4KKyAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsKKworICAgIC8vIERl
dGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVy
IG1ldGFkYXRhIGhhbmRsZS4KKyAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJl
ZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUg
Y2FsbGluZworICAgIC8vIHRoaXMuCisgICAgdmlydHVhbCB2b2lkKiBkZXRhY2hDbGllbnQoKSA9
IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29jb2EubW0KaW5kZXggMmUxYzc5OWU4Mjg1M2IzMjBiOGNlZGRkNGE2ZmU1ZTUwNGE5ZDg5Yy4u
NDg5ZTQ1ZmNjZTYzYmQ4NTU4N2E0ODMyODk4ZDkzMjQxMWNlOWYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBv
cnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xF
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0
ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0
YXRpYyBFR0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JW
ZXJzaW9uID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5
IGRpc3BsYXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1
cHBvcnQgPSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRo
Vm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJv
Y2VzcygpKTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBw
b3J0KSB7CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xh
dGlsZSBwbGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2lu
Y2UgY2xpZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFs
IGNvbnRleHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAg
IGlmIChHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNU
b29NYW55Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7
CiAKICAgICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hh
cmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8g
aG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQu
Y29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlv
bigpLCAmc2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygp
LCBob3N0V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0
LnB0cigpLCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JH
UFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51
bGxwdHIsIHN3YXBDaGFpbikpOworfQorCiAjaWYgUExBVEZPUk0oTUFDKSAvLyBGSVhNRTogVGhp
cyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+
LgogCiBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0
T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9SZWdpc3RyeUdQVUlEIHBy
ZWZlcnJlZEdQVUlEKQpAQCAtMjA0LDggKzIxMCw4IEBAIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVn
aXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVs
CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCi0gICAg
OiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBE
ZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFyZWRDb250ZXh0KQogewogICAgIG1faXNGb3JXZWJH
TDIgPSBhdHRycy5pc1dlYkdMMjsKIApAQCAtMjkzLDI2ICsyOTksMjggQEAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHQKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgZ2w6OkVuYWJsZShH
cmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgpOwogCisgICAg
VmVjdG9yPEFTQ0lJTGl0ZXJhbCwgND4gcmVxdWlyZWRFeHRlbnNpb25zOworICAgIGlmIChtX2lz
Rm9yV2ViR0wyKSB7CisgICAgICAgIC8vIEZvciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1ZXJpZXMg
dG8gd29yay4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX29jY2x1
c2lvbl9xdWVyeV9ib29sZWFuIl9zKTsKKyAgICB9CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRl
bnNpb25zKCk7Ci0KICAgICBpZiAoIW5lZWRzRUFHTE9uTWFjKCkpIHsKLSAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZXF1aXJlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAg
ICAgICJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSIsIC8vIEZvciBJT1N1cmZhY2UtYmFja2Vk
IHRleHR1cmVzLgotICAgICAgICAgICAgIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIs
IC8vIEZvciBjcmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCi0gICAg
ICAgIH07Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHJlcXVpcmVkRXh0ZW5zaW9ucyk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFleHRlbnNpb25z
LnN1cHBvcnRzKHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSkpIHsKLSAgICAgICAgICAgICAgICBMT0co
V2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCByZXF1aXJlZEV4dGVuc2lv
bnNbaV0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRm9yIElPU3VyZmFj
ZS1iYWNrZWQgdGV4dHVyZXMuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdM
X0FOR0xFX3RleHR1cmVfcmVjdGFuZ2xlIl9zKTsKKyAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRo
ZSBFR0wgc3VyZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNp
b25zLmFwcGVuZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHJlcXVpcmVkRXh0
ZW5zaW9uc1tpXSk7CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRB
TFlTVCkKKyAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7Cisg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAg
aWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgIExPRyhX
ZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIGV4dGVuc2lvbi5jaGFyYWN0
ZXJzKCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGV4dGVuc2lv
bnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8v
IEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgTUFDQ0FUQUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3Rl
cHMgYXMgd2VsbCwgYnV0IHRoYXQKICAgICAvLyB3b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNj
cmVlbk1hYyBjb2RlIHRvIGJlIGV4cG9zZWQgdG8gQ2F0YWx5c3QgdG9vLgpAQCAtMzMxLDEzICsz
MzksMTcgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hh
bmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAotICAgIC8vIENyZWF0ZSB0aGUgV2ViR0xMYXllcgor
ICAgIGlmIChzd2FwQ2hhaW4pCisgICAgICAgIG1fc3dhcENoYWluID0gc3dhcENoYWluOworICAg
IGVsc2UgewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBtX3dlYkdM
TGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7
CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBM
YXllciJdOwogI2VuZGlmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBt
X3N3YXBDaGFpbiA9ICZbbV93ZWJHTExheWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8g
Q3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIu
CiAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBA
IC00MDYsMTMgKzQxOCwxMiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKCkKICAgICAgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQog
ICAgICAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdC
dWZmZXJGQk8pOwogICAgIH0KLSAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2Uo
bV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExh
eWVyKSB7Ci0gICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3lj
bGVCdWZmZXJdOworICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJl
Y3ljbGVCdWZmZXIoKTsKICAgICAgICAgaWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAg
ICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhh
bmRsZSk7Ci0gICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFj
aENsaWVudF07CisgICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0
YWNoQ2xpZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVH
TF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBA
IC01NzUsMTEgKzU4NiwxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBl
RGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0g
RUdMX05PX1NVUkZBQ0U7CiAgICAgfQogICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQg
YnVmZmVyIG5vdywgYmVjYXVzZSBpdCBtb3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBh
dCB0aGUgdGltZSBpdCB3aWxsIGJlIHJldXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0g
W21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0g
bV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFu
ZGxlKQogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1
ZmZlci5oYW5kbGUpOwogICAgIHJlY3ljbGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICBy
ZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKQoreworICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5
KCkpOwogICAgIGF1dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwog
ICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygp
IGNvbnN0CiAgICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3Rl
ZCB0byBhIGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVu
IGNvbnNpZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5z
CiAgICAgLy8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVu
IGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUg
d2lsbCBzdGlsbCBiZSBhIFdpbmRvd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBX
ZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlv
biwgYW5kCiAgICAgLy8gbV9kaXNwbGF5TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNl
LgogICAgIGlmIChwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC02ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJv
bSBvdGhlciBncmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGds
OjpGbHVzaCgpOwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVj
eWNsZUJ1ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5
Y2xlQnVmZmVyKCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9k
aXNwbGF5QnVmZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVy
IHByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJC
YWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVz
ZW50KHsgV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1
ZmZlciB9KTsKICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAK
ICAgICBib29sIGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBF
cnJvciB3aWxsIGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgp
IHdoaWNoIHdpbGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNO
ZXdCYWNraW5nKQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAg
ICAgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0
NTUwOWM3NDI5ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQorewor
ICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXll
ciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8g
Y29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBb
bV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV93ZWJHTExheWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQorR3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmFzQ1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVy
IHN3YXBDaGFpbl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFj
N2M5N2NmNjZlNzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3
ZWE4ODA5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaW1wb3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNp
bXBvcnQgPG1lbW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1zdHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5k
bGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZm
ZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFj
ZXMuCi0vLyBUaGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlz
cGxheS4KLS8vIFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFj
ZSBhbmQgd2lsbCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZh
Y2UgaGFzIGJlZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vz
c2FyaWx5Ci0vLyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1
c2UuCi0vLyBFeGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2Ug
YmluZGluZyBhcyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVy
IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRp
bnVlIHVzaW5nCi0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBi
dWZmZXIgcmVjeWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAog
LSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNv
bnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJ
bWFnZVNuYXBzaG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwog
Ci0vLyBSZXR1cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMg
YnVmZmVyLgotLy8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9m
IHRoZSBjb250ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8v
IHRpbWUgb2YgdGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVy
IGlmIG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5
IHN1cmZhY2UgYW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1
ZmZlciB3YXMgYXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2Uu
Ci0vLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIp
cmVjeWNsZUJ1ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGgg
YSBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2Yg
dGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZv
ckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwot
Ci0vLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRz
IGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZl
IGJlZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZv
cmUgY2FsbGluZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLm1tCmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMu
LjM4NTk3ZTRhOGY2MzNhNWVlNWRiNzQ5MzMwMjJkYzIzN2ZlN2U0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAt
MzIsMTMgKzMyLDM5IEBACiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIlBs
YXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKwor
Y2xhc3MgV2ViR0xMYXllclN3YXBDaGFpbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2Vi
R0xMYXllclN3YXBDaGFpbihXZWJHTExheWVyKiBsYXllcikgIDogbV9sYXllcihsYXllcikgeyB9
OworICAgIH5XZWJHTExheWVyU3dhcENoYWluKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworICAgIHZv
aWQgcHJlc2VudChCdWZmZXIpIG92ZXJyaWRlOworICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKKyAg
ICAgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKKyAgICAgICAg
ICAgICAgICBtX3NwYXJlQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKG1fc3BhcmVCdWZmZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorICAgIHZvaWQqIGRldGFjaENsaWVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9
IG1fZGlzcGxheUJ1ZmZlci5oYW5kbGU7CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUg
PSBudWxscHRyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBXZWJDb3JlOjpJ
T1N1cmZhY2UqIGRpc3BsYXlTdXJmYWNlKCkgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLnN1cmZh
Y2UuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgQnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBC
dWZmZXIgbV9zcGFyZUJ1ZmZlcjsKKyAgICBXZWJHTExheWVyKiBjb25zdCBtX2xheWVyOworfTsK
IAogQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIgewotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJC
dWZmZXIgX2NvbnRlbnRzQnVmZmVyOwotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX3Nw
YXJlQnVmZmVyOwotCiAgICAgQk9PTCBfcHJlcGFyZWRGb3JEaXNwbGF5OworICAgIE9wdGlvbmFs
PFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2FwQ2hhaW47CiB9CiAKIC0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQpAQCAtNDcsNiArNzMsNyBAQAogICAgIHNlbGYudHJhbnNmb3JtID0g
Q0FUcmFuc2Zvcm0zRElkZW50aXR5OwogICAgIHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50
c09wYXF1ZTsKICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOworICAg
IF9zd2FwQ2hhaW4uZW1wbGFjZShzZWxmKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNzMs
MzAgKzEwMCwyMSBAQAogICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KLQotLSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgcmVjeWNsZUJ1ZmZl
cgorLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2Fw
Q2hhaW4KIHsKLSAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKLSAgICAgICAgaWYgKF9z
cGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCi0gICAgICAgICAgICBfc3BhcmVCdWZmZXIu
c3VyZmFjZS5yZXNldCgpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShfc3BhcmVCdWZmZXIpOwot
ICAgIH0KLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBfc3dhcENoYWluLnZhbHVlKCk7CiB9
CiAKLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdM
TGF5ZXJCdWZmZXIpIGJ1ZmZlcgorLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheQogewotICAgIEFT
U0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIF9zcGFyZUJ1ZmZlciA9IFdURk1vdmUo
X2NvbnRlbnRzQnVmZmVyKTsKLSAgICBfY29udGVudHNCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0g
WUVTOwogfQogCiAtICh2b2lkKWRpc3BsYXkKIHsKLSAgICBpZiAoX2NvbnRlbnRzQnVmZmVyLnN1
cmZhY2UgJiYgX3ByZXBhcmVkRm9yRGlzcGxheSkgewotICAgICAgICBzZWxmLmNvbnRlbnRzID0g
X2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpOworICAgIGlmIChfc3dh
cENoYWluLT5kaXNwbGF5U3VyZmFjZSgpICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKKyAgICAg
ICAgc2VsZi5jb250ZW50cyA9IF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCktPmFzTGF5ZXJD
b250ZW50cygpOwogICAgICAgICBbc2VsZiByZWxvYWRWYWx1ZUZvcktleVBhdGg6QCJjb250ZW50
cyJdOwogICAgIH0KICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7CkBAIC0xMDYsMTMg
KzEyNCwxNCBAQAogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBOTzsKIH0KIAotLSAodm9pZCop
IGRldGFjaENsaWVudAorQGVuZAorCit2b2lkIFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnByZXNlbnQo
QnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBBU1NFUlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAg
ICB2b2lkKiByZXN1bHQgPSBfY29udGVudHNCdWZmZXIuaGFuZGxlOwotICAgIF9jb250ZW50c0J1
ZmZlci5oYW5kbGUgPSBudWxscHRyOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgQVNTRVJUKCFt
X3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgIG1fc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKG1fZGlz
cGxheUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAg
IFttX2xheWVyIHByZXBhcmVGb3JEaXNwbGF5XTsKIH0KLUBlbmQKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQppbmRleCAzOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi45OWFk
OTE2NTI1OTE4NzNlMGU4M2ZlODc4OTI1ZWNhMjMzYTFhMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0zNiw2ICszNiw3IEBACiAj
aW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgi
CiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAi
UGxhdGZvcm1JbWFnZUJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlR3JhcGhpYy5oIgogI2ltcG9y
dCA8Q29yZUltYWdlL0NJQ29udGV4dC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRl
eCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi5hZGQ1ZjM1MmFlNGRl
NmI2ZDVkYzE5MWU2NzNiNWFhZmE1NmRlOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5H
TChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dM
T3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTYsNyArNTYsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3Jj
WTAsIGxvbmcgc3JjWDEsIGxvbgogICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogI2VuZGlmCiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAjZW5k
aWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEcKICNlbmRpZgog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4
NjhiNTQ5OTNhNDQ0NDlhOC4uNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0Mzdi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wg
bWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kw
LCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRz
dFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVy
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGlu
dGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CkBAIC01Miw5ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBv
cEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9u
ZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2
MWZiYTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYi4uYjc4OTYwY2I0ODJlNGVmMmFiOThl
NDAzOTJhNjM1YmE3ZmZiN2JkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bi5jcHAKQEAgLTM2NiwxMSArMzY2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHMKICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50
LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqLCBib29sKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAq
KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNm
ZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhjNjQuLjZhM2EzOWZlM2ExYmE1YmQyNTk3NzE1ODk0
NzU2MWNjYWQ1YWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAg
LTkzLDcgKzkzLDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgs
IGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFk
aW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAKaW5kZXggMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMy4u
ZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5MWZiZTA3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMiBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9u
ZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVm
ZmVyKGxvbmcgLyogc3JjWDAgKi8sIGxvbmcgLyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8s
IGxvbmcgLyogc3JjWTEgKi8sIGxvbmcgLyogZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxv
bmcgLyogZHN0WDEgKi8sIGxvbmcgLyogZHN0WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAq
LywgdW5zaWduZWQgbG9uZyAvKiBmaWx0ZXIgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xl
bnVtKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwKICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhB
dHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1YjczOThk
MDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4My4uNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNmOTlh
N2RmYzJmNzhmYjRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDggKzc1
LDggQEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0
WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFz
aywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNh
bXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xp
bnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdD
R0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnNlcnRF
dmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFy
a2VyRVhUKHZvaWQpIG92ZXJyaWRlOwpAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lk
cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92
ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAogICAgIGludCBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IGMyNTViMGMxMmY0ZmNiZmE0NmRiMDJkNTVjODBiNGNiNzdkMTdiNzAuLjEw
MzU2ODhkMWNiZTliODBkMzkxMjI0NzhiZWRkOGQ5OGY2NTQ0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC01OCw2ICs1OCw5IEBACiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKK30K
ICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmIFVTRShOSUNPU0lBKQpAQCAtODYsNyAr
ODksNyBAQCB0eXBlZGVmIFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFt
ZUhhc2g7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMUHJpdmF0ZTsKIAotY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVi
bGljIEdyYXBoaWNzQ29udGV4dEdMCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywg
SG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbik7CkBAIC05
NCw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBS
ZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCYgc2hhcmVkQ29udGV4dCk7CisgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiopOworCiAgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb250ZXh0T2JqOyB9CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0
Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQpAQCAtMTkxLDcgKzE5Niw3IEBAIHB1
YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5p
Zm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZv
JikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQs
IEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAg
IHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNp
emVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJz
KTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1
ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBA
IC0yMTksOCArMjI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAg
ICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVy
dGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAK
ICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAg
LTIzNiw3ICsyMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xm
bG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2
b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkg
ZmluYWw7CkBAIC0zMTcsMTIgKzMyMSwxMCBAQCBwdWJsaWM6CiAjaWYgIVVTRShBTkdMRSkKICAg
ICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dM
ZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwogICAgIHZv
aWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNl
dCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5n
dGgpOwotICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0
LCBHQ0dMdWludCBsZW5ndGgpOwogI2VuZGlmCiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShH
Q0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFk
T2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7
CiAKLSAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSBmaW5hbDsK
LSAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAg
IHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGJsaXRGcmFtZWJ1
ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKICAg
ICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IGxheWVyKSBmaW5hbDsKQEAgLTM4NCw3ICszODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
bmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0
UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0
UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOworICAgIEdD
R0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgZmlu
YWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmlu
YWw7CkBAIC0zOTMsOCArMzk1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRl
cmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOwogICAgIC8vIGdl
dFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5h
bDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGZsb2F0
IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMc3luYyBm
ZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOwog
ICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgZmluYWw7CkBAIC00MDMsNyArNDA1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFn
cywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKICAg
ICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGF0IHRoZSBXZWJHTCBsZXZlbCBp
ZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3QuCi0gICAgdm9pZCBnZXRTeW5jaXYoR0NH
THN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBm
aW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3Qg
aWQpIGZpbmFsOwpAQCAtNDIwLDcgKzQyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRCdWZm
ZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0
IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKICAg
ICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUu
CiAgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpIGZpbmFsOwotICAg
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxH
Q0dMaW50PiYgcGFyYW1zKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5p
Zm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1
bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgR0NHTHVpbnQgZ2V0
VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtNDI5LDExICs0MzEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKIAot
I2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50
IGRzdE9mZnNldCk7Ci0jZW5kaWYKLQogICAgIC8vIEhlbHBlciBtZXRob2RzLgogCiAgICAgdm9p
ZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJ
bnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29u
dGV4dCYpOwpAQCAtNTE1LDcgKzUxMiwxMSBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gIVVTRShBTkdM
RSkKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIsIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxwdHIpOworI2Vsc2UKICAgICBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBE
ZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CisjZW5kaWYKIAogICAgIC8vIENhbGxlZCBv
bmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBP
cGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRz
IG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCkBAIC01MjgsNiAr
NTI5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNo
YXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJp
YnV0ZXMoKTsKICAgICAKKyAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJl
YWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKKwogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQg
ZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwog
ICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIApAQCAtNTQ4LDEwICs1NTEsMTMgQEAgcHJpdmF0
ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygp
IGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9v
bCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERp
c3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZv
aWQqIHBidWZmZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07Cisg
ICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRyYXdz
IHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4
IDYzNTZmODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2ODgxM2Y2YjkuLjYyOTgwMzg4YjY1MjQ3
OWNjYjQzMzFjMjVmZmVlYmI2NmM2Y2I1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgRXh0ZW5zaW9uc0dMJiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCkBAIC00
NDcsNyArNDQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
ICAgICA6OmdsRmx1c2goKTsKICAgICB9Ci0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuZGF0YSk7CiAgICAgaWYgKGF0dHJzLmFu
dGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAg
ICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
UiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4ODY3MjAzOWFlYTRmNTk5OTZlNGQ5NGUx
YzFhMGZlLi43YjJlYTA0YTIwOTk1NjVjNzkwZWE1N2M2NjdiMGQ5YzYwYWY1NWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTIwMjksMjIg
KzIwMjksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiA6OmdsR2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sIG1hcHBlZE5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0
VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0
cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0y
Mjc4LDE5ICsyMjYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
MkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAg
IGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwg
cHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7
CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNv
dW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkudmVy
dGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBIQVZFKE9Q
RU5HTF80KSAmJiBFTkFCTEUoV0VCR0wyKQpAQCAtMjMzNSw0MiArMjMxOSwyNSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xpbnRwdHIsCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9m
ZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBs
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRh
KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNCeXRl
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRz
dE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19Ci0KICNpZiBIQVZFKE9QRU5H
TF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCi17CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gOjpn
bE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdD
R0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIDo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpOwotfQorICAg
ICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IDo6Z2xNYXBCdWZmZXJSYW5nZSh0YXJn
ZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklU
KTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEs
IHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoITo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpKQor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogI2Vsc2UKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJS
YW5nZShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTHNpemVpcHRyLCBHQ0dMYml0ZmllbGQpCi17
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5V
U0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CisjZW5kaWYK
IH0KIAotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdD
R0xlbnVtKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBz
cmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGlu
dCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ss
IEdDR0xlbnVtIGZpbHRlcikKIHsKQEAgLTI3MTIsMTEgKzI2NzksMTEgQEAgUGxhdGZvcm1HTE9i
amVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmEKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkKK0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1l
KQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsK
LSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0Zm9ybUdM
T2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTYW1wbGVyKCkKQEAgLTI3NTYs
MTggKzI3MjMsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFt
ZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4KICAgICBVTlVTRURfUEFSQU0o
cGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwLmY7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCisKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7
CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAg
IHJldHVybiAwOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VT
eW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjgwNiwxMiAr
Mjc3NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3lu
YyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIFVOVVNFRF9QQVJBTSh0aW1l
b3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xz
eW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBz
eW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAgICAgVU5V
U0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAtMjg5MSwy
MSArMjg1OCwyMyBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiB7IH07CiB9
CiAKLSNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5h
bWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkK
IHsKKyAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7
CisjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKICAgICBBU1NFUlQocHJv
Z3JhbSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1l
LCBwYXJhbXMuZGF0YSgpKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1
bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3Vs
dC5kYXRhKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAgIFVOVVNF
RF9QQVJBTShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrTmFtZSk7Ci0K
ICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjkxMyw3ICsyODgyLDYgQEAgU3RyaW5nIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3IKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFN
KHVuaWZvcm1CbG9ja0luZGV4KTsKLQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCkBA
IC0yOTIzLDI3ICsyODkxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0wKICAgICBVTlVTRURf
UEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tC
aW5kaW5nKTsKIH0KLSNlbHNlCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3Rp
dmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiwgR0NH
TGVudW0sIFZlY3RvcjxHQ0dMaW50PiYpCi17Ci19Ci0KLUdDR0x1aW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBT
dHJpbmcmKQotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVp
bnQpCi17Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVp
bnQsIEdDR0x1aW50KQotewotfQotI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5KTsKQEAgLTI5NTQsMTggKzI5MDMsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVT
RURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9Q
QVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gcGFyYW1zKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAyM2Q3NGZhODBkNzA3OTFiZTYw
MGRmNThlNzU2MTczMzk2YWE1NTA1Li5hMjIxODBiNGJmNGNlMTBmMTg1MjEyNDAxMWU4OGE0NDI3
M2I0MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC00
MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZv
aWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsRmx1c2goKTsKICAg
ICB9CiAKLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgZGF0YS5kYXRhKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBt
X3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKQEAgLTEzMCw3
ICsxMzAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25z
dCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZl
ciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgICAgICBpZiAoc3VwcG9ydFBhY2tl
ZERlcHRoU3RlbmNpbEJ1ZmZlcikgewogICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVm
ZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJV
RkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5z
dGVuY2lsKQogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBt
X2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVw
dGgpCkBAIC0xMzgsMTIgKzEzOCwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7CiAgICAgICAgICAgICAgICAg
ICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVy
KTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgs
IHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQs
IEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAg
OjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FU
VEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRo
QnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09N
UE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25z
LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2Ft
cGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAg
ICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBH
TF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDg4ZTE1
MWIxMjIyNGZlYmNjODkzYjUzZDY4NWUzZWMxYjAxMGNkNDUuLjJiODk2YTlhYmFjMGUxMDc0YjFl
MTM1MTkzMjA0OWFiZTc2ODAzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTIzLDYgKzEyMyw3
IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MKICAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAorICAgIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIKQEAgLTIyMSw2ICsyMjIsNyBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbgogCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZTUxY2FlZDIxZTE4NmNmMmExNzNjYjhhMzMzMTJiZTBiMzA0YmIwMC4uYmNlMzM4YzRiNDRm
MDc5ZTgwZWQwZDQ2ZDY3MjI5M2MyMjdlNTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiArMjAsNyBAQCAkKEpBVkFTQ1JJUFRD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5z
Yi5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTM0LDYgKzEzNSw3IEBAICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggZTg4YjJjMjFmYTcxN2M3N2QyMzAyY2I1MThiYTRhZDNlZGUyNTc0
YS4uMTVmM2MyM2NjZTA1ZTJkMzJlNWVlYjY5MjQwYzY1NDhhOWJkMTYwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNzgsNiArMTc4
LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjgxNDg1NWZm
OWQyM2FmMGE3N2U1ZmRhNmRmZDJmZDU1MDk3NmY2OS4uMzUzZDc2ZWQxYTVmMjA5ZWVhM2Y0Nzgz
MWUwNmNhOGRkMjEwNDNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTcxLDYg
KzE3MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAogCVdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mg
XAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAogCVdl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCkBAIC0yMjcsNiAr
MjI4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzIFwKIAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAogCUdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCisJR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMGUyZTg4MzJiMWUyMGYx
ZTBmMzE5ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2UxNGM1MGI3NDE5OTNkNmYzNWE1YTk1
ZjVhZmQ4MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiArNjQsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
QkdMKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisjZW5kaWYKKwogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKQEAgLTI5MCw2
ICsyOTQsMjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRfVU5VU0VEKGZv
dW5kLCBmb3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9y
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IH0pOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29u
dGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAu
cmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChm
b3VuZCwgZm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQbGF5aW5nTWFu
YWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMjY3
OGRiYzRlNWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4ZC4uNWFlZGZiYjRkMmNhYzdiNzY2
MGZmMDczNjA5ZDM3N2M2MDE1ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9u
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisK
ICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgpAQCAtMzksNiArNDAsMTEgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBHUFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBjbGFzcyBSZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTsKIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwpAQCAtMTE5LDYgKzEy
NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9p
ZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5m
byhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5m
byYmKTsKIApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7Ci0KKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFw
PEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5
UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTE5NGZiNGY2
MDg1ZDYyNGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1NGUxNjQ1OTViMGEzNjFkZmU0Yzc1
YmZmNDAxOGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDYg
KzI1LDEwIEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlz
cGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICAg
ICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9pZCBSZWxlYXNl
R3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlp
bmdJbmZvKCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5m
bykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFiYmZkZmI3YzI5NTc5YWFkODBkYzJmMTE4ZmRhYjY2NzY2ZjI5MGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgIVBMQVRGT1JNKENPQ09BKQorc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KyNlbmRpZgorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBS
ZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vh
a1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0
byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2Vp
dmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSwgKnRoaXMpOworICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsKKyNp
ZiBVU0UoQU5HTEUpCisgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmlu
ZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7CisgICAgU3RyaW5nIHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFC
TEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisjZW5kaWYKK30KKworUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCit7CisgICAgaWYg
KGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VS
ZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIudG9VSW50NjQoKSk7Cit9CisKK0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCitJ
UEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJldHVybiAm
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpkaWRDb21wb3NpdGUoKQoreworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpm
b3JjZUNvbnRleHRMb3N0KCkKK3sKKyNpZiBVU0UoQU5HTEUpCisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisjZW5kaWYKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cmVjeWNsZUNvbnRleHQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZp
Y2F0aW9uKCkKK3sKKyNpZiBVU0UoQU5HTEUpCisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisjZW5kaWYKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVz
aGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKK3sKKyAgICBpZiAod2lkdGggJiYg
aGVpZ2h0KQorICAgICAgICBtX2NvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CisgICAg
ZWxzZQorICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYg
ZXh0ZW5zaW9uKQoreworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoZXh0ZW5zaW9uKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bm90aWZ5
TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBtX2NvbnRleHQtPm1hcmtDb250ZXh0Q2hhbmdl
ZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkYjBjZjUxOGFiZjliYjI1YWIzMzZkZGRlMDM5OTkyNWFhMDVm
MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wp
CisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNlIFdU
RiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBHUFUgcHJvY2VzcyBz
aWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZXMgYWJvdXQgR3JhcGhp
Y3NDb250ZXh0R0wgY2FsbHMKKy8vIGFuZCBpc3N1ZXMgcmVhbCBHcmFwaGljc0NvbnRleHRHTCBj
YWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCisvLyBUaGUgaW1wbGVtZW50YXRp
b24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgIDogcHVibGlj
IElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgor
ICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkgb3ZlcnJpZGU7CisKKyAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CisKK3Byb3Rl
Y3RlZDoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+KTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVp
bnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gR3JhcGhpY3NDb250
ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRDb21wb3NpdGUoKSBmaW5hbDsK
KyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKKyAgICB2b2lkIHJlY3ljbGVDb250
ZXh0KCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9u
KCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHJl
c2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZvaWQgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChTdHJpbmcmJik7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5n
ZWQoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRp
c3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpID0g
MDsKKyNlbHNlCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworI2VuZGlmCisKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKKworICAgIFJlZjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWE3MTUyNGQ0MDgxOWJhMDMxMGNiNDIwMTM2MDc1
NjY4Nzg2ODU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjk0
IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVw
LXdlYmdsLiBEbyBub3QgZWRpdC4KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRl
ZCB7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNl
bmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JN
KENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwor
I2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24p
CisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorCisgICAgdm9pZCBTZXRGYWls
TmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90
IGVycm9yKQorICAgIHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBBY3RpdmVUZXh0dXJlKHVpbnQz
Ml90IHRleHR1cmUpCisgICAgdm9pZCBBdHRhY2hTaGFkZXIodWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3Qgc2hhZGVyKQorICAgIHZvaWQgQmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAs
IHVpbnQzMl90IGluZGV4LCBTdHJpbmcgbmFtZSkKKyAgICB2b2lkIEJpbmRCdWZmZXIodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZEZyYW1lYnVmZmVyKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRSZW5kZXJidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFRleHR1cmUodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmxlbmRDb2xvcihmbG9hdCByZWQs
IGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIEJsZW5kRXF1
YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50
MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgdm9pZCBCbGVuZEZ1bmModWlu
dDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB2b2lkIEJsZW5kRnVuY1NlcGFy
YXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwg
dWludDMyX3QgZHN0QWxwaGEpCisgICAgdm9pZCBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQz
Ml90IHRhcmdldCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgQ2xlYXIodWludDMyX3QgbWFzaykKKyAgICB2b2lkIENsZWFyQ29sb3IoZmxvYXQgcmVkLCBm
bG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBDbGVhckRlcHRo
KGZsb2F0IGRlcHRoKQorICAgIHZvaWQgQ2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB2b2lk
IENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQor
ICAgIHZvaWQgQ29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weVRleElt
YWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGJvcmRlcikKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2
b2lkIENyZWF0ZUJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIENyZWF0ZUZyYW1lYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUHJvZ3JhbSgpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNoYWRlcih1aW50
MzJfdCBhcmcwKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDcmVhdGVUZXh0dXJlKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQ3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB2b2lkIERlbGV0ZUJ1ZmZlcih1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkK
KyAgICB2b2lkIERlbGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVJl
bmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlU2hhZGVyKHVpbnQzMl90
IGFyZzApCisgICAgdm9pZCBEZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBE
ZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB2b2lkIERlcHRoTWFzayhib29sIGZsYWcpCisg
ICAgdm9pZCBEZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHZvaWQgRGV0
YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBEaXNhYmxl
KHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJf
dCBpbmRleCkKKyAgICB2b2lkIERyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJz
dCwgaW50MzJfdCBjb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50cyh1aW50MzJfdCBtb2RlLCBp
bnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBF
bmFibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWlu
dDMyX3QgaW5kZXgpCisgICAgdm9pZCBGaW5pc2goKQorICAgIHZvaWQgRmx1c2goKQorICAgIHZv
aWQgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRh
Y2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAg
dm9pZCBGcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFj
aG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWludDMyX3QgYXJnMywgaW50MzJfdCBsZXZlbCkK
KyAgICB2b2lkIEZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgR2VuZXJhdGVNaXBt
YXAodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29s
IHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcy
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwg
U3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAt
PiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFN0cmluZyh1
aW50MzJfdCBuYW1lKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldElu
dGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdl
cjY0KHVpbnQzMl90IHBuYW1lKSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4KSAt
PiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFByb2dyYW1p
KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50
NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUpIC0+IChp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbUluZm9M
b2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlckluZm9Mb2codWludDMyX3Qg
YXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNo
YWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNp
b25UeXBlKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZSwgR0NHTGlu
dCBwcmVjaXNpb24pIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJTb3VyY2UodWludDMy
X3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyaSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90
IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1pdih1aW50MzJfdCBw
cm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5p
Zm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1
ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRWZXJ0
ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDY0
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBIaW50KHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgbW9kZSkKKyAgICB2b2lkIElzQnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNFbmFibGVkKHVpbnQzMl90
IGNhcCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0ZyYW1l
YnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgSXNQcm9ncmFtKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgSXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1NoYWRlcih1aW50MzJfdCBh
cmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzVGV4dHVy
ZSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIExpbmVXaWR0aChmbG9hdCBhcmcwKQorICAgIHZvaWQgTGlua1Byb2dyYW0odWludDMyX3Qg
YXJnMCkKKyAgICB2b2lkIFBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFt
KQorICAgIHZvaWQgUG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRzKQorICAg
IHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFNhbXBs
ZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB2b2lkIFNjaXNzb3IoaW50
MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZv
aWQgU2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyBhcmcxKQorICAgIHZvaWQgU3Rl
bmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAg
dm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGlu
dDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2sodWludDMyX3Qg
bWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMy
X3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFp
bCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBTdGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBm
YWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAg
dm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0
IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgVW5pZm9ybTFmKGludDMyX3QgbG9jYXRp
b24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3JtMWZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtMWkoaW50MzJfdCBsb2Nh
dGlvbiwgaW50MzJfdCB4KQorICAgIHZvaWQgVW5pZm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtMmYoaW50MzJf
dCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFVuaWZvcm0yZnYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZv
cm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB2b2lkIFVu
aWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2
KQorICAgIHZvaWQgVW5pZm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHopCisgICAgdm9pZCBVbmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtM2koaW50MzJfdCBsb2NhdGlv
biwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB2b2lkIFVuaWZvcm0zaXYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZv
aWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3JtNGZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtNGkoaW50MzJfdCBsb2NhdGlv
biwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQg
VW5pZm9ybTRpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
IHYpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZv
cm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDRmdihpbnQzMl90
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFs
dWUpCisgICAgdm9pZCBVc2VQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWYWxpZGF0
ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjFmKHVpbnQzMl90
IGluZGV4LCBmbG9hdCB4KQorICAgIHZvaWQgVmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4g
dmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9h
dCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJQb2ludGVy
KHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFs
aXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFZpZXdwb3J0
KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB2b2lkIEJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWludDMy
X3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJEYXRhMSh1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZm
ZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBSZWFkblBpeGVsczAoaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQs
IHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgUmVhZG5QaXhlbHMxKGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhJbWFn
ZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9y
bWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQz
Ml90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBw
aXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHZvaWQgVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQz
Ml90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZv
aWQgQ29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdl
MkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QXJy
YXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQs
IGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQz
Ml90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwg
aW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90
IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXkoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0
ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBh
cmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0
ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weUJ1ZmZlclN1YkRhdGEodWludDMy
X3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQs
IHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0QnVmZmVy
U3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNp
emUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50
MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwg
aW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmls
dGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IGxheWVyKQorICAgIHZvaWQgSW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMpCisgICAgdm9pZCBJ
bnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMp
CisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHZvaWQgVGV4SW1hZ2UzRDAodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50
MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zm
c2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4U3ViSW1hZ2UzRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBk
ZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lk
IENvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDEo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9y
ZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJl
c3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJf
dCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lk
IENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQs
IGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBHZXRGcmFnRGF0
YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlv
biwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlmb3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVp
bnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2b2lkIFVuaWZvcm0zdWkoaW50MzJfdCBsb2Nh
dGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB2b2lkIFVu
aWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50
MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9pZCBVbmlmb3JtMXVpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9y
bTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0
YSkKKyAgICB2b2lkIFVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtNHVpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9y
bU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4MmZ2KGludDMy
X3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBk
YXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wg
dHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5p
Zm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4NGZ2KGlu
dDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQg
VmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50
MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGl2KHVpbnQzMl90IGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZl
cnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVp
bnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJf
dCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZv
aWQgVmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWlu
dDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERy
YXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBl
bmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIERyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAg
dm9pZCBDbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVy
dWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1
ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1
ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3
YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHZvaWQgQ3JlYXRlUXVl
cnkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxl
dGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB2b2lkIElzUXVlcnkodWludDMyX3QgcXVlcnkp
IC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmVnaW5RdWVyeSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgRW5kUXVlcnkodWludDMy
X3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBw
bmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNhbXBsZXIoKSAtPiAo
dWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVTYW1wbGVy
KHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJc1NhbXBsZXIodWludDMyX3Qgc2FtcGxlcikg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kU2FtcGxlcih1
aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRl
cmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAg
dm9pZCBTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwg
ZmxvYXQgcGFyYW0pCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1w
bGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3Qg
cG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRmVu
Y2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MpIC0+ICh1aW50NjRfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU3luYyh1aW50NjRfdCBhcmcwKSAt
PiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVN5bmModWlu
dDY0X3QgYXJnMCkKKyAgICB2b2lkIENsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQz
Ml90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFn
cywgaW50NjRfdCB0aW1lb3V0KQorICAgIHZvaWQgR2V0U3luY2kodWludDY0X3QgYXJnMCwgdWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkK
KyAgICB2b2lkIElzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpIC0+IChib29sIHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgdm9pZCBCZWdpblRyYW5zZm9ybUZlZWRiYWNr
KHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgdm9pZCBFbmRUcmFuc2Zvcm1GZWVkYmFjaygp
CisgICAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZl
Y3RvcjxTdHJpbmc+IHZhcnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHZvaWQgR2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4
KSAtPiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hy
b25vdXMKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgUmVzdW1l
VHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgQmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHZvaWQgQmluZEJ1ZmZl
clJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwg
dWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0VW5pZm9ybUluZGlj
ZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdW5pZm9ybU5hbWVzKSAtPiAoVmVj
dG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2
ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4gdW5pZm9ybUluZGlj
ZXMsIHVpbnQzMl90IHBuYW1lKSAtPiAoVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwg
U3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5n
KQorICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90
IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQz
Ml90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1
aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQor
ICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBh
cmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFy
ZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJbnNlcnRF
dmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFB1c2hHcm91cE1hcmtlckVYVChT
dHJpbmcgYXJnMCkKKyAgICB2b2lkIFBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB2b2lkIERyYXdC
dWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50
MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1
aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorfQorCisjZW5k
aWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0
ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZmZlOGMxZmM3YWZhMTcyZjFiYjljNzM0MjY3NWM1ZGZlNmUxNzZl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTAsMCArMSwxMTgz
IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVw
LXdlYmdsLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4g
dGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGlt
cGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQorICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0
dXNDaGVjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNldEZhaWxOZXh0R1BVU3RhdHVz
Q2hlY2soKTsKKyAgICB9CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJv
cikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwor
ICAgIH0KKyAgICB2b2lkIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
Pm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50MzJf
dCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1
cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50
MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9n
cmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJf
dCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nJiYgbmFtZSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9Cisg
ICAgdm9pZCBiaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOwor
ICAgIH0KKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJn
ZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBn
cmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJs
ZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymxl
bmRFcXVhdGlvbihtb2RlKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUo
dWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9
CisgICAgdm9pZCBibGVuZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOwor
ICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMy
X3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNB
bHBoYSwgZHN0QWxwaGEpOworICAgIH0KKyAgICB2b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
dWludDMyX3QgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyh0YXJnZXQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgY2xlYXIodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y2xlYXIobWFzayk7CisgICAgfQorICAgIHZvaWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZs
b2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZv
aWQgY2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xl
YXJEZXB0aChkZXB0aCk7CisgICAgfQorICAgIHZvaWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2
b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb2xvck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJlZCksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihncmVlbiksIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihibHVlKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7Cisg
ICAgfQorICAgIHZvaWQgY29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlU
ZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlRnJhbWVidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZm
ZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVByb2dyYW0oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJv
Z3JhbSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgY3JlYXRlUmVuZGVyYnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVj
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3VsbEZhY2UodWludDMy
X3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y3VsbEZhY2UobW9kZSk7CisgICAg
fQorICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVGcmFt
ZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVG
cmFtZWJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7Cisg
ICAgfQorICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBkZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+ZGVsZXRlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUodWlu
dDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBkZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMpOworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFz
ayhib29sIGZsYWcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4oZmxhZykpOworICAgIH0KKyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxv
YXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoUmFu
Z2Uoek5lYXIsIHpGYXIpOworICAgIH0KKyAgICB2b2lkIGRldGFjaFNoYWRlcih1aW50MzJfdCBh
cmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFk
ZXIoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgZGlzYWJsZSh1aW50MzJfdCBjYXApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAgIHZv
aWQgZHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3Vu
dCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dM
aW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGUodWludDMyX3QgY2FwKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBl
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lk
IGZpbmlzaCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOworICAgIH0KKyAg
ICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICB9
CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJn
MykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpOworICAgIH0KKyAgICB2
b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNo
bWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpOworICAgIH0KKyAgICB2b2lkIGZyb250
RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcm9udEZhY2Uo
bW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIH0K
KyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRl
eCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIGdl
dEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
byBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QXR0cmliTG9j
YXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRB
dHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3RyaW5nKHVpbnQzMl90IG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Z2V0U3RyaW5nKG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBuYW1l
LCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0
YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPih2YWx1ZS5k
YXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2VyNjQodWlu
dDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90
IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRp
Y19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0Qm9v
bGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJh
eVJlZmVyZW5jZTxib29sPihyZWludGVycHJldF9jYXN0PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRFcnJvcihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0RXJyb3IoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNo
bWVudCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVy
aSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFk
ZXJpKGFyZzAsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiwg
aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6OmFycmF5
PEdDR0xpbnQsIDI+IHJhbmdlIHsgfTsKKyAgICAgICAgR0NHTGludCBwcmVjaXNpb24gPSB7IH07
CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUs
IHByZWNpc2lvblR5cGUsIHJhbmdlLCAmcHJlY2lzaW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPihyZWludGVycHJldF9jYXN0PGlu
dDMyX3QqPihyYW5nZS5kYXRhKCkpLCByYW5nZS5zaXplKCkpLCBwcmVjaXNpb24pOworICAgIH0K
KyAgICB2b2lkIGdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0
cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFNoYWRlclNvdXJjZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmYodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0
ZXJmKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBw
bmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRVbmlmb3JtZnYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwg
dWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3Rv
cjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDAp
OworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFs
dWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3Qg
bG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVl
U2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2Nh
dGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZh
bHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm11aXYodWludDMyX3QgcHJv
Z3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWludCwgND4gdmFsdWUoc3RhdGljX2Nh
c3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3Jt
dWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Qq
Pih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlm
b3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
dWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzaXplaXB0
ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOworICAgIH0KKyAgICB2b2lkIGlzQnVmZmVyKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzQnVmZmVyKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBjYXAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRW5h
YmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRnJhbWVidWZmZXIodWludDMyX3QgYXJn
MCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFt
KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2hhZGVyKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4dHVyZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgbGluZVdpZHRo
KGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmVXaWR0aChhcmcwKTsK
KyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0
b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBwb2x5Z29u
T2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZl
cnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7CisgICAgfQorICAgIHZvaWQgc2Npc3Nvcihp
bnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAg
fQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIGFyZzEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShhcmcwLCBhcmcxKTsKKyAgICB9
CisgICAgdm9pZCBzdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMy
X3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVm
LCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZh
Y2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFz
ayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2sobWFzayk7CisgICAgfQorICAgIHZvaWQgc3Rl
bmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOworICAgIH0K
KyAgICB2b2lkIHN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMy
X3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFp
bCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZh
Y2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWws
IHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50
ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0p
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwg
cGFyYW0pOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9h
dCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24sIHgpOwor
ICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2
KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQq
Pih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFpKGludDMy
X3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTFpKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWl2KGludDMyX3QgbG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9u
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEo
KSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJpKGludDMyX3QgbG9jYXRp
b24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtMmkobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yaXYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZihsb2NhdGlvbiwgeCwg
eSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0zZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
M2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtM2l2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2
KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4o
di5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZihpbnQzMl90
IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm00ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0
aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpKGludDMyX3QgbG9j
YXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2
KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4o
di5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYo
aW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1
ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVl
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dXNlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0odWlu
dDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFy
ZzApOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9h
dCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCAxPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48MT4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCAyPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNm
KHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliM2Z2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCAzPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRm
KHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3Qg
dHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXpl
LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4obm9ybWFsaXplZCksIHN0cmlkZSwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdmlld3BvcnQo
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICB9CisgICAgdm9pZCBidWZmZXJEYXRhMCh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEs
IHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRh
cmdldCwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmcxKSwgdXNhZ2UpOworICAgIH0KKyAg
ICB2b2lkIGJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIGRhdGEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5idWZmZXJEYXRhKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSwgdXNhZ2UpOworICAgIH0KKyAg
ICB2b2lkIGJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMwKGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxz
aXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVh
ZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQor
ICAgIHZvaWQgdGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleElt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVy
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdD
R0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlMkQwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQz
Ml90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJv
cmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNp
emUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9y
bWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMy
X3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zm
c2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qg
aW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBp
bnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZCh1aW50
MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3Vu
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBm
aXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgaXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xl
YW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5p
c1ZlcnRleEFycmF5KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheSh1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVmVydGV4QXJyYXko
YXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRh
cmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90
IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
b3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHdyaXRlT2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0
QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qg
ZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGNo
YXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDApOworICAgICAgICBt
X2NvbnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpLCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGludDMyX3Qg
c3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMy
X3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVp
bnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZl
clRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQz
Ml90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVi
dWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0
dGFjaG1lbnRzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZm
ZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+
KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMsIGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkpLCBhdHRhY2htZW50cy5z
aXplKCkpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCByZWFkQnVmZmVy
KHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMp
OworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3Rv
cmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTNE
KHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwor
ICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRo
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMy
X3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhT
dWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMy
X3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIs
IGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdD
R0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgp
KSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+
KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3Qg
cHJvZ3JhbSwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0
aW9uKHByb2dyYW0sIG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJf
dCB2MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjAp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3Qg
djAsIHVpbnQzMl90IHYxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpKGxv
Y2F0aW9uLCB2MCwgdjEpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWkoaW50MzJfdCBsb2Nh
dGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMy
X3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRp
b24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTN1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KGludDMy
X3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYm
IGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3Nl
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1
aW50MzJfdCBpbmRleCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHks
IHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4mJiB2YWx1ZXMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAg
ICB2b2lkIHZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQz
Ml90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmli
STR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1
aW50Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9p
bnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90
IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxH
Q0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1
aW50MzJfdCBtb2RlLCB1aW50MzJfdCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVy
cyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRyYXdCdWZmZXJzKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdih1aW50MzJfdCBidWZmZXIsIGludDMy
X3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiB2YWx1ZXMpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMu
ZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYo
dWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2
KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBm
bG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
bGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOworICAgIH0K
KyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1
ZXJ5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBkZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVsZXRlUXVlcnkocXVlcnkpOworICAgIH0KKyAgICB2b2lkIGlzUXVlcnkodWludDMy
X3QgcXVlcnksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUXVlcnkocXVlcnkpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KTsKKyAgICB9Cisg
ICAgdm9pZCBlbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmVuZFF1ZXJ5KHRhcmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnkodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVl
cnkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBu
YW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVNhbXBsZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2Ft
cGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVTYW1wbGVyKHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIGlzU2Ft
cGxlcih1aW50MzJfdCBzYW1wbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxl
cik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMy
X3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZFNhbXBsZXIodW5pdCwg
c2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2Ft
cGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQor
ICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5h
bWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1l
dGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGZlbmNlU3luYyh1aW50MzJf
dCBjb25kaXRpb24sIHVpbnQzMl90IGZsYWdzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2
NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzeW5jIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5j
KGNvbmRpdGlvbiwgZmxhZ3MpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKSk7Cisg
ICAgfQorICAgIHZvaWQgaXNTeW5jKHVpbnQ2NF90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3lu
Yz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgfQorICAgIHZvaWQgY2xpZW50
V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5jbGllbnRXYWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xz
eW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NH
THVpbnQ2ND4odGltZW91dCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgd2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxh
Z3MsIGludDY0X3QgdGltZW91dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+d2FpdFN5bmMo
cmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwg
ZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4odGltZW91dCkpOworICAgIH0KKyAgICB2b2lk
IGdldFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFN5bmNpKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90
PihhcmcwKSksIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2soaWQpOworICAgIH0KKyAgICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2so
dWludDMyX3QgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soaWQpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVl
ZGJhY2sodGFyZ2V0LCBpZCk7CisgICAgfQorICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFj
ayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdp
blRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpOworICAgIH0KKyAgICB2b2lkIGVuZFRy
YW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3Jt
RmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVp
bnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZl
ck1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpOworICAgIH0KKyAgICB2b2lkIGdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICBtX2NvbnRleHQt
PmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIHBh
dXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5wYXVzZVRy
YW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJh
Y2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygp
OworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymlu
ZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5k
QnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVm
ZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0
PEdDR0xpbnRwdHI+KG9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnNCkpOwor
ICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rv
cjxTdHJpbmc+JiYgdW5pZm9ybU5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1
aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTHVpbnQ+IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Z2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4mJiB1
bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPGludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPEdDR0xpbnQ+IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0luZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0cmlu
ZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJ
bmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJ
bmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3Jt
QmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gcGFyYW1zKHN0YXRp
Y19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFy
YW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihwYXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
YmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJf
dCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50
MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVm
ZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEs
IGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGRlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9
CisgICAgdm9pZCBpc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
Ym9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5T0VTKGFyZzApOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmluZFZlcnRleEFycmF5T0VTKGFyZzApOworICAg
IH0KKyAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcw
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBh
cmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZl
bnRNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0
cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5w
dXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJF
WFQoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBN
YXJrZXJFWFQoKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJz
dCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmly
c3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVp
bnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3Vu
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTHZvaWRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7Cisg
ICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1
aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9jb2NvYS9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
N2M0MGM5ODVjYjdkMjcyMjg2OWE1ZGZmOTY5MTk0NzA3N2FmNDZjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkK
KworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW5jbHVkZSA8d3Rm
L01hY2hTZW5kUmlnaHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgcHJpdmF0ZSBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZp
bmFsID0gZGVmYXVsdDsKKworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRl
cy4KKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RG
OjpNYWNoU2VuZFJpZ2h0JiYpPiYmKSBmaW5hbDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluIG92ZXJyaWRlcy4KKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigp
IGZpbmFsOworICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIGZpbmFsOworICAgIHZvaWQqIGRldGFj
aENsaWVudCgpIGZpbmFsOworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbjo6QnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKK307CisKK30KKworc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
PihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKK30KKworUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmli
dXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCit7Cit9CisKK0dyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6cmVjeWNsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9kaXNwbGF5QnVm
ZmVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVzZW50KEJ1
ZmZlciBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7Cisg
ICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworfQorCit2b2lkKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hDbGllbnQoKQoreworICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUsIG51bGxwdHIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICBhdXRvIGRpc3BsYXlC
dWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBNYWNoU2VuZFJp
Z2h0IHNlbmRSaWdodDsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgc2VuZFJpZ2h0
ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJpZ2h0KCk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzZW5kUmlnaHQpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQppbmRleCBiN2JiNjNiMjlhZDgwMjE3
MmRmMjdhMTI4OTViYjE5OThmYTRiNmIwLi4yNGM0MzdjYWFlN2Y4ZjlhOWFmZjkyNzAzZWZjZjlk
YTAzMWU0YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVBy
b2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNz
TWFjLm1tCkBAIC0zMiw4ICszMiw4IEBACiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KLSNpbXBvcnQg
PHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1w
b3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTQ0LDkgKzQ0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdm9p
ZCBHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKKyNpZiAwCiAgICAgLy8gSGF2aW5nIGEgd2luZG93IHNlcnZlciBjb25u
ZWN0aW9uIGluIHRoaXMgcHJvY2VzcyB3b3VsZCByZXN1bHQgaW4gc3BpbiBsb2dzICg8cmRhcjov
L3Byb2JsZW0vMTMyMzkxMTk+KS4KLSAgICBPU1N0YXR1cyBlcnJvciA9IFNldEFwcGxpY2F0aW9u
SXNEYWVtb24odHJ1ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChlcnJvciwgZXJyb3IgPT0gbm9FcnIp
OworICAgIGF1dG8gcmV0dmFsID0gQ0dTU2V0RGVueVdpbmRvd1NlcnZlckNvbm5lY3Rpb25zKHRy
dWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHJldHZhbCA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAg
IENHU1NodXRkb3duU2VydmVyQ29ubmVjdGlvbnMoKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBs
YXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KaW5kZXgg
ZGIwNmU1MzRmN2Y1MWQyZWJkMDM4MjVmNTgyNDVmODQ5NmY4YjE3OS4uZWQxMDBiMzZlZDZmNDZk
NGFhZjYzNTQ0Nzc4ODJhYjc5M2ExMWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4K
QEAgLTIwNyw2ICsyMDcsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5BQVBMLChE
aXNwbGF5UGlwZXxPcGVuQ0xkaXNhYmxlZHxJT0dyYXBoaWNzX0xFUih8X1JlZ1RhZ18xfF9SZWdU
YWdfMHxfQnVzeV8yKXxhbGlhcy1wb2xpY3l8Ym9vdC1kaXNwbGF5fGRpc3BsYXktYWxpYXN8bXV4
LXN3aXRjaC1zdGF0ZXxuZHJ2LWRldnxwcmltYXJ5LWRpc3BsYXl8c2xvdC1uYW1lKSIpCiAgICAg
KGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkFUWSwoY2JpdHN8ZmJfKGxpbmVieXRlc3xvZmZzZXR8
c2l6ZSl8aW50cmV2KSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJBVFksRGV2aWNlTmFtZSIpIDs7
IE5lZWRlZCBieSBNZXRhbCBjb21waWxlcnMKKyAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxFRklE
aXNwbGF5IikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxGYW1pbHlOYW1lIikgOzsgRGl0dG8K
ICAgICAoaW9raXQtcHJvcGVydHkgIkFWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJCYWNrbGlnaHRIYW5kbGUiKQpAQCAtMjE3LDYgKzIxOCw5IEBACiAgICAgKGlva2l0LXByb3Bl
cnR5ICJDYXBzTG9ja0RlbGF5IikKICAgICAoaW9raXQtcHJvcGVydHkgIkNhc2VTZW5zaXRpdmUi
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ29uZmlnU3RhdGUiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiRFBMYW5lcyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtCaXQiKQorICAgIChpb2tp
dC1wcm9wZXJ0eSAiRFBMaW5rUmF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXNjcmlwdGlv
biIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXZlbG9wbWVudCIpCiAgICAgKGlva2l0LXByb3Bl
cnR5LXJlZ2V4ICMiXkRldmljZSggQ2hhcmFjdGVyaXN0aWNzfEVxSUQpIikKQEAgLTIyOSwxMCAr
MjMzLDE3IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJGYW1pbHkgSUQiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiRm9yY2VTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9ybWF0cyIp
CisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlckVuYWJsZWQiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiRnJhbWVidWZmZXJTdGFydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkdQVUNv
bmZpZ3VyYXRpb25WYXJpYWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEQ0NEaXNwbGF5
YWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEZWJ1Z051bGxDbGllbnRNYXNrIikKICAg
ICAoaW9raXQtcHJvcGVydHkgIkdwdURlYnVnUG9saWN5IikKKyAgICAoaW9raXQtcHJvcGVydHkg
IkdQVVJhd0NvdW50ZXJCdW5kbGVOYW1lIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0Nv
dW50ZXJQbHVnaW5DbGFzc05hbWUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSEVWQ1N1cHBvcnRl
ZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJISURQb2ludGVyQWNjZWxlcmF0aW9uVHlwZSIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJId0N0eENhY2hlVXBkYXRlIikKICAgICAoaW9raXQtcHJvcGVy
dHktcmVnZXggIyJeSU9BY2NlbChEaXNwbGF5UGlwZUNhcGFiaWxpdGllc3xJbmRleHxUeXBlc3xS
ZXZpc2lvbikiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JTyhDbGFzc3xNYXRjaENh
dGVnb3J5fE5hbWVNYXRjaCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0F1ZGlv
Q29udHJvbChDaGFubmVsSUR8SUR8U3ViVHlwZXxVc2FnZXxWYWx1ZSkiKQpAQCAtMjgyLDYgKzI5
Myw4IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1BhcmVudE1hdGNoIikKICAgICAoaW9raXQt
cHJvcGVydHktcmVnZXggIyJeSU9QQ0koKENsYXNzfFByaW1hcnl8UHJvcGVydHl8KU1hdGNofEV4
cHJlc3MoQ2FwYWJpbGl0aWVzfExpbmsoU3RhdHVzfENhcGFiaWxpdGllcykpfE1TSU1vZGV8UmVz
b3VyY2VkfFR1bm5lbGxlZCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QTUlzUG93ZXJNYW5h
Z2VkIikKKyAgICAoaW9raXQtcHJvcGVydHkgIklPUGVyc29uYWxpdHlQdWJsaXNoZXIiKQorCiAg
ICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPUGxhdGZvcm0oU2VyaWFsTnVtYmVyfFVVSUQp
IikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUG93ZXJNYW5hZ2VtZW50IikKICAgICAoaW9raXQt
cHJvcGVydHkgIklPUHJvYmVTY29yZSIpCkBAIC0zMTcsNiArMzMwLDcgQEAKICAgICAoaW9raXQt
cHJvcGVydHkgIlByb3RvY29sIENoYXJhY3RlcmlzdGljcyIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJSZW1vdmFibGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5SZXNldE9uKExvY2t8
VW5sb2NrKU1zIikKKyAgICAoaW9raXQtcHJvcGVydHkgIlNXSVBfcHJvcGVydGllcyIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJTYWZlRWplY3RSZXF1ZXN0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiU2FtcGxlUmF0ZXMiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2VyaWFsIE51bWJlciIpCkBA
IC0zMzgsNiArMzUyLDcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgImF0dGFjaGVkLWdwdS1jb250
cm9sLXBhdGgiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5hdWRpby0oY29kZWMtaW5m
b3xkZXZpY2UtbXZhbHVlfGRldmljZS1udmFsdWV8c2VsZWN0b3IpIikKICAgICAoaW9raXQtcHJv
cGVydHkgImF2LXNpZ25hbC10eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgImJhY2tsaWdodC1Q
V00tZnJlcSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJiY2RWZXJzaW9uIikKICAgICAoaW9raXQt
cHJvcGVydHktcmVnZXggIyJeKGJvYXJkfGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW18dmVuZG9y
KS1pZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJib290LWdhbW1hLXJlc3RvcmVkIikKQEAgLTM1
MCw2ICszNjUsMTEgQEAKICAgICAoaW9raXQtcHJvcGVydHkgImNvbm5lY3Rvci10eXBlIikKICAg
ICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeKGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW0tdmVu
ZG9yfHRvdWNoLXNpemUpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImRldmljZV90eXBlIikK
KyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktYnBjIikKKyAgICAoaW9raXQtcHJvcGVydHkg
ImRpc3BsYXktY29ubmVjdC1mbGFncyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWxp
bmstY29tcG9uZW50LWJpdHMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1waXhlbC1j
b21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXR5cGUiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiZHBtIikKICAgICAoaW9raXQtcHJvcGVydHkgImVycm9yZGIiKSA7
OyBOZWVkZWQgZm9yIE9wZW5HTCBvbiBvbGRlciBoYXJkd2FyZQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiZmlsZXZhdWx0LWltYWdlIikgOzsgTmVlZGVkIGJ5IExhdW5jaFNlcnZpY2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5LmNwcAppbmRleCBlNmExOGRkYTZlMDkyZmRiMTgwNDQ2ZTRmM2EwODNjZjUzYzI3NjE5
Li4zNzkyOGUxYjgzZDRlNTI0NDUzYThkMjdjYzNiODc5MDFiMjQ5YTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFVT
RShBVURJT19TRVNTSU9OKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oIgog
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3Bw
CmluZGV4IGQ5YmY1MjI3MmMzNzI5MTU3NWI1YjM5MzI2MmU3NzIxM2I5MzBkZDQuLjhmMDExOWVk
ZmUxZDZlOTMyNDMwMDViMzQ0MTI1YjI0ZWFiOTFlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggNmE1YzY3MjVjYWE5YmRiODY3YWI4NmI4YzU3ZjM2ZGUy
Yzg5NmRjZi4uYmU3ZjUyMjBiZTliODVmODY4YTVmODM3ZWZlZDY2ZGRmOTVmMjk0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5LmgKQEAgLTM5LDEwICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggNDdmNWQyZjI3MGZhNWRlNGZhZGUxNTE0NDQyMTEx
Nzk0ZWQzNmQyOC4uMmM1ZTdkZTdkMmU3NTY5NjBhM2YzZWM4NzZjOGI4MjVjNmU0NWI1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmNwcAppbmRleCBhOThjZmE0YzlmODAyMzE5MDRmOGVmMGVhYTkzNjIyOWFmYTk3NTk4Li5m
ZWM2NWNmNjJiNjY3NGI4MzAwYzUwY2Q0MzM0MTVlOTE1MTE0NDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIuaAppbmRleCBkODliODAzZjZhYmY0MWM4ZTllZGRlNDE0Mjc2OTMyODI2
ZDFiMzM4Li4wODFlYjMxODBkMDIxNjRiNWFhM2Q1NDgwNmY3MmM3ZWRjMGNiMWVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIuaApAQCAtMjcsMTUgKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKKwog
I2luY2x1ZGUgPFdlYkNvcmUvUG9saWN5Q2hlY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQ
cm94eS5jcHAKaW5kZXggYWY3YmU1MTJlYWMyZDFhZTY1NGFlMDljYjUyZDk0YjM5YjJjNjA3Ny4u
NDk5YmQ2MWMyZjc4MjIyM2ZhMzhmYzk3YjE4MmZhNmQyYjkzODFkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFTb3VyY2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRl
eCA1OTY4YzdiYmQxODljZDQ3OWVmNGFlYWI0ZDQ0OTk1MzNmZDNkNjViLi5mZTU0NGQ1NTUxOTFl
NTU2ZTJkN2UyMzM5NDc1YTAyZmMyOWRjZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTM5LDcgKzM5
LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oCmluZGV4IDZiOGJmOGI1N2NjMGM4ZDlkNTQxMWU5NjUyMWI0NWE5NGE4ZTNiMzIuLjk5
Y2E2YTQxNGViNTA4MzkwYzcyODMzYTY0NTFlNzMwMzk0MjFkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5o
CkBAIC0yNyw5ICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxX
ZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0zOCw3ICs0MCw2
IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5o
CmluZGV4IDM2MDMxMGI3ZDEyMWQyODZkOGQxNjFmMTgzYWJkMGU3NDViODM1MzMuLjg0M2JiMDZm
N2I1NmM2ZTNjZmJlZTc5YTdlNDI4MWVmZWU4ZjlhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTI4LDE0
ICsyOCwxNSBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBj
bGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkubW0KaW5kZXggZjhhYmMxZjQwNWZjMTQ2OTQ3NWI0ZDkwYmFkM2Q1M2Nh
MGY4MDE0ZS4uNjFjNDcwOGFlOTZkYmNhYTU2OTgwOWVlMTk5NWJlODE2YTkxZmYyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW1wb3J0ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJM
aWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlN
ZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCA3ODhjNWYwMGMwMmY0ZjE0OGZlZWNjZDM4ZDEwNjgx
OGIwZDdlOTYxLi4zYWI0ZTRiMWNmMWMxNDEyMzBjMTNlNDU3NmM1ZWQ2ZTZlZmMyZWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVk
aWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAgLTM2LDcgKzM3LDYgQEAKIAogbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29k
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggN2E2MzM2MzQ3YzAwN2U5N2I3M2I1NDM3
NzQ5MTY4MzhkNjQwMzdkYS4uMWFhNTNjYzJmYjc3YmFmOWUzMjY1MDcyMTA4MDlmZDc2Y2ZiYmYy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAKLSNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU1VSTFNlc3Npb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgKaW5kZXggZjZlZDgxMWY1MzQyZmU0ODU1NTE3NmY4OWQ1MTQ1NzU2MmM2NjU4
NS4uMGJjZDU2NzNjOTM0NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJjMjczMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgpAQCAtMzksMTAgKzQwLDYg
QEAgT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uOwogT0JKQ19DTEFTUyBXS0N1
c3RvbVByb3RvY29sOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0gLy8gbmFtZXNwYWNlIElQQwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMTEyLDQgKzEwOSwzIEBA
IHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmluZGV4IGRkYmU0
ZWVkZDQ0MWRmODdjNTVhZDMzMGYwNDJjY2RjZmFkZmI5MGIuLjY1MWZmMjU0ZjkwNWMxNmE5MGNi
NDgyYzk3NzNkNGFjNzQyOTRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJE
b3dubG9hZE1vbml0b3IuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmlu
ZGV4IDM4YWYzNTA4MDc0NjQyOTNiOTVmZmFmMDU5ZmRlYzM2OTAxNzcyNzQuLjkzZjAzYTgyNTVm
MWFlNzE3MzgzYzAwMjkwYTI0ZjkxY2E3YzY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3du
bG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRNb25pdG9yLmgiCkBAIC00NCwxMCArNDUsNiBAQCBPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7CiBP
QkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKICNlbmRpZgogCi1uYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3
ZDkxYjQ3Yjc2Mi4uNzI2ZGQ5OTBiYWZkNDM5NGI1YWZjMDMyYTFjZjIwZjE4NDljNDlhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmlu
ZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAxNjVmMWM3MjY3OGZhNTAuLjk4MGEwNmY3ODM5
ZGJkNWU5ZjlkNTA0NTQwOWEzM2Q3N2IxYzAzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hcC5oIgogI2luY2x1
ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNDQ5YjEz
ZDhlMDdiMmNkMDQyYzRiYTM2MzZhYjc5M2QzN2IxYzNmNC4uYzc3ODg4MTFmMDMyZDU4ZjhiNTI3
NzM2ZTFkMjI3ODQxMGY5MTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U2Vzc2lvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5oCmluZGV4IDMxOTY0MTkwZDE0MWQ1NDlkYTBiYWYyZGM4YmYyOTdiNGU1
ODFlODkuLjA0MzRiZjg4MDlhN2ViM2VjYzE4ZThmNjUwY2MwMjc4YWU2ZWI1MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KQEAgLTQwLDcgKzQxLDYgQEAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHAKaW5kZXggNWI0ODljYzUzOGY3YzA3MTUxMDEwNmM1OGY1YzA5NGVjOWE4ZTFi
OC4uNDhjODgzYmZjMGZjN2Q1MDFjOGE0YTRlNzY4NGNjYzMzZTM4YzE0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nv
Y2tldFN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFt
TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5oCmluZGV4IDUyZWMzOTI2OTAyMThlZGU2NjhkNTVlNjM4ZDhlMTc1MDJmZDZlZTUu
LjczNDI5YTAyNzkwNmI0MTZhMzhjMGM2YjM5NDZhMGRiOWZiMjA2ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CkBAIC0zNyw3ICszOCw2IEBA
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkMzNjYmZmMTA4OWNjMTA1ZGQxYTAwYmViZmRm
NjFkMzNjN2Y2NmJkLi5kMzdkNzgwNjk4M2JiYTU0N2NhMGY5MjM1ZWI0YmY2YjczMTU2NWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllci5oPgpAQCAtNDMsNyArNDQsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAppbmRleCBkYjU3OTVkZDIx
N2Y0NWFkNWY2N2UzMGI3OTFmOTJlMjc2YzAyOTg2Li45NjFlNDY0NTliZTc3MTc3ZTI2MDVlN2Q4
NjUyYWRhODAyMDk3YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNv
Y2tldFRhc2suaApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3Vw
LmgiCiAjZWxzZQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAppbmRleCBkYWM2OTM1MDdlYjNlZmNl
YTZkMTA5NDgwMWJjMDFiMzZmZTI2MzlkLi5lNjgyNmU0N2U4Mzk1OTQwMjhhZjhmNGFlZDIzOTJi
NGIwNWQyZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L1dlYlNvY2tldFRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKQEAgLTI3LDE1ICsyNywxMiBAQAogCiAjaWYgSEFW
RShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBP
QkpDX0NMQVNTIE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s7CiAKLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3
b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCmlu
ZGV4IDg1NTM0ODc0NDA0Y2UyYmFhNDRhZTY1NjU0N2QzNzIyNTMzMmVhYjguLjkwYmM0MDliZmZi
NzBhMGVlOWU3MzU4YjM4Njc1OTdkMjlmMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKLSNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBv
cnQgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vz
c2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJTb2NrZXRUYXNrU291cC5jcHAKaW5kZXggNDVmYzY2OWQ3NjZhNzYxYzVkNzczZGM5NWYwNTQx
YTM4ZTM2ZjhlMy4uYTNlNzAxNGI1ZDhlYzA5NzM4ZmZhN2Q1NjY0NTQ1MDEwZjA1MzQwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFu
bmVsLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBl
NDIxYjllMWM3MTMxODQzNGY2NDg3ZjVmY2I1YTZhODdiZDczOTE5Li4wODg5MjM5NTlmZTQ2MGZm
MmJiYTRjOGMwODM5OTgwNjU3YmYzNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAtMjUsMTQgKzI1LDExIEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L2dsaWIvR1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7
Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGUwMGEw
Y2NkZmE1ODc1YzAyOGM1MDUyMzExNDE3MjhlZTk1YjQzOTIuLmUzOGJjMWM2MGFmNmRjZjAzNjk2
NWFhNzhhYWRiZDZkOGQ0YjYyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVu
Y29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtNTMsNiArNTQsNDggQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIgewogICAgIH0KIH07CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFy
cmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKKyAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUg
PSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNp
emVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQorICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJl
ZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgaWYg
KCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJl
bmNlKEV4dGVudCAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0YSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJl
ZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIEV4dGVudCk7Cisg
ICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJy
YXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50Pj4geworICAgIHVzaW5n
IEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD47CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBl
bmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgp
KSk7CisgICAgICAgIGlmICghYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVyZW5j
ZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KKyAgICBzdGF0aWMgT3B0
aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoIXNpemUp
CisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemUg
KiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNp
emUpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxPcHRpb25TZXQ8VD4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgT3B0aW9uU2V0PFQ+JiBvcHRpb25TZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzMmJiNDU3YTVi
ODg1ZjNkNTY2ODdlNzlmMTVjM2EyNjcxYmU2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitpbmxpbmUgY29uc3RleHByIHNpemVf
dCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGFycmF5
UmVmZXJlbmNlRHluYW1pY0V4dGVudD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlOworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD4geworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0Owor
CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAg
IDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgeworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2Uo
Y29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0
YSh2ZWN0b3IuZGF0YSgpKQorICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6ZSgpKQorICAgIHsK
KyAgICB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9CisK
KyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQq
IGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIFZl
Y3RvcjxUPiB2ZWN0b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7CisKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVCogbV9kYXRhIHsgfTsKKyAg
ICBzaXplX3QgbV9zaXplIHsgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVuY2UgeworcHVibGljOgorICAgIEFycmF5UmVmZXJl
bmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6
ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKHNpemUsIHNpemUgPT0gRXh0ZW50KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKKyAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkK
KyAgICB7CisgICAgICAgIEFTU0VSVCh2ZWN0b3Iuc2l6ZSgpID09IEV4dGVudCk7CisgICAgfQor
CisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFFeHRlbnQ7IH0K
KworICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEV4dGVudDsgfQor
CisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7Cisg
ICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0
b3I8VD4gcmVzdWx0OworICAgICAgICBpZiAoIWlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQobV9kYXRhLCBFeHRlbnQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBtX2RhdGEgeyB9OworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorQXJyYXlSZWZlcmVuY2UoY29uc3QgV1RG
OjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JikgLT4gQXJyYXlSZWZlcmVuY2U8VD47CisKK30g
Ly8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmlu
ZGV4IGVjM2QxNGFlOGYzZWMyNDcwNTQ3NjNjYWVlOTA5Y2MyYzg3NWY1ZDguLmJiZDdhYmNiNGNk
YzYwNDM4MmIxMDY1ZTMzMjM4NDQ5YzZhYzU5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKQEAgLTIyNywxMCArMjI3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1h
cmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwogCiAgICAgdm9pZCBwb3N0
Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7Ci0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVz
c2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwg
T3B0aW9uU2V0PFNlbmRPcHRpb24+ID0geyB9KTsgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOyAvLyBUaHJlYWQt
c2FmZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCisgICAgLy8g
U3luYyBzZW5kZXJzIHNob3VsZCBjaGVjayB0aGUgU2VuZFN5bmNSZXN1bHQgZm9yIHRydWUvZmFs
c2UgaW4gY2FzZSB0aGV5IG5lZWQgdG8ga25vdyBpZiB0aGUgcmVzdWx0IHdhcyByZWFsbHkgcmVj
ZWl2ZWQuCisgICAgLy8gU3luYyBzZW5kZXJzIHNob3VsZCBob2xkIG9uIHRvIHRoZSBTZW5kU3lu
Y1Jlc3VsdCBpbiBjYXNlIHRoZXkgcmVmZXJlbmNlIHRoZSBjb250ZW50cyBvZiB0aGUgcmVwbHkg
dmlhIERhdGFSZWZlcmVyZW5jZSAvIEFycmF5UmVmZXJlbmNlLgorICAgIHVzaW5nIFNlbmRTeW5j
UmVzdWx0ID0gc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNv
bmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9u
cyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgCiAgICAgLy8gVGhyZWFkLXNhZmUu
CkBAIC0yNDksNyArMjUxLDcgQEAgcHVibGljOgogCiAgICAgLy8gTWFpbiB0aHJlYWQgb25seS4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8
VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwg
T3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2Vu
ZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0g
U2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91
dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC01NTEsNyArNTUzLDcgQEAgdm9pZCBtb3Zl
VHVwbGUoc3RkOjp0dXBsZTxBLi4uPiYmIGEsIHN0ZDo6dHVwbGU8Qi4uLj4mIGIpCiAgICAgVHVw
bGVNb3ZlcjxzaXplb2YuLi4oQSksIHN0ZDo6dHVwbGU8QS4uLj4sIHN0ZDo6dHVwbGU8Qi4uLj4+
Ojptb3ZlKFdURk1vdmUoYSksIGIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENv
bm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoVDo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKICAgICBS
RUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NzAsMTUgKzU3MiwxNSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmCiAgICAgLy8gTm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdh
aXQgZm9yIGEgcmVwbHkuCiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2Rl
ciA9IHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1l
b3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIGlmICghcmVwbHlEZWNvZGVyKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBEZWNvZGUgdGhlIHJl
cGx5LgogICAgIE9wdGlvbmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3Vt
ZW50czsKICAgICAqcmVwbHlEZWNvZGVyID4+IHJlcGx5QXJndW1lbnRzOwogICAgIGlmICghcmVw
bHlBcmd1bWVudHMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICBtb3ZlVHVwbGUoV1RGTW92ZSgqcmVwbHlBcmd1bWVudHMpLCByZXBseSk7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIHJlcGx5RGVjb2RlcjsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0
aW9uPiB3YWl0Rm9yT3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJl
ZmVyZW5jZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNWZkYTdiZWQyZmU4
YzQwNDliNTU4NzA3OWZkMWUxNjM1NGY0ZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkRl
Y29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSBJUEMgewotCi12b2lk
IERhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVu
Y29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoKnRoaXMpOwotfQotCi1ib29sIERh
dGFSZWZlcmVuY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhUmVmZXJlbmNlJiBkYXRh
UmVmZXJlbmNlKQotewotICAgIHJldHVybiBkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0
ZUFycmF5KGRhdGFSZWZlcmVuY2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaAppbmRleCAzNDUwYzMxYjczZGRiNmFh
NWVkY2UyYWY4MDAyOTg4N2M3OThlMjA1Li5kYmIzZDY5MjdmMzQxYzVhYTkzZmMxMDczY2IwNzU2
ZTNjYmEzN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVm
ZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5o
CkBAIC0yNSw1NCArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAK
LWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotICAgIAotY2xhc3MgRGF0YVJlZmVyZW5j
ZSB7Ci1wdWJsaWM6Ci0gICAgRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIERhdGFS
ZWZlcmVuY2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9k
YXRhKGRhdGEpCi0gICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgewotICAgIH0KLQotICAgIHRl
bXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90LCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKLSAgICAgICAgOiBtX2RhdGEo
dmVjdG9yLmRhdGEoKSkKLSAgICAgICAgLCBtX3NpemUodmVjdG9yLnNpemUoKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQotCi0g
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3QgCi0gICAgeyAKLSAgICAgICAgaWYgKGlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9kYXRhOyAKLSAgICB9Ci0K
LSAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFZlY3Rv
cjx1aW50OF90PiByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBtX3NpemUp
OwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIERhdGFSZWZlcmVuY2UmKTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCB1aW50OF90
KiBtX2RhdGEgeyBudWxscHRyIH07Ci0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLX07Cit1c2lu
ZyBEYXRhUmVmZXJlbmNlID0gQXJyYXlSZWZlcmVuY2U8dWludDhfdCwgYXJyYXlSZWZlcmVuY2VE
eW5hbWljRXh0ZW50PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCmluZGV4IDc4YTQ2MzhlYjczMDViZmQxOTEwODcwNjhkMzBiY2RiOGRm
ZTgyYWUuLjJjYjc5YjczMWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRjNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xODYsMjAgKzE4NiwxNSBAQCBib29s
IERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSwgc2l6ZV90IGFsaWdubWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERlY29kZXI6
OmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UpCitjb25zdCB1aW50OF90KiBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShz
aXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKIHsKLSAgICB1aW50NjRfdCBzaXplOwotICAg
IGlmICghZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYg
KCFhbGlnbkJ1ZmZlclBvc2l0aW9uKDEsIHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKGFsaWdubWVudCwgc2l6ZSkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IG1fYnVmZmVyUG9zOwog
ICAgIG1fYnVmZmVyUG9zICs9IHNpemU7CiAKLSAgICBkYXRhUmVmZXJlbmNlID0gRGF0YVJlZmVy
ZW5jZShkYXRhLCBzaXplKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGF0YTsKIH0K
IAogYm9vbCBEZWNvZGVyOjpyZW1vdmVBdHRhY2htZW50KEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggYjcyZGQ4YWNlMjc3M2RiMzU1
OWUzNjZkZDk1MjRmMjM0MWU1NWUwNi4uMzQ0Y2U2ODgyZmM5MDk4NGIyZmE1N2JmOWM0OGI5NjUw
ZTBmZjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtNDAsNyArNDAs
NiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIElt
cG9ydGFuY2VBc3NlcnRpb247CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBl
bnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90
OwpAQCAtNzgsOCArNzcsOSBAQCBwdWJsaWM6CiAKICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxp
Z25tZW50KTsKIAotICAgIC8vIFRoZSBkYXRhIGluIHRoZSBkYXRhIHJlZmVyZW5jZSBoZXJlIHdp
bGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29kZXIg
b2JqZWN0LgotICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVZhcmlhYmxlTGVuZ3Ro
Qnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmKTsKKyAgICAvLyBUaGUgZGF0YSBpbiB0aGUgcmV0dXJu
ZWQgcG9pbnRlciBoZXJlIHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRo
ZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgorICAgIC8vIFJldHVybnMgbnVsbHB0ciBvbiBmYWls
dXJlLgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBjb25zdCB1aW50OF90KiBkZWNvZGVGaXhlZExl
bmd0aFJlZmVyZW5jZShzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVl
PiogPSBudWxscHRyPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShUJiB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggZmQ0MDkwNzc0YjJi
YzJhNzYyOWI5YzAyZGM1NTRjNGNkYzk4ZjVjYi4uZTgzYTNlNGFmZjQyYTU3NTUwNWRjOGYwNzMx
N2ExYzFhYzE5ZGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgi
CiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0x
NDEsNyArMTQyLDcgQEAgdm9pZCBFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9w
dHI8RW5jb2Rlcj4gb3JpZ2luYWwpCiAKICAgICBvcmlnaW5hbC0+c2V0U2hvdWxkRGlzcGF0Y2hN
ZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0Zv
clN5bmNSZXBseTo6WWVzKTsKIAotICAgIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERh
dGFSZWZlcmVuY2Uob3JpZ2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKSk7
CisgICAgKnRoaXMgPDwgRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFs
LT5idWZmZXJTaXplKCkpOwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0g
b3JpZ2luYWwtPnJlbGVhc2VBdHRhY2htZW50cygpOwogICAgIHJlc2VydmUoYXR0YWNobWVudHMu
c2l6ZSgpKTsKQEAgLTIxNiwxMiArMjE3LDYgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExl
bmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGkKICAg
ICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVW
YXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNl
KQotewotICAgIGVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGF0YVJlZmVyZW5jZS5zaXpl
KCkpKTsKLSAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRh
dGFSZWZlcmVuY2Uuc2l6ZSgpLCAxKTsKLX0KLQogdm9pZCBFbmNvZGVyOjphZGRBdHRhY2htZW50
KEF0dGFjaG1lbnQmJiBhdHRhY2htZW50KQogewogICAgIG1fYXR0YWNobWVudHMuYXBwZW5kKFdU
Rk1vdmUoYXR0YWNobWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4
IDBlY2Y1NDFmNzc4NTg1MzZmMWZjZmE4MzZiNzZmMjQ4MmU0YzlhMTEuLmVhNjE5NjdiZTFlYmNi
ZDhiNmZiYmFhOGI4NWFmNDE4ZThkNTBjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNv
ZGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNz
IE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNjIsNyArNjEsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCiAgICAg
dm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90LCBz
aXplX3QgYWxpZ25tZW50KTsKLSAgICB2b2lkIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5
KGNvbnN0IERhdGFSZWZlcmVuY2UmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6
ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+
Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICB2b2lkIGVuY29kZShUJiYgdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA3ZmQxODNhNTZhZTk4YjA2NjQ1
ZmY3NTE0OGFjMjk4M2M1MmU0YWViLi40MTI5ZDRlMmI0OWQ1YzhmYzQxYTJkNjU0YWRjZDg5ZTg2
YzYzN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtOTYsNyArOTcs
NiBAQCBzdHJ1Y3QgQ29kaW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90
PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB0ZW1wbGF0ZTw+IHN0cnVj
dCBDb2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7CiAgICAgdXNp
bmcgVHlwZSA9IERhdGFSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmgKaW5kZXggNDZlMjFkOGQ5MzZmMmQ4YjUxNjdiMjQ5Zjg4MTExNmZmZWI3ZDRi
OS4uNzc0NjFkNTU1YjcyOTJjMjBlYmY1MTRhMzAyZDFkYzZlNzc3MDExZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNTQsOSArNTQsMTAgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25J
RC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIHVzaW5nIFNlbmRTeW5jUmVz
dWx0ID0gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0
IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRz
IHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoVDo6
aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKIApAQCAtNjQsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwg
T3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewog
ICAgICAgICBBU1NFUlQobWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSk7CiAKQEAgLTcyLDcgKzcz
LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiBy
ZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhVJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlv
bklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVy
biBzZW5kU3luYzxVPihzdGQ6OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApp
bmRleCA3YTNjYjMzODc2MzZkY2FmY2VhY2VhZDkxYjg2MzliN2JhNzYzNmM2Li41MDBmODM5ZGZh
YWU5Mjk3ZjRkYzYzZGM2NjMwNTg3N2IyMmRmMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKIAorI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCkBAIC00OCw3ICs0OSw3IEBAIHZvaWQg
U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiBPcHRpb25h
bDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YSkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcApp
bmRleCAyZjcyODVhYzBiNGJkNmRlMTFkZmViOWZlMzI4ZjAxYzk5OTk1MGEwLi5lOTZkZmIxZmJm
ODkxY2Q0YTBjNzc0ZTg1YzkwNzg3NThhNmZlODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
RW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwCmluZGV4IDg1MmVmNDNlMDA4NjMxYzlmYWZhODIzMGM5
MTljMTdhOWQ0YTI5YjYuLjIxNjExMzljMzAxNGYwZWFmYjNkYzQ3Yzg1ZGE0MTkwYTJiYTA2NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cmluZ1Jl
ZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKaW5kZXggOGIzNzQwZjRiMTAxYWQ5MGY1MGVkNTdjODUwYjkwMzBmY2M0MzBjMi4u
NGIyMGM4NWFjNTM2MjM2NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5QT2JqZWN0UHJveHkuaCIKICNpbmNs
dWRlICJOUFJlbW90ZU9iamVjdE1hcC5oIgogI2luY2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5oCmluZGV4IGFkNGZjZDlkOGNjZjQyZjEyZWU0ODhlMDEzNDZjNjE5YTcwMWI4ZDIuLmM3
YTcwNTNjYmQyNmQyMDQ1NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
LmgiCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgpAQCAtMzcsMTAgKzM4LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBE
YXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGF5ZXJIb3N0
aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IGNhMGFlMjg0MTFhODNkZTRiZjNmZTA4YjAxMmU0MDU1NDhkOGI1NzMuLjg5ZmI4YWJhZjlhZWNl
MDdjNjM0NzBkYTNkYjgzYzg4MzI2ZGQzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtMjAzLDYgKzIwMyw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9u
c19mb3JfbmFtZXNwYWNlKG5hbWVzcGFjZSwga2luZF9hbmRfdHlwZXMpOgogCiBkZWYgdHlwZXNf
dGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVybiBmcm96ZW5zZXQo
WworICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQn
LAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC0yMTUsNiArMjE2
LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAg
ICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIn
LAorICAgICAgICAnV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJywKICAgICAg
ICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29y
ZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLApAQCAtMjQzLDYgKzI0NSw3IEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkRp
c3BsYXlMaW5rT2JzZXJ2ZXJJRCcsCiAgICAgICAgICdXZWJLaXQ6OkRvd25sb2FkSUQnLAogICAg
ICAgICAnV2ViS2l0OjpHZW9sb2NhdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUnLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQn
LAogICAgICAgICAnV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEJywKQEAgLTUzMCw2ICs1
MzMsNyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAg
ICAgICAnT3B0aW9uU2V0JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJn
dW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAn
VmVjdG9yJzogeydoZWFkZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzog
eydoZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJB
cmd1bWVudENvZGVycy5oIiddfSwKKyAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hl
YWRlcnMnOiBbJyJBcnJheVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6
IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgIH0KIAogICAgIG1hdGNoID0gcmUubWF0Y2go
Jyg/UDx0ZW1wbGF0ZV9uYW1lPi4rPyk8KD9QPHBhcmFtZXRlcl9zdHJpbmc+LispPicsIHRlbXBs
YXRlX3N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCA2MTM0M2Jk
OTQxMDZiNmU3ODlmODNiYzI1ZGU3OWY3YTYwNDA5M2NjLi5jNzgyMzE2ZjMwNTdhM2NhZjlkM2Uy
MDc3YzgxMzI1NTNlNjk3NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5o
IgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiRW5jb2Rlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmgKaW5kZXggN2JhMjA3YWJiMGFjY2M4YTU3MGY1YzY2M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdk
MDNmYWZlMDM5NTg3OTUyYTYzNzhkMWE5YzhmZjJmNzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtODQsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzRGFlbW9uKCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2
aWNlc0NoZWNrSW4oKTsKICAgICB2b2lkIHNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91
Z2hwdXRRT1MpOwogI2VuZGlmCkBAIC0xODQsNCArMTgzLDMgQEAgc3RydWN0IEF1eGlsaWFyeVBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIuLmU0OWY2YzRj
Y2QzMDk3YjZmOTc3N2M3YWJlNDY5MWM4ZmEyMDVjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjc5LDEyICsyNzksMTIgQEAgYXV0
byBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikgLT4gT3B0aW8KICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYg
KCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBuYW1lOwogICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICBpZiAoIW5h
bWUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICByZXR1cm4ge3sg
V1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKm5hbWUpIH19OwogfQogCkBAIC00OTUsMTIg
KzQ5NSwxMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8TGluZWFyVGltaW5nRnVuY3Rpb24+OjpkZWNv
ZGUoRGVjb2RlciYsIExpbmVhclRpbWluZ0Z1bmN0aW9uJgogdm9pZCBBcmd1bWVudENvZGVyPEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24pCiB7CiAgICAgZW5jb2Rl
ciA8PCB0aW1pbmdGdW5jdGlvbi50eXBlKCk7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8IHRpbWlu
Z0Z1bmN0aW9uLngxKCk7CiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi55MSgpOwogICAg
IGVuY29kZXIgPDwgdGltaW5nRnVuY3Rpb24ueDIoKTsKICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1
bmN0aW9uLnkyKCk7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1bmN0aW9uLnRpbWlu
Z0Z1bmN0aW9uUHJlc2V0KCk7CiB9CiAKQEAgLTUzNiw3ICs1MzYsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBDdWJpY0Jlegogdm9pZCBBcmd1bWVudENvZGVyPFN0ZXBzVGltaW5nRnVuY3Rpb24+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVu
Y3Rpb24pCiB7CiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi50eXBlKCk7Ci0gICAgCisK
ICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1bmN0aW9uLm51bWJlck9mU3RlcHMoKTsKICAgICBlbmNv
ZGVyIDw8IHRpbWluZ0Z1bmN0aW9uLnN0ZXBQb3NpdGlvbigpOwogfQpAQCAtNTYxLDcgKzU2MSw3
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTdGVwc1RpbWluZ0Z1bmN0aW9uPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFN0ZXBzVGltaW5nRnVuCiB2b2lkIEFyZ3VtZW50Q29kZXI8U3ByaW5nVGlt
aW5nRnVuY3Rpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ByaW5nVGltaW5n
RnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uKQogewogICAgIGVuY29kZXIgPDwgdGltaW5nRnVuY3Rp
b24udHlwZSgpOwotICAgIAorCiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi5tYXNzKCk7
CiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi5zdGlmZm5lc3MoKTsKICAgICBlbmNvZGVy
IDw8IHRpbWluZ0Z1bmN0aW9uLmRhbXBpbmcoKTsKQEAgLTY0NCwxMiArNjQ0LDEyIEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxGbG9hdEJveEV4dGVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBGbG9hdEJveEV4dGVuCiB7CiAgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdEJveEV4
dGVudD46OmVuY29kZShlbmNvZGVyLCBmbG9hdEJveEV4dGVudCk7CiB9Ci0gICAgCisKIGJvb2wg
QXJndW1lbnRDb2RlcjxGbG9hdEJveEV4dGVudD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBG
bG9hdEJveEV4dGVudCYgZmxvYXRCb3hFeHRlbnQpCiB7CiAgICAgcmV0dXJuIFNpbXBsZUFyZ3Vt
ZW50Q29kZXI8RmxvYXRCb3hFeHRlbnQ+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRCb3hFeHRlbnQp
OwogfQotICAgIAorCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFNpemU+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgRmxvYXRTaXplJiBmbG9hdFNpemUpCiB7CkBAIC04MDQsMTIg
KzgwNCwxMiBAQCBPcHRpb25hbDxSZWNlbnRTZWFyY2g+IEFyZ3VtZW50Q29kZXI8UmVjZW50U2Vh
cmNoPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAg
ICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAg
ICBPcHRpb25hbDxXYWxsVGltZT4gdGltZTsKICAgICBkZWNvZGVyID4+IHRpbWU7CiAgICAgaWYg
KCF0aW1lKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAgICAgcmV0dXJu
IHt7IFdURk1vdmUoKnN0cmluZyksIFdURk1vdmUoKnRpbWUpIH19OwogfQogCkBAIC05MTgsNyAr
OTE4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEF1dGgKIH0KIAogYm9vbCBBcmd1bWVudENvZGVy
PEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCi17ICAgIAorewogICAgIFByb3RlY3Rpb25T
cGFjZSBwcm90ZWN0aW9uU3BhY2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm90ZWN0aW9u
U3BhY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MjcsNyArOTI3LDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIEF1dGhlbnRpY2EKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3Bvc2VkQ3JlZGVu
dGlhbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIHByZXZpb3VzRmFp
bHVyZUNvdW50OyAgICAKKyAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHByZXZpb3VzRmFpbHVyZUNvdW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC05MzgsNyArOTM4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF1dGhlbnRpY2EKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXJyb3IpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBjaGFsbGVuZ2UgPSBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShwcm90ZWN0aW9uU3BhY2UsIHByb3Bvc2VkQ3JlZGVudGlhbCwgcHJldmlv
dXNGYWlsdXJlQ291bnQsIGZhaWx1cmVSZXNwb25zZSwgZXJyb3IpOwogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtOTc4LDcgKzk3OCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQcm90ZWN0aW9uU3Bh
Y2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUHJvdGVjdGlvblNwYWNlJiBzCiAgICAgU3Ry
aW5nIHJlYWxtOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVhbG0pKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCisKICAgICBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZSBhdXRoZW50aWNhdGlvblNjaGVtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF1dGhlbnRp
Y2F0aW9uU2NoZW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAyNCw3ICsxMDI0LDcg
QEAgYm9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVy
c2lzdGVuY2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwZXJzaXN0ZW5jZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKHVzZXIs
IHBhc3N3b3JkLCBwZXJzaXN0ZW5jZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDU1LDcg
KzEwNTUsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlSW1hZ2UoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPEltYWdlPiYgaW1hZwogICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7CiAgICAgaWYgKCFiaXRtYXApCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMjksNyArMTEyOSw3IEBAIE9wdGlvbmFsPFJlZjxO
YXRpdmVJbWFnZT4+IEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvCiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSho
YW5kbGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTE5Niw3ICsxMTk2LDcg
QEAgT3B0aW9uYWw8UmVmPEZvbnQ+PiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogdm9pZCBBcmd1bWVudENvZGVyPEN1cnNvcj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsKICAgICBlbmNvZGVyIDw8IGN1
cnNvci50eXBlKCk7Ci0gICAgICAgIAorCiAgICAgaWYgKGN1cnNvci50eXBlKCkgIT0gQ3Vyc29y
OjpDdXN0b20pCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU1OCw3ICsxNTU4LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPERhdGFiYXNlRGV0YWlscz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBEYXRhYmFzZURldGEKICAgICBlbmNvZGVyIDw8IGRldGFpbHMuY3JlYXRpb25UaW1lKCk7
CiAgICAgZW5jb2RlciA8PCBkZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUoKTsKIH0KLSAgICAKKwog
Ym9vbCBBcmd1bWVudENvZGVyPERhdGFiYXNlRGV0YWlscz46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBEYXRhYmFzZURldGFpbHMmIGRldGFpbHMpCiB7CiAgICAgU3RyaW5nIG5hbWU7CkBAIC0x
ODkzLDcgKzE4OTMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmF3RmlsZT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBSYXdGaWxlJiBmaWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHRydWU7CiB9Ci0gICAgCisKIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGE+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVEYXRhJiBzZXR0aW5ncykKIHsKICAg
ICBlbmNvZGVyIDw8IHNldHRpbmdzLnRpdGxlOwpAQCAtMTkxMSw3ICsxOTExLDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFNoYXJlRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURh
dGEmIHNldHRpbmdzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9
Ci0gICAgCisKIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNldHRp
bmdzKQogewogICAgIGVuY29kZXIgPDwgc2V0dGluZ3Muc2hhcmVEYXRhOwpAQCAtMjAwMCw3ICsy
MDAwLDcgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRD
aGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJgogICAgIFRleHRDaGVja2luZ1R5cGUgdHlw
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIAorCiAgICAgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOwogICAg
IGRlY29kZXIgPj4gcmFuZ2U7CiAgICAgaWYgKCFyYW5nZSkKQEAgLTIxMjQsNyArMjEyNCw3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBGCiAgICAgRmxvYXRTaXplIGFsaWdubWVudE9mZnNldDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsaWdubWVudE9mZnNldCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKKwogICAgIFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VzIGFu
Y2hvckVkZ2VzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYW5jaG9yRWRnZXMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8
Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgRgogCiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRWaWV3cG9ydFJlY3RBdExhc3RMYXlv
dXQodmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0KTsKICAgICB2aWV3cG9ydENvbnN0cmFpbnRzLnNl
dExheWVyUG9zaXRpb25BdExhc3RMYXlvdXQobGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCk7Ci0g
ICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE5MiwxMSArMjE5MiwxMSBAQCBib29s
IEFyZ3VtZW50Q29kZXI8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsCiAgICAgRmxvYXRTaXplIGFsaWdubWVudE9mZnNldDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFsaWdubWVudE9mZnNldCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKKwogICAgIFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VzIGFuY2hvckVk
Z2VzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYW5jaG9yRWRnZXMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCisKICAgICBmbG9hdCBsZWZ0T2Zmc2V0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobGVmdE9mZnNldCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyMTIsNyAr
MjIxMiw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwKICAgICBmbG9hdCBib3R0b21PZmZzZXQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib3R0b21PZmZzZXQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCisKICAgICBGbG9hdFJlY3QgY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjI4LDcgKzIyMjgsNyBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsCiAgICAgRmxvYXRTaXplIHN0aWNreU9mZnNldEF0TGFzdExheW91dDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0aWNreU9mZnNldEF0TGFzdExheW91dCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIEZsb2F0UG9pbnQgbGF5ZXJQb3NpdGlvbkF0TGFz
dExheW91dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVyUG9zaXRpb25BdExhc3RMYXlv
dXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsCiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRSaWdodE9mZnNldChy
aWdodE9mZnNldCk7CiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRUb3BPZmZzZXQodG9wT2Zm
c2V0KTsKICAgICB2aWV3cG9ydENvbnN0cmFpbnRzLnNldEJvdHRvbU9mZnNldChib3R0b21PZmZz
ZXQpOwotICAgIAorCiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRDb25zdHJhaW5pbmdSZWN0
QXRMYXN0TGF5b3V0KGNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQpOwogICAgIHZpZXdwb3J0
Q29uc3RyYWludHMuc2V0Q29udGFpbmluZ0Jsb2NrUmVjdChjb250YWluaW5nQmxvY2tSZWN0KTsK
ICAgICB2aWV3cG9ydENvbnN0cmFpbnRzLnNldFN0aWNreUJveFJlY3Qoc3RpY2t5Qm94UmVjdCk7
CkBAIC0yMzYyLDcgKzIzNjIsNyBAQCBib29sIGRlY29kZUZpbHRlck9wZXJhdGlvbihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiYgZmlsdGVyKQogICAgICAgICBmaWx0
ZXIgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjYwMSw5ICsyNjAxLDkgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPEV4Y2VwdGlvbkRldGFpbHM+OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBF
eGNlcHRpb25EZXQKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHN0YXRpc3RpY3MpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnJlZ2lzdHJh
YmxlRG9tYWluOwotICAgIAorCiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmxhc3RTZWVuLnNl
Y29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKTsKLSAgICAKKwogICAgIC8vIFVzZXIgaW50ZXJhY3Rp
b24KICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uOwogICAgIGVu
Y29kZXIgPDwgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRz
U2luY2VFcG9jaCgpLnZhbHVlKCk7CkBAIC0yNjE5LDcgKzI2MTksNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBXZWJDbwogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBlbmNvZGVyIDw8IHN0YXRp
c3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluczsKLSAgICAKKwogICAgIC8vIFN1YnJl
c291cmNlIHN0YXRzCiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnM7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG87CkBAIC0yNjM0LDkgKzI2MzQsOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDbwogICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5mb250c0ZhaWxlZFRvTG9hZDsKICAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3MuZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQ7CiAgICAgZW5jb2Rl
ciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lUmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdl
YkFQSXM7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MuY2FudmFzQWN0aXZpdHlS
ZWNvcmQ7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MubmF2aWdhdG9yRnVuY3Rp
b25zQWNjZXNzZWQ7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0Fj
Y2Vzc2VkOwogI2VuZGlmCkBAIC0yNjU1LDcgKzI2NTUsNyBAQCBPcHRpb25hbDxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiBBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNv
ZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFzdFNlZW5UaW1lQXNEb3VibGUpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MubGFzdFNlZW4gPSBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMobGFzdFNlZW5UaW1lQXNEb3VibGUpOwotICAgIAorCiAgICAg
Ly8gVXNlciBpbnRlcmFjdGlvbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5o
YWRVc2VySW50ZXJhY3Rpb24pKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMjcy
NiwyNiArMjcyNiwyNiBAQCBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcmd1bWVu
dENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUoRAogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzdGF0aXN0aWNzLmlzVmVyeVByZXZhbGVudFJlc291cmNlKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGlzdGljcy5kYXRhUmVjb3Jkc1JlbW92ZWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotICAgIAorCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MuZm9udHNGYWlsZWRUb0xvYWQpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIAorCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNz
LmZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICAKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZVJlZ2lz
dHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICAKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5jYW52
YXNBY3Rpdml0eVJlY29yZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MubmF2aWdhdG9yRnVuY3Rpb25zQWNj
ZXNzZWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgpAQCAtMjkxMCwxMiArMjkxMCwxMiBAQCBP
cHRpb25hbDxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlv
bk9wdGlvbj46OmRlY29kZShEZWNvZAogICAgIGRlY29kZXIgPj4gZGlzcGxheU5hbWU7CiAgICAg
aWYgKCFkaXNwbGF5TmFtZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKKwog
ICAgIE9wdGlvbmFsPE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlPiB0eXBlOwogICAgIGRlY29k
ZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgCisKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGlzcGxheU5hbWUpLCBXVEZNb3ZlKCp0
eXBlKSB9fTsKIH0KIApAQCAtMjk1OCw3ICsyOTU4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFZl
Y3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b24KICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCiAgICAgICAgIGVuY29kZXIgPDwg
Km9yaWdpbjsKIH0KLSAgICAKKwogYm9vbCBBcmd1bWVudENvZGVyPFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgdWludDY0X3QgZGF0YVNpemU7CkBAIC0z
MjIxLDQgKzMyMjEsODIgQEAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBX
VEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5hbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFu
dGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOwor
ICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJp
YnV0ZXMuc2hhcmVSZXNvdXJjZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wy
OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8
PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LmluaXRpYWxQb3dlclByZWZlcmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIg
PDwgYXR0cmlidXRlcy54ckNvbXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMu
c3RlbmNpbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBo
YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9y
UGVyZm9ybWFuY2VDYXZlYXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5z
aGFyZVJlc291cmNlcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25z
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZl
cmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOwor
fQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3Rp
dmVJbmZvLm5hbWU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2Rl
ciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGFjdGl2ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5z
aXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5m
bzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1NWUy
MTFlMTdjNGJlZGVmMTcwNWQ2Li4xZGFlOTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2ZTlm
YzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtNzEsNiArNzEsMTMgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJB
cnJheVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIx
MCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0
aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlczsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0
IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNvcmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbj4gewogfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBz
dGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewog
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsK
K307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUwODYz
NjVkYmY3N2ZhOThlNDFjMWM3NGEzZTdlMjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdiMDQ4
YTNkZWM2Y2Y4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwg
c2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1l
ZGlhSW5HUFVQcm9jZXNzOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3Vs
ZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRF
bmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVy
OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAgT3B0
aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXgg
ZDkxZTQ2MDM4ZjMwOWI1MTMwYmZkZTU4ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1YmY0
ZjkyY2YwNmZlNWUxMTIwNWE0YjUxMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0lu
R1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nl
c3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFs
c2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BV
UHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29k
ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2Ug
fTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDliZDhhODE3NTQ5ZjU4ZmUzODNkNzI1ZGE2
NjNmM2JjNTRjYTBkNzQuLjc3ZTliNGQ1Y2M3NTJmYmNkYjZiNjVmOWFkYzI2MDE5NTZjYTE0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnNDRi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVy
c1NvdXAuY3BwCmluZGV4IDFkODRlMmZlMjY4ZjM0NjBlYjI5NzVjNDJiYTk1ZDE0ZjFkMjM1Y2Yu
LmZhMjY4ZDU4NGEwZmM4ZGY4N2EyMWZhNDU2MDc3YjhjNWQ0MmI4NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNw
cApAQCAtODEsNyArODEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENlcnRpZmljYXRlSQogICAgIC8vIEVuY29k
ZSBzdGFydGluZyBmcm9tIHRoZSByb290IGNlcnRpZmljYXRlLgogICAgIGZvciAoc2l6ZV90IGkg
PSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgR0J5
dGVBcnJheSogY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdFtpIC0gMV0uZ2V0KCk7
Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoSVBDOjpEYXRh
UmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKSk7CisgICAgICAg
IGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZp
Y2F0ZS0+bGVuKTsKICAgICB9CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
Q2VydGlmaWNhdGVJbmZvJiBjCiAgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRpZmlj
YXRlOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjaGFpbkxlbmd0aDsgaSsrKSB7CiAg
ICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjZXJ0aWZpY2F0
ZURhdGFSZWZlcmVuY2UpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRl
RGF0YVJlZmVyZW5jZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgR0J5
dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyhjZXJ0aWZp
Y2F0ZURhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI3Nyw0ICsyNzcsMyBAQCBPcHRpb25hbDxT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+ICBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdQogI2VuZGlmCiAKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDkxN2YwMWJlMWM5
ZjhjYWEyYWJmN2YwZjg5MGY4OTVhM2YyZWY4Ni4uZjgzYTRjYWI5NWNhOGYwMTVjODk4NjVkN2Zm
OTMwYWY1MWU1ZjFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApAQCAtMTM3LDcgKzEzOCw2IEBAIFBsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIEBu
by11bmlmeQogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwIEBuby11bmlmeQogUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwIEBuby11bmlmeQotUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2Uu
Y3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZv
cm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5j
cHAgQG5vLXVuaWZ5CkBAIC01NjgsNiArNTY4LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTY5MywzICs2OTUsNiBAQCBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5jcHAKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3Bw
CitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDRlYThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJkNmY5
NzMuLjcxZmZjNWYyZTA0ZGVkMDVkZThmYWVhMmUwOWEwNDkyNjNhNjkxZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTU2LDYgKzU2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHAKIAogR1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BV
U2VydmljZUVudHJ5UG9pbnQubW0KK0dQVVByb2Nlc3MvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0K
IEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCAyZmUzODYyNTk0NjNiZmIzNjIz
ZWJiZGI0ZmVmNWY4MzkzNmIwZDNkLi43MzdiNjI1ODE5ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2Vh
ZjM5NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxv
YWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxv
YWRpbmdDbGllbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNv
bkxvYWRpbmdDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaAppbmRleCA0ZjM5OGI1MzBmNjA4NTc1Yzk2N2I4M2M3NGZhMmY0MzI4ZjZj
ZTNiLi44Y2E5N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4NTYwM2E4YTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTMsNyAr
NTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIo
KSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2Us
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRP
cHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pOworICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBDOjpDb25u
ZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3lu
Y1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAogICAgIGVudW0gY2xhc3Mg
U2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFllcyB9Owog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1Jl
cGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6
U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0g
U2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CkBAIC02NSw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3lu
Y09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGlt
ZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC0xNjMsMTIgKzE2NCwxMiBAQCBib29s
IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgT3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKLWJvb2wgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVw
bHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpTZW5kU3luY1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5j
KFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBz
ZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5jTWVz
c2FnZUV4cGVjdGVkKTsKIAogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBUcmFjZVNjb3BlIHNjb3BlKFN5bmNN
ZXNzYWdlU3RhcnQsIFN5bmNNZXNzYWdlRW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9u
L1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDgyM2MyMDJhODU2YTAxMzZk
ZDllYTc1OWYwZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhmNGZiNGY4NzM0ZDdiZmQ2MDhk
MjAzODgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
U3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIE5hdmlnYXRpb25T
T0F1dGhvcml6YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2FkU3RhdGU6Ok9ic2VydmVyIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5oCmluZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZiYmJhNDJmYzkwY2VjMzU3N2Yu
LjEyOGEzOTc3ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM1LDEwICszNiw2
IEBACiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAotbmFtZXNw
YWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0YTEwZGE5YjU0MWZlZTI4MjA4MDhj
MWU1MGQzZmE5MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVkNjViNTdlZDBjODAxM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGF5ZXJU
cmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAsMTAgKzgxLDYgQEAgY2xhc3Mg
T3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1uYW1lc3Bh
Y2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwCmluZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRkNDVmMTJlZGUzNGEwZjc4Y2Ew
YTYuLjI0OGU1M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVkYWFiMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0
LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
CmluZGV4IDEyOWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1NmQzY2NjYjIuLmE0ZDhkN2Nk
ODA0ZTY1NjBkYWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxkU2hhcmVkLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmgiCkBAIC00OCwxMCArNDksNiBAQCBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0
eWxlU2hlZXQ7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0K
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMzYzUyZDE2MGM0OWUw
MmFiMmUyNDc4NGNkY2QzZTFkMjVkYmU2YWMuLmJjZDAyN2IxNzM4MWJhODhhNWMzMWI5NzgwMDFi
ZTZjODI1N2VmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNTgsNyArNTgsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNzkyNyw2ICs3OTI2LDEwIEBAIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVBy
b2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFi
bGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgPSBwcmVm
ZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFy
YW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQ
VVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcGFyYW1l
dGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BV
UHJvY2Vzc0ZvcldlYkdMRW5hYmxlZCgpOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZVZQOURlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAj
aWYgRU5BQkxFKFZQOSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGFyYW1ldGVycy5zaG91bGRF
bmFibGVWUDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkgJiYg
KCFXZWJDb3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0RlY29k
ZXJFbmFibGVkT25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA2NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3MTFmOTFiMmU1Li40MzdhYjc1
MGIzNWFiMTYzYjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCiAjaW5j
bHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rp
b24uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIwMyw3ICsyMDQsNiBAQCBlbnVt
IGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgSVBD
IHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFS
ZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1Y2U2NWU5ZDJkNTY1YjNmMTI1
ZjM0NTdhMjU2ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMyZTZhMTk5NzdkYjYxYmFiNjEz
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgK
QEAgLTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGQ0NDJiNjJiNTIy
NTg3ZjkwZmE2ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2ODhhMjY4MjE5NDFmZjdhNDE4
ZjRkZjVhOTc1YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmgKQEAgLTM4LDEwICszOCw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZv
OwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMGNjMDYzZjY4ZDAxYmQ1ZDdkNDljNTU5YjE2OTY5MTg1M2ZlYmRjMy4uYjcwMDJmNDE1
ODZmZDRlZjg4NzQwNTllNzM2OWJkYjIxZTBiOWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MDEsNyArNzAxLDYgQEAKIAkJMkQ5
MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0
RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNG
RCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsg
fTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAw
NThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkz
RkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5j
cHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3
RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5
M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9Owog
CQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUz
NTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtMTMwNiw2ICsx
MzA1LDcgQEAKIAkJN0FGQkQzNjMyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGls
cy5oICovOyB9OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1
MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OwogCQk3QzA2NUYyQzFD
OENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENE
OTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07
CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0Iw
QkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAv
KiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9
OwpAQCAtMjcyMyw3ICsyNzIzLDYgQEAKIAkJMUFDNUZGQzExNzRCRkQxQjAwMDE0ODNEIC8qIFBs
dWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlTG9hZFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAv
KiBEYXRhUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERhdGFSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3
RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBQzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAv
KiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00Mzg5LDYgKzQzODgsMTcgQEAKIAkJN0FGQkQzNjUyMUU1MUJBQjAw
NURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aDsgcGF0aCA9IENsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAv
KiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8q
IFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGls
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMURCMjY1MjU2NjhDRTAwMDBF
MjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4RTM0
NDI1NzdBQzM3MDA5RjFEODMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjUyNTRB
RkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjcyNTRBRkUx
NzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2OTI1NEFGRUE3
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9y
bWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2lu
SW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY4MCwxMSAr
NjY5MCwxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVy
LmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNw
cCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAq
LywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywK
IAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJ
QkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRB
MjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0
MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3
MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJD
QjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEg
LyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29k
ZXIuaCAqLywKQEAgLTgzNTYsMTEgKzgzNjYsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0
RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMg
LyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAw
NkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzky
NDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcy
N0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEg
LyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAw
QjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8s
CisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2
NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8q
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYw
OTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODM3NSw5
ICs4MzkwLDE0IEBACiAJCTU1MDY0MEExMjQwNzFBMjkwMEFBRTA0NSAvKiBncmFwaGljcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0I0OEUzNDMyNTc3
QUJGODAwOUYxRDgzIC8qIGNvY29hICovLAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAv
KiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAw
M0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4
QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3Qjkw
NDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAor
CQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
ICovLAorCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0
MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBB
MjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJ
NTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywK
QEAgLTg3NzUsNiArODc5NSwxNCBAQAogCQkJbmFtZSA9IENsYXNzaWZpZXI7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQk3QjQ4RTM0MzI1NzdBQkY4MDA5RjFEODMgLyogY29j
b2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdCNDhF
MzQ0MjU3N0FDMzcwMDlGMUQ4MyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAq
LywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUgLyogY29jb2EgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTEyMDUsNiArMTEyMzMsNyBAQAogCQkJ
CTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBp
biBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENv
ZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMg
LyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2RjYw
MDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2MzRGMjM0
RjdDNjQwMEZGQTg2NCAvKiBBc3luY1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMTMyNzQsNyArMTMzMDMsNiBAQAogCQkJCTJEOTJBNzg1MjEyQjZBQjEwMEY0OTNGRCAvKiBC
bG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RDIx
MkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyRDky
QTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OURBQTM4QzI0Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dzZXJDaGVj
a3MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcgLyogRGV2
aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgK
aW5kZXggZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2OThhMjEyOTBkMzYxZDRhNi4uYzlkYzY4MmI4
NzU0OWI4MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAt
MzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBj
bGFzcyBQYXltZW50Q29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyYzBkZjViOWY1NDk2ODQ3ZWQ2NjkxMGJm
MmYzOWIyY2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5OTg4NzRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5oCkBAIC0zNSwxMCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUyMTJj
NjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07
Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MmI3YjllYWMxODkwOThmMzU4NWMxYTRjNzQyYzA1ODlmMTM2MjhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgVVNF
KEFOR0xFKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoYXR0
cmlidXRlcykpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cnMpCisgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKK3sKKyAg
ICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2
ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKK30KKwor
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkoKQoreworICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1l
c3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciksIDApOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHBsYXRmb3JtU3dhcENoYWluKCku
cmVjeWNsZUJ1ZmZlcigpOworI2VuZGlmCit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAorewor
ICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdo
dCkKK3sKKyAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOworICAgIG1fY3VycmVudEhlaWdodCA9
IGhlaWdodDsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVz
aGFwZSh3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkK
K3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJT
ZW5kUmlnaHQ7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9
IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5k
UmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewor
ICAgICAgICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dhcENoYWluKCk7CisgICAgICAgIHNjLnJlY3lj
bGVCdWZmZXIoKTsKKyAgICAgICAgc2MucHJlc2VudCh7IFdURk1vdmUoZGlzcGxheUJ1ZmZlciks
IG51bGxwdHIgfSk7CisgICAgfQorI2Vsc2UKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyNlbmRpZgorICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRl
bnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVu
c2lvbiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQorewor
ICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgbm90IGltcGxlbWVudGVkIGJlY2F1c2UgaXQncyBub3Qg
Y2xlYXIgdGhpcyBpcyB0aGUgcmlnaHQgd2F5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5MzQ5CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJ
bWFnZUJ1ZmZlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUmVmUHRyPEltYWdl
RGF0YT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9JbWFnZURhdGEoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChT
dHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25z
KQoreworICAgIGlmIChtX2RpZEluaXRpYWxpemUpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6YXRp
b24gdGltZWQgb3V0IGJlZm9yZSwgc28gbG9zZSB0aGUgY29udGV4dCBub3cuCisgICAgICAgIHdh
c0xvc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbml0aWFsaXplKGF2YWlsYWJs
ZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIG1fZGlkSW5pdGlhbGl6ZSA9
IHRydWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCgp
Cit7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAg
ICAgICAgY2xpZW50LT5mb3JjZUNvbnRleHRMb3N0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6d2FzQ2hhbmdlZCgpCit7CisgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaXNwYXRjaENvbnRl
eHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6d2FpdFVudGlsSW5pdGlhbGl6ZWQoKQoreworICAgIGlmIChtX2RpZEluaXRpYWxp
emUpCisgICAgICAgIHJldHVybjsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9u
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCk7CisgICAgaWYgKGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVk
PihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcywgSVBDOjpXYWl0Rm9yT3B0aW9u
OjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQorICAgICAgICByZXR1cm47
CisgICAgLy8gVGltZWQgb3V0LCBzbyByZXBvcnQgaW5pdGlhbGl6ZWQgd2l0aCBkdW1teSBkYXRh
LiBXZSBzaG91bGQgbG9zZSB0aGUgY29udGV4dC4KKyAgICB3YXNDcmVhdGVkKCIiLCAiIik7Cisg
ICAgLy8gRklYTUU6IE5lZWQgdG8gbWFyayB0aGUgY29udGV4dCBhcyBsb3N0LCBidXQgaXQncyBu
b3Qgc2FmZSB0byBmb3JjZSBsb3N0IGluIHRoaXMgY2FsbCBzdGFjay4KK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YTNhYWEwYzE4Y2E3MGIzYWU5NjYxNzA2MDFmZDcxOWQ1OTQxOTU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTAsMCArMSw0MTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCisK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCisjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFdl
YiBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgaW50ZXJm
YWNlLiBUaGUgaW1wbGVtZW50YXRpb24KKy8vIGNvbnZlcnRzIHRoZSBpbnRlcmZhY2UgdG8gYSBz
ZXF1ZW5jZSBvZiBJUEMgbWVzc2FnZXMgYW5kIHNlbmRzIHRoZSBtZXNzYWdlcyB0bworLy8gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gR1BVIHByb2Nlc3MuCisvLyBUaGUgaW1wbGVtZW50YXRp
b24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IGZpbmFsCisg
ICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eT4KKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKSBmaW5hbDsKKwor
ICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmlu
YWw7CisgICAgdXNpbmcgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OmlzRW5hYmxlZDsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5n
JiBleHRlbnNpb24pIGZpbmFsOworICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkg
ZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9p
ZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZp
bmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisKKyAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRl
ZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCBzY3JpcHQuCisgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7Cisg
ICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CisgICAgYm9v
bCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2
ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgZmluYWw7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgZmluYWw7
CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dM
dWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZm
ZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZv
aWQgYmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcx
KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFRleHR1cmUoR0NHTGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRDb2xv
cihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dM
Y2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9k
ZSkgZmluYWw7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJH
QiwgR0NHTGVudW0gbW9kZUFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuYyhHQ0dMZW51
bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuY1Nl
cGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBo
YSwgR0NHTGVudW0gZHN0QWxwaGEpIGZpbmFsOworICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKEdDR0xiaXRm
aWVsZCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdD
R0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7
CisgICAgdm9pZCBjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpIGZpbmFsOworICAgIHZvaWQg
Y2xlYXJTdGVuY2lsKEdDR0xpbnQgcykgZmluYWw7CisgICAgdm9pZCBjb2xvck1hc2soR0NHTGJv
b2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xl
YW4gYWxwaGEpIGZpbmFsOworICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZp
bmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVCdWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZUZyYW1lYnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQ
cm9ncmFtKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVSZW5kZXJidWZmZXIo
KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcw
KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRleHR1cmUoKSBmaW5hbDsKKyAg
ICB2b2lkIGN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlQnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1
ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUHJvZ3Jh
bShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBm
dW5jKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKSBmaW5hbDsK
KyAgICB2b2lkIGRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKSBm
aW5hbDsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkg
ZmluYWw7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgp
IGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVt
IG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgZW5hYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBl
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBm
aW5pc2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoKCkgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdD
R0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKSBmaW5hbDsK
KyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdD
R0xpbnQgbGV2ZWwpIGZpbmFsOworICAgIHZvaWQgZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpIGZp
bmFsOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAg
ICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZVVuaWZv
cm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYg
YXJnMikgZmluYWw7CisgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZm
ZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAg
IFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRGbG9h
dHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAg
IHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVl
KSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5h
bDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQg
aW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dM
ZW51bSBnZXRFcnJvcigpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwg
R0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xp
bnQqIHByZWNpc2lvbikgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4
UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2
b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9y
bWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1
ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVj
dCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIEdDR0xzaXplaXB0ciBnZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsK
KyAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAg
ICBHQ0dMYm9vbGVhbiBpc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IEdDR0xib29sZWFuIGlzRW5hYmxlZChHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIEdDR0xib29s
ZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dM
Ym9vbGVhbiBpc1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dM
Ym9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IEdDR0xib29sZWFuIGlzU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
dm9pZCBsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApIGZpbmFsOworICAgIHZvaWQgbGlua1Byb2dy
YW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHBvbHlnb25PZmZz
ZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKSBmaW5hbDsKKyAgICB2b2lkIHJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHNh
bXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7
CisgICAgdm9pZCBzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVu
YyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAg
dm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdD
R0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdD
R0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51
bSBmYWNlLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51
bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZvaWQg
c3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0g
emZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAg
ICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAg
IHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQg
dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZv
aWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDE+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1
ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZh
bHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NH
TGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVy
KEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFu
IG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsK
KyAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9p
ZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRh
dGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRh
dGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAg
dm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5h
bDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7
CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXpl
aSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgUGxhdGZv
cm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBp
c1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5k
VmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBH
Q0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0
cikgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNy
Y1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50
IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVy
KSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50
cykgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZv
aWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
IGZpbmFsOworICAgIHZvaWQgdGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpIGZpbmFsOworICAgIHZvaWQg
dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
ZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21w
cmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBT
dHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMdWludCB2MCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3Vp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAg
IHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVp
bnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVl
cykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwg
R0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRy
IG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2Rl
LCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVy
aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVl
cykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGlu
dCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVRdWVyeSgpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUXVlcnkoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNRdWVyeShQbGF0Zm9y
bUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luUXVlcnkoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdD
R0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRRdWVy
eU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRl
bGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICBHQ0dMYm9v
bGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lk
IGJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmlu
YWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCBwYXJhbSkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlv
biwgR0NHTGJpdGZpZWxkIGZsYWdzKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NH
THN5bmMgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApIGZp
bmFsOworICAgIEdDR0xlbnVtIGNsaWVudFdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKKyAgICB2b2lkIHdhaXRTeW5j
KEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZp
bmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3Qg
aWQpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1H
TE9iamVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luVHJh
bnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkgZmluYWw7CisgICAgdm9pZCBl
bmRUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2
YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkgZmluYWw7CisgICAgdm9pZCBnZXRUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRi
YWNrKCkgZmluYWw7CisgICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwor
ICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwg
UGxhdGZvcm1HTE9iamVjdCBidWZmZXIpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVy
LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NH
THVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+
IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBH
Q0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50
IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsOworICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJs
b2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOworICAgIEdDR0xpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVm
ZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NH
TGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwg
R0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7
CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJh
eU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIFN0cmluZyBn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBk
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NH
THNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRQaXhl
bHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1l
dGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJh
bSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xm
bG9hdCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQ
cm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBw
cm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVh
bmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAv
LyBOT0xJTlQKKyAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiB2YWwpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmlu
YWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAg
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0
ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKworcHJvdGVjdGVkOgorICAgIC8vIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxp
emVkKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQu
CisgICAgdm9pZCB3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmlu
ZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzTG9zdCgpOworICAgIHZvaWQg
d2FzQ2hhbmdlZCgpOworCisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBib29sIG1fZGlkSW5p
dGlhbGl6ZSB7IGZhbHNlIH07CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpIH07Cit9OworCisvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdl
YktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBz
Y3JpcHQuCitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xlbnVtLCB1aW50MzJfdD4p
Oworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGJvb2xlYW4pID09IHNpemVvZihib29sKSk7Citz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xiaXRmaWVsZCwgdWludDMyX3Q+KTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJ5dGUsIGludDhfdD4pOworc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWJ5dGUsIHVpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTHNob3J0LCBpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZV92PEdDR0x1c2hvcnQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PEdDR0xpbnQsIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
R0NHTHNpemVpLCBpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1
aW50LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMZmxvYXQs
IGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xoYWxmZmxvYXQsIHVp
bnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xjbGFtcGYsIGZsb2F0
Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x2b2lkLCB2b2lkPik7CitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFBsYXRmb3JtR0xPYmplY3QsIHVpbnQzMl90Pik7Citz
dGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMY2hhcikgPT0gc2l6ZW9mKHVpbnQ4X3QpKTsKK3N0YXRp
Y19hc3NlcnQoc2l6ZW9mKEdDR0xpbnQ2NCkgPT0gc2l6ZW9mKGludDY0X3QpKTsKK3N0YXRpY19h
c3NlcnQoc2l6ZW9mKEdDR0x1aW50NjQpID09IHNpemVvZih1aW50NjRfdCkpOworLy8gR0NHTHN5
bmMgYW5kIEdDR0wqcHRyIHR5cGVzIGFyZSBwb2ludGVycy4gT24gc29tZSBwbGF0Zm9ybXMsIHRo
ZXkgYXJlIDMyLWJpdC4KKy8vIEN1cnJlbnRseSB3ZSBoYXJkLWNvZGUgaXQgYnkgdXNpbmcgPD0s
IGFuZCBhc3N1bWUgdGhhdCB3ZSBkbyBub3QgdHJhbnNmZXIgYXJyYXlzIG9mIHRoZSB0eXBlcy4K
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOwor
c3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHNpemVpcHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x2b2lkcHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xzeW5jKSA8PSBzaXplb2YodWludDY0X3QpICYmIHNp
emVvZihHQ0dMc3luYykgPT0gc2l6ZW9mKGludHB0cl90KSk7CisvLyBFbmQgb2YgbGlzdCB1c2Vk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyYjMyYjJiYzEwMTBlZjhlY2QwYWY1Nzc3YWJkNGZh
MDhhM2M5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFdhc0NyZWF0
ZWQoU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMpCisgICAgdm9pZCBXYXNMb3N0KCkKKyAgICB2b2lkIFdhc0NoYW5nZWQoKTsKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjQxYTNkOTFkMDlkNWM3NjYz
ZTI3NTRlZDBhZjljYjMyYjFkMGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcApAQCAtMCwwICsxLDE2NDcgQEAKKy8qIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZp
bGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFVTRShB
TkdMRSkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJv
cihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRleHR1
cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5k
ZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZm
ZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9i
amVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihH
Q0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xh
bXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJs
ZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJs
ZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1
YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRG
dW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9y
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NH
TGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuY1NlcGFy
YXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNvbG9y
KEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xj
bGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayhH
Q0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dM
Ym9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+
KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhh
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGlsZVNo
YWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWln
aHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmpl
Y3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZy
YW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVy
KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRm
b3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVm
ZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQoreworICAgIHVp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1
ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRl
bGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1
cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVw
dGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayhH
Q0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIs
IHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dM
c2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdF
bGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRh
Y2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dM
ZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJU
ZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3Jt
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFy
ZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5k
ZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06
OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0
cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NH
TGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3RyaW5n
KEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sK
KyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9h
dCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldElu
dGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRl
Z2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQz
Ml90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5W
YWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJ
bnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAgICBpbnQ2NF90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFt
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xl
YW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVSZXBseTsK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkK
KyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZT
aXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0
dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5m
b0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkK
K3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9y
bWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFu
PEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3QgcHJlY2lzaW9u
UmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlw
ZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3Vs
dCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJhbmdl
LmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lzaW9uKQorICAg
ICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30KKworU3RyaW5n
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0
ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBh
cmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
ZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAg
ICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICog
c2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxv
Y2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1
ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90
KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEs
IHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90KSk7Cisg
ICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zm
c2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRy
PihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFi
bGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwor
R0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZm
ZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZl
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9
CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3JhbShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbShh
cmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW06OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dM
Ym9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVy
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVy
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFkZXIoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihhcmcw
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29s
ZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFt
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0
b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChHQ0dMZmxv
YXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFn
ZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJh
Z2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Np
c3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lz
c29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwg
R0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5j
aWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYs
IEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFz
a1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xlbnVt
IGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFz
cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dM
ZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZhY2Us
IGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQs
IHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwg
cGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xm
bG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRh
dGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2
LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24s
IHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwg
R0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
TGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00
aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1
ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZh
bHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJv
Z3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgs
IHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVz
LmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgsIHgs
IHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVz
LmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Yo
R0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihHQ0dM
dWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihp
bmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHks
IEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dM
dWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3Jt
YWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihp
bmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmlld3BvcnQo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmlld3BvcnQo
eCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVy
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dM
ZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSksIHVz
YWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQor
ICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUg
KiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxz
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFn
ZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBp
eGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1h
Z2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNl
ZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNv
dW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgs
IEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVu
dW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9m
ZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBseSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkK
KyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXpl
ICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwg
R0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZ
MCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xl
bnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0
WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRl
eHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48
Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNyYyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdl
dCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJE
KHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDAodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJl
c3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlv
biwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
dWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwg
R0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1
aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
THVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
ZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJp
eDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVp
bnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
STRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aXYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRp
dihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dM
dWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+
KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwg
c2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFy
dCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBH
Q0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihi
dWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1
ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9h
dCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgs
IHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3Jt
R0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRm
b3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1
ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVl
cnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sK
KyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIoUGxh
dGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIo
c2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1
bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFt
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwg
cG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dM
ZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJp
KHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
YW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc3lu
YyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0
aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5j
ZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVl
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKEdD
R0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NH
TGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5
bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7CisgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGll
bnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVs
ZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0
aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGludCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dM
ZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5z
Zm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3Qg
aWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dM
ZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlk
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0
aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVu
ZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
aW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwg
aW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRy
YW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzdW1l
VHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9i
amVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZv
cm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZl
clJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNl
dCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0s
IHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NH
THVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUp
Cit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFt
LCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJp
bmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFt
ZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQor
eworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3Jh
bSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5n
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJs
b2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1z
LmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHBhcmFt
cy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGludDMy
X3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJB
TkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdM
RShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEs
IG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5
T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRl
eEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dD
R0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFy
cmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4
QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhB
cnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hH
cm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNv
dW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9p
ZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xp
bnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
ZmxvYXQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
Ym9vbGVhbiogZGF0YSkgLy8gTk9MSU5UCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFsKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcklp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50
KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2ZGRlZTg3
YWJkY2M3NmY4NjlhZDU1NGRiNTExMmIzNmI4MmYyZDZiLi5kYTM5ODg2ZWJjOGYxNmQ4OGRmZTE4
NzNjNTdhODdmZWNmNmU0NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC04
MTgsNyArODE4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwg
R0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJv
b2wpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVj
dCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2ws
IGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggOTVjODM2ZTY5NTA0MWQ5N2QyNTkw
MzZmZDczZGZmNWM0NmI4ZmY5MS4uYzhjNTgyOTA1MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5N2E1
NmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtODIsNyArODIs
NyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vz
cygpCiAKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhp
cyk7Ci0gICAgYm9vbCBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoCisgICAgYXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3Jl
YXRlQXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1w
bGVSYXRlKCkpLAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsKIApA
QCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25u
ZWN0VG9HUFVQcm9jZXNzKCkKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFt
Rm9ybWF0OwogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQp
OwogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJh
bWVzKTsKLSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJM
aXN0PihzdHJlYW1Gb3JtYXQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5jcHAKaW5kZXggZGNiZDRmOGFmYWZlMTA2MGE2MWIw
MzA1MzFlMTJjNzRkMzdlZmZkMy4uMmNhOTdjNjM3YjFmMTllODI3OGE2YWU3MTNjNWMxNGU2NzY3
MTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRG
T1JNKENPQ09BKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyUHJveHlNZXNzYWdlcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuY3BwCmluZGV4IGI4ZjQ1YTZkNWJiNGRiNDYwOTg4MDEyNDNiYjVlOTMxN2Ix
ZTNlMmIuLjY1YjhmZDBkNzczNDdlOTM4YjU2NDU4MjI2Yjc4ZGE0M2M5Nzg5MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJj
ZVByb3ZpZGVyTWFuYWdlci5oCmluZGV4IGU1OWUxYjA2YjQ0N2U1ZDgwY2E2MTA1MmM2YzdhMzJj
NGJhMTQyZTYuLjgxOTQwOTBjOTMzYjJmMTFhNjQ2MGFiM2MxNzcyZDM3NjE2MzcxMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDkgQEAK
IAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWVySWRlbnRpZmllci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggMGRi
ODVhZTliZDI0MWViYTFiZGE0ZTYyMjQ0MGY2MzI4ZTFkOGEwYi4uMjk3ZWViZGExOTE4OWRmZTBj
ZmU2YzFlZDc2OWFhY2I5ZDZkOTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGQ1NDI0NDJjODQ0ZTU0ODNmZDNjZWQ3ODUwNWRj
YTE4Njk0YWU0YTQuLmEzMzllYjdiZmZkNmI0NTE5NGQyOWExMDkxNGJmYTJmZmJkNzRhM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDBjNmY3M2QwNzE0NGI1NjI2NzY5MzY3Yzlm
MmEzYTQwMTdlYWRlODAuLjE2OGVmNDM1ZGRlNTYxNGQzMGYzYmUyODY3MGE0N2FlZDYxNmRlMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNFKExJQldFQlJUQykg
JiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNz
UHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCA3MzlhNDk2ZWY0OTRjYjRhNjE4NTY2ZmZj
NjRkNGEyNjRhNzRlOWQwLi40YmVhZTA2MjMxN2JhMjZhNjA2ODNmMWY0NTEyMzNlYjEwNzNhYTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRD
RW5jb2RlcklkZW50aWZpZXIuaCIKQEAgLTQzLDcgKzQ0LDYgQEAgdXNpbmcgQ1ZQaXhlbEJ1ZmZl
clBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiAKIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDJkYWQyMDM4NDJmMGU1NTNmZTNiNDYyNDQxZWU5
NGZhMjY0OTNhMTEuLmMyOGNlN2YyZTE3ZTg5YThlNTE4NmE3NzA2YTJlOGE0NGY2YjdlMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElJbmplY3Rl
ZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNv
bnRlbnRUeXBlcy5oPgpAQCAtNTQsNyArNTUsNiBAQCBjbGFzcyBEYXRhOwogbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDQgKzE2MSwzIEBAIHByaXZhdGU6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDYyNzVjZjZhNmU3ZTUwYzZiMzYwNjJlMTMxODc1
NzUyODlhNTgwZWUuLmU1YmE2NjFhZTY2ZjU1YTkwNzQ2NGU2ZmYzNmU0MmI3YWRkMDBkZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENsaWVudCYgaW5zcGVjdG9yRnJvbnRlbmQpCiAgICAgOiBtX2Zyb250ZW5kQ2xp
ZW50KG1ha2VXZWFrUHRyKGluc3BlY3RvckZyb250ZW5kKSkKIHsKLSAgICBQYWdlKiBwYWdlID0g
aW5zcGVjdG9yRnJvbnRlbmQuZnJvbnRlbmRQYWdlKCk7CisgICAgV2ViQ29yZTo6UGFnZSogcGFn
ZSA9IGluc3BlY3RvckZyb250ZW5kLmZyb250ZW5kUGFnZSgpOwogICAgIEFTU0VSVChwYWdlKTsK
IAogLy8gICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIGV4dGVuc2lvCiAgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQp
LAogICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGRpc3BsYXlOYW1lKSwKICAgICB9OwotICAg
IG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFu
ZFdpdGhSZXN1bHRBc3luYygicmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRz
KSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9mcm9udGVuZENsaWVu
dC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5j
KCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0
aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAh
cmVzdWx0KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zCiAgICAg
fQogCiAgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZhbHVl
OjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07Ci0gICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRB
UElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1bnJlZ2lzdGVy
RXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQp
IG11dGFibGUgeworICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigp
LmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVuc2lvbiJfcywg
V1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaAppbmRleCAzMDY0ZTljNGFmY2MyY2ZmNTRhMzI1ZTI1MzFlZDA1MjJhMDAxMzkzLi5iOTc5
NDY1OWVhYmQxODRiMzg5YzA2ZDEzMmY4YzQyZjgwNTIzY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODY1NzExYjM2NmMy
OGRmNDg0YjRjZGMwN2FhM2ZjZjNkY2ViZjJmNi4uNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4
MjBhMjc4YWYxZGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aAppbmRleCA1ODNlMzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZiLi43ZTFkNDk5
NDcxNWY4ODQ5Y2U4YmZlNWVjMzQ1NWQ0NzM3NzgwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAi
U2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgi
CkBAIC0zNiw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCA5NGVmMGQxZmNlMmU2MDFkZjQ0OWNmZjg1MzlmYmQxNjQ3OTNlYmUy
Li5mZjY5ZjU2MDllNTc3Y2FjNzc3ZjA0YWZhNzRhZjIxMDc0ODY0Zjg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApA
QCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWwuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdl
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5oCmluZGV4IGY1MzQ3ODM0N2U3NzVkZjM3ZWE5NzYzNGMyMzMwOTMyYjRhMTRkMjgu
LmFkN2ZmMTg3ZGJiNDM1M2I5ZWQzYmM1N2M1YmEyYzRhYTRlOGNmZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1NlbmRRdWV1ZS5oPgpAQCAtMzgsNyArMzksNiBA
QAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5kZXgg
YWYyNDJjZDJiNTk1YWM0YTQ0ODQyOTdiZTVkNWNmZTE4ZDQ4ZjMyNC4uN2QwMDczNjliOWNjZTg1
YjhmMDU0NTdkNjY2ZDFlNDQ1MWI5NmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCBkZDA4MjAx
MDcxMmI5ZjVkYjlmZWJkODhkYTY2OWI2ZGY2MWQwZjI5Li5iNDNjYjJlZmFkMWUxMDFlZTI2NWI5
M2RkZTliMDYxMjczNmEwOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuaD4KQEAgLTMzLDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKaW5kZXggY2I0OGUwNTczNDhh
MmU4NjZiMDkxZmY1YWM4NzI2MDVjYTE5MmRkNS4uMzIzZjI1ZWU4ZmQ4MWIwMjYzMGQyZjI1OWEx
YWZiODg0YjRjZjVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaApAQCAtMzUsNyArMzUsNiBAQAogCiBu
YW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
Y2xhc3MgRGVjb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCmluZGV4IGVhNTM1OTYwMTA5ZmVlNmRjNDgwNWNmNjg5MTI3OThl
ZTlhYjZmMDMuLjQwYjRjOGYyMTI5Y2YxMjMzYTFiMzFiODUxMjdlN2E3ZTllM2Q3Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAg
LTYwLDEwICs2MCw2IEBAIE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9uOwogT0JKQ19DTEFTUyBXS1BE
RlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUERGTGF5ZXJDb250cm9s
bGVyRGVsZWdhdGU7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0K
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2
MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRlOWQ1NDkyMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYsMjIgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5B
QkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9tZUNsaWVudDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25z
dAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVu
ZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1ZB
UklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJl
dHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7Cisj
ZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9v
dEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4Li4xMjE1
ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpS
ZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFCTEUoV0VCR0wp
CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRD
b21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMsNiArNDA3LDcg
QEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6
b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5G
cmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBhZ2UmIG1fcGFn
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggZjY0MjE0NzdhNTZjZWUxYjQ1OWFiMWI3MGQ4ZGNhZDlkM2RhZmMzNC4uZDQ2MzNkZGI2
Y2M2NDk4MDNiOTI0NTc1NjI1YmZhNTI4YzE3ZDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyMiw2ICs0MjIsOSBAQCBXZWJQYWdlOjpX
ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IHBh
cmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxk
UmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVBy
b2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJz
LnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAgICwg
bV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVy
V2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMubmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzI1LDcgKzcyOCw2IEBA
IFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYKLSAg
ICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAgICAgICAgc2Nh
bGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5Myw2ICszNzk1LDkg
QEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdG9yZSkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNz
Rm9yQ2FudmFzUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzKTsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5n
KG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEobV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nl
c3MpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRV
c2VHUFVQcm9jZXNzRm9yV2ViR0wobV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzcyk7Cisj
ZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKQEAgLTY5OTAsNiAr
Njk5NSw3IEBAIHZvaWQgV2ViUGFnZTo6c3luY2hyb25pemVDT1JTRGlzYWJsaW5nUGF0dGVybnNX
aXRoTmV0d29ya1Byb2Nlc3MoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1faWRl
bnRpZmllciwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpLCAwKTsKIH0KIAorCiAjaWYgRU5BQkxF
KE1FRElBX1VTQUdFKQogdm9pZCBXZWJQYWdlOjphZGRNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24o
TWVkaWFTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgcGFnZVVSTCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlN2Y4YzBhM2I2MDRlN2FhMTU3Yzc0MDIzMWU1NTU3
NDlkNGVmN2M3Li4yMTEwYTMyZjY3MGYwMGZhMjQ0ZmU2ZjlkNzk1YTZkZGY2MGQxNzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYXdp
bmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMTYwLDcgKzE2MSw2
IEBAIGNsYXNzIEFycmF5OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJl
bmNlOwogfQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2
ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICBTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHkpCiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRPblN5bmNocm9u
b3VzUmVwbGllcygpOwogICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwg
V1RGTW92ZShyZXBseSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246
OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKQEAgLTE4MjYsNiArMTgyNiw5IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7
IGZhbHNlIH07CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9v
bCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYKQEAg
LTIxODMsNCArMjE4NiwzIEBAIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlv
dXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMzgzOGFiMzI2ZGQ4Mzk2YjYwMTA3Y2JhM2Y2
MjQ1MDc0Yzk3ZjcxNS4uMGUyOTNmYTRkZjE5Y2JmOGNkNjc5MzE3NmQ3ODc4OTJhZDhlMTI4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KQEAgLTUxNyw3ICs1MTcsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAgLy8gRklYTUU6IEludGVycHJl
dCB0aGUgZXZlbnQgaW1tZWRpYXRlbHkgdXBvbiByZWNlaXZpbmcgaXQgaW4gVUkgcHJvY2Vzcywg
d2l0aG91dCBzZW5kaW5nIHRvIFdlYlByb2Nlc3MgZmlyc3QuCiAgICAgYm9vbCBldmVudFdhc0hh
bmRsZWQgPSBmYWxzZTsKLSAgICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0
OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpD
aGFyKSwKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJ
bnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpLCBw
bGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKICAg
ICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQ6OlJlcGx5KGV2
ZW50V2FzSGFuZGxlZCksIG1faWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYg
ZXZlbnRXYXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IGYyZjIyODIyYzdiMjIzZmNhNTlmOTU1NzNkMTFkYzk5YjEwMzQ4MTEuLjU4MmVlNzVk
OTlhNzQyNDI1NGEzOWRhYjIwNmY4NDYxNzM0YWQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5NDIsNiArMTk0MiwyMCBAQCBib29sIFdlYlByb2Nlc3M6
OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UpCiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KKworI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgV2Vi
UHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wgdXNlR1BVUHJvY2Vzc0Zvcldl
YkdMKQoreworICAgIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMID0gdXNlR1BVUHJvY2Vzc0Zvcldl
YkdMOworfQorCitib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0Zvcldl
YkdMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisK
KyNlbmRpZgorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAppbmRleCBlOWM0N2RiNGM0NDdjMGY0YWI2MjdjMDk0YjVmNjhkYjU2NWE5
YTZjLi4xYTU4NWFjMTQyYjE4MzI3NjRjNGQ4NTM3OTA5MGIyY2JjYTczYzFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM0Nyw2ICszNDcsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhib29sKTsKICAgICB2b2lk
IHNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sKTsKICAgICBib29sIHNob3VsZFVzZVJlbW90
ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCk7CisgICAgYm9vbCBz
aG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0OworI2VuZGlmCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWUDkpCkBAIC02ODcsNiArNjkxLDkgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fdXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3VzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VH
UFVQcm9jZXNzRm9yTWVkaWEgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29s
IG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMIHsgZmFsc2UgfTsKKyNlbmRpZgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGI3YzczMmNjMDg0NzBhODEyNWZjN2U1YTc0NWYxZDJmN2NjNWUxOWIuLjBhNDFk
NTNjNWM4YTA5ZDEwZTFhODEyNTNjMWJlMDEwMTkxZjM5ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0xMi0w
MiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3
NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnRzIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVSBw
cm9jZXNzLgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJ
UEMgYW5kIGlzIGluY29tcGxldGUuCisKKyAgICAgICAgQWRkIHRoZSBjb2RlIGdlbmVyYXRvciB0
byBnZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseQorICAgICAgICB0aGUgZ2Vu
ZXJhdG9yIGdlbmVyYXRlcyBhIFdlYktpdCBJUEMgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAg
VGhlIGlucHV0IGRlZmluaXRpb24gdG8gdGhlIGdlbmVyYXRvciBpcyB0aGUgcHJveHkgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgaGVhZGVyIGZpbGVzLgorICAgICAgICBUaGUgb3V0cHV0IG9mIHRo
ZSBnZW5lcmF0b3IgaXMKKyAgICAgICAgICAgLSBXZWJLaXQgSVBDIG1lc3NhZ2UgZGVmaW5pdGlv
biBmaWxlCisgICAgICAgICAgIC0gTWVzc2FnZSBzZW5kZXIgY29kZQorICAgICAgICAgICAtIE1l
c3NhZ2UgcmVjZWl2ZXIgYW5kIHBheWxvYWQgaW52b2NhdGlvbiBjb2RlCisKKyAgICAgICAgVGhl
IGdlbmVyYXRvciBjb252ZXJ0cyBHcmFwaGljc0NvbnRleHRHTCBHQ0dMIC1wcmVmaXhlZCB0eXBl
cyB0bworICAgICAgICBzaXplZCBJUEMgdHlwZXMuCisKKyAgICAgICAgVGhlIGdlbmVyYXRvciBp
cyBpbnZva2VkIGR1cmluZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAg
ICAgICAgc3RvcmVkIGluIHRoZSByZXBvc2l0b3J5LgorCisgICAgICAgICogU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsOiBBZGRlZC4KKwogMjAyMC0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEdQVVByb2Nlc3MuQ3Jhc2hXaGlsZVBsYXlp
bmdWaWRlbyBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhi
MGFlMzAwMzAwNTk4YzNmMDkwZjc4ZDljMmVhYjJjNzVhNWRiODUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAsMCArMSwxMDQ0IEBACisj
IS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIHNvdXJjZSBmaWxlcyBm
b3IgV2ViR0wgR1BVIHByb2Nlc3MgSVBDLgorIworIyBweXRob24zIC1tIGJsYWNrIC1sIDE1MCBU
b29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMgcHl0aG9uMyAtbSBteXB5IFRvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQg
ZW51bQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGNvbGxl
Y3Rpb25zCisKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJdGVyYWJsZSwgQ2FsbGFi
bGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJhdG9yLCBDb3VudGVyCisK
K3Jvb3RfZGlyID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50IC8gIi4uIiAvICIuLiIp
LnJlc29sdmUoKQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAi
V2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRlbnNpb25zR0wuaCIKKwor
ZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsKKyAgICByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktp
dCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oIgorXQordHlwZXNfaW5wdXRfZm4gPSByb290X2RpciAvICJTb3VyY2Ui
IC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisKK3RlbXBsYXRlX3ByZWFtYmxlID0gIiIiLyog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4g
RG8gbm90IGVkaXQuCisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291
cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29udGV4dF9mdW5jdGlvbnNfdGVt
cGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIi8vIFRoaXMgZmlsZSBz
aG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQore30KKwor
IiIiCispCitjb250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJL
aXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbiIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxh
dGVfcHJlYW1ibGUKKyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRl
ZCB7eworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hT
ZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNlbmRpZgorI2lmICFQTEFURk9S
TShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMK
KyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9u
KQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3t9Cit9fQorCisjZW5kaWYK
KworIiIiCispCisKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291
cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIgorY29udGV4
dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAg
ICArICIiIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KSAmJiBVU0UoQU5HTEUpCisKK25hbWVzcGFjZSBXZWJLaXQge3sKK3t9CisKK319CisKKyNlbmRp
ZgorCisiIiIKKykKKworCitkZWYgd3JpdGVfZmlsZShmbiwgbmV3X2NvbnRlbnRzKToKKyAgICB0
cnk6CisgICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoKKyAgICAgICAgICAgIGlmIGYucmVhZCgp
ID09IG5ld19jb250ZW50czoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICBleGNlcHQ6Cisg
ICAgICAgIHBhc3MKKyAgICB3aXRoIG9wZW4oZm4sICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0
ZShuZXdfY29udGVudHMpCisKK2NsYXNzIGNwcF90eXBlKG9iamVjdCk6CisgICAgdHlwZV9uYW1l
OiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIpOgorICAgICAg
ICBzZWxmLnR5cGVfbmFtZSA9IHR5cGVfbmFtZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgor
ICAgICAgICByZXR1cm4gaGFzaChzZWxmLnR5cGVfbmFtZSkKKworICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBkZWYgX19lcV9fKHNl
bGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lID09IG90aGVyLnR5cGVf
bmFtZQorCisgICAgZGVmIGlzX3ZvaWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNl
bGYudHlwZV9uYW1lIGluIFsidm9pZCIsICJHQ0dMdm9pZCIsICJjb25zdCB2b2lkIiwgImNvbnN0
IEdDR0x2b2lkIl0KKworICAgIGRlZiBpc19jb25zdChzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gc2VsZi50eXBlX25hbWUuc3RhcnRzd2l0aCgiY29uc3QgIikKKworICAgIGRlZiBpc19j
b250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
aXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcG9pbnRlcihzZWxmKSAtPiBib29sOgorICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19yZWZlcmVuY2Uoc2VsZikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcmVmZXJlbmNlKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGdldF92YWx1ZV90eXBl
KHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgZ2V0
X2RlY2F5X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgaWYgc2VsZi5pc19jb25z
dCgpOgorICAgICAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFtZVs2Ol0p
CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgZ2V0X3J2YWx1ZV90eXBlKHNlbGYpIC0+
ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUg
KyAiJiYiKQorCisgICAgZGVmIGdldF9wb2ludGVyX3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoK
KyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFtZSArICIqIikKKworY2xh
c3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
dHlwZV9uYW1lIDogc3RyLCBjb250YWluZXJfbmFtZSA6IHN0ciwgY29udGFpbmVkX3R5cGUgOiBj
cHBfdHlwZSwgYXJpdHkgOiBPcHRpb25hbFtpbnRdID0gTm9uZSk6CisgICAgICAgIGNwcF90eXBl
Ll9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5jb250YWluZXJfbmFtZSA9
IGNvbnRhaW5lcl9uYW1lCisgICAgICAgIHNlbGYuY29udGFpbmVkX3R5cGUgPSBjb250YWluZWRf
dHlwZQorICAgICAgICBzZWxmLmFyaXR5ID0gYXJpdHkKKyAgICBkZWYgaXNfY29udGFpbmVyKHNl
bGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgZGVmIGlzX3NwYW4oc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUgPT0gIkdDR0xTcGFu
IgorICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJu
IHNlbGYuY29udGFpbmVyX25hbWUgPT0gIkdDR0xTcGFuIiBhbmQgc2VsZi5hcml0eSBpcyBOb25l
CisgICAgZGVmIGdldF9jb250YWluZXJfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
Y29udGFpbmVyX25hbWUKKyAgICBkZWYgZ2V0X2FyaXR5KHNlbGYpIC0+IE9wdGlvbmFsW2ludF06
CisgICAgICAgIHJldHVybiBzZWxmLmFyaXR5CisgICAgZGVmIGdldF9jb250YWluZWRfdHlwZShz
ZWxmKSAtPiBjcHBfdHlwZToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVkX3R5cGUKKyAg
ICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVy
biBzZWxmLmNvbnRhaW5lZF90eXBlLmlzX2NvbnN0KCkKKworZGVmIGNyZWF0ZV9jcHBfdHlwZV9j
b250YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9jb250YWluZXJd
OgorICAgIG0gPSByZS5tYXRjaChyIihbXHc6XSspPCguKyk+JCIsIHR5cGVfbmFtZSkKKyAgICBp
ZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBjb250YWluZXJfbmFtZSA9IG1bMV0K
KyAgICB0ZW1wbGF0ZXMgPSBtWzJdCisgICAgYXJpdHkgPSBOb25lCisgICAgbSA9IHJlLm1hdGNo
KHIiKFteLF0rKSxccyooXGQrKSIsIHRlbXBsYXRlcykKKyAgICBpZiBtOgorICAgICAgICB0ZW1w
bGF0ZXMgPSBtWzFdCisgICAgICAgIGFyaXR5ID0gaW50KG1bMl0pCisgICAgcmV0dXJuIGNwcF90
eXBlX2NvbnRhaW5lcih0eXBlX25hbWUsIGNvbnRhaW5lcl9uYW1lLCBnZXRfY3BwX3R5cGUodGVt
cGxhdGVzKSwgYXJpdHkpCisKK2NsYXNzIGNwcF90eXBlX2Z1bmN0aW9uKGNwcF90eXBlKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCByZXR1cm5fdmFsdWVfdHlwZSA6
IGNwcF90eXBlLCBhcmd1bWVudF90eXBlcyA6IExpc3RbY3BwX3R5cGVdKToKKyAgICAgICAgY3Bw
X3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLnJldHVybl92YWx1
ZV90eXBlICA9IHJldHVybl92YWx1ZV90eXBlCisgICAgICAgIHNlbGYuYXJndW1lbnRfdHlwZXMg
PSBhcmd1bWVudF90eXBlcworCitkZWYgY3BwX3NwbGl0X2FyZ3Nfc3BlY3MoYXJnc19zcGVjIDog
c3RyKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAjIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20v
cXVlc3Rpb25zLzMzNTI3MjQ1L3B5dGhvbi1zcGxpdC1ieS1jb21tYS1za2lwcGluZy10aGUtY29u
dGVudC1pbnNpZGUtcGFyZW50aGVzZXMKKyAgICBjb21tYSA9IHIiLCg/ISg/OltePF0qXDxbXj5d
Klw+KSpbXjw+XSpcPikiCisgICAgcmV0dXJuIGZpbHRlcihOb25lLCBbYS5zdHJpcCgpIGZvciBh
IGluIHJlLnNwbGl0KGNvbW1hLCBhcmdzX3NwZWMuc3RyaXAoKSldKQorICAgIAorZGVmIGNyZWF0
ZV9jcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBl
X2Z1bmN0aW9uXToKKyAgICBtID0gcmUubWF0Y2gocicoLiopXCgoLiopXCknLCB0eXBlX25hbWUp
CisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuX3ZhbHVlX3R5
cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICBhcmdzX3R5cGVzID0gW2dldF9jcHBfdHlwZShh
KSBmb3IgYSBpbiBjcHBfc3BsaXRfYXJnc19zcGVjcyhtWzJdKV0KKyAgICByZXR1cm4gY3BwX3R5
cGVfZnVuY3Rpb24odHlwZV9uYW1lLCByZXR1cm5fdmFsdWVfdHlwZSwgYXJnc190eXBlcykKKyAg
ICAgICAgCisjIFBvaW50ZXIgb3IgcmVmZXJlcmVuY2UKK2NsYXNzIGNwcF90eXBlX2luZGlyZWN0
KGNwcF90eXBlKToKKyAgICBjYXRlZ29yeSA6IHN0cgorICAgIHZhbHVlX3R5cGUgOiBjcHBfdHlw
ZQorICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIGNhdGVnb3J5
IDogc3RyLCB2YWx1ZV90eXBlIDogY3BwX3R5cGUpOgorICAgICAgICBjcHBfdHlwZS5fX2luaXRf
XyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY2F0ZWdvcnkgPSBjYXRlZ29yeQorICAg
ICAgICBzZWxmLnZhbHVlX3R5cGUgPSB2YWx1ZV90eXBlCisKKyAgICBkZWYgaXNfY29uc3RfcG9p
bnRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBzZWxm
LmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBub3Qgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX2Nv
bnN0X3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYn
IGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicgYW5kIG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAg
ICBkZWYgaXNfcnZhbHVlX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0
ZWdvcnkgPT0gJyYmJworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYudmFsdWVfdHlwZQorCitkZWYgY3JlYXRlX2NwcF90eXBlX2luZGlyZWN0KHR5cGVf
bmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfaW5kaXJlY3RdOgorICAgIG0gPSByZS5t
YXRjaChyImNvbnN0ICguKykmJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAg
IG0gPSByZS5tYXRjaChyIiguKykmJiQiLCB0eXBlX25hbWUpIAorICAgIGlmIG06CisgICAgICAg
IHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcmJicsIGdldF9jcHBfdHlwZSht
WzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiQiLCB0eXBlX25hbWUpCisgICAg
aWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJCIsIHR5cGVfbmFtZSkKKyAg
ICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnJics
IGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispXCokIiwg
dHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispXCok
IiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVj
dCh0eXBlX25hbWUsICcqJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIHJldHVybiBOb25lCisK
KworY2xhc3MgY3BwX2V4cHIob2JqZWN0KToKKyAgICB0eXBlOiBjcHBfdHlwZQorICAgIGV4cHI6
IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBleHByOiBzdHIp
OgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYuZXhwciA9IGV4cHIKKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5leHByCisKKworQ3Bw
RXhwckNvbnZlcnRlciA9IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl0K
KworCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyX3Rocm91Z2goY2FzdF90
aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0s
IGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyKGV4
cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgICAgIHJldHVy
biBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHJlaW50ZXJw
cmV0X2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIpfSkpIikKKyAgICBy
ZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyCisKK2RlZiBjcHBfcmVpbnRl
cnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY2FzdF90aHJvdWdoX3R5cGUgOiBjcHBfdHlw
ZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHByXToKKyAgICBkZWYg
Y3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcihleHByOiBjcHBfZXhwciwgdHlwZTogY3Bw
X3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJyZWlu
dGVycHJldF9jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHN0YXRpY19jYXN0PHtzdHIoY2FzdF90aHJv
dWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0dXJuIGNwcF9yZWludGVycHJldF9j
YXN0X3RvX3BvaW50ZXIKKworZGVmIGNwcF9zdGF0aWNfY2FzdChleHByOiBjcHBfZXhwciwgdHlw
ZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInN0
YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHtzdHIoZXhwcil9KSIpCisKKworZGVmIGNwcF9p
bXBsaWNpdF9jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6
CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIHN0cihleHByKSkKKworCitkZWYgY3BwX2FycmF5
X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5
cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5
cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNw
cF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDx7ZWxlbWVudF9wb2lu
dGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5zaXplKCkpIikKKwor
ZGVmIHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVy
c2lvbihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhw
cjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCku
Z2V0X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYie3N0cih0eXBl
KX0ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB7ZWxlbWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4
cHIpfS5kYXRhKSwge3N0cihleHByKX0uYnVmU2l6ZSkiKQorCitkZWYgY3BwX21vdmVfZXhwcihl
eHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKGV4cHIudHlw
ZS5nZXRfcnZhbHVlX3R5cGUoKSwgZiJXVEZNb3ZlKHtzdHIoZXhwcil9KSIpCisKKworY3BwX3R5
cGVzOiBEaWN0W3N0ciwgY3BwX3R5cGVdID0ge30KKworY3BwX3R5cGVfY29uc3RydWN0b3JzIDog
TGlzdFtDYWxsYWJsZVtbc3RyXSwgT3B0aW9uYWxbY3BwX3R5cGVdXV0gPSBbCisgICAgY3JlYXRl
X2NwcF90eXBlX2Z1bmN0aW9uLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9jb250YWluZXIsCisgICAg
Y3JlYXRlX2NwcF90eXBlX2luZGlyZWN0CitdCisKK2RlZiBnZXRfY3BwX3R5cGUodHlwZV9uYW1l
OiBzdHIpOgorICAgIHIgPSBjcHBfdHlwZXMuZ2V0KHR5cGVfbmFtZSwgTm9uZSkKKyAgICBpZiBy
OgorICAgICAgICByZXR1cm4gcgorICAgIGZvciB0eXBlX2NvbnN0ciBpbiBjcHBfdHlwZV9jb25z
dHJ1Y3RvcnM6CisgICAgICAgIHIgPSB0eXBlX2NvbnN0cih0eXBlX25hbWUpCisgICAgICAgIGlm
IHI6CisgICAgICAgICAgICBicmVhaworICAgIGlmIG5vdCByOgorICAgICAgICByID0gY3BwX3R5
cGUodHlwZV9uYW1lKQorICAgIGNwcF90eXBlc1t0eXBlX25hbWVdID0gcgorICAgIHJldHVybiBy
CisKKworY2xhc3MgY3BwX2FyZyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIHR5cGU6IGNw
cF90eXBlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0
cik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQor
CisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAie30ge30iLmZvcm1hdChz
ZWxmLnR5cGUsIHNlbGYubmFtZSkKKworCitjbGFzcyBjcHBfZGVjbChvYmplY3QpOgorICAgIHR5
cGU6IGNwcF90eXBlCisgICAgbmFtZTogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlw
ZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKyAgICAg
ICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJl
dHVybiBmIntzdHIoc2VsZi50eXBlKX0ge3NlbGYubmFtZX0iCisKKworY2xhc3MgY3BwX2FyZ19s
aXN0KG9iamVjdCk6CisgICAgYXJnczogTGlzdFtjcHBfYXJnXQorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisK
KyAgICBkZWYgbmFtZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiLCAiLmpvaW4oYS5uYW1lIGZv
ciBhIGluIHNlbGYuYXJncykKKworICAgIGRlZiBleHBycyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IFtjcHBfZXhwcihhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVm
IGRlY2xzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2NwcF9kZWNsKGEudHlwZSwgYS5uYW1lKSBm
b3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgdHlwZXMoc2VsZik6CisgICAgICAgIHJldHVy
biBbYS50eXBlIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgor
ICAgICAgICByZXR1cm4gIiwgIi5qb2luKHN0cihhKSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisKKwor
Y2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJn
X2xpc3QKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBpc19leHRlbnNpb246IGJvb2wK
KyAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6
IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBjcHBfYXJnX2xpc3QsIGlzX2V4dGVu
c2lvbjogYm9vbCk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5yZXR1
cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAg
c2VsZi5pc19leHRlbnNpb24gPSBpc19leHRlbnNpb24KKyAgICAgICAgc2VsZi5vdmVybG9hZF9z
dWZmaXggPSAiIgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBmIntz
ZWxmLnJldHVybl90eXBlfSB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KSIKKworICAgIGRl
ZiBnZXRfYXJnc19jYXRlZ29yaWVzKHNlbGYpIC0+IFR1cGxlW0xpc3RbY3BwX2FyZ10sIExpc3Rb
Y3BwX2FyZ11dOgorICAgICAgICBpbl9hcmdzID0gW10KKyAgICAgICAgb3V0X2FyZ3MgPSBbXQor
ICAgICAgICBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJnczoKKyAgICAgICAgICAgICNmbXQ6IG9mZgor
ICAgICAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKSBvciBcCisgICAgICAgICAgICAgICAg
YS50eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAgICAgICAgICAgIG91dF9hcmdzICs9IFthXQor
ICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSBh
bmQgKCgoYS50eXBlLmlzX3NwYW4oKSBvciBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCkpIGFuZCBu
b3QgYS50eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCkpKToKKyAgICAgICAgICAg
ICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
aW5fYXJncyArPSBbYV0KKyAgICAgICAgICAgICNmbXQ6IG9uCisgICAgICAgIHJldHVybiBpbl9h
cmdzLCBvdXRfYXJncworCisgICAgZGVmIGlzX2ltcGxlbWVudGVkX3R5cGUoc2VsZiwgdHlwZTog
Y3BwX3R5cGUpOgorICAgICAgICBpZiB0eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGlzX2ltcGxl
bWVudGVkKHNlbGYpOgorICAgICAgICAjIiBpbiBhLnR5cGUudHlwZV9uYW1lIGZvciBhIGluIHNl
bGYuYXJncy5hcmdzKToKKyAgICAgICAgIyAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgI2lmICJH
Q0dMc3luYyIgaW4gc2VsZi5yZXR1cm5fdHlwZS50eXBlX25hbWU6CisgICAgICAgICMgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLm5hbWUgPT0gImJ1ZlNpemUiIGZvciBhIGluIHNl
bGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnko
YS50eXBlLmlzX3BvaW50ZXIoKSBhbmQgYS50eXBlLmdldF92YWx1ZV90eXBlKCkuaXNfdm9pZCgp
IGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg
ICAgICBpZiBhbnkobm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShhLnR5cGUpIGZvciBhIGlu
IHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBz
ZWxmLnJldHVybl90eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor
ICAgICAgICBpZiBub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKHNlbGYucmV0dXJuX3R5cGUp
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKword2Vi
a2l0X2lwY190eXBlczogRGljdFtjcHBfdHlwZSwgY3BwX3R5cGVdID0ge30KKword2Via2l0X2lw
Y190eXBlc19jb252ZXJ0ZXJzOiBEaWN0W1R1cGxlW2NwcF90eXBlLCBjcHBfdHlwZV0sIENwcEV4
cHJDb252ZXJ0ZXJdID0ge30KKworCitkZWYgd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZXhwcjog
Y3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAiIiIgQ29udmVydHMg
YGV4cHJgIG9mIHR5cGUgb2YgYHNlbGZgIHRvIGB0eXBlYCAiIiIKKyAgICBjb252ZXJ0ID0gd2Vi
a2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLmdldCgoZXhwci50eXBlLCB0eXBlKSwgTm9uZSkKKyAg
ICBpZiBub3QgY29udmVydDoKKyAgICAgICAgaWYgZXhwci50eXBlID09IHR5cGU6CisgICAgICAg
ICAgICByZXR1cm4gZXhwcgorICAgICAgICBjb252ZXJ0ID0gY3BwX2ltcGxpY2l0X2Nhc3QKKyAg
ICByZXR1cm4gY29udmVydChleHByLCB0eXBlKQorCisKK2RlZiB3ZWJraXRfaXBjX2dldF9zcGFu
X3RyYW5zZmVyX3R5cGUodHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6Cisg
ICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlw
ZSgpCisgICAgYXJpdHkgPSB0eXBlLmdldF9hcml0eSgpCisgICAgd2Via2l0X2lwY19lbGVtZW50
X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2VsZW1lbnRfdHlwZV0gaWYgbm90IGVsZW1lbnRfdHlw
ZS5pc192b2lkKCkgZWxzZSBnZXRfY3BwX3R5cGUoJ3VpbnQ4X3QnKQorICAgIGlmIGFyaXR5IGlz
IG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpBcnJheVJlZmVy
ZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0sIHthcml0eX0+IikKKyAgICByZXR1
cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpBcnJheVJlZmVyZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxl
bWVudF90eXBlKX0+IikKKworCisKK2RlZiB3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUo
dHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlwZToKKyAgICBlbGVtZW50X3R5cGUg
PSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNheV90eXBlKCkKKyAgICBpZiBlbGVt
ZW50X3R5cGUuaXNfdm9pZCgpOgorICAgICAgICBlbGVtZW50X3R5cGUgPSBnZXRfY3BwX3R5cGUo
J0dDR0xjaGFyJykKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICBpbmxp
bmVfY2FwYWNpdHkgPSAxNiBpZiAiZmxvYXQiIGluIGVsZW1lbnRfdHlwZS50eXBlX25hbWUgZWxz
ZSA0CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJWZWN0b3I8e3N0cihlbGVtZW50X3R5
cGUpfSwge3N0cihpbmxpbmVfY2FwYWNpdHkpfT4iKQorICAgIHJldHVybiBnZXRfY3BwX3R5cGUo
ZiJzdGQ6OmFycmF5PHtzdHIoZWxlbWVudF90eXBlKX0sIHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9
PiIpCisKK2RlZiB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lvbihleHByIDogY3Bw
X2V4cHIsIHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgorICAgIHBvaW50
ZXJfY2FzdF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBl
KCkKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICByZXR1cm4gY3BwX2V4
cHIodHlwZSwgZiJtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2Fz
dF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9LnNpemUoKSkiKQorCisg
ICAgYXNzZXJ0KHR5cGUuaXNfc3BhbigpKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIm1h
a2VHQ0dMU3Bhbjx7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4ocmVpbnRlcnByZXRfY2FzdDx7c3Ry
KHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSkpIikKKworIyBTZWUgbWVz
c2FnZXMucHkgZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUKK3dlYmtpdF9pcGNfYnVpbHRpbl90eXBl
cyA9IHNldCgKKyAgICBbInVpbnQ4X3QiLCAidWludDE2X3QiLCAidWludDMyX3QiLCAidWludDY0
X3QiLCAiaW50OF90IiwgImludDE2X3QiLCAiaW50MzJfdCIsICJpbnQ2NF90IiwgImJvb2wiLCAi
ZmxvYXQiLCAiZG91YmxlIiAiYm9vbCJdCispCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X21lc3Nh
Z2VfZm9yd2FyZGVyX3R5cGUodHlwZTogY3BwX3R5cGUpIC0+IGNwcF90eXBlOgorICAgIGlmIHR5
cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoKKyAgICAgICAgcmV0dXJu
IHR5cGUKKyAgICByZXR1cm4gdHlwZS5nZXRfcnZhbHVlX3R5cGUoKQorCisKK2RlZiB3ZWJraXRf
aXBjX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAgaWYgZXhwci50
eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVy
biBleHByCisgICAgcmV0dXJuIGNwcF9tb3ZlX2V4cHIoZXhwcikKKworCitkZWYgd2Via2l0X2lw
Y19tc2dfbmFtZShmdW5jOiBjcHBfZnVuYyk6CisgICAgcmV0dXJuIGZ1bmMubmFtZVswXS5jYXBp
dGFsaXplKCkgKyBmdW5jLm5hbWVbMTpdICsgZnVuYy5vdmVybG9hZF9zdWZmaXgKKworCitjbGFz
cyB3ZWJraXRfaXBjX21zZyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGluX2FyZ3M6IGNw
cF9hcmdfbGlzdAorICAgIG91dF9hcmdzOiBjcHBfYXJnX2xpc3QKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IHdlYmtpdF9pcGNf
bXNnX25hbWUoZnVuYykKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBmdW5jLmdldF9hcmdz
X2NhdGVnb3JpZXMoKQorICAgICAgICBpcGNfaW5fYXJncyA9IFtjcHBfYXJnKHdlYmtpdF9pcGNf
dHlwZXNbYS50eXBlXSwgYS5uYW1lKSBmb3IgYSBpbiBpbl9hcmdzXQorICAgICAgICBpcGNfb3V0
X2FyZ3MgPSBbXQorICAgICAgICBpZiBub3QgZnVuYy5yZXR1cm5fdHlwZS5pc192b2lkKCk6Cisg
ICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY190eXBlc1tmdW5j
LnJldHVybl90eXBlXSwgInJldHVyblZhbHVlIildCisgICAgICAgIGZvciBhIGluIG91dF9hcmdz
OgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNb
YS50eXBlXSwgYS5uYW1lKV0KKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19keW5hbWljX3NwYW4o
KToKKyAgICAgICAgICAgICAgICBpcGNfaW5fYXJncyArPSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUo
InVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIildCisgICAgICAgIHNlbGYuaW5fYXJncyA9IGNw
cF9hcmdfbGlzdChpcGNfaW5fYXJncykKKyAgICAgICAgc2VsZi5vdXRfYXJncyA9IGNwcF9hcmdf
bGlzdChpcGNfb3V0X2FyZ3MpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgaWYg
bGVuKHNlbGYub3V0X2FyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gZiJcbiAgICB2b2lk
IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIC0+ICh7c3RyKHNlbGYub3V0X2FyZ3Mp
fSkgU3luY2hyb25vdXMiCisgICAgICAgIHJldHVybiBmIlxuICAgIHZvaWQge3NlbGYubmFtZX0o
e3N0cihzZWxmLmluX2FyZ3MpfSkiCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfaW1w
bChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIG1zZ19uYW1lOiBzdHIKKyAgICByZXR1cm5f
dHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKworICAgIHByZV9jYWxsX3N0
bXRzOiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxf
c3RtdHM6IExpc3Rbc3RyXQorICAgIHJldHVybl9zdG10czogTGlzdFtzdHJdCisgICAgaW5fZXhw
cnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2NwcF9leHByXQorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFt
ZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5tc2dfbmFtZSA9IHdlYmtpdF9pcGNfbXNn
X25hbWUoY3BwX2Z1bmMpCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1
cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYu
cHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBbXQorICAgICAg
ICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYucmV0dXJuX3N0bXRzID0g
W10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAgICAgIHNlbGYub3V0X2V4cHJzID0g
W10KKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBfZnVuYy5nZXRfYXJnc19jYXRlZ29y
aWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1ZShjcHBfZnVuYy5yZXR1cm5f
dHlwZSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZ3MoaW5fYXJncykKKyAgICAgICAgc2Vs
Zi5wcm9jZXNzX291dF9hcmdzKG91dF9hcmdzKQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgp
CisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBpbl9leHBycyA9ICIsICIu
am9pbihbc3RyKGkpIGZvciBpIGluIHNlbGYuaW5fZXhwcnNdKQorICAgICAgICBvdXRfZXhwcnMg
PSAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICBpc19h
c3luYyA9IHNlbGYucmV0dXJuX3R5cGUuaXNfdm9pZCgpIGFuZCBsZW4ob3V0X2V4cHJzKSA9PSAw
CisgICAgICAgIGlmIGlzX2FzeW5jOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsK
KyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsiLAorICAgICAgICAgICAgXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VuZF9y
ZXN1bHQgPSAiIgorICAgICAgICAgICAgaWYgc2VsZi5wb3N0X2NhbGxfc3RtdHM6IAorICAgICAg
ICAgICAgICAgIHNlbmRfcmVzdWx0ID0gImF1dG8gc2VuZFJlc3VsdCA9ICIKKyAgICAgICAgICAg
ICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgImlmIChz
ZW5kUmVzdWx0KSIgKyAoIiB7IiBpZiBsZW4oc2VsZi5wb3N0X2NhbGxfc3RtdHMpID4gMSBlbHNl
ICIiKQorICAgICAgICAgICAgICAgIF0gKyBbIiAgICAiICsgcyBmb3IgcyBpbiBzZWxmLnBvc3Rf
Y2FsbF9zdG10c10gKyBbCisgICAgICAgICAgICAgICAgICAgICgifSIgaWYgbGVuKHNlbGYucG9z
dF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgIGYie3NlbmRfcmVzdWx0fXNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9
KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1z
Z19uYW1lfTo6UmVwbHkoe291dF9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7IiwKKyAgICAgICAgICAgIF0KKworCisgICAgZGVmIHByb2Nlc3NfaW5fYXJncyhz
ZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIGkgaW4gaW5fYXJnczoK
KyAgICAgICAgICAgIGlmIGkudHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICAg
ICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYu
aW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKGkudHlwZSwgaS5u
YW1lKSwgd2Via2l0X2lwY190eXBlc1tpLnR5cGVdKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9h
cmdzKHNlbGYsIG91dF9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgZm9yIG8gaW4gb3V0
X2FyZ3M6CisgICAgICAgICAgICBpZiBvLnR5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAg
ICAgIHZhbHVlX3R5cGUgPSBvLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAgICAg
IHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbdmFsdWVfdHlwZV0KKyAg
ICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3ZhbHVlX3R5cGUsIG8ubmFtZSAr
ICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3Ry
KHYudHlwZSl9IHtzdHIodi5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgICAgIGUgPSBj
cHBfZXhwcih2LnR5cGUsIHYubmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyAr
PSBbZV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbCisgICAgICAg
ICAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAgICAgICAgICAgICBmImlmICh7by5uYW1l
fSkiLAorICAgICAgICAgICAgICAgICAgICBmIiAgICAqe28ubmFtZX0gPSB7d2Via2l0X2lwY19j
b252ZXJ0X2V4cHIoZSwgdmFsdWVfdHlwZSl9OyIKKyAgICAgICAgICAgICAgICAgICAgI2ZtdDog
b24KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBlbGlmIG8udHlwZS5pc19zcGFuKCk6
CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1tvLnR5
cGVdCisgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uod2Via2l0X2lwY190eXBlLCBj
cHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9p
cGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAg
ICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYubmFtZSldCisgICAgICAg
ICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUoInNpemVfdCIpLCBmIntv
Lm5hbWV9LmJ1ZlNpemUiKV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyAr
PSBbCisgICAgICAgICAgICAgICAgICAgIGYibWVtY3B5KHtvLm5hbWV9LmRhdGEsIHt2Lm5hbWV9
LmRhdGEoKSwge28ubmFtZX0uYnVmU2l6ZSAqIHNpemVvZih7c3RyKHdlYmtpdF9pcGNfdHlwZS5n
ZXRfY29udGFpbmVkX3R5cGUoKSl9KSk7IgorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKG8udHlw
ZSwgby5uYW1lKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92YWx1ZShzZWxmLCByZXR1cm5f
dHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlwZS5pc192b2lkKCk6CisgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCisg
ICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0dXJuX3R5cGVdCisg
ICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIoaXBjX3JldHVybl90eXBlLCAicmV0
dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntyZXR1cm5fdmFs
dWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7eyB9fTsiXQorICAgICAg
ICBzZWxmLm91dF9leHBycyA9IFtyZXR1cm5fdmFsdWVfZXhwcl0gKyBzZWxmLm91dF9leHBycwor
ICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtmInJldHVybiB7c3RyKHdlYmtpdF9pcGNfY29u
dmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCByZXR1cm5fdHlwZSkpfTsiXQorCisgICAgZGVm
IF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4g
c2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICIiLmpvaW4oZiJcbiAgICB7Yn0iIGZv
ciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3RtdHMgKyBzZWxmLnBvc3Rf
Y2FsbF9zdG10cyArIHNlbGYucmV0dXJuX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIlxue3N0
cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6e3NlbGYu
bmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fQore3t7Ym9keX0KK319IiIiCisKKworY2xh
c3Mgd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXIob2JqZWN0KToKKyAgICBuYW1lOiBz
dHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAg
ICBib2R5OiBMaXN0W3N0cl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3Bw
X2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisKKyAgICAgICAgc2Vs
Zi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9
IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5ib2R5ID0gWyJub3RJbXBsZW1lbnRlZCgpOyJd
CisgICAgICAgIGlmIGNwcF9mdW5jLnJldHVybl90eXBlLnR5cGVfbmFtZSAhPSAidm9pZCI6Cisg
ICAgICAgICAgICBzZWxmLmJvZHkgKz0gWyJyZXR1cm4geyB9OyJdCisKKyAgICBkZWYgX19zdHJf
XyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlmICJfIiBpbiBzZWxmLm5h
bWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIlxue1xuICAgICIgKyAiXG4gICAgIi5qb2luKHNl
bGYuYm9keSkgKyAiXG59IgorICAgICAgICByZXR1cm4gZiJcbntzdHIoc2VsZi5yZXR1cm5fdHlw
ZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5h
cmdzKX0pe25vbGludH17Ym9keX0iCisKKworY2xhc3MgY29udGV4dF9wcm94eV9jcHBfd2Via2l0
X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eSBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBpbXBsczogTGlzdFt3ZWJraXRf
aXBjX2NwcF9wcm94eV9pbXBsXQorICAgIHVuaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfcHJv
eHlfcGxhY2Vob2xkZXJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxl
W2NwcF9mdW5jXSwgdW5pbXBsZW1lbnRlZDogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAg
c2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKGYpIGZvciBmIGluIGZ1bmNz
XQorICAgICAgICBzZWxmLnVuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xk
ZXIoZikgZm9yIGYgaW4gdW5pbXBsZW1lbnRlZF0KKworICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNl
bGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBzZWxmLmltcGxz
ICsgc2VsZi51bmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0
ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfZm4sCisgICAgICAg
ICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVu
Y3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBfaW1wbChvYmpl
Y3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorICAgIGlzX2V4dGVu
c2lvbjogYm9vbAorICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRz
OiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGluX2V4cHJz
OiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICByZXR1
cm5fdmFsdWVfZXhwcjogT3B0aW9uYWxbY3BwX2V4cHJdCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFt
ZQorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNwcF9mdW5jLm92ZXJsb2FkX3N1ZmZp
eAorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3QoW10pCisgICAgICAgIHNlbGYuaXNf
ZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYucHJlX2NhbGxf
c3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnBv
c3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBz
ZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSBOb25l
CisKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1ZShjcHBfZnVuYy5yZXR1cm5fdHlw
ZSkKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBfZnVuYy5nZXRfYXJnc19jYXRlZ29y
aWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2FyZ3MoY3BwX2Z1bmMuYXJncy5hcmdzLCBzZXQo
aW5fYXJncyksIHNldChvdXRfYXJncykpCisgICAgICAgIHNlbGYucHJvY2Vzc19jYWxsKCkKKwor
ICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGV4dCA9ICJnZXRFeHRlbnNpb25z
KCkuIiBpZiBzZWxmLmlzX2V4dGVuc2lvbiBlbHNlICIiCisKKyAgICAgICAgaW5fZXhwcnMgPSAi
LCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYuaW5fZXhwcnMpCisgICAgICAgIGlzX2FzeW5j
ID0gbGVuKHNlbGYub3V0X2V4cHJzKSA9PSAwCisKKyAgICAgICAgY2FsbF9leHByID0gZiJtX2Nv
bnRleHQtPntleHR9e3NlbGYubmFtZX0oe2luX2V4cHJzfSkiCisgICAgICAgIGlmIG5vdCBzZWxm
LnJldHVybl92YWx1ZV9leHByOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFtmIntj
YWxsX2V4cHJ9OyJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMg
Kz0gW2Yie3N0cihzZWxmLnJldHVybl92YWx1ZV9leHByKX0gPSB7Y2FsbF9leHByfTsiXQorICAg
ICAgICBpZiBub3QgaXNfYXN5bmM6CisgICAgICAgICAgICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4o
c3RyKGUpIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2VsZi5wb3N0X2Nh
bGxfc3RtdHMgKz0gW2YiY29tcGxldGlvbkhhbmRsZXIoe291dF9leHByc30pOyJdCisKKyAgICBk
ZWYgcHJvY2Vzc19hcmdzKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10sIGluX2FyZ3M6IFNldFtj
cHBfYXJnXSwgb3V0X2FyZ3M6IFNldFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBhIGluIGFyZ3M6
CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAgICAg
ICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgaWYgYSBpbiBpbl9hcmdzOgorICAgICAgICAg
ICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmcoYSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmcoYSkKKyAgICAgICAgaWYgc2VsZi5vdXRfZXhw
cnM6CisgICAgICAgICAgICBvdXRfYXJnX2RlY2xzID0gIiwgIi5qb2luKGYie3N0cihlLnR5cGUp
fSIgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyAr
PSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoZiJDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHtvdXRfYXJn
X2RlY2xzfSk+JiYiKSwgImNvbXBsZXRpb25IYW5kbGVyIildCisKKyAgICBkZWYgcHJvY2Vzc19p
bl9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIHNlbGYuYXJncy5hcmdzICs9IFtjcHBf
YXJnKHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUod2Via2l0X2lwY190eXBl
c1thLnR5cGVdKSwgYS5uYW1lKV0KKyAgICAgICAgc2VsZi5pbl9leHBycyArPSBbd2Via2l0X2lw
Y19jb252ZXJ0X2V4cHIoY3BwX2V4cHIod2Via2l0X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUp
LCBhLnR5cGUpXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0X2FyZyhzZWxmLCBhOiBjcHBfYXJnKToK
KyAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgIHZhbHVlX2FyZyA9
IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEubmFtZSkKKyAgICAgICAgICAgIHNl
bGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2YWx1ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVf
YXJnLm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBf
ZXhwcihhLnR5cGUsIGYiJnt2YWx1ZV9hcmcubmFtZX0iKV0KKyAgICAgICAgICAgIGUgPSBjcHBf
ZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAgICAgICAgICB3ZWJraXRf
aXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2UudHlwZV0KKyAgICAgICAgICAgIHNl
bGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB3ZWJraXRfaXBjX3Zh
bHVlX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAg
ICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAg
ICAgICAgICAgIHNpemVfYXJnID0gY3BwX2FyZyhnZXRfY3BwX3R5cGUoInVpbnQ2NF90IiksIGYi
e2EubmFtZX1TaXplIikKKyAgICAgICAgICAgIHNlbGYuYXJncy5hcmdzICs9IFtzaXplX2FyZ10K
KyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9hcmcod2Via2l0X2lwY19nZXRfc3Bhbl9zdG9y
ZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMg
Kz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUpfShzdGF0aWNf
Y2FzdDxzaXplX3Q+KHthLm5hbWV9U2l6ZSksIDApOyJdCisgICAgICAgICAgICBzZWxmLmluX2V4
cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgZiJ7c3RvcmVfYXJnLm5hbWV9IildCisg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAg
ICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBf
ZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJraXRfaXBjX3R5cGUpXQor
ICAgICAgICBlbGlmIGEudHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICBhc3NlcnQoaXNpbnN0
YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICBzdG9yZV9hcmcg
PSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShhLnR5cGUpLCBhLm5hbWUp
CisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5
cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAgICAgICAgIHNlbGYuaW5f
ZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSldCisgICAg
ICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAg
ICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhw
cihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJraXRfaXBjX3R5cGUpXQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGEudHlwZS5pc19yZWZlcmVuY2UoKQorICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAg
ICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5h
bWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzZWxmLm5zKHZhbHVl
X2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAgICAgICBl
ID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAgICAgICAg
c2VsZi5pbl9leHBycyArPSBbZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJr
aXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB3ZWJraXRfaXBjX3R5
cGUpKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92YWx1ZShzZWxmLCByZXR1cm5fdHlwZTog
Y3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlwZS5pc192b2lkKCk6CisgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lwY190eXBlc1tyZXR1
cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhwcihyZXR1cm5fdHlw
ZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0
dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0K
KyAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfbW92ZV9leHByKHdlYmtpdF9p
cGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCBpcGNfcmV0dXJuX3R5cGUpKV0KKyAg
ICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IHJldHVybl92YWx1ZV9leHByCisKKyAgICBk
ZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgYm9keSA9ICIiLmpvaW4oZiJcbiAgICAgICAge2J9
IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5w
b3N0X2NhbGxfc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIiICAgIHZvaWQge3NlbGYubmFtZX17
c2VsZi5vdmVybG9hZF9zdWZmaXh9KHtzdHIoc2VsZi5hcmdzKX0pCisgICAge3t7Ym9keX0KKyAg
ICB9fSIiIgorCisgICAgZGVmIG5zKHNlbGYsIHR5cGU6IGNwcF90eXBlKToKKyAgICAgICAgIyBU
T0RPOiBuYW1lc3BhY2UgaW5mbyBpcyBub3Qgc3RvcmVkIGluIG5hbWVzLgorICAgICAgICBpZiB0
eXBlLnR5cGVfbmFtZSA9PSAiQWN0aXZlSW5mbyI6CisgICAgICAgICAgICByZXR1cm4gIldlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjoiICsgc3RyKHR5cGUpCisgICAgICAgIHJldHVybiBzdHIo
dHlwZSkKKworZGVmIHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZmaXgoZnVuY3MgOiBJ
dGVyYWJsZVtjcHBfZnVuY10pOgorICAgIGNvdW50cyA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoZi5u
YW1lIGZvciBmIGluIGZ1bmNzKQorICAgIHN1ZmZpeGVzIDogQ291bnRlcltzdHJdID0gY29sbGVj
dGlvbnMuQ291bnRlcigpCisgICAgZm9yIGYgaW4gZnVuY3M6CisgICAgICAgIGlmIGNvdW50c1tm
Lm5hbWVdID4gMToKKyAgICAgICAgICAgIGYub3ZlcmxvYWRfc3VmZml4ID0gc3RyKHN1ZmZpeGVz
W2YubmFtZV0pCisgICAgICAgICAgICBzdWZmaXhlcy51cGRhdGUoW2YubmFtZV0pCisKKworY2xh
c3MgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1w
bHM6IExpc3Rbd2Via2l0X2lwY19jcHBfaW1wbF0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
dW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5pbXBscyA9IFt3ZWJraXRf
aXBjX2NwcF9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVmIGdldF9mdW5jdGlvbnMo
c2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZvciBpIGluIHNlbGYuaW1w
bHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdyaXRlX2ZpbGUoCisgICAg
ICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc19mbiwKKyAgICAgICAgICAgIGNvbnRleHRfZnVuY3Rp
b25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5jdGlvbnMoKSksCisgICAgICAgICkKKwor
CitjbGFzcyBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBXZWJLaXQgSVBDIG1lc3NhZ2UgZGVmaW5pdGlvbiBnZW5l
cmF0b3IuIgorICAgIG1zZ3M6IExpc3Rbd2Via2l0X2lwY19tc2ddCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYubXNncyA9
IFt3ZWJraXRfaXBjX21zZyhmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRlZiBnZXRfbWVzc2Fn
ZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiIi5qb2luKHN0cihtKSBmb3IgbSBpbiBzZWxmLm1z
Z3MpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdyaXRlX2ZpbGUoY29udGV4
dF9tZXNzYWdlc19mbiwgY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRf
bWVzc2FnZXMoKSkpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjOiBzdHIsIGFyZ19p
bmRleDogaW50KToKKyAgICByID0gYXJnX3NwZWMucnNwbGl0KCIgIiwgMSkKKyAgICBuYW1lID0g
IiIKKyAgICB0eXBlID0gTm9uZQorICAgIGlmIGxlbihyKSA+IDEgYW5kIHJbMF0gIT0gImNvbnN0
IjoKKyAgICAgICAgbmFtZSA9IHJbMV0uc3RyaXAoKQorICAgICAgICB0eXBlID0gZ2V0X2NwcF90
eXBlKHJbMF0pCisgICAgZWxzZToKKyAgICAgICAgbmFtZSA9ICJhcmd7fSIuZm9ybWF0KGFyZ19p
bmRleCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShhcmdfc3BlYykKKyAgICByZXR1cm4g
Y3BwX2FyZyh0eXBlLCBuYW1lKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3Bl
Y3M6IEl0ZXJhYmxlW3N0cl0pOgorICAgIHJldHVybiBjcHBfYXJnX2xpc3QoW2NyZWF0ZV9jcHBf
YXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3IgaSwgZSBpbiBlbnVtZXJhdGUoYXJnc19z
cGVjcyldKQorCisKK2RlZiBjcmVhdGVfY3BwX2Z1bmMobmFtZTogc3RyLCByZXR1cm5fc3BlYzog
c3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgcmV0
dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVybl9z
cGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpLCBpc19leHRlbnNpb249
aXNfZXh0ZW5zaW9uKQorCisKK2RlZiByZWFkX2xpbmVzX3VudGlsKGxpbmVzIDogSXRlcmFibGVb
c3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltzdHIsIE5vbmUsIE5vbmVdOgorICAgIGZv
ciBsaW5lIGluIGxpbmVzOgorICAgICAgICBpZiByZS5tYXRjaChtYXRjaCwgbGluZS5zdHJpcCgp
KToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHlpZWxkIGxpbmUKKworZGVmIG1haW4oKToK
KyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigidXNhZ2U6ICVwcm9nIFtvcHRp
b25zXSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgaGVscD0iUHJpbnQgc29tZSBkZWJ1ZyBpbmZvIGZyb20gdGhlIGdlbmVyYXRvciBz
Y3JpcHQiKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICAjIENvbnN0
cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3RlIGZyb20gd2ViIHByb2Nlc3MgdG8g
R1BVIHByb2Nlc3MuCisKKyAgICAjIEZJWE1FOiBVbnRpbCBleHRlbnNpb25zIGhlYWRlciBpcyBy
ZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUgdGhlIGltcGxlbWVudGF0aW9uCisgICAgIyB3
aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVyIGEgZnVuY3Rpb24gaXMgb3IgaXMgbm90IGFu
IGV4dGVuc2lvbiBmdW5jdGlvbi4KKyAgICBleHRlbnNpb25fc2lnbmF0dXJlcyA6IFNldFtzdHJd
ID0gc2V0KCkKKyAgICB3aXRoIG9wZW4oZXh0ZW5zaW9uc19pbnB1dF9mbikgYXMgZjoKKyAgICAg
ICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChy
Ii4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkgPSAwOyIsIGxpbmUpCisgICAgICAgICAg
ICBpZiBtOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMoCisgICAgICAg
ICAgICAgICAgICAgIG5hbWU9bVsyXSwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3NwZWM9
bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBfc3BsaXRfYXJnc19zcGVj
cyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPVRydWUsCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9zaWduYXR1cmVzLnVwZGF0ZShb
c3RyKGZ1bmMpXSkKKyAgICBmdW5jcyA9IFtdCisgICAgdW5pbXBsZW1lbnRlZCA9IFtdCisgICAg
Zm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6CisgICAgICAgIHdpdGggb3BlbihmbikgYXMg
ZjoKKyAgICAgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAgICAgICAgICAg
Zm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2Vu
ZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVw
LXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGZv
ciBsaW5lIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgICAgIG0gPSByZS5t
YXRjaChyIlxzKihcUyspXHMrKFx3KylcKCguKilcKSBmaW5hbDsiLCBsaW5lKQorICAgICAgICAg
ICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgIGZ1bmNfbmFtZSA9IG1bMl0KKyAgICAg
ICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWU9ZnVuY19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3Nw
ZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2Fy
Z3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249RmFs
c2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgZnVuYy5pc19l
eHRlbnNpb24gPSBzdHIoZnVuYykgaW4gZXh0ZW5zaW9uX3NpZ25hdHVyZXMKKyAgICAgICAgICAg
ICAgICAgICAgaWYgZnVuYy5pc19pbXBsZW1lbnRlZCgpOgorICAgICAgICAgICAgICAgICAgICAg
ICAgZnVuY3MuYXBwZW5kKGZ1bmMpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICAgICB1bmltcGxlbWVudGVkLmFwcGVuZChmdW5jKQorCisKKyAgICB3ZWJr
aXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzKQorICAgICMgSW5pdGlhbGl6ZSBX
ZWJLaXQgSVBDIGdlbmVyYXRpb24uIENvbnN0cnVjdCB0eXBlIG1hcHBpbmdzIGZvciB0aGUgdXNl
ZCBDKysgdHlwZXMgLT4gSVBDIHR5cGVzLgorICAgICMgVE9ETzogbmFtZXNwYWNpbmcgaXNzdWVz
LgorICAgIGFpX3R5cGUgPSBnZXRfY3BwX3R5cGUoIkFjdGl2ZUluZm8mIikKKyAgICBhaV90cmFu
c2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKCJXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlSW5mbyIpCisgICAgd2Via2l0X2lwY190eXBlc1thaV90eXBlXSA9IGFpX3RyYW5zZmVyX3R5
cGUKKworICAgIHdpdGggb3Blbih0eXBlc19pbnB1dF9mbikgYXMgZjoKKyAgICAgICAgbGluZXMg
PSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgIGZvciBfIGluIHJlYWRfbGluZXNfdW50aWwo
bGluZXMsICIvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlw
ZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6Cisg
ICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGluZXNfdW50aWwobGlu
ZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIp
OgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzdGQ6OmlzX3Nh
bWVfdjwoXHcrKSwgKFx3Kyk+XCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlc1tnZXRfY3BwX3R5cGUobVsxXSldID0gZ2V0X2NwcF90
eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG0gPSByZS5t
YXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpID09IHNpemVvZlwoKFx3Kylc
KVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBl
ID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3Bw
X3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9
IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhj
cHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIHdl
YmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfc3Rh
dGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBGSVhNRTog
SGVyZSB3ZSB1c2UgPD0gaW5zdGVhZCBvZiA9PSBkdWUgdG8gcG9pbnRlcnMsIHN1Y2ggYXMgR0NH
THN5bmMsIEdDR0xpbnRwdHIsIC4uLi4KKyAgICAgICAgICAgICMgVGhpcyBlbmRzIHVwIGZhaWxp
bmcgaWYgdGhlcmUgZXZlciBpcyBhcnJheXMgb2YgdGhlc2UgdHlwZXMsIHNpbmNlIGFycmF5cyBh
cmUgY3VycmVudGx5CisgICAgICAgICAgICAjIHJlaW50ZXJwcmV0LWNhc3RlZC4KKyAgICAgICAg
ICAgICMgV2ViS2l0IElQQyByZXF1aXJlcyBvbmUgc2l6ZWQgdHlwZSwgYnV0IHRoZSBzaXplIG9m
IHRoZXNlIHBvaW50ZXItYmFzZWQgdmFsdWVzIHdpbGwgY2hhbmdlCisgICAgICAgICAgICAjIGJh
c2VkIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGlj
X2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisg
ICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBl
KG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAg
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5
cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNf
Y29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNf
YXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9mXCgoXHcrKVwpICYmIHNpemVvZlwoKFx3
KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAg
ICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAg
ICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY3BwX2Nh
c3RfdGhyb3VnaF90eXBlID0gZ2V0X2NwcF90eXBlKG1bNF0pCisgICAgICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfcmVpbnRl
cnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisg
ICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3Bw
X3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXJfdGhyb3VnaChjcHBfY2Fz
dF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICMgRm9yIGFs
bCB0eXBlcyBpbiB0aGUgaW5wdXQgQVBJLCBmb3JtIGNvcnJlc3BvbmRpbmcgSVBDIHR5cGVzIGFu
ZCBjb252ZXJzaW9ucy4KKyAgICAjIFRPRE86IHRoaXMgaXMgbm90IGRyaXZlbiBieSB0aGUgdHlw
aW5nLgorICAgIGFsbF90eXBlcyA9IHNldCgpCisgICAgZm9yIGZ1bmMgaW4gZnVuY3M6CisgICAg
ICAgYWxsX3R5cGVzLnVwZGF0ZShmdW5jLmFyZ3MudHlwZXMoKSArIFtmdW5jLnJldHVybl90eXBl
XSkKKyAgICAjIFNvcnQgYnkgbGVuIHNvIHRoYXQgdGVtcGxhdGUgYXJncyBjb21lIGJlZm9yZSB0
ZW1wbGF0ZXMuCisgICAgZm9yIGNwcF90eXBlIGluIHNvcnRlZChhbGxfdHlwZXMsIGtleT1sYW1i
ZGEgeDogbGVuKHgudHlwZV9uYW1lKSk6CisgICAgICAgIGlmIGNwcF90eXBlIGluIHdlYmtpdF9p
cGNfdHlwZXM6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgCisgICAgICAgIGlmIGNwcF90
eXBlLmlzX2R5bmFtaWNfc3BhbigpIG9yIGNwcF90eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAg
IHRyYW5zZmVyX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5zZmVyX3R5cGUoY3BwX3R5
cGUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5
cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAgaWYgY3BwX3R5cGUuZ2V0X2NvbnRhaW5l
ZF90eXBlKCkuaXNfY29uc3QoKToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2Nv
bnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSB3ZWJraXRfaXBjX3NwYW5fdHJh
bnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgICAgICAgICB3
ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHRyYW5zZmVyX3R5cGUsIGNwcF90eXBlKV0gPSB3
ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lvbgorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBzdG9yZV90eXBlID0gd2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBl
KGNwcF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1so
c3RvcmVfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3Rf
Y29udmVyc2lvbgorICAgICAgICBlbGlmIGNwcF90eXBlLmlzX3JlZmVyZW5jZSgpIG9yIGNwcF90
eXBlLmlzX2NvbnN0X3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2NvbnRhaW5lcigpOgorICAg
ICAgICAgICAgdmFsdWVfdHlwZSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkgaWYgbm90IGNw
cF90eXBlLmlzX2NvbnRhaW5lcigpIGVsc2UgY3BwX3R5cGUKKyAgICAgICAgICAgIGlmIHZhbHVl
X3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAgICAgICAgY29udGFpbmVkX3R5cGUgPSB2
YWx1ZV90eXBlLmdldF9jb250YWluZWRfdHlwZSgpCisgICAgICAgICAgICAgICAgd2Via2l0X2lw
Y19jb250YWluZWRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbY29udGFpbmVkX3R5cGVdCisgICAg
ICAgICAgICAgICAgaWYgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9PSBjb250YWluZWRfdHlw
ZToKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB2YWx1
ZV90eXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNm
ZXJfdHlwZSA9IGdldF9jcHBfdHlwZShmInt2YWx1ZV90eXBlLmdldF9jb250YWluZXJfbmFtZSgp
fTx7c3RyKHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUpfT4iKQorICAgICAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5cGUKKyAgICAgICAgICAg
ICAgICAgICAgIyBUT0RPOiBIZXJlIG1pZ2h0IGJlIGNhc2Ugd2hlcmUgVmVjdG9yPEdDR0xpbnQ+
IHdhcyB1c2VkIGluIHRoZSBpbnRlcmZhY2UgYW5kIFZlY3RvcjxpbnQzMl90PiBpcyB1c2VkCisg
ICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIElQQyBkZWZpbml0aW9uLiBUaGVyZSBpcyBubyBz
ZW5zaWJsZSB3YXkgdG8gZG8gdGhpcyBhdCB0aGUgbW9tZW50LiBXZSBkbyBub3QgY29udmVydCwg
cmF0aGVyCisgICAgICAgICAgICAgICAgICAgICMgZXhwZWN0IHRoYXQgYWxsIHRoZSBpbnZvY2F0
aW9ucyBhcmUgdGFrZW4gY2FyZSBvZiB0aGUgZmFjdCB0aGF0IEdDR0xpbnQgaXMgdGhlIHNhbWUg
dHlwZSBhcyBpbnQzMl90LgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgd2lsbCBub3QgaG9s
ZCBmb3IgYWxsIHR5cGVzIHN1Y2ggYXMgR0NHTGJvb2xlYW4uCisgICAgICAgICAgICAgICAgICAg
ICN3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90eXBlKV0g
PSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlw
ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0g
PSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgCisgICAgIyBUaGUgaW5wdXQgdG8gdGhl
IGdlbmVyYXRvcnMgaXMgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3RlLgorICAgICMgUnVuIHRo
ZSB2YXJpb3VzIGdlbmVyYXRvcnMuCisgICAgZ2VuZXJhdG9ycyA9IFsKKyAgICAgICAgY29udGV4
dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MsIHVuaW1wbGVtZW50ZWQpLAor
ICAgICAgICBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcyksCisgICAgICAg
IGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwKKyAgICBdCisgICAgZm9y
IGcgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgZy5nZW5lcmF0ZSgpCisKKyAgICBpZiBvcHRpb25z
LnZlcmJvc2U6CisgICAgICAgIHByaW50KCJJbXBsZW1lbnRlZDoiKQorICAgICAgICBwcmludCgi
Ii5qb2luKGYiICAgIHtzdHIoaSl9IGZpbmFsXG4iIGZvciBpIGluIGZ1bmNzKSkKKyAgICAgICAg
cHJpbnQoIlVuaW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIuam9pbihmIiAgICB7c3Ry
KHUpfSBmaW5hbFxuIiBmb3IgdSBpbiB1bmltcGxlbWVudGVkKSkKKyAgICAgICAgcHJpbnQoZiJJ
bXBsZW1lbnRlZDoge2xlbihmdW5jcyl9LCB1bmltcGxlbWVudGVkOiB7bGVuKHVuaW1wbGVtZW50
ZWQpfSwgdG90YWw6IHtsZW4oZnVuY3MpK2xlbih1bmltcGxlbWVudGVkKX0iKQorICAgICAgICBw
cmludCgiQysrIHR5cGUgbWFwIHRvIFdlYktpdCBJUEMgdHlwZSBtYXA6IikKKyAgICAgICAgZm9y
IF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0IGluIHdlYmtpdF9p
cGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cih0KX0gLT4ge3N0cih3
ZWJraXRfaXBjX3R5cGVzW3RdKX0iKQorICAgICAgICBwcmludCgiQysrIHR5cGVzIHdpdGhvdXQg
V2ViS2l0IElQQyB0eXBlOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNwcF90eXBlcy5pdGVtcygp
OgorICAgICAgICAgICAgaWYgdCBub3QgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAg
ICAgICBwcmludChmIiAgICB7c3RyKHQpfSIpCisgICAgICAgIHByaW50KCJXZWJLaXQgSVBDIHR5
cGUgY29udmVyc2lvbnMiKQorICAgICAgICBmb3IgKGEsIGIpLCBjb252ZXJ0ZXIgaW4gd2Via2l0
X2lwY190eXBlc19jb252ZXJ0ZXJzLml0ZW1zKCk6CisgICAgICAgICAgICBwcmludChmIiAgICB7
c3RyKGEpfSAtPiB7c3RyKGIpfSA6IHtjb252ZXJ0ZXIuX19uYW1lX199IikKKyAgICAgICAgcHJp
bnQoIkRvbmUuIikKKyAgICByZXR1cm4gMAorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNkNzE0MmVjZjg0ZThkNmYyOTllNWFjYmFk
Mjg4NGYwYTY4NzI5OTEuLjYwZWE4NmFmZTg3N2FmMmY5M2IxN2E3NjJhMWMyYTQzMGFjMjM0NjUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0xMi0wMiAgS2ltbW8gS2lubnVuZW4gIDxra2lu
bnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5nIG9m
IGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAgICBw
cm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisKKyAg
ICAgICAgQWRkcyB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgdGhlIG1pc3NpbmcgZnVuY3Rpb25hbGl0
eS4gRG9lcyBub3QgeWV0CisgICAgICAgIGVuYWJsZSB0aGUgdGVzdHMgdGhhdCBhY3R1YWxseSBw
YXNzIGJ1dCB3aGljaCB3ZXJlIHNraXBwZWQgYmVmb3JlIHRoZQorICAgICAgICBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAt
MTItMDEgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJd
IEFkZCBzb21lIFdQRS1zcGVjaWZpYyBiYXNlbGluZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGEyMjUyOGZhMWIyNjc4NzMxODUzMDU4MDAzMzkwZmQ3NTM3
ZGMwYzYuLmJkMDcwOTIyMzdjN2M3YmM0ODIxNDkwYTJkNDY3MjYzYzcwOGM5NDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzE3LDYgKzMxNywxNCBAQCBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1hbGxvd2Vk
LXdpdGgtY3JlZGVudGlhbHMuaHRtbAogaHR0cC90ZXN0cy93ZWJnbCBbIFNraXAgXQoganMvc2hh
cmVkLWFycmF5LWJ1ZmZlci13ZWJnbC5odG1sIFsgU2tpcCBdCiAKK3dlYmtpdC5vcmcvYi8yMTgx
ODQgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFktZmFsc2UuaHRtbCBbIFNr
aXAgXQord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1z
ZS1mbGlwWS10cnVlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9jYW52
YXMvd2ViZ2wvY29udGV4dC11cGRhdGUtb24tZGlzcGxheS1jb25maWd1cmF0aW9uLmh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0
Y2hhbmdlZGV2ZW50Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMTkzNTEgZmFzdC9jYW52
YXMvd2ViZ2wvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIx
OTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9wcmVtdWx0aXBseWFscGhhLXRlc3QuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzIxOTM1MiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQt
b24tc3RhdHVzLWZhaWx1cmUuaHRtbCBbIEZhaWx1cmUgXQorCiB3ZWJncHUgWyBTa2lwIF0KIAog
YWNjZXNzaWJpbGl0eS9wcmVzcy13b3Jrcy1vbi1jb250cm9sLXR5cGVzLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415223</attachid>
            <date>2020-12-02 07:20:38 -0800</date>
            <delta_ts>2020-12-03 01:44:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201202172036.patch</filename>
            <type>text/plain</type>
            <size>581528</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM4NWFiOWQ4Nzg5YzU4
MTBkOTNjOGIxNGExNWM5MWFlNzdiZGM3MS4uYTE1MDIwY2NkZTcxYjcwZmY4NGNlMmU0N2ExOWJh
OGNiOWU2OTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTEyLTAxICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVSBQcm9jZXNzOiBJT1N1cmZh
Y2VzIHNob3VsZCBub3QgYmUgbWFwcGVkIGludG8gdGhlIFdlYiBDb250ZW50IFByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWIzNTQ0Y2UwODJiZDhhYzJjZmZlY2IyMmQwMWY3MWE3NDI5NDUxZC4uZjY2OGI2
ZTNlYzVkNDExN2M3MWJiYTM2MDhmNWY4ODg1YTQ2MGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NTIgQEAKKzIwMjAtMTItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlV2ViR0xCYWNrZW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudHMgYSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBH
cmFwaGljc0NvbnRleHRHTCBmb3IgR1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQy4KKworICAgICAgICBJbXBsZW1lbnRlZCB3aXRo
IGEgZ2VuZXJhdG9yIHNjcmlwdCBpbXBsZW1lbnRpbmcgdGhlIElQQyB0byBwYXNzIHRoZQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTCBtZW1iZXIgZnVuY3Rpb24gY2FsbHMgZnJvbSB3ZWIgcHJv
Y2VzcyB0byB0aGUgR1BVCisgICAgICAgIHByb2Nlc3MuIFRoZSBzY3JpcHQgaXMgcnVuIGR1cmlu
ZyBkZXZlbG9wbWVudCB0aW1lIGFuZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgY29tbWl0dGVk
IHRvIHRoZSByZXBvIGZvciBlYXNlIG9mIHJldmlldy4KKworICAgICAgICBJbXBsZW1lbnQgdGhl
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIFdlYktpdCBzaWRlLiBUaGlzIGNsYXNzIHdpbGwK
KyAgICAgICAgZm9yd2FyZCBjYWxscyByZWNlaXZlZCB2aWEgSVBDIHRvIHRoZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC4gQXQgdGhlCisgICAgICAgIG1vbWVudCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBpbnN0YW5jZSBpcyBhIGRpcmVjdCBjaGlsZCBvZgorICAgICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLgorCisgICAgICAgIENoYW5nZXMgV2ViS2l0IElQQyB0byBzdXBwb3J0IHJl
Y2VpdmluZyB0eXBlZCBhcnJheXMgYXMgcmVmZXJlbmNlcy4gVGhpcworICAgICAgICBpcyBuZWVk
ZWQgdG8gc3VibWl0IEdMIGRhdGEgYXJyYXlzLCBzdWNoIGFzIEdMZmxvYXQgYXJyYXlzIGRpcmVj
dGx5IGZyb20KKyAgICAgICAgdGhlIElQQyBkYXRhIHN0b3JlIHdpdGhvdXQgYW4gZXh0cmEgY29w
eS4KKworICAgICAgICBDaGFuZ2VzIFdlYktpdCBJUEMgdG8gc3VwcG9ydCBwYXNzaW5nIGRhdGEg
cmVmZXJlbmNlcywgaS5lLgorICAgICAgICBEYXRhUmVmZXJlbmNlIG9yIEFycmF5UmVmZXJlbmNl
LCBhcyBhIHN5bmNocm9uaXplZCBjYWxsIHJldHVybiB2YWx1ZS4KKyAgICAgICAgVGhlIGNhbGxl
ciBtdXN0IGhvbGQgdGhlIENvbm5lY3Rpb246OnN5bmNTZW5kKCkgcmVzdWx0IChEZWNvZGVyIG9i
amVjdCkKKyAgICAgICAgZm9yIHRoZSBkdXJpYXRpb24gb2YgdXNpbmcgdGhlIGRhdGEgdmFsdWVz
LgorCisgICAgICAgIENvbXBvc2l0aW5nIGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIFBMQVRGT1JN
KENPQ09BKS4KKworICAgICAgICBNaXNzaW5nOgorICAgICAgICAgLSBTaW11bGF0ZWQgY29udGV4
dCBsb3NzCisgICAgICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGNoYW5nZQorICAgICAgICAgLSBQ
YWludCBXZWJHTCBjb250ZW50cyB0byAyRCBjYW52YXMKKyAgICAgICAgIC0gVXBsb2FkIHZpZGVv
IHRvIFdlYkdMCisgICAgICAgICAtIFVwbG9hZCBjYW52YXMgdG8gV2ViR0wKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpkaWRDb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlc2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkZXRhY2hDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmg6IEFkZGVkLgorICAgICAgICAoc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6Cisg
ICAgICAgIChzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChtb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QpOgorICAgICAgICAoYWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChhdHRhY2hT
aGFkZXIpOgorICAgICAgICAoYmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKGJpbmRCdWZm
ZXIpOgorICAgICAgICAoYmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGJpbmRSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoYmluZFRleHR1cmUpOgorICAgICAgICAoYmxlbmRDb2xvcik6CisgICAg
ICAgIChibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6Cisg
ICAgICAgIChibGVuZEZ1bmMpOgorICAgICAgICAoYmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAg
ICAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChjbGVhcik6CisgICAgICAgIChj
bGVhckNvbG9yKToKKyAgICAgICAgKGNsZWFyRGVwdGgpOgorICAgICAgICAoY2xlYXJTdGVuY2ls
KToKKyAgICAgICAgKGNvbG9yTWFzayk6CisgICAgICAgIChjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKGNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKGNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChjcmVhdGVTaGFkZXIpOgorICAgICAgICAoY3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChjdWxs
RmFjZSk6CisgICAgICAgIChkZWxldGVCdWZmZXIpOgorICAgICAgICAoZGVsZXRlRnJhbWVidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChkZWxldGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGRlbGV0ZVRleHR1cmUpOgor
ICAgICAgICAoZGVwdGhGdW5jKToKKyAgICAgICAgKGRlcHRoTWFzayk6CisgICAgICAgIChkZXB0
aFJhbmdlKToKKyAgICAgICAgKGRldGFjaFNoYWRlcik6CisgICAgICAgIChkaXNhYmxlKToKKyAg
ICAgICAgKGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChkcmF3QXJyYXlzKToK
KyAgICAgICAgKGRyYXdFbGVtZW50cyk6CisgICAgICAgIChlbmFibGUpOgorICAgICAgICAoZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZmluaXNoKToKKyAgICAgICAgKGZsdXNo
KToKKyAgICAgICAgKGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGZyb250RmFjZSk6CisgICAgICAgIChnZW5lcmF0ZU1p
cG1hcCk6CisgICAgICAgIChnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoZ2V0QWN0aXZlVW5p
Zm9ybSk6CisgICAgICAgIChnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChnZXRCdWZmZXJQ
YXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFN0cmluZyk6CisgICAgICAgIChnZXRGbG9hdHYpOgor
ICAgICAgICAoZ2V0SW50ZWdlcnYpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0KToKKyAgICAgICAg
KGdldEludGVnZXI2NGkpOgorICAgICAgICAoZ2V0UHJvZ3JhbWkpOgorICAgICAgICAoZ2V0Qm9v
bGVhbnYpOgorICAgICAgICAoZ2V0RXJyb3IpOgorICAgICAgICAoZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAg
IChnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFNoYWRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQpOgorICAgICAgICAoZ2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRl
cmYpOgorICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRVbmlmb3JtZnYp
OgorICAgICAgICAoZ2V0VW5pZm9ybWl2KToKKyAgICAgICAgKGdldFVuaWZvcm11aXYpOgorICAg
ICAgICAoZ2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdldFZlcnRleEF0dHJpYk9mZnNl
dCk6CisgICAgICAgIChoaW50KToKKyAgICAgICAgKGlzQnVmZmVyKToKKyAgICAgICAgKGlzRW5h
YmxlZCk6CisgICAgICAgIChpc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGlzUHJvZ3JhbSk6Cisg
ICAgICAgIChpc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChpc1NoYWRlcik6CisgICAgICAgIChp
c1RleHR1cmUpOgorICAgICAgICAobGluZVdpZHRoKToKKyAgICAgICAgKGxpbmtQcm9ncmFtKToK
KyAgICAgICAgKHBpeGVsU3RvcmVpKToKKyAgICAgICAgKHBvbHlnb25PZmZzZXQpOgorICAgICAg
ICAocmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChzYW1wbGVDb3ZlcmFnZSk6CisgICAg
ICAgIChzY2lzc29yKToKKyAgICAgICAgKHNoYWRlclNvdXJjZSk6CisgICAgICAgIChzdGVuY2ls
RnVuYyk6CisgICAgICAgIChzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKHN0ZW5jaWxN
YXNrKToKKyAgICAgICAgKHN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoc3RlbmNpbE9w
KToKKyAgICAgICAgKHN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmYp
OgorICAgICAgICAodGV4UGFyYW1ldGVyaSk6CisgICAgICAgICh1bmlmb3JtMWYpOgorICAgICAg
ICAodW5pZm9ybTFmdik6CisgICAgICAgICh1bmlmb3JtMWkpOgorICAgICAgICAodW5pZm9ybTFp
dik6CisgICAgICAgICh1bmlmb3JtMmYpOgorICAgICAgICAodW5pZm9ybTJmdik6CisgICAgICAg
ICh1bmlmb3JtMmkpOgorICAgICAgICAodW5pZm9ybTJpdik6CisgICAgICAgICh1bmlmb3JtM2Yp
OgorICAgICAgICAodW5pZm9ybTNmdik6CisgICAgICAgICh1bmlmb3JtM2kpOgorICAgICAgICAo
dW5pZm9ybTNpdik6CisgICAgICAgICh1bmlmb3JtNGYpOgorICAgICAgICAodW5pZm9ybTRmdik6
CisgICAgICAgICh1bmlmb3JtNGkpOgorICAgICAgICAodW5pZm9ybTRpdik6CisgICAgICAgICh1
bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgICh1c2VQcm9ncmFtKToKKyAgICAgICAgKHZhbGlk
YXRlUHJvZ3JhbSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAodmVydGV4QXR0cmliMmYpOgorICAgICAgICAodmVydGV4QXR0
cmliMmZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjNmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWI0
ZnYpOgorICAgICAgICAodmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgICh2aWV3cG9ydCk6
CisgICAgICAgIChidWZmZXJEYXRhMCk6CisgICAgICAgIChidWZmZXJEYXRhMSk6CisgICAgICAg
IChidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMCk6CisgICAgICAgIChyZWFk
blBpeGVsczEpOgorICAgICAgICAodGV4SW1hZ2UyRDApOgorICAgICAgICAodGV4SW1hZ2UyRDEp
OgorICAgICAgICAodGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UyRDEpOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQwKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJ
bWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDApOgorICAgICAgICAo
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQxKToKKyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWQp
OgorICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoZGVsZXRl
VmVydGV4QXJyYXkpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChiaW5kVmVy
dGV4QXJyYXkpOgorICAgICAgICAoY29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoZnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoaW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyZWFkQnVmZmVyKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgICh0ZXhT
dG9yYWdlMkQpOgorICAgICAgICAodGV4U3RvcmFnZTNEKToKKyAgICAgICAgKHRleEltYWdlM0Qw
KToKKyAgICAgICAgKHRleEltYWdlM0QxKToKKyAgICAgICAgKHRleFN1YkltYWdlM0QwKToKKyAg
ICAgICAgKHRleFN1YkltYWdlM0QxKToKKyAgICAgICAgKGNvcHlUZXhTdWJJbWFnZTNEKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1h
Z2UzRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKToKKyAgICAgICAgKGNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEMSk6CisgICAgICAgIChnZXRGcmFnRGF0YUxvY2F0aW9uKToK
KyAgICAgICAgKHVuaWZvcm0xdWkpOgorICAgICAgICAodW5pZm9ybTJ1aSk6CisgICAgICAgICh1
bmlmb3JtM3VpKToKKyAgICAgICAgKHVuaWZvcm00dWkpOgorICAgICAgICAodW5pZm9ybTF1aXYp
OgorICAgICAgICAodW5pZm9ybTJ1aXYpOgorICAgICAgICAodW5pZm9ybTN1aXYpOgorICAgICAg
ICAodW5pZm9ybTR1aXYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAg
KHVuaWZvcm1NYXRyaXgzeDJmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAg
ICAgICAodW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgzeDRmdik6
CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliSTRp
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1
aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcik6CisgICAgICAgIChkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChkcmF3QnVm
ZmVycyk6CisgICAgICAgIChjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKGNsZWFyQnVmZmVydWl2
KToKKyAgICAgICAgKGNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmaSk6Cisg
ICAgICAgIChjcmVhdGVRdWVyeSk6CisgICAgICAgIChkZWxldGVRdWVyeSk6CisgICAgICAgIChp
c1F1ZXJ5KToKKyAgICAgICAgKGJlZ2luUXVlcnkpOgorICAgICAgICAoZW5kUXVlcnkpOgorICAg
ICAgICAoZ2V0UXVlcnkpOgorICAgICAgICAoZ2V0UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChj
cmVhdGVTYW1wbGVyKToKKyAgICAgICAgKGRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoaXNTYW1w
bGVyKToKKyAgICAgICAgKGJpbmRTYW1wbGVyKToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKHNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJh
bWV0ZXJmKToKKyAgICAgICAgKGdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGZlbmNl
U3luYyk6CisgICAgICAgIChpc1N5bmMpOgorICAgICAgICAoZGVsZXRlU3luYyk6CisgICAgICAg
IChjbGllbnRXYWl0U3luYyk6CisgICAgICAgICh3YWl0U3luYyk6CisgICAgICAgIChnZXRTeW5j
aSk6CisgICAgICAgIChjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChpc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiZWdpblRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKHRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KToKKyAgICAgICAgKHBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAocmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZEJ1ZmZlckJhc2UpOgorICAgICAgICAoYmlu
ZEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKGdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKGdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAg
ICAgKGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAodW5pZm9ybUJsb2NrQmlu
ZGluZyk6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZlckFOR0xFKToK
KyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAg
KGNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKGlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChp
bnNlcnRFdmVudE1hcmtlckVYVCk6CisgICAgICAgIChwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAg
ICAgICAocG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoZHJhd0J1ZmZlcnNFWFQpOgorICAg
ICAgICAoZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRh
c2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaC4KKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OkFycmF5UmVmZXJlbmNlKToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
QXJyYXlSZWZlcmVuY2U6OnZlY3RvciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJl
ZmVyZW5jZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OndyYXBGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmluZ1Jl
ZmVyZW5jZS5jcHA6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgICogU2hhcmVkL3NvdXAvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzU291cC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2VydGlm
aWNhdGVJbmZvPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZp
Y2F0ZUluZm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlv
blNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuY3BwLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNv
bnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0
aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENv
bG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xv
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
RGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1
cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
b250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdp
ZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00Zik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4
QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFn
ZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29t
cHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNh
bXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZl
cnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJr
ZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
b3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZFBpeGVsc1JvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1w
bGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW50
ZXJmYWNlaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRVc2VH
UFVQcm9jZXNzRm9yV2ViR0wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisKIDIwMjAtMTItMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgR1BVIFByb2Nlc3M6IElPU3VyZmFjZXMgc2hvdWxkIG5vdCBi
ZSBtYXBwZWQgaW50byB0aGUgV2ViIENvbnRlbnQgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYTcyM2FlMDYzNzNkMmY1ZjVmZDAyZjdjMTgyOGYzMmYxNzAxYjVhNC4uZTNkZTA3OTY2N2Jj
YWFhODFjZTViOTUzNTAyNDI1OWJhMjZjM2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjQ4
LDYgKzEyNDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNmZWIw
MzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLmNlNmYxM2I4OGJkNDA3N2EwYzU0
YjMxNTg5NzI1MTMyNjZkZGM5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMTEs
MTAgKzMxMSwxMSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lu
dFJlY3RDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNv
cmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgyZGY4ODdiMWIwYzRkNGI4
MTJjYmZlNWEwNmRlYWU0MTgxMjBlMmIuLjEwNzE0ZjNmNGE1NjhmZmQwZDE1Njk0MDJlMGVjZGM0
Nzg3MDE3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcyLDYgKzE5NzIsNyBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2Njg3NTJjNzk1MjZiYzZjZDE0
M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5iYjRiYWQ4N2RmY2FlNDBiN2ZlNGQwMGIwZmNlMjQxZWZm
YjlkNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM1NywxMiArMzU3LDE0IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2Nv
YS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNv
Y29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmU3
ZTlmZDJiOTFlYjgxMDEzNDU2MGRmZmQ4MGFjZDIxMGIzZmRjMC4uM2I0NDA5ZWIwNmRhYzg3ZDE5
ZDVhYzI5OWFiOTEyODJiZjg5ZWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1Myw3ICsyMDUzLDcgQEAKIAkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xB
bnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcw
MDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdG
QjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9u
c0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3
RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IH07CisJCTZFNjdEMkE5
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zR0wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDMyMjlD
OUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEUy
MjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RjIyOURD
RDEzMDBCM0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAv
KiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovOyB9OwpAQCAtMjI0Nyw2ICsyMjQ3LDggQEAK
IAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAw
QzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEw
MzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjkwNDE3MDI1
NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVD
QjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIz
NEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUy
NTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3Mzgx
RkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAv
KiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OwpAQCAtMTAyMjksOSArMTAyMzEsMTQgQEAK
IAkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAx
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI0MjU0
QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTUyNTcxMkU5MTAw
MzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2REM4MTcyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNEMjRGQUQzNjAwMDVCRUYxMCAvKiBTZXR0aW5ncy5jcHAuZXJiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNldHRpbmdz
LmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDExRjNFMjRGQUQzNjAw
MDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzAxMUYzRjI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5p
ZGwuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjIxLDYgKzI2NjI4LDggQEAKIAkJCQkwNzRFODJCOTE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCiAJCQkJQkNBQjQxN0Yx
M0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5oICovLAorCQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCisJCQkJN0I5MDQxNkUyNTUw
MTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJ
CQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywK
IAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywK
IAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAt
MjY3ODcsNiArMjY3OTYsOCBAQAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8sCiAJCQkJQjUzMjBENkExMjJBMjRFOTAw
MkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJG
MzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCisJCQkJN0I2REM4MTUy
NTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNw
cCAqLywKKwkJCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLywKIAkJCQlDREE1OTU5NjIxNDZERjc4
MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RBNTk1OTcyMTQ2REY3
ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTI2Nzk4LDYgKzI2ODA5
LDcgQEAKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4RkIg
LyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKKwkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0
QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKIAkJCQlD
REVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKIAkJ
CQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCiAJ
CQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
ICovLApAQCAtMzIwOTksNiArMzIxMTEsNyBAQAogCQkJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUzQyAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNCOUU5MjM3
NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVhZGVycyAqLywKQEAg
LTM0MDM1LDYgKzM0MDQ4LDcgQEAKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2
MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJl
bW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0
RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWRiZDA1NWQ3ODE1M2NmZDVjNzE3NDU5N2YwNmUw
ZTUwOWU3OGZhYS4uNmM3ODNiZDIyYmRmMTJlYTRjMDNkMzcxM2QwZWU3Yzc5MTE0ZGNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTY4MSwxNyArNjgxLDggQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNyY0J5dGUKICAg
ICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+bW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ly8gRklYTUU6IENvYWxlc2NlIG11bHRpcGxlIGdldEJ1ZmZlclN1YkRhdGEoKSBjYWxscyB0byB1
c2UgYSBzaW5nbGUgbWFwKCkgY2FsbAotICAgIHZvaWQqIHB0ciA9IG1fY29udGV4dC0+bWFwQnVm
ZmVyUmFuZ2UodGFyZ2V0LCBjaGVja2VkU3JjQnl0ZU9mZnNldC51bnNhZmVHZXQoKSwgc3RhdGlj
X2Nhc3Q8R0NHTHNpemVpcHRyPihjaGVja2VkQ29weUxlbmd0aFB0ci51bnNhZmVHZXQoKSAqIGNo
ZWNrZWRFbGVtZW50U2l6ZS51bnNhZmVHZXQoKSksIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOwotICAgIGlmIChwdHIpCi0gICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4o
ZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZz
ZXQgKiBlbGVtZW50U2l6ZSwgcHRyLCBjb3B5TGVuZ3RoICogZWxlbWVudFNpemUpOwotCi0gICAg
aWYgKCFtX2NvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdldCkpCi0gICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdldEJ1ZmZlclN1
YkRhdGEiLCAiRmFpbGVkIHdoaWxlIHVubWFwcGluZyBidWZmZXIiKTsKLSNlbmRpZgotICAgIG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgbV9jb250ZXh0
LT5nZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3JjQnl0ZU9mZnNldCwgbWFrZUdDR0xTcGFuKHN0
YXRpY19jYXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVP
ZmZzZXQoKSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBjb3B5TGVuZ3RoICogZWxlbWVudFNp
emUpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCkBAIC0xOTY3LDkgKzE5
NTgsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRl
cihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0UXVl
cnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250ZXh0LT5nZXRR
dWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBSZWZQdHI8V2ViR0xT
YW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkKQEAgLTIwNTks
MTcgKzIwNDgsMTEgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxl
clBhcmFtZXRlcihXZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1M6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6IHsKLSAg
ICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVyaXYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIu
b2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01B
WF9MT0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fTE9EOiB7Ci0g
ICAgICAgIGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFy
YW1ldGVyZnYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5f
TE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNhbXBsZXJQYXJhbWV0
ZXIiLCAiSW52YWxpZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0ODUs
MjQgKzI0NjgsMjQgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2
ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZl
Y3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKLSAgICAKICAg
ICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9U
WVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX1RZUEU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGVudW0+KHgpOyB9KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX1NJWkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKKyAgICB9CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19JTkRFWDoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX09GRlNFVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklG
T1JNX0FSUkFZX1NUUklERToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX01B
VFJJWF9TVFJJREU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
SVNfUk9XX01BSk9SOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dy
YW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9y
bUluZGljZXMsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lT
X1JPV19NQUpPUjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
Pih4KTsgfSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtcyIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3
Miw4ICszNTU1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEcKIAogICAgIGNsZWFySWZDb21w
b3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwogCi0gICAgR0NHTHNpemVpIGxlbmd0aCwgY29sdW1u
cywgcm93czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVz
dEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgJmxlbmd0aCwgJmNv
bHVtbnMsICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpLCB0cnVlKTsK
KyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDQwMDcxY2EyM2Iy
YzM1NWUxZTgxMDY0NjE3ZDUyYjlkMmZiODdhYzYuLmY3YzZhMmU4MmE0YmYwMzdhMWI0NzdkNzgz
ZmE1NDFhYzRmNTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MzIsOCArNzMyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0KLQotICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRl
cywgaG9zdFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAg
ICAgaWYgKGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3Bh
dGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250
ZXh0Y3JlYXRpb25lcnJvckV2ZW50LApAQCAtNDM5NSwxNSArNDM5NCwxMiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aAogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAog
I2lmIFVTRShBTkdMRSkKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBHQ0dMc2l6ZWkg
Y29sdW1ucyA9IDA7Ci0gICAgR0NHTHNpemVpIHJvd3MgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJv
d3MsIGRhdGEsIGZhbHNlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVu
Z3RoKCkpKTsKICNlbHNlCiAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxz
LmJ5dGVMZW5ndGgoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJk
NTUuLjg5YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdl
YkdMU3luYzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFwaGljc0Nv
bnRleHRHTDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5jU3RhdHVz
KTsKKyAgICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5
bmNpKG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBpZiAobV9z
eW5jU3RhdHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAgICBzY2hl
ZHVsZUFsbG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5k
ZXggNGRhYTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjliODZiYzMx
ODE2N2EzMzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
NTMwLDYgKzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVybiBtX2Ns
aWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShX
RUJHTCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJRCBDaHJv
bWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsK
QEAgLTU0Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1fcGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQorICAgIC8v
IFRPRE86IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQgd29yaywg
cmV0dXJuIG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3NjQxZDAx
NDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEzY2ZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYK
KwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1
bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAz
YTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0OTkwMzc1
ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMg
dGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RX
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRleCA0M2Ri
MWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2MzMzdiMmU1
MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAvLyBNZXRo
b2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUyZmIzLi43
YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMzQsMTMg
KzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1
cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7
IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkg
eyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0luV2ViUHJv
Y2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3Mo
KTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZiZDFkNDNj
MDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFmNjRhYTBk
ZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC05Niw2
ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1bmRsZUlz
V2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJv
b2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07CisgICAgcmV0
dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNz
KCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9IFtbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4NjczNDQ3
NDk1MTQ3Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAt
MjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9j
b21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NUQVRVU19L
SFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNp
b24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNf
QU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAvLyBHTF9B
UkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVy
cyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwog
CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0
RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZ
MSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWdu
ZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dM
aW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBH
Q0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0g
ZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQot
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2Vy
RVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7
CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVm
cykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAg
ICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNp
emVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKQEAg
LTMzMiw3ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQU1E
KCkgPSAwOwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3QgYmUg
YXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZp
Z3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRl
eHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkZjRhMTE5
YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIxYWVhN2E1
YTk2OGJjNjk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQSElDU19D
T05URVhUX0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0
Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpAQCAt
NDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1bHQ7
CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhv
c3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdMOjpH
cmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJzKGF0
dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggYzhlMjc5ZjM5M2I2Y2E4MTIzZmNlZWY3Yzg5YjEyNWM1MmRjNmVm
My4uNTYxM2NiMmY2YzkxMjcwYWJkMWJkNGU2NzEwMzllOGYyYzgwZmZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBA
IC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZvciBp
bXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgogICAg
IC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTExLDE0ICs5MTMsMTcgQEAgcHVibGljOgogICAg
ICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGljc0Nv
bnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24gaW4g
Y29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0IHRo
ZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBH
cmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAot
ICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRl
cnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgYWN0
aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFj
aFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05ODAsNyAr
OTg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhD
b3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgPSAwOwog
CiAgICAgdmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDI1LDEwICsxMDI5LDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0dHJpYgot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSA9
IDA7CkBAIC0xMTAwLDcgKzExMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NH
TGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0xMTI0LDgg
KzExMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50
cy4KIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50
cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgR0NH
THZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAgICB2aXJ0
dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZpcnR1YWwg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBnZXRRdWVy
eU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpID0gMDsK
QEAgLTExOTYsOCArMTE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pID0gMDsK
ICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xi
b29sZWFuIGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
aXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSA9
IDA7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTeW5jaXYo
R0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVt
IHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVz
ZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NHTHVpbnQ+
IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4m
IHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRp
Y2VzLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRl
cgpAQCAtMTM5NCw3ICsxMzk0LDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1
cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgK
aW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uM2IwNjRjM2U3
NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcgKzI1LDkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTMgKzQ2LDE3IEBAIHR5cGVkZWYgdW5zaWduZWQg
R0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKK3R5cGVkZWYgY2hh
ciBHQ0dMY2hhcjsKK3R5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYg
dm9pZCBHQ0dMdm9pZDsKKworLy8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0
Y2ggdGhlIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZp
bGUgZm9yIGFsbCBwbGF0Zm9ybXMuCiB0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7CiB0eXBl
ZGVmIGludHB0cl90IEdDR0xzaXplaXB0cjsKLXR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKK3R5cGVk
ZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7CiB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwotdHlwZWRlZiBzdHJ1Y3QgX19H
THN5bmMqIEdDR0xzeW5jOwotdHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTU4LDEzICs2NCwxNyBAQCB0eXBlZGVmIEdDR0x1
aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWludDsKICNlbmRpZgog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdjR0xTcGFuRHluYW1p
Y0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+CiBzdHJ1
Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50Pgogc3RydWN0
IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkKKyAgICBleHBsaWNp
dCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAgICAgICAgIDogZGF0
YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6
ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkpW0V4dGVudF0pCiAg
ICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTcyLDYgKzgyLDEyIEBAIHN0cnVjdCBH
Q0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0ZW50PiYgb3RoZXIs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwg
c3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAg
ICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkKKyAgICAg
ICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bhbihjb25zdCBzdGQ6
OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQor
ICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFTRV9BU1NFUlQoZGF0
YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYgb3BlcmF0b3IqKCkg
eyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRhdGE7IH0KICAgICBU
KiBkYXRhOwpAQCAtNzksNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50
PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykKICAgICAgICAgOiBk
YXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0xMjEsNiArMTM3LDEx
IEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRhdGEob3RoZXIuZGF0
YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAgICAgeyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEdD
R0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAgICAgIDog
ZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXpl
b2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29uc3Qgc2l6ZV90IGJ1
ZlNpemU7CiB9OwpAQCAtMTUyLDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NHTFNwYW4oVCAoJilb
Tl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotR0NHTFNwYW4o
V1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitHQ0dMU3BhbihX
VEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3Qg
Y291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTBmMzMwNzA1NjA3NWNhOWFjNGU2M2FkNjY2MjM0ZDY5ZjA0MzIxMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cnMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpID0gZGVmYXVsdDsKKworUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1HcmFw
aGljc0NvbnRleHRHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK0V4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiAqdGhp
czsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVu
Y2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRG
b3JDcmVhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCkuaXNXZWJHTDI7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAg
Ly8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKQorICAgICAgICBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAg
ICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBtX2xheWVyQ29t
cG9zaXRlZCA9IHRydWU7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Cisg
ICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXJz
VG9BdXRvQ2xlYXIgPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICAg
ICAgaWYgKGF0dHJzLmRlcHRoKQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0g
R3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5z
dGVuY2lsKQorICAgICAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250
ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICB9CisgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaWRDb21wb3NpdGUo
KTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVh
cihHQ0dMYml0ZmllbGQgYnVmZmVycykKK3sKKyAgICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCku
cHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IGJ1
ZmZlcnM7Cit9CisKK0dDR0xiaXRmaWVsZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJz
VG9BdXRvQ2xlYXI7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpl
bmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQoreworICAgIC8vIFJlZGVjbGFyZWQgZm9yIGV4
cG9ydCByZWFzb25zLgorICAgIC8vIEZJWE1FOiBUaGUgd2hvbGUgZnVuY3Rpb24gc2hvdWxkIGJl
IHJlbW92ZWQuCisgICAgR3JhcGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1
ZmZlcigpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgeworICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOworICAgICAgICBt
X2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxp
emUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRl
bnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChl
eHRlbnNpb24pOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKworUGxhdGZv
cm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkyMjUzNTYx
MDFjNWNkNjQwNDFmYjFhMWI3N2RlOTAxZTNmNTJjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKK09CSkNfQ0xBU1MgV2ViR0xMYXllcjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluOworI2VuZGlmCisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgcHJveHkgc2lkZSBpbXBsZW1lbnRhdGlvbgorLy8gVGhpcyBpbXBsZW1lbnRz
IHRoZSBwYXJ0cyB0aGF0IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6
CisvLyAtIERyYXdpbmcgYnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCisvLyAtIENvbXBvc2l0
aW5nIHN1cHBvcnQuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNH
TCB7CitwdWJsaWM6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5h
YmxlZDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0woKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVy
ZSgpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyAgICB2
b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0ZWQo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0Zmll
bGQpIGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciopIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOworICAg
IHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CisKKyNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXND
VigpIGZpbmFsOworI2VuZGlmCisgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3ZlcnJpZGVzLgor
ICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOworICAgIGJvb2wgc3VwcG9ydHMoY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYp
IGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAgIHZpcnR1YWwg
dm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2FwQ2hhaW4oKTsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
KyNlbmRpZgorCisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgorICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJp
bmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5h
YmxlZEV4dGVuc2lvbnM7CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIgY2xlYXIgdHJh
Y2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBtX2xheWVyQ29t
cG9zaXRlZCA9IGZhbHNlOworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9
IHsgMCB9OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggMjgz
ZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2ZkODIzZDA4MWM1NWU0YS4uN2MxNTFmYTI4NTBmMzNjMTQ5
YTlkYzgyMjM4MWI4ZmNiZGU5Y2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtNDYs
MjggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVu
c2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUlu
ZGV4ZWRHZXRTdHJpbmcpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhm
YWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9pc05WSURJQShmYWxzZSkK
LSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0gICAgLCBtX2lz
SW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0
aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUo
ZmFsc2UpCiAgICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykK
IHsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwgcmVtb3ZlIHRoaXMgaW5pdGlhbGl6YXRpb24gYWx0
b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJzdW1lcyB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGdy
YXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4KLSAgICBtX3ZlbmRvciA9IFN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1ZFTkRPUikpKTsKLSAgICBt
X3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRT
dHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2ZW5kb3JDb21wb25l
bnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnICcpOwotICAg
IGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJudmlkaWEiKSkKLSAgICAgICAgbV9pc05W
SURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImF0aSIpIHx8
IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIpKQotICAgICAgICBtX2lzQU1EID0gdHJ1
ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW50ZWwiKSkKLSAgICAgICAg
bV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW1h
Z2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0aW9uID0gdHJ1ZTsKIH0KIAogRXh0ZW5z
aW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKQEAgLTEwMyw3ICs4
Myw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1pbnQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQorR0xpbnQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHRHTDo6Tk9fRVJST1I7CiB9CkBAIC0xMTQsMTAgKzk0LDExIEBAIFN0cmluZyBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3Qgc2hhZGVyCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGludCBzb3VyY2VMZW5n
dGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9T
T1VSQ0VfTEVOR1RIX0FOR0xFKTsKKwogICAgIGlmICghc291cmNlTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0
aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMg
bnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBpbnQgcmV0dXJuZWRMZW5ndGggPSAwOworICAgIEdDR0xp
bnQgcmV0dXJuZWRMZW5ndGggPSAwOwogICAgIGdsOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkp
OwogICAgIGlmICghcmV0dXJuZWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwpAQCAtMTQ3LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVB
dmFpbGFibGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9u
cyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihs
b25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgw
LCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ss
IHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsK
ICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlLgogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKQEAgLTE1Niw3ICsxMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVi
dWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZwogICAgIGdsOjpC
bGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzUsNyArMjE2LDcgQEAgdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGJ1ZnMpCiAgICAgZ2w6OkRyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRh
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjQzLDE1ICsyMjQsMTUgQEAgdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2kKICAgICBnbDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwg
bG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKKyAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4ob2Zmc2V0
KSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTM1MCw3ICszMzEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0MTIsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUo
cG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0
VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM5LDcgKzQyMCw3IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC00NTYsNTUgKzQzNyw3
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpCiAgICAgZ2w6OkdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi0jaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotc3RhdGljIHZvaWQgd2lwZUFs
cGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMpCi17Ci0gICAgLy8gV2UgY2FuIGFzc3VtZSB0aGlzIGRvZXNuJ3Qgb3ZlcmZsb3cg
YmVjYXVzZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMKLSAgICAvLyB1c2UgY2hlY2tlZCBhcml0aG1l
dGljLgotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBwaXhlbHNbaSArIDNd
ID0gMjU1OwotfQotI2VuZGlmCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9p
ZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkKLXsKLSAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcg
aXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91
bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCi0gICAgZ2w6OkZsdXNoKCk7Ci0gICAg
YXV0byBhdHRycyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBHQ0dMZW51
bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1fY29udGV4dC0+bV9pc0ZvcldlYkdMMiA/IEdyYXBoaWNz
Q29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSOwotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRH
TFN0YXRlJiBzdGF0ZSA9IG1fY29udGV4dC0+bV9zdGF0ZTsKLSAgICBpZiAoYXR0cnMuYW50aWFs
aWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8p
IHsKLSAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KElu
dFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVy
KGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fZmJvKTsKLSAgICAgICAgZ2w6OkZsdXNo
KCk7Ci0gICAgfQotICAgICh2b2lkKSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpOwotICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBkYXRh
KTsKLSAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKLSAgICBpZiAoYXR0cnMuYW50
aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVG
Qk8pCi0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fY29u
dGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgLy8g
QU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNSb2J1c3RBTkdM
RSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKLSAgICAgICAgLy8gc3ludGhldGljIGVy
cm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93LgotICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBp
ZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYmICFhdHRycy5hbHBoYSAmJiAoZm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRH
TDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpICYm
IChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX2ZibyB8fCAoYXR0cnMuYW50aWFs
aWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8p
KSkKLSAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKLSNlbmRpZgotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MTIsNyAr
NDQ1LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1mdlJv
YnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9
CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewog
ICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTIwLDcgKzQ1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sCiAgICAgZ2w6Okdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBhNzczMWRmZDIwYzVm
MDNhMzM1OTAzZmFhNmUzOGZmNzJmNGIyMzIzLi5jYmY0OThiZDdjMWExYWI5YWE2YjcwZmI1ZDM4
YWM0YjkyZmIwMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTU2LDIxICs1NiwxMiBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBz
cmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9u
ZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNp
Z25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywg
dW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBs
b25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlk
ZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9
Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KLSAgICBib29s
IGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KLSAgICBib29sIGlzSW1h
Z2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRpb247IH0KLSAgICBTdHJp
bmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0KLQotICAgIGJvb2wgcmVx
dWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVp
cmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCByZXF1aXJlc1Jlc3RyaWN0
ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVpcmVzUmVzdHJp
Y3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2
b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
IG92ZXJyaWRlOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICB2
b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5z
LCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CkBAIC05Nyw3ICs4OCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVh
ZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTEzMCwx
OCArMTIwLDggQEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0
OwogCi0gICAgYm9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1f
aXNJbnRlbDsKLSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1h
eGltdW1UZXh0dXJlU2l6ZTsKLQogICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFs
c2UgfTsKIAotICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKLQog
ICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRl
cmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xD
b2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZl
ckZsb2F0UkdCQSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmlu
ZGV4IDEyN2EzYjhkYmEzYzNmNDRjZDc2NWRkOGZjNzExY2RkODc4ZGU5YTQuLjFkNjA0YjcxZDQ4
MTRmNTk3YzJjMmZjODllZGM5NjQ4ZGMxM2M3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCkBAIC00NDMsMzIgKzQ0Myw1MyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgZGF0YS5kYXRhLCBmYWxzZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2Fz
dDxHQ0dMdm9pZCo+KG9mZnNldCksIHRydWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCkKIHsKLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBjYWxscyB3
aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBwcmV2aW91cyBy
ZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJ
WE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMg
Zml4ZWQsIGkuZS4sCisgICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQg
YmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAgICAgYXV0
byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgR0NHTGVudW0gZnJhbWVidWZmZXJU
YXJnZXQgPSBtX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZG
RVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgaWYgKGF0dHJzLmFudGlh
bGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CisgICAg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0
YXRlID0gbV9zdGF0ZTsKKyAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVh
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5n
SWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1fZmJvKTsKICAgICAgICAgZ2w6OkZs
dXNoKCk7CiAgICAgfQotICAgIGdsOjpSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YSk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJv
dW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQorICAgIG1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpOworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBk
YXRhKTsKKyAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKKyAgICBpZiAoYXR0cnMu
YW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAg
ICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX211bHRpc2FtcGxl
RkJPKTsKIAorICAgIGlmIChlcnJvcikgeworICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZh
aWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFj
ZSB0aGlzIGluIHRoZQorICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAg
dGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpC
R1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKG1f
c3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0
ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykpKQorICAgIGlmICghcmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAo
dHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJvdW5k
UmVhZEZCTyA9PSBtX2ZibyB8fCAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZC
TyA9PSBtX211bHRpc2FtcGxlRkJPKSkpCiAgICAgICAgIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4
ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihkYXRhKSk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAjZW5k
aWYKIH0KIAotCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21t
b24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pCkBAIC04OTgsMjAgKzkxOSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
CiAgICAgZ2w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0
YS5kYXRhKTsKIH0KIAotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJh
bmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5n
dGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGdsOjpNYXBCdWZmZXJSYW5nZSh0
YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwotfQotCi1HQ0dMYm9vbGVhbiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQotewotICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAg
IHJldHVybiBnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIEdD
R0x2b2lkKiBwdHIgPSBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVm
U2l6ZSwgR3JhcGhpY3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisg
ICAgICAgIHJldHVybjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7
CisgICAgaWYgKCFnbDo6VW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRh
cmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGlu
dHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpCkBAIC0xMDA4LDE0ICsxMDI1LDE1
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsCiAgICAgY29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMdm9pZCo+KG9mZnNldCksIDApKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3Rv
cjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZl
Y3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBW
ZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7CiAgICAgQVNT
RVJUKHByb2dyYW0pOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZv
cm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRh
KCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5h
bWUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0xlbnVtIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRh
cmdldCkKQEAgLTIxMDEsMjIgKzIxMTksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAg
IHJldHVybiBnbDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBnbDo6R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVl
LmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7
Ci19Ci0KIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjM5MiwxMiArMjM5NCwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiAgICAgZ2w6OkVuZFF1
ZXJ5KHRhcmdldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5
T2JqZWN0dWl2KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHBhcmFtcykK
K0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKEdDR0x1
aW50IGlkLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMdWludCB2YWx1ZSA9IDA7CiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6Okdl
dFF1ZXJ5T2JqZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgMSwgbnVs
bHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIC8vIFRyYW5zZm9ybSBGZWVk
YmFjayBGdW5jdGlvbnMKQEAgLTI4MzksMjAgKzI4NDIsMjQgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW4KICAgICBnbDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpCitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NH
TGZsb2F0IHZhbHVlID0gMC5mOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJmdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUpCiB7CisgICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6
R2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRy
LCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBm
bGFncykKQEAgLTI4OTUsMTIgKzI5MDIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAg
ICBnbDo6V2FpdFN5bmMoc3luYywgZmxhZ3MsIHRpbWVvdXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lKQogewor
ICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFN5bmNp
dihzeW5jLCBwbmFtZSwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUpOworICAgIGdsOjpHZXRTeW5j
aXYoc3luYywgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNzM1OTdmNDc1M2QwYmVjMWQwMmU3ZDVmY2ZkYzY0M2E5ODNjODhk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFBM
QVRGT1JNKENPQ09BKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluOjp+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4o
KSA9IGRlZmF1bHQ7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWU4OGMyZjk5YjFjYWE1ODEx
N2M3MzkxMWE1MWI2N2RkZTYzMmJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUkFQSElD
U19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIklPU3VyZmFjZS5o
IgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBbiBpbnRl
cmZhY2UgZm9yIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVm
ZmVyaW5nIHN3YXAKKy8vIGNoYWluIG9mIElPU3VyZmFjZXMuCisvLyBUaGUgaW1wbGVtZW50b3Ig
d2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlzcGxheS4KKy8vIFRoZSBjbGll
bnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFjZSBhbmQgd2lsbCByZWNlaXZl
IHRoZSBtZXRhZGF0YQorLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZhY2UgaGFzIGJlZW4gZGlzcGxh
eWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vzc2FyaWx5CisvLyBiZSBhYmxl
IHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1c2UuCisvLyBFeGFtcGxlIHVz
ZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2UgYmluZGluZyBhcyB0aGUgbWV0
YWRhdGEuIFRoaXMgd2F5CisvLyB3aGVuIHRoZSBkaXNwbGF5IGNsaWVudCBpcyBkb25lIHdpdGgg
dGhlIElPU3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1c2luZworLy8g
dGhlIGV4aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVyIHJlY3ljbGUg
bG9naWMuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4oKTsKKyAgICBzdHJ1Y3QgQnVmZmVyIHsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4K
KyAgICAgICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OyAvLyBQcm9kdWNlciBzcGVjaWZpYyBt
ZXRhZGF0YSBoYW5kbGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCisgICAgfTsKKyAgICAvLyBSZXR1
cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMgYnVmZmVyLgor
ICAgIC8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hpcCBvZiB0aGUg
Y29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhlCisgICAgLy8g
dGltZSBvZiB0aGUgY2FsbC4KKyAgICAvLyBSZXR1cm5zIGVpdGhlcjoKKyAgICAvLyAtIEVtcHR5
IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVkLgorICAgIC8vIC0gQnVmZmVy
IHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRsZSBpZiB0aGUg
cmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKKyAgICAvLyAgIGJ1dCB0aGUgc3VyZmFjZSBp
cyBzdGlsbCBpbiB1c2UuCisgICAgLy8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCisgICAgdmlydHVh
bCBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpID0gMDsKKworICAgIC8vIFByZXBhcmVzIHRoZSB0YXJn
ZXQgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgdHJh
bnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVm
ZmVyYC4KKyAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsKKworICAgIC8vIERl
dGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVy
IG1ldGFkYXRhIGhhbmRsZS4KKyAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJl
ZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUg
Y2FsbGluZworICAgIC8vIHRoaXMuCisgICAgdmlydHVhbCB2b2lkKiBkZXRhY2hDbGllbnQoKSA9
IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29jb2EubW0KaW5kZXggMmUxYzc5OWU4Mjg1M2IzMjBiOGNlZGRkNGE2ZmU1ZTUwNGE5ZDg5Yy4u
NDg5ZTQ1ZmNjZTYzYmQ4NTU4N2E0ODMyODk4ZDkzMjQxMWNlOWYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBv
cnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xF
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0
ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0
YXRpYyBFR0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JW
ZXJzaW9uID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5
IGRpc3BsYXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1
cHBvcnQgPSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRo
Vm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJv
Y2VzcygpKTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBw
b3J0KSB7CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xh
dGlsZSBwbGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2lu
Y2UgY2xpZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFs
IGNvbnRleHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAg
IGlmIChHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNU
b29NYW55Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7
CiAKICAgICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hh
cmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8g
aG9zdFdpbmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmhvc3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQu
Y29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlv
bigpLCAmc2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygp
LCBob3N0V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0
LnB0cigpLCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JH
UFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51
bGxwdHIsIHN3YXBDaGFpbikpOworfQorCiAjaWYgUExBVEZPUk0oTUFDKSAvLyBGSVhNRTogVGhp
cyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+
LgogCiBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0
T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9SZWdpc3RyeUdQVUlEIHBy
ZWZlcnJlZEdQVUlEKQpAQCAtMjA0LDggKzIxMCw4IEBAIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVn
aXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVs
CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMs
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCi0gICAg
OiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCitH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBE
ZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBzaGFyZWRDb250ZXh0KQogewogICAgIG1faXNGb3JXZWJH
TDIgPSBhdHRycy5pc1dlYkdMMjsKIApAQCAtMjkzLDI2ICsyOTksMjggQEAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHQKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgZ2w6OkVuYWJsZShH
cmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgpOwogCisgICAg
VmVjdG9yPEFTQ0lJTGl0ZXJhbCwgND4gcmVxdWlyZWRFeHRlbnNpb25zOworICAgIGlmIChtX2lz
Rm9yV2ViR0wyKSB7CisgICAgICAgIC8vIEZvciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1ZXJpZXMg
dG8gd29yay4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX29jY2x1
c2lvbl9xdWVyeV9ib29sZWFuIl9zKTsKKyAgICB9CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRl
bnNpb25zKCk7Ci0KICAgICBpZiAoIW5lZWRzRUFHTE9uTWFjKCkpIHsKLSAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZXF1aXJlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAg
ICAgICJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSIsIC8vIEZvciBJT1N1cmZhY2UtYmFja2Vk
IHRleHR1cmVzLgotICAgICAgICAgICAgIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIs
IC8vIEZvciBjcmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCi0gICAg
ICAgIH07Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHJlcXVpcmVkRXh0ZW5zaW9ucyk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFleHRlbnNpb25z
LnN1cHBvcnRzKHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSkpIHsKLSAgICAgICAgICAgICAgICBMT0co
V2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCByZXF1aXJlZEV4dGVuc2lv
bnNbaV0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRm9yIElPU3VyZmFj
ZS1iYWNrZWQgdGV4dHVyZXMuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdM
X0FOR0xFX3RleHR1cmVfcmVjdGFuZ2xlIl9zKTsKKyAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRo
ZSBFR0wgc3VyZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNp
b25zLmFwcGVuZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHJlcXVpcmVkRXh0
ZW5zaW9uc1tpXSk7CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRB
TFlTVCkKKyAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7Cisg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAg
aWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgIExPRyhX
ZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIGV4dGVuc2lvbi5jaGFyYWN0
ZXJzKCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGV4dGVuc2lv
bnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8v
IEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgTUFDQ0FUQUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3Rl
cHMgYXMgd2VsbCwgYnV0IHRoYXQKICAgICAvLyB3b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNj
cmVlbk1hYyBjb2RlIHRvIGJlIGV4cG9zZWQgdG8gQ2F0YWx5c3QgdG9vLgpAQCAtMzMxLDEzICsz
MzksMTcgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hh
bmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAotICAgIC8vIENyZWF0ZSB0aGUgV2ViR0xMYXllcgor
ICAgIGlmIChzd2FwQ2hhaW4pCisgICAgICAgIG1fc3dhcENoYWluID0gc3dhcENoYWluOworICAg
IGVsc2UgewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBtX3dlYkdM
TGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7
CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBM
YXllciJdOwogI2VuZGlmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBt
X3N3YXBDaGFpbiA9ICZbbV93ZWJHTExheWVyIHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8g
Q3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIu
CiAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CkBA
IC00MDYsMTMgKzQxOCwxMiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKCkKICAgICAgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKQog
ICAgICAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdpbmdC
dWZmZXJGQk8pOwogICAgIH0KLSAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKKyAgICBp
ZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2Uo
bV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKTsKLSAgICBpZiAobV93ZWJHTExh
eWVyKSB7Ci0gICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3lj
bGVCdWZmZXJdOworICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4tPnJl
Y3ljbGVCdWZmZXIoKTsKICAgICAgICAgaWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAg
ICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhh
bmRsZSk7Ci0gICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBbbV93ZWJHTExheWVyIGRldGFj
aENsaWVudF07CisgICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi0+ZGV0
YWNoQ2xpZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50c0hhbmRsZSkKICAgICAgICAgICAgIEVH
TF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIGNvbnRlbnRzSGFuZGxlKTsKICAgICB9CkBA
IC01NzUsMTEgKzU4NiwxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBl
RGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogICAgICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0g
RUdMX05PX1NVUkZBQ0U7CiAgICAgfQogICAgIC8vIFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQg
YnVmZmVyIG5vdywgYmVjYXVzZSBpdCBtb3N0IGxpa2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBh
dCB0aGUgdGltZSBpdCB3aWxsIGJlIHJldXNlZC4KLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0g
W21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0g
bV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFu
ZGxlKQogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1
ZmZlci5oYW5kbGUpOwogICAgIHJlY3ljbGVkQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICBy
ZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKK30KIAorYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKQoreworICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5
KCkpOwogICAgIGF1dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwog
ICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM3LDcgKzY1Myw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycygp
IGNvbnN0CiAgICAgLy8gZm9yIE9wZW5HTCB0byBkZWNpZGUgd2hpY2ggR1BVIGlzIGNvbm5lY3Rl
ZCB0byBhIGRpc3BsYXkgKG9ubGluZS9vZmZsaW5lKS4KICAgICAvLyBPcGVuR0wgd2lsbCB0aGVu
IGNvbnNpZGVyIGFsbCBHUFVzLCBvciByZW5kZXJlcnMsIGFzIG9mZmxpbmUsIHdoaWNoIG1lYW5z
CiAgICAgLy8gYWxsIG9mZmxpbmUgcmVuZGVyZXJzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVu
IGZpbmRpbmcgYSBwaXhlbCBmb3JtYXQuCi0gICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUg
d2lsbCBzdGlsbCBiZSBhIFdpbmRvd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKKyAgICAvLyBJbiBX
ZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZHdTZXJ2ZXIgY29ubmVjdGlv
biwgYW5kCiAgICAgLy8gbV9kaXNwbGF5TWFzayB3aWxsIG5vdCBiZSBzZXQgaW4gdGhpcyBjYXNl
LgogICAgIGlmIChwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC02ODMsMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiAgICAgLy8gVGhlIElPU3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJv
bSBvdGhlciBncmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZsdXNoIEdMIGNvbW1hbmRzLgogICAgIGds
OjpGbHVzaCgpOwogCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVj
eWNsZUJ1ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5
Y2xlQnVmZmVyKCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9k
aXNwbGF5QnVmZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBbbV93ZWJHTExheWVy
IHByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOiB7V1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJC
YWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcn1dOworICAgIG1fc3dhcENoYWluLT5wcmVz
ZW50KHsgV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXJCYWNraW5nKSwgbV9kaXNwbGF5QnVmZmVyUGJ1
ZmZlciB9KTsKICAgICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAK
ICAgICBib29sIGhhc05ld0JhY2tpbmcgPSBmYWxzZTsKQEAgLTcwMCw3ICs3MTYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAKICAgICAvLyBF
cnJvciB3aWxsIGJlIGhhbmRsZWQgYnkgbmV4dCBjYWxsIHRvIG1ha2VDb250ZXh0Q3VycmVudCgp
IHdoaWNoIHdpbGwgbm90aWNlIGxhY2sgb2YgZGlzcGxheSBidWZmZXIuCiAgICAgaWYgKCFoYXNO
ZXdCYWNraW5nKQotICAgICAgICByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICAg
ICAgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKIAogICAgIG1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDE0MDE1YjdiMGYzNGJiMjhiZTM0
NTUwOWM3NDI5ZTMxZGFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIgorI2ltcG9ydCAiV2ViR0xMYXllci5oIgorI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQorewor
ICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXll
ciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8g
Y29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBb
bV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOworI2VuZGlmCisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworfQorCisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV93ZWJHTExheWVyLmdldCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQorR3JhcGhpY3NDb250ZXh0R0xDViogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmFzQ1YoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK0dyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6cGxhdGZvcm1Td2FwQ2hhaW4oKQoreworICAgIHJldHVybiBbbV93ZWJHTExheWVy
IHN3YXBDaGFpbl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDE0YjAxZTcwNWYyMDUzMDFj
N2M5N2NmNjZlNzFhMDhiYmY0MWU3MDUuLjdmZTg4YTJmZjRjZTBmNTU5ZDU5ZGMxY2Q5NTJhM2E3
ZWE4ODA5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLmgKQEAgLTIzLDUyICsyMywyMiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaW1wb3J0ICJJT1N1cmZhY2UuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNp
bXBvcnQgPG1lbW9yeT4KICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1zdHJ1Y3QgV2ViR0xMYXllckJ1ZmZlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsgLy8gVGhlIGFjdHVhbCBjb250ZW50cy4KLSAgICB2
b2lkKiBoYW5kbGUgeyBudWxscHRyIH07IC8vIENsaWVudCBzcGVjaWZpYyBtZXRhZGF0YSBoYW5k
bGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuCi19OwotfQotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogCiAvLyBBIGxheWVyIGNsYXNzIGltcGxlbWVudGluZyBmcm9udCBidWZm
ZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVmZmVyaW5nIHN3YXAKIC8vIGNoYWluIG9mIElPU3VyZmFj
ZXMuCi0vLyBUaGUgbGF5ZXIgd2lsbCBvd24gdGhlIElPU3VyZmFjZXMgaXQgdXNlcyBmb3IgZGlz
cGxheS4KLS8vIFRoZSBjbGllbnQgbWF5IGF0dGFjaCBtZXRhZGF0YSB0byBlYWNoIElPU3VyZmFj
ZSBhbmQgd2lsbCByZWNlaXZlIHRoZSBtZXRhZGF0YQotLy8gYmFjayBvbmNlIHRoZSBJT1N1cmZh
Y2UgaGFzIGJlZW4gZGlzcGxheWVkLiBIb3dldmVyLCB0aGUgY2xpZW50IG1heSBub3QgbmVjY2Vz
c2FyaWx5Ci0vLyBiZSBhYmxlIHRvIG9idGFpbiB0aGUgSU9TdXJmYWNlIGl0c2VsZiBmb3IgcmV1
c2UuCi0vLyBFeGFtcGxlIHVzZSBvZiB0aGUgbWV0YWRhdGEgaXMgdG8gdXNlIEVHTFN1cmZhY2Ug
YmluZGluZyBhcyB0aGUgbWV0YWRhdGEuIFRoaXMgd2F5Ci0vLyB3aGVuIHRoZSBXZWJHTExheWVy
IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRp
bnVlIHVzaW5nCi0vLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBi
dWZmZXIgcmVjeWNsZSBsb2dpYy4KIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKIAog
LSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNv
bnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwogCiAtIChDR0ltYWdlUmVmKWNvcHlJ
bWFnZVNuYXBzaG90V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOwog
Ci0vLyBSZXR1cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQgY29udGVudHMg
YnVmZmVyLgotLy8gQ2xpZW50IG1heSByZWNpZXZlIGJhY2sgYWxzbyB0aGUgb3duZXJzaGlwIG9m
IHRoZSBjb250ZW50cyBzdXJmYWNlLCBpbiBjYXNlIGl0IGlzIGF2YWlsYWJsZSBhdCB0aGUKLS8v
IHRpbWUgb2YgdGhlIGNhbGwuCi0vLyBSZXR1cm5zIGVpdGhlcjoKLS8vIC0gRW1wdHkgYnVmZmVy
IGlmIG5vIGJ1ZmZlciBoYXMgYmVlbiBzdWJtaXR0ZWQuCi0vLyAtIEJ1ZmZlciB3aXRoIGVtcHR5
IHN1cmZhY2UgYW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1
ZmZlciB3YXMgYXZhaWxhYmxlCi0vLyAgIGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2Uu
Ci0vLyAtIFN1cmZhY2UgYW5kIGhhbmRsZS4KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIp
cmVjeWNsZUJ1ZmZlcjsKLQotLy8gUHJlcGFyZXMgdGhlIGxheWVyIGZvciBkaXNwbGF5IHdpdGgg
YSBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2Yg
dGhlIElPU3VyZmFjZSBzdXJmYWNlIGluIHRoZSBgYnVmZmVyYC4KLS0gKHZvaWQpcHJlcGFyZUZv
ckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpYnVmZmVyOwot
Ci0vLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRz
IGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCi0vLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZl
IGJlZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZv
cmUgY2FsbGluZwotLy8gdGhpcy4KLS0gKHZvaWQqKWRldGFjaENsaWVudDsKKy0gKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluOwogCiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLm1tCmluZGV4IGM4ZjRlNzlmNzMxMmVhYTZhYjA0NDY4MDgzZWE4ZDBjOGJlZmEzYmMu
LjM4NTk3ZTRhOGY2MzNhNWVlNWRiNzQ5MzMwMjJkYzIzN2ZlN2U0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAt
MzIsMTMgKzMyLDM5IEBACiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIlBs
YXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKwor
Y2xhc3MgV2ViR0xMYXllclN3YXBDaGFpbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2Vi
R0xMYXllclN3YXBDaGFpbihXZWJHTExheWVyKiBsYXllcikgIDogbV9sYXllcihsYXllcikgeyB9
OworICAgIH5XZWJHTExheWVyU3dhcENoYWluKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworICAgIHZv
aWQgcHJlc2VudChCdWZmZXIpIG92ZXJyaWRlOworICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKKyAg
ICAgICAgICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKKyAgICAgICAg
ICAgICAgICBtX3NwYXJlQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKG1fc3BhcmVCdWZmZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorICAgIHZvaWQqIGRldGFjaENsaWVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9
IG1fZGlzcGxheUJ1ZmZlci5oYW5kbGU7CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUg
PSBudWxscHRyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBXZWJDb3JlOjpJ
T1N1cmZhY2UqIGRpc3BsYXlTdXJmYWNlKCkgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLnN1cmZh
Y2UuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgQnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBC
dWZmZXIgbV9zcGFyZUJ1ZmZlcjsKKyAgICBXZWJHTExheWVyKiBjb25zdCBtX2xheWVyOworfTsK
IAogQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIgewotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJC
dWZmZXIgX2NvbnRlbnRzQnVmZmVyOwotICAgIFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIgX3Nw
YXJlQnVmZmVyOwotCiAgICAgQk9PTCBfcHJlcGFyZWRGb3JEaXNwbGF5OworICAgIE9wdGlvbmFs
PFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2FwQ2hhaW47CiB9CiAKIC0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQpAQCAtNDcsNiArNzMsNyBAQAogICAgIHNlbGYudHJhbnNmb3JtID0g
Q0FUcmFuc2Zvcm0zRElkZW50aXR5OwogICAgIHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50
c09wYXF1ZTsKICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOworICAg
IF9zd2FwQ2hhaW4uZW1wbGFjZShzZWxmKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNzMs
MzAgKzEwMCwyMSBAQAogICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KLQotLSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgcmVjeWNsZUJ1ZmZl
cgorLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2Fw
Q2hhaW4KIHsKLSAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKLSAgICAgICAgaWYgKF9z
cGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCi0gICAgICAgICAgICBfc3BhcmVCdWZmZXIu
c3VyZmFjZS5yZXNldCgpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShfc3BhcmVCdWZmZXIpOwot
ICAgIH0KLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBfc3dhcENoYWluLnZhbHVlKCk7CiB9
CiAKLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6KFdlYkNvcmU6OldlYkdM
TGF5ZXJCdWZmZXIpIGJ1ZmZlcgorLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheQogewotICAgIEFT
U0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIF9zcGFyZUJ1ZmZlciA9IFdURk1vdmUo
X2NvbnRlbnRzQnVmZmVyKTsKLSAgICBfY29udGVudHNCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0g
WUVTOwogfQogCiAtICh2b2lkKWRpc3BsYXkKIHsKLSAgICBpZiAoX2NvbnRlbnRzQnVmZmVyLnN1
cmZhY2UgJiYgX3ByZXBhcmVkRm9yRGlzcGxheSkgewotICAgICAgICBzZWxmLmNvbnRlbnRzID0g
X2NvbnRlbnRzQnVmZmVyLnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpOworICAgIGlmIChfc3dh
cENoYWluLT5kaXNwbGF5U3VyZmFjZSgpICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKKyAgICAg
ICAgc2VsZi5jb250ZW50cyA9IF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCktPmFzTGF5ZXJD
b250ZW50cygpOwogICAgICAgICBbc2VsZiByZWxvYWRWYWx1ZUZvcktleVBhdGg6QCJjb250ZW50
cyJdOwogICAgIH0KICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7CkBAIC0xMDYsMTMg
KzEyNCwxNCBAQAogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBOTzsKIH0KIAotLSAodm9pZCop
IGRldGFjaENsaWVudAorQGVuZAorCit2b2lkIFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnByZXNlbnQo
QnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBBU1NFUlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAg
ICB2b2lkKiByZXN1bHQgPSBfY29udGVudHNCdWZmZXIuaGFuZGxlOwotICAgIF9jb250ZW50c0J1
ZmZlci5oYW5kbGUgPSBudWxscHRyOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgQVNTRVJUKCFt
X3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgIG1fc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKG1fZGlz
cGxheUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAg
IFttX2xheWVyIHByZXBhcmVGb3JEaXNwbGF5XTsKIH0KLUBlbmQKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQppbmRleCAzOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi45OWFk
OTE2NTI1OTE4NzNlMGU4M2ZlODc4OTI1ZWNhMjMzYTFhMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0zNiw2ICszNiw3IEBACiAj
aW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgi
CiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAi
UGxhdGZvcm1JbWFnZUJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlR3JhcGhpYy5oIgogI2ltcG9y
dCA8Q29yZUltYWdlL0NJQ29udGV4dC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRl
eCA3ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi5hZGQ1ZjM1MmFlNGRl
NmI2ZDVkYzE5MWU2NzNiNWFhZmE1NmRlOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5H
TChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dM
T3BlbkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9u
ZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwg
bG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTYsNyArNTYsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3Jj
WTAsIGxvbmcgc3JjWDEsIGxvbgogICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogI2VuZGlmCiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3Zv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAjZW5k
aWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEcKICNlbmRpZgog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4
NjhiNTQ5OTNhNDQ0NDlhOC4uNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0Mzdi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wg
bWV0aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kw
LCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRz
dFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVy
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGlu
dGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGU7CkBAIC01Miw5ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBv
cEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9u
ZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2
MWZiYTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYi4uYjc4OTYwY2I0ODJlNGVmMmFiOThl
NDAzOTJhNjM1YmE3ZmZiN2JkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bi5jcHAKQEAgLTM2NiwxMSArMzY2LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTHMKICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50
LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgdm9pZCAqLCBib29sKQot
ewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAq
KQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNm
ZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhjNjQuLjZhM2EzOWZlM2ExYmE1YmQyNTk3NzE1ODk0
NzU2MWNjYWQ1YWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAg
LTkzLDcgKzkzLDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgs
IGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFk
aW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAKaW5kZXggMzZjM2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMy4u
ZTFlNDNiZjUzOTI4ODVhMjRmYmIzM2NiMjZiNWY2ZTQ5MWZiZTA3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMiBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9u
ZyB0YXJnZQogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVm
ZmVyKGxvbmcgLyogc3JjWDAgKi8sIGxvbmcgLyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8s
IGxvbmcgLyogc3JjWTEgKi8sIGxvbmcgLyogZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxv
bmcgLyogZHN0WDEgKi8sIGxvbmcgLyogZHN0WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAq
LywgdW5zaWduZWQgbG9uZyAvKiBmaWx0ZXIgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xl
bnVtKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDRwogICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwKICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpLCBwcmltY291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhB
dHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKQogewogICAgIGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1YjczOThk
MDk5MmVkMTQ3NjdmMDc2N2UwNGI0NjQxNjI4My4uNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNmOTlh
N2RmYzJmNzhmYjRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDggKzc1
LDggQEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVy
KGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0
WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFz
aywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNh
bXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xp
bnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdD
R0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnNlcnRF
dmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFy
a2VyRVhUKHZvaWQpIG92ZXJyaWRlOwpAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lk
cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92
ZXJyaWRlOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAogICAgIGludCBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IGMyNTViMGMxMmY0ZmNiZmE0NmRiMDJkNTVjODBiNGNiNzdkMTdiNzAuLjEw
MzU2ODhkMWNiZTliODBkMzkxMjI0NzhiZWRkOGQ5OGY2NTQ0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC01OCw2ICs1OCw5IEBACiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKK30K
ICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmIFVTRShOSUNPU0lBKQpAQCAtODYsNyAr
ODksNyBAQCB0eXBlZGVmIFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFt
ZUhhc2g7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMUHJpdmF0ZTsKIAotY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVi
bGljIEdyYXBoaWNzQ29udGV4dEdMCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywg
SG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbik7CkBAIC05
NCw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBS
ZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCYgc2hhcmVkQ29udGV4dCk7CisgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiopOworCiAgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb250ZXh0T2JqOyB9CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0
Zm9ybVRleHR1cmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQpAQCAtMTkxLDcgKzE5Niw3IEBAIHB1
YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5p
Zm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZv
JikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQs
IEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAg
IHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNp
emVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJz
KTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1
ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBA
IC0yMTksOCArMjI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAg
ICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVy
dGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAK
ICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAg
LTIzNiw3ICsyMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xm
bG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2
b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkg
ZmluYWw7CkBAIC0zMTcsMTIgKzMyMSwxMCBAQCBwdWJsaWM6CiAjaWYgIVVTRShBTkdMRSkKICAg
ICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dM
ZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwogICAgIHZv
aWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNl
dCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5n
dGgpOwotICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0
LCBHQ0dMdWludCBsZW5ndGgpOwogI2VuZGlmCiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShH
Q0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFk
T2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7
CiAKLSAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSBmaW5hbDsK
LSAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAg
IHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGJsaXRGcmFtZWJ1
ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50
IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dM
aW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKICAg
ICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IGxheWVyKSBmaW5hbDsKQEAgLTM4NCw3ICszODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
bmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0
UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0
UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOworICAgIEdD
R0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1wbGVyKCkgZmlu
YWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmlu
YWw7CkBAIC0zOTMsOCArMzk1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRl
cmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOwogICAgIC8vIGdl
dFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5h
bDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGZsb2F0
IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMc3luYyBm
ZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOwog
ICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykgZmluYWw7CkBAIC00MDMsNyArNDA1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFn
cywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKICAg
ICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGF0IHRoZSBXZWJHTCBsZXZlbCBp
ZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3QuCi0gICAgdm9pZCBnZXRTeW5jaXYoR0NH
THN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUp
IGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBm
aW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3Qg
aWQpIGZpbmFsOwpAQCAtNDIwLDcgKzQyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRCdWZm
ZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0
IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKICAg
ICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBnZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUu
CiAgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpIGZpbmFsOwotICAg
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxH
Q0dMaW50PiYgcGFyYW1zKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5p
Zm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1
bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgR0NHTHVpbnQgZ2V0
VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1Bh
cmFtZXRlcgpAQCAtNDI5LDExICs0MzEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKIAot
I2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50
IGRzdE9mZnNldCk7Ci0jZW5kaWYKLQogICAgIC8vIEhlbHBlciBtZXRob2RzLgogCiAgICAgdm9p
ZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJ
bnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29u
dGV4dCYpOwpAQCAtNTE1LDcgKzUxMiwxMSBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gIVVTRShBTkdM
RSkKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIsIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxwdHIpOworI2Vsc2UKICAgICBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBE
ZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CisjZW5kaWYKIAogICAgIC8vIENhbGxlZCBv
bmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBP
cGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRz
IG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCkBAIC01MjgsNiAr
NTI5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNo
YXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJp
YnV0ZXMoKTsKICAgICAKKyAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJl
YWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKKwogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQg
ZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwog
ICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIApAQCAtNTQ4LDEwICs1NTEsMTMgQEAgcHJpdmF0
ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygp
IGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9v
bCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERp
c3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZv
aWQqIHBidWZmZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07Cisg
ICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRyYXdz
IHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4
IDYzNTZmODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2ODgxM2Y2YjkuLjYyOTgwMzg4YjY1MjQ3
OWNjYjQzMzFjMjVmZmVlYmI2NmM2Y2I1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgRXh0ZW5zaW9uc0dMJiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
blBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCkBAIC00
NDcsNyArNDQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
ICAgICA6OmdsRmx1c2goKTsKICAgICB9Ci0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuZGF0YSk7CiAgICAgaWYgKGF0dHJzLmFu
dGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAg
ICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
UiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4ODY3MjAzOWFlYTRmNTk5OTZlNGQ5NGUx
YzFhMGZlLi43YjJlYTA0YTIwOTk1NjVjNzkwZWE1N2M2NjdiMGQ5YzYwYWY1NWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTIwMjksMjIg
KzIwMjksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiA6OmdsR2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sIG1hcHBlZE5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKLXsKLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0
VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0
cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRyIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0y
Mjc4LDE5ICsyMjYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdl
MkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAg
IGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwg
cHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1cygpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7
CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNv
dW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkudmVy
dGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBIQVZFKE9Q
RU5HTF80KSAmJiBFTkFCTEUoV0VCR0wyKQpAQCAtMjMzNSw0MiArMjMxOSwyNSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xpbnRwdHIsCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9m
ZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBs
ZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRh
KQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNCeXRl
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRz
dE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19Ci0KICNpZiBIQVZFKE9QRU5H
TF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCi17CiAgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gOjpn
bE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdD
R0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIDo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpOwotfQorICAg
ICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IDo6Z2xNYXBCdWZmZXJSYW5nZSh0YXJn
ZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklU
KTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShkYXRhLmRhdGEs
IHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoITo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpKQor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogI2Vsc2UKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJS
YW5nZShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTHNpemVpcHRyLCBHQ0dMYml0ZmllbGQpCi17
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisgICAgVU5V
U0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CisjZW5kaWYK
IH0KIAotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdD
R0xlbnVtKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBz
cmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGlu
dCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ss
IEdDR0xlbnVtIGZpbHRlcikKIHsKQEAgLTI3MTIsMTEgKzI2NzksMTEgQEAgUGxhdGZvcm1HTE9i
amVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmEKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkKK0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1l
KQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsK
LSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0Zm9ybUdM
T2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTYW1wbGVyKCkKQEAgLTI3NTYs
MTggKzI3MjMsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxlclBhcmFt
ZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4KICAgICBVTlVTRURfUEFSQU0o
cGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxl
clBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwLmY7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCisKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7
CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAg
IHJldHVybiAwOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VT
eW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjgwNiwxMiAr
Mjc3NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dMc3lu
YyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIFVOVVNFRF9QQVJBTSh0aW1l
b3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xz
eW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFs
dWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBz
eW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAgICAgVU5V
U0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAtMjg5MSwy
MSArMjg1OCwyMyBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiB7IH07CiB9
CiAKLSNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5h
bWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkK
IHsKKyAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7
CisjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKICAgICBBU1NFUlQocHJv
Z3JhbSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1l
LCBwYXJhbXMuZGF0YSgpKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1
bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3Vs
dC5kYXRhKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAgIFVOVVNF
RF9QQVJBTShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrTmFtZSk7Ci0K
ICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjkxMyw3ICsyODgyLDYgQEAgU3RyaW5nIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3IKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VEX1BBUkFN
KHVuaWZvcm1CbG9ja0luZGV4KTsKLQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCkBA
IC0yOTIzLDI3ICsyODkxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9y
bUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0wKICAgICBVTlVTRURf
UEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tC
aW5kaW5nKTsKIH0KLSNlbHNlCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3Rp
dmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiwgR0NH
TGVudW0sIFZlY3RvcjxHQ0dMaW50PiYpCi17Ci19Ci0KLUdDR0x1aW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBT
dHJpbmcmKQotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVp
bnQpCi17Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVp
bnQsIEdDR0x1aW50KQotewotfQotI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5KTsKQEAgLTI5NTQsMTggKzI5MDMsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVT
RURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9Q
QVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGludD4gcGFyYW1zKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAyM2Q3NGZhODBkNzA3OTFiZTYw
MGRmNThlNzU2MTczMzk2YWE1NTA1Li5hMjIxODBiNGJmNGNlMTBmMTg1MjEyNDAxMWU4OGE0NDI3
M2I0MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC00
MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZv
aWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsRmx1c2goKTsKICAg
ICB9CiAKLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgZGF0YS5kYXRhKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBt
X3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKQEAgLTEzMCw3
ICsxMzAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25z
dCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZl
ciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgICAgICBpZiAoc3VwcG9ydFBhY2tl
ZERlcHRoU3RlbmNpbEJ1ZmZlcikgewogICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVm
ZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJV
RkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5z
dGVuY2lsKQogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBt
X2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVw
dGgpCkBAIC0xMzgsMTIgKzEzOCwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7CiAgICAgICAgICAgICAgICAg
ICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVy
KTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9JTkRFWDgs
IHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQs
IEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAg
OjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FU
VEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRo
QnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQVEhfQ09N
UE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25z
LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2Ft
cGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAg
ICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBH
TF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDg4ZTE1
MWIxMjIyNGZlYmNjODkzYjUzZDY4NWUzZWMxYjAxMGNkNDUuLjJiODk2YTlhYmFjMGUxMDc0YjFl
MTM1MTkzMjA0OWFiZTc2ODAzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTIzLDYgKzEyMyw3
IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MKICAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAorICAgIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIKQEAgLTIyMSw2ICsyMjIsNyBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbgogCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZTUxY2FlZDIxZTE4NmNmMmExNzNjYjhhMzMzMTJiZTBiMzA0YmIwMC4uYmNlMzM4YzRiNDRm
MDc5ZTgwZWQwZDQ2ZDY3MjI5M2MyMjdlNTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiArMjAsNyBAQCAkKEpBVkFTQ1JJUFRD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5z
Yi5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTM0LDYgKzEzNSw3IEBAICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggZTg4YjJjMjFmYTcxN2M3N2QyMzAyY2I1MThiYTRhZDNlZGUyNTc0
YS4uMTVmM2MyM2NjZTA1ZTJkMzJlNWVlYjY5MjQwYzY1NDhhOWJkMTYwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNzgsNiArMTc4
LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjgxNDg1NWZm
OWQyM2FmMGE3N2U1ZmRhNmRmZDJmZDU1MDk3NmY2OS4uMzUzZDc2ZWQxYTVmMjA5ZWVhM2Y0Nzgz
MWUwNmNhOGRkMjEwNDNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTcxLDYg
KzE3MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAogCVdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mg
XAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAogCVdl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCkBAIC0yMjcsNiAr
MjI4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzIFwKIAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAogCUdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCisJR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMGUyZTg4MzJiMWUyMGYx
ZTBmMzE5ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2UxNGM1MGI3NDE5OTNkNmYzNWE1YTk1
ZjVhZmQ4MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiArNjQsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
QkdMKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisjZW5kaWYKKwogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKQEAgLTI5MCw2
ICsyOTQsMjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRfVU5VU0VEKGZv
dW5kLCBmb3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9y
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IH0pOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29u
dGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAu
cmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChm
b3VuZCwgZm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQbGF5aW5nTWFu
YWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMjY3
OGRiYzRlNWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4ZC4uNWFlZGZiYjRkMmNhYzdiNzY2
MGZmMDczNjA5ZDM3N2M2MDE1ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9u
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisK
ICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgpAQCAtMzksNiArNDAsMTEgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBHUFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBjbGFzcyBSZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTsKIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwpAQCAtMTE5LDYgKzEy
NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9p
ZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5m
byhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5m
byYmKTsKIApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7Ci0KKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFw
PEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5
UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTE5NGZiNGY2
MDg1ZDYyNGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1NGUxNjQ1OTViMGEzNjFkZmU0Yzc1
YmZmNDAxOGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDYg
KzI1LDEwIEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlz
cGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICAg
ICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9pZCBSZWxlYXNl
R3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlp
bmdJbmZvKCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5m
bykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFiYmZkZmI3YzI5NTc5YWFkODBkYzJmMTE4ZmRhYjY2NzY2ZjI5MGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgIVBMQVRGT1JNKENPQ09BKQorc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KyNlbmRpZgorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBS
ZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vh
a1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0
byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2Vp
dmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSwgKnRoaXMpOworICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsKKyNp
ZiBVU0UoQU5HTEUpCisgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmlu
ZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7CisgICAgU3RyaW5nIHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFC
TEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisjZW5kaWYKK30KKworUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCit7CisgICAgaWYg
KGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VS
ZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIudG9VSW50NjQoKSk7Cit9CisKK0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCitJ
UEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJldHVybiAm
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpkaWRDb21wb3NpdGUoKQoreworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpm
b3JjZUNvbnRleHRMb3N0KCkKK3sKKyNpZiBVU0UoQU5HTEUpCisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisjZW5kaWYKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cmVjeWNsZUNvbnRleHQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZp
Y2F0aW9uKCkKK3sKKyNpZiBVU0UoQU5HTEUpCisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisjZW5kaWYKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVz
aGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKK3sKKyAgICBpZiAod2lkdGggJiYg
aGVpZ2h0KQorICAgICAgICBtX2NvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CisgICAg
ZWxzZQorICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYg
ZXh0ZW5zaW9uKQoreworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoZXh0ZW5zaW9uKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bm90aWZ5
TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBtX2NvbnRleHQtPm1hcmtDb250ZXh0Q2hhbmdl
ZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkYjBjZjUxOGFiZjliYjI1YWIzMzZkZGRlMDM5OTkyNWFhMDVm
MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wp
CisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNlIFdU
RiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBHUFUgcHJvY2VzcyBz
aWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZXMgYWJvdXQgR3JhcGhp
Y3NDb250ZXh0R0wgY2FsbHMKKy8vIGFuZCBpc3N1ZXMgcmVhbCBHcmFwaGljc0NvbnRleHRHTCBj
YWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCisvLyBUaGUgaW1wbGVtZW50YXRp
b24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgIDogcHVibGlj
IElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgor
ICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkgb3ZlcnJpZGU7CisKKyAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CisKK3Byb3Rl
Y3RlZDoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+KTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVp
bnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gR3JhcGhpY3NDb250
ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRDb21wb3NpdGUoKSBmaW5hbDsK
KyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKKyAgICB2b2lkIHJlY3ljbGVDb250
ZXh0KCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9u
KCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHJl
c2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZvaWQgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChTdHJpbmcmJik7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5n
ZWQoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRp
c3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpID0g
MDsKKyNlbHNlCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworI2VuZGlmCisKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKKworICAgIFJlZjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWE3MTUyNGQ0MDgxOWJhMDMxMGNiNDIwMTM2MDc1
NjY4Nzg2ODU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjk0
IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVw
LXdlYmdsLiBEbyBub3QgZWRpdC4KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRl
ZCB7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNl
bmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JN
KENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwor
I2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24p
CisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorCisgICAgdm9pZCBTZXRGYWls
TmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90
IGVycm9yKQorICAgIHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBBY3RpdmVUZXh0dXJlKHVpbnQz
Ml90IHRleHR1cmUpCisgICAgdm9pZCBBdHRhY2hTaGFkZXIodWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3Qgc2hhZGVyKQorICAgIHZvaWQgQmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAs
IHVpbnQzMl90IGluZGV4LCBTdHJpbmcgbmFtZSkKKyAgICB2b2lkIEJpbmRCdWZmZXIodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZEZyYW1lYnVmZmVyKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRSZW5kZXJidWZmZXIodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFRleHR1cmUodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmxlbmRDb2xvcihmbG9hdCByZWQs
IGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIEJsZW5kRXF1
YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50
MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgdm9pZCBCbGVuZEZ1bmModWlu
dDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB2b2lkIEJsZW5kRnVuY1NlcGFy
YXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwg
dWludDMyX3QgZHN0QWxwaGEpCisgICAgdm9pZCBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQz
Ml90IHRhcmdldCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgQ2xlYXIodWludDMyX3QgbWFzaykKKyAgICB2b2lkIENsZWFyQ29sb3IoZmxvYXQgcmVkLCBm
bG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBDbGVhckRlcHRo
KGZsb2F0IGRlcHRoKQorICAgIHZvaWQgQ2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB2b2lk
IENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQor
ICAgIHZvaWQgQ29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weVRleElt
YWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGJvcmRlcikKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2
b2lkIENyZWF0ZUJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIENyZWF0ZUZyYW1lYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUHJvZ3JhbSgpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNoYWRlcih1aW50
MzJfdCBhcmcwKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDcmVhdGVUZXh0dXJlKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQ3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB2b2lkIERlbGV0ZUJ1ZmZlcih1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkK
KyAgICB2b2lkIERlbGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVJl
bmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlU2hhZGVyKHVpbnQzMl90
IGFyZzApCisgICAgdm9pZCBEZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBE
ZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB2b2lkIERlcHRoTWFzayhib29sIGZsYWcpCisg
ICAgdm9pZCBEZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHZvaWQgRGV0
YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBEaXNhYmxl
KHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJf
dCBpbmRleCkKKyAgICB2b2lkIERyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJz
dCwgaW50MzJfdCBjb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50cyh1aW50MzJfdCBtb2RlLCBp
bnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBF
bmFibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRW5hYmxlVmVydGV4QXR0cmliQXJyYXkodWlu
dDMyX3QgaW5kZXgpCisgICAgdm9pZCBGaW5pc2goKQorICAgIHZvaWQgRmx1c2goKQorICAgIHZv
aWQgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRh
Y2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAg
dm9pZCBGcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFj
aG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWludDMyX3QgYXJnMywgaW50MzJfdCBsZXZlbCkK
KyAgICB2b2lkIEZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgR2VuZXJhdGVNaXBt
YXAodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29s
IHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcy
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwg
U3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAt
PiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFN0cmluZyh1
aW50MzJfdCBuYW1lKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldElu
dGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdl
cjY0KHVpbnQzMl90IHBuYW1lKSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4KSAt
PiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFByb2dyYW1p
KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50
NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUpIC0+IChp
bnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbUluZm9M
b2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlckluZm9Mb2codWludDMyX3Qg
YXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNo
YWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNp
b25UeXBlKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZSwgR0NHTGlu
dCBwcmVjaXNpb24pIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJTb3VyY2UodWludDMy
X3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyaSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90
IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1pdih1aW50MzJfdCBw
cm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5p
Zm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1
ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRWZXJ0
ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDY0
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBIaW50KHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgbW9kZSkKKyAgICB2b2lkIElzQnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNFbmFibGVkKHVpbnQzMl90
IGNhcCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0ZyYW1l
YnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgSXNQcm9ncmFtKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgSXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1NoYWRlcih1aW50MzJfdCBh
cmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzVGV4dHVy
ZSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIExpbmVXaWR0aChmbG9hdCBhcmcwKQorICAgIHZvaWQgTGlua1Byb2dyYW0odWludDMyX3Qg
YXJnMCkKKyAgICB2b2lkIFBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFt
KQorICAgIHZvaWQgUG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRzKQorICAg
IHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFNhbXBs
ZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB2b2lkIFNjaXNzb3IoaW50
MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZv
aWQgU2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyBhcmcxKQorICAgIHZvaWQgU3Rl
bmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAg
dm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGlu
dDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2sodWludDMyX3Qg
bWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMy
X3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFp
bCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBTdGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBm
YWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAg
dm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0
IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgVW5pZm9ybTFmKGludDMyX3QgbG9jYXRp
b24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3JtMWZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtMWkoaW50MzJfdCBsb2Nh
dGlvbiwgaW50MzJfdCB4KQorICAgIHZvaWQgVW5pZm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtMmYoaW50MzJf
dCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFVuaWZvcm0yZnYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZv
cm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB2b2lkIFVu
aWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2
KQorICAgIHZvaWQgVW5pZm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHopCisgICAgdm9pZCBVbmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtM2koaW50MzJfdCBsb2NhdGlv
biwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB2b2lkIFVuaWZvcm0zaXYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZv
aWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3JtNGZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtNGkoaW50MzJfdCBsb2NhdGlv
biwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQg
VW5pZm9ybTRpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
IHYpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZv
cm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDRmdihpbnQzMl90
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFs
dWUpCisgICAgdm9pZCBVc2VQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWYWxpZGF0
ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjFmKHVpbnQzMl90
IGluZGV4LCBmbG9hdCB4KQorICAgIHZvaWQgVmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4g
dmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9h
dCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJQb2ludGVy
KHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFs
aXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFZpZXdwb3J0
KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB2b2lkIEJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWludDMy
X3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJEYXRhMSh1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZm
ZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBSZWFkblBpeGVsczAoaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQs
IHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgUmVhZG5QaXhlbHMxKGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhJbWFn
ZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9y
bWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQz
Ml90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBw
aXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHZvaWQgVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQz
Ml90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZv
aWQgQ29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdl
MkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt
YXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QXJy
YXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQs
IGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQz
Ml90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwg
aW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90
IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXkoKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0
ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBh
cmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0
ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weUJ1ZmZlclN1YkRhdGEodWludDMy
X3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQs
IHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0QnVmZmVy
U3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNp
emUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50
MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwg
aW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmls
dGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IGxheWVyKQorICAgIHZvaWQgSW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMpCisgICAgdm9pZCBJ
bnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgUmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMp
CisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHZvaWQgVGV4SW1hZ2UzRDAodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50
MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zm
c2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4U3ViSW1hZ2UzRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBk
ZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lk
IENvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDEo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9y
ZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJl
c3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJf
dCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lk
IENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQs
IGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBHZXRGcmFnRGF0
YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlv
biwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlmb3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVp
bnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2b2lkIFVuaWZvcm0zdWkoaW50MzJfdCBsb2Nh
dGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB2b2lkIFVu
aWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50
MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9pZCBVbmlmb3JtMXVpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9y
bTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0
YSkKKyAgICB2b2lkIFVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtNHVpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9y
bU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4MmZ2KGludDMy
X3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBk
YXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wg
dHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5p
Zm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4NGZ2KGlu
dDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQg
VmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50
MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGl2KHVpbnQzMl90IGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZl
cnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVp
bnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpdih1aW50MzJf
dCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZv
aWQgVmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWlu
dDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERy
YXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBl
bmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIERyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAg
dm9pZCBDbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVy
dWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1
ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1
ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3
YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHZvaWQgQ3JlYXRlUXVl
cnkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxl
dGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB2b2lkIElzUXVlcnkodWludDMyX3QgcXVlcnkp
IC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmVnaW5RdWVyeSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgRW5kUXVlcnkodWludDMy
X3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBw
bmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNhbXBsZXIoKSAtPiAo
dWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVTYW1wbGVy
KHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJc1NhbXBsZXIodWludDMyX3Qgc2FtcGxlcikg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kU2FtcGxlcih1
aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRl
cmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAg
dm9pZCBTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwg
ZmxvYXQgcGFyYW0pCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1w
bGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3Qg
cG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRmVu
Y2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MpIC0+ICh1aW50NjRfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU3luYyh1aW50NjRfdCBhcmcwKSAt
PiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVN5bmModWlu
dDY0X3QgYXJnMCkKKyAgICB2b2lkIENsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQz
Ml90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFn
cywgaW50NjRfdCB0aW1lb3V0KQorICAgIHZvaWQgR2V0U3luY2kodWludDY0X3QgYXJnMCwgdWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkK
KyAgICB2b2lkIElzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpIC0+IChib29sIHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgdm9pZCBCZWdpblRyYW5zZm9ybUZlZWRiYWNr
KHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgdm9pZCBFbmRUcmFuc2Zvcm1GZWVkYmFjaygp
CisgICAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZl
Y3RvcjxTdHJpbmc+IHZhcnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHZvaWQgR2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4
KSAtPiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hy
b25vdXMKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgUmVzdW1l
VHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgQmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHZvaWQgQmluZEJ1ZmZl
clJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwg
dWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0VW5pZm9ybUluZGlj
ZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdW5pZm9ybU5hbWVzKSAtPiAoVmVj
dG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2
ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4gdW5pZm9ybUluZGlj
ZXMsIHVpbnQzMl90IHBuYW1lKSAtPiAoVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwg
U3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5n
KQorICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90
IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQz
Ml90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1
aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQor
ICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBh
cmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFy
ZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJbnNlcnRF
dmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFB1c2hHcm91cE1hcmtlckVYVChT
dHJpbmcgYXJnMCkKKyAgICB2b2lkIFBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB2b2lkIERyYXdC
dWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAgdm9pZCBE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50
MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1
aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorfQorCisjZW5k
aWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0
ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZmZlOGMxZmM3YWZhMTcyZjFiYjljNzM0MjY3NWM1ZGZlNmUxNzZl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTAsMCArMSwxMTgz
IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVw
LXdlYmdsLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4g
dGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGlt
cGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQorICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0
dXNDaGVjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNldEZhaWxOZXh0R1BVU3RhdHVz
Q2hlY2soKTsKKyAgICB9CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJv
cikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwor
ICAgIH0KKyAgICB2b2lkIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
Pm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1aW50MzJf
dCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1
cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50
MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9n
cmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbih1aW50MzJf
dCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nJiYgbmFtZSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKTsKKyAgICB9Cisg
ICAgdm9pZCBiaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOwor
ICAgIH0KKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJn
ZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBn
cmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJs
ZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymxl
bmRFcXVhdGlvbihtb2RlKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUo
dWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9
CisgICAgdm9pZCBibGVuZEZ1bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOwor
ICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMy
X3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNB
bHBoYSwgZHN0QWxwaGEpOworICAgIH0KKyAgICB2b2lkIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
dWludDMyX3QgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyh0YXJnZXQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgY2xlYXIodWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y2xlYXIobWFzayk7CisgICAgfQorICAgIHZvaWQgY2xlYXJDb2xvcihmbG9hdCByZWQsIGZs
b2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZv
aWQgY2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xl
YXJEZXB0aChkZXB0aCk7CisgICAgfQorICAgIHZvaWQgY2xlYXJTdGVuY2lsKGludDMyX3QgcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKHMpOworICAgIH0KKyAgICB2
b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb2xvck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJlZCksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihncmVlbiksIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihibHVlKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGFscGhhKSk7Cisg
ICAgfQorICAgIHZvaWQgY29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGNvcHlU
ZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJu
YWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlRnJhbWVidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZm
ZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVByb2dyYW0oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJv
Z3JhbSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgY3JlYXRlUmVuZGVyYnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVj
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3VsbEZhY2UodWludDMy
X3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y3VsbEZhY2UobW9kZSk7CisgICAg
fQorICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVGcmFt
ZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVG
cmFtZWJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0oYXJnMCk7Cisg
ICAgfQorICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBkZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+ZGVsZXRlU2hhZGVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUodWlu
dDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBkZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMpOworICAgIH0KKyAgICB2b2lkIGRlcHRoTWFz
ayhib29sIGZsYWcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4oZmxhZykpOworICAgIH0KKyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxv
YXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRoUmFu
Z2Uoek5lYXIsIHpGYXIpOworICAgIH0KKyAgICB2b2lkIGRldGFjaFNoYWRlcih1aW50MzJfdCBh
cmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXRhY2hTaGFk
ZXIoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgZGlzYWJsZSh1aW50MzJfdCBjYXApCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAgIHZv
aWQgZHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3Vu
dCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dM
aW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGUodWludDMyX3QgY2FwKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGUoY2FwKTsKKyAgICB9CisgICAgdm9pZCBl
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lk
IGZpbmlzaCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOworICAgIH0KKyAg
ICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICB9
CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJn
MykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpOworICAgIH0KKyAgICB2
b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNo
bWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpOworICAgIH0KKyAgICB2b2lkIGZyb250
RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcm9udEZhY2Uo
bW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIH0K
KyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRl
eCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIGdl
dEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
byBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QXR0cmliTG9j
YXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRB
dHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3RyaW5nKHVpbnQzMl90IG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Z2V0U3RyaW5nKG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0RmxvYXR2KHVpbnQzMl90IHBuYW1l
LCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0
YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPih2YWx1ZS5k
YXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2VyNjQodWlu
dDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjQocG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90
IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1
ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRp
Y19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0Qm9v
bGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJh
eVJlZmVyZW5jZTxib29sPihyZWludGVycHJldF9jYXN0PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2
YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRFcnJvcihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Z2V0RXJyb3IoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNo
bWVudCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbUluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVy
aSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFk
ZXJpKGFyZzAsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlckluZm9Mb2codWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiwg
aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6OmFycmF5
PEdDR0xpbnQsIDI+IHJhbmdlIHsgfTsKKyAgICAgICAgR0NHTGludCBwcmVjaXNpb24gPSB7IH07
CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUs
IHByZWNpc2lvblR5cGUsIHJhbmdlLCAmcHJlY2lzaW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPihyZWludGVycHJldF9jYXN0PGlu
dDMyX3QqPihyYW5nZS5kYXRhKCkpLCByYW5nZS5zaXplKCkpLCBwcmVjaXNpb24pOworICAgIH0K
KyAgICB2b2lkIGdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0
cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFNoYWRlclNvdXJjZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmYodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0
ZXJmKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBw
bmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRVbmlmb3JtZnYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwg
dWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3Rv
cjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDAp
OworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFs
dWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3Qg
bG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVl
U2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2Nh
dGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZh
bHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm11aXYodWludDMyX3QgcHJv
Z3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWludCwgND4gdmFsdWUoc3RhdGljX2Nh
c3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3Jt
dWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Qq
Pih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlm
b3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
dWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzaXplaXB0
ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOworICAgIH0KKyAgICB2b2lkIGlzQnVmZmVyKHVp
bnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzQnVmZmVyKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBjYXAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzRW5h
YmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRnJhbWVidWZmZXIodWludDMyX3QgYXJn
MCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFt
KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2hhZGVyKGFy
ZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4dHVyZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgbGluZVdpZHRo
KGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmVXaWR0aChhcmcwKTsK
KyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0
b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBwb2x5Z29u
T2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZl
cnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7CisgICAgfQorICAgIHZvaWQgc2Npc3Nvcihp
bnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAg
fQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyYmIGFyZzEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShhcmcwLCBhcmcxKTsKKyAgICB9
CisgICAgdm9pZCBzdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMy
X3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVm
LCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZh
Y2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFz
ayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2sodWludDMyX3QgbWFzaykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2sobWFzayk7CisgICAgfQorICAgIHZvaWQgc3Rl
bmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOworICAgIH0K
KyAgICB2b2lkIHN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMy
X3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFp
bCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZh
Y2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWws
IHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50
ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0p
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwg
cGFyYW0pOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9h
dCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24sIHgpOwor
ICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2
KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQq
Pih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFpKGludDMy
X3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bTFpKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWl2KGludDMyX3QgbG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9u
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEo
KSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJpKGludDMyX3QgbG9jYXRp
b24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtMmkobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yaXYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZihsb2NhdGlvbiwgeCwg
eSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0zZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
M2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtM2l2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2
KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4o
di5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZihpbnQzMl90
IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm00ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0
aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRh
dGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRpKGludDMyX3QgbG9j
YXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2
KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4o
di5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYo
aW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1
ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVl
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dXNlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0odWlu
dDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFy
ZzApOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKHVpbnQzMl90IGluZGV4LCBmbG9h
dCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCAxPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NHTFNwYW48MT4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCAyPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNm
KHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliM2Z2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCAzPiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
ZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjRm
KHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7
CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3Qg
dHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXpl
LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4obm9ybWFsaXplZCksIHN0cmlkZSwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdmlld3BvcnQo
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICB9CisgICAgdm9pZCBidWZmZXJEYXRhMCh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEs
IHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRh
cmdldCwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmcxKSwgdXNhZ2UpOworICAgIH0KKyAg
ICB2b2lkIGJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIGRhdGEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5idWZmZXJEYXRhKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSwgdXNhZ2UpOworICAgIH0KKyAg
ICB2b2lkIGJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMwKGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxz
aXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgcmVh
ZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQor
ICAgIHZvaWQgdGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleElt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVy
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdD
R0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlMkQwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQz
Ml90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJv
cmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNp
emUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9y
bWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMy
X3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zm
c2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qg
aW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBp
bnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZCh1aW50
MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3Vu
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBm
aXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2
NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgaXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xl
YW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5p
c1ZlcnRleEFycmF5KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheSh1
aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVmVydGV4QXJyYXko
YXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEodWludDMyX3QgcmVhZFRh
cmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90
IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
b3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHdyaXRlT2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0
QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qg
ZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGNo
YXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDApOworICAgICAgICBt
X2NvbnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpLCBkYXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGludDMyX3Qg
c3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMy
X3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVp
bnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZl
clRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQz
Ml90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVi
dWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0
dGFjaG1lbnRzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZm
ZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+
KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMsIGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkpLCBhdHRhY2htZW50cy5z
aXplKCkpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCByZWFkQnVmZmVy
KHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMp
OworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3Rv
cmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTNE
KHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwor
ICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZl
bCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRo
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMy
X3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhT
dWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMy
X3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIs
IGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdD
R0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgp
KSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+
KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3Qg
cHJvZ3JhbSwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0
aW9uKHByb2dyYW0sIG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJf
dCB2MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjAp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3Qg
djAsIHVpbnQzMl90IHYxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpKGxv
Y2F0aW9uLCB2MCwgdjEpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWkoaW50MzJfdCBsb2Nh
dGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMy
X3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRp
b24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTN1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9j
YXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KGludDMy
X3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYm
IGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3Nl
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1
aW50MzJfdCBpbmRleCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHks
IHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4mJiB2YWx1ZXMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAg
ICB2b2lkIHZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQz
Ml90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmli
STR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1
aW50Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9p
bnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90
IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxH
Q0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1
aW50MzJfdCBtb2RlLCB1aW50MzJfdCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVy
cyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRyYXdCdWZmZXJzKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGNsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdih1aW50MzJfdCBidWZmZXIsIGludDMy
X3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiB2YWx1ZXMpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMu
ZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYo
dWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2
KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBm
bG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
bGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOworICAgIH0K
KyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1
ZXJ5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBkZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVsZXRlUXVlcnkocXVlcnkpOworICAgIH0KKyAgICB2b2lkIGlzUXVlcnkodWludDMy
X3QgcXVlcnksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUXVlcnkocXVlcnkpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KTsKKyAgICB9Cisg
ICAgdm9pZCBlbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmVuZFF1ZXJ5KHRhcmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0UXVlcnkodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVl
cnkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBu
YW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVNhbXBsZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2Ft
cGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVTYW1wbGVyKHNhbXBsZXIpOworICAgIH0KKyAgICB2b2lkIGlzU2Ft
cGxlcih1aW50MzJfdCBzYW1wbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxl
cik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMy
X3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZFNhbXBsZXIodW5pdCwg
c2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2Ft
cGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQor
ICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5h
bWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1l
dGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQ
YXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJh
bWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGZlbmNlU3luYyh1aW50MzJf
dCBjb25kaXRpb24sIHVpbnQzMl90IGZsYWdzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2
NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xzeW5jIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5j
KGNvbmRpdGlvbiwgZmxhZ3MpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKSk7Cisg
ICAgfQorICAgIHZvaWQgaXNTeW5jKHVpbnQ2NF90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3lu
Yz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgfQorICAgIHZvaWQgY2xpZW50
V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5jbGllbnRXYWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xz
eW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NH
THVpbnQ2ND4odGltZW91dCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgd2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxh
Z3MsIGludDY0X3QgdGltZW91dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+d2FpdFN5bmMo
cmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwg
ZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4odGltZW91dCkpOworICAgIH0KKyAgICB2b2lk
IGdldFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFN5bmNpKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90
PihhcmcwKSksIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2soaWQpOworICAgIH0KKyAgICB2b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2so
dWludDMyX3QgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soaWQpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVHJhbnNmb3JtRmVl
ZGJhY2sodGFyZ2V0LCBpZCk7CisgICAgfQorICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFj
ayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdp
blRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpOworICAgIH0KKyAgICB2b2lkIGVuZFRy
YW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3Jt
RmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVp
bnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZl
ck1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpOworICAgIH0KKyAgICB2b2lkIGdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICBtX2NvbnRleHQt
PmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYXJnMikpOworICAgIH0KKyAgICB2b2lkIHBh
dXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5wYXVzZVRy
YW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJh
Y2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygp
OworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymlu
ZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKTsKKyAgICB9CisgICAgdm9pZCBiaW5k
QnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVm
ZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0
PEdDR0xpbnRwdHI+KG9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oYXJnNCkpOwor
ICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rv
cjxTdHJpbmc+JiYgdW5pZm9ybU5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1
aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTHVpbnQ+IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Z2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4mJiB1
bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPGludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPEdDR0xpbnQ+IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0luZGV4KHVpbnQzMl90IHByb2dyYW0sIFN0cmlu
ZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJ
bmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJ
bmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5nKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3Jt
QmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gcGFyYW1zKHN0YXRp
Y19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFy
YW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihwYXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
YmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJf
dCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50
MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmxpdEZyYW1lYnVm
ZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEs
IGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGRlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9
CisgICAgdm9pZCBpc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
Ym9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5T0VTKGFyZzApOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmluZFZlcnRleEFycmF5T0VTKGFyZzApOworICAg
IH0KKyAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcw
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcmJiBh
cmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZl
bnRNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0
cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5w
dXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJF
WFQoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucG9wR3JvdXBN
YXJrZXJFWFQoKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJz
dCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmly
c3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVp
bnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3Vu
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTHZvaWRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7Cisg
ICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1
aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9jb2NvYS9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
N2M0MGM5ODVjYjdkMjcyMjg2OWE1ZGZmOTY5MTk0NzA3N2FmNDZjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkK
KworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW5jbHVkZSA8d3Rm
L01hY2hTZW5kUmlnaHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgcHJpdmF0ZSBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZp
bmFsID0gZGVmYXVsdDsKKworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRl
cy4KKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RG
OjpNYWNoU2VuZFJpZ2h0JiYpPiYmKSBmaW5hbDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluIG92ZXJyaWRlcy4KKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigp
IGZpbmFsOworICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIGZpbmFsOworICAgIHZvaWQqIGRldGFj
aENsaWVudCgpIGZpbmFsOworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbjo6QnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKK307CisKK30KKworc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
PihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKK30KKworUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmli
dXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCit7Cit9CisKK0dyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6cmVjeWNsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9kaXNwbGF5QnVm
ZmVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVzZW50KEJ1
ZmZlciBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7Cisg
ICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworfQorCit2b2lkKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hDbGllbnQoKQoreworICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUsIG51bGxwdHIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICBhdXRvIGRpc3BsYXlC
dWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBNYWNoU2VuZFJp
Z2h0IHNlbmRSaWdodDsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgc2VuZFJpZ2h0
ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJpZ2h0KCk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzZW5kUmlnaHQpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQppbmRleCBiN2JiNjNiMjlhZDgwMjE3
MmRmMjdhMTI4OTViYjE5OThmYTRiNmIwLi4yNGM0MzdjYWFlN2Y4ZjlhOWFmZjkyNzAzZWZjZjlk
YTAzMWU0YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVBy
b2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNz
TWFjLm1tCkBAIC0zMiw4ICszMiw4IEBACiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KLSNpbXBvcnQg
PHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CiAjaW1w
b3J0IDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTQ0LDkgKzQ0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdm9p
ZCBHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKKyNpZiAwCiAgICAgLy8gSGF2aW5nIGEgd2luZG93IHNlcnZlciBjb25u
ZWN0aW9uIGluIHRoaXMgcHJvY2VzcyB3b3VsZCByZXN1bHQgaW4gc3BpbiBsb2dzICg8cmRhcjov
L3Byb2JsZW0vMTMyMzkxMTk+KS4KLSAgICBPU1N0YXR1cyBlcnJvciA9IFNldEFwcGxpY2F0aW9u
SXNEYWVtb24odHJ1ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChlcnJvciwgZXJyb3IgPT0gbm9FcnIp
OworICAgIGF1dG8gcmV0dmFsID0gQ0dTU2V0RGVueVdpbmRvd1NlcnZlckNvbm5lY3Rpb25zKHRy
dWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHJldHZhbCA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAg
IENHU1NodXRkb3duU2VydmVyQ29ubmVjdGlvbnMoKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBs
YXVuY2hTZXJ2aWNlc0NoZWNrSW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KaW5kZXgg
ZGIwNmU1MzRmN2Y1MWQyZWJkMDM4MjVmNTgyNDVmODQ5NmY4YjE3OS4uZWQxMDBiMzZlZDZmNDZk
NGFhZjYzNTQ0Nzc4ODJhYjc5M2ExMWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4K
QEAgLTIwNyw2ICsyMDcsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5BQVBMLChE
aXNwbGF5UGlwZXxPcGVuQ0xkaXNhYmxlZHxJT0dyYXBoaWNzX0xFUih8X1JlZ1RhZ18xfF9SZWdU
YWdfMHxfQnVzeV8yKXxhbGlhcy1wb2xpY3l8Ym9vdC1kaXNwbGF5fGRpc3BsYXktYWxpYXN8bXV4
LXN3aXRjaC1zdGF0ZXxuZHJ2LWRldnxwcmltYXJ5LWRpc3BsYXl8c2xvdC1uYW1lKSIpCiAgICAg
KGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkFUWSwoY2JpdHN8ZmJfKGxpbmVieXRlc3xvZmZzZXR8
c2l6ZSl8aW50cmV2KSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJBVFksRGV2aWNlTmFtZSIpIDs7
IE5lZWRlZCBieSBNZXRhbCBjb21waWxlcnMKKyAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxFRklE
aXNwbGF5IikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxGYW1pbHlOYW1lIikgOzsgRGl0dG8K
ICAgICAoaW9raXQtcHJvcGVydHkgIkFWQ1N1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJCYWNrbGlnaHRIYW5kbGUiKQpAQCAtMjE3LDYgKzIxOCw5IEBACiAgICAgKGlva2l0LXByb3Bl
cnR5ICJDYXBzTG9ja0RlbGF5IikKICAgICAoaW9raXQtcHJvcGVydHkgIkNhc2VTZW5zaXRpdmUi
KQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ29uZmlnU3RhdGUiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiRFBMYW5lcyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJEUExpbmtCaXQiKQorICAgIChpb2tp
dC1wcm9wZXJ0eSAiRFBMaW5rUmF0ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXNjcmlwdGlv
biIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJEZXZlbG9wbWVudCIpCiAgICAgKGlva2l0LXByb3Bl
cnR5LXJlZ2V4ICMiXkRldmljZSggQ2hhcmFjdGVyaXN0aWNzfEVxSUQpIikKQEAgLTIyOSwxMCAr
MjMzLDE3IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJGYW1pbHkgSUQiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiRm9yY2VTdXBwb3J0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiRm9ybWF0cyIp
CisgICAgKGlva2l0LXByb3BlcnR5ICJGcmFtZWJ1ZmZlckVuYWJsZWQiKQorICAgIChpb2tpdC1w
cm9wZXJ0eSAiRnJhbWVidWZmZXJTdGFydGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkdQVUNv
bmZpZ3VyYXRpb25WYXJpYWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEQ0NEaXNwbGF5
YWJsZSIpCisgICAgKGlva2l0LXByb3BlcnR5ICJHUFVEZWJ1Z051bGxDbGllbnRNYXNrIikKICAg
ICAoaW9raXQtcHJvcGVydHkgIkdwdURlYnVnUG9saWN5IikKKyAgICAoaW9raXQtcHJvcGVydHkg
IkdQVVJhd0NvdW50ZXJCdW5kbGVOYW1lIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVVJhd0Nv
dW50ZXJQbHVnaW5DbGFzc05hbWUiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSEVWQ1N1cHBvcnRl
ZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJISURQb2ludGVyQWNjZWxlcmF0aW9uVHlwZSIpCisg
ICAgKGlva2l0LXByb3BlcnR5ICJId0N0eENhY2hlVXBkYXRlIikKICAgICAoaW9raXQtcHJvcGVy
dHktcmVnZXggIyJeSU9BY2NlbChEaXNwbGF5UGlwZUNhcGFiaWxpdGllc3xJbmRleHxUeXBlc3xS
ZXZpc2lvbikiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JTyhDbGFzc3xNYXRjaENh
dGVnb3J5fE5hbWVNYXRjaCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5JT0F1ZGlv
Q29udHJvbChDaGFubmVsSUR8SUR8U3ViVHlwZXxVc2FnZXxWYWx1ZSkiKQpAQCAtMjgyLDYgKzI5
Myw4IEBACiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1BhcmVudE1hdGNoIikKICAgICAoaW9raXQt
cHJvcGVydHktcmVnZXggIyJeSU9QQ0koKENsYXNzfFByaW1hcnl8UHJvcGVydHl8KU1hdGNofEV4
cHJlc3MoQ2FwYWJpbGl0aWVzfExpbmsoU3RhdHVzfENhcGFiaWxpdGllcykpfE1TSU1vZGV8UmVz
b3VyY2VkfFR1bm5lbGxlZCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QTUlzUG93ZXJNYW5h
Z2VkIikKKyAgICAoaW9raXQtcHJvcGVydHkgIklPUGVyc29uYWxpdHlQdWJsaXNoZXIiKQorCiAg
ICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPUGxhdGZvcm0oU2VyaWFsTnVtYmVyfFVVSUQp
IikKICAgICAoaW9raXQtcHJvcGVydHkgIklPUG93ZXJNYW5hZ2VtZW50IikKICAgICAoaW9raXQt
cHJvcGVydHkgIklPUHJvYmVTY29yZSIpCkBAIC0zMTcsNiArMzMwLDcgQEAKICAgICAoaW9raXQt
cHJvcGVydHkgIlByb3RvY29sIENoYXJhY3RlcmlzdGljcyIpCiAgICAgKGlva2l0LXByb3BlcnR5
ICJSZW1vdmFibGUiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5SZXNldE9uKExvY2t8
VW5sb2NrKU1zIikKKyAgICAoaW9raXQtcHJvcGVydHkgIlNXSVBfcHJvcGVydGllcyIpCiAgICAg
KGlva2l0LXByb3BlcnR5ICJTYWZlRWplY3RSZXF1ZXN0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiU2FtcGxlUmF0ZXMiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiU2VyaWFsIE51bWJlciIpCkBA
IC0zMzgsNiArMzUyLDcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgImF0dGFjaGVkLWdwdS1jb250
cm9sLXBhdGgiKQogICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl5hdWRpby0oY29kZWMtaW5m
b3xkZXZpY2UtbXZhbHVlfGRldmljZS1udmFsdWV8c2VsZWN0b3IpIikKICAgICAoaW9raXQtcHJv
cGVydHkgImF2LXNpZ25hbC10eXBlIikKKyAgICAoaW9raXQtcHJvcGVydHkgImJhY2tsaWdodC1Q
V00tZnJlcSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJiY2RWZXJzaW9uIikKICAgICAoaW9raXQt
cHJvcGVydHktcmVnZXggIyJeKGJvYXJkfGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW18dmVuZG9y
KS1pZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJib290LWdhbW1hLXJlc3RvcmVkIikKQEAgLTM1
MCw2ICszNjUsMTEgQEAKICAgICAoaW9raXQtcHJvcGVydHkgImNvbm5lY3Rvci10eXBlIikKICAg
ICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeKGRldmljZXxyZXZpc2lvbnxzdWJzeXN0ZW0tdmVu
ZG9yfHRvdWNoLXNpemUpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImRldmljZV90eXBlIikK
KyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktYnBjIikKKyAgICAoaW9raXQtcHJvcGVydHkg
ImRpc3BsYXktY29ubmVjdC1mbGFncyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LWxp
bmstY29tcG9uZW50LWJpdHMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1waXhlbC1j
b21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXR5cGUiKQogICAg
IChpb2tpdC1wcm9wZXJ0eSAiZHBtIikKICAgICAoaW9raXQtcHJvcGVydHkgImVycm9yZGIiKSA7
OyBOZWVkZWQgZm9yIE9wZW5HTCBvbiBvbGRlciBoYXJkd2FyZQogICAgIChpb2tpdC1wcm9wZXJ0
eSAiZmlsZXZhdWx0LWltYWdlIikgOzsgTmVlZGVkIGJ5IExhdW5jaFNlcnZpY2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5LmNwcAppbmRleCBlNmExOGRkYTZlMDkyZmRiMTgwNDQ2ZTRmM2EwODNjZjUzYzI3NjE5
Li4zNzkyOGUxYjgzZDRlNTI0NDUzYThkMjdjYzNiODc5MDFiMjQ5YTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFVT
RShBVURJT19TRVNTSU9OKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5oIgog
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3Bw
CmluZGV4IGQ5YmY1MjI3MmMzNzI5MTU3NWI1YjM5MzI2MmU3NzIxM2I5MzBkZDQuLjhmMDExOWVk
ZmUxZDZlOTMyNDMwMDViMzQ0MTI1YjI0ZWFiOTFlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggNmE1YzY3MjVjYWE5YmRiODY3YWI4NmI4YzU3ZjM2ZGUy
Yzg5NmRjZi4uYmU3ZjUyMjBiZTliODVmODY4YTVmODM3ZWZlZDY2ZGRmOTVmMjk0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5LmgKQEAgLTM5LDEwICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggNDdmNWQyZjI3MGZhNWRlNGZhZGUxNTE0NDQyMTEx
Nzk0ZWQzNmQyOC4uMmM1ZTdkZTdkMmU3NTY5NjBhM2YzZWM4NzZjOGI4MjVjNmU0NWI1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmNwcAppbmRleCBhOThjZmE0YzlmODAyMzE5MDRmOGVmMGVhYTkzNjIyOWFmYTk3NTk4Li5m
ZWM2NWNmNjJiNjY3NGI4MzAwYzUwY2Q0MzM0MTVlOTE1MTE0NDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIuaAppbmRleCBkODliODAzZjZhYmY0MWM4ZTllZGRlNDE0Mjc2OTMyODI2
ZDFiMzM4Li4wODFlYjMxODBkMDIxNjRiNWFhM2Q1NDgwNmY3MmM3ZWRjMGNiMWVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIuaApAQCAtMjcsMTUgKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKKwog
I2luY2x1ZGUgPFdlYkNvcmUvUG9saWN5Q2hlY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQ
cm94eS5jcHAKaW5kZXggYWY3YmU1MTJlYWMyZDFhZTY1NGFlMDljYjUyZDk0YjM5YjJjNjA3Ny4u
NDk5YmQ2MWMyZjc4MjIyM2ZhMzhmYzk3YjE4MmZhNmQyYjkzODFkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFTb3VyY2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRl
eCA1OTY4YzdiYmQxODljZDQ3OWVmNGFlYWI0ZDQ0OTk1MzNmZDNkNjViLi5mZTU0NGQ1NTUxOTFl
NTU2ZTJkN2UyMzM5NDc1YTAyZmMyOWRjZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTM5LDcgKzM5
LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oCmluZGV4IDZiOGJmOGI1N2NjMGM4ZDlkNTQxMWU5NjUyMWI0NWE5NGE4ZTNiMzIuLjk5
Y2E2YTQxNGViNTA4MzkwYzcyODMzYTY0NTFlNzMwMzk0MjFkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5o
CkBAIC0yNyw5ICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxX
ZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0zOCw3ICs0MCw2
IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5o
CmluZGV4IDM2MDMxMGI3ZDEyMWQyODZkOGQxNjFmMTgzYWJkMGU3NDViODM1MzMuLjg0M2JiMDZm
N2I1NmM2ZTNjZmJlZTc5YTdlNDI4MWVmZWU4ZjlhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTI4LDE0
ICsyOCwxNSBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBj
bGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkubW0KaW5kZXggZjhhYmMxZjQwNWZjMTQ2OTQ3NWI0ZDkwYmFkM2Q1M2Nh
MGY4MDE0ZS4uNjFjNDcwOGFlOTZkYmNhYTU2OTgwOWVlMTk5NWJlODE2YTkxZmYyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW1wb3J0ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJM
aWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlN
ZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCA3ODhjNWYwMGMwMmY0ZjE0OGZlZWNjZDM4ZDEwNjgx
OGIwZDdlOTYxLi4zYWI0ZTRiMWNmMWMxNDEyMzBjMTNlNDU3NmM1ZWQ2ZTZlZmMyZWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVk
aWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAgLTM2LDcgKzM3LDYgQEAKIAogbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29k
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggN2E2MzM2MzQ3YzAwN2U5N2I3M2I1NDM3
NzQ5MTY4MzhkNjQwMzdkYS4uMWFhNTNjYzJmYjc3YmFmOWUzMjY1MDcyMTA4MDlmZDc2Y2ZiYmYy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAKLSNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU1VSTFNlc3Npb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgKaW5kZXggZjZlZDgxMWY1MzQyZmU0ODU1NTE3NmY4OWQ1MTQ1NzU2MmM2NjU4
NS4uMGJjZDU2NzNjOTM0NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJjMjczMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgpAQCAtMzksMTAgKzQwLDYg
QEAgT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uOwogT0JKQ19DTEFTUyBXS0N1
c3RvbVByb3RvY29sOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0gLy8gbmFtZXNwYWNlIElQQwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMTEyLDQgKzEwOSwzIEBA
IHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmluZGV4IGRkYmU0
ZWVkZDQ0MWRmODdjNTVhZDMzMGYwNDJjY2RjZmFkZmI5MGIuLjY1MWZmMjU0ZjkwNWMxNmE5MGNi
NDgyYzk3NzNkNGFjNzQyOTRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJE
b3dubG9hZE1vbml0b3IuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmlu
ZGV4IDM4YWYzNTA4MDc0NjQyOTNiOTVmZmFmMDU5ZmRlYzM2OTAxNzcyNzQuLjkzZjAzYTgyNTVm
MWFlNzE3MzgzYzAwMjkwYTI0ZjkxY2E3YzY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3du
bG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRNb25pdG9yLmgiCkBAIC00NCwxMCArNDUsNiBAQCBPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7CiBP
QkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKICNlbmRpZgogCi1uYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3
ZDkxYjQ3Yjc2Mi4uNzI2ZGQ5OTBiYWZkNDM5NGI1YWZjMDMyYTFjZjIwZjE4NDljNDlhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmlu
ZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAxNjVmMWM3MjY3OGZhNTAuLjk4MGEwNmY3ODM5
ZGJkNWU5ZjlkNTA0NTQwOWEzM2Q3N2IxYzAzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hcC5oIgogI2luY2x1
ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNDQ5YjEz
ZDhlMDdiMmNkMDQyYzRiYTM2MzZhYjc5M2QzN2IxYzNmNC4uYzc3ODg4MTFmMDMyZDU4ZjhiNTI3
NzM2ZTFkMjI3ODQxMGY5MTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U2Vzc2lvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5oCmluZGV4IDMxOTY0MTkwZDE0MWQ1NDlkYTBiYWYyZGM4YmYyOTdiNGU1
ODFlODkuLjA0MzRiZjg4MDlhN2ViM2VjYzE4ZThmNjUwY2MwMjc4YWU2ZWI1MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KQEAgLTQwLDcgKzQxLDYgQEAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHAKaW5kZXggNWI0ODljYzUzOGY3YzA3MTUxMDEwNmM1OGY1YzA5NGVjOWE4ZTFi
OC4uNDhjODgzYmZjMGZjN2Q1MDFjOGE0YTRlNzY4NGNjYzMzZTM4YzE0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nv
Y2tldFN0cmVhbS5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFt
TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5oCmluZGV4IDUyZWMzOTI2OTAyMThlZGU2NjhkNTVlNjM4ZDhlMTc1MDJmZDZlZTUu
LjczNDI5YTAyNzkwNmI0MTZhMzhjMGM2YjM5NDZhMGRiOWZiMjA2ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CkBAIC0zNyw3ICszOCw2IEBA
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkMzNjYmZmMTA4OWNjMTA1ZGQxYTAwYmViZmRm
NjFkMzNjN2Y2NmJkLi5kMzdkNzgwNjk4M2JiYTU0N2NhMGY5MjM1ZWI0YmY2YjczMTU2NWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllci5oPgpAQCAtNDMsNyArNDQsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAppbmRleCBkYjU3OTVkZDIx
N2Y0NWFkNWY2N2UzMGI3OTFmOTJlMjc2YzAyOTg2Li45NjFlNDY0NTliZTc3MTc3ZTI2MDVlN2Q4
NjUyYWRhODAyMDk3YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNv
Y2tldFRhc2suaApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3Vw
LmgiCiAjZWxzZQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAppbmRleCBkYWM2OTM1MDdlYjNlZmNl
YTZkMTA5NDgwMWJjMDFiMzZmZTI2MzlkLi5lNjgyNmU0N2U4Mzk1OTQwMjhhZjhmNGFlZDIzOTJi
NGIwNWQyZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L1dlYlNvY2tldFRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKQEAgLTI3LDE1ICsyNywxMiBAQAogCiAjaWYgSEFW
RShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBP
QkpDX0NMQVNTIE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s7CiAKLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3
b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCmlu
ZGV4IDg1NTM0ODc0NDA0Y2UyYmFhNDRhZTY1NjU0N2QzNzIyNTMzMmVhYjguLjkwYmM0MDliZmZi
NzBhMGVlOWU3MzU4YjM4Njc1OTdkMjlmMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKLSNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBv
cnQgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vz
c2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJTb2NrZXRUYXNrU291cC5jcHAKaW5kZXggNDVmYzY2OWQ3NjZhNzYxYzVkNzczZGM5NWYwNTQx
YTM4ZTM2ZjhlMy4uYTNlNzAxNGI1ZDhlYzA5NzM4ZmZhN2Q1NjY0NTQ1MDEwZjA1MzQwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFu
bmVsLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBl
NDIxYjllMWM3MTMxODQzNGY2NDg3ZjVmY2I1YTZhODdiZDczOTE5Li4wODg5MjM5NTlmZTQ2MGZm
MmJiYTRjOGMwODM5OTgwNjU3YmYzNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAtMjUsMTQgKzI1LDExIEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L2dsaWIvR1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7
Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGUwMGEw
Y2NkZmE1ODc1YzAyOGM1MDUyMzExNDE3MjhlZTk1YjQzOTIuLmUzOGJjMWM2MGFmNmRjZjAzNjk2
NWFhNzhhYWRiZDZkOGQ0YjYyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkFycmF5UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVu
Y29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtNTMsNiArNTQsNDggQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIgewogICAgIH0KIH07CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFy
cmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKKyAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUg
PSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNp
emVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQorICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJl
ZmVyZW5jZVR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgaWYg
KCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJl
bmNlKEV4dGVudCAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0YSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJl
ZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIEV4dGVudCk7Cisg
ICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJy
YXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50Pj4geworICAgIHVzaW5n
IEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD47CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBl
bmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgp
KSk7CisgICAgICAgIGlmICghYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVyZW5j
ZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KKyAgICBzdGF0aWMgT3B0
aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoIXNpemUp
CisgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemUg
KiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNp
emUpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxPcHRpb25TZXQ8VD4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgT3B0aW9uU2V0PFQ+JiBvcHRpb25TZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzMmJiNDU3YTVi
ODg1ZjNkNTY2ODdlNzlmMTVjM2EyNjcxYmU2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitpbmxpbmUgY29uc3RleHByIHNpemVf
dCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGFycmF5
UmVmZXJlbmNlRHluYW1pY0V4dGVudD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlOworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD4geworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0Owor
CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAg
IDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgeworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2Uo
Y29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0
YSh2ZWN0b3IuZGF0YSgpKQorICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6ZSgpKQorICAgIHsK
KyAgICB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9CisK
KyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQq
IGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIFZl
Y3RvcjxUPiB2ZWN0b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7CisKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVCogbV9kYXRhIHsgfTsKKyAg
ICBzaXplX3QgbV9zaXplIHsgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50PgorY2xhc3MgQXJyYXlSZWZlcmVuY2UgeworcHVibGljOgorICAgIEFycmF5UmVmZXJl
bmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6
ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKHNpemUsIHNpemUgPT0gRXh0ZW50KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKKyAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkK
KyAgICB7CisgICAgICAgIEFTU0VSVCh2ZWN0b3Iuc2l6ZSgpID09IEV4dGVudCk7CisgICAgfQor
CisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFFeHRlbnQ7IH0K
KworICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEV4dGVudDsgfQor
CisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7Cisg
ICAgfQorCisgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0
b3I8VD4gcmVzdWx0OworICAgICAgICBpZiAoIWlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQobV9kYXRhLCBFeHRlbnQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworcHJpdmF0ZToKKyAgICBjb25zdCBUKiBtX2RhdGEgeyB9OworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorQXJyYXlSZWZlcmVuY2UoY29uc3QgV1RG
OjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JikgLT4gQXJyYXlSZWZlcmVuY2U8VD47CisKK30g
Ly8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmlu
ZGV4IGVjM2QxNGFlOGYzZWMyNDcwNTQ3NjNjYWVlOTA5Y2MyYzg3NWY1ZDguLmJiZDdhYmNiNGNk
YzYwNDM4MmIxMDY1ZTMzMjM4NDQ5YzZhYzU5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKQEAgLTIyNywxMCArMjI3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1h
cmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwogCiAgICAgdm9pZCBwb3N0
Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7Ci0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVz
c2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwg
T3B0aW9uU2V0PFNlbmRPcHRpb24+ID0geyB9KTsgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOyAvLyBUaHJlYWQt
c2FmZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCisgICAgLy8g
U3luYyBzZW5kZXJzIHNob3VsZCBjaGVjayB0aGUgU2VuZFN5bmNSZXN1bHQgZm9yIHRydWUvZmFs
c2UgaW4gY2FzZSB0aGV5IG5lZWQgdG8ga25vdyBpZiB0aGUgcmVzdWx0IHdhcyByZWFsbHkgcmVj
ZWl2ZWQuCisgICAgLy8gU3luYyBzZW5kZXJzIHNob3VsZCBob2xkIG9uIHRvIHRoZSBTZW5kU3lu
Y1Jlc3VsdCBpbiBjYXNlIHRoZXkgcmVmZXJlbmNlIHRoZSBjb250ZW50cyBvZiB0aGUgcmVwbHkg
dmlhIERhdGFSZWZlcmVyZW5jZSAvIEFycmF5UmVmZXJlbmNlLgorICAgIHVzaW5nIFNlbmRTeW5j
UmVzdWx0ID0gc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNv
bmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9u
cyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgCiAgICAgLy8gVGhyZWFkLXNhZmUu
CkBAIC0yNDksNyArMjUxLDcgQEAgcHVibGljOgogCiAgICAgLy8gTWFpbiB0aHJlYWQgb25seS4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8
VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwg
T3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2Vu
ZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0g
U2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91
dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC01NTEsNyArNTUzLDcgQEAgdm9pZCBtb3Zl
VHVwbGUoc3RkOjp0dXBsZTxBLi4uPiYmIGEsIHN0ZDo6dHVwbGU8Qi4uLj4mIGIpCiAgICAgVHVw
bGVNb3ZlcjxzaXplb2YuLi4oQSksIHN0ZDo6dHVwbGU8QS4uLj4sIHN0ZDo6dHVwbGU8Qi4uLj4+
Ojptb3ZlKFdURk1vdmUoYSksIGIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENv
bm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoVDo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKICAgICBS
RUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NzAsMTUgKzU3MiwxNSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmCiAgICAgLy8gTm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdh
aXQgZm9yIGEgcmVwbHkuCiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2Rl
ciA9IHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1l
b3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIGlmICghcmVwbHlEZWNvZGVyKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBEZWNvZGUgdGhlIHJl
cGx5LgogICAgIE9wdGlvbmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3Vt
ZW50czsKICAgICAqcmVwbHlEZWNvZGVyID4+IHJlcGx5QXJndW1lbnRzOwogICAgIGlmICghcmVw
bHlBcmd1bWVudHMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICBtb3ZlVHVwbGUoV1RGTW92ZSgqcmVwbHlBcmd1bWVudHMpLCByZXBseSk7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIHJlcGx5RGVjb2RlcjsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0
aW9uPiB3YWl0Rm9yT3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJl
ZmVyZW5jZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNWZkYTdiZWQyZmU4
YzQwNDliNTU4NzA3OWZkMWUxNjM1NGY0ZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkRl
Y29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSBJUEMgewotCi12b2lk
IERhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVu
Y29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoKnRoaXMpOwotfQotCi1ib29sIERh
dGFSZWZlcmVuY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhUmVmZXJlbmNlJiBkYXRh
UmVmZXJlbmNlKQotewotICAgIHJldHVybiBkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0
ZUFycmF5KGRhdGFSZWZlcmVuY2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaAppbmRleCAzNDUwYzMxYjczZGRiNmFh
NWVkY2UyYWY4MDAyOTg4N2M3OThlMjA1Li5kYmIzZDY5MjdmMzQxYzVhYTkzZmMxMDczY2IwNzU2
ZTNjYmEzN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVm
ZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5o
CkBAIC0yNSw1NCArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAK
LWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotICAgIAotY2xhc3MgRGF0YVJlZmVyZW5j
ZSB7Ci1wdWJsaWM6Ci0gICAgRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIERhdGFS
ZWZlcmVuY2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9k
YXRhKGRhdGEpCi0gICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgewotICAgIH0KLQotICAgIHRl
bXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90LCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKLSAgICAgICAgOiBtX2RhdGEo
dmVjdG9yLmRhdGEoKSkKLSAgICAgICAgLCBtX3NpemUodmVjdG9yLnNpemUoKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQotCi0g
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3QgCi0gICAgeyAKLSAgICAgICAgaWYgKGlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9kYXRhOyAKLSAgICB9Ci0K
LSAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFZlY3Rv
cjx1aW50OF90PiByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBtX3NpemUp
OwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIERhdGFSZWZlcmVuY2UmKTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCB1aW50OF90
KiBtX2RhdGEgeyBudWxscHRyIH07Ci0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLX07Cit1c2lu
ZyBEYXRhUmVmZXJlbmNlID0gQXJyYXlSZWZlcmVuY2U8dWludDhfdCwgYXJyYXlSZWZlcmVuY2VE
eW5hbWljRXh0ZW50PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCmluZGV4IDc4YTQ2MzhlYjczMDViZmQxOTEwODcwNjhkMzBiY2RiOGRm
ZTgyYWUuLjJjYjc5YjczMWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRjNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xODYsMjAgKzE4NiwxNSBAQCBib29s
IERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSwgc2l6ZV90IGFsaWdubWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERlY29kZXI6
OmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UpCitjb25zdCB1aW50OF90KiBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShz
aXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKIHsKLSAgICB1aW50NjRfdCBzaXplOwotICAg
IGlmICghZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYg
KCFhbGlnbkJ1ZmZlclBvc2l0aW9uKDEsIHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKGFsaWdubWVudCwgc2l6ZSkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IG1fYnVmZmVyUG9zOwog
ICAgIG1fYnVmZmVyUG9zICs9IHNpemU7CiAKLSAgICBkYXRhUmVmZXJlbmNlID0gRGF0YVJlZmVy
ZW5jZShkYXRhLCBzaXplKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGF0YTsKIH0K
IAogYm9vbCBEZWNvZGVyOjpyZW1vdmVBdHRhY2htZW50KEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggYjcyZGQ4YWNlMjc3M2RiMzU1
OWUzNjZkZDk1MjRmMjM0MWU1NWUwNi4uMzQ0Y2U2ODgyZmM5MDk4NGIyZmE1N2JmOWM0OGI5NjUw
ZTBmZjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtNDAsNyArNDAs
NiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIElt
cG9ydGFuY2VBc3NlcnRpb247CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBl
bnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90
OwpAQCAtNzgsOCArNzcsOSBAQCBwdWJsaWM6CiAKICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxp
Z25tZW50KTsKIAotICAgIC8vIFRoZSBkYXRhIGluIHRoZSBkYXRhIHJlZmVyZW5jZSBoZXJlIHdp
bGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29kZXIg
b2JqZWN0LgotICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVZhcmlhYmxlTGVuZ3Ro
Qnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmKTsKKyAgICAvLyBUaGUgZGF0YSBpbiB0aGUgcmV0dXJu
ZWQgcG9pbnRlciBoZXJlIHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRo
ZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgorICAgIC8vIFJldHVybnMgbnVsbHB0ciBvbiBmYWls
dXJlLgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBjb25zdCB1aW50OF90KiBkZWNvZGVGaXhlZExl
bmd0aFJlZmVyZW5jZShzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVl
PiogPSBudWxscHRyPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShUJiB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggZmQ0MDkwNzc0YjJi
YzJhNzYyOWI5YzAyZGM1NTRjNGNkYzk4ZjVjYi4uZTgzYTNlNGFmZjQyYTU3NTUwNWRjOGYwNzMx
N2ExYzFhYzE5ZGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgi
CiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0x
NDEsNyArMTQyLDcgQEAgdm9pZCBFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9w
dHI8RW5jb2Rlcj4gb3JpZ2luYWwpCiAKICAgICBvcmlnaW5hbC0+c2V0U2hvdWxkRGlzcGF0Y2hN
ZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0Zv
clN5bmNSZXBseTo6WWVzKTsKIAotICAgIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERh
dGFSZWZlcmVuY2Uob3JpZ2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKSk7
CisgICAgKnRoaXMgPDwgRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFs
LT5idWZmZXJTaXplKCkpOwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0g
b3JpZ2luYWwtPnJlbGVhc2VBdHRhY2htZW50cygpOwogICAgIHJlc2VydmUoYXR0YWNobWVudHMu
c2l6ZSgpKTsKQEAgLTIxNiwxMiArMjE3LDYgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExl
bmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGkKICAg
ICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVW
YXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNl
KQotewotICAgIGVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGF0YVJlZmVyZW5jZS5zaXpl
KCkpKTsKLSAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRh
dGFSZWZlcmVuY2Uuc2l6ZSgpLCAxKTsKLX0KLQogdm9pZCBFbmNvZGVyOjphZGRBdHRhY2htZW50
KEF0dGFjaG1lbnQmJiBhdHRhY2htZW50KQogewogICAgIG1fYXR0YWNobWVudHMuYXBwZW5kKFdU
Rk1vdmUoYXR0YWNobWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4
IDBlY2Y1NDFmNzc4NTg1MzZmMWZjZmE4MzZiNzZmMjQ4MmU0YzlhMTEuLmVhNjE5NjdiZTFlYmNi
ZDhiNmZiYmFhOGI4NWFmNDE4ZThkNTBjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNv
ZGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNz
IE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNjIsNyArNjEsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCiAgICAg
dm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90LCBz
aXplX3QgYWxpZ25tZW50KTsKLSAgICB2b2lkIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5
KGNvbnN0IERhdGFSZWZlcmVuY2UmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6
ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+
Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICB2b2lkIGVuY29kZShUJiYgdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA3ZmQxODNhNTZhZTk4YjA2NjQ1
ZmY3NTE0OGFjMjk4M2M1MmU0YWViLi40MTI5ZDRlMmI0OWQ1YzhmYzQxYTJkNjU0YWRjZDg5ZTg2
YzYzN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtOTYsNyArOTcs
NiBAQCBzdHJ1Y3QgQ29kaW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90
PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB0ZW1wbGF0ZTw+IHN0cnVj
dCBDb2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7CiAgICAgdXNp
bmcgVHlwZSA9IERhdGFSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmgKaW5kZXggNDZlMjFkOGQ5MzZmMmQ4YjUxNjdiMjQ5Zjg4MTExNmZmZWI3ZDRi
OS4uNzc0NjFkNTU1YjcyOTJjMjBlYmY1MTRhMzAyZDFkYzZlNzc3MDExZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNTQsOSArNTQsMTAgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25J
RC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIHVzaW5nIFNlbmRTeW5jUmVz
dWx0ID0gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0
IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRz
IHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoVDo6
aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKIApAQCAtNjQsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwg
T3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewog
ICAgICAgICBBU1NFUlQobWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSk7CiAKQEAgLTcyLDcgKzcz
LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFQ+Ci0gICAgYm9vbCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiBy
ZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhVJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlv
bklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVy
biBzZW5kU3luYzxVPihzdGQ6OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApp
bmRleCA3YTNjYjMzODc2MzZkY2FmY2VhY2VhZDkxYjg2MzliN2JhNzYzNmM2Li41MDBmODM5ZGZh
YWU5Mjk3ZjRkYzYzZGM2NjMwNTg3N2IyMmRmMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKIAorI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCkBAIC00OCw3ICs0OSw3IEBAIHZvaWQg
U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiBPcHRpb25h
bDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YSkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcApp
bmRleCAyZjcyODVhYzBiNGJkNmRlMTFkZmViOWZlMzI4ZjAxYzk5OTk1MGEwLi5lOTZkZmIxZmJm
ODkxY2Q0YTBjNzc0ZTg1YzkwNzg3NThhNmZlODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
RW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwCmluZGV4IDg1MmVmNDNlMDA4NjMxYzlmYWZhODIzMGM5
MTljMTdhOWQ0YTI5YjYuLjIxNjExMzljMzAxNGYwZWFmYjNkYzQ3Yzg1ZGE0MTkwYTJiYTA2NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cmluZ1Jl
ZmVyZW5jZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKaW5kZXggOGIzNzQwZjRiMTAxYWQ5MGY1MGVkNTdjODUwYjkwMzBmY2M0MzBjMi4u
NGIyMGM4NWFjNTM2MjM2NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5QT2JqZWN0UHJveHkuaCIKICNpbmNs
dWRlICJOUFJlbW90ZU9iamVjdE1hcC5oIgogI2luY2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5oCmluZGV4IGFkNGZjZDlkOGNjZjQyZjEyZWU0ODhlMDEzNDZjNjE5YTcwMWI4ZDIuLmM3
YTcwNTNjYmQyNmQyMDQ1NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
LmgiCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgpAQCAtMzcsMTAgKzM4LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBE
YXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGF5ZXJIb3N0
aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IGNhMGFlMjg0MTFhODNkZTRiZjNmZTA4YjAxMmU0MDU1NDhkOGI1NzMuLjg5ZmI4YWJhZjlhZWNl
MDdjNjM0NzBkYTNkYjgzYzg4MzI2ZGQzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtMjAzLDYgKzIwMyw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9u
c19mb3JfbmFtZXNwYWNlKG5hbWVzcGFjZSwga2luZF9hbmRfdHlwZXMpOgogCiBkZWYgdHlwZXNf
dGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVybiBmcm96ZW5zZXQo
WworICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQn
LAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC0yMTUsNiArMjE2
LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAg
ICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIn
LAorICAgICAgICAnV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJywKICAgICAg
ICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29y
ZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLApAQCAtMjQzLDYgKzI0NSw3IEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkRp
c3BsYXlMaW5rT2JzZXJ2ZXJJRCcsCiAgICAgICAgICdXZWJLaXQ6OkRvd25sb2FkSUQnLAogICAg
ICAgICAnV2ViS2l0OjpHZW9sb2NhdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUnLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQn
LAogICAgICAgICAnV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEJywKQEAgLTUzMCw2ICs1
MzMsNyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAg
ICAgICAnT3B0aW9uU2V0JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJn
dW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAn
VmVjdG9yJzogeydoZWFkZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzog
eydoZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJB
cmd1bWVudENvZGVycy5oIiddfSwKKyAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hl
YWRlcnMnOiBbJyJBcnJheVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6
IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgIH0KIAogICAgIG1hdGNoID0gcmUubWF0Y2go
Jyg/UDx0ZW1wbGF0ZV9uYW1lPi4rPyk8KD9QPHBhcmFtZXRlcl9zdHJpbmc+LispPicsIHRlbXBs
YXRlX3N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCA2MTM0M2Jk
OTQxMDZiNmU3ODlmODNiYzI1ZGU3OWY3YTYwNDA5M2NjLi5jNzgyMzE2ZjMwNTdhM2NhZjlkM2Uy
MDc3YzgxMzI1NTNlNjk3NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5o
IgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiRW5jb2Rlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmgKaW5kZXggN2JhMjA3YWJiMGFjY2M4YTU3MGY1YzY2M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdk
MDNmYWZlMDM5NTg3OTUyYTYzNzhkMWE5YzhmZjJmNzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtODQsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzRGFlbW9uKCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2
aWNlc0NoZWNrSW4oKTsKICAgICB2b2lkIHNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91
Z2hwdXRRT1MpOwogI2VuZGlmCkBAIC0xODQsNCArMTgzLDMgQEAgc3RydWN0IEF1eGlsaWFyeVBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIuLmU0OWY2YzRj
Y2QzMDk3YjZmOTc3N2M3YWJlNDY5MWM4ZmEyMDVjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjc5LDEyICsyNzksMTIgQEAgYXV0
byBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikgLT4gT3B0aW8KICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYg
KCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBuYW1lOwogICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICBpZiAoIW5h
bWUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICByZXR1cm4ge3sg
V1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKm5hbWUpIH19OwogfQogCkBAIC00OTUsMTIg
KzQ5NSwxMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8TGluZWFyVGltaW5nRnVuY3Rpb24+OjpkZWNv
ZGUoRGVjb2RlciYsIExpbmVhclRpbWluZ0Z1bmN0aW9uJgogdm9pZCBBcmd1bWVudENvZGVyPEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24pCiB7CiAgICAgZW5jb2Rl
ciA8PCB0aW1pbmdGdW5jdGlvbi50eXBlKCk7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8IHRpbWlu
Z0Z1bmN0aW9uLngxKCk7CiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi55MSgpOwogICAg
IGVuY29kZXIgPDwgdGltaW5nRnVuY3Rpb24ueDIoKTsKICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1
bmN0aW9uLnkyKCk7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1bmN0aW9uLnRpbWlu
Z0Z1bmN0aW9uUHJlc2V0KCk7CiB9CiAKQEAgLTUzNiw3ICs1MzYsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBDdWJpY0Jlegogdm9pZCBBcmd1bWVudENvZGVyPFN0ZXBzVGltaW5nRnVuY3Rpb24+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVu
Y3Rpb24pCiB7CiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi50eXBlKCk7Ci0gICAgCisK
ICAgICBlbmNvZGVyIDw8IHRpbWluZ0Z1bmN0aW9uLm51bWJlck9mU3RlcHMoKTsKICAgICBlbmNv
ZGVyIDw8IHRpbWluZ0Z1bmN0aW9uLnN0ZXBQb3NpdGlvbigpOwogfQpAQCAtNTYxLDcgKzU2MSw3
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTdGVwc1RpbWluZ0Z1bmN0aW9uPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFN0ZXBzVGltaW5nRnVuCiB2b2lkIEFyZ3VtZW50Q29kZXI8U3ByaW5nVGlt
aW5nRnVuY3Rpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ByaW5nVGltaW5n
RnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uKQogewogICAgIGVuY29kZXIgPDwgdGltaW5nRnVuY3Rp
b24udHlwZSgpOwotICAgIAorCiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi5tYXNzKCk7
CiAgICAgZW5jb2RlciA8PCB0aW1pbmdGdW5jdGlvbi5zdGlmZm5lc3MoKTsKICAgICBlbmNvZGVy
IDw8IHRpbWluZ0Z1bmN0aW9uLmRhbXBpbmcoKTsKQEAgLTY0NCwxMiArNjQ0LDEyIEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxGbG9hdEJveEV4dGVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBGbG9hdEJveEV4dGVuCiB7CiAgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdEJveEV4
dGVudD46OmVuY29kZShlbmNvZGVyLCBmbG9hdEJveEV4dGVudCk7CiB9Ci0gICAgCisKIGJvb2wg
QXJndW1lbnRDb2RlcjxGbG9hdEJveEV4dGVudD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBG
bG9hdEJveEV4dGVudCYgZmxvYXRCb3hFeHRlbnQpCiB7CiAgICAgcmV0dXJuIFNpbXBsZUFyZ3Vt
ZW50Q29kZXI8RmxvYXRCb3hFeHRlbnQ+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRCb3hFeHRlbnQp
OwogfQotICAgIAorCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFNpemU+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgRmxvYXRTaXplJiBmbG9hdFNpemUpCiB7CkBAIC04MDQsMTIg
KzgwNCwxMiBAQCBPcHRpb25hbDxSZWNlbnRTZWFyY2g+IEFyZ3VtZW50Q29kZXI8UmVjZW50U2Vh
cmNoPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAg
ICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAg
ICBPcHRpb25hbDxXYWxsVGltZT4gdGltZTsKICAgICBkZWNvZGVyID4+IHRpbWU7CiAgICAgaWYg
KCF0aW1lKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAgICAgcmV0dXJu
IHt7IFdURk1vdmUoKnN0cmluZyksIFdURk1vdmUoKnRpbWUpIH19OwogfQogCkBAIC05MTgsNyAr
OTE4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEF1dGgKIH0KIAogYm9vbCBBcmd1bWVudENvZGVy
PEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCi17ICAgIAorewogICAgIFByb3RlY3Rpb25T
cGFjZSBwcm90ZWN0aW9uU3BhY2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm90ZWN0aW9u
U3BhY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MjcsNyArOTI3LDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIEF1dGhlbnRpY2EKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3Bvc2VkQ3JlZGVu
dGlhbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIHByZXZpb3VzRmFp
bHVyZUNvdW50OyAgICAKKyAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHByZXZpb3VzRmFpbHVyZUNvdW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC05MzgsNyArOTM4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF1dGhlbnRpY2EKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXJyb3IpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBjaGFsbGVuZ2UgPSBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShwcm90ZWN0aW9uU3BhY2UsIHByb3Bvc2VkQ3JlZGVudGlhbCwgcHJldmlv
dXNGYWlsdXJlQ291bnQsIGZhaWx1cmVSZXNwb25zZSwgZXJyb3IpOwogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtOTc4LDcgKzk3OCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQcm90ZWN0aW9uU3Bh
Y2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUHJvdGVjdGlvblNwYWNlJiBzCiAgICAgU3Ry
aW5nIHJlYWxtOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVhbG0pKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCisKICAgICBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZSBhdXRoZW50aWNhdGlvblNjaGVtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF1dGhlbnRp
Y2F0aW9uU2NoZW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAyNCw3ICsxMDI0LDcg
QEAgYm9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVy
c2lzdGVuY2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwZXJzaXN0ZW5jZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKHVzZXIs
IHBhc3N3b3JkLCBwZXJzaXN0ZW5jZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDU1LDcg
KzEwNTUsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlSW1hZ2UoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPEltYWdlPiYgaW1hZwogICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7CiAgICAgaWYgKCFiaXRtYXApCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMjksNyArMTEyOSw3IEBAIE9wdGlvbmFsPFJlZjxO
YXRpdmVJbWFnZT4+IEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvCiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisKICAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSho
YW5kbGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTE5Niw3ICsxMTk2LDcg
QEAgT3B0aW9uYWw8UmVmPEZvbnQ+PiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogdm9pZCBBcmd1bWVudENvZGVyPEN1cnNvcj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsKICAgICBlbmNvZGVyIDw8IGN1
cnNvci50eXBlKCk7Ci0gICAgICAgIAorCiAgICAgaWYgKGN1cnNvci50eXBlKCkgIT0gQ3Vyc29y
OjpDdXN0b20pCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU1OCw3ICsxNTU4LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPERhdGFiYXNlRGV0YWlscz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBEYXRhYmFzZURldGEKICAgICBlbmNvZGVyIDw8IGRldGFpbHMuY3JlYXRpb25UaW1lKCk7
CiAgICAgZW5jb2RlciA8PCBkZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUoKTsKIH0KLSAgICAKKwog
Ym9vbCBBcmd1bWVudENvZGVyPERhdGFiYXNlRGV0YWlscz46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBEYXRhYmFzZURldGFpbHMmIGRldGFpbHMpCiB7CiAgICAgU3RyaW5nIG5hbWU7CkBAIC0x
ODkzLDcgKzE4OTMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmF3RmlsZT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBSYXdGaWxlJiBmaWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHRydWU7CiB9Ci0gICAgCisKIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGE+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVEYXRhJiBzZXR0aW5ncykKIHsKICAg
ICBlbmNvZGVyIDw8IHNldHRpbmdzLnRpdGxlOwpAQCAtMTkxMSw3ICsxOTExLDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFNoYXJlRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURh
dGEmIHNldHRpbmdzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9
Ci0gICAgCisKIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNldHRp
bmdzKQogewogICAgIGVuY29kZXIgPDwgc2V0dGluZ3Muc2hhcmVEYXRhOwpAQCAtMjAwMCw3ICsy
MDAwLDcgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRD
aGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJgogICAgIFRleHRDaGVja2luZ1R5cGUgdHlw
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIAorCiAgICAgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOwogICAg
IGRlY29kZXIgPj4gcmFuZ2U7CiAgICAgaWYgKCFyYW5nZSkKQEAgLTIxMjQsNyArMjEyNCw3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBGCiAgICAgRmxvYXRTaXplIGFsaWdubWVudE9mZnNldDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsaWdubWVudE9mZnNldCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKKwogICAgIFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VzIGFu
Y2hvckVkZ2VzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYW5jaG9yRWRnZXMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8
Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgRgogCiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRWaWV3cG9ydFJlY3RBdExhc3RMYXlv
dXQodmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0KTsKICAgICB2aWV3cG9ydENvbnN0cmFpbnRzLnNl
dExheWVyUG9zaXRpb25BdExhc3RMYXlvdXQobGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCk7Ci0g
ICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE5MiwxMSArMjE5MiwxMSBAQCBib29s
IEFyZ3VtZW50Q29kZXI8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsCiAgICAgRmxvYXRTaXplIGFsaWdubWVudE9mZnNldDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFsaWdubWVudE9mZnNldCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKKwogICAgIFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VzIGFuY2hvckVk
Z2VzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYW5jaG9yRWRnZXMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCisKICAgICBmbG9hdCBsZWZ0T2Zmc2V0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobGVmdE9mZnNldCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyMTIsNyAr
MjIxMiw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwKICAgICBmbG9hdCBib3R0b21PZmZzZXQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib3R0b21PZmZzZXQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCisKICAgICBGbG9hdFJlY3QgY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjI4LDcgKzIyMjgsNyBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsCiAgICAgRmxvYXRTaXplIHN0aWNreU9mZnNldEF0TGFzdExheW91dDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0aWNreU9mZnNldEF0TGFzdExheW91dCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIEZsb2F0UG9pbnQgbGF5ZXJQb3NpdGlvbkF0TGFz
dExheW91dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVyUG9zaXRpb25BdExhc3RMYXlv
dXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsCiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRSaWdodE9mZnNldChy
aWdodE9mZnNldCk7CiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRUb3BPZmZzZXQodG9wT2Zm
c2V0KTsKICAgICB2aWV3cG9ydENvbnN0cmFpbnRzLnNldEJvdHRvbU9mZnNldChib3R0b21PZmZz
ZXQpOwotICAgIAorCiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5zZXRDb25zdHJhaW5pbmdSZWN0
QXRMYXN0TGF5b3V0KGNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQpOwogICAgIHZpZXdwb3J0
Q29uc3RyYWludHMuc2V0Q29udGFpbmluZ0Jsb2NrUmVjdChjb250YWluaW5nQmxvY2tSZWN0KTsK
ICAgICB2aWV3cG9ydENvbnN0cmFpbnRzLnNldFN0aWNreUJveFJlY3Qoc3RpY2t5Qm94UmVjdCk7
CkBAIC0yMzYyLDcgKzIzNjIsNyBAQCBib29sIGRlY29kZUZpbHRlck9wZXJhdGlvbihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiYgZmlsdGVyKQogICAgICAgICBmaWx0
ZXIgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjYwMSw5ICsyNjAxLDkgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPEV4Y2VwdGlvbkRldGFpbHM+OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBF
eGNlcHRpb25EZXQKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHN0YXRpc3RpY3MpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnJlZ2lzdHJh
YmxlRG9tYWluOwotICAgIAorCiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmxhc3RTZWVuLnNl
Y29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKTsKLSAgICAKKwogICAgIC8vIFVzZXIgaW50ZXJhY3Rp
b24KICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uOwogICAgIGVu
Y29kZXIgPDwgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRz
U2luY2VFcG9jaCgpLnZhbHVlKCk7CkBAIC0yNjE5LDcgKzI2MTksNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBXZWJDbwogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBlbmNvZGVyIDw8IHN0YXRp
c3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluczsKLSAgICAKKwogICAgIC8vIFN1YnJl
c291cmNlIHN0YXRzCiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnM7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG87CkBAIC0yNjM0LDkgKzI2MzQsOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDbwogICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5mb250c0ZhaWxlZFRvTG9hZDsKICAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3MuZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQ7CiAgICAgZW5jb2Rl
ciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lUmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdl
YkFQSXM7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MuY2FudmFzQWN0aXZpdHlS
ZWNvcmQ7Ci0gICAgCisKICAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MubmF2aWdhdG9yRnVuY3Rp
b25zQWNjZXNzZWQ7CiAgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0Fj
Y2Vzc2VkOwogI2VuZGlmCkBAIC0yNjU1LDcgKzI2NTUsNyBAQCBPcHRpb25hbDxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiBBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNv
ZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFzdFNlZW5UaW1lQXNEb3VibGUpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MubGFzdFNlZW4gPSBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMobGFzdFNlZW5UaW1lQXNEb3VibGUpOwotICAgIAorCiAgICAg
Ly8gVXNlciBpbnRlcmFjdGlvbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5o
YWRVc2VySW50ZXJhY3Rpb24pKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMjcy
NiwyNiArMjcyNiwyNiBAQCBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcmd1bWVu
dENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUoRAogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzdGF0aXN0aWNzLmlzVmVyeVByZXZhbGVudFJlc291cmNlKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGlzdGljcy5kYXRhUmVjb3Jkc1JlbW92ZWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotICAgIAorCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MuZm9udHNGYWlsZWRUb0xvYWQpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIAorCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNz
LmZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICAKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZVJlZ2lz
dHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICAKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5jYW52
YXNBY3Rpdml0eVJlY29yZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MubmF2aWdhdG9yRnVuY3Rpb25zQWNj
ZXNzZWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAorCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgpAQCAtMjkxMCwxMiArMjkxMCwxMiBAQCBP
cHRpb25hbDxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlv
bk9wdGlvbj46OmRlY29kZShEZWNvZAogICAgIGRlY29kZXIgPj4gZGlzcGxheU5hbWU7CiAgICAg
aWYgKCFkaXNwbGF5TmFtZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKKwog
ICAgIE9wdGlvbmFsPE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlPiB0eXBlOwogICAgIGRlY29k
ZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgCisKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGlzcGxheU5hbWUpLCBXVEZNb3ZlKCp0
eXBlKSB9fTsKIH0KIApAQCAtMjk1OCw3ICsyOTU4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFZl
Y3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b24KICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCiAgICAgICAgIGVuY29kZXIgPDwg
Km9yaWdpbjsKIH0KLSAgICAKKwogYm9vbCBBcmd1bWVudENvZGVyPFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgdWludDY0X3QgZGF0YVNpemU7CkBAIC0z
MjIxLDQgKzMyMjEsODIgQEAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBX
VEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5hbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFu
dGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOwor
ICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJp
YnV0ZXMuc2hhcmVSZXNvdXJjZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wy
OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8
PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LmluaXRpYWxQb3dlclByZWZlcmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIg
PDwgYXR0cmlidXRlcy54ckNvbXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMu
c3RlbmNpbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBo
YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9y
UGVyZm9ybWFuY2VDYXZlYXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5z
aGFyZVJlc291cmNlcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25z
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZl
cmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOwor
fQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3Rp
dmVJbmZvLm5hbWU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2Rl
ciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGFjdGl2ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5z
aXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5m
bzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1NWUy
MTFlMTdjNGJlZGVmMTcwNWQ2Li4xZGFlOTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2ZTlm
YzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtNzEsNiArNzEsMTMgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJB
cnJheVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIx
MCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0
aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlczsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0
IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNvcmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbj4gewogfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBz
dGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewog
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsK
K307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUwODYz
NjVkYmY3N2ZhOThlNDFjMWM3NGEzZTdlMjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdiMDQ4
YTNkZWM2Y2Y4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwg
c2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1l
ZGlhSW5HUFVQcm9jZXNzOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3Vs
ZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRF
bmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVy
OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAgT3B0
aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXgg
ZDkxZTQ2MDM4ZjMwOWI1MTMwYmZkZTU4ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1YmY0
ZjkyY2YwNmZlNWUxMTIwNWE0YjUxMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0lu
R1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nl
c3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFs
c2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BV
UHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29k
ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2Ug
fTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDliZDhhODE3NTQ5ZjU4ZmUzODNkNzI1ZGE2
NjNmM2JjNTRjYTBkNzQuLjc3ZTliNGQ1Y2M3NTJmYmNkYjZiNjVmOWFkYzI2MDE5NTZjYTE0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnNDRi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVy
c1NvdXAuY3BwCmluZGV4IDFkODRlMmZlMjY4ZjM0NjBlYjI5NzVjNDJiYTk1ZDE0ZjFkMjM1Y2Yu
LmZhMjY4ZDU4NGEwZmM4ZGY4N2EyMWZhNDU2MDc3YjhjNWQ0MmI4NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNw
cApAQCAtODEsNyArODEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENlcnRpZmljYXRlSQogICAgIC8vIEVuY29k
ZSBzdGFydGluZyBmcm9tIHRoZSByb290IGNlcnRpZmljYXRlLgogICAgIGZvciAoc2l6ZV90IGkg
PSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgR0J5
dGVBcnJheSogY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZXNEYXRhTGlzdFtpIC0gMV0uZ2V0KCk7
Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoSVBDOjpEYXRh
UmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKSk7CisgICAgICAg
IGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZp
Y2F0ZS0+bGVuKTsKICAgICB9CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
Q2VydGlmaWNhdGVJbmZvJiBjCiAgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRpZmlj
YXRlOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjaGFpbkxlbmd0aDsgaSsrKSB7CiAg
ICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjZXJ0aWZpY2F0
ZURhdGFSZWZlcmVuY2UpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRl
RGF0YVJlZmVyZW5jZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgR0J5
dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyhjZXJ0aWZp
Y2F0ZURhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI3Nyw0ICsyNzcsMyBAQCBPcHRpb25hbDxT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+ICBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdQogI2VuZGlmCiAKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDkxN2YwMWJlMWM5
ZjhjYWEyYWJmN2YwZjg5MGY4OTVhM2YyZWY4Ni4uZjgzYTRjYWI5NWNhOGYwMTVjODk4NjVkN2Zm
OTMwYWY1MWU1ZjFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApAQCAtMTM3LDcgKzEzOCw2IEBAIFBsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIEBu
by11bmlmeQogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwIEBuby11bmlmeQogUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwIEBuby11bmlmeQotUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2Uu
Y3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZv
cm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5j
cHAgQG5vLXVuaWZ5CkBAIC01NjgsNiArNTY4LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTY5MywzICs2OTUsNiBAQCBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5jcHAKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3Bw
CitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDRlYThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJkNmY5
NzMuLjcxZmZjNWYyZTA0ZGVkMDVkZThmYWVhMmUwOWEwNDkyNjNhNjkxZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTU2LDYgKzU2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHAKIAogR1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BV
U2VydmljZUVudHJ5UG9pbnQubW0KK0dQVVByb2Nlc3MvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0K
IEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCAyZmUzODYyNTk0NjNiZmIzNjIz
ZWJiZGI0ZmVmNWY4MzkzNmIwZDNkLi43MzdiNjI1ODE5ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2Vh
ZjM5NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxv
YWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxv
YWRpbmdDbGllbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNv
bkxvYWRpbmdDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaAppbmRleCA0ZjM5OGI1MzBmNjA4NTc1Yzk2N2I4M2M3NGZhMmY0MzI4ZjZj
ZTNiLi44Y2E5N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4NTYwM2E4YTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTMsNyAr
NTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIo
KSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2Us
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRP
cHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pOworICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBDOjpDb25u
ZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3lu
Y1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAogICAgIGVudW0gY2xhc3Mg
U2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFllcyB9Owog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1Jl
cGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PElQQzo6
U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0g
U2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CkBAIC02NSw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3lu
Y09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGlt
ZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CkBAIC0xNjMsMTIgKzE2NCwxMiBAQCBib29s
IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgT3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKLWJvb2wgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVw
bHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpTZW5kU3luY1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5j
KFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBz
ZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoVTo6aXNTeW5jLCBTeW5jTWVz
c2FnZUV4cGVjdGVkKTsKIAogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBUcmFjZVNjb3BlIHNjb3BlKFN5bmNN
ZXNzYWdlU3RhcnQsIFN5bmNNZXNzYWdlRW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9u
L1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDgyM2MyMDJhODU2YTAxMzZk
ZDllYTc1OWYwZWNkZWJhNDdmNGYzNjIuLmI1NzdjYmRmOGUwNzhmNGZiNGY4NzM0ZDdiZmQ2MDhk
MjAzODgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
U3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIE5hdmlnYXRpb25T
T0F1dGhvcml6YXRpb25TZXNzaW9uLCBwdWJsaWMgRnJhbWVMb2FkU3RhdGU6Ok9ic2VydmVyIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5oCmluZGV4IGZmOThiODRmYTg5ZGJlZmRkNjQ2NjZiYmJhNDJmYzkwY2VjMzU3N2Yu
LjEyOGEzOTc3ZTYzZWU0ZjRlZjFmMjBlYWFlYzg2ZDA4ZWNiZjU4ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM1LDEwICszNiw2
IEBACiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAotbmFtZXNw
YWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0YTEwZGE5YjU0MWZlZTI4MjA4MDhj
MWU1MGQzZmE5MmIuLjlkYjNhNTA5YjkxNGMwOTNjYWYxNjlhMDVkNjViNTdlZDBjODAxM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGF5ZXJU
cmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgpAQCAtODAsMTAgKzgxLDYgQEAgY2xhc3Mg
T3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1uYW1lc3Bh
Y2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwCmluZGV4IDI0YjYzM2U0ODRkMmEzNWJhNzRkNDVmMTJlZGUzNGEwZjc4Y2Ew
YTYuLjI0OGU1M2EwODNkMTlhMGVmNGQ4M2MyM2I4Y2NlMDAzNDVkYWFiMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0
LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
CmluZGV4IDEyOWEzNDBmMDg5NjRkMGZmYTIzYTM3MTAxYTA5YTg1NmQzY2NjYjIuLmE0ZDhkN2Nk
ODA0ZTY1NjBkYWJmZGU2MTE0ZmYwNjIxMWJhZDQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxkU2hhcmVkLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmgiCkBAIC00OCwxMCArNDksNiBAQCBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0
eWxlU2hlZXQ7CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0K
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMzYzUyZDE2MGM0OWUw
MmFiMmUyNDc4NGNkY2QzZTFkMjVkYmU2YWMuLmJjZDAyN2IxNzM4MWJhODhhNWMzMWI5NzgwMDFi
ZTZjODI1N2VmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNTgsNyArNTgsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0b3JNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNzkyNyw2ICs3OTI2LDEwIEBAIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVBy
b2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFi
bGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgPSBwcmVm
ZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFibGVkKCk7CiAgICAgcGFy
YW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQ
VVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcGFyYW1l
dGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BV
UHJvY2Vzc0ZvcldlYkdMRW5hYmxlZCgpOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZVZQOURlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAj
aWYgRU5BQkxFKFZQOSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGFyYW1ldGVycy5zaG91bGRF
bmFibGVWUDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkgJiYg
KCFXZWJDb3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0RlY29k
ZXJFbmFibGVkT25CYXR0ZXJ5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA2NDI0NDZmOWU5YWE0YjUyMTExNDkwM2I2ZjBiNWY3MTFmOTFiMmU1Li40MzdhYjc1
MGIzNWFiMTYzYjJhNTgwYWU4NjcyZWQ0NjAxNjQ3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCiAjaW5j
bHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rp
b24uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTIwMyw3ICsyMDQsNiBAQCBlbnVt
IGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgSVBD
IHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFS
ZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IGY0MjQ1Y2U2NWU5ZDJkNTY1YjNmMTI1
ZjM0NTdhMjU2ZmIzOWM5ZDQuLmQyMzhjMmExYTYwOGRjNWE0NjMyZTZhMTk5NzdkYjYxYmFiNjEz
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgK
QEAgLTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGQ0NDJiNjJiNTIy
NTg3ZjkwZmE2ODlkNTZiMjA2Mjc2ZGViNDQ4MmIuLjgyNWNkMDI2ODhhMjY4MjE5NDFmZjdhNDE4
ZjRkZjVhOTc1YmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmgKQEAgLTM4LDEwICszOCw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZv
OwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMGNjMDYzZjY4ZDAxYmQ1ZDdkNDljNTU5YjE2OTY5MTg1M2ZlYmRjMy4uYjcwMDJmNDE1
ODZmZDRlZjg4NzQwNTllNzM2OWJkYjIxZTBiOWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MDEsNyArNzAxLDYgQEAKIAkJMkQ5
MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0
RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNG
RCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsg
fTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAw
NThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkz
RkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5j
cHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3
RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5
M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9Owog
CQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUz
NTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtMTMwNiw2ICsx
MzA1LDcgQEAKIAkJN0FGQkQzNjMyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGls
cy5oICovOyB9OworCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1
MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OwogCQk3QzA2NUYyQzFD
OENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENE
OTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07
CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0Iw
QkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAv
KiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9
OwpAQCAtMjcyMyw3ICsyNzIzLDYgQEAKIAkJMUFDNUZGQzExNzRCRkQxQjAwMDE0ODNEIC8qIFBs
dWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlTG9hZFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAv
KiBEYXRhUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERhdGFSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NTM3
RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBQzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAv
KiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00Mzg5LDYgKzQzODgsMTcgQEAKIAkJN0FGQkQzNjUyMUU1MUJBQjAw
NURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aDsgcGF0aCA9IENsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAv
KiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8q
IFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGls
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMURCMjY1MjU2NjhDRTAwMDBF
MjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4RTM0
NDI1NzdBQzM3MDA5RjFEODMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjUyNTRB
RkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjcyNTRBRkUx
NzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2OTI1NEFGRUE3
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9y
bWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2lu
SW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY4MCwxMSAr
NjY5MCwxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVy
LmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNw
cCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAq
LywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywK
IAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJ
QkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRB
MjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0
MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3
MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJD
QjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEg
LyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29k
ZXIuaCAqLywKQEAgLTgzNTYsMTEgKzgzNjYsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0
RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMg
LyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAw
NkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzky
NDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcy
N0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEg
LyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAw
QjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8s
CisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2
NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8q
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYw
OTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODM3NSw5
ICs4MzkwLDE0IEBACiAJCTU1MDY0MEExMjQwNzFBMjkwMEFBRTA0NSAvKiBncmFwaGljcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0I0OEUzNDMyNTc3
QUJGODAwOUYxRDgzIC8qIGNvY29hICovLAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAv
KiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAw
M0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4
QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk3Qjkw
NDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAor
CQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
ICovLAorCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0
MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBB
MjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJ
NTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywK
QEAgLTg3NzUsNiArODc5NSwxNCBAQAogCQkJbmFtZSA9IENsYXNzaWZpZXI7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQk3QjQ4RTM0MzI1NzdBQkY4MDA5RjFEODMgLyogY29j
b2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdCNDhF
MzQ0MjU3N0FDMzcwMDlGMUQ4MyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAq
LywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUgLyogY29jb2EgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTEyMDUsNiArMTEyMzMsNyBAQAogCQkJ
CTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBp
biBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENv
ZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMg
LyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2RjYw
MDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRkE2MzRGMjM0
RjdDNjQwMEZGQTg2NCAvKiBBc3luY1JldmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMTMyNzQsNyArMTMzMDMsNiBAQAogCQkJCTJEOTJBNzg1MjEyQjZBQjEwMEY0OTNGRCAvKiBC
bG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RDIx
MkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyRDky
QTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OURBQTM4QzI0Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dzZXJDaGVj
a3MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcgLyogRGV2
aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgK
aW5kZXggZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2OThhMjEyOTBkMzYxZDRhNi4uYzlkYzY4MmI4
NzU0OWI4MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAt
MzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNl
OwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBj
bGFzcyBQYXltZW50Q29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyYzBkZjViOWY1NDk2ODQ3ZWQ2NjkxMGJm
MmYzOWIyY2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5OTg4NzRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5oCkBAIC0zNSwxMCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUyMTJj
NjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07
Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MmI3YjllYWMxODkwOThmMzU4NWMxYTRjNzQyYzA1ODlmMTM2MjhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgVVNF
KEFOR0xFKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWZQdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoYXR0
cmlidXRlcykpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cnMpCisgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKK3sKKyAg
ICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2
ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKK30KKwor
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkoKQoreworICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1l
c3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciksIDApOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHBsYXRmb3JtU3dhcENoYWluKCku
cmVjeWNsZUJ1ZmZlcigpOworI2VuZGlmCit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAorewor
ICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdo
dCkKK3sKKyAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOworICAgIG1fY3VycmVudEhlaWdodCA9
IGhlaWdodDsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVz
aGFwZSh3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkK
K3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJT
ZW5kUmlnaHQ7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9
IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5k
UmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewor
ICAgICAgICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dhcENoYWluKCk7CisgICAgICAgIHNjLnJlY3lj
bGVCdWZmZXIoKTsKKyAgICAgICAgc2MucHJlc2VudCh7IFdURk1vdmUoZGlzcGxheUJ1ZmZlciks
IG51bGxwdHIgfSk7CisgICAgfQorI2Vsc2UKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyNlbmRpZgorICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRl
bnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVu
c2lvbiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQorewor
ICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgbm90IGltcGxlbWVudGVkIGJlY2F1c2UgaXQncyBub3Qg
Y2xlYXIgdGhpcyBpcyB0aGUgcmlnaHQgd2F5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5MzQ5CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJ
bWFnZUJ1ZmZlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUmVmUHRyPEltYWdl
RGF0YT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9JbWFnZURhdGEoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChT
dHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25z
KQoreworICAgIGlmIChtX2RpZEluaXRpYWxpemUpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6YXRp
b24gdGltZWQgb3V0IGJlZm9yZSwgc28gbG9zZSB0aGUgY29udGV4dCBub3cuCisgICAgICAgIHdh
c0xvc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbml0aWFsaXplKGF2YWlsYWJs
ZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIG1fZGlkSW5pdGlhbGl6ZSA9
IHRydWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCgp
Cit7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAg
ICAgICAgY2xpZW50LT5mb3JjZUNvbnRleHRMb3N0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6d2FzQ2hhbmdlZCgpCit7CisgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAgICAgICAgY2xpZW50LT5kaXNwYXRjaENvbnRl
eHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6d2FpdFVudGlsSW5pdGlhbGl6ZWQoKQoreworICAgIGlmIChtX2RpZEluaXRpYWxp
emUpCisgICAgICAgIHJldHVybjsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9u
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCk7CisgICAgaWYgKGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVk
PihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcywgSVBDOjpXYWl0Rm9yT3B0aW9u
OjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQorICAgICAgICByZXR1cm47
CisgICAgLy8gVGltZWQgb3V0LCBzbyByZXBvcnQgaW5pdGlhbGl6ZWQgd2l0aCBkdW1teSBkYXRh
LiBXZSBzaG91bGQgbG9zZSB0aGUgY29udGV4dC4KKyAgICB3YXNDcmVhdGVkKCIiLCAiIik7Cisg
ICAgLy8gRklYTUU6IE5lZWQgdG8gbWFyayB0aGUgY29udGV4dCBhcyBsb3N0LCBidXQgaXQncyBu
b3Qgc2FmZSB0byBmb3JjZSBsb3N0IGluIHRoaXMgY2FsbCBzdGFjay4KK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YTNhYWEwYzE4Y2E3MGIzYWU5NjYxNzA2MDFmZDcxOWQ1OTQxOTU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTAsMCArMSw0MTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCisK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCisjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFdl
YiBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgaW50ZXJm
YWNlLiBUaGUgaW1wbGVtZW50YXRpb24KKy8vIGNvbnZlcnRzIHRoZSBpbnRlcmZhY2UgdG8gYSBz
ZXF1ZW5jZSBvZiBJUEMgbWVzc2FnZXMgYW5kIHNlbmRzIHRoZSBtZXNzYWdlcyB0bworLy8gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gR1BVIHByb2Nlc3MuCisvLyBUaGUgaW1wbGVtZW50YXRp
b24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IGZpbmFsCisg
ICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eT4KKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKSBmaW5hbDsKKwor
ICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmlu
YWw7CisgICAgdXNpbmcgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OmlzRW5hYmxlZDsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5n
JiBleHRlbnNpb24pIGZpbmFsOworICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkg
ZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9p
ZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZp
bmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisKKyAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRl
ZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCBzY3JpcHQuCisgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7Cisg
ICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CisgICAgYm9v
bCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2
ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgZmluYWw7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgZmluYWw7
CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dM
dWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRCdWZm
ZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZv
aWQgYmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcx
KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFRleHR1cmUoR0NHTGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRDb2xv
cihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dM
Y2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9k
ZSkgZmluYWw7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJH
QiwgR0NHTGVudW0gbW9kZUFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuYyhHQ0dMZW51
bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRnVuY1Nl
cGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBo
YSwgR0NHTGVudW0gZHN0QWxwaGEpIGZpbmFsOworICAgIEdDR0xlbnVtIGNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKEdDR0xiaXRm
aWVsZCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdD
R0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7
CisgICAgdm9pZCBjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpIGZpbmFsOworICAgIHZvaWQg
Y2xlYXJTdGVuY2lsKEdDR0xpbnQgcykgZmluYWw7CisgICAgdm9pZCBjb2xvck1hc2soR0NHTGJv
b2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xl
YW4gYWxwaGEpIGZpbmFsOworICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZp
bmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVCdWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZUZyYW1lYnVmZmVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQ
cm9ncmFtKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVSZW5kZXJidWZmZXIo
KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcw
KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRleHR1cmUoKSBmaW5hbDsKKyAg
ICB2b2lkIGN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlQnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1
ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUHJvZ3Jh
bShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBm
dW5jKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKSBmaW5hbDsK
KyAgICB2b2lkIGRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKSBm
aW5hbDsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkg
ZmluYWw7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgp
IGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVt
IG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgZW5hYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBl
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBm
aW5pc2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoKCkgZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdD
R0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKSBmaW5hbDsK
KyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdD
R0xpbnQgbGV2ZWwpIGZpbmFsOworICAgIHZvaWQgZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpIGZp
bmFsOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAg
ICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZVVuaWZv
cm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYg
YXJnMikgZmluYWw7CisgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRCdWZm
ZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAg
IFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRGbG9h
dHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAg
IHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVl
KSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5h
bDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQg
aW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFudihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dM
ZW51bSBnZXRFcnJvcigpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwg
R0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xp
bnQqIHByZWNpc2lvbikgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0VGV4
UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2
b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9y
bWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1
ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVj
dCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIEdDR0xzaXplaXB0ciBnZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsK
KyAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAg
ICBHQ0dMYm9vbGVhbiBpc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IEdDR0xib29sZWFuIGlzRW5hYmxlZChHQ0dMZW51bSBjYXApIGZpbmFsOworICAgIEdDR0xib29s
ZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dM
Ym9vbGVhbiBpc1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dM
Ym9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IEdDR0xib29sZWFuIGlzU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
dm9pZCBsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApIGZpbmFsOworICAgIHZvaWQgbGlua1Byb2dy
YW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHBvbHlnb25PZmZz
ZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKSBmaW5hbDsKKyAgICB2b2lkIHJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHNh
bXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7
CisgICAgdm9pZCBzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVu
YyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAg
dm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdD
R0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdD
R0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51
bSBmYWNlLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51
bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZvaWQg
c3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0g
emZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAg
ICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTFp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAg
IHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQg
dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZv
aWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDE+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1
ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZh
bHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NH
TGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVy
KEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFu
IG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsK
KyAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CisgICAgdm9p
ZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRh
dGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRh
dGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAg
dm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5h
bDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRw
dHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7
CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNl
ZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXpl
aSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgUGxhdGZv
cm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBp
c1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBiaW5k
VmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGNvcHlC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBH
Q0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0
cikgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNy
Y1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50
IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVy
KSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50
cykgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZv
aWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
IGZpbmFsOworICAgIHZvaWQgdGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpIGZpbmFsOworICAgIHZvaWQg
dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
ZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21w
cmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBT
dHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMdWludCB2MCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3Vp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtM3VpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpIGZpbmFsOworICAg
IHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVp
bnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVl
cykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwg
R0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRy
IG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2Rl
LCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzKEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVy
aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVl
cykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGlu
dCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykgZmluYWw7Cisg
ICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVRdWVyeSgpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUXVlcnkoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNRdWVyeShQbGF0Zm9y
bUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luUXVlcnkoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdD
R0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRRdWVy
eU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRl
bGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICBHQ0dMYm9v
bGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lk
IGJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikgZmlu
YWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCBwYXJhbSkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlv
biwgR0NHTGJpdGZpZWxkIGZsYWdzKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NH
THN5bmMgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApIGZp
bmFsOworICAgIEdDR0xlbnVtIGNsaWVudFdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRm
aWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSBmaW5hbDsKKyAgICB2b2lkIHdhaXRTeW5j
KEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZp
bmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3Qg
aWQpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1H
TE9iamVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luVHJh
bnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkgZmluYWw7CisgICAgdm9pZCBl
bmRUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2
YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkgZmluYWw7CisgICAgdm9pZCBnZXRUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRi
YWNrKCkgZmluYWw7CisgICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwor
ICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwg
UGxhdGZvcm1HTE9iamVjdCBidWZmZXIpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVy
LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NH
THVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmluYWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+
IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBH
Q0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50
IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsOworICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJs
b2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOworICAgIEdDR0xpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVm
ZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NH
TGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwg
R0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7
CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJh
eU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIFN0cmluZyBn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgZmluYWw7CisgICAgdm9pZCBk
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NH
THNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRQaXhl
bHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1l
dGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJh
bSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xm
bG9hdCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRQ
cm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBw
cm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0Qm9vbGVh
bmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAv
LyBOT0xJTlQKKyAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiB2YWwpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgZmlu
YWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHVpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAg
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0
ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKworcHJvdGVjdGVkOgorICAgIC8vIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxp
emVkKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQu
CisgICAgdm9pZCB3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmlu
ZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzTG9zdCgpOworICAgIHZvaWQg
d2FzQ2hhbmdlZCgpOworCisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBib29sIG1fZGlkSW5p
dGlhbGl6ZSB7IGZhbHNlIH07CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpIH07Cit9OworCisvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdl
YktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBz
Y3JpcHQuCitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xlbnVtLCB1aW50MzJfdD4p
Oworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGJvb2xlYW4pID09IHNpemVvZihib29sKSk7Citz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xiaXRmaWVsZCwgdWludDMyX3Q+KTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJ5dGUsIGludDhfdD4pOworc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWJ5dGUsIHVpbnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTHNob3J0LCBpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZV92PEdDR0x1c2hvcnQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PEdDR0xpbnQsIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
R0NHTHNpemVpLCBpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1
aW50LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMZmxvYXQs
IGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xoYWxmZmxvYXQsIHVp
bnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xjbGFtcGYsIGZsb2F0
Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x2b2lkLCB2b2lkPik7CitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFBsYXRmb3JtR0xPYmplY3QsIHVpbnQzMl90Pik7Citz
dGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMY2hhcikgPT0gc2l6ZW9mKHVpbnQ4X3QpKTsKK3N0YXRp
Y19hc3NlcnQoc2l6ZW9mKEdDR0xpbnQ2NCkgPT0gc2l6ZW9mKGludDY0X3QpKTsKK3N0YXRpY19h
c3NlcnQoc2l6ZW9mKEdDR0x1aW50NjQpID09IHNpemVvZih1aW50NjRfdCkpOworLy8gR0NHTHN5
bmMgYW5kIEdDR0wqcHRyIHR5cGVzIGFyZSBwb2ludGVycy4gT24gc29tZSBwbGF0Zm9ybXMsIHRo
ZXkgYXJlIDMyLWJpdC4KKy8vIEN1cnJlbnRseSB3ZSBoYXJkLWNvZGUgaXQgYnkgdXNpbmcgPD0s
IGFuZCBhc3N1bWUgdGhhdCB3ZSBkbyBub3QgdHJhbnNmZXIgYXJyYXlzIG9mIHRoZSB0eXBlcy4K
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOwor
c3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHNpemVpcHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x2b2lkcHRyKSA8PSBzaXplb2YodWludDY0X3QpKTsK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xzeW5jKSA8PSBzaXplb2YodWludDY0X3QpICYmIHNp
emVvZihHQ0dMc3luYykgPT0gc2l6ZW9mKGludHB0cl90KSk7CisvLyBFbmQgb2YgbGlzdCB1c2Vk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU3NGI3OWU0YTg4NjdkODQyZGY5ZTIxNWZmOGVlNGQ0
NjIzYWZjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCittZXNz
YWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAg
IHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2FzQ2hhbmdl
ZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNDFh
M2Q5MWQwOWQ1Yzc2NjNlMjc1NGVkMGFmOWNiMzJiMWQwYWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NyBAQAorLyogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8g
bm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkgJiYgVVNFKEFOR0xFKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2V0RmFpbE5leHRHUFVT
dGF0dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0g
ZXJyb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5
bnRoZXNpemVHTEVycm9yKGVycm9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdCgpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUoR0NHTGVu
dW0gdGV4dHVyZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmF0dGFjaFNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBdHRhY2hTaGFkZXIocHJv
Z3JhbSwgc2hhZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2Nh
dGlvbihhcmcwLCBpbmRleCwgbmFtZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRl
cmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0
YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBm
IGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uKG1vZGUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVSR0IsIEdDR0xl
bnVtIG1vZGVBbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNm
YWN0b3IsIGRmYWN0b3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVu
dW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBk
c3RBbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQp
Cit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdl
dCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0
YXR1czo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhcihtYXNrKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFt
cGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyRGVwdGgoZGVwdGgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKEdDR0xpbnQgcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJTdGVuY2lsKHMpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29s
ZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb2xvck1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4ocmVkKSwgc3Rh
dGljX2Nhc3Q8Ym9vbD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxib29sPihibHVlKSwgc3RhdGljX2Nh
c3Q8Ym9vbD4oYWxwaGEpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwg
eSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
UGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZm
ZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyKCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlRnJhbWVidWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlRnJhbWVidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdM
T2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0oKQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVSZW5kZXJidWZmZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVu
ZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVu
ZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmpl
Y3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFy
ZzApCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXIoYXJnMCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4
dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkN1bGxGYWNlKG1vZGUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlQnVmZmVyKGFyZzApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVGcmFtZWJ1
ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVs
ZXRlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZXB0aEZ1bmMoR0NHTGVudW0gZnVuYykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoTWFzayhzdGF0aWNfY2FzdDxib29sPihmbGFnKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYg
ekZhcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVw
dGhSYW5nZSh6TmVhciwgekZhciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFkZXIoUGxhdGZv
cm1HTE9iamVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRpc2FibGUoR0NHTGVudW0gY2FwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKEdDR0xl
bnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RW5hYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dM
dWludCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmluaXNo
KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmluaXNo
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVt
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0
dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczLCBHQ0dM
aW50IGxldmVsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJn
MywgbGV2ZWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyb250RmFjZShtb2Rl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdlbmVyYXRlTWlwbWFwKEdDR0xlbnVtIHRhcmdldCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2VuZXJhdGVNaXBtYXAo
dGFyZ2V0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQoreworICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUs
IGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwg
QWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9y
bShwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QWN0aXZlVW5pZm9ybTo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dM
aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRTdHJpbmcobmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3Ry
aW5nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxv
YXQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAg
ICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXpl
ICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2Vydjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAg
ICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXpl
ICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludDY0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQ2
NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0KHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
aW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludDY0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KQor
eworICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMaW50IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFBy
b2dyYW1pKHByb2dyYW0sIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRQcm9ncmFtaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxib29s
PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52OjpSZXBseSh2
YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlm
IChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRh
KCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoYm9vbCkpOworICAgIAorfQorCitHQ0dMZW51bSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCit7CisgICAgdWludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKQor
eworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpKGFyZzAs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9u
VHlwZSwgR0NHTFNwYW48R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikKK3sK
KyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlUmVwbHk7CisgICAgaW50
MzJfdCBwcmVjaXNpb25SZXBseSA9IHsgfTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZv
cm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJhbmdlUmVwbHksIHBy
ZWNpc2lvblJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IGlmIChzZW5kUmVzdWx0KSB7CisgICAgICAgIG1lbWNweShyYW5nZS5kYXRhLCByYW5nZVJlcGx5
LmRhdGEoKSwgcmFuZ2UuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgIGlmIChw
cmVjaXNpb24pCisgICAgICAgICAgICAqcHJlY2lzaW9uID0gcHJlY2lzaW9uUmVwbHk7CisgICAg
fQorfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyU291
cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJTb3VyY2UoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
U2hhZGVyU291cmNlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xmbG9hdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJh
bWV0ZXJmKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFRleFBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRl
eFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VGV4UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFs
dWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2OjpSZXBseSh2YWx1ZVJl
cGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5k
UmVzdWx0KQorICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZh
bHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAg
ICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICog
c2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1j
cHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2Yo
dWludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJp
bmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihh
cmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
TG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHNpemVpcHRyIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQoaW5kZXgsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMc2l6ZWlwdHI+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SGludCh0YXJnZXQsIG1v
ZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQoR0NHTGVudW0gY2FwKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc0VuYWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc0VuYWJsZWQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNQcm9ncmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUmVu
ZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNSZW5kZXJidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0
dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojppc1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hh
ZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJl
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJl
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdpZHRoKEdDR0xmbG9hdCBhcmcw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5lV2lk
dGgoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQ
cm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29u
T2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9seWdvbk9mZnNldChmYWN0b3IsIHVu
aXRzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5k
ZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xl
YW4gaW52ZXJ0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
aGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIGFyZzEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJj
ZShhcmcwLCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMs
IEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5j
LCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYs
IG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2sobWFz
ayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdD
R0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVu
Y2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3AoZmFp
bCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xl
bnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9w
U2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBh
cmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFt
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJh
bWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xZihsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmdihs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0yZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZihs
b2NhdGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xpbnQgeCwgR0NHTGludCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtMmkobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMml2KGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0
IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0zZihsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYu
ZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwg
eiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgs
IEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwg
eiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MmZ2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVl
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZh
bHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFs
dWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0
cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVc2VQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWIxZihpbmRleCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZnYoaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWIyZihpbmRleCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZnYoaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZh
bHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliM2Z2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4
LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwg
eSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2
YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxib29sPihub3JtYWxp
emVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NHTGVudW0gdXNhZ2Up
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRh
dGEwKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2FnZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVy
U3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAg
ICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRu
UGl4ZWxzMCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwOjpSZXBseShk
YXRhUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYg
KHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCks
IGRhdGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBp
eGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBv
ZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bXByZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQw
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
aW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3
QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxl
bWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpLCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcihH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNv
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVj
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCit7Cisg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRl
VmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJy
YXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFk
VGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dM
aW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdl
dCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWFkT2Zmc2V0KSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRh
KHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YTo6UmVwbHko
ZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlm
IChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgp
LCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3Jj
WTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgbGF5ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2
ZWwsIGxheWVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
cih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSks
IHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZEJ1ZmZlcihHQ0dMZW51
bSBzcmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJl
YWRCdWZmZXIoc3JjKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5k
YXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0Qx
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNE
MCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDEodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1h
Z2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRU
ZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QxKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNp
emUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXpl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRG
cmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dy
YW0sIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRh
TG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAs
IEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dM
dWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYy
LCB2MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWl2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0
YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTR1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRh
dGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+
KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBz
dGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgz
eDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9z
ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwg
R0NHTGludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4g
dmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWkoaW5k
ZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWl2KGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQ
b2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUs
IEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50
LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
cmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMu
ZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJpdihHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
bGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVl
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZm
ZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZm
ZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYo
YnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1
ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3
YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVRdWVyeSgpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVs
ZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUXVlcnkocXVlcnkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBib29sIHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5W
YWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVy
eShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVy
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRhcmdldCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnkodGFyZ2V0LCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51
bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVl
cnksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9i
amVjdHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBsZXIoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVTYW1wbGVyKHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzU2FtcGxlcihzYW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1NhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1w
bGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2Ft
cGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVy
LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1l
dGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK0dDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQor
eworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0
ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2Ft
cGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK0dDR0xzeW5jIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZlbmNlU3luYyhH
Q0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKK3sKKyAgICB1aW50NjRfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKTsKK30KKworR0NH
TGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKEdDR0xzeW5jIGFy
ZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1N5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGllbnRX
YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGlt
ZW91dCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMoR0NHTHN5bmMgYXJn
MCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19j
YXN0PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKEdDR0xz
eW5jIGFyZzAsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
eW5jaShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2k6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2soaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29s
ZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2soUGxh
dGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVk
YmFjayhpZCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1G
ZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBpZCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRi
YWNrKHRhcmdldCwgaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhH
Q0dMZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBhcmc0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitWZWN0b3I8R0NHTHVpbnQ+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKK3sKKyAgICBWZWN0b3I8
dWludDMyX3Q+IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5h
bWVzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNl
czo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitWZWN0b3I8R0NHTGludD4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVu
dW0gcG5hbWUpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5p
Zm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlm
b3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9j
a0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4OjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJs
b2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybUJsb2NrQmluZGluZyhwcm9n
cmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFt
cykKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5OworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgs
IHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAg
ICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUg
KiBzaXplb2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAgIGludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJs
aXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQg
c3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xp
bnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0
ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRG
cmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlVmVydGV4QXJyYXlPRVMoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVy
dGV4QXJyYXlPRVMoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVW
ZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1N0cmluZyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVu
dE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhU
KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1
ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdC
dWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSht
b2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRp
dmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lk
KiBwaXhlbHMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJp
Ykl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbnRlcmZh
Y2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZh
Y2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSAvLyBOT0xJTlQKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRp
c2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHVpbnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNh
bXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
CmluZGV4IDZkZGVlODdhYmRjYzc2Zjg2OWFkNTU0ZGI1MTEyYjM2YjgyZjJkNmIuLmRhMzk4ODZl
YmM4ZjE2ZDg4ZGZlMTg3M2M1N2E4N2ZlY2Y2ZTQ2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0
Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgYm9vbCwgYm9vbCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMZW51bSwgYm9vbCwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCA5NWM4MzZl
Njk1MDQxZDk3ZDI1OTAzNmZkNzNkZmY1YzQ2YjhmZjkxLi5jOGM1ODI5MDUwYTUyNThmOWQ5MzE5
NzZiOTVmMDVlNTk3YTU2YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3Bw
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25u
ZWN0VG9HUFVQcm9jZXNzKCkKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24u
YWRkQ2xpZW50KCp0aGlzKTsKLSAgICBib29sIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYygKKyAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYygKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZpY2VJZCwgbV9udW1i
ZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwgc2FtcGxlUmF0ZSgp
LCBoYXJkd2FyZVNhbXBsZVJhdGUoKSksCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRp
b25JRCksIDApOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CiAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KHN0cmVhbUZvcm1hdCk7CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQs
IG1fbnVtYmVyT2ZGcmFtZXMpOwotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxX
ZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3Qg
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAppbmRleCBkY2JkNGY4
YWZhZmUxMDYwYTYxYjAzMDUzMWUxMmM3NGQzN2VmZmQzLi4yY2E5N2M2MzdiMWYxOWU4Mjc4YTZh
ZTcxM2M1YzE0ZTY3NjcxN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9B
VURJTykgJiYgUExBVEZPUk0oQ09DT0EpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eU1lc3NhZ2VzLmgiCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKaW5kZXggYjhmNDVhNmQ1YmI0ZGI0NjA5ODgw
MTI0M2JiNWU5MzE3YjFlM2UyYi4uNjViOGZkMGQ3NzM0N2U5MzhiNTY0NTgyMjZiNzhkYTQzYzk3
ODkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKQEAg
LTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIgogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKaW5kZXggZTU5ZTFiMDZiNDQ3ZTVkODBj
YTYxMDUyYzZjN2EzMmM0YmExNDJlNi4uODE5NDA5MGM5MzNiMmYxMWE2NDYwYWIzYzE3NzJkMzc2
MTYzNzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaApAQCAt
MjcsNiArMjcsOSBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
LmNwcAppbmRleCAwZGI4NWFlOWJkMjQxZWJhMWJkYTRlNjIyNDQwZjYzMjhlMWQ4YTBiLi4yOTdl
ZWJkYTE5MTg5ZGZlMGNmZTZjMWVkNzY5YWFjYjlkNmQ5MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckNvcHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggZDU0MjQ0MmM4NDRlNTQ4
M2ZkM2NlZDc4NTA1ZGNhMTg2OTRhZTRhNC4uYTMzOWViN2JmZmQ2YjQ1MTk0ZDI5YTEwOTE0YmZh
MmZmYmQ3NGEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTM1LDcgKzM1LDYgQEAKIAog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMGM2ZjczZDA3MTQ0
YjU2MjY3NjkzNjdjOWYyYTNhNDAxN2VhZGU4MC4uMTY4ZWY0MzVkZGU1NjE0ZDMwZjNiZTI4Njcw
YTQ3YWVkNjE2ZGUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBV
U0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJM
aWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDczOWE0OTZlZjQ5
NGNiNGE2MTg1NjZmZmM2NGQ0YTI2NGE3NGU5ZDAuLjRiZWFlMDYyMzE3YmEyNmE2MDY4M2YxZjQ1
MTIzM2ViMTA3M2FhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKExJ
QldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgpAQCAtNDMsNyArNDQsNiBAQCB1c2lu
ZyBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKIAog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IGNsYXNzIERlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggMmRhZDIwMzg0MmYwZTU1
M2ZlM2I0NjI0NDFlZTk0ZmEyNjQ5M2ExMS4uYzI4Y2U3ZjJlMTdlODlhOGU1MTg2YTc3MDZhMmU4
YTQ0ZjZiN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyQ29udGVudFR5cGVzLmg+CkBAIC01NCw3ICs1NSw2IEBAIGNsYXNzIERhdGE7
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjEsNCArMTYx
LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKaW5kZXggNjI3NWNmNmE2ZTdlNTBj
NmIzNjA2MmUxMzE4NzU3NTI4OWE1ODBlZS4uZTViYTY2MWFlNjZmNTVhOTA3NDY0ZTZmZjM2ZTQy
YjdhZGQwMGRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50JiBpbnNwZWN0b3JGcm9udGVuZCkKICAgICA6
IG1fZnJvbnRlbmRDbGllbnQobWFrZVdlYWtQdHIoaW5zcGVjdG9yRnJvbnRlbmQpKQogewotICAg
IFBhZ2UqIHBhZ2UgPSBpbnNwZWN0b3JGcm9udGVuZC5mcm9udGVuZFBhZ2UoKTsKKyAgICBXZWJD
b3JlOjpQYWdlKiBwYWdlID0gaW5zcGVjdG9yRnJvbnRlbmQuZnJvbnRlbmRQYWdlKCk7CiAgICAg
QVNTRVJUKHBhZ2UpOwogCiAvLyAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW8KICAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0
ZShleHRlbnNpb25JRCksCiAgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZGlzcGxheU5hbWUp
LAogICAgIH07Ci0gICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCku
ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RG
TW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBt
X2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRX
aXRoUmVzdWx0QXN5bmMoInJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyks
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3Bh
dGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
IXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBleHRlbnMKICAgICB9CiAKICAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4gYXJndW1lbnRz
IHsgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCkgfTsKLSAgICBtX2Zyb250ZW5kQ2xp
ZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5
bmMoInVucmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRB
UElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1bnJlZ2lzdGVy
RXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQm
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4
dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMwNjRlOWM0YWZjYzJjZmY1NGEzMjVlMjUzMWVkMDUy
MmEwMDEzOTMuLmI5Nzk0NjU5ZWFiZDE4NGIzODljMDZkMTMyZjhjNDJmODA1MjNjYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJ
UEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCA4NjU3MTFiMzY2YzI4ZGY0ODRiNGNkYzA3YWEzZmNmM2RjZWJmMmY2Li42OTQ4OTZjOTk3YTQ5
NDBkYmFiMmRhNzY1NzgyMGEyNzhhZjFkYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNiw3ICsyNiw2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIK
IAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUz
OTY2ZmIuLjdlMWQ0OTk0NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3Mzc3ODAwZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRh
UmVmZXJlbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk0ZWYwZDFmY2UyZTYwMWRmNDQ5Y2ZmODUz
OWZiZDE2NDc5M2ViZTIuLmZmNjlmNTYwOWU1NzdjYWM3NzdmMDRhZmE3NGFmMjEwNzQ4NjRmODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0
Q2hhbm5lbE1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZjUzNDc4MzQ3ZTc3NWRmMzdlYTk3NjM0YzIz
MzA5MzJiNGExNGQyOC4uYWQ3ZmYxODdkYmI0MzUzYjllZDNiYzU3YzViYTJjNGFhNGU4Y2ZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2VuZFF1ZXVlLmg+CkBA
IC0zOCw3ICszOSw2IEBACiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFz
cyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmNwcAppbmRleCBhZjI0MmNkMmI1OTVhYzRhNDQ4NDI5N2JlNWQ1Y2ZlMThkNDhmMzI0Li43
ZDAwNzM2OWI5Y2NlODViOGYwNTQ1N2Q2NjZkMWU0NDUxYjk2YzUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTI2
LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJl
YW0uaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5o
CmluZGV4IGRkMDgyMDEwNzEyYjlmNWRiOWZlYmQ4OGRhNjY5YjZkZjYxZDBmMjkuLmI0M2NiMmVm
YWQxZTEwMWVlMjY1YjkzZGRlOWIwNjEyNzM2YTA5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRsZS5oPgpAQCAtMzMsNyArMzQsNiBAQAogbmFtZXNw
YWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFS
ZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAppbmRl
eCBjYjQ4ZTA1NzM0OGEyZTg2NmIwOTFmZjVhYzg3MjYwNWNhMTkyZGQ1Li4zMjNmMjVlZThmZDgx
YjAyNjMwZDJmMjU5YTFhZmI4ODRiNGNmNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCkBAIC0zNSw3
ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggZWE1MzU5NjAxMDlmZWU2ZGM0
ODA1Y2Y2ODkxMjc5OGVlOWFiNmYwMy4uNDBiNGM4ZjIxMjljZjEyMzNhMWIzMWI4NTEyN2U3YTdl
OWUzZDdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaApAQCAtNjAsMTAgKzYwLDYgQEAgT0JKQ19DTEFTUyBQREZTZWxlY3Rpb247CiBP
QkpDX0NMQVNTIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdDsKIE9CSkNfQ0xBU1MgV0tQ
REZMYXllckNvbnRyb2xsZXJEZWxlZ2F0ZTsKIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBWE9iamVjdENhY2hl
OwogY2xhc3MgRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMzM0NzY0YWNlMmE4
YzQzODU4OGIzMTk4MDYyZjM2NWEzNjZlOGJkYS4uNWIyNzMyZjJjNGU0YzQ4M2ViZjg0MDg3YThj
MjYzNGU5ZDU0OTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEwOCw2ICsxMDgsMTAg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtOTEyLDYg
KzkxNiwyMiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZQogICAgIHJldHVybiBtX3BhZ2UuZW5z
dXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7
CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dE
aXNwbGF5SUQpIGNvbnN0Cit7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91
bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBVTlVTRURfVkFSSUFCTEUoaG9zdFdpbmRvd0Rpc3BsYXlJRCk7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShh
dHRyaWJ1dGVzKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworI2Vu
ZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGVjMTRmZGIxNmM4MWNjMTI3MDZjZmNiNTllOTlmMmNk
MzM3NjBkYzguLjEyMTVmOTJhMDMxOTU4MGEwZGRkOTIxMDUxM2RkMmQ1ZDMwNTA1MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTI0Myw3ICsyNDMsMTEgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0IGZpbmFsOworI2lm
IEVOQUJMRShXRUJHTCkKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQp
IGNvbnN0IGZpbmFsOwogI2VuZGlmCisjZW5kaWYKKwogCiAgICAgQ29tcG9zaXRpbmdUcmlnZ2Vy
RmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBmaW5hbAogICAgIHsKQEAg
LTQwMyw2ICs0MDcsNyBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFp
bkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29s
IG1fY2FjaGVkTWFpbkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXIgeyBmYWxzZSB9OworCiAgICAg
V2ViUGFnZSYgbV9wYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBmNjQyMTQ3N2E1NmNlZTFiNDU5YWIxYjcwZDhkY2FkOWQzZGFm
YzM0Li5kNDYzM2RkYjZjYzY0OTgwM2I5MjQ1NzU2MjViZmE1MjhjMTdkNGIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDIyLDYgKzQyMiw5
IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5H
UFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgfQog
ICAgICwgbV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJl
bmRlckRPTUluR1BVUHJvY2VzcyB9CiAgICAgLCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vz
cyB7IHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIH0KKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgLCBtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVy
cy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzc30KKyNlbmRpZgogI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKICAgICAsIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsg
cGFyYW1ldGVycy5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgfQogI2VuZGlmCkBAIC03
MjUsNyArNzI4LDYgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmIChXZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyKiBtYW5hZ2VyID0gd2ViUHJvY2Vzcy5zdXBwbGVtZW50PFdlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXI+KCkpCiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KG1hbmFnZXItPm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSgp
KTsKICNlbmRpZgotICAgIAogICAgIGlmIChwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3RvciAhPSAx
KQogICAgICAgICBzY2FsZVZpZXcocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IpOwogCkBAIC0z
NzkzLDYgKzM3OTUsOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNl
dFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJbkdQ
VVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NG
b3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MpOwogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShtX3Nob3VsZFBsYXlN
ZWRpYUluR1BVUHJvY2Vzcyk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5H
UFVQcm9jZXNzKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJ
KQpAQCAtNjk5MCw2ICs2OTk1LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJvbml6ZUNPUlNEaXNh
YmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDT1JTRGlzYWJsaW5n
UGF0dGVybnMobV9pZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyksIDApOwogfQog
CisKICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNhZ2VN
YW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGU3ZjhjMGEzYjYwNGU3YWEx
NTdjNzQwMjMxZTU1NTc0OWQ0ZWY3YzcuLjIxMTBhMzJmNjcwZjAwZmEyNDRmZTZmOWQ3OTVhNmRk
ZjYwZDE3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWxs
YmFja0lELmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBA
IC0xNjAsNyArMTYxLDYgQEAgY2xhc3MgQXJyYXk7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3Mg
Rm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJvb2wgc2VuZFN5bmNXaXRo
RGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAg
IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlw
ZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNlbEdlc3R1cmVzQmxv
Y2tlZE9uU3luY2hyb25vdXNSZXBsaWVzKCk7CiAgICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZN
b3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpT
ZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwpAQCAtMTgy
Niw2ICsxODI2LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5H
UFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9j
ZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsg
ZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3Nob3VsZFJlbmRlcldlYkdM
SW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKICAgICBib29sIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgZmFsc2Ug
fTsKICNlbmRpZgpAQCAtMjE4Myw0ICsyMTg2LDMgQEAgaW5saW5lIGJvb2wgV2ViUGFnZTo6cGxh
dGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY28K
ICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAzODM4YWIzMjZkZDgz
OTZiNjAxMDdjYmEzZjYyNDUwNzRjOTdmNzE1Li4wZTI5M2ZhNGRmMTljYmY4Y2Q2NzkzMTc2ZDc4
Nzg5MmFkOGUxMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNTE3LDcgKzUxNyw3IEBAIGJvb2wgV2ViUGFnZTo6aGFu
ZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKICAgICAvLyBG
SVhNRTogSW50ZXJwcmV0IHRoZSBldmVudCBpbW1lZGlhdGVseSB1cG9uIHJlY2VpdmluZyBpdCBp
biBVSSBwcm9jZXNzLCB3aXRob3V0IHNlbmRpbmcgdG8gV2ViUHJvY2VzcyBmaXJzdC4KICAgICBi
b29sIGV2ZW50V2FzSGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgc2VuZFJlc3VsdCA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNob3Vs
ZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkNoYXIpLAorICAgIGF1dG8gc2VuZFJlc3VsdCA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1M
YXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OkNoYXIpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlF
dmVudDo6UmVwbHkoZXZlbnRXYXNIYW5kbGVkKSwgbV9pZGVudGlmaWVyKTsKICAgICByZXR1cm4g
c2VuZFJlc3VsdCAmJiBldmVudFdhc0hhbmRsZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggZjJmMjI4MjJjN2IyMjNmY2E1OWY5NTU3M2QxMWRjOTliMTAz
NDgxMS4uNTgyZWU3NWQ5OWE3NDI0MjU0YTM5ZGFiMjA2Zjg0NjE3MzRhZDlhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk0Miw2ICsxOTQyLDIwIEBAIGJv
b2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJlbmRlcmluZ1B1cnBv
c2UgcHVycG9zZSkKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCisjaWYgRU5BQkxFKFdF
QkdMKQordm9pZCBXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0woYm9vbCB1c2VH
UFVQcm9jZXNzRm9yV2ViR0wpCit7CisgICAgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgPSB1c2VH
UFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3Rl
UmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdAoreworICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NG
b3JXZWJHTDsKK30KKworI2VuZGlmCisKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU5YzQ3ZGI0YzQ0N2MwZjRhYjYyN2Mw
OTRiNWY2OGRiNTY1YTlhNmMuLjFhNTg1YWMxNDJiMTgzMjc2NGM0ZDg1Mzc5MDkwYjJjYmNhNzNj
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzQ3LDYgKzM0Nywx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nKGJv
b2wpOwogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wpOwogICAgIGJvb2wg
c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UpOwor
I2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChib29s
KTsKKyAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkgY29uc3Q7Cisj
ZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4Nyw2ICs2OTEsOSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgeyBmYWxzZSB9OworI2VuZGlm
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjdjNzMyY2MwODQ3MGE4MTI1ZmM3ZTVhNzQ1ZjFkMmY3
Y2M1ZTE5Yi4uMGE0MWQ1M2M1YzhhMDlkMTBlMWE4MTI1M2MxYmUwMTAxOTFmMzk4NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDIwLTEyLTAyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudHMgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRl
eHRHTCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMg
dXNpbmcgV2ViS2l0IElQQyBhbmQgaXMgaW5jb21wbGV0ZS4KKworICAgICAgICBBZGQgdGhlIGNv
ZGUgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbi4gQ3VycmVudGx5Cisg
ICAgICAgIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGVzIGEgV2ViS2l0IElQQyBpbXBsZW1lbnRhdGlv
bi4KKworICAgICAgICBUaGUgaW5wdXQgZGVmaW5pdGlvbiB0byB0aGUgZ2VuZXJhdG9yIGlzIHRo
ZSBwcm94eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBoZWFkZXIgZmlsZXMuCisgICAgICAgIFRo
ZSBvdXRwdXQgb2YgdGhlIGdlbmVyYXRvciBpcworICAgICAgICAgICAtIFdlYktpdCBJUEMgbWVz
c2FnZSBkZWZpbml0aW9uIGZpbGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHNlbmRlciBjb2RlCisg
ICAgICAgICAgIC0gTWVzc2FnZSByZWNlaXZlciBhbmQgcGF5bG9hZCBpbnZvY2F0aW9uIGNvZGUK
KworICAgICAgICBUaGUgZ2VuZXJhdG9yIGNvbnZlcnRzIEdyYXBoaWNzQ29udGV4dEdMIEdDR0wg
LXByZWZpeGVkIHR5cGVzIHRvCisgICAgICAgIHNpemVkIElQQyB0eXBlcy4KKworICAgICAgICBU
aGUgZ2VuZXJhdG9yIGlzIGludm9rZWQgZHVyaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHRoZSBy
ZXN1bHRzIGFyZQorICAgICAgICBzdG9yZWQgaW4gdGhlIHJlcG9zaXRvcnkuCisKKyAgICAgICAg
KiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6IEFkZGVkLgorCiAyMDIwLTEyLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gR1BVUHJvY2Vzcy5D
cmFzaFdoaWxlUGxheWluZ1ZpZGVvIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGIwYWUzMDAzMDA1OThjM2YwOTBmNzhkOWMyZWFiMmM3NWE1ZGI4NQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAtMCww
ICsxLDEwNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTgg
LSotCisjCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUg
c291cmNlIGZpbGVzIGZvciBXZWJHTCBHUFUgcHJvY2VzcyBJUEMuCisjCisjIHB5dGhvbjMgLW0g
YmxhY2sgLWwgMTUwIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorIyBweXRob24z
IC1tIG15cHkgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisjCitpbXBvcnQgYXJn
cGFyc2UKK2ltcG9ydCBlbnVtCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHJlCitpbXBvcnQgc3lz
CitpbXBvcnQgY29sbGVjdGlvbnMKKworZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIERpY3QsIEl0
ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdlbmVyYXRvciwgSXRlcmF0
b3IsIENvdW50ZXIKKworcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQg
LyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCitleHRlbnNpb25zX2lucHV0X2ZuID0gcm9vdF9kaXIg
LyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3JhcGhpY3MiIC8gIkV4dGVu
c2lvbnNHTC5oIgorCitmdW5jdGlvbnNfaW5wdXRfZm5zID0gWworICAgIHJvb3RfZGlyIC8gIlNv
dXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCitdCit0eXBlc19pbnB1dF9mbiA9IHJvb3Rf
ZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBo
aWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKwordGVtcGxhdGVfcHJl
YW1ibGUgPSAiIiIvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
ICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyIiIgorY29udGV4dF9mdW5jdGlvbnNfZm4gPSBy
b290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3Mi
IC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiCitjb250ZXh0
X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIi
Ly8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9m
IHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdt
YSBvbmNlCit7fQorCisiIiIKKykKK2NvbnRleHRfbWVzc2FnZXNfZm4gPSByb290X2RpciAvICJT
b3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIgorY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9
ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBOb3RSZWZDb3VudGVkIHt7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3Bs
YXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlm
CisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAo
KSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0
cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQore30K
K319CisKKyNlbmRpZgorCisiIiIKKykKKworY29udGV4dF9wcm94eV9mdW5jdGlvbnNfZm4gPSBy
b290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJn
cmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHAiCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0
ZV9wcmVhbWJsZQorICAgICsgIiIiCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKKworbmFtZXNwYWNlIFdlYktpdCB7ewore30K
KworfX0KKworI2VuZGlmCisKKyIiIgorKQorCisKK2RlZiB3cml0ZV9maWxlKGZuLCBuZXdfY29u
dGVudHMpOgorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAg
ICAgaWYgZi5yZWFkKCkgPT0gbmV3X2NvbnRlbnRzOgorICAgICAgICAgICAgICAgIHJldHVybgor
ICAgIGV4Y2VwdDoKKyAgICAgICAgcGFzcworICAgIHdpdGggb3BlbihmbiwgInciKSBhcyBmOgor
ICAgICAgICBmLndyaXRlKG5ld19jb250ZW50cykKKworY2xhc3MgY3BwX3R5cGUob2JqZWN0KToK
KyAgICB0eXBlX25hbWU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6
IHN0cik6CisgICAgICAgIHNlbGYudHlwZV9uYW1lID0gdHlwZV9uYW1lCisKKyAgICBkZWYgX19z
dHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAgICBkZWYgX19o
YXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYudHlwZV9uYW1lKQorCisgICAg
ZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAg
IGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUg
PT0gb3RoZXIudHlwZV9uYW1lCisKKyAgICBkZWYgaXNfdm9pZChzZWxmKSAtPiBib29sOgorICAg
ICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUgaW4gWyJ2b2lkIiwgIkdDR0x2b2lkIiwgImNvbnN0
IHZvaWQiLCAiY29uc3QgR0NHTHZvaWQiXQorCisgICAgZGVmIGlzX2NvbnN0KHNlbGYpIC0+IGJv
b2w6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZS5zdGFydHN3aXRoKCJjb25zdCAiKQor
CisgICAgZGVmIGlzX2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKSAtPiBib29s
OgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9wb2ludGVyKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3JlZmVyZW5jZShz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19jb25zdF9y
ZWZlcmVuY2Uoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
Z2V0X3ZhbHVlX3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIHNlbGYK
KworICAgIGRlZiBnZXRfZGVjYXlfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICBp
ZiBzZWxmLmlzX2NvbnN0KCk6CisgICAgICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYu
dHlwZV9uYW1lWzY6XSkKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXRfcnZhbHVl
X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShz
ZWxmLnR5cGVfbmFtZSArICImJiIpCisKKyAgICBkZWYgZ2V0X3BvaW50ZXJfdHlwZShzZWxmKSAt
PiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1l
ICsgIioiKQorCitjbGFzcyBjcHBfdHlwZV9jb250YWluZXIoY3BwX3R5cGUpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIGNvbnRhaW5lcl9uYW1lIDogc3RyLCBjb250
YWluZWRfdHlwZSA6IGNwcF90eXBlLCBhcml0eSA6IE9wdGlvbmFsW2ludF0gPSBOb25lKToKKyAg
ICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNv
bnRhaW5lcl9uYW1lID0gY29udGFpbmVyX25hbWUKKyAgICAgICAgc2VsZi5jb250YWluZWRfdHlw
ZSA9IGNvbnRhaW5lZF90eXBlCisgICAgICAgIHNlbGYuYXJpdHkgPSBhcml0eQorICAgIGRlZiBp
c19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYg
aXNfc3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFt
ZSA9PSAiR0NHTFNwYW4iCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgor
ICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZSA9PSAiR0NHTFNwYW4iIGFuZCBzZWxm
LmFyaXR5IGlzIE5vbmUKKyAgICBkZWYgZ2V0X2NvbnRhaW5lcl9uYW1lKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5jb250YWluZXJfbmFtZQorICAgIGRlZiBnZXRfYXJpdHkoc2VsZikgLT4g
T3B0aW9uYWxbaW50XToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXJpdHkKKyAgICBkZWYgZ2V0X2Nv
bnRhaW5lZF90eXBlKHNlbGYpIC0+IGNwcF90eXBlOgorICAgICAgICByZXR1cm4gc2VsZi5jb250
YWluZWRfdHlwZQorICAgIGRlZiBpc19vdXRwdXRfYnVmZmVyX3R5cGUoc2VsZikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVkX3R5cGUuaXNfY29uc3QoKQorCitkZWYgY3Jl
YXRlX2NwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90
eXBlX2NvbnRhaW5lcl06CisgICAgbSA9IHJlLm1hdGNoKHIiKFtcdzpdKyk8KC4rKT4kIiwgdHlw
ZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGNvbnRhaW5l
cl9uYW1lID0gbVsxXQorICAgIHRlbXBsYXRlcyA9IG1bMl0KKyAgICBhcml0eSA9IE5vbmUKKyAg
ICBtID0gcmUubWF0Y2gociIoW14sXSspLFxzKihcZCspIiwgdGVtcGxhdGVzKQorICAgIGlmIG06
CisgICAgICAgIHRlbXBsYXRlcyA9IG1bMV0KKyAgICAgICAgYXJpdHkgPSBpbnQobVsyXSkKKyAg
ICByZXR1cm4gY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSwgY29udGFpbmVyX25hbWUsIGdl
dF9jcHBfdHlwZSh0ZW1wbGF0ZXMpLCBhcml0eSkKKworY2xhc3MgY3BwX3R5cGVfZnVuY3Rpb24o
Y3BwX3R5cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUgOiBzdHIsIHJldHVy
bl92YWx1ZV90eXBlIDogY3BwX3R5cGUsIGFyZ3VtZW50X3R5cGVzIDogTGlzdFtjcHBfdHlwZV0p
OgorICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNl
bGYucmV0dXJuX3ZhbHVlX3R5cGUgID0gcmV0dXJuX3ZhbHVlX3R5cGUKKyAgICAgICAgc2VsZi5h
cmd1bWVudF90eXBlcyA9IGFyZ3VtZW50X3R5cGVzCisKK2RlZiBjcHBfc3BsaXRfYXJnc19zcGVj
cyhhcmdzX3NwZWMgOiBzdHIpIC0+IEl0ZXJhdG9yW3N0cl06CisgICAgICMgaHR0cHM6Ly9zdGFj
a292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzM1MjcyNDUvcHl0aG9uLXNwbGl0LWJ5LWNvbW1hLXNr
aXBwaW5nLXRoZS1jb250ZW50LWluc2lkZS1wYXJlbnRoZXNlcworICAgIGNvbW1hID0gciIsKD8h
KD86W148XSpcPFtePl0qXD4pKltePD5dKlw+KSIKKyAgICByZXR1cm4gZmlsdGVyKE5vbmUsIFth
LnN0cmlwKCkgZm9yIGEgaW4gcmUuc3BsaXQoY29tbWEsIGFyZ3Nfc3BlYy5zdHJpcCgpKV0pCisg
ICAgCitkZWYgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0
aW9uYWxbY3BwX3R5cGVfZnVuY3Rpb25dOgorICAgIG0gPSByZS5tYXRjaChyJyguKilcKCguKilc
KScsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBy
ZXR1cm5fdmFsdWVfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgIGFyZ3NfdHlwZXMgPSBb
Z2V0X2NwcF90eXBlKGEpIGZvciBhIGluIGNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bMl0pXQorICAg
IHJldHVybiBjcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUsIHJldHVybl92YWx1ZV90eXBlLCBh
cmdzX3R5cGVzKQorICAgICAgICAKKyMgUG9pbnRlciBvciByZWZlcmVyZW5jZQorY2xhc3MgY3Bw
X3R5cGVfaW5kaXJlY3QoY3BwX3R5cGUpOgorICAgIGNhdGVnb3J5IDogc3RyCisgICAgdmFsdWVf
dHlwZSA6IGNwcF90eXBlCisgICAgCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6
IHN0ciwgY2F0ZWdvcnkgOiBzdHIsIHZhbHVlX3R5cGUgOiBjcHBfdHlwZSk6CisgICAgICAgIGNw
cF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5jYXRlZ29yeSA9
IGNhdGVnb3J5CisgICAgICAgIHNlbGYudmFsdWVfdHlwZSA9IHZhbHVlX3R5cGUKKworICAgIGRl
ZiBpc19jb25zdF9wb2ludGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9
PSAnKicgYW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19wb2ludGVyKHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnKicgYW5kIG5vdCBzZWxmLmlzX2NvbnN0KCkK
KyAgICBkZWYgaXNfY29uc3RfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5j
YXRlZ29yeSA9PSAnJicgYW5kIHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19yZWZlcmVuY2Uo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgbm90IHNlbGYu
aXNfY29uc3QoKQorICAgIGRlZiBpc19ydmFsdWVfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJiYnCisgICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZV90eXBlCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVf
aW5kaXJlY3QodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9pbmRpcmVjdF06
CisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBu
b3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYmJCIsIHR5cGVfbmFtZSkgCisgICAg
aWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYmJywg
Z2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJCIsIHR5
cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKSYkIiwg
dHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0
eXBlX25hbWUsICcmJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAgIG0gPSByZS5tYXRjaChyImNv
bnN0ICguKylcKiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5t
YXRjaChyIiguKylcKiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNw
cF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyonLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAg
cmV0dXJuIE5vbmUKKworCitjbGFzcyBjcHBfZXhwcihvYmplY3QpOgorICAgIHR5cGU6IGNwcF90
eXBlCisgICAgZXhwcjogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5
cGUsIGV4cHI6IHN0cik6CisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5l
eHByID0gZXhwcgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LmV4cHIKKworCitDcHBFeHByQ29udmVydGVyID0gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlw
ZV0sIGNwcF9leHByXQorCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJf
dGhyb3VnaChjYXN0X3Rocm91Z2hfdHlwZSA6IGNwcF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4
cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdOgorICAgIGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF9m
cm9tX3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoK
KyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9u
YW1lfT4ocmVpbnRlcnByZXRfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhw
cil9KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXIKKwor
ZGVmIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXJfdGhyb3VnaChjYXN0X3Rocm91Z2hf
dHlwZSA6IGNwcF90eXBlKSAtPiBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4
cHJdOgorICAgIGRlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyKGV4cHI6IGNwcF9l
eHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhw
cih0eXBlLCBmInJlaW50ZXJwcmV0X2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oc3RhdGljX2Nhc3Q8
e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9Pih7c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3Bw
X3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcgorCitkZWYgY3BwX3N0YXRpY19jYXN0KGV4cHI6
IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9l
eHByKHR5cGUsIGYic3RhdGljX2Nhc3Q8e3R5cGUudHlwZV9uYW1lfT4oe3N0cihleHByKX0pIikK
KworCitkZWYgY3BwX2ltcGxpY2l0X2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBl
KSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgc3RyKGV4cHIpKQorCisK
K2RlZiBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uKGV4cHI6IGNwcF9leHBy
LCB0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9leHByOgorICAgIGVsZW1lbnRfcG9p
bnRlcl90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkK
KyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJ7c3RyKHR5cGUpfShyZWludGVycHJldF9jYXN0
PHtlbGVtZW50X3BvaW50ZXJfdHlwZX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9
LnNpemUoKSkiKQorCitkZWYgd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnBy
ZXRfY2FzdF9jb252ZXJzaW9uKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZV9jb250YWlu
ZXIpIC0+IGNwcF9leHByOgorICAgIGVsZW1lbnRfcG9pbnRlcl90eXBlID0gdHlwZS5nZXRfY29u
dGFpbmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlw
ZSwgZiJ7c3RyKHR5cGUpfShyZWludGVycHJldF9jYXN0PGNvbnN0IHtlbGVtZW50X3BvaW50ZXJf
dHlwZX0+KHtzdHIoZXhwcil9LmRhdGEpLCB7c3RyKGV4cHIpfS5idWZTaXplKSIpCisKK2RlZiBj
cHBfbW92ZV9leHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3Bw
X2V4cHIoZXhwci50eXBlLmdldF9ydmFsdWVfdHlwZSgpLCBmIldURk1vdmUoe3N0cihleHByKX0p
IikKKworCitjcHBfdHlwZXM6IERpY3Rbc3RyLCBjcHBfdHlwZV0gPSB7fQorCitjcHBfdHlwZV9j
b25zdHJ1Y3RvcnMgOiBMaXN0W0NhbGxhYmxlW1tzdHJdLCBPcHRpb25hbFtjcHBfdHlwZV1dXSA9
IFsKKyAgICBjcmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24sCisgICAgY3JlYXRlX2NwcF90eXBlX2Nv
bnRhaW5lciwKKyAgICBjcmVhdGVfY3BwX3R5cGVfaW5kaXJlY3QKK10KKworZGVmIGdldF9jcHBf
dHlwZSh0eXBlX25hbWU6IHN0cik6CisgICAgciA9IGNwcF90eXBlcy5nZXQodHlwZV9uYW1lLCBO
b25lKQorICAgIGlmIHI6CisgICAgICAgIHJldHVybiByCisgICAgZm9yIHR5cGVfY29uc3RyIGlu
IGNwcF90eXBlX2NvbnN0cnVjdG9yczoKKyAgICAgICAgciA9IHR5cGVfY29uc3RyKHR5cGVfbmFt
ZSkKKyAgICAgICAgaWYgcjoKKyAgICAgICAgICAgIGJyZWFrCisgICAgaWYgbm90IHI6CisgICAg
ICAgIHIgPSBjcHBfdHlwZSh0eXBlX25hbWUpCisgICAgY3BwX3R5cGVzW3R5cGVfbmFtZV0gPSBy
CisgICAgcmV0dXJuIHIKKworCitjbGFzcyBjcHBfYXJnKG9iamVjdCk6CisgICAgbmFtZTogc3Ry
CisgICAgdHlwZTogY3BwX3R5cGUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBf
dHlwZSwgbmFtZTogc3RyKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxm
LnR5cGUgPSB0eXBlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7
fSB7fSIuZm9ybWF0KHNlbGYudHlwZSwgc2VsZi5uYW1lKQorCisKK2NsYXNzIGNwcF9kZWNsKG9i
amVjdCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBuYW1lOiBzdHIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgbmFtZTogc3RyKToKKyAgICAgICAgc2VsZi50eXBl
ID0gdHlwZQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIGYie3N0cihzZWxmLnR5cGUpfSB7c2VsZi5uYW1lfSIKKworCitj
bGFzcyBjcHBfYXJnX2xpc3Qob2JqZWN0KToKKyAgICBhcmdzOiBMaXN0W2NwcF9hcmddCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIHNlbGYu
YXJncyA9IGFyZ3MKKworICAgIGRlZiBuYW1lcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIu
am9pbihhLm5hbWUgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisgICAgZGVmIGV4cHJzKHNlbGYpOgor
ICAgICAgICByZXR1cm4gW2NwcF9leHByKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFy
Z3NdCisKKyAgICBkZWYgZGVjbHMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2RlY2woYS50
eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiB0eXBlcyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIFthLnR5cGUgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIF9f
c3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAiLCAiLmpvaW4oc3RyKGEpIGZvciBhIGluIHNl
bGYuYXJncykKKworCitjbGFzcyBjcHBfZnVuYyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAg
IGFyZ3M6IGNwcF9hcmdfbGlzdAorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGlzX2V4
dGVuc2lvbjogYm9vbAorICAgIG92ZXJsb2FkX3N1ZmZpeDogc3RyCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgbmFtZTogc3RyLCByZXR1cm5fdHlwZTogY3BwX3R5cGUsIGFyZ3M6IGNwcF9hcmdf
bGlzdCwgaXNfZXh0ZW5zaW9uOiBib29sKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAg
ICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0g
YXJncworICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgorICAgICAgICBz
ZWxmLm92ZXJsb2FkX3N1ZmZpeCA9ICIiCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIGYie3NlbGYucmV0dXJuX3R5cGV9IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdz
KX0pIgorCisgICAgZGVmIGdldF9hcmdzX2NhdGVnb3JpZXMoc2VsZikgLT4gVHVwbGVbTGlzdFtj
cHBfYXJnXSwgTGlzdFtjcHBfYXJnXV06CisgICAgICAgIGluX2FyZ3MgPSBbXQorICAgICAgICBv
dXRfYXJncyA9IFtdCisgICAgICAgIGZvciBhIGluIHNlbGYuYXJncy5hcmdzOgorICAgICAgICAg
ICAgI2ZtdDogb2ZmCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpIG9yIFwKKyAg
ICAgICAgICAgICAgICBhLnR5cGUuaXNfcmVmZXJlbmNlKCk6CisgICAgICAgICAgICAgICAgb3V0
X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlw
ZV9jb250YWluZXIpIGFuZCAoKChhLnR5cGUuaXNfc3BhbigpIG9yIGEudHlwZS5pc19keW5hbWlj
X3NwYW4oKSkgYW5kIG5vdCBhLnR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKSkp
OgorICAgICAgICAgICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBpbl9hcmdzICs9IFthXQorICAgICAgICAgICAgI2ZtdDogb24KKyAgICAg
ICAgcmV0dXJuIGluX2FyZ3MsIG91dF9hcmdzCisKKyAgICBkZWYgaXNfaW1wbGVtZW50ZWRfdHlw
ZShzZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHR5cGUuaXNfY29uc3RfcG9pbnRl
cigpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAg
ICBkZWYgaXNfaW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgICMiIGluIGEudHlwZS50eXBlX25h
bWUgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQor
ICAgICAgICAjaWYgIkdDR0xzeW5jIiBpbiBzZWxmLnJldHVybl90eXBlLnR5cGVfbmFtZToKKyAg
ICAgICAgIyAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEubmFtZSA9PSAiYnVmU2l6
ZSIgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgIGlmIGFueShhLnR5cGUuaXNfcG9pbnRlcigpIGFuZCBhLnR5cGUuZ2V0X3ZhbHVlX3R5
cGUoKS5pc192b2lkKCkgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKGEu
dHlwZSkgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIGlmIHNlbGYucmV0dXJuX3R5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoc2Vs
Zi5yZXR1cm5fdHlwZSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJu
IFRydWUKKworCit3ZWJraXRfaXBjX3R5cGVzOiBEaWN0W2NwcF90eXBlLCBjcHBfdHlwZV0gPSB7
fQorCit3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnM6IERpY3RbVHVwbGVbY3BwX3R5cGUsIGNw
cF90eXBlXSwgQ3BwRXhwckNvbnZlcnRlcl0gPSB7fQorCisKK2RlZiB3ZWJraXRfaXBjX2NvbnZl
cnRfZXhwcihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAg
ICIiIiBDb252ZXJ0cyBgZXhwcmAgb2YgdHlwZSBvZiBgc2VsZmAgdG8gYHR5cGVgICIiIgorICAg
IGNvbnZlcnQgPSB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuZ2V0KChleHByLnR5cGUsIHR5
cGUpLCBOb25lKQorICAgIGlmIG5vdCBjb252ZXJ0OgorICAgICAgICBpZiBleHByLnR5cGUgPT0g
dHlwZToKKyAgICAgICAgICAgIHJldHVybiBleHByCisgICAgICAgIGNvbnZlcnQgPSBjcHBfaW1w
bGljaXRfY2FzdAorICAgIHJldHVybiBjb252ZXJ0KGV4cHIsIHR5cGUpCisKKworZGVmIHdlYmtp
dF9pcGNfZ2V0X3NwYW5fdHJhbnNmZXJfdHlwZSh0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAt
PiBjcHBfdHlwZToKKyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgp
LmdldF9kZWNheV90eXBlKCkKKyAgICBhcml0eSA9IHR5cGUuZ2V0X2FyaXR5KCkKKyAgICB3ZWJr
aXRfaXBjX2VsZW1lbnRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZWxlbWVudF90eXBlXSBpZiBu
b3QgZWxlbWVudF90eXBlLmlzX3ZvaWQoKSBlbHNlIGdldF9jcHBfdHlwZSgndWludDhfdCcpCisg
ICAgaWYgYXJpdHkgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJ
UEM6OkFycmF5UmVmZXJlbmNlPHtzdHIod2Via2l0X2lwY19lbGVtZW50X3R5cGUpfSwge2FyaXR5
fT4iKQorICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJJUEM6OkFycmF5UmVmZXJlbmNlPHtzdHIo
d2Via2l0X2lwY19lbGVtZW50X3R5cGUpfT4iKQorCisKKworZGVmIHdlYmtpdF9pcGNfZ2V0X3Nw
YW5fc3RvcmVfdHlwZSh0eXBlOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAg
IGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUo
KQorICAgIGlmIGVsZW1lbnRfdHlwZS5pc192b2lkKCk6CisgICAgICAgIGVsZW1lbnRfdHlwZSA9
IGdldF9jcHBfdHlwZSgnR0NHTGNoYXInKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6
CisgICAgICAgIGlubGluZV9jYXBhY2l0eSA9IDE2IGlmICJmbG9hdCIgaW4gZWxlbWVudF90eXBl
LnR5cGVfbmFtZSBlbHNlIDQKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIlZlY3Rvcjx7
c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKGlubGluZV9jYXBhY2l0eSl9PiIpCisgICAgcmV0dXJu
IGdldF9jcHBfdHlwZShmInN0ZDo6YXJyYXk8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cih0eXBl
LmdldF9hcml0eSgpKX0+IikKKworZGVmIHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJz
aW9uKGV4cHIgOiBjcHBfZXhwciwgdHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4
cHI6CisgICAgcG9pbnRlcl9jYXN0X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdl
dF9wb2ludGVyX3R5cGUoKQorICAgIGlmIHR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAg
IHJldHVybiBjcHBfZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PHtz
dHIocG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0u
c2l6ZSgpKSIpCisKKyAgICBhc3NlcnQodHlwZS5pc19zcGFuKCkpCisgICAgcmV0dXJuIGNwcF9l
eHByKHR5cGUsIGYibWFrZUdDR0xTcGFuPHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9PihyZWludGVy
cHJldF9jYXN0PHtzdHIocG9pbnRlcl9jYXN0X3R5cGUpfT4oe3N0cihleHByKX0uZGF0YSgpKSki
KQorCisjIFNlZSBtZXNzYWdlcy5weSBmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZQord2Via2l0X2lw
Y19idWlsdGluX3R5cGVzID0gc2V0KAorICAgIFsidWludDhfdCIsICJ1aW50MTZfdCIsICJ1aW50
MzJfdCIsICJ1aW50NjRfdCIsICJpbnQ4X3QiLCAiaW50MTZfdCIsICJpbnQzMl90IiwgImludDY0
X3QiLCAiYm9vbCIsICJmbG9hdCIsICJkb3VibGUiICJib29sIl0KKykKKworCitkZWYgd2Via2l0
X2lwY19nZXRfbWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX3R5
cGU6CisgICAgaWYgdHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgor
ICAgICAgICByZXR1cm4gdHlwZQorICAgIHJldHVybiB0eXBlLmdldF9ydmFsdWVfdHlwZSgpCisK
KworZGVmIHdlYmtpdF9pcGNfbW92ZV9leHByKGV4cHI6IGNwcF9leHByKSAtPiBjcHBfZXhwcjoK
KyAgICBpZiBleHByLnR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoK
KyAgICAgICAgcmV0dXJuIGV4cHIKKyAgICByZXR1cm4gY3BwX21vdmVfZXhwcihleHByKQorCisK
K2RlZiB3ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmM6IGNwcF9mdW5jKToKKyAgICByZXR1cm4gZnVu
Yy5uYW1lWzBdLmNhcGl0YWxpemUoKSArIGZ1bmMubmFtZVsxOl0gKyBmdW5jLm92ZXJsb2FkX3N1
ZmZpeAorCisKK2NsYXNzIHdlYmtpdF9pcGNfbXNnKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisg
ICAgaW5fYXJnczogY3BwX2FyZ19saXN0CisgICAgb3V0X2FyZ3M6IGNwcF9hcmdfbGlzdAorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1l
ID0gd2Via2l0X2lwY19tc2dfbmFtZShmdW5jKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9
IGZ1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIGlwY19pbl9hcmdzID0gW2NwcF9h
cmcod2Via2l0X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUpIGZvciBhIGluIGluX2FyZ3NdCisg
ICAgICAgIGlwY19vdXRfYXJncyA9IFtdCisgICAgICAgIGlmIG5vdCBmdW5jLnJldHVybl90eXBl
LmlzX3ZvaWQoKToKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJraXRf
aXBjX3R5cGVzW2Z1bmMucmV0dXJuX3R5cGVdLCAicmV0dXJuVmFsdWUiKV0KKyAgICAgICAgZm9y
IGEgaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Vi
a2l0X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUpXQorICAgICAgICAgICAgaWYgYS50eXBlLmlz
X2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgIGlwY19pbl9hcmdzICs9IFtjcHBfYXJn
KGdldF9jcHBfdHlwZSgidWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUiKV0KKyAgICAgICAgc2Vs
Zi5pbl9hcmdzID0gY3BwX2FyZ19saXN0KGlwY19pbl9hcmdzKQorICAgICAgICBzZWxmLm91dF9h
cmdzID0gY3BwX2FyZ19saXN0KGlwY19vdXRfYXJncykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgorICAgICAgICBpZiBsZW4oc2VsZi5vdXRfYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVy
biBmIlxuICAgIHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkgLT4gKHtzdHIo
c2VsZi5vdXRfYXJncyl9KSBTeW5jaHJvbm91cyIKKyAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9p
ZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSIKKworCitjbGFzcyB3ZWJraXRfaXBj
X2NwcF9wcm94eV9pbXBsKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgbXNnX25hbWU6IHN0
cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAorCisg
ICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQor
ICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcmV0dXJuX3N0bXRzOiBMaXN0W3N0
cl0KKyAgICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3Bw
X2V4cHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAg
ICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm1zZ19uYW1lID0g
d2Via2l0X2lwY19tc2dfbmFtZShjcHBfZnVuYykKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9
IGNwcF9mdW5jLnJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MK
KyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10
cyA9IFtdCisgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5y
ZXR1cm5fc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2Vs
Zi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdl
dF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNw
cF9mdW5jLnJldHVybl90eXBlKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJncyhpbl9hcmdz
KQorICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2FyZ3Mob3V0X2FyZ3MpCisgICAgICAgIHNlbGYu
cHJvY2Vzc19jYWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGlu
X2V4cHJzID0gIiwgIi5qb2luKFtzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbl9leHByc10pCisgICAg
ICAgIG91dF9leHBycyA9ICIsICIuam9pbihzdHIobykgZm9yIG8gaW4gc2VsZi5vdXRfZXhwcnMp
CisgICAgICAgIGlzX2FzeW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192b2lkKCkgYW5kIGxlbihv
dXRfZXhwcnMpID09IDAKKyAgICAgICAgaWYgaXNfYXN5bmM6CisgICAgICAgICAgICBzZWxmLmNh
bGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOyIsCisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZW5kX3Jlc3VsdCA9ICIiCisgICAgICAgICAgICBpZiBzZWxmLnBvc3RfY2FsbF9z
dG10czogCisgICAgICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiYXV0byBzZW5kUmVzdWx0ID0g
IgorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gWworICAgICAgICAgICAg
ICAgICAgICAiaWYgKHNlbmRSZXN1bHQpIiArICgiIHsiIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9z
dG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAgXSArIFsiICAgICIgKyBzIGZvciBz
IGluIHNlbGYucG9zdF9jYWxsX3N0bXRzXSArIFsKKyAgICAgICAgICAgICAgICAgICAgKCJ9IiBp
ZiBsZW4oc2VsZi5wb3N0X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJ7
c2VuZF9yZXN1bHR9c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7
c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6e3NlbGYubXNnX25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsiLAorICAgICAgICAgICAgXQorCisKKyAgICBkZWYgcHJv
Y2Vzc19pbl9hcmdzKHNlbGYsIGluX2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBmb3Ig
aSBpbiBpbl9hcmdzOgorICAgICAgICAgICAgaWYgaS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToK
KyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4
cHIoaS50eXBlLCBpLm5hbWUpLCB3ZWJraXRfaXBjX3R5cGVzW2kudHlwZV0pXQorCisgICAgZGVm
IHByb2Nlc3Nfb3V0X2FyZ3Moc2VsZiwgb3V0X2FyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAg
ICBmb3IgbyBpbiBvdXRfYXJnczoKKyAgICAgICAgICAgIGlmIG8udHlwZS5pc19wb2ludGVyKCk6
CisgICAgICAgICAgICAgICAgdmFsdWVfdHlwZSA9IG8udHlwZS5nZXRfdmFsdWVfdHlwZSgpCisg
ICAgICAgICAgICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1t2
YWx1ZV90eXBlXQorICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdmFsdWVf
dHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0
bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAg
ICAgICAgICAgZSA9IGNwcF9leHByKHYudHlwZSwgdi5uYW1lKQorICAgICAgICAgICAgICAgIHNl
bGYub3V0X2V4cHJzICs9IFtlXQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRz
ICs9IFsKKyAgICAgICAgICAgICAgICAgICAgI2ZtdDogb2ZmCisgICAgICAgICAgICAgICAgICAg
IGYiaWYgKHtvLm5hbWV9KSIsCisgICAgICAgICAgICAgICAgICAgIGYiICAgICp7by5uYW1lfSA9
IHt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihlLCB2YWx1ZV90eXBlKX07IgorICAgICAgICAgICAg
ICAgICAgICAjZm10OiBvbgorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsaWYgby50
eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRf
aXBjX3R5cGVzW28udHlwZV0KKyAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJr
aXRfaXBjX3R5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgdiA9IGNw
cF9hcmcod2Via2l0X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAg
IHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJd
CisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5u
YW1lKV0KKyAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgi
c2l6ZV90IiksIGYie28ubmFtZX0uYnVmU2l6ZSIpXQorICAgICAgICAgICAgICAgIHNlbGYucG9z
dF9jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICAgICAgZiJtZW1jcHkoe28ubmFtZX0u
ZGF0YSwge3YubmFtZX0uZGF0YSgpLCB7by5uYW1lfS5idWZTaXplICogc2l6ZW9mKHtzdHIod2Vi
a2l0X2lwY190eXBlLmdldF9jb250YWluZWRfdHlwZSgpKX0pKTsiCisgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBb
Y3BwX2V4cHIoby50eXBlLCBvLm5hbWUpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVl
KHNlbGYsIHJldHVybl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlz
X3ZvaWQoKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLnJldHVybl90eXBlID0g
cmV0dXJuX3R5cGUKKyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0X2lwY190eXBlc1ty
ZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBfZXhwcihpcGNfcmV0
dXJuX3R5cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0g
W2Yie3JldHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7
IH19OyJdCisgICAgICAgIHNlbGYub3V0X2V4cHJzID0gW3JldHVybl92YWx1ZV9leHByXSArIHNl
bGYub3V0X2V4cHJzCisgICAgICAgIHNlbGYucmV0dXJuX3N0bXRzID0gW2YicmV0dXJuIHtzdHIo
d2Via2l0X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIHJldHVybl90eXBlKSl9
OyJdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJ
TlQiIGlmICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIiIuam9pbihm
IlxuICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9zdG10
cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzICsgc2VsZi5yZXR1cm5fc3RtdHMpCisgICAgICAgIHJl
dHVybiBmIiIiXG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9Cit7e3tib2R5fQor
fX0iIiIKKworCitjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcihvYmplY3Qp
OgorICAgIG5hbWU6IHN0cgorICAgIHJldHVybl90eXBlOiBjcHBfdHlwZQorICAgIGFyZ3M6IGNw
cF9hcmdfbGlzdAorICAgIGJvZHk6IExpc3Rbc3RyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUK
KworICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAg
ICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLmJvZHkgPSBbIm5vdElt
cGxlbWVudGVkKCk7Il0KKyAgICAgICAgaWYgY3BwX2Z1bmMucmV0dXJuX3R5cGUudHlwZV9uYW1l
ICE9ICJ2b2lkIjoKKyAgICAgICAgICAgIHNlbGYuYm9keSArPSBbInJldHVybiB7IH07Il0KKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYg
Il8iIGluIHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiXG57XG4gICAgIiArICJc
biAgICAiLmpvaW4oc2VsZi5ib2R5KSArICJcbn0iCisgICAgICAgIHJldHVybiBmIlxue3N0cihz
ZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6e3NlbGYubmFt
ZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fXtib2R5fSIKKworCitjbGFzcyBjb250ZXh0X3By
b3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxz
OiBMaXN0W3dlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGxdCisgICAgdW5pbXBsczogTGlzdFt3ZWJr
aXRfaXBjX2NwcF9wcm94eV9wbGFjZWhvbGRlcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
dW5jczogSXRlcmFibGVbY3BwX2Z1bmNdLCB1bmltcGxlbWVudGVkOiBJdGVyYWJsZVtjcHBfZnVu
Y10pOgorICAgICAgICBzZWxmLmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwoZikg
Zm9yIGYgaW4gZnVuY3NdCisgICAgICAgIHNlbGYudW5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9w
cm94eV9wbGFjZWhvbGRlcihmKSBmb3IgZiBpbiB1bmltcGxlbWVudGVkXQorCisgICAgZGVmIGdl
dF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZvciBp
IGluIHNlbGYuaW1wbHMgKyBzZWxmLnVuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6
CisgICAgICAgIHdyaXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9u
c19mbiwKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1h
dChzZWxmLmdldF9mdW5jdGlvbnMoKSksCisgICAgICAgICkKKworCitjbGFzcyB3ZWJraXRfaXBj
X2NwcF9pbXBsKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0
CisgICAgaXNfZXh0ZW5zaW9uOiBib29sCisgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQor
ICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJd
CisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2NwcF9l
eHByXQorICAgIHJldHVybl92YWx1ZV9leHByOiBPcHRpb25hbFtjcHBfZXhwcl0KKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUg
PSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gY3BwX2Z1bmMu
b3ZlcmxvYWRfc3VmZml4CisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9hcmdfbGlzdChbXSkKKyAg
ICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBjcHBfZnVuYy5pc19leHRlbnNpb24KKyAgICAgICAg
c2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCisg
ICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9
IFtdCisgICAgICAgIHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFs
dWVfZXhwciA9IE5vbmUKKworICAgICAgICBzZWxmLnByb2Nlc3NfcmV0dXJuX3ZhbHVlKGNwcF9m
dW5jLnJldHVybl90eXBlKQorICAgICAgICBpbl9hcmdzLCBvdXRfYXJncyA9IGNwcF9mdW5jLmdl
dF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBzZWxmLnByb2Nlc3NfYXJncyhjcHBfZnVuYy5h
cmdzLmFyZ3MsIHNldChpbl9hcmdzKSwgc2V0KG91dF9hcmdzKSkKKyAgICAgICAgc2VsZi5wcm9j
ZXNzX2NhbGwoKQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgZXh0ID0g
ImdldEV4dGVuc2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVsc2UgIiIKKworICAgICAg
ICBpbl9leHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5pbl9leHBycykKKyAg
ICAgICAgaXNfYXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMpID09IDAKKworICAgICAgICBjYWxs
X2V4cHIgPSBmIm1fY29udGV4dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5fZXhwcnN9KSIKKyAgICAg
ICAgaWYgbm90IHNlbGYucmV0dXJuX3ZhbHVlX2V4cHI6CisgICAgICAgICAgICBzZWxmLmNhbGxf
c3RtdHMgKz0gW2Yie2NhbGxfZXhwcn07Il0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
bGYuY2FsbF9zdG10cyArPSBbZiJ7c3RyKHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIpfSA9IHtjYWxs
X2V4cHJ9OyJdCisgICAgICAgIGlmIG5vdCBpc19hc3luYzoKKyAgICAgICAgICAgIG91dF9leHBy
cyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAg
ICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbZiJjb21wbGV0aW9uSGFuZGxlcih7b3V0X2V4cHJz
fSk7Il0KKworICAgIGRlZiBwcm9jZXNzX2FyZ3Moc2VsZiwgYXJnczogTGlzdFtjcHBfYXJnXSwg
aW5fYXJnczogU2V0W2NwcF9hcmddLCBvdXRfYXJnczogU2V0W2NwcF9hcmddKToKKyAgICAgICAg
Zm9yIGEgaW4gYXJnczoKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19jb25zdF9wb2ludGVyKCk6
CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBpZiBhIGluIGluX2Fy
Z3M6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZyhhKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Nfb3V0X2FyZyhhKQorICAgICAgICBp
ZiBzZWxmLm91dF9leHByczoKKyAgICAgICAgICAgIG91dF9hcmdfZGVjbHMgPSAiLCAiLmpvaW4o
ZiJ7c3RyKGUudHlwZSl9IiBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAgIHNl
bGYuYXJncy5hcmdzICs9IFtjcHBfYXJnKGdldF9jcHBfdHlwZShmIkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoe291dF9hcmdfZGVjbHN9KT4mJiIpLCAiY29tcGxldGlvbkhhbmRsZXIiKV0KKworICAg
IGRlZiBwcm9jZXNzX2luX2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgc2VsZi5hcmdz
LmFyZ3MgKz0gW2NwcF9hcmcod2Via2l0X2lwY19nZXRfbWVzc2FnZV9mb3J3YXJkZXJfdHlwZSh3
ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0pLCBhLm5hbWUpXQorICAgICAgICBzZWxmLmluX2V4cHJz
ICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcih3ZWJraXRfaXBjX3R5cGVzW2Eu
dHlwZV0sIGEubmFtZSksIGEudHlwZSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJnKHNlbGYs
IGE6IGNwcF9hcmcpOgorICAgICAgICBpZiBhLnR5cGUuaXNfcG9pbnRlcigpOgorICAgICAgICAg
ICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQor
ICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHZhbHVlX2FyZy50eXBl
KX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAgICAgIHNlbGYuaW5f
ZXhwcnMgKz0gW2NwcF9leHByKGEudHlwZSwgZiIme3ZhbHVlX2FyZy5uYW1lfSIpXQorICAgICAg
ICAgICAgZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbZS50eXBlXQor
ICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGUs
IHdlYmtpdF9pcGNfdmFsdWVfdHlwZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX2R5bmFtaWNf
c3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9j
b250YWluZXIpKQorICAgICAgICAgICAgc2l6ZV9hcmcgPSBjcHBfYXJnKGdldF9jcHBfdHlwZSgi
dWludDY0X3QiKSwgZiJ7YS5uYW1lfVNpemUiKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3Mg
Kz0gW3NpemVfYXJnXQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBj
X2dldF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5w
cmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcu
bmFtZSl9KHN0YXRpY19jYXN0PHNpemVfdD4oe2EubmFtZX1TaXplKSwgMCk7Il0KKyAgICAgICAg
ICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBmIntzdG9yZV9h
cmcubmFtZX0iKV0KKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlw
ZXNbYS50eXBlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29u
dmVydF9leHByKGNwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtp
dF9pcGNfdHlwZSldCisgICAgICAgIGVsaWYgYS50eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAg
IGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAg
ICAgIHN0b3JlX2FyZyA9IGNwcF9hcmcod2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEu
dHlwZSksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0
cihzdG9yZV9hcmcudHlwZSl9IHtzdHIoc3RvcmVfYXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAg
ICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2Fy
Zy5uYW1lKV0KKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNb
YS50eXBlXQorICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVy
dF9leHByKGNwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9hcmcubmFtZSksIHdlYmtpdF9p
cGNfdHlwZSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgYS50eXBlLmlzX3Jl
ZmVyZW5jZSgpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W2EudHlwZV0KKyAgICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1
ZV90eXBlKCksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yi
e3NlbGYubnModmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0ge3sgfX07Il0K
KyAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUp
CisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtlXQorICAgICAgICAgICAgc2VsZi5vdXRf
ZXhwcnMgKz0gW3dlYmtpdF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKGUs
IHdlYmtpdF9pcGNfdHlwZSkpXQorCisgICAgZGVmIHByb2Nlc3NfcmV0dXJuX3ZhbHVlKHNlbGYs
IHJldHVybl90eXBlOiBjcHBfdHlwZSk6CisgICAgICAgIGlmIHJldHVybl90eXBlLmlzX3ZvaWQo
KToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRf
aXBjX3R5cGVzW3JldHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9l
eHByKHJldHVybl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0
bXRzICs9IFtmIntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhw
cn0gPSB7eyB9fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3Zl
X2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIocmV0dXJuX3ZhbHVlX2V4cHIsIGlwY19yZXR1
cm5fdHlwZSkpXQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gcmV0dXJuX3ZhbHVl
X2V4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBib2R5ID0gIiIuam9pbihm
IlxuICAgICAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxf
c3RtdHMgKyBzZWxmLnBvc3RfY2FsbF9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiIgICAgdm9p
ZCB7c2VsZi5uYW1lfXtzZWxmLm92ZXJsb2FkX3N1ZmZpeH0oe3N0cihzZWxmLmFyZ3MpfSkKKyAg
ICB7e3tib2R5fQorICAgIH19IiIiCisKKyAgICBkZWYgbnMoc2VsZiwgdHlwZTogY3BwX3R5cGUp
OgorICAgICAgICAjIFRPRE86IG5hbWVzcGFjZSBpbmZvIGlzIG5vdCBzdG9yZWQgaW4gbmFtZXMu
CisgICAgICAgIGlmIHR5cGUudHlwZV9uYW1lID09ICJBY3RpdmVJbmZvIjoKKyAgICAgICAgICAg
IHJldHVybiAiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OiIgKyBzdHIodHlwZSkKKyAgICAg
ICAgcmV0dXJuIHN0cih0eXBlKQorCitkZWYgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1
ZmZpeChmdW5jcyA6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgY291bnRzID0gY29sbGVjdGlv
bnMuQ291bnRlcihmLm5hbWUgZm9yIGYgaW4gZnVuY3MpCisgICAgc3VmZml4ZXMgOiBDb3VudGVy
W3N0cl0gPSBjb2xsZWN0aW9ucy5Db3VudGVyKCkKKyAgICBmb3IgZiBpbiBmdW5jczoKKyAgICAg
ICAgaWYgY291bnRzW2YubmFtZV0gPiAxOgorICAgICAgICAgICAgZi5vdmVybG9hZF9zdWZmaXgg
PSBzdHIoc3VmZml4ZXNbZi5uYW1lXSkKKyAgICAgICAgICAgIHN1ZmZpeGVzLnVwZGF0ZShbZi5u
YW1lXSkKKworCitjbGFzcyBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3Qp
OgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJh
dG9yLiIKKyAgICBpbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9pbXBsXQorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLmlt
cGxzID0gW3dlYmtpdF9pcGNfY3BwX2ltcGwoZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBkZWYg
Z2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9y
IGkgaW4gc2VsZi5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3Jp
dGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAg
Y29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwK
KyAgICAgICAgKQorCisKK2NsYXNzIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9i
amVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFdlYktpdCBJUEMgbWVzc2FnZSBk
ZWZpbml0aW9uIGdlbmVyYXRvci4iCisgICAgbXNnczogTGlzdFt3ZWJraXRfaXBjX21zZ10KKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAg
ICAgc2VsZi5tc2dzID0gW3dlYmtpdF9pcGNfbXNnKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAg
ZGVmIGdldF9tZXNzYWdlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oc3RyKG0pIGZv
ciBtIGluIHNlbGYubXNncykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3Jp
dGVfZmlsZShjb250ZXh0X21lc3NhZ2VzX2ZuLCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlLmZv
cm1hdChzZWxmLmdldF9tZXNzYWdlcygpKSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmcoYXJnX3Nw
ZWM6IHN0ciwgYXJnX2luZGV4OiBpbnQpOgorICAgIHIgPSBhcmdfc3BlYy5yc3BsaXQoIiAiLCAx
KQorICAgIG5hbWUgPSAiIgorICAgIHR5cGUgPSBOb25lCisgICAgaWYgbGVuKHIpID4gMSBhbmQg
clswXSAhPSAiY29uc3QiOgorICAgICAgICBuYW1lID0gclsxXS5zdHJpcCgpCisgICAgICAgIHR5
cGUgPSBnZXRfY3BwX3R5cGUoclswXSkKKyAgICBlbHNlOgorICAgICAgICBuYW1lID0gImFyZ3t9
Ii5mb3JtYXQoYXJnX2luZGV4KQorICAgICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKGFyZ19zcGVj
KQorICAgIHJldHVybiBjcHBfYXJnKHR5cGUsIG5hbWUpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJn
X2xpc3QoYXJnc19zcGVjczogSXRlcmFibGVbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9hcmdfbGlz
dChbY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM9ZSwgYXJnX2luZGV4PWkpIGZvciBpLCBlIGluIGVu
dW1lcmF0ZShhcmdzX3NwZWNzKV0pCisKKworZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIs
IHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSwgaXNfZXh0ZW5zaW9uOiBi
b29sKToKKyAgICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5fdHlwZT1nZXRfY3Bw
X3R5cGUocmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjcyks
IGlzX2V4dGVuc2lvbj1pc19leHRlbnNpb24pCisKKworZGVmIHJlYWRfbGluZXNfdW50aWwobGlu
ZXMgOiBJdGVyYWJsZVtzdHJdLCBtYXRjaCA6IHN0cikgLT4gR2VuZXJhdG9yW3N0ciwgTm9uZSwg
Tm9uZV06CisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIGlmIHJlLm1hdGNoKG1hdGNo
LCBsaW5lLnN0cmlwKCkpOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgeWllbGQgbGluZQor
CitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCJ1c2Fn
ZTogJXByb2cgW29wdGlvbnNdIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2Ui
LCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJQcmludCBzb21lIGRlYnVnIGluZm8gZnJvbSB0
aGUgZ2VuZXJhdG9yIHNjcmlwdCIpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkK
KworICAgICMgQ29uc3RydWN0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUgZnJvbSB3
ZWIgcHJvY2VzcyB0byBHUFUgcHJvY2Vzcy4KKworICAgICMgRklYTUU6IFVudGlsIGV4dGVuc2lv
bnMgaGVhZGVyIGlzIHJlbW92ZWQsIHdlIG5lZWQgdG8gY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50
YXRpb24KKyAgICAjIHdpdGggdGhlIGRpc3RpbmN0aW9uIG9mIHdoZXRoZXIgYSBmdW5jdGlvbiBp
cyBvciBpcyBub3QgYW4gZXh0ZW5zaW9uIGZ1bmN0aW9uLgorICAgIGV4dGVuc2lvbl9zaWduYXR1
cmVzIDogU2V0W3N0cl0gPSBzZXQoKQorICAgIHdpdGggb3BlbihleHRlbnNpb25zX2lucHV0X2Zu
KSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAg
bSA9IHJlLm1hdGNoKHIiLip2aXJ0dWFsIChcUyspXHMrKFx3KylcKCguKilcKSA9IDA7IiwgbGlu
ZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBf
ZnVuYygKKyAgICAgICAgICAgICAgICAgICAgbmFtZT1tWzJdLAorICAgICAgICAgICAgICAgICAg
ICByZXR1cm5fc3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9z
cGxpdF9hcmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249
VHJ1ZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3NpZ25h
dHVyZXMudXBkYXRlKFtzdHIoZnVuYyldKQorICAgIGZ1bmNzID0gW10KKyAgICB1bmltcGxlbWVu
dGVkID0gW10KKyAgICBmb3IgZm4gaW4gZnVuY3Rpb25zX2lucHV0X2ZuczoKKyAgICAgICAgd2l0
aCBvcGVuKGZuKSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkp
CisgICAgICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRnVuY3Rp
b25zIHdpdGggYSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKwor
ICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEVuZCBv
ZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAg
ICAgICAgbSA9IHJlLm1hdGNoKHIiXHMqKFxTKylccysoXHcrKVwoKC4qKVwpIGZpbmFsOyIsIGxp
bmUpCisgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgZnVuY19uYW1l
ID0gbVsyXQorICAgICAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdW5jX25hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm5fc3BlYz1tWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVj
cz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz
X2V4dGVuc2lvbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
ICAgICBmdW5jLmlzX2V4dGVuc2lvbiA9IHN0cihmdW5jKSBpbiBleHRlbnNpb25fc2lnbmF0dXJl
cworICAgICAgICAgICAgICAgICAgICBpZiBmdW5jLmlzX2ltcGxlbWVudGVkKCk6CisgICAgICAg
ICAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoZnVuYykKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaW1wbGVtZW50ZWQuYXBwZW5kKGZ1bmMp
CisKKworICAgIHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9zdWZmaXgoZnVuY3MpCisgICAg
IyBJbml0aWFsaXplIFdlYktpdCBJUEMgZ2VuZXJhdGlvbi4gQ29uc3RydWN0IHR5cGUgbWFwcGlu
Z3MgZm9yIHRoZSB1c2VkIEMrKyB0eXBlcyAtPiBJUEMgdHlwZXMuCisgICAgIyBUT0RPOiBuYW1l
c3BhY2luZyBpc3N1ZXMuCisgICAgYWlfdHlwZSA9IGdldF9jcHBfdHlwZSgiQWN0aXZlSW5mbyYi
KQorICAgIGFpX3RyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoIldlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvIikKKyAgICB3ZWJraXRfaXBjX3R5cGVzW2FpX3R5cGVdID0g
YWlfdHJhbnNmZXJfdHlwZQorCisgICAgd2l0aCBvcGVuKHR5cGVzX2lucHV0X2ZuKSBhcyBmOgor
ICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgZm9yIF8gaW4gcmVh
ZF9saW5lc191bnRpbChsaW5lcywgIi8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcg
V2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmds
IHNjcmlwdC4iKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9s
aW5lc191bnRpbChsaW5lcywgIi8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13
ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3Nl
cnRcKHN0ZDo6aXNfc2FtZV92PChcdyspLCAoXHcrKT5cKTsiLCBsaW5lKQorICAgICAgICAgICAg
aWYgbToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2dldF9jcHBfdHlwZShtWzFd
KV0gPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPT0g
c2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAg
ICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNf
dHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVz
X2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAg
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5
cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICAjIEZJWE1FOiBIZXJlIHdlIHVzZSA8PSBpbnN0ZWFkIG9mID09IGR1ZSB0byBwb2ludGVy
cywgc3VjaCBhcyBHQ0dMc3luYywgR0NHTGludHB0ciwgLi4uLgorICAgICAgICAgICAgIyBUaGlz
IGVuZHMgdXAgZmFpbGluZyBpZiB0aGVyZSBldmVyIGlzIGFycmF5cyBvZiB0aGVzZSB0eXBlcywg
c2luY2UgYXJyYXlzIGFyZSBjdXJyZW50bHkKKyAgICAgICAgICAgICMgcmVpbnRlcnByZXQtY2Fz
dGVkLgorICAgICAgICAgICAgIyBXZWJLaXQgSVBDIHJlcXVpcmVzIG9uZSBzaXplZCB0eXBlLCBi
dXQgdGhlIHNpemUgb2YgdGhlc2UgcG9pbnRlci1iYXNlZCB2YWx1ZXMgd2lsbCBjaGFuZ2UKKyAg
ICAgICAgICAgICMgYmFzZWQgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9mXCgoXHcrKVwp
XCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUg
PSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBf
dHlwZShtWzJdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0g
aXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNw
cF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9zdGF0
aWNfY2FzdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUubWF0
Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXplb2ZcKChcdyspXCkg
JiYgc2l6ZW9mXCgoXHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAg
ICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0p
CisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAg
ICAgICAgICBjcHBfY2FzdF90aHJvdWdoX3R5cGUgPSBnZXRfY3BwX3R5cGUobVs0XSkKKyAgICAg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAg
ICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUp
XSA9IGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNwcF9jYXN0X3Ro
cm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNb
KGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90
aHJvdWdoKGNwcF9jYXN0X3Rocm91Z2hfdHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQor
CisgICAgIyBGb3IgYWxsIHR5cGVzIGluIHRoZSBpbnB1dCBBUEksIGZvcm0gY29ycmVzcG9uZGlu
ZyBJUEMgdHlwZXMgYW5kIGNvbnZlcnNpb25zLgorICAgICMgVE9ETzogdGhpcyBpcyBub3QgZHJp
dmVuIGJ5IHRoZSB0eXBpbmcuCisgICAgYWxsX3R5cGVzID0gc2V0KCkKKyAgICBmb3IgZnVuYyBp
biBmdW5jczoKKyAgICAgICBhbGxfdHlwZXMudXBkYXRlKGZ1bmMuYXJncy50eXBlcygpICsgW2Z1
bmMucmV0dXJuX3R5cGVdKQorICAgICMgU29ydCBieSBsZW4gc28gdGhhdCB0ZW1wbGF0ZSBhcmdz
IGNvbWUgYmVmb3JlIHRlbXBsYXRlcy4KKyAgICBmb3IgY3BwX3R5cGUgaW4gc29ydGVkKGFsbF90
eXBlcywga2V5PWxhbWJkYSB4OiBsZW4oeC50eXBlX25hbWUpKToKKyAgICAgICAgaWYgY3BwX3R5
cGUgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAKKyAg
ICAgICAgaWYgY3BwX3R5cGUuaXNfZHluYW1pY19zcGFuKCkgb3IgY3BwX3R5cGUuaXNfc3Bhbigp
OgorICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fdHJhbnNm
ZXJfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVd
ID0gdHJhbnNmZXJfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgICAgICAgICBpZiBjcHBfdHlw
ZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpOgorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IHdlYmtp
dF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1sodHJhbnNmZXJfdHlwZSwg
Y3BwX3R5cGUpXSA9IHdlYmtpdF9pcGNfbWFrZV9nY2dsc3Bhbl9jb252ZXJzaW9uCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9z
cGFuX3N0b3JlX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c19jb252ZXJ0ZXJzWyhzdG9yZV90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVp
bnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAgICAgIGVsaWYgY3BwX3R5cGUuaXNfcmVmZXJl
bmNlKCkgb3IgY3BwX3R5cGUuaXNfY29uc3RfcmVmZXJlbmNlKCkgb3IgY3BwX3R5cGUuaXNfY29u
dGFpbmVyKCk6CisgICAgICAgICAgICB2YWx1ZV90eXBlID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5
cGUoKSBpZiBub3QgY3BwX3R5cGUuaXNfY29udGFpbmVyKCkgZWxzZSBjcHBfdHlwZQorICAgICAg
ICAgICAgaWYgdmFsdWVfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgICAgICBjb250
YWluZWRfdHlwZSA9IHZhbHVlX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkKKyAgICAgICAgICAg
ICAgICB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID0gd2Via2l0X2lwY190eXBlc1tjb250YWlu
ZWRfdHlwZV0KKyAgICAgICAgICAgICAgICBpZiB3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlID09
IGNvbnRhaW5lZF90eXBlOgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2Nw
cF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICB0cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKGYie3ZhbHVlX3R5cGUuZ2V0X2Nv
bnRhaW5lcl9uYW1lKCl9PHtzdHIod2Via2l0X2lwY19jb250YWluZWRfdHlwZSl9PiIpCisgICAg
ICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdHJhbnNmZXJfdHlw
ZQorICAgICAgICAgICAgICAgICAgICAjIFRPRE86IEhlcmUgbWlnaHQgYmUgY2FzZSB3aGVyZSBW
ZWN0b3I8R0NHTGludD4gd2FzIHVzZWQgaW4gdGhlIGludGVyZmFjZSBhbmQgVmVjdG9yPGludDMy
X3Q+IGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgSVBDIGRlZmluaXRpb24u
IFRoZXJlIGlzIG5vIHNlbnNpYmxlIHdheSB0byBkbyB0aGlzIGF0IHRoZSBtb21lbnQuIFdlIGRv
IG5vdCBjb252ZXJ0LCByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgIyBleHBlY3QgdGhhdCBh
bGwgdGhlIGludm9jYXRpb25zIGFyZSB0YWtlbiBjYXJlIG9mIHRoZSBmYWN0IHRoYXQgR0NHTGlu
dCBpcyB0aGUgc2FtZSB0eXBlIGFzIGludDMyX3QuCisgICAgICAgICAgICAgICAgICAgICMgVGhp
cyB3aWxsIG5vdCBob2xkIGZvciBhbGwgdHlwZXMgc3VjaCBhcyBHQ0dMYm9vbGVhbi4KKyAgICAg
ICAgICAgICAgICAgICAgI3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIHRy
YW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlw
ZV0gPSB2YWx1ZV90eXBlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGVzW2NwcF90eXBlXSA9IGNwcF90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAKKyAgICAjIFRo
ZSBpbnB1dCB0byB0aGUgZ2VuZXJhdG9ycyBpcyBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUu
CisgICAgIyBSdW4gdGhlIHZhcmlvdXMgZ2VuZXJhdG9ycy4KKyAgICBnZW5lcmF0b3JzID0gWwor
ICAgICAgICBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcywgdW5p
bXBsZW1lbnRlZCksCisgICAgICAgIGNvbnRleHRfbXNnX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1
bmNzKSwKKyAgICAgICAgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAor
ICAgIF0KKyAgICBmb3IgZyBpbiBnZW5lcmF0b3JzOgorICAgICAgICBnLmdlbmVyYXRlKCkKKwor
ICAgIGlmIG9wdGlvbnMudmVyYm9zZToKKyAgICAgICAgcHJpbnQoIkltcGxlbWVudGVkOiIpCisg
ICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAge3N0cihpKX0gZmluYWxcbiIgZm9yIGkgaW4gZnVu
Y3MpKQorICAgICAgICBwcmludCgiVW5pbXBsZW1lbnRlZDoiKQorICAgICAgICBwcmludCgiIi5q
b2luKGYiICAgIHtzdHIodSl9IGZpbmFsXG4iIGZvciB1IGluIHVuaW1wbGVtZW50ZWQpKQorICAg
ICAgICBwcmludChmIkltcGxlbWVudGVkOiB7bGVuKGZ1bmNzKX0sIHVuaW1wbGVtZW50ZWQ6IHts
ZW4odW5pbXBsZW1lbnRlZCl9LCB0b3RhbDoge2xlbihmdW5jcykrbGVuKHVuaW1wbGVtZW50ZWQp
fSIpCisgICAgICAgIHByaW50KCJDKysgdHlwZSBtYXAgdG8gV2ViS2l0IElQQyB0eXBlIG1hcDoi
KQorICAgICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlm
IHQgaW4gd2Via2l0X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3Ry
KHQpfSAtPiB7c3RyKHdlYmtpdF9pcGNfdHlwZXNbdF0pfSIpCisgICAgICAgIHByaW50KCJDKysg
dHlwZXMgd2l0aG91dCBXZWJLaXQgSVBDIHR5cGU6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3Bw
X3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0IG5vdCBpbiB3ZWJraXRfaXBjX3R5cGVz
OgorICAgICAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIodCl9IikKKyAgICAgICAgcHJpbnQo
IldlYktpdCBJUEMgdHlwZSBjb252ZXJzaW9ucyIpCisgICAgICAgIGZvciAoYSwgYiksIGNvbnZl
cnRlciBpbiB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnMuaXRlbXMoKToKKyAgICAgICAgICAg
IHByaW50KGYiICAgIHtzdHIoYSl9IC0+IHtzdHIoYil9IDoge2NvbnZlcnRlci5fX25hbWVfX30i
KQorICAgICAgICBwcmludCgiRG9uZS4iKQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18g
PT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Q3MTQyZWNmODRl
OGQ2ZjI5OWU1YWNiYWQyODg0ZjBhNjg3Mjk5MS4uNjBlYTg2YWZlODc3YWYyZjkzYjE3YTc2MmEx
YzJhNDMwYWMyMzQ2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTEyLTAyICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTcyMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMg
YSBiZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3Ig
R1BVCisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2Vi
S2l0IElQQy4KKworICAgICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGUgbWlzc2lu
ZyBmdW5jdGlvbmFsaXR5LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxlIHRoZSB0ZXN0cyB0
aGF0IGFjdHVhbGx5IHBhc3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBiZWZvcmUgdGhlCisgICAg
ICAgIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAyMC0xMi0wMSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR0xJQl0gQWRkIHNvbWUgV1BFLXNwZWNpZmljIGJhc2VsaW5lcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4NTMw
NTgwMDMzOTBmZDc1MzdkYzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBhMmQ0NjcyNjNjNzA4
Yzk0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTcs
NiArMzE3LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3Rl
LWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmdsIFsg
U2tpcCBdCiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAord2Vi
a2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS1m
YWxzZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dlYmds
L3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIx
OTM0OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3Vy
YXRpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJn
bC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIx
OTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVz
dC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dlYmds
L2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmdw
dSBbIFNraXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlwZXMu
aHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415285</attachid>
            <date>2020-12-03 01:44:08 -0800</date>
            <delta_ts>2020-12-03 05:44:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201203114405.patch</filename>
            <type>text/plain</type>
            <size>584879</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFiNzZlMTlhYjVmZTc4
NTczZTc5Yjg3NTE5Y2FmZjcwYWE4YjM2OS4uNmVkNTMxYzdmYTUyZDM2ODljZDgzNzNkYzYzOTdj
ZDg5MWNkMDZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgQ2hhbmdlcyBHcmFwaGljc0NvbnRleHRHTCBhbmQg
RXh0ZW5zaW9uc0dMIHRvIG5vdCBoYXZlIGR1cGxpY2F0ZSBuYW1lcworICAgICAgICBhbmQgaGF2
ZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgIENoYW5nZXMgZmV3
IHJlbWFpbmluZyBHcmFwaGljc0NvbnRleHRHTCBnZXR0ZXJzIHRvIHVzZSByb2J1c3QgR0NHTFNw
YW4KKyAgICAgICAgZm9ybS4KKworICAgICAgICBDaGFuZ2VzIGZldyByb2J1c3QgZ2V0dGVycyB0
byBHQ0dMU3BhbiBmb3JtIGFuZCBtb3ZlcyB0aGVtIGZyb20KKyAgICAgICAgRXh0ZW5zaW9uc0dM
IHRvIEdyYXBoaWNzQ29udGV4dEdMLgorCisgICAgICAgIENoYW5nZXMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zIHRvIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAg
IHZlY3RvciBpbnN0ZWFkIG9mIHRha2luZyBpdCBhcyBub24tY29uc3QgcmVmZXJlbmNlLiBUaGlz
IHdheSB0aGUgb3V0CisgICAgICAgIHZlY3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zZmVy
cmVkIHRvIHRoZSByZW1vdGUgc2lkZS4gVGhlIGNhbGwgc2l0ZQorICAgICAgICBpcyBhbHNvIG1v
cmUgbmF0dXJhbC4KKworICAgICAgICBSZXF1ZXN0cyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gc28gdGhhdCBXZWJHTCAyLjAgb2NjbHVzaW9uCisgICAgICAgIHF1ZXJpZXMgd29yayB3
aGVuIGNhbGxlZCB3aXRoIGdsOjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFLgorCisgICAg
ICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1pdCBJT1N1cmZhY2VzIGZyb20gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3ZWIgcHJvY2VzcyBXZWJHTCwgdGhl
c2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNzIFdlYkdMLAorICAgICAgICB0aGUg
SU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3BsYXkgY2FsbGVyLCBlLmcuIHRoZQor
ICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hpY2ggdGhlbiByZXR1cm4gdGhlIElP
U3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2VzcyBzaWRlLiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0aGVtIHRvIFdlYkdMTGF5ZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3Rpbmcgd2ViZ2wgdGVzdHMgb25j
ZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRX
YWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
OgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAgICAgICAgKEdDR0xTcGFuPEdDR0x2
b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtVGV4dHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1Rv
QXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5
bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmFzQ1YpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAg
KC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVy
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIwLTEyLTAyICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERldGVybWluZSB0aGUgV2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGUgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBwYXNzaW5nIGl0IHRv
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYyYTQzMTgwOTlhODY1MWVkYjVjMzI2
YWY1YzdkY2ZiZGEzYWEzZmEuLjY3MDAyMTFlYWQwZDlkN2UzNjMwOTc5ZGQ1ODA2YmJkMDI3Njcw
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdM
QmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgYmVnaW5uaW5n
IG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wgZm9yIEdQVQorICAgICAg
ICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMuCisK
KyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3JpcHQgaW1wbGVtZW50aW5n
IHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0wgbWVtYmVyIGZ1
bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQorICAgICAgICBwcm9jZXNz
LiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3Vs
dHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3IgZWFzZSBvZiByZXZpZXcu
CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBXZWJL
aXQgc2lkZS4gVGhpcyBjbGFzcyB3aWxsCisgICAgICAgIGZvcndhcmQgY2FsbHMgcmVjZWl2ZWQg
dmlhIElQQyB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuIEF0IHRoZQorICAgICAgICBt
b21lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW5zdGFuY2UgaXMgYSBkaXJlY3QgY2hpbGQg
b2YKKyAgICAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4KKworICAgICAgICBDaGFuZ2Vz
IFdlYktpdCBJUEMgdG8gc3VwcG9ydCByZWNlaXZpbmcgdHlwZWQgYXJyYXlzIGFzIHJlZmVyZW5j
ZXMuIFRoaXMKKyAgICAgICAgaXMgbmVlZGVkIHRvIHN1Ym1pdCBHTCBkYXRhIGFycmF5cywgc3Vj
aCBhcyBHTGZsb2F0IGFycmF5cyBkaXJlY3RseSBmcm9tCisgICAgICAgIHRoZSBJUEMgZGF0YSBz
dG9yZSB3aXRob3V0IGFuIGV4dHJhIGNvcHkuCisKKyAgICAgICAgQ2hhbmdlcyBXZWJLaXQgSVBD
IHRvIHN1cHBvcnQgcGFzc2luZyBkYXRhIHJlZmVyZW5jZXMsIGkuZS4KKyAgICAgICAgRGF0YVJl
ZmVyZW5jZSBvciBBcnJheVJlZmVyZW5jZSwgYXMgYSBzeW5jaHJvbml6ZWQgY2FsbCByZXR1cm4g
dmFsdWUuCisgICAgICAgIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBDb25uZWN0aW9uOjpzeW5j
U2VuZCgpIHJlc3VsdCAoRGVjb2RlciBvYmplY3QpCisgICAgICAgIGZvciB0aGUgZHVyaWF0aW9u
IG9mIHVzaW5nIHRoZSBkYXRhIHZhbHVlcy4KKworICAgICAgICBDb21wb3NpdGluZyBpcyBpbXBs
ZW1lbnRlZCBvbmx5IGZvciBQTEFURk9STShDT0NPQSkuCisKKyAgICAgICAgTWlzc2luZzoKKyAg
ICAgICAgIC0gU2ltdWxhdGVkIGNvbnRleHQgbG9zcworICAgICAgICAgLSBTaW11bGF0ZWQgY29u
dGV4dCBjaGFuZ2UKKyAgICAgICAgIC0gUGFpbnQgV2ViR0wgY29udGVudHMgdG8gMkQgY2FudmFz
CisgICAgICAgICAtIFVwbG9hZCB2aWRlbyB0byBXZWJHTAorICAgICAgICAgLSBVcGxvYWQgY2Fu
dmFzIHRvIFdlYkdMCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0
Q2hhbmdlZE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpyZWN5Y2xlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnByZXNlbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6ZGV0YWNoQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDogQWRkZWQuCisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNz
YWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOiBBZGRlZC4KKyAgICAgICAgKHNldEZh
aWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoc3ludGhlc2l6ZUdMRXJyb3IpOgorICAg
ICAgICAobW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKGFjdGl2ZVRl
eHR1cmUpOgorICAgICAgICAoYXR0YWNoU2hhZGVyKToKKyAgICAgICAgKGJpbmRBdHRyaWJMb2Nh
dGlvbik6CisgICAgICAgIChiaW5kQnVmZmVyKToKKyAgICAgICAgKGJpbmRGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChiaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGJpbmRUZXh0dXJlKToKKyAg
ICAgICAgKGJsZW5kQ29sb3IpOgorICAgICAgICAoYmxlbmRFcXVhdGlvbik6CisgICAgICAgIChi
bGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoYmxlbmRGdW5jKToKKyAgICAgICAgKGJs
ZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAg
ICAgICAoY2xlYXIpOgorICAgICAgICAoY2xlYXJDb2xvcik6CisgICAgICAgIChjbGVhckRlcHRo
KToKKyAgICAgICAgKGNsZWFyU3RlbmNpbCk6CisgICAgICAgIChjb2xvck1hc2spOgorICAgICAg
ICAoY29tcGlsZVNoYWRlcik6CisgICAgICAgIChjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChj
b3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChjcmVhdGVCdWZmZXIpOgorICAgICAgICAoY3Jl
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoY3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChjcmVh
dGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoY3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGNyZWF0
ZVRleHR1cmUpOgorICAgICAgICAoY3VsbEZhY2UpOgorICAgICAgICAoZGVsZXRlQnVmZmVyKToK
KyAgICAgICAgKGRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVByb2dyYW0pOgor
ICAgICAgICAoZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGRlbGV0ZVNoYWRlcik6Cisg
ICAgICAgIChkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKGRlcHRoRnVuYyk6CisgICAgICAgIChk
ZXB0aE1hc2spOgorICAgICAgICAoZGVwdGhSYW5nZSk6CisgICAgICAgIChkZXRhY2hTaGFkZXIp
OgorICAgICAgICAoZGlzYWJsZSk6CisgICAgICAgIChkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkp
OgorICAgICAgICAoZHJhd0FycmF5cyk6CisgICAgICAgIChkcmF3RWxlbWVudHMpOgorICAgICAg
ICAoZW5hYmxlKToKKyAgICAgICAgKGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAg
KGZpbmlzaCk6CisgICAgICAgIChmbHVzaCk6CisgICAgICAgIChmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChmcm9udEZh
Y2UpOgorICAgICAgICAoZ2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoZ2V0QWN0aXZlQXR0cmli
KToKKyAgICAgICAgKGdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoZ2V0QXR0cmliTG9jYXRp
b24pOgorICAgICAgICAoZ2V0QnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnZXRTdHJpbmcp
OgorICAgICAgICAoZ2V0RmxvYXR2KToKKyAgICAgICAgKGdldEludGVnZXJ2KToKKyAgICAgICAg
KGdldEludGVnZXI2NCk6CisgICAgICAgIChnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKGdldFBy
b2dyYW1pKToKKyAgICAgICAgKGdldEJvb2xlYW52KToKKyAgICAgICAgKGdldEVycm9yKToKKyAg
ICAgICAgKGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0
UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6Cisg
ICAgICAgIChnZXRTaGFkZXJpKToKKyAgICAgICAgKGdldFNoYWRlckluZm9Mb2cpOgorICAgICAg
ICAoZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KToKKyAgICAgICAgKGdldFNoYWRlclNvdXJjZSk6
CisgICAgICAgIChnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdldFRleFBhcmFtZXRlcmkp
OgorICAgICAgICAoZ2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKGdldFVuaWZvcm1pdik6CisgICAg
ICAgIChnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKGdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAg
ICAgIChnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoaGludCk6CisgICAgICAgIChp
c0J1ZmZlcik6CisgICAgICAgIChpc0VuYWJsZWQpOgorICAgICAgICAoaXNGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChpc1Byb2dyYW0pOgorICAgICAgICAoaXNSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoaXNTaGFkZXIpOgorICAgICAgICAoaXNUZXh0dXJlKToKKyAgICAgICAgKGxpbmVXaWR0aCk6
CisgICAgICAgIChsaW5rUHJvZ3JhbSk6CisgICAgICAgIChwaXhlbFN0b3JlaSk6CisgICAgICAg
IChwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKHJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAg
ICAoc2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoc2Npc3Nvcik6CisgICAgICAgIChzaGFkZXJT
b3VyY2UpOgorICAgICAgICAoc3RlbmNpbEZ1bmMpOgorICAgICAgICAoc3RlbmNpbEZ1bmNTZXBh
cmF0ZSk6CisgICAgICAgIChzdGVuY2lsTWFzayk6CisgICAgICAgIChzdGVuY2lsTWFza1NlcGFy
YXRlKToKKyAgICAgICAgKHN0ZW5jaWxPcCk6CisgICAgICAgIChzdGVuY2lsT3BTZXBhcmF0ZSk6
CisgICAgICAgICh0ZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKHRleFBhcmFtZXRlcmkpOgorICAg
ICAgICAodW5pZm9ybTFmKToKKyAgICAgICAgKHVuaWZvcm0xZnYpOgorICAgICAgICAodW5pZm9y
bTFpKToKKyAgICAgICAgKHVuaWZvcm0xaXYpOgorICAgICAgICAodW5pZm9ybTJmKToKKyAgICAg
ICAgKHVuaWZvcm0yZnYpOgorICAgICAgICAodW5pZm9ybTJpKToKKyAgICAgICAgKHVuaWZvcm0y
aXYpOgorICAgICAgICAodW5pZm9ybTNmKToKKyAgICAgICAgKHVuaWZvcm0zZnYpOgorICAgICAg
ICAodW5pZm9ybTNpKToKKyAgICAgICAgKHVuaWZvcm0zaXYpOgorICAgICAgICAodW5pZm9ybTRm
KToKKyAgICAgICAgKHVuaWZvcm00ZnYpOgorICAgICAgICAodW5pZm9ybTRpKToKKyAgICAgICAg
KHVuaWZvcm00aXYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgICh1bmlm
b3JtTWF0cml4M2Z2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAodXNl
UHJvZ3JhbSk6CisgICAgICAgICh2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAodmVydGV4QXR0
cmliMWYpOgorICAgICAgICAodmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjJmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjJmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIz
Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAodmVydGV4QXR0cmliNGYp
OgorICAgICAgICAodmVydGV4QXR0cmliNGZ2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYlBvaW50
ZXIpOgorICAgICAgICAodmlld3BvcnQpOgorICAgICAgICAoYnVmZmVyRGF0YTApOgorICAgICAg
ICAoYnVmZmVyRGF0YTEpOgorICAgICAgICAoYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChyZWFk
blBpeGVsczApOgorICAgICAgICAocmVhZG5QaXhlbHMxKToKKyAgICAgICAgKHRleEltYWdlMkQw
KToKKyAgICAgICAgKHRleEltYWdlMkQxKToKKyAgICAgICAgKHRleFN1YkltYWdlMkQwKToKKyAg
ICAgICAgKHRleFN1YkltYWdlMkQxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTJEMCk6
CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UyRDEpOgorICAgICAgICAoY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQwKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSk6CisgICAg
ICAgIChkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKGRyYXdFbGVtZW50c0luc3RhbmNl
ZCk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAgICAgICAgKGNyZWF0ZVZlcnRl
eEFycmF5KToKKyAgICAgICAgKGRlbGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKGlzVmVydGV4
QXJyYXkpOgorICAgICAgICAoYmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKGNvcHlCdWZmZXJT
dWJEYXRhKToKKyAgICAgICAgKGdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoYmxpdEZyYW1l
YnVmZmVyKToKKyAgICAgICAgKGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGlu
dmFsaWRhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIp
OgorICAgICAgICAocmVhZEJ1ZmZlcik6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUpOgorICAgICAgICAodGV4U3RvcmFnZTJEKToKKyAgICAgICAgKHRleFN0b3JhZ2Uz
RCk6CisgICAgICAgICh0ZXhJbWFnZTNEMCk6CisgICAgICAgICh0ZXhJbWFnZTNEMSk6CisgICAg
ICAgICh0ZXhTdWJJbWFnZTNEMCk6CisgICAgICAgICh0ZXhTdWJJbWFnZTNEMSk6CisgICAgICAg
IChjb3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UzRDApOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlM0QxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEpOgorICAgICAg
ICAoZ2V0RnJhZ0RhdGFMb2NhdGlvbik6CisgICAgICAgICh1bmlmb3JtMXVpKToKKyAgICAgICAg
KHVuaWZvcm0ydWkpOgorICAgICAgICAodW5pZm9ybTN1aSk6CisgICAgICAgICh1bmlmb3JtNHVp
KToKKyAgICAgICAgKHVuaWZvcm0xdWl2KToKKyAgICAgICAgKHVuaWZvcm0ydWl2KToKKyAgICAg
ICAgKHVuaWZvcm0zdWl2KToKKyAgICAgICAgKHVuaWZvcm00dWl2KToKKyAgICAgICAgKHVuaWZv
cm1NYXRyaXgyeDNmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4M3gyZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAg
ICAgICh1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDR4M2Z2KToK
KyAgICAgICAgKHZlcnRleEF0dHJpYkk0aSk6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGl2KToK
KyAgICAgICAgKHZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAodmVydGV4QXR0cmliSTR1aXYp
OgorICAgICAgICAodmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAgICAoZHJhd1JhbmdlRWxl
bWVudHMpOgorICAgICAgICAoZHJhd0J1ZmZlcnMpOgorICAgICAgICAoY2xlYXJCdWZmZXJpdik6
CisgICAgICAgIChjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChjbGVhckJ1ZmZlcmZ2KToKKyAg
ICAgICAgKGNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoY3JlYXRlUXVlcnkpOgorICAgICAgICAo
ZGVsZXRlUXVlcnkpOgorICAgICAgICAoaXNRdWVyeSk6CisgICAgICAgIChiZWdpblF1ZXJ5KToK
KyAgICAgICAgKGVuZFF1ZXJ5KToKKyAgICAgICAgKGdldFF1ZXJ5KToKKyAgICAgICAgKGdldFF1
ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoY3JlYXRlU2FtcGxlcik6CisgICAgICAgIChkZWxldGVT
YW1wbGVyKToKKyAgICAgICAgKGlzU2FtcGxlcik6CisgICAgICAgIChiaW5kU2FtcGxlcik6Cisg
ICAgICAgIChzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChzYW1wbGVyUGFyYW1ldGVyZik6
CisgICAgICAgIChnZXRTYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnZXRTYW1wbGVyUGFy
YW1ldGVyaSk6CisgICAgICAgIChmZW5jZVN5bmMpOgorICAgICAgICAoaXNTeW5jKToKKyAgICAg
ICAgKGRlbGV0ZVN5bmMpOgorICAgICAgICAoY2xpZW50V2FpdFN5bmMpOgorICAgICAgICAod2Fp
dFN5bmMpOgorICAgICAgICAoZ2V0U3luY2kpOgorICAgICAgICAoY3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2spOgorICAgICAgICAoZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoaXNU
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAg
ICAgICAoYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChlbmRUcmFuc2Zvcm1GZWVk
YmFjayk6CisgICAgICAgICh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyk6CisgICAgICAgIChwYXVzZVRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGJpbmRC
dWZmZXJCYXNlKToKKyAgICAgICAgKGJpbmRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnZXRVbmlm
b3JtSW5kaWNlcyk6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChnZXRV
bmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToK
KyAgICAgICAgKHVuaWZvcm1CbG9ja0JpbmRpbmcpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYpOgorICAgICAgICAoZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAg
IChibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAg
IChkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChpc1ZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKGJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUpOgorICAgICAgICAoaW5zZXJ0RXZlbnRNYXJrZXJFWFQpOgorICAgICAgICAo
cHVzaEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKHBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAg
ICAgKGRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6
CisgICAgICAgIChkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgICh2ZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2Iu
aW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNw
cDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5j
cHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5o
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAg
ICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisg
ICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlS
ZWZlcmVuY2U6OnNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5o
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVj
b2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAg
ICAoSVBDOjpFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0VuY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3Nh
Z2VTZW5kZXI6OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hh
cmVkL0F1eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAg
ICAqIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6c2VuZFN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRp
b24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90
aWZ5TWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xF
cnJvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNT
ZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1
YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhS
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRpc2FibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZv
cm0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRB
dHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xl
YW52KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0U2hhZGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4
UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0Zy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc1NoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBs
ZUNvdmVyYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2Npc3Nvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxP
cFNlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNm
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0zaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0zaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtNGYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0
ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIz
ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWI0Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1h
Z2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliRGl2aXNvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1
ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
bnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3Rv
cmFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdl
M0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRG
cmFnRGF0YUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0ydWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJp
eDJ4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDR4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliSTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQ
b2ludGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd1JhbmdlRWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVR
dWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
UXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
ZWdpblF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZW5kUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVy
UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVl
ZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJh
c2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
QnVmZmVyUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tOYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybUJsb2NrQmluZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
Qik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRG
cmFtZWJ1ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9F
Uyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlu
c2VydEV2ZW50TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3Jt
YXRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJl
YWRQaXhlbHNSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVl
cnlpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJ
bnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJp
Ykl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNh
bXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVy
eU9iamVjdHVpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5l
Y3RUb0dQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0
aERlbGF5ZWRSZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1hbnkgZGlmZmVy
ZW50IGFzc2VydGlvbiBmYWlsdXJlcyBvbiB0aGUgR1BVIHByb2Nlc3MgYm90IGFmdGVyIHIyNzAz
NjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDRhMDQyMjc0ODU0YmFmNDY2NzFhYTMwOWM3Mzg3OWEz
NTgxM2QxOWQuLjM1MGZjMTk0Zjk1ZjRiZmZkYzE0YWRhMjM0NDVjNWQyYWU0ZWFlMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMTI1MSw2ICsxMjUxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNr
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZQppbmRleCBjZmViMDM4YWVkOGVhZTUxNzEzYjg2NzA1MTdiNTZhZGMwYzNiODJl
Li5jZTZmMTNiODhiZDQwNzdhMGM1NGIzMTU4OTcyNTEzMjY2ZGRjOTNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQpAQCAtMzExLDEwICszMTEsMTEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRD
b2NvYS5tbQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRS
ZWN0Q29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KLSAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCA4MmRmODg3YjFiMGM0ZDRiODEyY2JmZTVhMDZkZWFlNDE4MTIwZTJiLi4xMDcxNGYzZjRh
NTY4ZmZkMGQxNTY5NDAyZTBlY2RjNDc4NzAxNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTk3Miw2
ICsxOTcyLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhdHRlcm4uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5n
ZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZVZpZGVvU2FtcGxlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggNjY4NzUyYzc5NTI2YmM2Y2QxNDNjMmVmNjU5NmYxNGM3YjA3MzNlZC4uYmI0YmFkODdkZmNh
ZTQwYjdmZTRkMDBiMGZjZTI0MWVmZmI5ZDU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBA
IC0zNTcsMTIgKzM1NywxNCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRp
b25Db2NvYS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRh
Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1t
CitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJl
Y3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDJmODNhZTU2ZjIzZjgxYmY5MWNmNjI1NWQ1ZWU5NzkwZTJjOWIy
YzcuLmMzYzk5ZDllY2I5ZmJmYTJiOGQ2YjExMmY3YmQyYjY5ZmYyNGEwYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNTUs
NyArMjA1NSw3IEBACiAJCTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3
OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU0QUJDRDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVu
a25vd25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RTRBQkNEMzEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAq
LzsgfTsKIAkJNkU0RTkxQUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5
MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThC
RDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNH
TC5oICovOyB9OworCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBODEy
ODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU3MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4
dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5j
cHAgKi87IH07CiAJCTZFNzJGNTRFMjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCAq
LzsgfTsKIAkJNkU3MkY1NEYyMjlEQ0QxMzAwQjNFMTUxIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGlu
Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI5
MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCAqLzsgfTsK
QEAgLTIyNDksNiArMjI0OSw4IEBACiAJCTdBRjlCMjBGMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZU
VFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRjlCMjBCMThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLzsgfTsK
IAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0OTcy
MDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdM
RVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGls
aXRpZXMuaCAqLzsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNzQ29u
dGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0JFNzQyNzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBD
NEMwMkJFRDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKQEAg
LTEwMjMxLDkgKzEwMjMzLDE0IEBACiAJCTdCMTAzMzlBMjU0OTcyMDAwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250
ZXh0R0xDVkFOR0xFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxMDMzOUMy
NTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBMTYyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkU3MjY1QjI1NzYzQjhEMDBF
ODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1QkVGMTAgLyogU2V0dGluZ3Mu
Y3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBTZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzAxMUYzRTI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5jcHAuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0YyNEZBRDM2MDAwNUJFRjEwIC8qIEludGVy
bmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNldHRpbmdzR2VuZXJh
dGVkLmlkbC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjYyMyw2ICsyNjYz
MCw4IEBACiAJCQkJMDc0RTgyQjkxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdl
cy5oICovLAogCQkJCUJDQUI0MTdGMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwICovLAog
CQkJCUJDQUI0MTgwMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCAqLywKKwkJCQk3QkU3MjY1
QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3Bw
ICovLAorCQkJCTdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5oICovLAogCQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVBMDhGMiAvKiBSZW1v
dGVWaWRlb1NhbXBsZS5jcHAgKi8sCiAJCQkJMDczQTE1NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJl
bW90ZVZpZGVvU2FtcGxlLmggKi8sCiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJl
bmRlcmluZ01vZGUuaCAqLywKQEAgLTI2Nzg5LDYgKzI2Nzk4LDggQEAKIAkJCQkxQzEyQUMyOTFF
RTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oICovLAog
CQkJCUI1MzIwRDZBMTIyQTI0RTkwMDJEMTQ0MCAvKiBGb250UGxhdGZvcm1EYXRhQ29jb2EubW0g
Ki8sCiAJCQkJQjI3N0I0MDMwQjIyRjM3QzAwMDRCRUM2IC8qIEdyYXBoaWNzQ29udGV4dENvY29h
Lm1tICovLAorCQkJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8sCisJCQkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8sCiAJCQkJNDlGRkJG
MUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gKi8s
CiAJCQkJQ0RBNTk1OTYyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5oICov
LAogCQkJCUNEQTU5NTk3MjE0NkRGNzgwMEE4NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EubW0g
Ki8sCkBAIC0yNjgwMCw2ICsyNjgxMSw3IEBACiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5
IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAogCQkJCTMxNjQ3
RkE4MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLmggKi8sCiAJCQkJMzE2
NDdGQTkyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EubW0gKi8sCisJCQkJ
N0I2NEMwQjQyNTRDM0IxNjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2EubW0gKi8sCiAJCQkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1
ZmZlclBhcnNlci5jcHAgKi8sCiAJCQkJQ0RFQjNENzMyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJj
ZUJ1ZmZlclBhcnNlci5oICovLAogCQkJCUNEOEY2NjcwMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCAqLywKQEAgLTMyMTAxLDYgKzMyMTEzLDcgQEAKIAkJCQk3
QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8q
IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTdC
NkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RkMxMDQyRDM2NTAwMDlENDQ3IC8qIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTlBNzI4ODIzQzI2
N0ZFMDA4NTM1M0MgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyREFDQjlFOTIzNzU1RDAwMDBCNEMxODUgLyogR3JhcGhpY3NDb250ZXh0SW1w
bC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDAzOSw2ICszNDA1Miw3IEBACiAJCQkJQ0Q4QUNBODkx
RDIzN0FBMjAwRUNDNTlFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdEMkREIC8qIFJlbW90ZUZyYW1l
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkU5
MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0ExNTU0MjE3N0E0MjYwMEVBMDhGMiAvKiBS
ZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDFkYmQwNTVk
NzgxNTNjZmQ1YzcxNzQ1OTdmMDZlMGU1MDllNzhmYWEuLjJmOGNiZjA4NzA1MGM1ZjA4NjgwZjJl
ZDk3ZDFmMzA4ODY2MWEwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC02NzcsMjEgKzY3NywxMiBAQCB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBsb25nIGxvbmcgc3JjQnl0ZQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldEJ1ZmZlclN1YkRhdGEiLCAiUGFyYW1ldGVycyB3
b3VsZCByZWFkIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgc291cmNlIGJ1ZmZlciIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFjb3B5TGVuZ3RoKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpOwotI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBDb2FsZXNjZSBtdWx0aXBs
ZSBnZXRCdWZmZXJTdWJEYXRhKCkgY2FsbHMgdG8gdXNlIGEgc2luZ2xlIG1hcCgpIGNhbGwKLSAg
ICB2b2lkKiBwdHIgPSBtX2NvbnRleHQtPm1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgY2hlY2tlZFNy
Y0J5dGVPZmZzZXQudW5zYWZlR2V0KCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oY2hlY2tl
ZENvcHlMZW5ndGhQdHIudW5zYWZlR2V0KCkgKiBjaGVja2VkRWxlbWVudFNpemUudW5zYWZlR2V0
KCkpLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKLSAgICBpZiAocHRyKQotICAg
ICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGRzdERhdGEtPmJhc2VBZGRyZXNzKCkpICsg
ZHN0RGF0YS0+Ynl0ZU9mZnNldCgpICsgZHN0T2Zmc2V0ICogZWxlbWVudFNpemUsIHB0ciwgY29w
eUxlbmd0aCAqIGVsZW1lbnRTaXplKTsKLQotICAgIGlmICghbV9jb250ZXh0LT51bm1hcEJ1ZmZl
cih0YXJnZXQpKQotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9PUEVSQVRJT04sICJnZXRCdWZmZXJTdWJEYXRhIiwgIkZhaWxlZCB3aGlsZSB1bm1h
cHBpbmcgYnVmZmVyIik7Ci0jZW5kaWYKLSAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdCgpOworICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQs
IHNyY0J5dGVPZmZzZXQsIG1ha2VHQ0dMU3BhbihzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+
YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVt
ZW50U2l6ZSwgY29weUxlbmd0aCAqIGVsZW1lbnRTaXplKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xGcmFt
ZWJ1ZmZlciogYnVmZmVyKQpAQCAtMTcwMiw3ICsxNjkzLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYm
IGxpc3QKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsICJ2ZXJ0ZXhBdHRyaWJJNHVpdiIsICJubyBhcnJheSIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIAorCiAgICAgaW50IHNpemUgPSBsaXN0Lmxlbmd0aCgpOwogICAgIGlm
IChzaXplIDwgNCkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYkk0dWl2IiwgImFycmF5IHRvbyBzbWFsbCIp
OwpAQCAtMTk2Nyw5ICsxOTU4LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UXVlcnlQYXJhbWV0ZXIoV2ViR0xRdWVyeSYgcXVlcnksIEdDR0xlbnVtIHAKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBt
X2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2KHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSwgJnJlc3Vs
dCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aShxdWVyeS5vYmplY3QoKSwgcG5hbWUpKTsKIH0K
IAogUmVmUHRyPFdlYkdMU2FtcGxlcj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlU2Ft
cGxlcigpCkBAIC0yMDE0LDcgKzIwMDMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFdlYkdMU2FtcGxlciogc2FtcGxlcikKIAogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwog
ICAgIGlmICh1bml0ID49IG1fYm91bmRTYW1wbGVycy5zaXplKCkpIHsKICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJiaW5kU2FtcGxl
ciIsICJpbnZhbGlkIHRleHR1cmUgdW5pdCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMDU5LDE3
ICsyMDQ4LDExIEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFNhbXBsZXJQ
YXJhbWV0ZXIoV2ViR0xTYW1wbGVyJiBzYW1wbGVyLCBHQ0dMCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9NSU5fRklMVEVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfV1JBUF9SOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JB
UF9TOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOiB7Ci0gICAg
ICAgIGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRl
cml2KHNhbXBsZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4gdmFs
dWU7Ci0gICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgor
ICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLm9i
amVjdCgpLCBwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQVhf
TE9EOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0xPRDogewotICAg
ICAgICBmbG9hdCB2YWx1ZSA9IDA7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFt
ZXRlcmZ2KHNhbXBsZXIub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICByZXR1cm4g
dmFsdWU7Ci0gICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0xP
RDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxl
ci5vYmplY3QoKSwgcG5hbWUpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRTYW1wbGVyUGFyYW1ldGVy
IiwgIkludmFsaWQgcG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTE4LDcg
KzIxMDEsNyBAQCBHQ0dMZW51bSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3lu
YyhXZWJHTFN5bmMmIHN5bmMsIEdDR0xiaXRmaWVsZCBmbAogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJjbGllbnRXYWl0U3lu
YyIsICJ0aW1lb3V0ID4gTUFYX0NMSUVOVF9XQUlUX1RJTUVPVVRfV0VCR0wiKTsKICAgICAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpXQUlUX0ZBSUxFRF9XRUJHTDsKICAgICB9Ci0gICAg
CisKICAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MgIT0gR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfRkxV
U0hfQ09NTUFORFNfQklUKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiY2xpZW50V2FpdFN5bmMiLCAiaW52YWxpZCBmbGFncyIp
OwogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OldBSVRfRkFJTEVEX1dFQkdMOwpA
QCAtMjE3OSw5ICsyMTYyLDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVU
cmFuc2Zvcm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWUKIAogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWZlZWRiYWNrT2JqZWN0IHx8IGZlZWRiYWNrT2Jq
ZWN0LT5pc0RlbGV0ZWQoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZGVsZXRlVHJhbnNmb3Jt
RmVlZGJhY2siLCBmZWVkYmFja09iamVjdCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAg
IEFTU0VSVChmZWVkYmFja09iamVjdCAhPSBtX2RlZmF1bHRUcmFuc2Zvcm1GZWVkYmFjayk7Ci0g
ICAgCisKICAgICBpZiAoZmVlZGJhY2tPYmplY3QtPmlzQWN0aXZlKCkpIHsKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2siLCAiYXR0ZW1wdCB0byBkZWxldGUgYW4gYWN0aXZlIHRyYW5z
Zm9ybSBmZWVkYmFjayBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjI0OCw3ICsyMjMx
LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKCFWYWxpZGF0ZVRyYW5zZm9y
bUZlZWRiYWNrUHJpbWl0aXZlTW9kZShwcmltaXRpdmVNb2RlKSkgewogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiYmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayIsICJpbnZhbGlkIHRyYW5zZm9ybSBmZWVkYmFjayBwcmltaXRpdmUgbW9kZSIp
OwogICAgICAgICByZXR1cm47CkBAIC0yMjg4LDcgKzIyNzEsNyBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZW5kVHJhbnNmb3Jt
RmVlZGJhY2siLCAidHJhbnNmb3JtIGZlZWRiYWNrIGlzIG5vdCBhY3RpdmUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJh
Y2soKTsKIAogICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjay0+c2V0UGF1c2VkKGZhbHNlKTsK
QEAgLTIyOTksNyArMjI4Miw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvCiB7CiAgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRl
cigidHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyIsICZwcm9ncmFtKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgc3dpdGNoIChidWZmZXJNb2RlKSB7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6U0VQQVJBVEVfQVRUUklCUzoKICAgICAgICAgaWYgKHZhcnlpbmdzLnNpemUoKSA+
IG1fbWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnMpIHsKQEAgLTI0ODUsMjQgKzI0
NjgsMjQgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9y
bXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZv
cm1zIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxH
Q0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKLSAgICAKICAgICBzd2l0
Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9UWVBFOgot
ICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVu
aWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX1RZUEU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2NvbnRleHQtPmdldEFj
dGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGVudW0+KHgpOyB9KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJ
WkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3Qo
KSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2Nv
bnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2Vz
LCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKKyAgICB9CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VU5JRk9STV9CTE9DS19JTkRFWDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX09GRlNFVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0FS
UkFZX1NUUklERToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX01BVFJJWF9T
VFJJREU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmpl
Y3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gV1RG
TW92ZShyZXN1bHQpOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9X
X01BSk9SOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2Jq
ZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0lTX1JPV19N
QUpPUjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih4KTsg
fSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVVbmlmb3JtcyIsICJpbnZhbGlk
IHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3Miw4ICsz
NTU1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEcKIAogICAgIGNsZWFySWZDb21wb3NpdGVk
KENsZWFyQ2FsbGVyT3RoZXIpOwogCi0gICAgR0NHTHNpemVpIGxlbmd0aCwgY29sdW1ucywgcm93
czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVzdEFOR0xF
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwgJmxlbmd0aCwgJmNvbHVtbnMs
ICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZzZXQpLCB0cnVlKTsKKyAgICBt
X2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
b2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBkc3REYXRhLCBH
Q0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDQwMDcxY2EyM2IyYzM1NWUx
ZTgxMDY0NjE3ZDUyYjlkMmZiODdhYzYuLmY3YzZhMmU4MmE0YmYwMzdhMWI0NzdkNzgzZmE1NDFh
YzRmNTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MzIsOCArNzMyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0KLQotICAgIGF1dG8g
Y29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9z
dFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShh
dHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgaWYg
KGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3BhdGNoRXZl
bnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0Y3Jl
YXRpb25lcnJvckV2ZW50LApAQCAtNDM5NSwxNSArNDM5NCwxMiBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aAogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAogI2lmIFVT
RShBTkdMRSkKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBHQ0dMc2l6ZWkgY29sdW1u
cyA9IDA7Ci0gICAgR0NHTHNpemVpIHJvd3MgPSAwOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIGRh
dGEsIGZhbHNlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVuZ3RoKCkp
KTsKICNlbHNlCiAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAgIGVsc2UK
LSAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxzLmJ5dGVM
ZW5ndGgoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5
bmMuY3BwCmluZGV4IDRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJkNTUuLjg5
YTYzZTM2MjE3MTIyNGI0MTNhNDk1NDIzMTJlMzgzNmI2ZWJjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdlYkdMU3lu
Yzo6dXBkYXRlQ2FjaGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9hbGxvd0NhY2hlVXBkYXRlID0gZmFsc2U7Ci0gICAgY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaXYobV9zeW5jLCBHcmFwaGljc0NvbnRleHRH
TDo6U1lOQ19TVEFUVVMsIHNpemVvZihtX3N5bmNTdGF0dXMpLCAmbV9zeW5jU3RhdHVzKTsKKyAg
ICBtX3N5bmNTdGF0dXMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5bmNpKG1f
c3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTKTsKICAgICBpZiAobV9zeW5jU3Rh
dHVzID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEKQogICAgICAgICBzY2hlZHVsZUFs
bG93Q2FjaGVVcGRhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggNGRh
YTM0Y2MyZDVkMDc5NjJlZTFhNjFjODI1M2JlYjZhOTQ2NTQ2Yy4uYzJhNjliODZiYzMxODE2N2Ez
MzJjZmZmNmRlYWY0Y2Y4YjI5ZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNTMwLDYg
KzUzMCwxMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNbwogICAgIHJldHVybiBtX2NsaWVudC5j
cmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkK
K1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0NvbnRleHRH
TChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMs
IGRpc3BsYXlJRCgpKTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybURpc3BsYXlJRCBDaHJvbWU6OmRp
c3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsKQEAgLTU0
Myw2ICs1NTAsNyBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZQogICAgIG1fcGFnZS53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiAKICNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQorICAgIC8vIFRPRE86
IEdQVSBwcm9jZXNzLiBDaGFuZ2UgdG8gR0NHTE1hbmFnZXIsIG1ha2UgaXQgd29yaywgcmV0dXJu
IG51bGwgZm9yIG90aGVycy4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKS5zY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhmNTZhMTkxMjA0OWQ0Nzk3NjQxZDAxNDAwNTUx
NTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1MDU3NjU0MGQzZjIzMmEzY2ZjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAg
IFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25l
ZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAzYTllMWQ2
NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThkMGE5Li44ZjE4ZmRmZjA0OTkwMzc1ODk4YjE3
YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTMy
NSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRl
cmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMgdGhlIEdy
YXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXll
ciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAppbmRleCA0M2RiMWZmYWUw
MTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDllLi43MzgxMThiMjFlM2MzMzdiMmU1MzFjOTk2
ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0
V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMs
NiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmlu
Z1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQp
IGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAvLyBNZXRob2QgZm9y
IHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmlydHVhbCBQ
bGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJkZTZjMGRiMjZhYTc4NDUyZmIzLi43YWZiYTZl
YzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQyZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaApAQCAtMzQsMTMgKzM0LDE2
IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKIAogI2lm
IFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1cm4gZmFs
c2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNl
bGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBib29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1
cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogYm9vbCBpc0luV2ViUHJvY2Vzcygp
OworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3MoKTsKIAog
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGZiZDFkNDNjMDhmODZk
YzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIwNmZmNDdkZmM1NDE3MjFmNjRhYTBkZTM4YjNi
OTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC05Niw2ICs5Niwx
MiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAgICByZXR1cm4gbWFpbkJ1bmRsZUlzV2ViUHJv
Y2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJvb2wgbWFp
bkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50
aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIl07CisgICAgcmV0dXJuIG1h
aW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJvb2wgaXNJbk5ldHdvcmtQcm9jZXNzKCkKIHsK
ICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNOZXR3b3JrUHJvY2VzcyA9IFtbW05TQnVuZGxl
IG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4NjczNDQ3NDk1MTQ3
Yjg4Li40MWFkZDczOGRkZWEyMjI0NmQwYjliMDY3NzkzNDVkZDYwOTlkYzBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjY3LDcg
KzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxl
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NUQVRVU19LSFIgPSAw
eDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNpb24KKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUg
PSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMuCiAKICAgICAvLyBHTF9BUkJfcm9i
dXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9t
IHRoZSBHTF9BUkJfcm9idXN0bmVzcwpAQCAtMjc5LDEwICsyODIsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwogCiAgICAg
Ly8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVi
dWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9u
ZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9u
ZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBibGl0
RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNy
Y1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50
IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVy
KSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIHZp
cnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0
YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1h
dCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRl
eF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4
QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5OSwxNSBAQCBwdWJsaWM6CiAgICAgLy8gR0xf
RVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChj
b25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZv
aWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7CiAKICAg
ICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAw
OwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1YWwgdm9pZCBk
cmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3
RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2
b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdmly
dHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBj
b2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKQEAgLTMzMiw3
ICszMzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFy
YW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiBy
b3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTcsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlmCiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQU1EKCkgPSAw
OwpAQCAtMzY3LDYgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3QgYmUgYXZvaWRl
ZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZpZ3VyYXRp
b25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVT
aXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkZjRhMTE5YTMyMGRh
YzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlLi4zNGQ1NTZiMGNjNGE5YmIxYWVhN2E1YTk2OGJj
Njk1YjNhMmUyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNywxMSArMjcsMTMgQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAogI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhU
X0dMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0Q29udmVy
dGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5j
bHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpAQCAtNDAzLDYg
KzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZURh
dGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1bHQ7CisgICAg
aWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXN1
bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5k
b3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdMOjpHcmFwaGlj
c0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERlc3RpbmF0aW9u
IGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJzKGF0dHJzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmgKaW5kZXggNGIzNjU3OTVjYWY0Y2M4NGU4ZWU2Mzk1NmJjZThmNWE2ZjA3ODc5Mi4uYTY0
YWM2ZmEwZjAxYWY4MmVkMWRiYWU0OTk5MmUxYzY3MmJlOTBiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC01OSw2
ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ1Y7CiAj
ZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZvciBpbXBsZW1l
bnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0wgOiBw
dWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgogICAgIC8vIFdl
YkdMIDEgY29uc3RhbnRzLgpAQCAtOTA5LDE0ICs5MTEsMTcgQEAgcHVibGljOgogICAgICAgICBH
Q0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGljc0NvbnRleHRH
TCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24gaW4gY29udGV4
dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0IHRoZSBkZWNp
c2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYs
IEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGlj
c0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwgfkdyYXBo
aWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2xpZW50JiBj
bGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3ZlQ2xpZW50
KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAotICAgIC8v
IFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRlcnN0YW5k
cy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlVGV4
dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFNoYWRl
cihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC05NzgsNyArOTgzLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEF0dGFj
aGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwg
R0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycykgPSAwOwogCiAgICAg
dmlydHVhbCBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSkgPSAwOwogCkBAIC0xMDIzLDEwICsxMDI3LDYgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIC8vIGdldFZlcnRleEF0dHJpYgotICAgIHZp
cnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiB2YWx1ZSkgPSAwOwotCiAgICAgdmlydHVhbCBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4
QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSA9IDA7CkBA
IC0xMDk4LDcgKzEwOTgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0g
dXNhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB0
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CkBAIC0xMTIyLDggKzExMjMs
NyBAQCBwdWJsaWM6CiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50cy4KIAog
ICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBH
Q0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdy
aXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgR0NHTHZvaWQq
IG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKLSAgICB2aXJ0dWFsIEdD
R0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZy
YW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdD
R0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEs
IEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgbGF5ZXIpID0gMDsKQEAgLTExODUsNyArMTE4NSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAgICAgdmly
dHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpID0gMDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBn
ZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHVpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdWludCBnZXRRdWVyeU9iamVj
dHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2
aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpID0gMDsKQEAgLTEx
OTQsOCArMTE5NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRl
cmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pID0gMDsKICAgICAv
LyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0
ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQq
IHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgPSAw
OworICAgIHZpcnR1YWwgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQg
Z2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29u
ZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xib29sZWFu
IGlzU3luYyhHQ0dMc3luYykgPSAwOwpAQCAtMTIwMyw3ICsxMjAzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRmaWVsZCBm
bGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhaXRTeW5j
KEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSA9IDA7CiAg
ICAgLy8gZ2V0U3luY1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTeW5jaXYoR0NHTHN5
bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogdmFsdWUpID0g
MDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1l
KSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBs
YXRmb3JtR0xPYmplY3QgaWQpID0gMDsKQEAgLTEyMjAsNyArMTIyMCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQg
aW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNp
emVpcHRyIHNpemUpID0gMDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBnZXRQ
YXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgdmlydHVhbCBWZWN0b3I8R0NHTHVpbnQ+IGdldFVu
aWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHVuaWZvcm1OYW1lcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3Jt
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZv
cm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpID0gMDsK
KyAgICB2aXJ0dWFsIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBH
Q0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlmb3JtQmxv
Y2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJs
b2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcgpAQCAt
MTIyOCw3ICsxMjI4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtQmxvY2tC
aW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykg
PSAwOwotCisgICAgCiAgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdDR0xmbG9hdCBnZXRG
bG9hdChHQ0dMZW51bSBwbmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51
bSBwbmFtZSk7CkBAIC0xMzkyLDcgKzEzOTIsNiBAQCBpbmxpbmUgR0NHTGludCBHcmFwaGljc0Nv
bnRleHRHTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdQog
ICAgIHJldHVybiB2YWx1ZVswXTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzR0wuaAppbmRleCA4NWMyOWE0YjZlNTYxMTBkYzdiZDc0N2FlMzM5ODdjMzQwMzc1ZGYxLi4z
YjA2NGMzZTc2OGVjYzRiZjAyYjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtMjUsNyAr
MjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NCwxMyArNDYsMTcgQEAgdHlwZWRlZiB1
bnNpZ25lZCBHQ0dMdWludDsKIHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0OwogdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBHQ0dMaGFsZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dMY2xhbXBmOwordHlw
ZWRlZiBjaGFyIEdDR0xjaGFyOwordHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdDR0xzeW5jOwor
dHlwZWRlZiB2b2lkIEdDR0x2b2lkOworCisvLyBUaGVzZSBHQ0dMIHR5cGVzIGRvIG5vdCBzdHJp
Y3RseSBtYXRjaCB0aGUgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wgRVMgMi4wCisvLyBo
ZWFkZXIgZmlsZSBmb3IgYWxsIHBsYXRmb3Jtcy4KIHR5cGVkZWYgaW50cHRyX3QgR0NHTGludHB0
cjsKIHR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRyOwotdHlwZWRlZiBjaGFyIEdDR0xjaGFy
OwordHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIHR5cGVkZWYgbG9uZyBsb25nIEdDR0xp
bnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7Ci10eXBlZGVmIHN0
cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Ci10eXBlZGVmIHZvaWQgR0NHTHZvaWQ7CiAKIHR5cGVk
ZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIApAQCAtNTgsMTMgKzY0LDE3IEBAIHR5cGVk
ZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5zaWduZWQgR0x1aW50Owog
I2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpPgoraW5saW5lIGNvbnN0ZXhwciBzaXplX3QgZ2NHTFNw
YW5EeW5hbWljRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGdjR0xTcGFuRHluYW1pY0V4dGVu
dD4KIHN0cnVjdCBHQ0dMU3BhbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+
CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5KQorICAg
IGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3Qgc2l6ZSA9IEV4dGVudCkKICAgICAg
ICAgOiBkYXRhKGFycmF5KQotICAgIHsgfQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChz
aXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQogICAgIEdDR0xTcGFuKFQgKCZhcnJheSlbRXh0
ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQpAQCAtNzIsNiArODIsMTIgQEAg
c3RydWN0IEdDR0xTcGFuIHsKICAgICBHQ0dMU3Bhbihjb25zdCBHQ0dMU3BhbjxVLCBFeHRlbnQ+
JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBU
KCopW10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQogICAgICAgICA6IGRhdGEob3RoZXIu
ZGF0YSkKICAgICB7IH0KKyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIEV4dGVudD4mIGFycmF5
KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQorICAgIEdDR0xTcGFuKGNv
bnN0IHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJheS5k
YXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBSRUxFQVNFX0FT
U0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07IH0KICAgICBUJiBvcGVy
YXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7IHJldHVybiAqZGF0YTsg
fQogICAgIFQqIGRhdGE7CkBAIC03OSw3ICs5NSw3IEBAIHN0cnVjdCBHQ0dMU3BhbiB7CiB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxULCBnY0dMU3BhbkR5bmFt
aWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IGJ1ZlNpemVfKQogICAg
ICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZTaXplXykKQEAgLTEyMSw2
ICsxMzcsMTEgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CiAgICAgICAgIDogZGF0YShv
dGhlci5kYXRhKQogICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6ZSAqIHNpemVvZihVKSkK
ICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+JiBhcnJheSkKKyAg
ICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZTaXplKGFycmF5LnNpemUo
KSAqIHNpemVvZihVKSkKKyAgICB7IH0KICAgICBHQ0dMdm9pZCogZGF0YTsKICAgICBjb25zdCBz
aXplX3QgYnVmU2l6ZTsKIH07CkBAIC0xNTIsOCArMTczLDExIEBAIHN0cnVjdCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CiBHQ0dMU3Bh
bihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1H
Q0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+OwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+JikgLT4gR0NHTFNwYW48
VCwgTj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KK0dD
R0xTcGFuKFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdDR0xTcGFuPFQ+Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdDR0xTcGFuKFQqIGRhdGEs
IHNpemVfdCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xY2MzNmE5ZjIzOTcwOTM0MWI5YTJmMjNkYzdhNjFlNDA2YjFlMGM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCisg
ICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRpYWxpemUo
KTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZSgpID0gZGVmYXVsdDsKKworRXh0ZW5zaW9uc0dMJiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJu
ICp0aGlzOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRD
b250ZXh0VmlzaWJpbGl0eShib29sKQoreworfQorCitHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cG93ZXJQcmVmZXJlbmNl
VXNlZEZvckNyZWF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB9OworfQorCitib29sIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0ZXMoKS5pc1dlYkdMMjsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKK3sK
KyAgICAvLyBGSVhNRTogVGhlIGNhbGxlciBzaG91bGQgdHJhY2sgdGhpcyBzdGF0ZS4KKyAgICBp
ZiAobV9sYXllckNvbXBvc2l0ZWQpCisgICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgp
OworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQoreworICAgIG1fbGF5
ZXJDb21wb3NpdGVkID0gdHJ1ZTsKKyAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMo
KTsKKyAgICBpZiAoIWF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgICAgICBtX2J1
ZmZlcnNUb0F1dG9DbGVhciA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOwor
ICAgICAgICBpZiAoYXR0cnMuZGVwdGgpCisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVh
ciB8PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0
dHJzLnN0ZW5jaWwpCisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGlj
c0NvbnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgIH0KKyAgICBmb3IgKGF1dG8qIGNs
aWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmRpZENvbXBv
c2l0ZSgpOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXll
ckNvbXBvc2l0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0QnVmZmVyc1RvQXV0
b0NsZWFyKEdDR0xiaXRmaWVsZCBidWZmZXJzKQoreworICAgIGlmICghY29udGV4dEF0dHJpYnV0
ZXMoKS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFy
ID0gYnVmZmVyczsKK30KKworR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1
ZmZlcnNUb0F1dG9DbGVhcjsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCit7CisgICAgLy8gUmVkZWNsYXJlZCBm
b3IgZXhwb3J0IHJlYXNvbnMuCisgICAgLy8gRklYTUU6IFRoZSB3aG9sZSBmdW5jdGlvbiBzaG91
bGQgYmUgcmVtb3ZlZC4KKyAgICBHcmFwaGljc0NvbnRleHRHTDo6ZW5hYmxlUHJlc2VydmVEcmF3
aW5nQnVmZmVyKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXpl
ZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwg
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgaWYgKG1fcmVxdWVzdGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRh
aW5zKG5hbWUpKSB7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQobmFtZSk7CisgICAg
ICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworICAgIH0KK30KKworYm9vbCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5p
dGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdGFibGVFeHRlbnNpb25zKQoreworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZh
aWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuYWRkKGV4dGVuc2lvbik7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
YWRkKGV4dGVuc2lvbik7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworfQorCitQ
bGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1M
YXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjVi
YjViZDI4YzhjZjU3YWE1M2IyNzBlYWU1MTNmNGE5NTJmZjRjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuaApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK09C
SkNfQ0xBU1MgV2ViR0xMYXllcjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluOworI2VuZGlmCisKKy8vIEEgYmFzZSBjbGFzcyBmb3IgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgcHJveHkgc2lkZSBpbXBsZW1lbnRhdGlvbgorLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBwYXJ0
cyB0aGF0IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6CisvLyAtIERy
YXdpbmcgYnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCisvLyAtIENvbXBvc2l0aW5nIHN1cHBv
cnQuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNHTCB7CitwdWJs
aWM6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TCBvdmVycmlkZXMuCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5hYmxlZDsKKyAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgRXh0ZW5z
aW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CisgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJp
bGl0eShib29sKSBmaW5hbDsKKyAgICBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBw
b3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlz
R0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOworICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSBmaW5hbDsKKyAgICBHQ0dM
Yml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2
b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVByZXNlcnZl
RHJhd2luZ0J1ZmZlcigpIGZpbmFsOworCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQorICAgIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKKyNlbmRpZgor
ICAgIC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBFeHRlbnNpb25z
R0w6OmlzRW5hYmxlZDsKKyAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFsOwor
ICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlz
RW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5p
dGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdGFibGVFeHRlbnNpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5pdGlh
bGl6ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29u
c3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5n
ZWQoKSA9IDA7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4mIHBsYXRmb3JtU3dhcENoYWluKCk7CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CisjZW5kaWYKKworICAgIC8vIEd1
YXJkZWQgYnkgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKS4KKyAgICBIYXNoU2V0PFN0cmluZz4gbV9h
dmFpbGFibGVFeHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9uczsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOworCisg
ICAgLy8gRklYTUU6IERyYXdpbmcgYnVmZmVyIGNsZWFyIHRyYWNraW5nIHNob3VsZCBiZSBtb3Zl
ZCB0byB0aGUgY2xpZW50LgorICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKKyAg
ICBHQ0dMYml0ZmllbGQgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSB7IDAgfTsKK307CisKK30KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MDJlYTRiNTU3YzY4
NmNmZDgyM2QwODFjNTVlNGEuLjdjMTUxZmEyODUwZjMzYzE0OWE5ZGM4MjIzODFiOGZjYmRlOWNi
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQ2LDI4ICs0Niw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIEV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5nKQogICAg
IDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCiAgICAgLCBtX2NvbnRl
eHQoY29udGV4dCkKLSAgICAsIG1faXNOVklESUEoZmFsc2UpCi0gICAgLCBtX2lzQU1EKGZhbHNl
KQotICAgICwgbV9pc0ludGVsKGZhbHNlKQotICAgICwgbV9pc0ltYWdpbmF0aW9uKGZhbHNlKQot
ICAgICwgbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbihmYWxzZSkKLSAgICAsIG1f
cmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKGZhbHNlKQogICAgICwgbV91c2VJ
bmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRHZXRTdHJpbmcpCiB7Ci0gICAgLy8gRklYTUU6IGlk
ZWFsbHksIHJlbW92ZSB0aGlzIGluaXRpYWxpemF0aW9uIGFsdG9nZXRoZXIuIEFOR0xFCi0gICAg
Ly8gc3Vic3VtZXMgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBncmFwaGljcyBkcml2ZXIgd29ya2Fy
b3VuZHMuCi0gICAgbV92ZW5kb3IgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZ2w6OkdldFN0cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAgbV9yZW5kZXJlciA9IFN0cmluZyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkp
OwotCi0gICAgVmVjdG9yPFN0cmluZz4gdmVuZG9yQ29tcG9uZW50cyA9IG1fdmVuZG9yLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50
cy5jb250YWlucygibnZpZGlhIikpCi0gICAgICAgIG1faXNOVklESUEgPSB0cnVlOwotICAgIGlm
ICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5kb3JDb21wb25lbnRzLmNv
bnRhaW5zKCJhbWQiKSkKLSAgICAgICAgbV9pc0FNRCA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNv
bXBvbmVudHMuY29udGFpbnMoImludGVsIikpCi0gICAgICAgIG1faXNJbnRlbCA9IHRydWU7Ci0g
ICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImltYWdpbmF0aW9uIikpCi0gICAgICAg
IG1faXNJbWFnaW5hdGlvbiA9IHRydWU7CiB9CiAKIEV4dGVuc2lvbnNHTEFOR0xFOjp+RXh0ZW5z
aW9uc0dMQU5HTEUoKSA9IGRlZmF1bHQ7CkBAIC0xMDMsNyArODMsNyBAQCBib29sIEV4dGVuc2lv
bnNHTEFOR0xFOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5j
b250YWlucyhuYW1lKTsKIH0KIAotaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkKK0dMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCkKIHsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOwog
fQpAQCAtMTE0LDEwICs5NCwxMSBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpbnQgc291cmNlTGVuZ3RoID0gbV9jb250ZXh0LT5nZXRT
aGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7
CisKICAgICBpZiAoIXNvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVE
X1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCi0g
ICAgaW50IHJldHVybmVkTGVuZ3RoID0gMDsKKyAgICBHQ0dMaW50IHJldHVybmVkTGVuZ3RoID0g
MDsKICAgICBnbDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlciwgc291cmNl
TGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIXJldHVybmVk
TGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTE0Nyw3ICsxMjgsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygp
CiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZ
MCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBk
c3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRl
cikKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQg
c3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xp
bnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdD
R0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CiAgICAgLy8gRklYTUU6IGNvbnNp
ZGVyIGFkZGluZyBzdXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KICAg
ICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xNTYsNyArMTM3LDcg
QEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxv
bmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcKICAgICBnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUo
c3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBt
YXNrLCBmaWx0ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2Ft
cGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwg
dW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1w
bGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjM1LDcgKzIxNiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6
OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogICAgIGdsOjpE
cmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTI0MywxNSArMjI0LDE1IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpCiAgICAgZ2w6OkRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBt
b2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdD
R0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRl
cnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1j
b3VudCk7CisgICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0
eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KG9mZnNldCksIHByaW1jb3VudCk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC0zNTAsNyArMzMxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bQogICAgIGdsOjpHZXRWZXJ0
ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAg
ICAgICByZXR1cm47CkBAIC00MzEsNyArNDEyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmQK
ICAgICBnbDo6R2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKHBuYW1lLCBpbmRleCwgYnVmU2l6
ZSwgbGVuZ3RoLCB2YWwpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQzOSw3ICs0MjAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhM
ZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbAogICAgIGds
OjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMZmxvYXQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVs
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDU2LDU1ICs0MzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaQogICAgIGdsOjpHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUocG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLXN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxz
KGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAgIC8v
IFdlIGNhbiBhc3N1bWUgdGhpcyBkb2Vzbid0IG92ZXJmbG93IGJlY2F1c2UgdGhlIGNhbGxpbmcg
ZnVuY3Rpb25zCi0gICAgLy8gdXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBpbnQgdG90YWxC
eXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFs
Qnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgcGl4ZWxzW2kgKyAzXSA9IDI1NTsKLX0KLSNlbmRpZgot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGlu
Z1RvUGl4ZWxCdWZmZXJPYmplY3QpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0
d28gZ2xGbHVzaCBjYWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAg
IC8vIGFsbCBwcmV2aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJl
YWRpbmcgcGl4ZWxzLgotICAgIGdsOjpGbHVzaCgpOwotICAgIGF1dG8gYXR0cnMgPSBtX2NvbnRl
eHQtPmNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQg
PSBtX2NvbnRleHQtPm1faXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFN
RUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKLSAgICBjb25zdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX2Nv
bnRleHQtPm1fc3RhdGU7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJl
YWRGQk8gPT0gbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIG1fY29udGV4
dC0+cmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHksIHdpZHRoLCBo
ZWlnaHQpKTsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwg
bV9jb250ZXh0LT5tX2Zibyk7Ci0gICAgICAgIGdsOjpGbHVzaCgpOwotICAgIH0KLSAgICAodm9p
ZCkgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICBnbDo6
UmVhZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGJ1ZlNpemUsIGxlbmd0aCwgY29sdW1ucywgcm93cywgZGF0YSk7Ci0gICAgR0xlbnVtIGVycm9y
ID0gZ2w6OkdldEVycm9yKCk7Ci0gICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3Vu
ZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKQotICAgICAgICBnbDo6Qmlu
ZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVG
Qk8pOwotCi0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFp
bHVyZSBkdXJpbmcgdGhlIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNl
IHRoaXMgaW4gdGhlCi0gICAgICAgIC8vIHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0
aGUgYWxwaGEgY2hhbm5lbCBmaXh1cCBiZWxvdy4KLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1
ZmZlck9iamVjdCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRH
TDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09
IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJP
ID09IG1fY29udGV4dC0+bV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJl
YWRGQk8gPT0gbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKSkpCi0gICAgICAgIHdpcGVBbHBo
YUNoYW5uZWxGcm9tUGl4ZWxzKHdpZHRoLCBoZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIqPihkYXRhKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZl
ck9iamVjdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKK3ZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzQ0NSw3IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sCiAgICAgZ2w6OkdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShwcm9ncmFtLCBs
b2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUyMCw3ICs0NTMsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQogewogICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggYTc3MzFkZmQyMGM1ZjAzYTMzNTkwM2ZhYTZlMzhmZjcy
ZjRiMjMyMy4uY2JmNDk4YmQ3YzFhMWFiOWFhNmI3MGZiNWQzOGFjNGI5MmZiMDM1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oCkBAIC01NiwyMSArNTYsMTIgQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxv
bmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEs
IGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92
ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBv
dmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXpl
aSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGlzTlZJ
RElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsgfQotICAgIGJvb2wgaXNBTUQoKSBv
dmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9Ci0gICAgYm9vbCBpc0ludGVsKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pc0ludGVsOyB9Ci0gICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pc0ltYWdpbmF0aW9uOyB9Ci0gICAgU3RyaW5nIHZlbmRvcigpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fdmVuZG9yOyB9Ci0KLSAgICBib29sIHJlcXVpcmVzQnVpbHRJbkZ1bmN0aW9u
RW11bGF0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVt
dWxhdGlvbjsgfQotICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXpl
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNp
emU7IH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogICAgIC8v
IEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0
QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2
b2lkICpwaXhlbHMpIG92ZXJyaWRlOwpAQCAtOTcsNyArODgsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywg
R0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2Jq
ZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlm
b3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CkBAIC0xMzAsMTggKzEyMCw4IEBAIHByaXZhdGU6
CiAgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCiAg
ICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIG1fY29udGV4dDsKIAotICAgIGJvb2wgbV9pc05W
SURJQTsKLSAgICBib29sIG1faXNBTUQ7Ci0gICAgYm9vbCBtX2lzSW50ZWw7Ci0gICAgYm9vbCBt
X2lzSW1hZ2luYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0
aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemU7Ci0K
ICAgICBib29sIG1fdXNlSW5kZXhlZEdldFN0cmluZyB7IGZhbHNlIH07CiAKLSAgICBTdHJpbmcg
bV92ZW5kb3I7Ci0gICAgU3RyaW5nIG1fcmVuZGVyZXI7Ci0KICAgICAvLyBXaGV0aGVyIHRoZSBX
ZWJHTCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMg
aGF2ZSBiZWVuIGVuYWJsZWQuCiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCAxMjdhM2I4ZGJhM2MzZjQ0
Y2Q3NjVkZDhmYzcxMWNkZDg3OGRlOWE0Li4xZDYwNGI3MWQ0ODE0ZjU5N2MyYzJmYzg5ZWRjOTY0
OGRjMTNjNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNDQzLDMy
ICs0NDMsNTMgQEAgRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0
ZW5zaW9ucygpCiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkK
K3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBkYXRhLmJ1ZlNpemUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIGRhdGEuZGF0YSwgZmFs
c2UpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHJl
YWRuUGl4ZWxzSW1wbCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIDAsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHZvaWQqPihvZmZzZXQp
LCB0cnVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHNJ
bXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NH
THZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpCiB7Ci0gICAgLy8g
RklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBp
cyBmaXhlZCwgaS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3Vs
ZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28g
Z2xGbHVzaCBjYWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAorICAgIC8v
IGFsbCBwcmV2aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRp
bmcgcGl4ZWxzLgogICAgIGdsOjpGbHVzaCgpOwogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogICAgIEdDR0xlbnVtIGZyYW1lYnVmZmVyVGFyZ2V0ID0gbV9pc0ZvcldlYkdM
MiA/IEdyYXBoaWNzQ29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3Vu
ZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgeworICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CisgICAg
aWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBs
ZUZCTykgewogICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KEludFJlY3Qo
eCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1l
YnVmZmVyVGFyZ2V0LCBtX2Zibyk7CiAgICAgICAgIGdsOjpGbHVzaCgpOwogICAgIH0KLSAgICBn
bDo6UmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOwot
ICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0
aXNhbXBsZUZCTykKKyAgICBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBn
bDo6UmVhZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGJ1ZlNpemUsIGxlbmd0aCwgY29sdW1ucywgcm93cywgZGF0YSk7CisgICAgR0xlbnVtIGVy
cm9yID0gZ2w6OkdldEVycm9yKCk7CisgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5i
b3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9tdWx0aXNhbXBsZUZCTyk7CiAKKyAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgLy8gQU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVh
ZG5QaXhlbHNSb2J1c3RBTkdMRSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKKyAgICAg
ICAgLy8gc3ludGhldGljIGVycm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZp
eHVwIGJlbG93LgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgaWYgKCFhdHRycy5hbHBoYSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpS
R0JBIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpICYmIChtX3N0YXRlLmJvdW5kUmVhZEZCTyA9
PSBtX2ZibyB8fCAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pKSkKKyAgICBpZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYm
ICFhdHRycy5hbHBoYSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZv
cm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250
ZXh0R0w6OlVOU0lHTkVEX0JZVEUpICYmIChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9mYm8gfHwg
KGF0dHJzLmFudGlhbGlhcyAmJiBzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZC
TykpKQogICAgICAgICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YSkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwogI2VuZGlmCiB9CiAKLQogLy8gVGhlIGNv
bnRlbnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uIGZvbGxvdywgcG9ydGVkIHRv
IHVzZSBBTkdMRS4KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0
aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQpAQCAtODk4
LDIwICs5MTksMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LAogICAgIGdsOjpCdWZmZXJTdWJE
YXRhKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQq
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNj
ZXNzKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGxlbmd0
aCwgYWNjZXNzKTsKLX0KLQotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
bWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm4gR0xfRkFMU0U7Ci0KLSAgICByZXR1cm4gZ2w6OlVubWFwQnVm
ZmVyKHRhcmdldCk7CisgICAgICAgIHJldHVybjsKKyAgICBHQ0dMdm9pZCogcHRyID0gZ2w6Ok1h
cEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIEdyYXBoaWNzQ29udGV4
dEdMOjpNQVBfUkVBRF9CSVQpOworICAgIGlmICghcHRyKQorICAgICAgICByZXR1cm47CisgICAg
bWVtY3B5KGRhdGEuZGF0YSwgcHRyLCBkYXRhLmJ1ZlNpemUpOworICAgIGlmICghZ2w6OlVubWFw
QnVmZmVyKHRhcmdldCkpCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRl
VGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdD
R0xzaXplaXB0ciBzaXplKQpAQCAtMTAwOCwxNCArMTAyNSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIGlu
dCBsZXZlbAogICAgIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdl
U2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihvZmZz
ZXQpLCAwKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVu
aWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYg
dW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykK
K1ZlY3RvcjxHQ0dMaW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlm
b3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgVmVjdG9yPEdDR0xpbnQ+IHJlc3Vs
dCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAotICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZv
cm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcGFyYW1zLmRh
dGEoKSk7CisgICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGlj
ZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCByZXN1bHQuZGF0YSgpKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpCkBAIC0yMTAxLDIyICsy
MTE5LDYgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0
aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28KICAgICByZXR1cm4gZ2w6OkdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0
dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2
YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4
QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50
PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUs
IHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
QEAgLTIzOTIsMTIgKzIzOTQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5k
UXVlcnkoR0NHTGVudW0gdGFyZ2V0KQogICAgIGdsOjpFbmRRdWVyeSh0YXJnZXQpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpdihHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiBwYXJhbXMpCitHQ0dMdWludCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUpCiB7CisgICAgR0NHTHVpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpdihpZCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBnbDo6R2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAg
cmV0dXJuIHZhbHVlOwogfQogCiAvLyBUcmFuc2Zvcm0gRmVlZGJhY2sgRnVuY3Rpb25zCkBAIC0y
ODM5LDIwICsyODQyLDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQ
YXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVuCiAgICAgZ2w6OlNhbXBs
ZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKQorR0NHTGZsb2F0IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsK
ICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlciwg
cG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
c2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYo
UGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUp
CitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xpbnQg
dmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJp
dihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWU7CiB9CiAKIEdDR0xzeW5jIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmZW5jZVN5
bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCkBAIC0yODk1LDEyICsy
OTAyLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OndhaXRTeW5jKEdDR0xzeW5j
IHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGluCiAgICAgZ2w6OldhaXRTeW5jKHN5bmMs
IGZsYWdzLCB0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5j
aShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMaW50IHZhbHVlID0g
MDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTeW5jaXYoc3luYywgcG5hbWUsIGJ1ZlNp
emUsIG51bGxwdHIsIHZhbHVlKTsKKyAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBuYW1lLCAxLCBu
dWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcz
NTk3ZjQ3NTNkMGJlYzFkMDJlN2Q1ZmNmZGM2NDNhOTgzYzg4ZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmNwcApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKwor
I2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6
fkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCkgPSBkZWZhdWx0OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTllODhjMmY5OWIxY2FhNTgxMTdjNzM5MTFhNTFiNjdkZGU2MzJi
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExB
VEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKKyNpbmNsdWRlIDxtZW1vcnk+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQW4gaW50ZXJmYWNlIGZvciBpbXBsZW1lbnRp
bmcgZnJvbnQgYnVmZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2FwCisvLyBjaGFp
biBvZiBJT1N1cmZhY2VzLgorLy8gVGhlIGltcGxlbWVudG9yIHdpbGwgb3duIHRoZSBJT1N1cmZh
Y2VzIGl0IHVzZXMgZm9yIGRpc3BsYXkuCisvLyBUaGUgY2xpZW50IG1heSBhdHRhY2ggbWV0YWRh
dGEgdG8gZWFjaCBJT1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRhdGEKKy8vIGJh
Y2sgb25jZSB0aGUgSU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZlciwgdGhlIGNs
aWVudCBtYXkgbm90IG5lY2Nlc3NhcmlseQorLy8gYmUgYWJsZSB0byBvYnRhaW4gdGhlIElPU3Vy
ZmFjZSBpdHNlbGYgZm9yIHJldXNlLgorLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1ldGFkYXRhIGlz
IHRvIHVzZSBFR0xTdXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlzIHdheQorLy8g
d2hlbiB0aGUgZGlzcGxheSBjbGllbnQgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxh
eSwgdGhlIGNsaWVudCBjYW4gY29udGludWUgdXNpbmcKKy8vIHRoZSBleGlzdGluZyBiaW5kaW5n
IG9idGFpbmVkIHRocm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgorY2xhc3MgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgor
ICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCk7CisgICAg
c3RydWN0IEJ1ZmZlciB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZh
Y2U+IHN1cmZhY2U7IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCisgICAgICAgIHZvaWQqIGhhbmRs
ZSB7IG51bGxwdHIgfTsgLy8gUHJvZHVjZXIgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNo
IGFzIEVHTFN1cmZhY2UpLgorICAgIH07CisgICAgLy8gUmV0dXJucyB0aGUgbWV0YWRhdGEgaGFu
ZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgbWF5IHJl
Y2lldmUgYmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGlu
IGNhc2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRoZQorICAgIC8vIHRpbWUgb2YgdGhlIGNhbGwuCisg
ICAgLy8gUmV0dXJucyBlaXRoZXI6CisgICAgLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVy
IGhhcyBiZWVuIHN1Ym1pdHRlZC4KKyAgICAvLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2Ug
YW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMg
YXZhaWxhYmxlCisgICAgLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4gdXNlLgorICAg
IC8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgorICAgIHZpcnR1YWwgQnVmZmVyIHJlY3ljbGVCdWZm
ZXIoKSA9IDA7CisKKyAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNwbGF5IHdpdGgg
YSBjb250ZW50cyBidWZmZXIuCisgICAgLy8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlw
IG9mIHRoZSBJT1N1cmZhY2Ugc3VyZmFjZSBpbiB0aGUgYGJ1ZmZlcmAuCisgICAgdmlydHVhbCB2
b2lkIHByZXNlbnQoQnVmZmVyKSA9IDA7CisKKyAgICAvLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFu
ZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCisg
ICAgLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNs
ZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0aGlz
LgorICAgIHZpcnR1YWwgdm9pZCogZGV0YWNoQ2xpZW50KCkgPSAwOworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDJlMWM3
OTllODI4NTNiMzIwYjhjZWRkZDRhNmZlNWU1MDRhOWQ4OWMuLjdkNjUxZWQyYzkyYTMzNjRkMzEz
NzViMTYzOWM5MGQ2MTJlN2UzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1w
b3J0ICJjb25maWcuaCIKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRXh0ZW5zaW9uc0dM
QU5HTEUuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKKyNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTgxLDcgKzgyLDcgQEAgc3RhdGljIEVHTERpc3BsYXkg
SW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwogICAg
IEVHTGludCBtaW5vclZlcnNpb24gPSAwOwogICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLSAgICBi
b29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCA9ICFpc0luV2Vi
UHJvY2VzcygpOworICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRT
dXBwb3J0ID0gIShpc0luV2ViUHJvY2VzcygpIHx8IGlzSW5HUFVQcm9jZXNzKCkpOwogICAgIGlm
IChzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKICAgICAgICAg
Ly8gRm9yIFdLMSB0eXBlIEFQSXMgd2UgbmVlZCB0byBzZXQgInZvbGF0aWxlIHBsYXRmb3JtIGNv
bnRleHQiIGZvciBzcGVjaWZpYwogICAgICAgICAvLyBBUElzLCBzaW5jZSBjbGllbnQgY29kZSB3
aWxsIGJlIGFibGUgdG8gb3ZlcnJpZGUgdGhlIHRocmVhZC1nbG9iYWwgY29udGV4dApAQCAtMTM0
LDcgKzEzNSw3IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHCiAgICAgaWYgKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0cygp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChh
dHRycywgaG9zdFdpbmRvdywgZGVzdGluYXRpb24pKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woYXR0cnMsIGhvc3RXaW5kb3csIG51bGxwdHIsIG51bGxwdHIpKTsKIAogICAgIGlmICghY29u
dGV4dC0+bV9jb250ZXh0T2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NywxMyAr
MTQ4LDE4IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHCiBSZWY8R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wmIHNoYXJlZENvbnRleHQpCiB7CiAgICAgYXV0byBob3N0V2luZG93ID0gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaG9zdFdpbmRvd0Zv
ckNvbnRleHQoJnNoYXJlZENvbnRleHQpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpu
ZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRl
cygpLCBob3N0V2luZG93LCBzaGFyZWRDb250ZXh0LmRlc3RpbmF0aW9uKCksICZzaGFyZWRDb250
ZXh0KSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csICZz
aGFyZWRDb250ZXh0LCBudWxscHRyKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQucHRyKCksIGhvc3RXaW5k
b3cpOwogCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKK1JlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycywgR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgbnVsbHB0ciwgc3dhcENoYWlu
KSk7Cit9CisKICNpZiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3Vs
ZCBiZSBqdXN0IGVuYWJsZWQgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5ND4uCiAKIHN0YXRpYyB2b2lk
IHNldEdQVUJ5UmVnaXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9y
bWF0T2JqIHBpeGVsRm9ybWF0T2JqLCBJT1JlZ2lzdHJ5R1BVSUQgcHJlZmVycmVkR1BVSUQpCkBA
IC0yMDQsOCArMjEwLDggQEAgc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRl
eHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWwKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKIAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0w6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCkKLSAgICA6IEdyYXBoaWNzQ29udGV4
dEdMKGF0dHJzLCBkZXN0aW5hdGlvbiwgc2hhcmVkQ29udGV4dCkKK0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBzaGFyZWRDb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dh
cENoYWluKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIERlc3RpbmF0aW9uOjpPZmZz
Y3JlZW4sIHNoYXJlZENvbnRleHQpCiB7CiAgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJzLmlzV2Vi
R0wyOwogCkBAIC0yOTMsMjYgKzI5OSwyOCBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAg
IGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICBnbDo6RW5hYmxlKEdyYXBoaWNzQ29udGV4dEdM
OjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKKyAgICBWZWN0b3I8QVNDSUlMaXRl
cmFsLCA0PiByZXF1aXJlZEV4dGVuc2lvbnM7CisgICAgaWYgKG1faXNGb3JXZWJHTDIpIHsKKyAg
ICAgICAgLy8gRm9yIFdlYkdMIDIuMCBvY2NsdXNpb24gcXVlcmllcyB0byB3b3JrLgorICAgICAg
ICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xl
YW4iX3MpOworICAgIH0KICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKLQogICAg
IGlmICghbmVlZHNFQUdMT25NYWMoKSkgewotICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIqIHJlcXVpcmVkRXh0ZW5zaW9uc1tdID0gewotICAgICAgICAgICAgIkdMX0FOR0xFX3Rl
eHR1cmVfcmVjdGFuZ2xlIiwgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAg
ICAgICAgICAiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiwgLy8gRm9yIGNyZWF0aW5n
IHRoZSBFR0wgc3VyZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KLSAgICAgICAgfTsKLQotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocmVxdWlyZWRFeHRlbnNp
b25zKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMocmVxdWly
ZWRFeHRlbnNpb25zW2ldKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3Npbmcg
cmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAvLyBGb3IgSU9TdXJmYWNl
LWJhY2tlZCB0ZXh0dXJlcy4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xf
QU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3MpOworICAgICAgICAvLyBGb3IgY3JlYXRpbmcgdGhl
IEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lv
bnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiX3MpOworICAgIH0KIAot
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHJlcXVpcmVkRXh0ZW5zaW9uc1tp
XSk7CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAg
ICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAgaWYgKCFleHRl
bnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgIExPRyhXZWJHTCwgIk1p
c3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIGV4dGVuc2lvbi5jaGFyYWN0ZXJzKCkpOwor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJl
RW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBJ
dCdzIHVuY2xlYXIgaWYgTUFDQ0FUQUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3RlcHMgYXMgd2Vs
bCwgYnV0IHRoYXQKICAgICAvLyB3b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNjcmVlbk1hYyBj
b2RlIHRvIGJlIGV4cG9zZWQgdG8gQ2F0YWx5c3QgdG9vLgpAQCAtMzMxLDEzICszMzksMTcgQEAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBh
dHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJp
bmcgdmFsaWRhdGlvbi4KIAotICAgIC8vIENyZWF0ZSB0aGUgV2ViR0xMYXllcgotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtb
V2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBp
eGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7CisgICAgaWYgKHN3YXBDaGFp
bikKKyAgICAgICAgbV9zd2FwQ2hhaW4gPSBzd2FwQ2hhaW47CisgICAgZWxzZSB7CisgICAgICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICAgICAgbV93ZWJHTExheWVyID0g
YWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRy
cy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOwogI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsK
KyAgICAgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CiAjZW5k
aWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKKyAgICAgICAgbV9zd2FwQ2hhaW4gPSAmW21fd2ViR0xMYXllciBzd2FwQ2hh
aW5dOworICAgIH0KIAogICAgIC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdpbGwgYmUgdXNl
ZCBmb3IgdGhlIGZyYW1lYnVmZmVyLgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gSU9TdXJm
YWNlVGV4dHVyZVRhcmdldCgpOwpAQCAtNDA2LDEzICs0MTgsMTIgQEAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6On5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpCiAgICAgICAgIGlmIChtX3ByZXNl
cnZlRHJhd2luZ0J1ZmZlckZCTykKICAgICAgICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMo
MSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKTsKICAgICB9Ci0gICAgaWYgKG1fZGlzcGxh
eUJ1ZmZlclBidWZmZXIpCisgICAgaWYgKG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpIHsKICAgICAg
ICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
cik7Ci0gICAgaWYgKG1fd2ViR0xMYXllcikgewotICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVy
ID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICAgICAgYXV0byByZWN5Y2xlZEJ1
ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAgICAgIGlmIChyZWN5Y2xl
ZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5
T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOwotICAgICAgICBhdXRvIGNvbnRlbnRzSGFuZGxl
ID0gW21fd2ViR0xMYXllciBkZXRhY2hDbGllbnRdOworICAgICAgICBhdXRvIGNvbnRlbnRzSGFu
ZGxlID0gbV9zd2FwQ2hhaW4tPmRldGFjaENsaWVudCgpOwogICAgICAgICBpZiAoY29udGVudHNI
YW5kbGUpCiAgICAgICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBjb250
ZW50c0hhbmRsZSk7CiAgICAgfQpAQCAtNTc1LDExICs1ODYsMTYgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKICAgICAgICAgbV9k
aXNwbGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOwogICAgIH0KICAgICAvLyBSZXNl
dCB0aGUgZnV0dXJlIHJlY3ljbGVkIGJ1ZmZlciBub3csIGJlY2F1c2UgaXQgbW9zdCBsaWtlbHkg
d2lsbCBub3QgYmUgcmV1c2FibGUgYXQgdGhlIHRpbWUgaXQgd2lsbCBiZSByZXVzZWQuCi0gICAg
YXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAg
YXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAg
aWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1f
ZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxlKTsKICAgICByZWN5Y2xlZEJ1ZmZlci5z
dXJmYWNlLnJlc2V0KCk7CisgICAgcmV0dXJuIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKCk7Cit9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5k
QmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKK3sKKyAgICBBU1NFUlQoIWdldEludGVybmFsRnJh
bWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsKICAgICBhdXRvIGJhY2tpbmcgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBXZWJDb3JlOjpz
UkdCQ29sb3JTcGFjZVJlZigpKTsKICAgICBpZiAoIWJhY2tpbmcpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTYzNyw3ICs2NTMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjph
bGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdAogICAgIC8vIGZvciBPcGVuR0wgdG8gZGVjaWRl
IHdoaWNoIEdQVSBpcyBjb25uZWN0ZWQgdG8gYSBkaXNwbGF5IChvbmxpbmUvb2ZmbGluZSkuCiAg
ICAgLy8gT3BlbkdMIHdpbGwgdGhlbiBjb25zaWRlciBhbGwgR1BVcywgb3IgcmVuZGVyZXJzLCBh
cyBvZmZsaW5lLCB3aGljaCBtZWFucwogICAgIC8vIGFsbCBvZmZsaW5lIHJlbmRlcmVycyBuZWVk
IHRvIGJlIGNvbnNpZGVyZWQgd2hlbiBmaW5kaW5nIGEgcGl4ZWwgZm9ybWF0LgotICAgIC8vIElu
IFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kb3dTZXJ2ZXIgY29ubmVj
dGlvbiwgYW5kCisgICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBh
IFdpbmR3U2VydmVyIGNvbm5lY3Rpb24sIGFuZAogICAgIC8vIG1fZGlzcGxheU1hc2sgd2lsbCBu
b3QgYmUgc2V0IGluIHRoaXMgY2FzZS4KICAgICBpZiAocHJpbWFyeU9wZW5HTERpc3BsYXlNYXNr
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjQ2LDEyICs2NjIsMTIgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKICAgICAv
LyBhbmQgTUFDL01BQ0NBVEFMWVNUIGFuZCBPUEVOR0wvT1BFTkdMRVMuCiAgICAgcmV0dXJuIHRy
dWU7CiAjZW5kaWYKLSAgICAgICAgCisKICNpZiBIQVZFKEFQUExFX0dSQVBISUNTX0NPTlRST0wp
CiAgICAgaWYgKGhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYKLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNjgzLDEwICs2OTks
MTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQog
ICAgIC8vIFRoZSBJT1N1cmZhY2Ugd2lsbCBiZSB1c2VkIGZyb20gb3RoZXIgZ3JhcGhpY3Mgc3Vi
c3lzdGVtLCBzbyBmbHVzaCBHTCBjb21tYW5kcy4KICAgICBnbDo6Rmx1c2goKTsKIAotICAgIGF1
dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgIGF1
dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogCiAgICAg
RUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIs
IEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgW21fd2ViR0xMYXllciBwcmVwYXJlRm9yRGlzcGxheVdp
dGhDb250ZW50czoge1dURk1vdmUobV9kaXNwbGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1
ZmZlclBidWZmZXJ9XTsKKyAgICBtX3N3YXBDaGFpbi0+cHJlc2VudCh7IFdURk1vdmUobV9kaXNw
bGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgfSk7CiAgICAgbV9kaXNw
bGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOwogCiAgICAgYm9vbCBoYXNOZXdCYWNr
aW5nID0gZmFsc2U7CkBAIC03MDAsNyArNzE2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogCiAgICAgLy8gRXJyb3Igd2lsbCBiZSBoYW5kbGVk
IGJ5IG5leHQgY2FsbCB0byBtYWtlQ29udGV4dEN1cnJlbnQoKSB3aGljaCB3aWxsIG5vdGljZSBs
YWNrIG9mIGRpc3BsYXkgYnVmZmVyLgogICAgIGlmICghaGFzTmV3QmFja2luZykKLSAgICAgICAg
cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgICAgIGFsbG9jYXRlQW5kQmluZERp
c3BsYXlCdWZmZXJCYWNraW5nKCk7CiAKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYzQxNDAxNWI3YjBmMzRiYjI4YmUzNDU1MDljNzQyOWUzMWRhYTNjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShD
T0NPQSkKKworI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIK
KyNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICBhdXRvIGF0dHJzID0gY29u
dGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAg
ICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRy
cy5hbHBoYV0pOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1l
OkAiV2ViR0wgTGF5ZXIiXTsKKyNlbmRpZgorICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
K30KKworCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViR0xMYXllci5nZXQoKTsK
K30KKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzQ29u
dGV4dEdMQ1YqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjphc0NWKCkKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbiYgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dh
cENoYWluKCkKK3sKKyAgICByZXR1cm4gW21fd2ViR0xMYXllciBzd2FwQ2hhaW5dOworfQorCit9
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIuaAppbmRleCAxNGIwMWU3MDVmMjA1MzAxYzdjOTdjZjY2ZTcxYTA4YmJmNDFl
NzA1Li43ZmU4OGEyZmY0Y2UwZjU1OWQ1OWRjMWNkOTUyYTNhN2VhODgwOTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCkBA
IC0yMyw1MiArMjMsMjIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiSU9TdXJm
YWNlLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgog
I2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxtZW1vcnk+CiAjaW1w
b3J0IDx3dGYvTmFrZWRQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IFdlYkdM
TGF5ZXJCdWZmZXIgewotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1
cmZhY2U7IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCi0gICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0
ciB9OyAvLyBDbGllbnQgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1cmZh
Y2UpLgotfTsKLX0KLQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogLy8g
QSBsYXllciBjbGFzcyBpbXBsZW1lbnRpbmcgZnJvbnQgYnVmZmVyIG1hbmFnZW1lbnQgb2YgYSAz
LWJ1ZmZlcmluZyBzd2FwCiAvLyBjaGFpbiBvZiBJT1N1cmZhY2VzLgotLy8gVGhlIGxheWVyIHdp
bGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMgZm9yIGRpc3BsYXkuCi0vLyBUaGUgY2xpZW50
IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJT1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0
aGUgbWV0YWRhdGEKLS8vIGJhY2sgb25jZSB0aGUgSU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXll
ZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90IG5lY2Nlc3NhcmlseQotLy8gYmUgYWJsZSB0
byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYgZm9yIHJldXNlLgotLy8gRXhhbXBsZSB1c2Ug
b2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xTdXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFk
YXRhLiBUaGlzIHdheQotLy8gd2hlbiB0aGUgV2ViR0xMYXllciBpcyBkb25lIHdpdGggdGhlIElP
U3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1c2luZwotLy8gdGhlIGV4
aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVyIHJlY3ljbGUgbG9naWMu
CiBAaW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBDQUxheWVyCiAKIC0gKGlkKWluaXRXaXRoRGV2aWNl
UGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbClj
b250ZW50c09wYXF1ZTsKIAogLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xv
clNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZTsKIAotLy8gUmV0dXJucyB0aGUgbWV0
YWRhdGEgaGFuZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCBt
YXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hpcCBvZiB0aGUgY29udGVudHMgc3VyZmFj
ZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhlCi0vLyB0aW1lIG9mIHRoZSBjYWxsLgot
Ly8gUmV0dXJucyBlaXRoZXI6Ci0vLyAtIEVtcHR5IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJl
ZW4gc3VibWl0dGVkLgotLy8gLSBCdWZmZXIgd2l0aCBlbXB0eSBzdXJmYWNlIGFuZCBub24tZW1w
dHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBidWZmZXIgd2FzIGF2YWlsYWJsZQot
Ly8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4gdXNlLgotLy8gLSBTdXJmYWNlIGFuZCBo
YW5kbGUuCi0tIChXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKXJlY3ljbGVCdWZmZXI7Ci0KLS8v
IFByZXBhcmVzIHRoZSBsYXllciBmb3IgZGlzcGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgot
Ly8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlwIG9mIHRoZSBJT1N1cmZhY2Ugc3VyZmFj
ZSBpbiB0aGUgYGJ1ZmZlcmAuCi0tICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRz
OihXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKWJ1ZmZlcjsKLQotLy8gRGV0YWNoZXMgdGhlIGNs
aWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFu
ZGxlLgotLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVj
eWNsZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKLS8vIHRoaXMu
Ci0tICh2b2lkKilkZXRhY2hDbGllbnQ7CistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbjsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQppbmRleCBjOGY0
ZTc5ZjczMTJlYWE2YWIwNDQ2ODA4M2VhOGQwYzhiZWZhM2JjLi4xNjhmZDVmNmM4NDIzN2JkZjhh
YjljYmJjYTY0MDczOTUwNWM5MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0zMiwxMyArMzIsMzkgQEAK
ICNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgi
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLSNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgorCitjbGFzcyBXZWJHTExheWVy
U3dhcENoYWluIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJHTExheWVyU3dhcENoYWlu
KFdlYkdMTGF5ZXIqIGxheWVyKSAgOiBtX2xheWVyKGxheWVyKSB7IH07CisgICAgfldlYkdMTGF5
ZXJTd2FwQ2hhaW4oKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZl
cikgb3ZlcnJpZGU7CisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgeworICAgICAgICAgICAgaWYgKG1f
c3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQorICAgICAgICAgICAgICAgIG1fc3BhcmVC
dWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9zcGFy
ZUJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdm9p
ZCogZGV0YWNoQ2xpZW50KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zcGFy
ZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gbV9kaXNwbGF5QnVmZmVy
LmhhbmRsZTsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxh
eVN1cmZhY2UoKSB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZS5nZXQoKTsgfQorcHJp
dmF0ZToKKyAgICBCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOworICAgIEJ1ZmZlciBtX3NwYXJlQnVm
ZmVyOworICAgIFdlYkdMTGF5ZXIqIGNvbnN0IG1fbGF5ZXI7Cit9OwogCiBAaW1wbGVtZW50YXRp
b24gV2ViR0xMYXllciB7Ci0gICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfY29udGVudHNC
dWZmZXI7Ci0gICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfc3BhcmVCdWZmZXI7Ci0KICAg
ICBCT09MIF9wcmVwYXJlZEZvckRpc3BsYXk7CisgICAgT3B0aW9uYWw8V2ViR0xMYXllclN3YXBD
aGFpbj4gX3N3YXBDaGFpbjsKIH0KIAogLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihm
bG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVl
CkBAIC00Nyw2ICs3Myw3IEBACiAgICAgc2VsZi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRl
bnRpdHk7CiAgICAgc2VsZi5jb250ZW50c09wYXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwogICAgIHNl
bGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVsUmF0aW87CisgICAgX3N3YXBDaGFpbi5lbXBs
YWNlKHNlbGYpOwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC03MywzMCArMTAwLDIxIEBACiAg
ICAgVU5VU0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogICAgIHJldHVybiBudWxscHRyOwogfQotCi0t
IChXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKSByZWN5Y2xlQnVmZmVyCistIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbgogewotICAgIGlm
IChfc3BhcmVCdWZmZXIuc3VyZmFjZSkgewotICAgICAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZh
Y2UtPmlzSW5Vc2UoKSkKLSAgICAgICAgICAgIF9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7
Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKF9zcGFyZUJ1ZmZlcik7Ci0gICAgfQotICAgIHJldHVy
biB7IH07CisgICAgcmV0dXJuIF9zd2FwQ2hhaW4udmFsdWUoKTsKIH0KIAotLSAodm9pZClwcmVw
YXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgYnVm
ZmVyCistICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5CiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZm
ZXIuc3VyZmFjZSk7Ci0gICAgX3NwYXJlQnVmZmVyID0gV1RGTW92ZShfY29udGVudHNCdWZmZXIp
OwotICAgIF9jb250ZW50c0J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBbc2VsZiBzZXRO
ZWVkc0Rpc3BsYXldOwogICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBZRVM7CiB9CiAKIC0gKHZv
aWQpZGlzcGxheQogewotICAgIGlmIChfY29udGVudHNCdWZmZXIuc3VyZmFjZSAmJiBfcHJlcGFy
ZWRGb3JEaXNwbGF5KSB7Ci0gICAgICAgIHNlbGYuY29udGVudHMgPSBfY29udGVudHNCdWZmZXIu
c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCk7CisgICAgaWYgKF9zd2FwQ2hhaW4tPmRpc3BsYXlT
dXJmYWNlKCkgJiYgX3ByZXBhcmVkRm9yRGlzcGxheSkgeworICAgICAgICBzZWxmLmNvbnRlbnRz
ID0gX3N3YXBDaGFpbi0+ZGlzcGxheVN1cmZhY2UoKS0+YXNMYXllckNvbnRlbnRzKCk7CiAgICAg
ICAgIFtzZWxmIHJlbG9hZFZhbHVlRm9yS2V5UGF0aDpAImNvbnRlbnRzIl07CiAgICAgfQogICAg
IGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZv
ckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKQEAgLTEwNiwxMyArMTI0LDE0IEBACiAgICAg
X3ByZXBhcmVkRm9yRGlzcGxheSA9IE5POwogfQogCi0tICh2b2lkKikgZGV0YWNoQ2xpZW50CitA
ZW5kCisKK3ZvaWQgV2ViR0xMYXllclN3YXBDaGFpbjo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQog
ewotICAgIEFTU0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIHZvaWQqIHJlc3VsdCA9
IF9jb250ZW50c0J1ZmZlci5oYW5kbGU7Ci0gICAgX2NvbnRlbnRzQnVmZmVyLmhhbmRsZSA9IG51
bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3Vy
ZmFjZSk7CisgICAgbV9zcGFyZUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKKyAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgW21fbGF5ZXIgcHJlcGFy
ZUZvckRpc3BsYXldOwogfQotQGVuZAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4
NTUyZjFlNDZhMWQzNzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIuLjk5YWQ5MTY1MjU5MTg3M2UwZTgz
ZmU4Nzg5MjVlY2EyMzNhMWExYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdl
QnVmZmVyLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVm
ZmVyLmgiCiAjaW1wb3J0ICJTb3VyY2VHcmFwaGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lD
b250ZXh0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDdlYzgxY2Y0YWU1Nzcy
Y2FlOTcyODhiYzgwZTM2NTY0NmQ2MjdjN2IuLmFkZDVmMzUyYWU0ZGU2YjZkNWRjMTkxZTY3M2I1
YWFmYTU2ZGU5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5FeHRlbnNp
b25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJs
aXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNy
Y1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNp
Z25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xP
cGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwg
bG9uCiAgICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZ
MSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRl
cm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMiw3
ICsyMjIsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xP
cGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzcs
NyArMjM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHMKICNlbmRpZgogfQogCi12b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVp
IHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdD
R0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Myw3ICsy
NTMsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgRwogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0wuaAppbmRleCA0OTYyODljZWEwZTZhMDlkNmRiNzMxZjg2OGI1NDk5M2E0NDQ0OWE4
Li40NzUwMjI2ZWNlY2VmNDQzOTZlOTkzODY3NmNiNjM5YmU4MzQzN2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRl
bnNpb25zR0xPcGVuR0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIHZv
aWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxv
bmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEs
IHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVu
c2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2
b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdD
R0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAs
IEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51
bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3ZlcnJpZGU7
CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKQEAgLTUyLDkgKzUyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
dm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBH
Q0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1j
b3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkg
b3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0M2I1MTYxZmJhNzc4ZjhmYjQzODRi
MWJjMmRiMzhlY2Y2YzQ4M2ViLi5iNzg5NjBjYjQ4MmU0ZWYyYWI5OGU0MDM5MmE2MzViYTdmZmI3
YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMzY2LDEx
ICszNjYsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMcwogICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwg
R0NHTHNpemVpICosIEdDR0xzaXplaSAqLCB2b2lkICosIGJvb2wpCi17Ci0gICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQs
IGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGZsb2F0ICopCiB7CiAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggYmZlNDUyMTU0M2ZmNGIyNzIxMzdmMzQ0Y2Vl
NGEyMmQ4ZmIyOGM2NC4uNmEzYTM5ZmUzYTFiYTViZDI1OTc3MTU4OTQ3NTYxY2NhZDVhZDQ5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtOTMsNyArOTMsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1u
cywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVy
T2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCAz
NmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMzLi5lMWU0M2JmNTM5Mjg4NWEy
NGZiYjMzY2IyNmI1ZjZlNDkxZmJlMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAKQEAgLTEwMCwxMiArMTAwLDEyIEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBsb25nIHRhcmdlCiAgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXIobG9uZyAvKiBzcmNY
MCAqLywgbG9uZyAvKiBzcmNZMCAqLywgbG9uZyAvKiBzcmNYMSAqLywgbG9uZyAvKiBzcmNZMSAq
LywgbG9uZyAvKiBkc3RYMCAqLywgbG9uZyAvKiBkc3RZMCAqLywgbG9uZyAvKiBkc3RYMSAqLywg
bG9uZyAvKiBkc3RZMSAqLywgdW5zaWduZWQgbG9uZyAvKiBtYXNrICovLCB1bnNpZ25lZCBsb25n
IC8qIGZpbHRlciAqLykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xp
bnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xiaXRmaWVsZCwgR0NHTGVudW0pCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lk
dGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlv
biwgR0NHTAogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NH
CiAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHBy
aW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkKIHsKICAgICBpZiAoIW1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSkgewog
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LAogICAgIG1fZ2xE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRf
Y2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpCiB7CiAgICAgaWYgKCFtX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKSB7CiAgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCAwMTdhNDViNzM5OGQwOTkyZWQxNDc2N2YwNzY3
ZTA0YjQ2NDE2MjgzLi41Yzc2MDM3ZmE3YmM2ZThlZWUzZTY3M2Y5OWE3ZGZjMmY3OGZiNGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAK
ICAgICAvLyBFeHRlbnNpb24zRCBtZXRob2RzCiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9u
ZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwg
bG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25n
IGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQg
bG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBo
ZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKICAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQodm9pZCkgb3Zl
cnJpZGU7CkBAIC04Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJh
eU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhU
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdBcnJh
eXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAv
LyBFWFQgUm9idXN0bmVzcyAtIHJlc2V0CiAgICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMjc2
ZjEzNWE3OGY0YmRjZWM1ODdkODgwMzVjZWEzNjZhMmU2ZWI3OC4uNDMyNmE3MzVlM2ViNDdkN2Jk
MzcxOGY0YmU1MzljMjMyMGU1MDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKQEAgLTU4LDYgKzU4LDkgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgQ0FM
YXllcjsKIE9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworfQogI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQogCiAjaWYgVVNFKE5JQ09TSUEpCkBAIC04Niw3ICs4OSw3IEBAIHR5cGVkZWYg
V1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKIAogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlOwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0wKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVz
dGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKTsKQEAgLTk0LDYgKzk3LDggQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4gY3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRD
b250ZXh0KTsKKyAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVG
b3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKik7CisKICAgICBDQUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93
ZWJHTExheWVyLmdldCgpKTsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5
IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU9iajsgfQogICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdCB7IHJl
dHVybiBtX2NvbmZpZ09iajsgfQpAQCAtMTg3LDcgKzE5Miw3IEBAIHB1YmxpYzoKICAgICBib29s
IGdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAg
Ym9vbCBnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291
bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAgIHZvaWQgZ2V0QXR0YWNo
ZWRTaGFkZXJzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBH
Q0dMc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKTsKICAgICBHQ0dMaW50
IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkg
ZmluYWw7CiAgICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGJvb2xlYW4+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBAIC0yMTUsOCArMjIwLDYg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAg
IHZvaWQgZ2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRV
bmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5h
bDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTIzMiw3ICsyMzUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBw
YXJhbSkgZmluYWw7CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdD
R0xmbG9hdCB1bml0cykgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRh
dGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZUNvdmVy
YWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CkBAIC0yNTAs
NyArMjU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7
CiAgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7IAorICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OwogICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKICAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9m
ZnNldCkgZmluYWw7CiAKQEAgLTMxMywxMiArMzE3LDEwIEBAIHB1YmxpYzoKICNpZiAhVVNFKEFO
R0xFKQogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRh
dGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7
CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RC
eXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBk
c3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAjZW5kaWYKICAgICB2b2lkIGNvcHlCdWZmZXJT
dWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50
cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXpl
KSBmaW5hbDsKIAotICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3Mp
IGZpbmFsOwotICAgIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgZmlu
YWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgYmxp
dEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEs
IEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0
WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZp
bmFsOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOwpAQCAtMzgwLDcgKzM4Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9i
amVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICAg
ICAvLyBnZXRRdWVyeVBhcmFtZXRlcgotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZv
cm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgZmluYWw7
CisgICAgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBs
ZXIoKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyKSBmaW5hbDsKQEAgLTM4OSw4ICszOTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYW1wbGVy
UGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50IHBhcmFtKSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CiAg
ICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFs
dWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBH
Q0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdD
R0xzeW5jIGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykg
ZmluYWw7CiAgICAgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jKSBmaW5hbDsKQEAgLTM5OSw3
ICs0MDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZp
ZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CiAgICAgLy8gZ2V0U3luY1BhcmFt
ZXRlcgogICAgIC8vIEZJWE1FIC0gdGhpcyBjYW4gYmUgaW1wbGVtZW50ZWQgYXQgdGhlIFdlYkdM
IGxldmVsIGlmIHdlIHNpZ25hbCB0aGUgV2ViR0xTeW5jIG9iamVjdC4KLSAgICB2b2lkIGdldFN5
bmNpdihHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50
ICp2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjaygpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1H
TE9iamVjdCBpZCkgZmluYWw7CkBAIC00MTYsNyArNDE4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3Jt
R0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZp
bmFsOwogICAgIC8vIGdldEluZGV4ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBjYWxs
cyBhYm92ZS4KICAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmlu
YWw7Ci0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwg
VmVjdG9yPEdDR0xpbnQ+JiBwYXJhbXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRB
Y3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dM
dWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dM
dWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9y
bUJsb2NrUGFyYW1ldGVyCkBAIC00MjUsMTEgKzQyNyw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZp
bmFsOwogCi0jaWYgIVVTRShBTkdMRSkKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCByZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwg
R0NHTHVpbnQgZHN0T2Zmc2V0KTsKLSNlbmRpZgotCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAK
ICAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMs
IGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3Jh
cGhpY3NDb250ZXh0Jik7CkBAIC01MTEsNyArNTA4LDExIEBAIHB1YmxpYzoKICNlbmRpZiAvLyAh
VVNFKEFOR0xFKQogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyos
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0ciwgR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qID0gbnVsbHB0cik7CisjZWxzZQogICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdp
bmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRyKTsKKyNlbmRpZgogCiAgICAgLy8g
Q2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxs
eSBjYWxsIE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRy
eSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KQEAg
LTUyMyw3ICs1MjQsOSBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZv
aWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIAorCisgICAgdm9p
ZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNp
emVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCk7CisKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZl
IHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8KICAgICB2b2lkIGNoZWNrR1BVU3RhdHVz
KCk7CiAKQEAgLTU0NCwxMCArNTQ3LDEzIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgYm9vbCBhbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdDsKICAgICBib29sIHJlc2hh
cGVEaXNwbGF5QnVmZmVyQmFja2luZygpOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxh
eUJ1ZmZlckJhY2tpbmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4qIG1fc3dhcENoYWluIHsgbnVsbHB0ciB9OworICAgIC8vIFRPRE86IHRoaXMgc2hvdWxk
IGJlIHJlbW92ZWQgb25jZSB0aGUgY29udGV4dCBkcmF3cyB0byBhIGltYWdlIGJ1ZmZlci4gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNzkgLgogICAgIFJl
dGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTCBtX2NvbnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTERpc3BsYXkgbV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwpAQCAtNTc1LDcgKzU4MSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChl
bnVtIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8
IHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9
PSBTSEFERVJfU1lNQk9MX1RZUEVfVkFSWUlORyk7CkBAIC02NjgsNyArNjc0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICB1c2luZyBCb3VuZFRleHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAog
ICAgICAgICAgICAgc3RkOjpwYWlyPEdDR0x1aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBX
VEY6OkludEhhc2g8R0NHTGVudW0+LCAKKyAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51
bT4sCiAgICAgICAgICAgICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1
aW50PiwKICAgICAgICAgICAgIFdURjo6UGFpckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8R0NHTHVpbnQ+PgogICAgICAgICA+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcAppbmRleCA2MzU2ZjgxZjQ4MjFiNmExZWE2YzM1NTdlZGYxZjRlNjg4
MTNmNmI5Li42Mjk4MDM4OGI2NTI0NzljY2I0MzMxYzI1ZmZlZWJiNjZjNmNiNTQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtNDMxLDcgKzQzMSw3
IEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4
dEF0dHJpYnV0ZXMoKTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVIsIG1fZmJvKTsKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQotICAgIDo6Z2xS
ZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAg
OjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmRh
dGEpOwogICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPT0g
bV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGlj
c0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYmM0NGNkNTc3ODg2
NzIwMzlhZWE0ZjU5OTk2ZTRkOTRlMWMxYTBmZS4uOWMyYmI5ZGNmMmI2ZTQ4NDJkMWNiNjZlNjli
MWIwZWFmYTk1NjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b21tb24uY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKICAgICBUZW1wb3JhcnlPcGVuR0xT
ZXR0aW5nIHNjb3BlZFNjaXNzb3IoR0xfU0NJU1NPUl9URVNULCBHTF9GQUxTRSk7CiAgICAgVGVt
cG9yYXJ5T3BlbkdMU2V0dGluZyBzY29wZWREaXRoZXIoR0xfRElUSEVSLCBHTF9GQUxTRSk7Ci0g
ICAgCisKICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gcmVzaGFwZUZCT3MoSW50U2l6ZSh3aWR0
aCwgaGVpZ2h0KSk7CiAKICAgICAvLyBJbml0aWFsaXplIHJlbmRlcmJ1ZmZlcnMgdG8gMC4KQEAg
LTUzNCw3ICs1MzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMo
R0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgOjpnbEJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKTsKLX0gICAgICAgCit9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JH
QiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEp
CiB7CkBAIC02NDMsMTEgKzY0MywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
b21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogICAgIExPRyhXZWJHTCwgIi0t
LSBiZWdpbiB0cmFuc2xhdGVkIHNoYWRlciBzb3VyY2UgLS0tXG4lc1xuLS0tIGVuZCB0cmFuc2xh
dGVkIHNoYWRlciBzb3VyY2UgLS0tIiwgdHJhbnNsYXRlZFNoYWRlclB0cik7CiAKICAgICA6Omds
U2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnRyYW5zbGF0ZWRTaGFkZXJQdHIsICZ0cmFuc2xhdGVk
U2hhZGVyTGVuZ3RoKTsKLSAgICAKKwogICAgIDo6Z2xDb21waWxlU2hhZGVyKHNoYWRlcik7Ci0g
ICAgCisKICAgICBpbnQgY29tcGlsZVN0YXR1czsKLSAgICAKKwogICAgIDo6Z2xHZXRTaGFkZXJp
dihzaGFkZXIsIENPTVBJTEVfU1RBVFVTLCAmY29tcGlsZVN0YXR1cyk7CiAKICAgICBTaGFkZXJT
b3VyY2VNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVy
KTsKQEAgLTg5NCw5ICs4OTQsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVBdHRyaWJJbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTAogICAgIDo6Z2xH
ZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heEF0dHJpYnV0ZVNpemUsICZuYW1lTGVu
Z3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBv
cmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwg
U3RyaW5nKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKSk7Ci0gICAgCisKICNpZm5kZWYgTkRFQlVH
CiAgICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBM
T0coV2ViR0wsICJQcm9ncmFtICVkIGlzIG1hcHBpbmcgYWN0aXZlIGF0dHJpYnV0ZSAlZCBmcm9t
ICclcycgdG8gJyVzJyIsIHByb2dyYW0sIGluZGV4LCB1bmlmb3JtTmFtZS51dGY4KCkuZGF0YSgp
LCBvcmlnaW5hbE5hbWUudXRmOCgpLmRhdGEoKSk7CkBAIC05MTYsNyArOTE2LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTHVpbnQKICAgICAgICAgZ2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50
KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfQVRUUklCVVRFUywgJnN5bWJvbENv
dW50KTsKICAgICAgICAgcmVzdWx0ID0gbV9zaGFkZXJQcm9ncmFtU3ltYm9sQ291bnRNYXAuZmlu
ZChwcm9ncmFtKTsKICAgICB9Ci0gICAgCisKICAgICBBY3RpdmVTaGFkZXJTeW1ib2xDb3VudHMm
IHN5bWJvbENvdW50cyA9IHJlc3VsdC0+dmFsdWU7CiAgICAgR0NHTHVpbnQgcmF3SW5kZXggPSAo
aW5kZXggPCBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwLnNp
emUoKSkgPyBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwW2lu
ZGV4XSA6IC0xOwogCkBAIC05NDMsMTQgKzk0MywxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
RwogICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBtYXhVbmlmb3JtU2l6
ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5kYXRhKCkpOwogICAgIGlmICghbmFt
ZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgU3RyaW5nIG9yaWdp
bmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVf
VU5JRk9STSwgU3RyaW5nKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKSk7Ci0gICAgCisKICNpZm5k
ZWYgTkRFQlVHCiAgICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3Ro
KTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFtICVkIGlzIG1hcHBpbmcgYWN0aXZlIHVuaWZvcm0g
JWQgZnJvbSAnJXMnIHRvICclcyciLCBwcm9ncmFtLCBpbmRleCwgdW5pZm9ybU5hbWUudXRmOCgp
LmRhdGEoKSwgb3JpZ2luYWxOYW1lLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCi0gICAgCisKICAg
ICBpbmZvLm5hbWUgPSBvcmlnaW5hbE5hbWU7CiAgICAgaW5mby50eXBlID0gdHlwZTsKICAgICBp
bmZvLnNpemUgPSBzaXplOwpAQCAtOTY1LDEwICs5NjUsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW4KICAgICAgICAgZ2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0sIEdy
YXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZzeW1ib2xDb3VudCk7CiAgICAgICAg
IHJlc3VsdCA9IG1fc2hhZGVyUHJvZ3JhbVN5bWJvbENvdW50TWFwLmZpbmQocHJvZ3JhbSk7CiAg
ICAgfQotICAgIAorCiAgICAgQWN0aXZlU2hhZGVyU3ltYm9sQ291bnRzJiBzeW1ib2xDb3VudHMg
PSByZXN1bHQtPnZhbHVlOwogICAgIEdDR0x1aW50IHJhd0luZGV4ID0gKGluZGV4IDwgc3ltYm9s
Q291bnRzLmZpbHRlcmVkVG9BY3R1YWxVbmlmb3JtSW5kZXhNYXAuc2l6ZSgpKSA/IHN5bWJvbENv
dW50cy5maWx0ZXJlZFRvQWN0dWFsVW5pZm9ybUluZGV4TWFwW2luZGV4XSA6IC0xOwotICAgIAor
CiAgICAgcmV0dXJuIGdldEFjdGl2ZVVuaWZvcm1JbXBsKHByb2dyYW0sIHJhd0luZGV4LCBpbmZv
KTsKIH0KIApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpvcmlnaW5hbFN5bWJvbE5hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBBTkcKICAg
ICBHQ0dMc2l6ZWkgY291bnQ7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdOwogICAg
IGdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCAyLCAmY291bnQsIHNoYWRlcnMpOwotICAgIAor
CiAgICAgZm9yIChHQ0dMc2l6ZWkgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGF1
dG8gb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xJblNoYWRlclNvdXJjZU1hcChzaGFkZXJz
W2ldLCBzeW1ib2xUeXBlLCBuYW1lKTsKICAgICAgICAgaWYgKG9yaWdpbmFsTmFtZSkKQEAgLTEx
MDcsNyArMTEwNyw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwcGVkU3lt
Ym9sTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcnNbMl0sIHNpCiAgICAgICAgICAgICBTaGFk
ZXJTb3VyY2VNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hh
ZGVyc1tpXSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVu
ZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGNvbnN0IFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwID0gcmVzdWx0LT52YWx1ZS5zeW1i
b2xNYXAoc3RhdGljX2Nhc3Q8ZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5cGU+KHN5bWJvbFR5cGUp
KTsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3ltYm9sRW50cnkgOiBzeW1ib2xNYXAp
IHsKICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PSBzeW1ib2xFbnRyeS52YWx1ZS5tYXBwZWRO
YW1lLmNfc3RyKCkpCkBAIC0xNjgyLDcgKzE2ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogewogICAg
IGlmICghYXJyYXkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTY5NSw3ICsxNjk1LDcgQEAgR0NH
TGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkoUGxhdGZvcm1H
TE9iamVjdCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gR0xfRkFM
U0U7Ci0gICAgCisKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm4gR0xfRkFMU0U7CiAKQEAgLTE4MTgsNyArMTgxOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0
IHByCiAKICAgICAgICAgc3ltYm9sQ291bnRzLmZpbHRlcmVkVG9BY3R1YWxBdHRyaWJ1dGVJbmRl
eE1hcC5hcHBlbmQoaSk7CiAgICAgfQotICAgIAorCiAgICAgLy8gRG8gdGhlIHNhbWUgZm9yIHVu
aWZvcm1zLgogICAgIEdDR0xpbnQgdW5pZm9ybUNvdW50ID0gMDsKICAgICA6OmdsR2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIEFDVElWRV9VTklGT1JNUywgJnVuaWZvcm1Db3VudCk7CkBAIC0xODI3LDEw
ICsxODI3LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5B
Y3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByCiAgICAgICAgIGdldEFjdGl2ZVVu
aWZvcm1JbXBsKHByb2dyYW0sIGksIGluZm8pOwogICAgICAgICBpZiAoaW5mby5uYW1lLnN0YXJ0
c1dpdGgoImdsXyIpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAg
IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0dWFsVW5pZm9ybUluZGV4TWFwLmFwcGVuZChpKTsK
ICAgICB9Ci0gICAgCisKICAgICAqdmFsdWUgPSBzeW1ib2xDb3VudHMuY291bnRGb3JUeXBlKHBu
YW1lKTsKIH0KIApAQCAtMTg0MSw3ICsxODQxLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXSwK
ICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4cCgid2ViZ2xfWzAxMjM0NTY3
ODlhYmNkZWZBQkNERUZdKyIpOwogCiAgICAgU3RyaW5nQnVpbGRlciBwcm9jZXNzZWRMb2c7Ci0g
ICAgCisKICAgICAvLyBBTkdMRSBpbnNlcnRzIGEgIiNleHRlbnNpb24iIGxpbmUgaW50byB0aGUg
c2hhZGVyIHNvdXJjZSB0aGF0CiAgICAgLy8gY2F1c2VzIGEgd2FybmluZyBpbiBzb21lIGNvbXBp
bGVycy4gVGhlcmUgaXMgbm8gcG9pbnQgc2hvd2luZwogICAgIC8vIHRoaXMgd2FybmluZyB0byB0
aGUgdXNlciBzaW5jZSB0aGV5IGRpZG4ndCB3cml0ZSB0aGUgY29kZSB0aGF0CkBAIC0xODgwLDcg
KzE4ODAsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1JbmZv
TG9nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSkKICAgICBHTGludCBsZW5ndGggPSAwOwogICAg
IDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsK
ICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBWZWN0b3I8R0xjaGFy
PiBpbmZvKGxlbmd0aCk7CkBAIC0xOTExLDcgKzE5MTEsNyBAQCBHQ0dMaW50IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBHQ0dMZW51
bSBwbgogCiAKICAgICBjb25zdCBhdXRvJiByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5k
KHNoYWRlcik7Ci0gICAgCisKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBERUxFVEVf
U1RBVFVTOgogICAgIGNhc2UgU0hBREVSX1RZUEU6CkBAIC0xOTQzLDcgKzE5NDMsNyBAQCBTdHJp
bmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9i
amVjdCBzaGFkZXIpCiAKICAgICBjb25zdCBhdXRvJiByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1h
cC5maW5kKHNoYWRlcik7CiAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CiAgICAgY29uc3QgU2hhZGVyU291cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKICAg
ICBpZiAoIWVudHJ5LmlzVmFsaWQpCkBAIC0xOTUyLDcgKzE5NTIsNyBAQCBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFk
ZXIpCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBH
TF9JTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7IAorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBHTHNpemVp
IHNpemUgPSAwOwogICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obGVuZ3RoKTsKQEAgLTE5NzEsNyAr
MTk3MSw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyU291cmNl
KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogCiAgICAgY29uc3QgYXV0byYgcmVzdWx0ID0gbV9z
aGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJT
b3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsgCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAogICAgIHJldHVybiByZXN1bHQtPnZhbHVlLnNvdXJjZTsKIH0KQEAgLTIw
MjksMjIgKzIwMjksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlm
b3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiA6Omds
R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG1hcHBlZE5hbWUudXRmOCgpLmRhdGEoKSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKLXsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6
OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6OmdsR2V0VmVy
dGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVpcHRy
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CkBAIC0yMjc4LDE5ICsyMjYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQog
ewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBj
b3VudCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1
cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25z
KCkuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1j
b3VudCk7CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1v
ZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tHUFVTdGF0dXMo
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNv
cihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBnZXRFeHRlbnNpb25z
KCkudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9u
cygpLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAKICNpZiBI
QVZFKE9QRU5HTF80KSAmJiBFTkFCTEUoV0VCR0wyKQpAQCAtMjMzNSw0MiArMjMxOSwyNSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xpbnRwdHIsCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3Jj
Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dM
dWludCBsZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNCeXRlT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRzdE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19Ci0KICNpZiBIQVZF
KE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCi17CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1
cm4gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19
Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIDo6Z2xVbm1hcEJ1ZmZlcih0YXJnZXQpOwot
fQorICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IDo6Z2xNYXBCdWZmZXJSYW5n
ZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JF
QURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShkYXRh
LmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoITo6Z2xVbm1hcEJ1ZmZlcih0YXJn
ZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9PUEVSQVRJT04pOwogI2Vsc2UKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBC
dWZmZXJSYW5nZShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTHNpemVpcHRyLCBHQ0dMYml0Zmll
bGQpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7Cisj
ZW5kaWYKIH0KIAotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVm
ZmVyKEdDR0xlbnVtKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NH
TGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwg
R0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxk
IG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKQEAgLTI3MTIsMTEgKzI2NzksMTEgQEAgUGxhdGZv
cm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmEKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkKK0dDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVt
IHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAgICAgVU5VU0VEX1BBUkFNKHBu
YW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBQbGF0
Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVTYW1wbGVyKCkKQEAg
LTI3NTYsMTggKzI3MjMsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2FtcGxl
clBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4KICAgICBVTlVTRURf
UEFSQU0ocGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1w
bGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1l
KTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwLmY7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKK0dDR0xpbnQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCisKIHsKICAgICBVTlVTRURfUEFSQU0oc2Ft
cGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUp
OworICAgIHJldHVybiAwOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjgw
NiwxMiArMjc3NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhH
Q0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIFVOVVNFRF9QQVJB
TSh0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2
KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGlu
dCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dM
c3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3luYyk7CiAg
ICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmU2l6ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVj
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAt
Mjg5MSwyMSArMjg1OCwyMyBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiB7
IH07CiB9CiAKLSNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVu
dW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBw
bmFtZSkKIHsKKyAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUo
KSwgMCk7CisjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKICAgICBBU1NF
UlQocHJvZ3JhbSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1z
aXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCks
IHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybXNpdihwcm9n
cmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUs
IHJlc3VsdC5kYXRhKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTHVp
bnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAg
IFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrTmFt
ZSk7Ci0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjkxMyw3ICsyODgyLDYgQEAgU3RyaW5nIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3IKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAgICAgVU5VU0VE
X1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
fQogCkBAIC0yOTIzLDI3ICsyODkxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0wKICAgICBV
TlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3Jt
QmxvY2tCaW5kaW5nKTsKIH0KLSNlbHNlCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+
JiwgR0NHTGVudW0sIFZlY3RvcjxHQ0dMaW50PiYpCi17Ci19CiAKLUdDR0x1aW50IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0LCBj
b25zdCBTdHJpbmcmKQotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCwg
R0NHTHVpbnQpCi17Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCwg
R0NHTHVpbnQsIEdDR0x1aW50KQotewotfQotI2VuZGlmCi0KLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5KTsKQEAgLTI5NTQsMTggKzI5
MDMsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RP
ZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAg
ICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVO
VVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURf
UEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGludD4gcGFyYW1zKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA1M2IxYTc3YzYwNzBm
OGU0MjRjOGM4OGQ1MDQxMjI0OWM3YjY3NmY3Li5iODJkMTY0MTdjMmY1MTkxZDA0NDI0ODc0NmU3
ODM4YTg2N2FlNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3Bw
CkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRh
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTU4LDcgKzU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsRmx1c2go
KTsKICAgICB9CiAKLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIGRhdGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YS5kYXRhKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlh
cyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6
OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKQEAg
LTEzMCw3ICsxMzAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJP
cyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRo
IGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAgICAgICAgICBpZiAoc3VwcG9y
dFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlcikgewogICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVu
ZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JF
TkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRf
U1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmli
dXRlcy5zdGVuY2lsKQogICAgICAgICAgICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVG
RkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZXMuZGVwdGgpCkBAIC0xMzgsMTIgKzEzOCwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7CiAgICAgICAgICAg
ICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2ls
QnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfU1RFTkNJTF9J
TkRFWDgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxl
Q291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAg
ICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVO
Q0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpIHsKICAg
ICAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBt
X2RlcHRoQnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgR0xfREVQ
VEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBleHRl
bnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZF
Uiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKICAg
ICAgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggM2E1ZTE1ZDhhZWIyYThiNjJmMDhi
NTNiYzIyODQzMWE4YzUxYjgxYS4uN2Y0NzA5MDNjNWRlZTVkZGJiZmFlMTJhYzJmOTEzZDJmNDdi
NTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5j
cHAKQEAgLTIyLDcgKzIyLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggODhlMTUxYjEyMjI0ZmViY2M4OTNiNTNkNjg1
ZTNlYzFiMDEwY2Q0NS4uMmI4OTZhOWFiYWMwZTEwNzRiMWUxMzUxOTMyMDQ5YWJlNzY4MDNjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdF
U19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAg
IEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTAogICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZAogCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcgpAQCAtMjIxLDYgKzIyMiw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAog
ICAgIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKKyAgICBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAKICAgICBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlNTFjYWVkMjFlMTg2Y2YyYTE3
M2NiOGEzMzMxMmJlMGIzMDRiYjAwLi5iY2UzMzhjNGI0NGYwNzllODBlZDBkNDZkNjcyMjkzYzIy
N2U1OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CkBAIC0yMCw2ICsyMCw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UikvbW9kZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5w
bAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMu
aW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CkBAIC0xMzQsNiArMTM1LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1h
bmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlODhi
MmMyMWZhNzE3Yzc3ZDIzMDJjYjUxOGJhNGFkM2VkZTI1NzRhLi4xNWYzYzIzY2NlMDVlMmQzMmU1
ZWViNjkyNDBjNjU0OGE5YmQxNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3OCw2ICsxNzgsMTIgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1l
c3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2ODE0ODU1ZmY5ZDIzYWYwYTc3ZTVmZGE2ZGZkMmZk
NTUwOTc2ZjY5Li4zNTNkNzZlZDFhNWYyMDllZWEzZjQ3ODMxZTA2Y2E4ZGQyMTA0M2NjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzEsNiArMTcxLDcgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCisJV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBcCiAJV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKQEAgLTIyNyw2ICsyMjgsNyBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAogCUdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kIFwKKwlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eSBcCiAJR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCiAJR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCAwZTJlODgzMmIxZTIwZjFlMGYzMTlkNWQ5ZjI1ZDcyY2UxYmY3
M2FkLi40NGI5ZjYzZTE0YzUwYjc0MTk5M2Q2ZjM1YTVhOTVmNWFmZDgwYTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC02NCw2ICs2NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAtMjkwLDYgKzI5NCwyMSBAQCB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lm
IEVOQUJMRShXRUJHTCkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKKyAgICAgICAg
cmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMs
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgfSk7CisgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBib29sIGZv
dW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9CisjZW5k
aWYKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygp
CiB7CiAgICAgZ3B1UHJvY2VzcygpLm5vd1BsYXlpbmdNYW5hZ2VyKCkuY2xlYXJOb3dQbGF5aW5n
SW5mb0NsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNjc4ZGJjNGU1ZDM2NWZhZDI4ZThiNDgy
Nzg2Mzc2MmEzYzQ1NzhkLi41YWVkZmJiNGQyY2FjN2I3NjYwZmYwNzM2MDlkMzc3YzYwMTU4NGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJN
YXAuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvTGli
V2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CkBAIC0zOSw2ICs0MCwx
MSBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7CkBAIC01
NCw2ICs2MCw3IEBAIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQ
cm94eTsKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CitjbGFzcyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7
CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlv
U2Vzc2lvbkNvbmZpZ3VyYXRpb247CkBAIC0xMTksNiArMTI2LDExIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlmCisKICAgICB2b2lkIGNsZWFyTm93UGxheWlu
Z0luZm8oKTsKICAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCkBAIC0xODAsNyArMTky
LDEwIEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0g
SGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKLQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB1c2luZyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOwor
I2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1MTk0ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1MmMzNjVl
YjMyNzFmMzQ0Li45ZDU0ZTE2NDU5NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5YzhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZv
aWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmlu
Z0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcikKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBDcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJL
aXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpCisjZW5kaWYKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0
Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdl
YkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNT
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgwNGQxZmE5OTk0ZDVm
ZmYzMTQzNjRkNTliZWY5NWViNDllYTk5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTAs
MCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4gY29udGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwg
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MpKQorICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Cisg
ICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0g
bV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAg
IFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRl
bnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywg
cmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkK
K3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKworR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0
KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29u
dGV4dCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5n
ZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
eworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3
aWR0aCwgaGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30K
KworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBy
ZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
Cit9CisjZW5kaWYKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChTdHJpbmcmJiBleHRlbnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4
dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RiMGNmNTE4YWJmOWJiMjVh
YjMzNmRkZGUwMzk5OTI1YWEwNWYzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEs
MTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4
dGVuc2lvbnNHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
CisKKy8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBt
ZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFs
IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4K
Ky8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsK
KworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4pOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92
ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisK
KyAgICAvLyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRp
ZENvbXBvc2l0ZSgpIGZpbmFsOworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOwor
ICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4
dENoYW5nZWROb3RpZmljYXRpb24oKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJl
Y2VpdmVkLgorICAgIHZvaWQgcmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7
CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmKTsKKyAgICB2b2lkIG5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFj
aFNlbmRSaWdodCYmKT4mJikgPSAwOworI2Vsc2UKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKKworI2luY2x1ZGUgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAg
UmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vh
a1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYTcxNTI0ZDQw
ODE5YmEwMzEwY2I0MjAxMzYwNzU2Njg3ODY4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwyOTQgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBOb3RSZWZDb3VudGVkIHsKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9y
RGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisj
ZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgp
IC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgp
CisKKyAgICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHZvaWQgU3ludGhl
c2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRlcih1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgdm9pZCBCaW5kQXR0cmliTG9j
YXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyBuYW1lKQorICAgIHZv
aWQgQmluZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBC
aW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQg
QmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9p
ZCBCaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBC
bGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhh
KQorICAgIHZvaWQgQmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgQmxlbmRF
cXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAg
ICB2b2lkIEJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAg
IHZvaWQgQmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0Is
IHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB2b2lkIENoZWNrRnJh
bWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBDbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xl
YXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkK
KyAgICB2b2lkIENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwo
aW50MzJfdCBzKQorICAgIHZvaWQgQ29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29s
IGJsdWUsIGJvb2wgYWxwaGEpCisgICAgdm9pZCBDb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzAp
CisgICAgdm9pZCBDb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1
YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQs
IGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlRnJhbWVidWZmZXIoKSAtPiAodWlu
dDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVQcm9ncmFtKCkg
LT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUmVu
ZGVyYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgQ3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRleHR1cmUoKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAg
IHZvaWQgRGVsZXRlQnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVGcmFtZWJ1
ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcw
KQorICAgIHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBE
ZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVRleHR1cmUodWludDMy
X3QgYXJnMCkKKyAgICB2b2lkIERlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHZvaWQgRGVw
dGhNYXNrKGJvb2wgZmxhZykKKyAgICB2b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0
IHpGYXIpCisgICAgdm9pZCBEZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJn
MSkKKyAgICB2b2lkIERpc2FibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRHJhd0FycmF5cyh1aW50MzJf
dCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1l
bnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90
IG9mZnNldCkKKyAgICB2b2lkIEVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIEZpbmlzaCgpCisgICAg
dm9pZCBGbHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwg
dWludDMyX3QgYXJnMykKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBh
cmczLCBpbnQzMl90IGxldmVsKQorICAgIHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisg
ICAgdm9pZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRBY3Rp
dmVBdHRyaWIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVy
blZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50
MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBdHRyaWJMb2Nh
dGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0U3RyaW5nKHVpbnQzMl90IG5hbWUpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90
IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVl
U2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFt
ZSwgdWludDMyX3QgaW5kZXgpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+
IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYo
dWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVu
Y2U8Ym9vbD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1
aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5h
bWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hh
ZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5
cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3QsIDI+IHJhbmdlLCBHQ0dMaW50IHByZWNpc2lvbikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQz
Ml90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZh
bHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9j
YXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQz
Ml90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMy
X3QgcG5hbWUpIC0+ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgSXNCdWZmZXIo
dWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBJc0VuYWJsZWQodWludDMyX3QgY2FwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIElzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1Byb2dyYW0odWludDMyX3QgYXJnMCkgLT4g
KGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1
aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IElzU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgSXNUZXh0dXJlKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgTGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgdm9pZCBM
aW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgUGl4ZWxTdG9yZWkodWludDMyX3Qg
cG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3Rv
ciwgZmxvYXQgdW5pdHMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0KQorICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQor
ICAgIHZvaWQgU2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisgICAgdm9pZCBTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5n
IGFyZzEpCisgICAgdm9pZCBTdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwg
dWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFj
ZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBT
dGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0ZSh1
aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQzMl90
IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFN0ZW5jaWxP
cFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1
aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBVbmlm
b3JtMWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB2b2lkIFVuaWZvcm0xZnYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVu
aWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgdm9pZCBVbmlmb3JtMWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2
b2lkIFVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZv
aWQgVW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiB2KQorICAgIHZvaWQgVW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50
MzJfdCB5KQorICAgIHZvaWQgVW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlv
biwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0zZnYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZv
cm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQor
ICAgIHZvaWQgVW5pZm9ybTNpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFVuaWZvcm00ZnYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZv
cm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBp
bnQzMl90IHcpCisgICAgdm9pZCBVbmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50MzJf
dCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZh
bHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVbmlm
b3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVzZVByb2dyYW0odWludDMyX3QgYXJn
MCkKKyAgICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmVy
dGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhBdHRy
aWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZhbHVl
cykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9h
dCB5KQorICAgIHZvaWQgVmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0LCAyPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1aW50
MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFZlcnRleEF0
dHJpYjNmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4gdmFs
dWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWludDMy
X3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2b2lk
IFZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMy
X3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgVmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0LCB1
aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlckRhdGExKHVpbnQz
Ml90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhLCB1aW50MzJfdCB1
c2FnZSkKKyAgICB2b2lkIEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBv
ZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIFJlYWRu
UGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNpemUpIC0+
IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlMkQxKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMCh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2
b2lkIFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwg
aW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qg
aW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBD
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBm
aXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxl
bWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlw
ZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0
dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBD
cmVhdGVWZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1Zl
cnRleEFycmF5KHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5
QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwg
dWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQp
CisgICAgdm9pZCBHZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zm
c2V0LCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4g
ZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gw
LCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRz
dFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJf
dCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVMYXll
cih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUs
IGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgdm9pZCBJbnZhbGlkYXRlRnJhbWVi
dWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRh
Y2htZW50cykKKyAgICB2b2lkIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJn
ZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgs
IGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBSZWFk
QnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFn
ZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9y
bWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2Uz
RCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1h
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgdm9p
ZCBUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRo
LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlM0QxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lk
IFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhT
dWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBp
bWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENv
bXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6
b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWlu
dDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVw
dGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB2b2lkIEdldEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIG5h
bWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9y
bTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB2b2lkIFVuaWZvcm0ydWko
aW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHZvaWQgVW5p
Zm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQz
Ml90IHYyKQorICAgIHZvaWQgVW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2
MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB2b2lkIFVuaWZv
cm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRh
dGEpCisgICAgdm9pZCBVbmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTN1aXYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZv
cm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRh
dGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0
cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlm
b3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYoaW50
MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBV
bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgzZnYo
aW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+IGRhdGEpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0
dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4g
dmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMy
X3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRl
eEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRl
eCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgRHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMy
X3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIENsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBp
bnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVzKQor
ICAgIHZvaWQgQ2xlYXJCdWZmZXJ1aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZm
ZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFy
QnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZmkodWludDMyX3Qg
YnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwp
CisgICAgdm9pZCBDcmVhdGVRdWVyeSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIERlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgSXNR
dWVyeSh1aW50MzJfdCBxdWVyeSkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBCZWdpblF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisgICAg
dm9pZCBFbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJf
dCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJf
dCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
Q3JlYXRlU2FtcGxlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIERlbGV0ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIElzU2FtcGxl
cih1aW50MzJfdCBzYW1wbGVyKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEJpbmRTYW1wbGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAg
dm9pZCBTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwg
aW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBs
ZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJh
bWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJf
dCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBGZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBm
bGFncykgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNT
eW5jKHVpbnQ2NF90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgRGVsZXRlU3luYyh1aW50NjRfdCBhcmcwKQorICAgIHZvaWQgQ2xpZW50V2FpdFN5bmMo
dWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2NF90
IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgdm9pZCBHZXRTeW5j
aSh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHZvaWQgSXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJf
dCBpZCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJh
bnNmb3JtRmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJl
Z2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVu
ZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
dWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZl
ck1vZGUpCisgICAgdm9pZCBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJv
Z3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVkYmFj
aygpCisgICAgdm9pZCBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBCaW5kQnVm
ZmVyQmFzZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIp
CisgICAgdm9pZCBCaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRl
eCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAg
dm9pZCBHZXRVbmlmb3JtSW5kaWNlcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB1
bmlmb3JtTmFtZXMpIC0+IChWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVp
bnQzMl90PiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUpIC0+IChWZWN0b3I8aW50MzJf
dD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRl
eCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0
cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRp
bmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90
IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1
aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5h
bWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
IHBhcmFtcykgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEs
IGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0
WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2
b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5
T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFy
ZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRl
eEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQg
UHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJF
WFQoKQorICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gYnVmcykKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2Rl
LCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2
b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291
bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisg
ICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90
IGRpdmlzb3IpCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTdjNDBjOTg1Y2I3ZDI3MjI4NjlhNWRmZjk2OTE5NDcwNzdhZjQ2Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZP
Uk0oQ09DT0EpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHBy
aXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVi
bGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgZmluYWw7CisKKyAgICAvLyBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiBvdmVycmlkZXMuCisgICAgQnVmZmVyIHJlY3lj
bGVCdWZmZXIoKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBmaW5hbDsKKyAgICB2
b2lkKiBkZXRhY2hDbGllbnQoKSBmaW5hbDsKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7Cit9OworCit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoYXR0cmlidXRlcywg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSk7
Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMsIHRoaXMpKQoreworfQorCitH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQoreworICAgIHJldHVybiBXVEZNb3ZlKG1f
ZGlzcGxheUJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6
cHJlc2VudChCdWZmZXIgYnVmZmVyKQoreworICAgIEFTU0VSVCghbV9kaXNwbGF5QnVmZmVyLnN1
cmZhY2UpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKK30KKwordm9p
ZCogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGV0YWNoQ2xpZW50KCkKK3sKKyAgICBy
ZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlLCBudWxscHRyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgYXV0
byBkaXNwbGF5QnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7CisgICAg
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpCisgICAgICAg
IHNlbmRSaWdodCA9IGRpc3BsYXlCdWZmZXItPmNyZWF0ZVNlbmRSaWdodCgpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSk7Cit9CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlmZmU4YzFmYzdhZmExNzJmMWJiOWM3MzQyNjc1YzVkZmU2ZTE3NmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMCwwICsxLDExODMgQEAKKy8qIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERv
IG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0
ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRp
b25zLgorI3ByYWdtYSBvbmNlCisgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOwor
ICAgIH0KKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAgfQorICAg
IHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+bW92ZUVycm9y
c1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CisgICAg
fQorICAgIHZvaWQgYXR0YWNoU2hhZGVyKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRl
cikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRl
cik7CisgICAgfQorICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVp
bnQzMl90IGluZGV4LCBTdHJpbmcmJiBuYW1lKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5i
aW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpOworICAgIH0KKyAgICB2b2lkIGJp
bmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmlu
ZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAg
IHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKTsK
KyAgICB9CisgICAgdm9pZCBiaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFy
ZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSk7
CisgICAgfQorICAgIHZvaWQgYmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9h
dCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRDb2xv
cihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRFcXVhdGlv
bih1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9u
KG1vZGUpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBt
b2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJs
ZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIH0KKyAgICB2b2lk
IGJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3Rvcik7CisgICAgfQorICAg
IHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0Is
IHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RB
bHBoYSk7CisgICAgfQorICAgIHZvaWQgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0
YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBjbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhciht
YXNrKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4s
IGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVh
ckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckRl
cHRoKGZsb2F0IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKGRl
cHRoKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwocyk7CisgICAgfQorICAgIHZvaWQgY29sb3JN
YXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVk
KSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oYWxwaGEpKTsKKyAgICB9CisgICAg
dm9pZCBjb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weVRleEltYWdlMkQo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwg
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGJvcmRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7
CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVCdWZmZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVGcmFtZWJ1
ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlUHJvZ3JhbShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBj
cmVhdGVSZW5kZXJidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVy
YnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBjcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Y3JlYXRlU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVGV4dHVyZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjdWxsRmFjZSh1aW50MzJfdCBtb2RlKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jdWxsRmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9p
ZCBkZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZGVsZXRlQnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVp
bnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVy
KGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBkZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0
ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVT
aGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKGFyZzApOworICAgIH0K
KyAgICB2b2lkIGRlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CisgICAgfQorICAgIHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxh
ZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihmbGFnKSk7CisgICAgfQorICAgIHZvaWQgZGVwdGhSYW5nZShmbG9hdCB6TmVhciwg
ZmxvYXQgekZhcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwg
ekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQz
Ml90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihhcmcwLCBh
cmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOworICAgIH0KKyAgICB2b2lkIGRpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJy
YXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAgICB9
CisgICAgdm9pZCBkcmF3RWxlbWVudHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWlu
dDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
cmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCkpOworICAgIH0KKyAgICB2b2lkIGVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOworICAgIH0KKyAgICB2b2lkIGVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZmluaXNoKCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZmluaXNoKCk7CisgICAgfQorICAgIHZvaWQgZmx1
c2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mbHVzaCgpOworICAgIH0KKyAgICB2b2lk
IGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNo
bWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1aW50MzJfdCBhcmczKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFj
aG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyk7CisgICAgfQorICAgIHZvaWQgZnJhbWVi
dWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50
MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGludDMyX3QgbGV2ZWwpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7CisgICAgfQorICAgIHZvaWQgZnJvbnRGYWNlKHVpbnQz
Ml90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyb250RmFjZShtb2RlKTsKKyAg
ICB9CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CisgICAgfQorICAgIHZvaWQg
Z2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJ
bmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVB
dHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5p
Zm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9n
cmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
LCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9pZCBnZXRBdHRyaWJMb2NhdGlvbih1aW50
MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0
aW9uKGFyZzAsIG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7
CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBnZXRTdHJpbmcodWludDMyX3QgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRT
dHJpbmcobmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFs
dWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90
IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGZs
b2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxmbG9h
dCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldElu
dGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8
c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2Vydihw
bmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZh
bHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NCh1aW50MzJfdCBwbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0Qm9vbGVh
bnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFZlY3RvcjxHQ0dMYm9vbGVhbiwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6
ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRCb29sZWFudihwbmFt
ZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNl
PGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIGdldEVycm9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFcnJv
cigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmlu
ZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFByb2dyYW1JbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJpKHVpbnQzMl90
IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoYXJnMCwg
cG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0
cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFNoYWRlckluZm9Mb2coYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+LCBpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0ZDo6YXJyYXk8R0NHTGludCwg
Mj4gcmFuZ2UgeyB9OworICAgICAgICBHQ0dMaW50IHByZWNpc2lvbiA9IHsgfTsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9u
VHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHJh
bmdlLmRhdGEoKSksIHJhbmdlLnNpemUoKSksIHByZWNpc2lvbik7CisgICAgfQorICAgIHZvaWQg
Z2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVy
U291cmNlKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0
LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdl
dFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2
YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9h
dCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRVbmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwg
dWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQz
Ml90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+
KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYocHJvZ3Jh
bSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlLmRh
dGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlv
bih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBp
bmRleCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHNpemVpcHRyIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGhpbnQodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5o
aW50KHRhcmdldCwgbW9kZSk7CisgICAgfQorICAgIHZvaWQgaXNCdWZmZXIodWludDMyX3QgYXJn
MCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNCdWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
aXNFbmFibGVkKHVpbnQzMl90IGNhcCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNFbmFibGVkKGNhcCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgaXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUHJv
Z3JhbSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1Byb2dyYW0oYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgaXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+aXNSZW5kZXJidWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNTaGFk
ZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTaGFkZXIoYXJnMCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgaXNUZXh0dXJlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9v
bGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmlzVGV4dHVyZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8
Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBsaW5lV2lkdGgoZmxvYXQgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGluZVdpZHRoKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmxpbmtQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmVpKHVpbnQz
Ml90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5waXhl
bFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoZmxv
YXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cG9seWdv
bk9mZnNldChmYWN0b3IsIHVuaXRzKTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZm
ZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0K
KyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPihpbnZlcnQpKTsKKyAgICB9CisgICAgdm9pZCBzY2lzc29yKGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9p
ZCBzaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nJiYgYXJnMSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFyZzAsIGFyZzEpOworICAgIH0KKyAgICB2b2lk
IHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwor
ICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMy
X3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9
CisgICAgdm9pZCBzdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFza1Nl
cGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CisgICAgfQorICAgIHZvaWQg
c3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7
CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMy
X3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwor
ICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBw
bmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRl
cmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmko
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlvbiwgeCk7CisgICAgfQorICAg
IHZvaWQgdW5pZm9ybTFmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24s
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgp
KSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlv
biwgaW50MzJfdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9jYXRp
b24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0xaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJf
dCB4LCBpbnQzMl90IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaShsb2Nh
dGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihs
b2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4o
di5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaShpbnQzMl90
IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24s
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSks
IHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24s
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybTRmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYm
IHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24sIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50
MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24s
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSks
IHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihpbnQzMl90IGxv
Y2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZs
b2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdXNl
UHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51c2VQcm9n
cmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52YWxpZGF0ZVByb2dyYW0oYXJnMCk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKKyAgICB9Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
MmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+
JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5k
ZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZh
bHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2YodWludDMyX3Qg
aW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+
JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5k
ZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZh
bHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliNGYodWludDMyX3Qg
aW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
UG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBib29s
IG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0
YXRpY19jYXN0PEdDR0xib29sZWFuPihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxH
Q0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB2aWV3cG9ydChpbnQzMl90IHgs
IGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2
b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3Qg
dXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzdGF0
aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzEpLCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVm
ZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYg
ZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRh
dGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpLCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVm
ZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZl
clN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVfdD4oZGF0
YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRh
dGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBpeGVsczEo
aW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0
ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4
ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJE
MSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90
IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4o
b2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1h
Z2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQz
Ml90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNp
emUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3Nl
ZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAg
ICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1h
Z2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZz
ZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUs
IGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQodWlu
dDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihv
ZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3Io
dWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIH0KKyAgICB2b2lk
IGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVZlcnRl
eEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBp
c1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVmVydGV4QXJy
YXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFy
ZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRWZXJ0ZXhBcnJheShhcmcwKTsKKyAg
ICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50
MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZz
ZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlCdWZmZXJT
dWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihy
ZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4od3JpdGVPZmZzZXQpLCBzdGF0aWNf
Y2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRCdWZmZXJTdWJE
YXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0
YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCks
IGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50
MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwg
aW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFz
aywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGl0RnJhbWVi
dWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRz
dFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dHVy
ZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBs
ZXZlbCwgbGF5ZXIpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcih1aW50
MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQs
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0YWNobWVu
dHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgaW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4mJiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSksIHgs
IHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHJlYWRCdWZmZXIodWludDMyX3Qg
c3JjKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkQnVmZmVyKHNyYyk7CisgICAgfQor
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlMkQodGFy
Z2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAg
dm9pZCB0ZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlM0QodGFyZ2V0LCBs
ZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgfQorICAg
IHZvaWQgdGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBk
ZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7
CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMy
X3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJ
bWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkp
OworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNl
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90
IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBp
eGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+
KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3Vi
SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQs
IGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1
aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0Qo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7Cisg
ICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0
LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0K
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBp
bWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29t
cHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4o
b2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21w
cmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0
LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7
CisgICAgfQorICAgIHZvaWQgZ2V0RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBT
dHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3Jh
bSwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCB1bmlmb3JtMXVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpKGxvY2F0aW9uLCB2MCk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMy
X3QgdjEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb24sIHYw
LCB2MSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50
MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWlu
dDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
NHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1
aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
M3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVp
bnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlvbiwgbWFr
ZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMy
X3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYm
IGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3Nl
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgz
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGlu
ZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyk7Cisg
ICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVy
dGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWlu
dDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmli
STR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+JiYg
dmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRl
eCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1
ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQz
Ml90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1
aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYklQ
b2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+
KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1v
ZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90
IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd1Jh
bmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdD
R0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzKElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0q
PihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZm
ZXJpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJC
dWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVm
ZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkpLCB2
YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJmdih1aW50MzJfdCBi
dWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2
YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBk
cmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQq
Pih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFy
QnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRo
LCBpbnQzMl90IHN0ZW5jaWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVy
ZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCk7CisgICAgfQorICAgIHZvaWQg
Y3JlYXRlUXVlcnkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUXVlcnkoKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRl
bGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVRdWVyeShxdWVyeSk7CisgICAgfQorICAgIHZvaWQgaXNRdWVyeSh1aW50MzJfdCBxdWVyeSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+aXNRdWVyeShxdWVyeSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmVn
aW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpOworICAgIH0KKyAgICB2b2lkIGVu
ZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kUXVl
cnkodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRRdWVyeSh0YXJnZXQs
IHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0x1aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3Jl
YXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVTYW1wbGVyKCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBk
ZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgaXNTYW1wbGVyKHVpbnQz
Ml90IHNhbXBsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2FtcGxlcihzYW1wbGVyKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAg
ICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKTsK
KyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50
MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Ft
cGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBz
YW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQg
cGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBs
ZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmYo
dWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
ZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGZsb2F0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2Ft
cGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmkodWlu
dDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxl
clBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlv
biwgdWludDMyX3QgZmxhZ3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHN5bmMgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5mZW5jZVN5bmMoY29uZGl0aW9u
LCBmbGFncyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpKTsKKyAgICB9CisgICAg
dm9pZCBpc1N5bmModWludDY0X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTeW5jKHJlaW50
ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5bmModWludDY0X3QgYXJnMCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZGVsZXRlU3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGllbnRXYWl0U3luYyh1
aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgdGltZW91dCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmNsaWVudFdhaXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRp
Y19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMdWludDY0Pih0
aW1lb3V0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCB3YWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRf
dCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT53YWl0U3luYyhyZWludGVycHJl
dF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3Rh
dGljX2Nhc3Q8R0NHTGludDY0Pih0aW1lb3V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3luY2ko
dWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3luY2ko
cmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwg
cG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdM
T2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVp
bnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUcmFuc2Zvcm1GZWVk
YmFjayhpZCk7CisgICAgfQorICAgIHZvaWQgaXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBp
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
aWQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJn
ZXQsIGlkKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90
IHByaW1pdGl2ZU1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJlZ2luVHJhbnNmb3Jt
RmVlZGJhY2socHJpbWl0aXZlTW9kZSk7CisgICAgfQorICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVl
ZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygp
OworICAgIH0KKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJv
Z3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVyTW9kZSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFt
LCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAgIHZvaWQgcGF1c2VUcmFuc2Zv
cm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBhdXNlVHJhbnNmb3JtRmVl
ZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQor
ICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwg
dWludDMyX3QgYnVmZmVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFz
ZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJSYW5n
ZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2
NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Ymlu
ZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0NHTGludHB0
cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAg
IHZvaWQgZ2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4m
JiB1bmlmb3JtTmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQzMl90PiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWludD4g
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRV
bmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90PiYmIHVuaWZvcm1JbmRp
Y2VzLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8aW50MzJf
dD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGlu
dD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgdW5pZm9y
bUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dy
YW0sIHVuaWZvcm1CbG9ja05hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJp
bmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5p
Zm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2Nr
SW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4
LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiBwYXJhbXMoc3RhdGljX2Nhc3Q8c2l6
ZV90PihwYXJhbXNTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRhKCkpLCBwYXJhbXMuc2l6ZSgpKSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVi
dWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBp
bnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgx
LCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5ibGl0RnJhbWVidWZmZXJBTkdMRShz
cmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1h
c2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwor
ICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5T0VTKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZv
cm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lk
IGlzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmlu
ZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZv
aWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShh
cmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1hcmtlckVY
VChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1h
cmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtlckVYVCgp
OworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xl
bnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90
IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQs
IHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
dWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zm
c2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRp
dmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpOworICAgIH0KKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCmluZGV4IGI3YmI2M2IyOWFkODAy
MTcyZGYyN2ExMjg5NWJiMTk5OGZhNGI2YjAuLjI0YzQzN2NhYWU3ZjhmOWE5YWZmOTI3MDNlZmNm
OWRhMDMxZTRjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvR1BV
UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0dQVVByb2Nl
c3NNYWMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlv
blBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgotI2ltcG9y
dCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8c3lzZXhpdHMuaD4KICNp
bXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNDQsOSArNDQsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB2
b2lkIEdQVVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQorI2lmIDAKICAgICAvLyBIYXZpbmcgYSB3aW5kb3cgc2VydmVyIGNv
bm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNzIHdvdWxkIHJlc3VsdCBpbiBzcGluIGxvZ3MgKDxyZGFy
Oi8vcHJvYmxlbS8xMzIzOTExOT4pLgotICAgIE9TU3RhdHVzIGVycm9yID0gU2V0QXBwbGljYXRp
b25Jc0RhZW1vbih0cnVlKTsKLSAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBlcnJvciA9PSBub0Vy
cik7CisgICAgYXV0byByZXR2YWwgPSBDR1NTZXREZW55V2luZG93U2VydmVyQ29ubmVjdGlvbnMo
dHJ1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmV0dmFsID09IGtDR0Vycm9yU3VjY2Vzcyk7Cisg
ICAgQ0dTU2h1dGRvd25TZXJ2ZXJDb25uZWN0aW9ucygpOworI2VuZGlmCiAjZW5kaWYKIAogICAg
IGxhdW5jaFNlcnZpY2VzQ2hlY2tJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgppbmRl
eCBkYjA2ZTUzNGY3ZjUxZDJlYmQwMzgyNWY1ODI0NWY4NDk2ZjhiMTc5Li5lZDEwMGIzNmVkNmY0
NmQ0YWFmNjM1NDQ3Nzg4MmFiNzkzYTExYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5p
bgpAQCAtMjA3LDYgKzIwNyw3IEBACiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXkFBUEws
KERpc3BsYXlQaXBlfE9wZW5DTGRpc2FibGVkfElPR3JhcGhpY3NfTEVSKHxfUmVnVGFnXzF8X1Jl
Z1RhZ18wfF9CdXN5XzIpfGFsaWFzLXBvbGljeXxib290LWRpc3BsYXl8ZGlzcGxheS1hbGlhc3xt
dXgtc3dpdGNoLXN0YXRlfG5kcnYtZGV2fHByaW1hcnktZGlzcGxheXxzbG90LW5hbWUpIikKICAg
ICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeQVRZLChjYml0c3xmYl8obGluZWJ5dGVzfG9mZnNl
dHxzaXplKXxpbnRyZXYpIikKICAgICAoaW9raXQtcHJvcGVydHkgIkFUWSxEZXZpY2VOYW1lIikg
OzsgTmVlZGVkIGJ5IE1ldGFsIGNvbXBpbGVycworICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEVG
SURpc3BsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVRZLEZhbWlseU5hbWUiKSA7OyBEaXR0
bwogICAgIChpb2tpdC1wcm9wZXJ0eSAiQVZDU3VwcG9ydGVkIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIkJhY2tsaWdodEhhbmRsZSIpCkBAIC0yMTcsNiArMjE4LDkgQEAKICAgICAoaW9raXQtcHJv
cGVydHkgIkNhcHNMb2NrRGVsYXkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiQ2FzZVNlbnNpdGl2
ZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJDb25maWdTdGF0ZSIpCisgICAgKGlva2l0LXByb3Bl
cnR5ICJEUExhbmVzIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkRQTGlua0JpdCIpCisgICAgKGlv
a2l0LXByb3BlcnR5ICJEUExpbmtSYXRlIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRlc2NyaXB0
aW9uIikKICAgICAoaW9raXQtcHJvcGVydHkgIkRldmVsb3BtZW50IikKICAgICAoaW9raXQtcHJv
cGVydHktcmVnZXggIyJeRGV2aWNlKCBDaGFyYWN0ZXJpc3RpY3N8RXFJRCkiKQpAQCAtMjI5LDEw
ICsyMzMsMTcgQEAKICAgICAoaW9raXQtcHJvcGVydHkgIkZhbWlseSBJRCIpCiAgICAgKGlva2l0
LXByb3BlcnR5ICJGb3JjZVN1cHBvcnRlZCIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJGb3JtYXRz
IikKKyAgICAoaW9raXQtcHJvcGVydHkgIkZyYW1lYnVmZmVyRW5hYmxlZCIpCisgICAgKGlva2l0
LXByb3BlcnR5ICJGcmFtZWJ1ZmZlclN0YXJ0ZWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BV
Q29uZmlndXJhdGlvblZhcmlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURDQ0Rpc3Bs
YXlhYmxlIikKKyAgICAoaW9raXQtcHJvcGVydHkgIkdQVURlYnVnTnVsbENsaWVudE1hc2siKQog
ICAgIChpb2tpdC1wcm9wZXJ0eSAiR3B1RGVidWdQb2xpY3kiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiR1BVUmF3Q291bnRlckJ1bmRsZU5hbWUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiR1BVUmF3
Q291bnRlclBsdWdpbkNsYXNzTmFtZSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJIRVZDU3VwcG9y
dGVkIikKICAgICAoaW9raXQtcHJvcGVydHkgIkhJRFBvaW50ZXJBY2NlbGVyYXRpb25UeXBlIikK
KyAgICAoaW9raXQtcHJvcGVydHkgIkh3Q3R4Q2FjaGVVcGRhdGUiKQogICAgIChpb2tpdC1wcm9w
ZXJ0eS1yZWdleCAjIl5JT0FjY2VsKERpc3BsYXlQaXBlQ2FwYWJpbGl0aWVzfEluZGV4fFR5cGVz
fFJldmlzaW9uKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPKENsYXNzfE1hdGNo
Q2F0ZWdvcnl8TmFtZU1hdGNoKSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXklPQXVk
aW9Db250cm9sKENoYW5uZWxJRHxJRHxTdWJUeXBlfFVzYWdlfFZhbHVlKSIpCkBAIC0yODIsNiAr
MjkzLDggQEAKICAgICAoaW9raXQtcHJvcGVydHkgIklPUGFyZW50TWF0Y2giKQogICAgIChpb2tp
dC1wcm9wZXJ0eS1yZWdleCAjIl5JT1BDSSgoQ2xhc3N8UHJpbWFyeXxQcm9wZXJ0eXwpTWF0Y2h8
RXhwcmVzcyhDYXBhYmlsaXRpZXN8TGluayhTdGF0dXN8Q2FwYWJpbGl0aWVzKSl8TVNJTW9kZXxS
ZXNvdXJjZWR8VHVubmVsbGVkKSIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJJT1BNSXNQb3dlck1h
bmFnZWQiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9QZXJzb25hbGl0eVB1Ymxpc2hlciIpCisK
ICAgICAoaW9raXQtcHJvcGVydHktcmVnZXggIyJeSU9QbGF0Zm9ybShTZXJpYWxOdW1iZXJ8VVVJ
RCkiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiSU9Qb3dlck1hbmFnZW1lbnQiKQogICAgIChpb2tp
dC1wcm9wZXJ0eSAiSU9Qcm9iZVNjb3JlIikKQEAgLTMxNyw2ICszMzAsNyBAQAogICAgIChpb2tp
dC1wcm9wZXJ0eSAiUHJvdG9jb2wgQ2hhcmFjdGVyaXN0aWNzIikKICAgICAoaW9raXQtcHJvcGVy
dHkgIlJlbW92YWJsZSIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXlJlc2V0T24oTG9j
a3xVbmxvY2spTXMiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiU1dJUF9wcm9wZXJ0aWVzIikKICAg
ICAoaW9raXQtcHJvcGVydHkgIlNhZmVFamVjdFJlcXVlc3RlZCIpCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJTYW1wbGVSYXRlcyIpCiAgICAgKGlva2l0LXByb3BlcnR5ICJTZXJpYWwgTnVtYmVyIikK
QEAgLTMzOCw2ICszNTIsNyBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiYXR0YWNoZWQtZ3B1LWNv
bnRyb2wtcGF0aCIpCiAgICAgKGlva2l0LXByb3BlcnR5LXJlZ2V4ICMiXmF1ZGlvLShjb2RlYy1p
bmZvfGRldmljZS1tdmFsdWV8ZGV2aWNlLW52YWx1ZXxzZWxlY3RvcikiKQogICAgIChpb2tpdC1w
cm9wZXJ0eSAiYXYtc2lnbmFsLXR5cGUiKQorICAgIChpb2tpdC1wcm9wZXJ0eSAiYmFja2xpZ2h0
LVBXTS1mcmVxIikKICAgICAoaW9raXQtcHJvcGVydHkgImJjZFZlcnNpb24iKQogICAgIChpb2tp
dC1wcm9wZXJ0eS1yZWdleCAjIl4oYm9hcmR8ZGV2aWNlfHJldmlzaW9ufHN1YnN5c3RlbXx2ZW5k
b3IpLWlkIikKICAgICAoaW9raXQtcHJvcGVydHkgImJvb3QtZ2FtbWEtcmVzdG9yZWQiKQpAQCAt
MzUwLDYgKzM2NSwxMSBAQAogICAgIChpb2tpdC1wcm9wZXJ0eSAiY29ubmVjdG9yLXR5cGUiKQog
ICAgIChpb2tpdC1wcm9wZXJ0eS1yZWdleCAjIl4oZGV2aWNlfHJldmlzaW9ufHN1YnN5c3RlbS12
ZW5kb3J8dG91Y2gtc2l6ZSktaWQiKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZGV2aWNlX3R5cGUi
KQorICAgIChpb2tpdC1wcm9wZXJ0eSAiZGlzcGxheS1icGMiKQorICAgIChpb2tpdC1wcm9wZXJ0
eSAiZGlzcGxheS1jb25uZWN0LWZsYWdzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXkt
bGluay1jb21wb25lbnQtYml0cyIpCisgICAgKGlva2l0LXByb3BlcnR5ICJkaXNwbGF5LXBpeGVs
LWNvbXBvbmVudC1iaXRzIikKKyAgICAoaW9raXQtcHJvcGVydHkgImRpc3BsYXktdHlwZSIpCiAg
ICAgKGlva2l0LXByb3BlcnR5ICJkcG0iKQogICAgIChpb2tpdC1wcm9wZXJ0eSAiZXJyb3JkYiIp
IDs7IE5lZWRlZCBmb3IgT3BlbkdMIG9uIG9sZGVyIGhhcmR3YXJlCiAgICAgKGlva2l0LXByb3Bl
cnR5ICJmaWxldmF1bHQtaW1hZ2UiKSA7OyBOZWVkZWQgYnkgTGF1bmNoU2VydmljZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHkuY3BwCmluZGV4IGU2YTE4ZGRhNmUwOTJmZGIxODA0NDZlNGYzYTA4M2NmNTNjMjc2
MTkuLjM3OTI4ZTFiODNkNGU1MjQ0NTNhOGQyN2NjM2I4NzkwMWIyNDlhM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
VVNFKEFVRElPX1NFU1NJT04pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5j
cHAKaW5kZXggZDliZjUyMjcyYzM3MjkxNTc1YjViMzkzMjYyZTc3MjEzYjkzMGRkNC4uOGYwMTE5
ZWRmZTFkNmU5MzI0MzAwNWIzNDQxMjViMjRlYWI5MWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVy
UHJveHkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCA2YTVjNjcyNWNhYTliZGI4NjdhYjg2YjhjNTdmMzZk
ZTJjODk2ZGNmLi5iZTdmNTIyMGJlOWI4NWY4NjhhNWY4MzdlZmVkNjZkZGY5NWYyOTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaApAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hh
cmVkQnVmZmVyOwogfQogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMZWdhY3lDRE1Qcm94eQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA0N2Y1ZDJmMjcwZmE1ZGU0ZmFkZTE1MTQ0NDIx
MTE3OTRlZDM2ZDI4Li4yYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4YjgyNWM2ZTQ1YjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckNvcHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuY3BwCmluZGV4IGE5OGNmYTRjOWY4MDIzMTkwNGY4ZWYwZWFhOTM2MjI5YWZhOTc1OTgu
LmZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5oCmluZGV4IGQ4OWI4MDNmNmFiZjQxYzhlOWVkZGU0MTQyNzY5MzI4
MjZkMWIzMzguLjA4MWViMzE4MGQwMjE2NGI1YWEzZDU0ODA2ZjcyYzdlZGMwY2IxZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5oCkBAIC0yNywxNSArMjcsMTYgQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgor
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2Rl
cjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQ
cm94eS5oCmluZGV4IDU5NjhjN2JiZDE4OWNkNDc5ZWY0YWVhYjRkNDQ5OTUzM2ZkM2Q2NWIuLmZl
NTQ0ZDU1NTE5MWU1NTZlMmQ3ZTIzMzk0NzVhMDJmYzI5ZGNmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaApA
QCAtMzksNyArMzksNiBAQAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xh
c3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IDY1NzZkYmI3YjFjYTViOTQ2NTc0ZTVkZTQ5NTJj
NjFjYjM1Mjc1YzcuLmUwOWQ4YjU0YzJhYTA4MzkyODAxYjE2YTQ5NjIxNzAzMGRjNzcxOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
LSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5pdGlhbGl6YXRpb25TZWdt
ZW50SW5mby5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKICNpbmNsdWRl
ICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4
IDZiOGJmOGI1N2NjMGM4ZDlkNTQxMWU5NjUyMWI0NWE5NGE4ZTNiMzIuLjk5Y2E2YTQxNGViNTA4
MzkwYzcyODMzYTY0NTFlNzMwMzk0MjFkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC0yNyw5ICsy
NywxMSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNF
KQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJS
ZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJj
ZUJ1ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0zOCw3ICs0MCw2IEBACiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IDM2MDMx
MGI3ZDEyMWQyODZkOGQxNjFmMTgzYWJkMGU3NDViODM1MzMuLjg0M2JiMDZmN2I1NmM2ZTNjZmJl
ZTc5YTdlNDI4MWVmZWU4ZjlhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTI4LDE0ICsyOCwxNSBAQAog
I2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2Rl
cklkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVy
OwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkubW0KaW5kZXggZjhhYmMxZjQwNWZjMTQ2OTQ3NWI0ZDkwYmFkM2Q1M2NhMGY4MDE0ZS4uNjFj
NDcwOGFlOTZkYmNhYTU2OTgwOWVlMTk5NWJlODE2YTkxZmYyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1w
b3J0ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2Rl
Y3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuaAppbmRleCA3ODhjNWYwMGMwMmY0ZjE0OGZlZWNjZDM4ZDEwNjgxOGIwZDdlOTYxLi4z
YWI0ZTRiMWNmMWMxNDEyMzBjMTNlNDU3NmM1ZWQ2ZTZlZmMyZWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUp
CiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKQEAgLTM2LDcgKzM3LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBD
b25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0Nv
Y29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ29jb2EubW0KaW5kZXggN2E2MzM2MzQ3YzAwN2U5N2I3M2I1NDM3NzQ5MTY4MzhkNjQw
MzdkYS4uMWFhNTNjYzJmYjc3YmFmOWUzMjY1MDcyMTA4MDlmZDc2Y2ZiYmYyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ29jb2EubW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Np
b24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgK
aW5kZXggZjZlZDgxMWY1MzQyZmU0ODU1NTE3NmY4OWQ1MTQ1NzU2MmM2NjU4NS4uMGJjZDU2NzNj
OTM0NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJjMjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgpAQCAtMzksMTAgKzQwLDYgQEAgT0JKQ19DTEFT
UyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uOwogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29s
OwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0gLy8g
bmFtZXNwYWNlIElQQwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMTEyLDQgKzEwOSwzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmluZGV4IGRkYmU0ZWVkZDQ0MWRmODdj
NTVhZDMzMGYwNDJjY2RjZmFkZmI5MGIuLjY1MWZmMjU0ZjkwNWMxNmE5MGNiNDgyYzk3NzNkNGFj
NzQyOTRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZE1vbml0
b3IuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDM4YWYzNTA4
MDc0NjQyOTNiOTVmZmFmMDU5ZmRlYzM2OTAxNzcyNzQuLjkzZjAzYTgyNTVmMWFlNzE3MzgzYzAw
MjkwYTI0ZjkxY2E3YzY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNb25pdG9yLmgi
CkBAIC00NCwxMCArNDUsNiBAQCBPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7CiBPQkpDX0NMQVNTIE5T
VVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKICNlbmRpZgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4u
NzI2ZGQ5OTBiYWZkNDM5NGI1YWZjMDMyYTFjZjIwZjE4NDljNDlhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RG93bmxvYWRNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIw
YWMzZTc4OWUyMjQ2YzA1YjAxNjVmMWM3MjY3OGZhNTAuLjk4MGEwNmY3ODM5ZGJkNWU5ZjlkNTA0
NTQwOWEzM2Q3N2IxYzAzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRv
d25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtE
YXRhVGFzay5oIgpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBu
YW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNDQ5YjEzZDhlMDdiMmNkMDQy
YzRiYTM2MzZhYjc5M2QzN2IxYzNmNC4uYzc3ODg4MTFmMDMyZDU4ZjhiNTI3NzM2ZTFkMjI3ODQx
MGY5MTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hh
bm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5l
bC5oCmluZGV4IDMxOTY0MTkwZDE0MWQ1NDlkYTBiYWYyZGM4YmYyOTdiNGU1ODFlODkuLjA0MzRi
Zjg4MDlhN2ViM2VjYzE4ZThmNjUwY2MwMjc4YWU2ZWI1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KQEAgLTQwLDcgKzQxLDYgQEAgY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2Rl
cjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAK
aW5kZXggNWI0ODljYzUzOGY3YzA3MTUxMDEwNmM1OGY1YzA5NGVjOWE4ZTFiOC4uNDhjODgzYmZj
MGZjN2Q1MDFjOGE0YTRlNzY4NGNjYzMzZTM4YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5o
IgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCmlu
ZGV4IDUyZWMzOTI2OTAyMThlZGU2NjhkNTVlNjM4ZDhlMTc1MDJmZDZlZTUuLjczNDI5YTAyNzkw
NmI0MTZhMzhjMGM2YjM5NDZhMGRiOWZiMjA2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CkBAIC0zNyw3ICszOCw2IEBACiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suaAppbmRleCBkMzNjYmZmMTA4OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJk
Li5kMzdkNzgwNjk4M2JiYTU0N2NhMGY5MjM1ZWI0YmY2YjczMTU2NWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ci5oPgpAQCAtNDMsNyArNDQsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3Mg
RGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAppbmRleCBkYjU3OTVkZDIxN2Y0NWFkNWY2N2Uz
MGI3OTFmOTJlMjc2YzAyOTg2Li45NjFlNDY0NTliZTc3MTc3ZTI2MDVlN2Q4NjUyYWRhODAyMDk3
YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApA
QCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAjZWxzZQog
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L1dlYlNvY2tldFRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9XZWJTb2NrZXRUYXNrQ29jb2EuaAppbmRleCBkYWM2OTM1MDdlYjNlZmNlYTZkMTA5NDgwMWJj
MDFiMzZmZTI2MzlkLi5lNjgyNmU0N2U4Mzk1OTQwMjhhZjhmNGFlZDIzOTJiNGIwNWQyZjVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRh
c2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29j
a2V0VGFza0NvY29hLmgKQEAgLTI3LDE1ICsyNywxMiBAQAogCiAjaWYgSEFWRShOU1VSTFNFU1NJ
T05fV0VCU09DS0VUKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIE5T
VVJMU2Vzc2lvbldlYlNvY2tldFRhc2s7CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsK
IGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCmluZGV4IDg1NTM0ODc0
NDA0Y2UyYmFhNDRhZTY1NjU0N2QzNzIyNTMzMmVhYjguLjkwYmM0MDliZmZiNzBhMGVlOWU3MzU4
YjM4Njc1OTdkMjlmMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKLSNpbXBvcnQgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIk5ldHdvcmtT
b2NrZXRDaGFubmVsLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5jcHAKaW5kZXggNDVmYzY2OWQ3NjZhNzYxYzVkNzczZGM5NWYwNTQxYTM4ZTM2ZjhlMy4u
YTNlNzAxNGI1ZDhlYzA5NzM4ZmZhN2Q1NjY0NTQ1MDEwZjA1MzQwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3Bw
CkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29j
a2V0VGFza1NvdXAuaCIKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRDaGFubmVsLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBlNDIxYjllMWM3MTMx
ODQzNGY2NDg3ZjVmY2I1YTZhODdiZDczOTE5Li4wODg5MjM5NTlmZTQ2MGZmMmJiYTRjOGMwODM5
OTgwNjU3YmYzNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvV2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAtMjUsMTQgKzI1LDExIEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0
ci5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGUwMGEwY2NkZmE1ODc1YzAy
OGM1MDUyMzExNDE3MjhlZTk1YjQzOTIuLmUzOGJjMWM2MGFmNmRjZjAzNjk2NWFhNzhhYWRiZDZk
OGQ0YjYyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNp
bmNsdWRlIDx1dGlsaXR5PgpAQCAtNTMsNiArNTQsNDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIgewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNl
PFQsIEV4dGVudD4+IHsKKyAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVy
ZW5jZTxULCBFeHRlbnQ+OworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFFeHRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5
UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxp
Z25vZihUKSk7CisgICAgfQorICAgIHN0YXRpYyBPcHRpb25hbDxBcnJheVJlZmVyZW5jZVR5cGU+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFFeHRlbnQpCisg
ICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKEV4dGVudCAq
IHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIEV4dGVudCk7CisgICAgfQorfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8
VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50Pj4geworICAgIHVzaW5nIEFycmF5UmVmZXJl
bmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVm
ZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCisgICAgeworICAgICAgICBlbmNvZGVyLmVuY29k
ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKSk7CisgICAgICAg
IGlmICghYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBhcnJheVJlZmVyZW5jZS5zaXplKCkgKiBz
aXplb2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8QXJyYXlS
ZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHVp
bnQ2NF90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAg
ICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemUgKiBzaXplb2YoVCks
IGFsaWdub2YoVCkpOworICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKKyAgICB9
Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25T
ZXQ8VD4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
T3B0aW9uU2V0PFQ+JiBvcHRpb25TZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FycmF5UmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzMmJiNDU3YTViODg1ZjNkNTY2ODdl
NzlmMTVjM2EyNjcxYmU2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBJUEMgeworCitpbmxpbmUgY29uc3RleHByIHNpemVfdCBhcnJheVJlZmVy
ZW5jZUR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4g
eworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgQXJyYXlS
ZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9kYXRhKGRh
dGEpCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRl
IDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0
YSgpKQorICAgICAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6ZSgpKQorICAgIHsKKyAgICB9CisKKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9CisKKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQqIGRhdGEoKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIFZlY3RvcjxUPiB2ZWN0
b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChtX2RhdGEsIG1fc2l6ZSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVCogbV9kYXRhIHsgfTsKKyAgICBzaXplX3QgbV9z
aXplIHsgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PgorY2xh
c3MgQXJyYXlSZWZlcmVuY2UgeworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlKCkgPSBkZWZh
dWx0OworCisgICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisg
ICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUs
IHNpemUgPT0gRXh0ZW50KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNh
cGFjaXR5PgorICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eT4mIHZlY3RvcikKKyAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVCh2ZWN0b3Iuc2l6ZSgpID09IEV4dGVudCk7CisgICAgfQorCisgICAgY29uc3Rl
eHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFFeHRlbnQ7IH0KKworICAgIGNvbnN0
ZXhwciBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEV4dGVudDsgfQorCisgICAgY29uc3Qg
VCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAg
VmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0
OworICAgICAgICBpZiAoIWlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9k
YXRhLCBFeHRlbnQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToK
KyAgICBjb25zdCBUKiBtX2RhdGEgeyB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorQXJyYXlSZWZlcmVuY2UoY29uc3QgV1RGOjpWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHk+JikgLT4gQXJyYXlSZWZlcmVuY2U8VD47CisKK30gLy8gbmFtZXNwYWNl
IElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGVjM2QxNGFl
OGYzZWMyNDcwNTQ3NjNjYWVlOTA5Y2MyYzg3NWY1ZDguLmJiZDdhYmNiNGNkYzYwNDM4MmIxMDY1
ZTMzMjM4NDQ5YzZhYzU5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKQEAgLTIyNywxMCArMjI3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtDdXJyZW50bHlE
aXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwogCiAgICAgdm9pZCBwb3N0Q29ubmVjdGlvbkRp
ZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNv
bXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PFNl
bmRPcHRpb24+ID0geyB9KTsgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25T
ZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOyAvLyBUaHJlYWQtc2FmZS4KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBU
OjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCisgICAgLy8gU3luYyBzZW5kZXJz
IHNob3VsZCBjaGVjayB0aGUgU2VuZFN5bmNSZXN1bHQgZm9yIHRydWUvZmFsc2UgaW4gY2FzZSB0
aGV5IG5lZWQgdG8ga25vdyBpZiB0aGUgcmVzdWx0IHdhcyByZWFsbHkgcmVjZWl2ZWQuCisgICAg
Ly8gU3luYyBzZW5kZXJzIHNob3VsZCBob2xkIG9uIHRvIHRoZSBTZW5kU3luY1Jlc3VsdCBpbiBj
YXNlIHRoZXkgcmVmZXJlbmNlIHRoZSBjb250ZW50cyBvZiB0aGUgcmVwbHkgdmlhIERhdGFSZWZl
cmVyZW5jZSAvIEFycmF5UmVmZXJlbmNlLgorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNlbmRTeW5j
UmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0
eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8v
IE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7IC8v
IE1haW4gdGhyZWFkIG9ubHkuCiAgICAgCiAgICAgLy8gVGhyZWFkLXNhZmUuCkBAIC0yNDksNyAr
MjUxLDcgQEAgcHVibGljOgogCiAgICAgLy8gTWFpbiB0aHJlYWQgb25seS4KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQg
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElk
ZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5m
aW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0p
CiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RG
TW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNP
cHRpb25zKTsKICAgICB9CkBAIC01NTEsNyArNTUzLDcgQEAgdm9pZCBtb3ZlVHVwbGUoc3RkOjp0
dXBsZTxBLi4uPiYmIGEsIHN0ZDo6dHVwbGU8Qi4uLj4mIGIpCiAgICAgVHVwbGVNb3ZlcjxzaXpl
b2YuLi4oQSksIHN0ZDo6dHVwbGU8QS4uLj4sIHN0ZDo6dHVwbGU8Qi4uLj4+Ojptb3ZlKFdURk1v
dmUoYSksIGIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNl
bmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5
bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9B
U1NFUlQoVDo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKICAgICBSRUxFQVNFX0FTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NzAsMTUgKzU3MiwxNSBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBU
OjpSZXBseSYmCiAgICAgLy8gTm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVw
bHkuCiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5j
TWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBzZW5kU3lu
Y09wdGlvbnMpOwogICAgIGlmICghcmVwbHlEZWNvZGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBEZWNvZGUgdGhlIHJlcGx5LgogICAgIE9w
dGlvbmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3VtZW50czsKICAgICAq
cmVwbHlEZWNvZGVyID4+IHJlcGx5QXJndW1lbnRzOwogICAgIGlmICghcmVwbHlBcmd1bWVudHMp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBtb3ZlVHVw
bGUoV1RGTW92ZSgqcmVwbHlBcmd1bWVudHMpLCByZXBseSk7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIHJlcGx5RGVjb2RlcjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBD
b25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9y
T3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZl
cmVuY2UuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNWZkYTdiZWQyZmU4YzQwNDliNTU4NzA3
OWZkMWUxNjM1NGY0ZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNp
bmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSBJUEMgewotCi12b2lkIERhdGFSZWZlcmVu
Y2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIuZW5jb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoKnRoaXMpOwotfQotCi1ib29sIERhdGFSZWZlcmVuY2U6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQot
ewotICAgIHJldHVybiBkZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFS
ZWZlcmVuY2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RhdGFSZWZlcmVuY2UuaAppbmRleCAzNDUwYzMxYjczZGRiNmFhNWVkY2UyYWY4MDAy
OTg4N2M3OThlMjA1Li5kYmIzZDY5MjdmMzQxYzVhYTkzZmMxMDczY2IwNzU2ZTNjYmEzN2Q1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw1NCAr
MjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERlY29k
ZXI7Ci1jbGFzcyBFbmNvZGVyOwotICAgIAotY2xhc3MgRGF0YVJlZmVyZW5jZSB7Ci1wdWJsaWM6
Ci0gICAgRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIERhdGFSZWZlcmVuY2UoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEpCi0g
ICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KLSAgICBEYXRhUmVmZXJlbmNlKGNvbnN0IFZlY3Rvcjx1aW50OF90
LCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKLSAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEo
KSkKLSAgICAgICAgLCBtX3NpemUodmVjdG9yLnNpemUoKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQotCi0gICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3QgCi0gICAgeyAKLSAgICAgICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9kYXRhOyAKLSAgICB9Ci0KLSAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBy
ZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBtX3NpemUpOwotCi0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIERh
dGFSZWZlcmVuY2UmKTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCB1aW50OF90KiBtX2RhdGEgeyBu
dWxscHRyIH07Ci0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLX07Cit1c2luZyBEYXRhUmVmZXJl
bmNlID0gQXJyYXlSZWZlcmVuY2U8dWludDhfdCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50
PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwCmluZGV4IDc4YTQ2MzhlYjczMDViZmQxOTEwODcwNjhkMzBiY2RiOGRmZTgyYWUuLjJjYjc5
YjczMWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xODYsMjAgKzE4NiwxNSBAQCBib29sIERlY29kZXI6OmRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFs
aWdubWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERlY29kZXI6OmRlY29kZVZhcmlh
YmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCitjb25zdCB1
aW50OF90KiBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplX3Qgc2l6ZSwg
c2l6ZV90IGFsaWdubWVudCkKIHsKLSAgICB1aW50NjRfdCBzaXplOwotICAgIGlmICghZGVjb2Rl
KHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKCFhbGlnbkJ1ZmZl
clBvc2l0aW9uKDEsIHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFhbGln
bkJ1ZmZlclBvc2l0aW9uKGFsaWdubWVudCwgc2l6ZSkpCisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IG1fYnVmZmVyUG9zOwogICAgIG1fYnVmZmVy
UG9zICs9IHNpemU7CiAKLSAgICBkYXRhUmVmZXJlbmNlID0gRGF0YVJlZmVyZW5jZShkYXRhLCBz
aXplKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAogYm9vbCBEZWNv
ZGVyOjpyZW1vdmVBdHRhY2htZW50KEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggYjcyZGQ4YWNlMjc3M2RiMzU1OWUzNjZkZDk1MjRm
MjM0MWU1NWUwNi4uMzQ0Y2U2ODgyZmM5MDk4NGIyZmE1N2JmOWM0OGI5NjUwZTBmZjc0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtNDAsNyArNDAsNiBAQAogCiBuYW1l
c3BhY2UgSVBDIHsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEltcG9ydGFuY2VBc3Nl
cnRpb247CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNo
b3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwpAQCAtNzgsOCAr
NzcsOSBAQCBwdWJsaWM6CiAKICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhl
ZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIAot
ICAgIC8vIFRoZSBkYXRhIGluIHRoZSBkYXRhIHJlZmVyZW5jZSBoZXJlIHdpbGwgb25seSBiZSB2
YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29kZXIgb2JqZWN0LgotICAg
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERh
dGFSZWZlcmVuY2UmKTsKKyAgICAvLyBUaGUgZGF0YSBpbiB0aGUgcmV0dXJuZWQgcG9pbnRlciBo
ZXJlIHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERl
Y29kZXIgb2JqZWN0LgorICAgIC8vIFJldHVybnMgbnVsbHB0ciBvbiBmYWlsdXJlLgorICAgIFdB
Uk5fVU5VU0VEX1JFVFVSTiBjb25zdCB1aW50OF90KiBkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5j
ZShzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRy
PgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShUJiB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggZmQ0MDkwNzc0YjJiYzJhNzYyOWI5YzAy
ZGM1NTRjNGNkYzk4ZjVjYi4uZTgzYTNlNGFmZjQyYTU3NTUwNWRjOGYwNzMxN2ExYzFhYzE5ZGVh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKKyNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0xNDEsNyArMTQyLDcg
QEAgdm9pZCBFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4g
b3JpZ2luYWwpCiAKICAgICBvcmlnaW5hbC0+c2V0U2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTo6
WWVzKTsKIAotICAgIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFSZWZlcmVuY2Uo
b3JpZ2luYWwtPmJ1ZmZlcigpLCBvcmlnaW5hbC0+YnVmZmVyU2l6ZSgpKSk7CisgICAgKnRoaXMg
PDwgRGF0YVJlZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJTaXpl
KCkpOwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gb3JpZ2luYWwtPnJl
bGVhc2VBdHRhY2htZW50cygpOwogICAgIHJlc2VydmUoYXR0YWNobWVudHMuc2l6ZSgpKTsKQEAg
LTIxNiwxMiArMjE3LDYgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGkKICAgICBtZW1jcHkoYnVm
ZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVWYXJpYWJsZUxlbmd0
aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQotewotICAgIGVu
Y29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGF0YVJlZmVyZW5jZS5zaXplKCkpKTsKLSAgICBl
bmNvZGVGaXhlZExlbmd0aERhdGEoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uu
c2l6ZSgpLCAxKTsKLX0KLQogdm9pZCBFbmNvZGVyOjphZGRBdHRhY2htZW50KEF0dGFjaG1lbnQm
JiBhdHRhY2htZW50KQogewogICAgIG1fYXR0YWNobWVudHMuYXBwZW5kKFdURk1vdmUoYXR0YWNo
bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IDBlY2Y1NDFmNzc4
NTg1MzZmMWZjZmE4MzZiNzZmMjQ4MmU0YzlhMTEuLmVhNjE5NjdiZTFlYmNiZDhiNmZiYmFhOGI4
NWFmNDE4ZThkNTBjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Vu
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAgLTM2
LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBl
bnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1l
IDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHkgOiB1aW50OF90OwpAQCAtNjIsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cmFw
Rm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCiAgICAgdm9pZCBlbmNvZGVG
aXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25t
ZW50KTsKLSAgICB2b2lkIGVuY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGNvbnN0IERhdGFS
ZWZlcmVuY2UmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8
IXN0ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZV90PFQ+Pj46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0g
bnVsbHB0cj4KICAgICB2b2lkIGVuY29kZShUJiYgdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA3ZmQxODNhNTZhZTk4YjA2NjQ1ZmY3NTE0OGFjMjk4
M2M1MmU0YWViLi40MTI5ZDRlMmI0OWQ1YzhmYzQxYTJkNjU0YWRjZDg5ZTg2YzYzN2Y2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtOTYsNyArOTcsNiBAQCBzdHJ1Y3Qg
Q29kaW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RpbmdUeXBl
PGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7CiAgICAgdXNpbmcgVHlwZSA9IERh
dGFSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgK
aW5kZXggNDZlMjFkOGQ5MzZmMmQ4YjUxNjdiMjQ5Zjg4MTExNmZmZWI3ZDRiOS4uNzc0NjFkNTU1
YjcyOTJjMjBlYmY1MTRhMzAyZDFkYzZlNzc3MDExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNTQsOSArNTQsMTAgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGJv
b2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29u
ZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBT
ZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0
aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVz
c2FnZSBpcyBub3Qgc3luYyEiKTsKIApAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBBU1NF
UlQobWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSk7CiAKQEAgLTcyLDcgKzczLDcgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+Ci0gICAgYm9v
bCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0
SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjpp
bmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsg
fSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6
UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRz
IHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3luYzxV
PihzdGQ6OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA3YTNjYjMz
ODc2MzZkY2FmY2VhY2VhZDkxYjg2MzliN2JhNzYzNmM2Li41MDBmODM5ZGZhYWU5Mjk3ZjRkYzYz
ZGM2NjMwNTg3N2IyMmRmMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIK
ICNpbmNsdWRlICJFbmNvZGVyLmgiCkBAIC00OCw3ICs0OSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVy
Q29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiBPcHRpb25hbDxTaGFyZWRCdWZm
ZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFi
bGVMZW5ndGhCeXRlQXJyYXkoZGF0YSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAppbmRleCAyZjcyODVh
YzBiNGJkNmRlMTFkZmViOWZlMzI4ZjAxYzk5OTk1MGEwLi5lOTZkZmIxZmJmODkxY2Q0YTBjNzc0
ZTg1YzkwNzg3NThhNmZlODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgog
CiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmluZ1JlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdS
ZWZlcmVuY2UuY3BwCmluZGV4IDg1MmVmNDNlMDA4NjMxYzlmYWZhODIzMGM5MTljMTdhOWQ0YTI5
YjYuLjIxNjExMzljMzAxNGYwZWFmYjNkYzQ3Yzg1ZGE0MTkwYTJiYTA2NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgog
CisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5k
ZXggOGIzNzQwZjRiMTAxYWQ5MGY1MGVkNTdjODUwYjkwMzBmY2M0MzBjMi4uNGIyMGM4NWFjNTM2
MjM2NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5QT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJOUFJlbW90
ZU9iamVjdE1hcC5oIgogI2luY2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4
IGFkNGZjZDlkOGNjZjQyZjEyZWU0ODhlMDEzNDZjNjE5YTcwMWI4ZDIuLmM3YTcwNTNjYmQyNmQy
MDQ1NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAt
MzcsMTAgKzM4LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNl
OwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGNhMGFlMjg0MTFh
ODNkZTRiZjNmZTA4YjAxMmU0MDU1NDhkOGI1NzMuLjg5ZmI4YWJhZjlhZWNlMDdjNjM0NzBkYTNk
YjgzYzg4MzI2ZGQzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMjAzLDYgKzIwMyw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfbmFtZXNw
YWNlKG5hbWVzcGFjZSwga2luZF9hbmRfdHlwZXMpOgogCiBkZWYgdHlwZXNfdGhhdF9jYW5ub3Rf
YmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVybiBmcm96ZW5zZXQoWworICAgICAgICAn
SVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAn
TWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC0yMTUsNiArMjE2LDcgQEAgZGVmIHR5
cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6
OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXInLAorICAgICAgICAn
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJywKICAgICAgICAgJ1dlYkNvcmU6
OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBs
YXllcklkZW50aWZpZXInLApAQCAtMjQzLDYgKzI0NSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5v
dF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkRpc3BsYXlMaW5rT2Jz
ZXJ2ZXJJRCcsCiAgICAgICAgICdXZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAgICAnV2ViS2l0
OjpHZW9sb2NhdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUnLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAn
V2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEJywKQEAgLTUzMCw2ICs1MzMsNyBAQCBkZWYg
Y2xhc3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAgICAnT3B0aW9u
U2V0JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnVmVjdG9yJzogeydo
ZWFkZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsn
IkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFkZXJzJzog
Wyc8dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVy
cy5oIiddfSwKKyAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2UnOiB7J2hlYWRlcnMnOiBbJyJB
cnJheVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50
Q29kZXJzLmgiJ119LAogICAgIH0KIAogICAgIG1hdGNoID0gcmUubWF0Y2goJyg/UDx0ZW1wbGF0
ZV9uYW1lPi4rPyk8KD9QPHBhcmFtZXRlcl9zdHJpbmc+LispPicsIHRlbXBsYXRlX3N0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCA2MTM0M2JkOTQxMDZiNmU3ODlm
ODNiYzI1ZGU3OWY3YTYwNDA5M2NjLi5jNzgyMzE2ZjMwNTdhM2NhZjlkM2UyMDc3YzgxMzI1NTNl
Njk3NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5j
b2Rlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggN2Jh
MjA3YWJiMGFjY2M4YTU3MGY1YzY2M2Y0NmNhYTI0YTgyNmQ5MS4uMzFmZDdkMDNmYWZlMDM5NTg3
OTUyYTYzNzhkMWE5YzhmZjJmNzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV4aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVBy
b2Nlc3MuaApAQCAtODQsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBz
ZXRBcHBsaWNhdGlvbklzRGFlbW9uKCk7CiAgICAgdm9pZCBsYXVuY2hTZXJ2aWNlc0NoZWNrSW4o
KTsKICAgICB2b2lkIHNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91Z2hwdXRRT1MpOwog
I2VuZGlmCkBAIC0xODQsNCArMTgzLDMgQEAgc3RydWN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDljMjZk
YjRlOWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIuLmRhMzczNGM4NGQ2NTRkOGQwM2Nh
NzkyNWY3YmQ3NTk5MTNiYzM0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzIyMSw0ICszMjIxLDgyIEBAIE9wdGlvbmFsPFJlZlB0
cjxXZWJDb3JlOjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+Pjo6CiAgICAgcmV0dXJuIHsgV1RGTW92ZSgqcmVzdWx0KSB9OwogfQogCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cykKK3sKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYWxwaGE7CisgICAgZW5jb2RlciA8PCBh
dHRyaWJ1dGVzLmRlcHRoOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5zdGVuY2lsOworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbnRpYWxpYXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1
dGVzLnByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlc2Vy
dmVEcmF3aW5nQnVmZmVyOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5mYWlsSWZNYWpvclBl
cmZvcm1hbmNlQ2F2ZWF0OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wb3dlclByZWZlcmVu
Y2U7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzOworICAgIGVuY29k
ZXIgPDwgYXR0cmlidXRlcy5pc1dlYkdMMjsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMubm9F
eHRlbnNpb25zOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvOwor
ICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNlOworI2lmIEVO
QUJMRShXRUJYUikKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlOworI2Vu
ZGlmCit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0cmlidXRlczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYWxwaGEpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0
cmlidXRlcy5kZXB0aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnN0ZW5jaWwpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbnRpYWxpYXMpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0
cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZm
ZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXR0cmlidXRlcy5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0KSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucG93
ZXJQcmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5pc1dlYkdM
MikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9ucykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0
cmlidXRlcy5pbml0aWFsUG93ZXJQcmVmZXJlbmNlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyNpZiBFTkFCTEUoV0VCWFIpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLnhyQ29tcGF0aWJsZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYK
KyAgICByZXR1cm4gYXR0cmlidXRlczsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiBhY3RpdmVJbmZv
KQoreworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5uYW1lOworICAgIGVuY29kZXIgPDwgYWN0
aXZlSW5mby50eXBlOworICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5zaXplOworfQorCitPcHRp
b25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZv
IGFjdGl2ZUluZm87CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLm5hbWUpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0
aXZlSW5mby50eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGFjdGl2ZUluZm8uc2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIGFjdGl2ZUluZm87Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggNGE5MzIxNTkxMzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVkNi4uMWRhZTk2OTVmMzNj
MDlkY2Q3YzU4MDM2MDhlMmQ2YWMxNmU5ZmM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTcxLDYgKzcxLDEzIEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnNHdGsuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzVHlwZXNHTC5oPgor
I2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFj
aFNlbmRSaWdodDsKQEAgLTIwMyw2ICsyMTAsMTAgQEAgc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YTsKIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50PFN0cmluZywgVmVjdG9yPFN0cmlu
Zz4+OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
K3N0cnVjdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM7CisjZW5kaWYKKwogbmFtZXNwYWNl
IERPTUNhY2hlRW5naW5lIHsKIHN0cnVjdCBDYWNoZUluZm87CiBzdHJ1Y3QgUmVjb3JkOwpAQCAt
ODczLDYgKzg4NCwxOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IHsKIH07CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMDQx
LDQgKzEwNjUsMTYgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RN
SW5zdGFuY2U6OkhEQ1BTdGF0dXM+IHsKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZSwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6
RGVmYXVsdCwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6
TG93UG93ZXIsCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6
OkhpZ2hQZXJmb3JtYW5jZQorICAgID47Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAppbmRleCBjZjEzMWE5MjFlMDg2MzY1ZGJmNzdmYTk4ZTQxYzFjNzRhM2U3ZTI1Li5hZGQ5
NDliYTUwOGQ4ZTgxNDA4N2ZlZGU3YjA0OGEzZGVjNmNmODVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTU4LDYgKzE1
OCw5IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckNhbnZhc0luR1BV
UHJvY2VzczsKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzczsKICAg
ICBlbmNvZGVyIDw8IHNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzczsKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzczsKKyNlbmRp
ZgogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5RGVjb2RlcjsKICAgICBlbmNvZGVyIDw8
IHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcjsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CkBAIC01MTAsNiArNTEzLDEwIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzKSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNz
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGQ5MWU0NjAzOGYzMDliNTEzMGJmZGU1OGRmZjRhOWYx
ODE5NTFkZmQuLmMyMDYxMjMxMTQzNWJmNGY5MmNmMDZmZTVlMTEyMDVhNGI1MTEyYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAg
LTIyOSw2ICsyMjksOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAg
Ym9vbCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wg
c2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFBs
YXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJv
b2wgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAgICAg
Ym9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVu
YWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCA5
YmQ4YTgxNzU0OWY1OGZlMzgzZDcyNWRhNjYzZjNiYzU0Y2EwZDc0Li43N2U5YjRkNWNjNzUyZmJj
ZGI2YjY1ZjlhZGMyNjAxOTU2Y2ExNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9B
cmd1bWVudENvZGVyc0NGLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIK
ICNpbmNsdWRlICJFbmNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9z
b3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
c291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCAxZDg0ZTJmZTI2OGYzNDYw
ZWIyOTc1YzQyYmE5NWQxNGYxZDIzNWNmLi5mYTI2OGQ1ODRhMGZjOGRmODdhMjFmYTQ1NjA3N2I4
YzVkNDJiODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVB
cmd1bWVudENvZGVyc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBD
ZXJ0aWZpY2F0ZUkKICAgICAvLyBFbmNvZGUgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCBjZXJ0aWZp
Y2F0ZS4KICAgICBmb3IgKHNpemVfdCBpID0gY2VydGlmaWNhdGVzRGF0YUxpc3Quc2l6ZSgpOyBp
ID4gMDsgLS1pKSB7CiAgICAgICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlID0gY2VydGlmaWNh
dGVzRGF0YUxpc3RbaSAtIDFdLmdldCgpOwotICAgICAgICBlbmNvZGVyLmVuY29kZVZhcmlhYmxl
TGVuZ3RoQnl0ZUFycmF5KElQQzo6RGF0YVJlZmVyZW5jZShjZXJ0aWZpY2F0ZS0+ZGF0YSwgY2Vy
dGlmaWNhdGUtPmxlbikpOworICAgICAgICBlbmNvZGVyIDw8IElQQzo6RGF0YVJlZmVyZW5jZShj
ZXJ0aWZpY2F0ZS0+ZGF0YSwgY2VydGlmaWNhdGUtPmxlbik7CiAgICAgfQogCiAgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY2VydGlmaWNhdGVJbmZvLnRsc0Vycm9ycygpKTsK
QEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENlcnRpZmljYXRlSW5mbyYgYwogICAgIEdSZWZQdHI8
R1Rsc0NlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZTsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBp
IDwgY2hhaW5MZW5ndGg7IGkrKykgewogICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2VydGlm
aWNhdGVEYXRhUmVmZXJlbmNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVmFyaWFibGVM
ZW5ndGhCeXRlQXJyYXkoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlKSkKKyAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2UpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0YSA9IGdfYnl0
ZV9hcnJheV9zaXplZF9uZXcoY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlLnNpemUoKSk7CkBAIC0y
NzcsNCArMjc3LDMgQEAgT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAg
QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3UKICNlbmRpZgogCiB9Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IDA5MTdmMDFiZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1YTNmMmVmODYuLjUw
Y2RlMTJhZmEzYWE3Zjc4YzI3OWVjOGZiODE5NzQ0YjZmYjFlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
MjYsNiArMjYsNyBAQCBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBH
UFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiBHUFVQcm9jZXNzL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKQEAgLTEzNyw3
ICsxMzgsNiBAQCBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIEBuby11bmlmeQogUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9BdHRhY2htZW50
LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKLVBs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9EZWNv
ZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8tdW5pZnkKIFBs
YXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwIEBuby11bmlmeQpAQCAtNjkzLDMgKzY5Myw1IEBA
IFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCiBXZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcAorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZl
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA0ZWE4Yjc4MWQyMGE4MWEwOGU0NGI0NGRi
YTBiNThmMjFiZDZmOTczLi4xNzZmYzlhMTc1MDFiYzU5Zjk2Njk5OTIzYWZjYmFhOTNlOGQwMTdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01Niw2ICs1Niw3IEBAIE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCiAKIEdQVVByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9Y
UENTZXJ2aWNlL0dQVVNlcnZpY2VFbnRyeVBvaW50Lm1tCitHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCiBHUFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNz
SU9TLm1tCiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eS5jcHAKQEAgLTYzLDYgKzY0LDggQEAgR1BV
UHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KIEdQVVBy
b2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAogR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KIAorCisKIFBsYXRmb3JtL2NmL01v
ZHVsZUNGLmNwcAogCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwCkBAIC01NzUsNiArNTc4LDggQEAgV2ViUHJvY2Vzcy9F
bnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1t
CiAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKK1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlci5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2Eu
bW0KQEAgLTY4Nyw2ICs2OTIsNyBAQCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1lc3NhZ2VSZWNlaXZlci5jcHAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VS
ZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
Y29uTG9hZGluZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25M
b2FkaW5nQ2xpZW50LmgKaW5kZXggMmZlMzg2MjU5NDYzYmZiMzYyM2ViYmRiNGZlZjVmODM5MzZi
MGQzZC4uNzM3YjYyNTgxOTg2NmEwZWNiNTk5YTIxMzBiMzI5MTNlYWYzOTZkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKQEAg
LTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5k
ZXggNGYzOThiNTMwZjYwODU3NWM5NjdiODNjNzRmYTJmNDMyOGY2Y2UzYi4uOGNhOTdlNmU1OTdi
ZDcxMTBhMGQ3MzhlMGM0YTdjODU2MDNhOGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgPSAwOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0g
MV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9
KTsKKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFN0YXJ0UHJvY2Vz
c1Rocm90dGxlckFjdGl2aXR5IDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9
LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vz
c1Rocm90dGxlckFjdGl2aXR5OjpZZXMpOwpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgYm9vbCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRl
bnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNl
dDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5
bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHks
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9z
LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0
aW9ucyk7CiAgICAgfQpAQCAtMTYzLDEyICsxNjQsMTIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNl
dDwKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVT4gCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PElQQzo6U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK0F1eGlsaWFyeVByb2Nlc3NQcm94eTo6U2VuZFN5
bmNSZXN1bHQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlw
ZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0
aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQog
ewogICAgIENPTVBJTEVfQVNTRVJUKFU6OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CiAK
ICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgVHJhY2VTY29wZSBzY29wZShTeW5jTWVzc2FnZVN0YXJ0LCBTeW5j
TWVzc2FnZUVuZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb24uaAppbmRleCA4MjNjMjAyYTg1NmEwMTM2ZGQ5ZWE3NTlmMGVjZGViYTQ3
ZjRmMzYyLi5iNTc3Y2JkZjhlMDc4ZjRmYjRmODczNGQ3YmZkNjA4ZDIwMzg4MDYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJh
bWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCkBA
IC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN1YkZyYW1lU09BdXRob3Jp
emF0aW9uU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBOYXZpZ2F0aW9uU09BdXRob3JpemF0aW9uU2Vz
c2lvbiwgcHVibGljIEZyYW1lTG9hZFN0YXRlOjpPYnNlcnZlciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRleCBm
Zjk4Yjg0ZmE4OWRiZWZkZDY0NjY2YmJiYTQyZmM5MGNlYzM1NzdmLi4xMjhhMzk3N2U2M2VlNGY0
ZWYxZjIwZWFhZWM4NmQwOGVjYmY1OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0zNSwxMCArMzYsNiBAQAogT0JKQ19DTEFTUyBX
S0N1c3RvbVByb3RvY29sTG9hZGVyOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCBjNGM3MTg3NGExMGRhOWI1NDFmZWUyODIwODA4YzFlNTBkM2ZhOTJiLi45ZGIz
YTUwOWI5MTRjMDkzY2FmMTY5YTA1ZDY1YjU3ZWQwYzgwMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNp
bmNsdWRlICJQREZQbHVnaW5JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUuaCIKQEAgLTgwLDEwICs4MSw2IEBAIGNsYXNzIE9wZW5QYW5lbFBhcmFtZXRl
cnM7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIH0KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBE
YXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNs
YXNzIEN1cnNvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRl
eCAyNGI2MzNlNDg0ZDJhMzViYTc0ZDQ1ZjEyZWRlMzRhMGY3OGNhMGE2Li4yNDhlNTNhMDgzZDE5
YTBlZjRkODNjMjNiOGNjZTAwMzQ1ZGFhYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIkFQ
SVVzZXJTdHlsZVNoZWV0LmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCAxMjlhMzQwZjA4
OTY0ZDBmZmEyM2EzNzEwMWEwOWE4NTZkM2NjY2IyLi5hNGQ4ZDdjZDgwNGU2NTYwZGFiZmRlNjEx
NGZmMDYyMTFiYWQ0N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNv
bnRlbnRXb3JsZFNoYXJlZC5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtNDgsMTAg
KzQ5LDYgQEAgY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogfQogCi1u
YW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1ZjhmODExMWNlN2Q0NmQ0Yjk5NTBmZmRmNDFkMzg5
NjMxOGQ3MGY0Li5kMTRjZmYxMzY4YmZiMTcwYTU1MDA4Njk1ZWMwMjM4ZmY2Zjc5OWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU4LDcgKzU4LDYgQEAK
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5o
IgotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5Lmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
UHJveHkuaCIKQEAgLTc5NDEsNiArNzk0MCwxMCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5j
ZXMoKS51c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFt
ZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQ
cm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUGxh
eU1lZGlhSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFF
bmFibGVkKCk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVy
V2ViR0xJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JXZWJHTEVu
YWJsZWQoKTsKKyNlbmRpZgorCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVy
ID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJMRShWUDkpICYm
IFBMQVRGT1JNKENPQ09BKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVy
ID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpICYmICghV2ViQ29yZTo6c3lzdGVt
SGFzQmF0dGVyeSgpIHx8IHByZWZlcmVuY2VzKCkudnA5U1dEZWNvZGVyRW5hYmxlZE9uQmF0dGVy
eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjMyZWQzN2Jk
MWJmOTMwYWFmOGY5OTg0MzZkNjMwNTQyZWE5MzA4NS4uOGE3ZTk0NmQ0Nzk3ZmVkMGMzNDZkZGYy
MWM0Y2YzNTJhN2UyZjk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxk
RnJhbWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUg
IkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlckFjdGlv
bi5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMjA0LDcgKzIwNSw2IEBAIGVudW0g
Y2xhc3MgSW5zcGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJl
ZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKaW5kZXggZjQyNDVjZTY1ZTlkMmQ1NjViM2YxMjVm
MzQ1N2EyNTZmYjM5YzlkNC4uZDIzOGMyYTFhNjA4ZGM1YTQ2MzJlNmExOTk3N2RiNjFiYWI2MTMz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApA
QCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwot
fQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggZDQ0MmI2MmI1MjI1
ODdmOTBmYTY4OWQ1NmIyMDYyNzZkZWI0NDgyYi4uODI1Y2QwMjY4OGEyNjgyMTk0MWZmN2E0MThm
NGRmNWE5NzViYTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaApAQCAtMzgsMTAgKzM4LDYgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87
CiB9CiAKLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA4MDM3MDQwNGU0OWE3OGQ4YWJlNzMyMmE3OGVjOTJmYzFjMGJhMGEyLi4yZGUzYjNhNDUx
YzdlMWMyOGZlMWM5YzM3NDA2MWU2ZmYyMWM2YjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcwMSw3ICs3MDEsNiBAQAogCQkyRDky
QTc3QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRF
IC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0MyMTJCNkE3MTAwRjQ5M0ZE
IC8qIEF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFRTk2NkExMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwICovOyB9
OwogCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkRBMjEwRjQzN0QxMDA1
OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi87IH07Ci0JCTJEOTJBNzdFMjEyQjZBNzEwMEY0OTNG
RCAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQzc1MzdEMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNw
cCAqLzsgfTsKIAkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEOUQxMEY0MzdE
MTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MDIxMkI2QTcxMDBGNDkz
RkQgLyogRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzAzMkQ5RjEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5jcHAgKi87IH07CiAJ
CTJEOTJBNzgxMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzRUVEMEMxNjFBNTM1
MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgKi87IH07CkBAIC0xMzA3LDYgKzEz
MDYsNyBAQAogCQk3QUZCRDM2MzIxRTUwRjM5MDA1REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggKi87IH07CiAJCTdBRkJEMzY3MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQzNkYyMUU1NDZGODAwNURCQUNC
IC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxz
LmggKi87IH07CisJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxREIyNjUy
NTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi87IH07CiAJCTdDMDY1RjJDMUM4
Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsgfTsK
IAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5IC8q
IEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87IH07
CkBAIC0yNzI0LDcgKzI3MjQsNiBAQAogCQkxQUM1RkZDMTE3NEJGRDFCMDAwMTQ4M0QgLyogUGx1
Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUxvYWRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFDNzUzN0QxODNCRTUwRjAwNzJDQjE1IC8q
IERhdGFSZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGF0YVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzc1MzdF
MTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERhdGFSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzVBMUMxQjMzNjk1RTAwNTY3NDVCIC8q
IEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQzOTEsNiArNDM5MCwxNyBAQAogCQk3QUZCRDM2NTIxRTUxQkFCMDA1
REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
OyBwYXRoID0gQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8q
IFBlcnNpc3RlbmN5VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2RTIxRTU0NkUzMDA1REJBQ0IgLyog
UGVyc2lzdGVuY3lVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IxREIyNjUyNTY2OENFMDAwMEUy
NkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFycmF5UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNjRDMEI2
MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NjI1NEFG
REVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY4MjU0QUZF
QTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZEMjU1MDEw
OEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVE
OTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25z
R2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2NjgyNTc2
ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3Jt
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQbHVnaW5J
bmZvcm1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjgzLDExICs2
NjkzLDExIEBACiAJCQkJMUFFRkQyNzgxMUQxNkM4MTAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXIu
aCAqLywKIAkJCQkxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2RlcnMuY3Bw
ICovLAogCQkJCTFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oICov
LAorCQkJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovLAog
CQkJCUJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLywKIAkJCQlC
Q0VFOTY2QjExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oICovLAogCQkJCUJDMDMyREEy
MTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAqLywKIAkJCQlCQzAzMkRBMzEwRjQz
N0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5oICovLAotCQkJCTFBQzc1MzdEMTgzQkU1MEYwMDcy
Q0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNC
MTUgLyogRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAv
KiBEZWNvZGVyLmNwcCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rl
ci5oICovLApAQCAtODM1OSwxMSArODM2OSwxNiBAQAogCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDRE
MjkzMSAvKiBjb2NvYSAqLywKIAkJCQlGNDA5NENCQTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuY3BwICovLAogCQkJCUY0MDk0Q0I5MjU1MzA0N0UwMDNENzNFMyAv
KiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oICovLAorCQkJCTdCNjRDMEI2MjU0QzVDMjUwMDA2
QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdBN0YzOTI0
MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJNzI3
QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4MjQwNzg4RjAwMDREMjkzMSAv
KiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAogCQkJCTcyMjc4MDBC
MjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywK
KwkJCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAgKi8sCisJCQkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaCAqLywKKwkJCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QkU3MjY1
NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9u
c0dlbmVyYXRlZC5jcHAgKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5
MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCkBAIC04MzgxLDYg
KzgzOTYsMTEgQEAKIAkJCQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuY3BwICovLAogCQkJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNw
bGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAv
KiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCisJCQkJN0I5MDQxNjkyNTRBRkVBNzAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLywKKwkJCQk3QjkwNDE2QTI1
NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLywKKwkJCQk3Qjkw
NDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4gKi8sCisJCQkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuY3BwICovLAorCQkJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oICovLAogCQkJCTU1QUQwOTQy
MjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEEy
MjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLywKIAkJCQk1
NTA2NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICovLApA
QCAtMTEyMDgsNiArMTEyMjgsNyBAQAogCQkJCTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBB
cmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0
OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzVDNDRBMjFB
QTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUFBRkE2MzRGMjM0RjdDNjQwMEZGQTg2NCAvKiBBc3luY1JldmFsaWRh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0
dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTMyNzgsNyArMTMyOTksNiBAQAogCQkJCTJE
OTJBNzg1MjEyQjZBQjEwMEY0OTNGRCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJv
eEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1
MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJl
ZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQg
LyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OURBQTM4QzI0Q0JBMUE4MDA3OTNE
NzUgLyogRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDBD
NTZGRTIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZjkyZGE2YTQ3ZjdlMjRmMzgzOTlhYTM2
OThhMjEyOTBkMzYxZDRhNi4uYzlkYzY4MmI4NzU0OWI4MjUwZGIyMmIyYTFjZTIxNTU1MDAwY2Vj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRl
eCAyYzBkZjViOWY1NDk2ODQ3ZWQ2NjkxMGJmMmYzOWIyY2RjNjBjYTAyLi41YmU4Yjk5NzUyMGM0
YWQ3ZjFiNDQwN2FlNzIwNGM4NGE5OTg4NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zNSwxMCArMzUsNiBAQAog
I2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19Ci0KIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0
YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUyMTJjNjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGEwNmZiMDA3NmFjZDNmZDMyYjNh
NGI2YjA5ZDY4ZDAyN2JiNTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAt
MCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uo
YXR0cnMpCit7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1h
cCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCku
bWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAq
dGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KSwgMCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KCkKK3sKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2Fn
ZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAu
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpLCAwKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwbGF0Zm9y
bVN3YXBDaGFpbigpLnJlY3ljbGVCdWZmZXIoKTsKKyNlbmRpZgorfQorCitJUEM6OkNvbm5lY3Rp
b24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpCit7CisgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1
cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJl
Rm9yRGlzcGxheSgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRSaWdodCBk
aXNwbGF5QnVmZmVyU2VuZFJpZ2h0OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRS
aWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIGRp
c3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNw
bGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgaWYgKGRpc3Bs
YXlCdWZmZXIpIHsKKyAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOworICAg
ICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CisgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRp
c3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOworICAgIH0KKyNlbHNlCisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisjZW5kaWYKKyAgICBtYXJr
TGF5ZXJDb21wb3NpdGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChleHRlbnNpb24pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFu
Z2VkKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90
aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRD
aGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNh
dXNlIGl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgdGhlIHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM0OQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVz
dGVkRXh0ZW5zaW9ucykKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAgIC8v
IEluaXRpYWxpemF0aW9uIHRpbWVkIG91dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93
LgorICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5pdGlh
bGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2Rp
ZEluaXRpYWxpemUgPSB0cnVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Ondhc0xvc3QoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1f
Y2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQoKQoreworICAgIGZvciAo
YXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+
ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAo
bV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5k
RGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MsIElQQzo6
V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91dCwgc28gcmVwb3J0IGluaXRpYWxpemVkIHdp
dGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2UgdGhlIGNvbnRleHQuCisgICAgd2FzQ3JlYXRl
ZCgiIiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRleHQgYXMgbG9z
dCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwgc3RhY2suCit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkNjljYWY5ZGMwM2M1MjRiMTAwYTliNmI3
NmNmMGFkNzk5YTBkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEs
NDEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2Vi
IHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBpbnRlcmZh
Y2UuIFRoZSBpbXBsZW1lbnRhdGlvbgorLy8gY29udmVydHMgdGhlIGludGVyZmFjZSB0byBhIHNl
cXVlbmNlIG9mIElQQyBtZXNzYWdlcyBhbmQgc2VuZHMgdGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vzcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlv
biBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKKyAg
ICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5PgorICAgICwgcHVibGljIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpIGZpbmFsOworCisg
ICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5h
bDsKKyAgICB1c2luZyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
aXNFbmFibGVkOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbikgZmluYWw7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBm
aW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lk
IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmlu
YWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9JbWFnZURhdGEoKSBmaW5hbDsKKworICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVk
IGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmds
IHNjcmlwdC4KKyAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAg
ICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29s
IG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgYWN0aXZl
VGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5hbDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsK
KyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9p
ZCBiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEp
IGZpbmFsOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9y
KEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xj
bGFtcGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2Rl
KSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdC
LCBHQ0dMZW51bSBtb2RlQWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVt
IHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2Vw
YXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhh
LCBHQ0dMZW51bSBkc3RBbHBoYSkgZmluYWw7CisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZp
ZWxkIG1hc2spIGZpbmFsOworICAgIHZvaWQgY2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NH
TGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsK
KyAgICB2b2lkIGNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkgZmluYWw7CisgICAgdm9pZCBj
bGVhclN0ZW5jaWwoR0NHTGludCBzKSBmaW5hbDsKKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9v
bGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVh
biBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmlu
YWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVBy
b2dyYW0oKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigp
IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzAp
IGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsOworICAg
IHZvaWQgY3VsbEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVCdWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFt
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZm
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1
bmMpIGZpbmFsOworICAgIHZvaWQgZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOwor
ICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZp
bmFsOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZv
cm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBm
aW5hbDsKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkg
ZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCBlbmFibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZp
bmlzaCgpIGZpbmFsOworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NH
TGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsOwor
ICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NH
TGludCBsZXZlbCkgZmluYWw7CisgICAgdm9pZCBmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkgZmlu
YWw7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAg
IGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
aW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9y
bShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBh
cmcyKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAg
U3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0
dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAg
dm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUp
IGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFs
OworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBp
bmRleCkgZmluYWw7CisgICAgR0NHTGludCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xl
bnVtIGdldEVycm9yKCkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdl
dFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7Cisg
ICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBH
Q0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGlu
dCogcHJlY2lzaW9uKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZv
aWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3Jt
aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxH
Q0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVl
KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgR0NHTHNpemVpcHRyIGdldFZl
cnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAg
IEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNFbmFibGVkKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgR0NHTGJvb2xl
YW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xi
b29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xi
b29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
R0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBH
Q0dMYm9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2
b2lkIGxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3Jh
bShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgcG9seWdvbk9mZnNl
dChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpIGZpbmFsOworICAgIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2Ft
cGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsK
KyAgICB2b2lkIHNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1H
TE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5j
KEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2
b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NH
TGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0NH
THVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVt
IGZhY2UsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVt
IGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCBz
dGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6
ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAg
IHZvaWQgdGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWko
R0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQg
eSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAg
dm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2
YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dCwgMT4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVl
cykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFs
dWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIo
R0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4g
bm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lk
IGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZp
bmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2
b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFs
OworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0
ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZp
c29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0
ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlz
VmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRW
ZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weUJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdD
R0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRy
KSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3Jj
WDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQg
ZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIp
IGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRz
KSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9p
ZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
ZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkgZmluYWw7CisgICAgdm9pZCB0
ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50
IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OworICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBm
aW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0x1aW50IHYwKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlv
biwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWko
R0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2Mikg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
LCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xp
bnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWlu
dCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
Ykk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVz
KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUs
IEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJp
dihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1
ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVz
KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9y
bUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3Jt
R0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NH
TGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5
T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpIGZpbmFsOworICAgIHZvaWQgZGVs
ZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIEdDR0xib29s
ZWFuIGlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQg
YmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5h
bDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBh
cmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZs
b2F0IHBhcmFtKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxh
dGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGlu
dCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9u
LCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dM
c3luYyBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmlu
YWw7CisgICAgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZp
ZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMo
R0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmlu
YWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBp
ZCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdM
T2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51
bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGVu
ZFRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZh
cnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4
LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJh
Y2soKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7Cisg
ICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQ
bGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2Uo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dM
dWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4g
Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8
R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdD
R0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxv
Y2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CisgICAgR0NHTGludCBn
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZm
ZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dM
aW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBH
Q0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsK
KyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5
T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZl
cnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgU3RyaW5nIGdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFs
OworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGRy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFs
OworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCBkaXZpc29yKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgcmVhZFBpeGVs
c1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSog
cm93cywgR0NHTHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVl
cnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFs
Zm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0
ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFt
KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFBy
b2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBy
b2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFu
aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8v
IE5PTElOVAorICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIHZhbCkgZmluYWw7CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRu
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBm
aW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQq
IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMdWludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlP
YmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsK
KyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgc2NyaXB0LgorCitwcm90ZWN0ZWQ6CisgICAgLy8gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6
ZWQoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4K
KyAgICB2b2lkIHdhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5n
JiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3
YXNDaGFuZ2VkKCk7CisKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGJvb2wgbV9kaWRJbml0
aWFsaXplIHsgZmFsc2UgfTsKKyAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6Omdl
bmVyYXRlKCkgfTsKK307CisKKy8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2Vi
S2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNj
cmlwdC4KK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7
CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWVfdjxHQ0dMc2hvcnQsIGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lX3Y8R0NHTHVzaG9ydCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTGludCwgaW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxH
Q0dMc2l6ZWksIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVp
bnQsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwg
ZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWlu
dDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+
KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lX3Y8UGxhdGZvcm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xjaGFyKSA9PSBzaXplb2YodWludDhfdCkpOworc3RhdGlj
X2Fzc2VydChzaXplb2YoR0NHTGludDY0KSA9PSBzaXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fz
c2VydChzaXplb2YoR0NHTHVpbnQ2NCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisvLyBHQ0dMc3lu
YyBhbmQgR0NHTCpwdHIgdHlwZXMgYXJlIHBvaW50ZXJzLiBPbiBzb21lIHBsYXRmb3JtcywgdGhl
eSBhcmUgMzItYml0LgorLy8gQ3VycmVudGx5IHdlIGhhcmQtY29kZSBpdCBieSB1c2luZyA8PSwg
YW5kIGFzc3VtZSB0aGF0IHdlIGRvIG5vdCB0cmFuc2ZlciBhcnJheXMgb2YgdGhlIHR5cGVzLgor
c3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludHB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7Citz
dGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMc2l6ZWlwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOwor
c3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHZvaWRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOwor
c3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMpIDw9IHNpemVvZih1aW50NjRfdCkgJiYgc2l6
ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRyX3QpKTsKKy8vIEVuZCBvZiBsaXN0IHVzZWQg
YnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJiMmJjMTAxMGVmOGVjZDBhZjU3NzdhYmQ0ZmEw
OGEzYzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAg
KzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRl
ZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9u
cykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2FzQ2hhbmdlZCgpOworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNGE0NDMxNTYyMTFjYzcxODUx
MzczMzhjYWNjN2NlNTAzNTc5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmls
ZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvciksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKQoreworICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Q6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVyZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0
Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Qmlu
ZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKEdD
R0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcx
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0
YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwg
R0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJl
ZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24oR0NH
TGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBh
cmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZSht
b2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdDR0xlbnVtIHNm
YWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBH
Q0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0
UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0
ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVk
LCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQ29sb3Io
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dM
Y2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dM
aW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNs
ZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQs
IEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNr
KHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGlj
X2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2Jq
ZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sK
KyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9n
cmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdM
T2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUoKQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZShHQ0dM
ZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZl
cihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKEdDR0xlbnVt
IGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRl
cHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFn
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1h
c2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZShH
Q0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9i
amVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlKEdDR0xl
bnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdD
R0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMo
bW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxl
bWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGlu
ZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2goKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3Jt
R0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJi
dWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
b250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1p
cG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRB
Y3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0
aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHBy
b2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3Rp
dmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworYm9vbCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZh
bHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJn
MCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9j
YXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJp
bmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUp
Cit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZsb2F0dihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2
YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9h
dHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1
ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFs
dWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdl
cnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1
ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9
CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQo
R0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NChw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0OjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dD
R0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAgICBpbnQ2NF90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJl
dHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
b29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQorewor
ICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJv
b2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5
KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGJv
b2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2co
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9M
b2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRl
cmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyhQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVy
SW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFk
ZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNo
YWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJh
bmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlw
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBseSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkgeworICAgICAgICBt
ZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXpl
b2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lzaW9uKQorICAgICAgICAgICAgKnByZWNp
c2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7
CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAg
IGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVl
LmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7
CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1
ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5i
dWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6
OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJl
cGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2
YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZVJlcGx5Owor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6UmVwbHko
dmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBp
ZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0
YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xp
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQorewor
ICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zm
c2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
QnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVy
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKEdD
R0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkKGNhcCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlu
a1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFy
YW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dM
ZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJi
dWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdl
KEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRp
Y19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3NvcihHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRo
LCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1
bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUo
R0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2sp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxG
dW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5j
aWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1h
c2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2Us
IG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVt
IHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dM
ZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6
cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRp
b24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0x
aShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwg
di5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9u
LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxv
YXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50
MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdD
R0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50
IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90
Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJh
bnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDRmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1
ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNl
UHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFm
KEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5
LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVl
cy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRm
KEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBH
Q0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+
IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NH
TGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6
ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlw
ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhl
aWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
emVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEo
dGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHko
ZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhf
dCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRu
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4
ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMSh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQx
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
aW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwg
Y291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlz
b3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRl
eEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
VmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVW
ZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJh
eShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4
QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhB
cnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29w
eUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQs
IEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVp
cHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCks
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJT
dWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2
b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5
OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5
KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4
X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0
RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwg
R0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RY
MSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVm
ZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZ
MSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0
ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJn
ZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
bnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50
cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0
ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMu
ZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9y
YWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0
b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDAodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihw
aXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRU
ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZz
ZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBy
ZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1h
Z2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdl
M0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNl
dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xpbnQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVp
bnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWko
bG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWlu
dCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2
KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJh
bnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2
KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJp
eDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJv
b2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5
LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpdihpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3Qq
Pih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWlu
dCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwg
dmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKEdD
R0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJp
ZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3Ry
aWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5k
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVt
ZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZm
ZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5k
YXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGlu
dCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVl
cnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dM
Ym9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xP
YmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnko
R0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dD
R0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWkoUGxh
dGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxl
cigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1w
bGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxl
clBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNh
bXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc3luYyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0Zmll
bGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9u
LCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFy
ZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJp
dGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7CisgICAgdWludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQp
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGlu
dDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0
cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sK
KyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBs
YXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRi
YWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5k
VHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFy
eWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFy
eWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUlu
Zm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6
UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGF1c2VU
cmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJh
Y2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1
bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJC
YXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFu
Z2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZm
ZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwg
aW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0
PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
VmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3Jt
SW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1
bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZv
cm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIFZlY3RvcjxpbnQz
Ml90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2Vz
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5p
Zm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpCit7CisgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tO
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJ
bmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQoreworICAgIFN0cmluZyBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2Nr
SW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZv
cm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpS
ZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNS
ZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30K
KworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAs
IHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKK3sKKyAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBT
dHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRF
dmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChj
b25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdy
b3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhU
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwg
YnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdD
R0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNv
cikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldElu
dGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1u
cywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1l
dGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkg
Ly8gTk9MSU5UCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xmbG9hdCogdmFsKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVz
dEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
THVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNh
bXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVj
dGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2
NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2ZGRlZTg3YWJkY2M3NmY4NjlhZDU1
NGRiNTExMmIzNmI4MmYyZDZiLi5kYTM5ODg2ZWJjOGYxNmQ4OGRmZTE4NzNjNTdhODdmZWNmNmU0
NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC04MTgsNyArODE4LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xp
bnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCitib29sIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdD
R0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5jcHAKaW5kZXggOTVjODM2ZTY5NTA0MWQ5N2QyNTkwMzZmZDczZGZmNWM0NmI4
ZmY5MS4uYzhjNTgyOTA1MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5N2E1NmIzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAKICAgICBhdXRv
JiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7Ci0gICAgYm9vbCBk
aWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCisgICAgYXV0byBk
aWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCiAgICAgICAgIE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5h
dGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkpLAogICAg
ICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlv
RGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsKIApAQCAtMTAwLDcgKzEwMCw3
IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNz
KCkKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwogICAgIGdl
dEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwogICAgIG1fcmluZ0J1
ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJhbWVzKTsKLSAgICBtX2F1
ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihzdHJlYW1Gb3Jt
YXQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRp
b0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlci5jcHAKaW5kZXggZGNiZDRmOGFmYWZlMTA2MGE2MWIwMzA1MzFlMTJjNzRkMzdl
ZmZkMy4uMmNhOTdjNjM3YjFmMTllODI3OGE2YWU3MTNjNWMxNGU2NzY3MTdlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvU291cmNlUHJvdmlkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKENPQ09BKQogCisj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nv
dXJjZVByb3ZpZGVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHlN
ZXNzYWdlcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3Bw
CmluZGV4IGI4ZjQ1YTZkNWJiNGRiNDYwOTg4MDEyNDNiYjVlOTMxN2IxZTNlMmIuLjY1YjhmZDBk
NzczNDdlOTM4YjU2NDU4MjI2Yjc4ZGE0M2M5Nzg5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9T
b3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuaCIKIAor
I2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdl
ci5oCmluZGV4IGU1OWUxYjA2YjQ0N2U1ZDgwY2E2MTA1MmM2YzdhMzJjNGJhMTQyZTYuLjgxOTQw
OTBjOTMzYjJmMTFhNjQ2MGFiM2MxNzcyZDM3NjE2MzcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
U291cmNlUHJvdmlkZXJNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRlbnRp
Zmllci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggMGRiODVhZTliZDI0MWViYTFi
ZGE0ZTYyMjQ0MGY2MzI4ZTFkOGEwYi4uMjk3ZWViZGExOTE4OWRmZTBjZmU2YzFlZDc2OWFhY2I5
ZDZkOTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZS5oCmluZGV4IGQ1NDI0NDJjODQ0ZTU0ODNmZDNjZWQ3ODUwNWRjYTE4Njk0YWU0YTQuLmEz
MzllYjdiZmZkNmI0NTE5NGQyOWExMDkxNGJmYTJmZmJkNzRhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZS5oCkBAIC0zNSw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuY3BwCmluZGV4IDBjNmY3M2QwNzE0NGI1NjI2NzY5MzY3YzlmMmEzYTQwMTdlYWRlODAu
LjE2OGVmNDM1ZGRlNTYxNGQzMGYzYmUyODY3MGE0N2FlZDYxNmRlMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNw
cApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0Nv
ZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuaAppbmRleCA3MzlhNDk2ZWY0OTRjYjRhNjE4NTY2ZmZjNjRkNGEyNjRhNzRlOWQw
Li40YmVhZTA2MjMxN2JhMjZhNjA2ODNmMWY0NTEyMzNlYjEwNzNhYTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZp
ZXIuaCIKQEAgLTQzLDcgKzQ0LDYgQEAgdXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1
Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVj
dGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCmluZGV4IDJkYWQyMDM4NDJmMGU1NTNmZTNiNDYyNDQxZWU5NGZhMjY0OTNhMTEuLmMy
OGNlN2YyZTE3ZTg5YThlNTE4NmE3NzA2YTJlOGE0NGY2YjdlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZUJ1bmRsZUNs
aWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRUeXBlcy5oPgpA
QCAtNTQsNyArNTUsNiBAQCBjbGFzcyBEYXRhOwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNv
ZGVyOwogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTYxLDQgKzE2MSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IDYyNzVjZjZhNmU3ZTUwYzZiMzYwNjJlMTMxODc1NzUyODlhNTgwZWUuLmU1
YmE2NjFhZTY2ZjU1YTkwNzQ2NGU2ZmYzNmU0MmI3YWRkMDBkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCYgaW5zcGVjdG9yRnJvbnRlbmQpCiAgICAgOiBtX2Zyb250ZW5kQ2xpZW50KG1ha2VXZWFrUHRy
KGluc3BlY3RvckZyb250ZW5kKSkKIHsKLSAgICBQYWdlKiBwYWdlID0gaW5zcGVjdG9yRnJvbnRl
bmQuZnJvbnRlbmRQYWdlKCk7CisgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IGluc3BlY3RvckZy
b250ZW5kLmZyb250ZW5kUGFnZSgpOwogICAgIEFTU0VSVChwYWdlKTsKIAogLy8gICAgV1RGUmVw
b3J0QmFja3RyYWNlKCk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lv
CiAgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpLAogICAgICAgICBKU09O
OjpWYWx1ZTo6Y3JlYXRlKGRpc3BsYXlOYW1lKSwKICAgICB9OwotICAgIG1fZnJvbnRlbmRDbGll
bnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3lu
YygicmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3Vs
dCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElE
aXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJyZWdpc3RlckV4dGVu
c2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE2
LDcgKzExNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJl
Z2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zCiAgICAgfQogCiAgICAgVmVjdG9y
PFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5z
aW9uSUQpIH07Ci0gICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCku
ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1bnJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBX
VEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAg
IG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFu
ZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVu
dHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAzMDY0
ZTljNGFmY2MyY2ZmNTRhMzI1ZTI1MzFlZDA1MjJhMDAxMzkzLi5iOTc5NDY1OWVhYmQxODRiMzg5
YzA2ZDEzMmY4YzQyZjgwNTIzY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMzQsMTAg
KzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODY1NzExYjM2NmMyOGRmNDg0YjRjZGMwN2Fh
M2ZjZjNkY2ViZjJmNi4uNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4MjBhMjc4YWYxZGM2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODNlMzc5
Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZiLi43ZTFkNDk5NDcxNWY4ODQ5Y2U4YmZl
NWVjMzQ1NWQ0NzM3NzgwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCkBAIC0zNiw3ICszNyw2
IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERh
dGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRl
eCA5NGVmMGQxZmNlMmU2MDFkZjQ0OWNmZjg1MzlmYmQxNjQ3OTNlYmUyLi5mZjY5ZjU2MDllNTc3
Y2FjNzc3ZjA0YWZhNzRhZjIxMDc0ODY0Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKIAot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4
IGY1MzQ3ODM0N2U3NzVkZjM3ZWE5NzYzNGMyMzMwOTMyYjRhMTRkMjguLmFkN2ZmMTg3ZGJiNDM1
M2I5ZWQzYmM1N2M1YmEyYzRhYTRlOGNmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1NlbmRRdWV1ZS5oPgpAQCAtMzgsNyArMzksNiBAQAogbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVu
Y2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5kZXggYWYyNDJjZDJiNTk1YWM0
YTQ0ODQyOTdiZTVkNWNmZTE4ZDQ4ZjMyNC4uN2QwMDczNjliOWNjZTg1YjhmMDU0NTdkNjY2ZDFl
NDQ1MWI5NmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdv
cmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCBkZDA4MjAxMDcxMmI5ZjVkYjlmZWJk
ODhkYTY2OWI2ZGY2MWQwZjI5Li5iNDNjYjJlZmFkMWUxMDFlZTI2NWI5M2RkZTliMDYxMjczNmEw
OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRTdHJlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGUu
aD4KQEAgLTMzLDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsK
IGNsYXNzIERlY29kZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDU29ja2V0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKaW5kZXggY2I0OGUwNTczNDhhMmU4NjZiMDkxZmY1YWM4
NzI2MDVjYTE5MmRkNS4uMzIzZjI1ZWU4ZmQ4MWIwMjYzMGQyZjI1OWExYWZiODg0YjRjZjVlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENTb2NrZXQuaApAQCAtMzUsNyArMzUsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCmluZGV4IGVhNTM1OTYwMTA5ZmVlNmRjNDgwNWNmNjg5MTI3OThlZTlhYjZmMDMuLjQwYjRj
OGYyMTI5Y2YxMjMzYTFiMzFiODUxMjdlN2E3ZTllM2Q3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTYwLDEwICs2MCw2IEBA
IE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9uOwogT0JKQ19DTEFTUyBXS1BERlBsdWdpbkFjY2Vzc2li
aWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGU7CiAK
LW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLX0KLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEu
LjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRlOWQ1NDkyMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYsMjIgQEAgUmVmUHRyPEltYWdlQnVmZmVy
PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorCitS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQ
bGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdAoreworICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5k
b3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7CisjZWxzZQorICAgIHJldHVy
biBudWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIo
RnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYzE0
ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4Li4xMjE1ZjkyYTAzMTk1ODBhMGRk
ZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDMsNyArMjQz
LDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3Nl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgorI2VuZGlm
CisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdn
ZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMsNiArNDA3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIg
eyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzQ0NjM4ZmVk
N2JkMzhkNjFlOTY2Y2NmZTAzNDEyNjM0NjQyNmNmYi4uOTA0NDA3MjljOTUxMzJhZDc4ZjhhNmIz
N2UzOGFjNTI3OTcwNGRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTQyNyw2ICs0MjcsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAg
ICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxk
UmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQ
cm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgfQogICAgICwg
bV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRp
YUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAgICwgbV9zaG91bGRSZW5kZXJX
ZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nl
c3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX25lZWRz
SW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQ
cml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzMwLDcgKzczMyw2IEBAIFdlYlBhZ2U6OldlYlBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciogbWFuYWdlciA9IHdl
YlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyPigpKQogICAgICAg
ICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShtYW5hZ2Vy
LT5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYKLSAgICAKICAgICBpZiAocGFy
YW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAgICAgICAgc2NhbGVWaWV3KHBhcmFtZXRl
cnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5OCwxMCArMzgwMCwxMiBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5k
ZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5k
ZXJET01JbkdQVVByb2Nlc3MgJiYgRHJhd2luZ0FyZWE6OnN1cHBvcnRzR1BVUHJvY2Vzc1JlbmRl
cmluZyhtX2RyYXdpbmdBcmVhVHlwZSkpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNl
dFVzZUdQVVByb2Nlc3NGb3JNZWRpYShtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7Ci0K
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgd2ViIGZvbnRzIGluIHRoZSBHUFUgcHJv
Y2Vzcy4KICAgICBpZiAobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MpCiAgICAgICAgIHNl
dHRpbmdzLnNldERvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZChmYWxzZSk7CisjaWYgRU5B
QkxFKFdFQkdMKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NG
b3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKKyNlbmRpZgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpAQCAtNjk5OSw2ICs3MDAzLDcgQEAgdm9p
ZCBXZWJQYWdlOjpzeW5jaHJvbml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJv
Y2VzcygpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobV9pZGVudGlmaWVyLCBtX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJucyksIDApOwogfQogCisKICNpZiBFTkFCTEUoTUVESUFfVVNBR0Up
CiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29u
c3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGUwNGUzYThiMmQxNzhjYzg0OTVkNDViYWY4MWYzN2RhZWZiYjdiNzAuLmZh
MTMzNTRkZGZmMjMyODQ1MGI5YzcyY2RhYzRkY2Y3YWU0NTRiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZy
YW1lcy5oIgogI2luY2x1ZGUgIkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJE
cmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTE2MSw3ICsx
NjIsNiBAQCBjbGFzcyBBcnJheTsKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9u
OwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJl
ZmVyZW5jZTsKIH0KQEAgLTEyNTgsNyArMTI1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBzZW5kU3luY1dpdGhEZWxheWVkUmVw
bHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgU2VuZFN5bmNS
ZXN1bHQgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmIHJlcGx5KQogICAgIHsKICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9ja2VkT25TeW5j
aHJvbm91c1JlcGxpZXMoKTsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2Fn
ZSksIFdURk1vdmUocmVwbHkpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0
aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CkBAIC0xODMyLDYgKzE4MzIs
OSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3Mg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBmYWxzZSB9Owor
I2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nl
c3MgeyBmYWxzZSB9OworI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAg
IGJvb2wgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBmYWxzZSB9OwogI2VuZGlm
CkBAIC0yMTg5LDQgKzIxOTIsMyBAQCBpbmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRz
TGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBjbwogI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDM4MzhhYjMyNmRkODM5NmI2MDEwN2Ni
YTNmNjI0NTA3NGM5N2Y3MTUuLjBlMjkzZmE0ZGYxOWNiZjhjZDY3OTMxNzZkNzg3ODkyYWQ4ZTEy
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCkBAIC01MTcsNyArNTE3LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5n
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBJbnRl
cnByZXQgdGhlIGV2ZW50IGltbWVkaWF0ZWx5IHVwb24gcmVjZWl2aW5nIGl0IGluIFVJIHByb2Nl
c3MsIHdpdGhvdXQgc2VuZGluZyB0byBXZWJQcm9jZXNzIGZpcnN0LgogICAgIGJvb2wgZXZlbnRX
YXNIYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxh
eW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6Q2hhciksCisgICAgYXV0byBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVz
KSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciks
CiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50OjpSZXBs
eShldmVudFdhc0hhbmRsZWQpLCBtX2lkZW50aWZpZXIpOwogICAgIHJldHVybiBzZW5kUmVzdWx0
ICYmIGV2ZW50V2FzSGFuZGxlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCBmMmYyMjgyMmM3YjIyM2ZjYTU5Zjk1NTczZDExZGM5OWIxMDM0ODExLi41ODJl
ZTc1ZDk5YTc0MjQyNTRhMzlkYWIyMDZmODQ2MTczNGFkOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTQyLDYgKzE5NDIsMjAgQEAgYm9vbCBXZWJQcm9j
ZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3Nl
KQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lk
IFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChib29sIHVzZUdQVVByb2Nlc3NG
b3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCA9IHVzZUdQVVByb2Nlc3NG
b3JXZWJHTDsKK30KKworYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdG
b3JXZWJHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOwor
fQorCisjZW5kaWYKKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTljNDdkYjRjNDQ3YzBmNGFiNjI3YzA5NGI1ZjY4ZGI1
NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMyNzY0YzRkODUzNzkwOTBiMmNiY2E3M2MxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNDcsNiArMzQ3LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcoYm9vbCk7CiAgICAg
dm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRVc2VS
ZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSk7CisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wpOworICAgIGJv
b2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdDsKKyNlbmRpZgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpAQCAtNjg3LDYgKzY5MSw5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
dXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAg
Ym9vbCBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCB7IGZhbHNlIH07CisjZW5kaWYKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBjNWU2OTZhNmJmYmEzYzdmYmVjMjM0MGY5ZmIzNThhZTkzZjQwOGZjLi5j
MDcxZTNhYTZhMmJhYTVmZmY2NTcyYTdmNzQwMzBjNDUyYzBkY2VkIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAt
MTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Njk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50cyBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBH
UFUgcHJvY2Vzcy4KKyAgICAgICAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJL
aXQgSVBDIGFuZCBpcyBpbmNvbXBsZXRlLgorCisgICAgICAgIEFkZCB0aGUgY29kZSBnZW5lcmF0
b3IgdG8gZ2VuZXJhdGUgdGhlIGltcGxlbWVudGF0aW9uLiBDdXJyZW50bHkKKyAgICAgICAgdGhl
IGdlbmVyYXRvciBnZW5lcmF0ZXMgYSBXZWJLaXQgSVBDIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgIFRoZSBpbnB1dCBkZWZpbml0aW9uIHRvIHRoZSBnZW5lcmF0b3IgaXMgdGhlIHByb3h5IGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGhlYWRlciBmaWxlcy4KKyAgICAgICAgVGhlIG91dHB1dCBv
ZiB0aGUgZ2VuZXJhdG9yIGlzCisgICAgICAgICAgIC0gV2ViS2l0IElQQyBtZXNzYWdlIGRlZmlu
aXRpb24gZmlsZQorICAgICAgICAgICAtIE1lc3NhZ2Ugc2VuZGVyIGNvZGUKKyAgICAgICAgICAg
LSBNZXNzYWdlIHJlY2VpdmVyIGFuZCBwYXlsb2FkIGludm9jYXRpb24gY29kZQorCisgICAgICAg
IFRoZSBnZW5lcmF0b3IgY29udmVydHMgR3JhcGhpY3NDb250ZXh0R0wgR0NHTCAtcHJlZml4ZWQg
dHlwZXMgdG8KKyAgICAgICAgc2l6ZWQgSVBDIHR5cGVzLgorCisgICAgICAgIFRoZSBnZW5lcmF0
b3IgaXMgaW52b2tlZCBkdXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3VsdHMgYXJl
CisgICAgICAgIHN0b3JlZCBpbiB0aGUgcmVwb3NpdG9yeS4KKworICAgICAgICAqIFNjcmlwdHMv
Z2VuZXJhdGUtZ3B1cC13ZWJnbDogQWRkZWQuCisKIDIwMjAtMTItMDIgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFueSBkaWZmZXJlbnQgYXNzZXJ0
aW9uIGZhaWx1cmVzIG9uIHRoZSBHUFUgcHJvY2VzcyBib3QgYWZ0ZXIgcjI3MDM2NgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNmI0MjIyOWNmMmY4MjhjNjZjN2U3YjQx
NzczYzJlYmU0NDMxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wKQEAgLTAsMCArMSwxMDQ0IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisj
IC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBUaGlzIHNj
cmlwdCBnZW5lcmF0ZXMgdGhlIHNvdXJjZSBmaWxlcyBmb3IgV2ViR0wgR1BVIHByb2Nlc3MgSVBD
LgorIworIyBweXRob24zIC1tIGJsYWNrIC1sIDE1MCBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdw
dXAtd2ViZ2wKKyMgcHl0aG9uMyAtbSBteXB5IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbAorIworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZW51bQoraW1wb3J0IHBhdGhsaWIKK2lt
cG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCisKK2Zyb20gdHlwaW5nIGlt
cG9ydCBMaXN0LCBEaWN0LCBJdGVyYWJsZSwgQ2FsbGFibGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFs
LCBHZW5lcmF0b3IsIEl0ZXJhdG9yLCBDb3VudGVyCisKK3Jvb3RfZGlyID0gKHBhdGhsaWIuUGF0
aChfX2ZpbGVfXykucGFyZW50IC8gIi4uIiAvICIuLiIpLnJlc29sdmUoKQorZXh0ZW5zaW9uc19p
bnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZvcm0iIC8g
ImdyYXBoaWNzIiAvICJFeHRlbnNpb25zR0wuaCIKKworZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsK
KyAgICByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BV
IiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorXQordHlw
ZXNfaW5wdXRfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2Vz
cyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
IgorCisKK3RlbXBsYXRlX3ByZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisiIiIKK2NvbnRl
eHRfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVBy
b2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dl
bmVyYXRlZC5oIgorY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVf
cHJlYW1ibGUKKyAgICArICIiIi8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhl
IHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxl
bWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQore30KKworIiIiCispCitjb250ZXh0X21lc3NhZ2Vz
X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdy
YXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiIKK2NvbnRleHRf
bWVzc2FnZXNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIiNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworICAgIHZvaWQgUmVzaGFwZShp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2
b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikg
U3luY2hyb25vdXMKKyNlbmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBh
cmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkKK3t9Cit9fQorCisjZW5kaWYKKworIiIiCispCisKK2NvbnRleHRfcHJv
eHlfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlBy
b2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIgorY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxh
dGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIgorI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHt7
Cit7fQorCit9fQorCisjZW5kaWYKKworIiIiCispCisKKworZGVmIHdyaXRlX2ZpbGUoZm4sIG5l
d19jb250ZW50cyk6CisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAg
ICAgICAgICBpZiBmLnJlYWQoKSA9PSBuZXdfY29udGVudHM6CisgICAgICAgICAgICAgICAgcmV0
dXJuCisgICAgZXhjZXB0OgorICAgICAgICBwYXNzCisgICAgd2l0aCBvcGVuKGZuLCAidyIpIGFz
IGY6CisgICAgICAgIGYud3JpdGUobmV3X2NvbnRlbnRzKQorCitjbGFzcyBjcHBfdHlwZShvYmpl
Y3QpOgorICAgIHR5cGVfbmFtZTogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9u
YW1lIDogc3RyKToKKyAgICAgICAgc2VsZi50eXBlX25hbWUgPSB0eXBlX25hbWUKKworICAgIGRl
ZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRl
ZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi50eXBlX25hbWUpCisK
KyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQor
CisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVf
bmFtZSA9PSBvdGhlci50eXBlX25hbWUKKworICAgIGRlZiBpc192b2lkKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSBpbiBbInZvaWQiLCAiR0NHTHZvaWQiLCAi
Y29uc3Qgdm9pZCIsICJjb25zdCBHQ0dMdm9pZCJdCisKKyAgICBkZWYgaXNfY29uc3Qoc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoImNvbnN0
ICIpCisKKyAgICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgor
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19wb2ludGVyKHNlbGYpIC0+
IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcmVmZXJl
bmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2Nv
bnN0X3JlZmVyZW5jZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGRlZiBnZXRfdmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4g
c2VsZgorCisgICAgZGVmIGdldF9kZWNheV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAg
ICAgIGlmIHNlbGYuaXNfY29uc3QoKToKKyAgICAgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUo
c2VsZi50eXBlX25hbWVbNjpdKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9y
dmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90
eXBlKHNlbGYudHlwZV9uYW1lICsgIiYmIikKKworICAgIGRlZiBnZXRfcG9pbnRlcl90eXBlKHNl
bGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBl
X25hbWUgKyAiKiIpCisKK2NsYXNzIGNwcF90eXBlX2NvbnRhaW5lcihjcHBfdHlwZSk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY29udGFpbmVyX25hbWUgOiBzdHIs
IGNvbnRhaW5lZF90eXBlIDogY3BwX3R5cGUsIGFyaXR5IDogT3B0aW9uYWxbaW50XSA9IE5vbmUp
OgorICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNl
bGYuY29udGFpbmVyX25hbWUgPSBjb250YWluZXJfbmFtZQorICAgICAgICBzZWxmLmNvbnRhaW5l
ZF90eXBlID0gY29udGFpbmVkX3R5cGUKKyAgICAgICAgc2VsZi5hcml0eSA9IGFyaXR5CisgICAg
ZGVmIGlzX2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAg
IGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5l
cl9uYW1lID09ICJHQ0dMU3BhbiIKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJv
b2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5k
IHNlbGYuYXJpdHkgaXMgTm9uZQorICAgIGRlZiBnZXRfY29udGFpbmVyX25hbWUoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lCisgICAgZGVmIGdldF9hcml0eShzZWxm
KSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICByZXR1cm4gc2VsZi5hcml0eQorICAgIGRlZiBn
ZXRfY29udGFpbmVkX3R5cGUoc2VsZikgLT4gY3BwX3R5cGU6CisgICAgICAgIHJldHVybiBzZWxm
LmNvbnRhaW5lZF90eXBlCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZS5pc19jb25zdCgpCisKK2Rl
ZiBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxb
Y3BwX3R5cGVfY29udGFpbmVyXToKKyAgICBtID0gcmUubWF0Y2gociIoW1x3Ol0rKTwoLispPiQi
LCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgY29u
dGFpbmVyX25hbWUgPSBtWzFdCisgICAgdGVtcGxhdGVzID0gbVsyXQorICAgIGFyaXR5ID0gTm9u
ZQorICAgIG0gPSByZS5tYXRjaChyIihbXixdKyksXHMqKFxkKykiLCB0ZW1wbGF0ZXMpCisgICAg
aWYgbToKKyAgICAgICAgdGVtcGxhdGVzID0gbVsxXQorICAgICAgICBhcml0eSA9IGludChtWzJd
KQorICAgIHJldHVybiBjcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lLCBjb250YWluZXJfbmFt
ZSwgZ2V0X2NwcF90eXBlKHRlbXBsYXRlcyksIGFyaXR5KQorCitjbGFzcyBjcHBfdHlwZV9mdW5j
dGlvbihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwg
cmV0dXJuX3ZhbHVlX3R5cGUgOiBjcHBfdHlwZSwgYXJndW1lbnRfdHlwZXMgOiBMaXN0W2NwcF90
eXBlXSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAg
ICAgc2VsZi5yZXR1cm5fdmFsdWVfdHlwZSAgPSByZXR1cm5fdmFsdWVfdHlwZQorICAgICAgICBz
ZWxmLmFyZ3VtZW50X3R5cGVzID0gYXJndW1lbnRfdHlwZXMKKworZGVmIGNwcF9zcGxpdF9hcmdz
X3NwZWNzKGFyZ3Nfc3BlYyA6IHN0cikgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAgIyBodHRwczov
L3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMzUyNzI0NS9weXRob24tc3BsaXQtYnktY29t
bWEtc2tpcHBpbmctdGhlLWNvbnRlbnQtaW5zaWRlLXBhcmVudGhlc2VzCisgICAgY29tbWEgPSBy
IiwoPyEoPzpbXjxdKlw8W14+XSpcPikqW148Pl0qXD4pIgorICAgIHJldHVybiBmaWx0ZXIoTm9u
ZSwgW2Euc3RyaXAoKSBmb3IgYSBpbiByZS5zcGxpdChjb21tYSwgYXJnc19zcGVjLnN0cmlwKCkp
XSkKKyAgICAKK2RlZiBjcmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lIDogc3RyKSAt
PiBPcHRpb25hbFtjcHBfdHlwZV9mdW5jdGlvbl06CisgICAgbSA9IHJlLm1hdGNoKHInKC4qKVwo
KC4qKVwpJywgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQor
ICAgIHJldHVybl92YWx1ZV90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgYXJnc190eXBl
cyA9IFtnZXRfY3BwX3R5cGUoYSkgZm9yIGEgaW4gY3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsyXSld
CisgICAgcmV0dXJuIGNwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSwgcmV0dXJuX3ZhbHVlX3R5
cGUsIGFyZ3NfdHlwZXMpCisgICAgICAgIAorIyBQb2ludGVyIG9yIHJlZmVyZXJlbmNlCitjbGFz
cyBjcHBfdHlwZV9pbmRpcmVjdChjcHBfdHlwZSk6CisgICAgY2F0ZWdvcnkgOiBzdHIKKyAgICB2
YWx1ZV90eXBlIDogY3BwX3R5cGUKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9u
YW1lIDogc3RyLCBjYXRlZ29yeSA6IHN0ciwgdmFsdWVfdHlwZSA6IGNwcF90eXBlKToKKyAgICAg
ICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNhdGVn
b3J5ID0gY2F0ZWdvcnkKKyAgICAgICAgc2VsZi52YWx1ZV90eXBlID0gdmFsdWVfdHlwZQorCisg
ICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVn
b3J5ID09ICcqJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgbm90IHNlbGYuaXNfY29u
c3QoKQorICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3JlZmVy
ZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBub3Qg
c2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3J2YWx1ZV9yZWZlcmVuY2Uoc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJicKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlX3R5cGUKKworZGVmIGNyZWF0ZV9jcHBf
dHlwZV9pbmRpcmVjdCh0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2luZGly
ZWN0XToKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiYkIiwgdHlwZV9uYW1lKQorICAg
IGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiYkIiwgdHlwZV9uYW1lKSAK
KyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAn
JiYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYk
IiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLisp
JiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGly
ZWN0KHR5cGVfbmFtZSwgJyYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNo
KHIiY29uc3QgKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9
IHJlLm1hdGNoKHIiKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1
cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnKicsIGdldF9jcHBfdHlwZShtWzFdKSkK
KyAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIGNwcF9leHByKG9iamVjdCk6CisgICAgdHlwZTog
Y3BwX3R5cGUKKyAgICBleHByOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBj
cHBfdHlwZSwgZXhwcjogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBz
ZWxmLmV4cHIgPSBleHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuZXhwcgorCisKK0NwcEV4cHJDb252ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4cHIsIGNw
cF90eXBlXSwgY3BwX2V4cHJdCisKKworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9p
bnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tj
cHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9j
YXN0X2Zyb21fcG9pbnRlcihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9l
eHByOgorICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50
eXBlX25hbWV9PihyZWludGVycHJldF9jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0
cihleHByKX0pKSIpCisgICAgcmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRl
cgorCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhy
b3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBj
cHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIoZXhwcjog
Y3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNw
cF9leHByKHR5cGUsIGYicmVpbnRlcnByZXRfY2FzdDx7dHlwZS50eXBlX25hbWV9PihzdGF0aWNf
Y2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVy
biBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyCisKK2RlZiBjcHBfc3RhdGljX2Nhc3Qo
ZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4g
Y3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9Pih7c3RyKGV4cHIp
fSkiKQorCisKK2RlZiBjcHBfaW1wbGljaXRfY2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3Bw
X3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBzdHIoZXhwcikp
CisKKworZGVmIGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3Bw
X2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVu
dF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5
cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0
X2Nhc3Q8e2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihl
eHByKX0uc2l6ZSgpKSIpCisKK2RlZiB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWlu
dGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2Nv
bnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdl
dF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhw
cih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qge2VsZW1lbnRfcG9p
bnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSksIHtzdHIoZXhwcil9LmJ1ZlNpemUpIikKKwor
ZGVmIGNwcF9tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIHJldHVy
biBjcHBfZXhwcihleHByLnR5cGUuZ2V0X3J2YWx1ZV90eXBlKCksIGYiV1RGTW92ZSh7c3RyKGV4
cHIpfSkiKQorCisKK2NwcF90eXBlczogRGljdFtzdHIsIGNwcF90eXBlXSA9IHt9CisKK2NwcF90
eXBlX2NvbnN0cnVjdG9ycyA6IExpc3RbQ2FsbGFibGVbW3N0cl0sIE9wdGlvbmFsW2NwcF90eXBl
XV1dID0gWworICAgIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbiwKKyAgICBjcmVhdGVfY3BwX3R5
cGVfY29udGFpbmVyLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdAorXQorCitkZWYgZ2V0
X2NwcF90eXBlKHR5cGVfbmFtZTogc3RyKToKKyAgICByID0gY3BwX3R5cGVzLmdldCh0eXBlX25h
bWUsIE5vbmUpCisgICAgaWYgcjoKKyAgICAgICAgcmV0dXJuIHIKKyAgICBmb3IgdHlwZV9jb25z
dHIgaW4gY3BwX3R5cGVfY29uc3RydWN0b3JzOgorICAgICAgICByID0gdHlwZV9jb25zdHIodHlw
ZV9uYW1lKQorICAgICAgICBpZiByOgorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBub3QgcjoK
KyAgICAgICAgciA9IGNwcF90eXBlKHR5cGVfbmFtZSkKKyAgICBjcHBfdHlwZXNbdHlwZV9uYW1l
XSA9IHIKKyAgICByZXR1cm4gcgorCisKK2NsYXNzIGNwcF9hcmcob2JqZWN0KToKKyAgICBuYW1l
OiBzdHIKKyAgICB0eXBlOiBjcHBfdHlwZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6
IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAg
IHNlbGYudHlwZSA9IHR5cGUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1
cm4gInt9IHt9Ii5mb3JtYXQoc2VsZi50eXBlLCBzZWxmLm5hbWUpCisKKworY2xhc3MgY3BwX2Rl
Y2wob2JqZWN0KToKKyAgICB0eXBlOiBjcHBfdHlwZQorICAgIG5hbWU6IHN0cgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxm
LnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5hbWV9Igor
CisKK2NsYXNzIGNwcF9hcmdfbGlzdChvYmplY3QpOgorICAgIGFyZ3M6IExpc3RbY3BwX2FyZ10K
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAg
c2VsZi5hcmdzID0gYXJncworCisgICAgZGVmIG5hbWVzKHNlbGYpOgorICAgICAgICByZXR1cm4g
IiwgIi5qb2luKGEubmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhwcnMoc2Vs
Zik6CisgICAgICAgIHJldHVybiBbY3BwX2V4cHIoYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNl
bGYuYXJnc10KKworICAgIGRlZiBkZWNscyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZGVj
bChhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIHR5cGVzKHNl
bGYpOgorICAgICAgICByZXR1cm4gW2EudHlwZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBk
ZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihzdHIoYSkgZm9yIGEg
aW4gc2VsZi5hcmdzKQorCisKK2NsYXNzIGNwcF9mdW5jKG9iamVjdCk6CisgICAgbmFtZTogc3Ry
CisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAg
aXNfZXh0ZW5zaW9uOiBib29sCisgICAgb3ZlcmxvYWRfc3VmZml4OiBzdHIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3Bw
X2FyZ19saXN0LCBpc19leHRlbnNpb246IGJvb2wpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1l
CisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFy
Z3MgPSBhcmdzCisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCisgICAg
ICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gIiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgor
ICAgICAgICByZXR1cm4gZiJ7c2VsZi5yZXR1cm5fdHlwZX0ge3NlbGYubmFtZX0oe3N0cihzZWxm
LmFyZ3MpfSkiCisKKyAgICBkZWYgZ2V0X2FyZ3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBUdXBsZVtM
aXN0W2NwcF9hcmddLCBMaXN0W2NwcF9hcmddXToKKyAgICAgICAgaW5fYXJncyA9IFtdCisgICAg
ICAgIG91dF9hcmdzID0gW10KKyAgICAgICAgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6CisgICAg
ICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCkgb3Ig
XAorICAgICAgICAgICAgICAgIGEudHlwZS5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgICAg
ICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLnR5cGUsIGNw
cF90eXBlX2NvbnRhaW5lcikgYW5kICgoKGEudHlwZS5pc19zcGFuKCkgb3IgYS50eXBlLmlzX2R5
bmFtaWNfc3BhbigpKSBhbmQgbm90IGEudHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25z
dCgpKSk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGluX2FyZ3MgKz0gW2FdCisgICAgICAgICAgICAjZm10OiBvbgor
ICAgICAgICByZXR1cm4gaW5fYXJncywgb3V0X2FyZ3MKKworICAgIGRlZiBpc19pbXBsZW1lbnRl
ZF90eXBlKHNlbGYsIHR5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgdHlwZS5pc19jb25zdF9w
b2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUK
KworICAgIGRlZiBpc19pbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyIgaW4gYS50eXBlLnR5
cGVfbmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICMgICAgcmV0dXJuIEZh
bHNlCisgICAgICAgICNpZiAiR0NHTHN5bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1l
OgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkoYS5uYW1lID09ICJi
dWZTaXplIiBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICAgICAgaWYgYW55KGEudHlwZS5pc19wb2ludGVyKCkgYW5kIGEudHlwZS5nZXRfdmFs
dWVfdHlwZSgpLmlzX3ZvaWQoKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5
cGUoYS50eXBlKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5fdHlwZS5pc19wb2ludGVyKCk6CisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlw
ZShzZWxmLnJldHVybl90eXBlKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBy
ZXR1cm4gVHJ1ZQorCisKK3dlYmtpdF9pcGNfdHlwZXM6IERpY3RbY3BwX3R5cGUsIGNwcF90eXBl
XSA9IHt9CisKK3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyczogRGljdFtUdXBsZVtjcHBfdHlw
ZSwgY3BwX3R5cGVdLCBDcHBFeHByQ29udmVydGVyXSA9IHt9CisKKworZGVmIHdlYmtpdF9pcGNf
Y29udmVydF9leHByKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6
CisgICAgIiIiIENvbnZlcnRzIGBleHByYCBvZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlwZWAgIiIi
CisgICAgY29udmVydCA9IHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5nZXQoKGV4cHIudHlw
ZSwgdHlwZSksIE5vbmUpCisgICAgaWYgbm90IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4cHIudHlw
ZSA9PSB0eXBlOgorICAgICAgICAgICAgcmV0dXJuIGV4cHIKKyAgICAgICAgY29udmVydCA9IGNw
cF9pbXBsaWNpdF9jYXN0CisgICAgcmV0dXJuIGNvbnZlcnQoZXhwciwgdHlwZSkKKworCitkZWYg
d2Via2l0X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKHR5cGUgOiBjcHBfdHlwZV9jb250YWlu
ZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90
eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGFyaXR5ID0gdHlwZS5nZXRfYXJpdHkoKQorICAg
IHdlYmtpdF9pcGNfZWxlbWVudF90eXBlID0gd2Via2l0X2lwY190eXBlc1tlbGVtZW50X3R5cGVd
IGlmIG5vdCBlbGVtZW50X3R5cGUuaXNfdm9pZCgpIGVsc2UgZ2V0X2NwcF90eXBlKCd1aW50OF90
JykKKyAgICBpZiBhcml0eSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlw
ZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9LCB7
YXJpdHl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8
e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9PiIpCisKKworCitkZWYgd2Via2l0X2lwY19n
ZXRfc3Bhbl9zdG9yZV90eXBlKHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6
CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlf
dHlwZSgpCisgICAgaWYgZWxlbWVudF90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgZWxlbWVudF90
eXBlID0gZ2V0X2NwcF90eXBlKCdHQ0dMY2hhcicpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3Nw
YW4oKToKKyAgICAgICAgaW5saW5lX2NhcGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiBlbGVtZW50
X3R5cGUudHlwZV9uYW1lIGVsc2UgNAorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiVmVj
dG9yPHtzdHIoZWxlbWVudF90eXBlKX0sIHtzdHIoaW5saW5lX2NhcGFjaXR5KX0+IikKKyAgICBy
ZXR1cm4gZ2V0X2NwcF90eXBlKGYic3RkOjphcnJheTx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3Ry
KHR5cGUuZ2V0X2FyaXR5KCkpfT4iKQorCitkZWYgd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2Nv
bnZlcnNpb24oZXhwciA6IGNwcF9leHByLCB0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBj
cHBfZXhwcjoKKyAgICBwb2ludGVyX2Nhc3RfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBl
KCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAg
ICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYibWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4
cHIpfS5zaXplKCkpIikKKworICAgIGFzc2VydCh0eXBlLmlzX3NwYW4oKSkKKyAgICByZXR1cm4g
Y3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW48e3N0cih0eXBlLmdldF9hcml0eSgpKX0+KHJl
aW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRh
KCkpKSIpCisKKyMgU2VlIG1lc3NhZ2VzLnB5IGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlCit3ZWJr
aXRfaXBjX2J1aWx0aW5fdHlwZXMgPSBzZXQoCisgICAgWyJ1aW50OF90IiwgInVpbnQxNl90Iiwg
InVpbnQzMl90IiwgInVpbnQ2NF90IiwgImludDhfdCIsICJpbnQxNl90IiwgImludDMyX3QiLCAi
aW50NjRfdCIsICJib29sIiwgImZsb2F0IiwgImRvdWJsZSIgImJvb2wiXQorKQorCisKK2RlZiB3
ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHR5cGU6IGNwcF90eXBlKSAtPiBj
cHBfdHlwZToKKyAgICBpZiB0eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlw
ZXM6CisgICAgICAgIHJldHVybiB0eXBlCisgICAgcmV0dXJuIHR5cGUuZ2V0X3J2YWx1ZV90eXBl
KCkKKworCitkZWYgd2Via2l0X2lwY19tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9l
eHByOgorICAgIGlmIGV4cHIudHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5
cGVzOgorICAgICAgICByZXR1cm4gZXhwcgorICAgIHJldHVybiBjcHBfbW92ZV9leHByKGV4cHIp
CisKKworZGVmIHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYzogY3BwX2Z1bmMpOgorICAgIHJldHVy
biBmdW5jLm5hbWVbMF0uY2FwaXRhbGl6ZSgpICsgZnVuYy5uYW1lWzE6XSArIGZ1bmMub3Zlcmxv
YWRfc3VmZml4CisKKworY2xhc3Mgd2Via2l0X2lwY19tc2cob2JqZWN0KToKKyAgICBuYW1lOiBz
dHIKKyAgICBpbl9hcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBvdXRfYXJnczogY3BwX2FyZ19saXN0
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxm
Lm5hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmMpCisgICAgICAgIGluX2FyZ3MsIG91dF9h
cmdzID0gZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgaXBjX2luX2FyZ3MgPSBb
Y3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSkgZm9yIGEgaW4gaW5fYXJn
c10KKyAgICAgICAgaXBjX291dF9hcmdzID0gW10KKyAgICAgICAgaWYgbm90IGZ1bmMucmV0dXJu
X3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdl
YmtpdF9pcGNfdHlwZXNbZnVuYy5yZXR1cm5fdHlwZV0sICJyZXR1cm5WYWx1ZSIpXQorICAgICAg
ICBmb3IgYSBpbiBvdXRfYXJnczoKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2Fy
Zyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSldCisgICAgICAgICAgICBpZiBhLnR5
cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgaXBjX2luX2FyZ3MgKz0gW2Nw
cF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpXQorICAgICAg
ICBzZWxmLmluX2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX2luX2FyZ3MpCisgICAgICAgIHNlbGYu
b3V0X2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX291dF9hcmdzKQorCisgICAgZGVmIF9fc3RyX18o
c2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmLm91dF9hcmdzLmFyZ3MpOgorICAgICAgICAgICAg
cmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSAtPiAo
e3N0cihzZWxmLm91dF9hcmdzKX0pIFN5bmNocm9ub3VzIgorICAgICAgICByZXR1cm4gZiJcbiAg
ICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIgorCisKK2NsYXNzIHdlYmtp
dF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBtc2dfbmFt
ZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0
CisKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtz
dHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICByZXR1cm5fc3RtdHM6IExp
c3Rbc3RyXQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlz
dFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMp
OgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYubXNnX25h
bWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGNwcF9mdW5jKQorICAgICAgICBzZWxmLnJldHVybl90
eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMu
YXJncworICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxs
X3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBz
ZWxmLnJldHVybl9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAg
ICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1
bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFs
dWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmdzKGlu
X2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJncyhvdXRfYXJncykKKyAgICAgICAg
c2VsZi5wcm9jZXNzX2NhbGwoKQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAg
ICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oW3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkK
KyAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9l
eHBycykKKyAgICAgICAgaXNfYXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQg
bGVuKG91dF9leHBycykgPT0gMAorICAgICAgICBpZiBpc19hc3luYzoKKyAgICAgICAgICAgIHNl
bGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gIiIKKyAgICAgICAgICAgIGlmIHNlbGYucG9zdF9j
YWxsX3N0bXRzOiAKKyAgICAgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRSZXN1
bHQgPSAiCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbCisgICAgICAg
ICAgICAgICAgICAgICJpZiAoc2VuZFJlc3VsdCkiICsgKCIgeyIgaWYgbGVuKHNlbGYucG9zdF9j
YWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAgICBdICsgWyIgICAgIiArIHMg
Zm9yIHMgaW4gc2VsZi5wb3N0X2NhbGxfc3RtdHNdICsgWworICAgICAgICAgICAgICAgICAgICAo
In0iIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAg
ICBmIntzZW5kX3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOyIsCisgICAgICAgICAgICBdCisKKworICAgIGRl
ZiBwcm9jZXNzX2luX2FyZ3Moc2VsZiwgaW5fYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAg
IGZvciBpIGluIGluX2FyZ3M6CisgICAgICAgICAgICBpZiBpLnR5cGUuaXNfY29uc3RfcG9pbnRl
cigpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihj
cHBfZXhwcihpLnR5cGUsIGkubmFtZSksIHdlYmtpdF9pcGNfdHlwZXNbaS50eXBlXSldCisKKyAg
ICBkZWYgcHJvY2Vzc19vdXRfYXJncyhzZWxmLCBvdXRfYXJnczogTGlzdFtjcHBfYXJnXSk6Cisg
ICAgICAgIGZvciBvIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaWYgby50eXBlLmlzX3BvaW50
ZXIoKToKKyAgICAgICAgICAgICAgICB2YWx1ZV90eXBlID0gby50eXBlLmdldF92YWx1ZV90eXBl
KCkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5
cGVzW3ZhbHVlX3R5cGVdCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY192
YWx1ZV90eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9ID0ge3sgfX07Il0KKyAg
ICAgICAgICAgICAgICBlID0gY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpCisgICAgICAgICAgICAg
ICAgc2VsZi5vdXRfZXhwcnMgKz0gW2VdCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxf
c3RtdHMgKz0gWworICAgICAgICAgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgICAg
ICAgICAgZiJpZiAoe28ubmFtZX0pIiwKKyAgICAgICAgICAgICAgICAgICAgZiIgICAgKntvLm5h
bWV9ID0ge3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCisgICAgICAg
ICAgICAgICAgICAgICNmbXQ6IG9uCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxp
ZiBvLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdl
YmtpdF9pcGNfdHlwZXNbby50eXBlXQorICAgICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNl
KHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICB2
ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAg
ICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1l
KX07Il0KKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBl
LCB2Lm5hbWUpXQorICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90
eXBlKCJzaXplX3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCisgICAgICAgICAgICAgICAgc2Vs
Zi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgICAgICBmIm1lbWNweSh7by5u
YW1lfS5kYXRhLCB7di5uYW1lfS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXplb2Yoe3N0
cih3ZWJraXRfaXBjX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkpfSkpOyIKKyAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJz
ICs9IFtjcHBfZXhwcihvLnR5cGUsIG8ubmFtZSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5f
dmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5
cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmV0dXJuX3R5
cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5
cGVzW3JldHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKGlw
Y19yZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10
cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9
ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbcmV0dXJuX3ZhbHVlX2V4cHJd
ICsgc2VsZi5vdXRfZXhwcnMKKyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbZiJyZXR1cm4g
e3N0cih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgcmV0dXJuX3R5
cGUpKX07Il0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8v
IE5PTElOVCIgaWYgIl8iIGluIHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiIi5q
b2luKGYiXG4gICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxs
X3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKyBzZWxmLnJldHVybl9zdG10cykKKyAgICAg
ICAgcmV0dXJuIGYiIiJcbntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH0KK3t7e2Jv
ZHl9Cit9fSIiIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKG9i
amVjdCk6CisgICAgbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJn
czogY3BwX2FyZ19saXN0CisgICAgYm9keTogTGlzdFtzdHJdCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMu
bmFtZQorCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQor
ICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYuYm9keSA9IFsi
bm90SW1wbGVtZW50ZWQoKTsiXQorICAgICAgICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlwZS50eXBl
X25hbWUgIT0gInZvaWQiOgorICAgICAgICAgICAgc2VsZi5ib2R5ICs9IFsicmV0dXJuIHsgfTsi
XQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5U
IiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICJcbntcbiAgICAi
ICsgIlxuICAgICIuam9pbihzZWxmLmJvZHkpICsgIlxufSIKKyAgICAgICAgcmV0dXJuIGYiXG57
c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2Vs
Zi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9e2JvZHl9IgorCisKK2NsYXNzIGNvbnRl
eHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAg
aW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbF0KKyAgICB1bmltcGxzOiBMaXN0
W3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyXQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJhYmxlW2Nw
cF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfaW1w
bChmKSBmb3IgZiBpbiBmdW5jc10KKyAgICAgICAgc2VsZi51bmltcGxzID0gW3dlYmtpdF9pcGNf
Y3BwX3Byb3h5X3BsYWNlaG9sZGVyKGYpIGZvciBmIGluIHVuaW1wbGVtZW50ZWRdCisKKyAgICBk
ZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkg
Zm9yIGkgaW4gc2VsZi5pbXBscyArIHNlbGYudW5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShz
ZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVu
Y3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUu
Zm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIHdlYmtp
dF9pcGNfY3BwX2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJn
X2xpc3QKKyAgICBpc19leHRlbnNpb246IGJvb2wKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtz
dHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0
W3N0cl0KKyAgICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3Rb
Y3BwX2V4cHJdCisgICAgcmV0dXJuX3ZhbHVlX2V4cHI6IE9wdGlvbmFsW2NwcF9leHByXQorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYu
bmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSBjcHBf
ZnVuYy5vdmVybG9hZF9zdWZmaXgKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtd
KQorICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgorICAg
ICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0g
W10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4
cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBzZWxmLnJldHVy
bl92YWx1ZV9leHByID0gTm9uZQorCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUo
Y3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1
bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19hcmdzKGNwcF9m
dW5jLmFyZ3MuYXJncywgc2V0KGluX2FyZ3MpLCBzZXQob3V0X2FyZ3MpKQorICAgICAgICBzZWxm
LnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBl
eHQgPSAiZ2V0RXh0ZW5zaW9ucygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgorCisg
ICAgICAgIGluX2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJz
KQorICAgICAgICBpc19hc3luYyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAorCisgICAgICAg
IGNhbGxfZXhwciA9IGYibV9jb250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgor
ICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoKKyAgICAgICAgICAgIHNlbGYu
Y2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2VsZi5jYWxsX3N0bXRzICs9IFtmIntzdHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhwcil9ID0g
e2NhbGxfZXhwcn07Il0KKyAgICAgICAgaWYgbm90IGlzX2FzeW5jOgorICAgICAgICAgICAgb3V0
X2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAg
ICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFtmImNvbXBsZXRpb25IYW5kbGVyKHtvdXRf
ZXhwcnN9KTsiXQorCisgICAgZGVmIHByb2Nlc3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9h
cmddLCBpbl9hcmdzOiBTZXRbY3BwX2FyZ10sIG91dF9hcmdzOiBTZXRbY3BwX2FyZ10pOgorICAg
ICAgICBmb3IgYSBpbiBhcmdzOgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2NvbnN0X3BvaW50
ZXIoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGlmIGEgaW4g
aW5fYXJnczoKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJnKGEpCisgICAg
ICAgIGlmIHNlbGYub3V0X2V4cHJzOgorICAgICAgICAgICAgb3V0X2FyZ19kZWNscyA9ICIsICIu
am9pbihmIntzdHIoZS50eXBlKX0iIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAg
ICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh7b3V0X2FyZ19kZWNsc30pPiYmIiksICJjb21wbGV0aW9uSGFuZGxlciIpXQor
CisgICAgZGVmIHByb2Nlc3NfaW5fYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBzZWxm
LmFyZ3MuYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90
eXBlKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSksIGEubmFtZSldCisgICAgICAgIHNlbGYuaW5f
ZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKHdlYmtpdF9pcGNfdHlw
ZXNbYS50eXBlXSwgYS5uYW1lKSwgYS50eXBlKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmco
c2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCk6CisgICAg
ICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5h
bWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodmFsdWVfYXJn
LnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgc2Vs
Zi5pbl9leHBycyArPSBbY3BwX2V4cHIoYS50eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9IildCisg
ICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQor
ICAgICAgICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1tlLnR5
cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4
cHIoZSwgd2Via2l0X2lwY192YWx1ZV90eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfZHlu
YW1pY19zcGFuKCk6CisgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90
eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0X2NwcF90
eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpCisgICAgICAgICAgICBzZWxmLmFyZ3Mu
YXJncyArPSBbc2l6ZV9hcmddCisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtp
dF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3Jl
X2FyZy5uYW1lKX0oc3RhdGljX2Nhc3Q8c2l6ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsiXQorICAg
ICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIGYie3N0
b3JlX2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lw
Y190eXBlc1thLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lw
Y19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwg
d2Via2l0X2lwY190eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfc3BhbigpOgorICAgICAg
ICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAg
ICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5
cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBb
ZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9IHt7IH19OyJdCisg
ICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3Rv
cmVfYXJnLm5hbWUpXQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190
eXBlc1thLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19j
b252ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Vi
a2l0X2lwY190eXBlKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBhLnR5cGUu
aXNfcmVmZXJlbmNlKCkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNf
dHlwZXNbYS50eXBlXQorICAgICAgICAgICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0
X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyAr
PSBbZiJ7c2VsZi5ucyh2YWx1ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSB7eyB9
fTsiXQorICAgICAgICAgICAgZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcu
bmFtZSkKKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2VdCisgICAgICAgICAgICBzZWxm
Lm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4
cHIoZSwgd2Via2l0X2lwY190eXBlKSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUo
c2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNf
dm9pZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdl
YmtpdF9pcGNfdHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0g
Y3BwX2V4cHIocmV0dXJuX3R5cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKz0gW2Yie3JldHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhw
ci5leHByfSA9IHt7IH19OyJdCisgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBj
X21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgaXBj
X3JldHVybl90eXBlKSldCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSByZXR1cm5f
dmFsdWVfZXhwcgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGJvZHkgPSAiIi5q
b2luKGYiXG4gICAgICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYu
Y2FsbF9zdG10cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIiAg
ICB2b2lkIHtzZWxmLm5hbWV9e3NlbGYub3ZlcmxvYWRfc3VmZml4fSh7c3RyKHNlbGYuYXJncyl9
KQorICAgIHt7e2JvZHl9CisgICAgfX0iIiIKKworICAgIGRlZiBucyhzZWxmLCB0eXBlOiBjcHBf
dHlwZSk6CisgICAgICAgICMgVE9ETzogbmFtZXNwYWNlIGluZm8gaXMgbm90IHN0b3JlZCBpbiBu
YW1lcy4KKyAgICAgICAgaWYgdHlwZS50eXBlX25hbWUgPT0gIkFjdGl2ZUluZm8iOgorICAgICAg
ICAgICAgcmV0dXJuICJXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6IiArIHN0cih0eXBlKQor
ICAgICAgICByZXR1cm4gc3RyKHR5cGUpCisKK2RlZiB3ZWJraXRfaXBjX3Jlc29sdmVfb3Zlcmxv
YWRfc3VmZml4KGZ1bmNzIDogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICBjb3VudHMgPSBjb2xs
ZWN0aW9ucy5Db3VudGVyKGYubmFtZSBmb3IgZiBpbiBmdW5jcykKKyAgICBzdWZmaXhlcyA6IENv
dW50ZXJbc3RyXSA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoKQorICAgIGZvciBmIGluIGZ1bmNzOgor
ICAgICAgICBpZiBjb3VudHNbZi5uYW1lXSA+IDE6CisgICAgICAgICAgICBmLm92ZXJsb2FkX3N1
ZmZpeCA9IHN0cihzdWZmaXhlc1tmLm5hbWVdKQorICAgICAgICAgICAgc3VmZml4ZXMudXBkYXRl
KFtmLm5hbWVdKQorCisKK2NsYXNzIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9i
amVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIEMrKyBpbXBsZW1lbnRhdGlvbiBn
ZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX2ltcGxdCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNl
bGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKworICAg
IGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihp
KSBmb3IgaSBpbiBzZWxmLmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAg
ICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfZm4sCisgICAgICAg
ICAgICBjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25z
KCkpLAorICAgICAgICApCisKKworY2xhc3MgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0
b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgV2ViS2l0IElQQyBtZXNz
YWdlIGRlZmluaXRpb24gZ2VuZXJhdG9yLiIKKyAgICBtc2dzOiBMaXN0W3dlYmtpdF9pcGNfbXNn
XQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgor
ICAgICAgICBzZWxmLm1zZ3MgPSBbd2Via2l0X2lwY19tc2coZikgZm9yIGYgaW4gZnVuY3NdCisK
KyAgICBkZWYgZ2V0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIuam9pbihzdHIo
bSkgZm9yIG0gaW4gc2VsZi5tc2dzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAg
ICB3cml0ZV9maWxlKGNvbnRleHRfbWVzc2FnZXNfZm4sIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxh
dGUuZm9ybWF0KHNlbGYuZ2V0X21lc3NhZ2VzKCkpKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZyhh
cmdfc3BlYzogc3RyLCBhcmdfaW5kZXg6IGludCk6CisgICAgciA9IGFyZ19zcGVjLnJzcGxpdCgi
ICIsIDEpCisgICAgbmFtZSA9ICIiCisgICAgdHlwZSA9IE5vbmUKKyAgICBpZiBsZW4ocikgPiAx
IGFuZCByWzBdICE9ICJjb25zdCI6CisgICAgICAgIG5hbWUgPSByWzFdLnN0cmlwKCkKKyAgICAg
ICAgdHlwZSA9IGdldF9jcHBfdHlwZShyWzBdKQorICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSAi
YXJne30iLmZvcm1hdChhcmdfaW5kZXgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoYXJn
X3NwZWMpCisgICAgcmV0dXJuIGNwcF9hcmcodHlwZSwgbmFtZSkKKworCitkZWYgY3JlYXRlX2Nw
cF9hcmdfbGlzdChhcmdzX3NwZWNzOiBJdGVyYWJsZVtzdHJdKToKKyAgICByZXR1cm4gY3BwX2Fy
Z19saXN0KFtjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9yIGksIGUg
aW4gZW51bWVyYXRlKGFyZ3Nfc3BlY3MpXSkKKworCitkZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6
IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJdLCBpc19leHRlbnNp
b246IGJvb2wpOgorICAgIHJldHVybiBjcHBfZnVuYyhuYW1lPW5hbWUsIHJldHVybl90eXBlPWdl
dF9jcHBfdHlwZShyZXR1cm5fc3BlYyksIGFyZ3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3Nw
ZWNzKSwgaXNfZXh0ZW5zaW9uPWlzX2V4dGVuc2lvbikKKworCitkZWYgcmVhZF9saW5lc191bnRp
bChsaW5lcyA6IEl0ZXJhYmxlW3N0cl0sIG1hdGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jbc3RyLCBO
b25lLCBOb25lXToKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgaWYgcmUubWF0Y2go
bWF0Y2gsIGxpbmUuc3RyaXAoKSk6CisgICAgICAgICAgICBicmVhaworICAgICAgICB5aWVsZCBs
aW5lCisKK2RlZiBtYWluKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIo
InVzYWdlOiAlcHJvZyBbb3B0aW9uc10iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVy
Ym9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlByaW50IHNvbWUgZGVidWcgaW5mbyBm
cm9tIHRoZSBnZW5lcmF0b3Igc2NyaXB0IikKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2Fy
Z3MoKQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBm
cm9tIHdlYiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzLgorCisgICAgIyBGSVhNRTogVW50aWwgZXh0
ZW5zaW9ucyBoZWFkZXIgaXMgcmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBs
ZW1lbnRhdGlvbgorICAgICMgd2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0
aW9uIGlzIG9yIGlzIG5vdCBhbiBleHRlbnNpb24gZnVuY3Rpb24uCisgICAgZXh0ZW5zaW9uX3Np
Z25hdHVyZXMgOiBTZXRbc3RyXSA9IHNldCgpCisgICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5w
dXRfZm4pIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAg
ICAgICBtID0gcmUubWF0Y2gociIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsi
LCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRl
X2NwcF9mdW5jKAorICAgICAgICAgICAgICAgICAgICBuYW1lPW1bMl0sCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9
Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVu
c2lvbj1UcnVlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBleHRlbnNpb25f
c2lnbmF0dXJlcy51cGRhdGUoW3N0cihmdW5jKV0pCisgICAgZnVuY3MgPSBbXQorICAgIHVuaW1w
bGVtZW50ZWQgPSBbXQorICAgIGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgorICAgICAg
ICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGlu
ZXMoKSkKKyAgICAgICAgICAgIGZvciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBG
dW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVz
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgcGFz
cworCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8g
RW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAg
ICAgICAgICAgICBtID0gcmUubWF0Y2gociJccyooXFMrKVxzKyhcdyspXCgoLiopXCkgZmluYWw7
IiwgbGluZSkKKyAgICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICBmdW5j
X25hbWUgPSBtWzJdCisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMo
CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdz
X3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWdu
YXR1cmVzCisgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQorICAgICAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5pbXBsZW1lbnRlZC5hcHBlbmQo
ZnVuYykKKworCisgICAgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcykK
KyAgICAjIEluaXRpYWxpemUgV2ViS2l0IElQQyBnZW5lcmF0aW9uLiBDb25zdHJ1Y3QgdHlwZSBt
YXBwaW5ncyBmb3IgdGhlIHVzZWQgQysrIHR5cGVzIC0+IElQQyB0eXBlcy4KKyAgICAjIFRPRE86
IG5hbWVzcGFjaW5nIGlzc3Vlcy4KKyAgICBhaV90eXBlID0gZ2V0X2NwcF90eXBlKCJBY3RpdmVJ
bmZvJiIpCisgICAgYWlfdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZSgiV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8iKQorICAgIHdlYmtpdF9pcGNfdHlwZXNbYWlfdHlw
ZV0gPSBhaV90cmFuc2Zlcl90eXBlCisKKyAgICB3aXRoIG9wZW4odHlwZXNfaW5wdXRfZm4pIGFz
IGY6CisgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAgICAgICBmb3IgXyBp
biByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxv
d2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbGluZSBpbiBy
ZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGlj
X2Fzc2VydFwoc3RkOjppc19zYW1lX3Y8KFx3KyksIChcdyspPlwpOyIsIGxpbmUpCisgICAgICAg
ICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2NwcF90eXBl
KG1bMV0pXSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3Kylc
KSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAg
ICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAg
IGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lw
Y190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QK
KyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBj
cHBfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgICMgRklYTUU6IEhlcmUgd2UgdXNlIDw9IGluc3RlYWQgb2YgPT0gZHVlIHRvIHBv
aW50ZXJzLCBzdWNoIGFzIEdDR0xzeW5jLCBHQ0dMaW50cHRyLCAuLi4uCisgICAgICAgICAgICAj
IFRoaXMgZW5kcyB1cCBmYWlsaW5nIGlmIHRoZXJlIGV2ZXIgaXMgYXJyYXlzIG9mIHRoZXNlIHR5
cGVzLCBzaW5jZSBhcnJheXMgYXJlIGN1cnJlbnRseQorICAgICAgICAgICAgIyByZWludGVycHJl
dC1jYXN0ZWQuCisgICAgICAgICAgICAjIFdlYktpdCBJUEMgcmVxdWlyZXMgb25lIHNpemVkIHR5
cGUsIGJ1dCB0aGUgc2l6ZSBvZiB0aGVzZSBwb2ludGVyLWJhc2VkIHZhbHVlcyB3aWxsIGNoYW5n
ZQorICAgICAgICAgICAgIyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgICAgICBtID0g
cmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXplb2ZcKChc
dyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBf
dHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0
X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlw
ZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVy
c1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3Bw
X3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG0gPSBy
ZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVvZlwoKFx3
KylcKSAmJiBzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAg
ICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUo
bVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAg
ICAgICAgICAgICAgIGNwcF9jYXN0X3Rocm91Z2hfdHlwZSA9IGdldF9jcHBfdHlwZShtWzRdKQor
ICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNf
dHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyX3Rocm91Z2goY3BwX2Nh
c3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVy
dGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2lu
dGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAjIEZvciBhbGwgdHlwZXMgaW4gdGhlIGlucHV0IEFQSSwgZm9ybSBjb3JyZXNw
b25kaW5nIElQQyB0eXBlcyBhbmQgY29udmVyc2lvbnMuCisgICAgIyBUT0RPOiB0aGlzIGlzIG5v
dCBkcml2ZW4gYnkgdGhlIHR5cGluZy4KKyAgICBhbGxfdHlwZXMgPSBzZXQoKQorICAgIGZvciBm
dW5jIGluIGZ1bmNzOgorICAgICAgIGFsbF90eXBlcy51cGRhdGUoZnVuYy5hcmdzLnR5cGVzKCkg
KyBbZnVuYy5yZXR1cm5fdHlwZV0pCisgICAgIyBTb3J0IGJ5IGxlbiBzbyB0aGF0IHRlbXBsYXRl
IGFyZ3MgY29tZSBiZWZvcmUgdGVtcGxhdGVzLgorICAgIGZvciBjcHBfdHlwZSBpbiBzb3J0ZWQo
YWxsX3R5cGVzLCBrZXk9bGFtYmRhIHg6IGxlbih4LnR5cGVfbmFtZSkpOgorICAgICAgICBpZiBj
cHBfdHlwZSBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgY29udGludWUKKyAgICAg
IAorICAgICAgICBpZiBjcHBfdHlwZS5pc19keW5hbWljX3NwYW4oKSBvciBjcHBfdHlwZS5pc19z
cGFuKCk6CisgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gd2Via2l0X2lwY19nZXRfc3Bhbl90
cmFuc2Zlcl90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBf
dHlwZV0gPSB0cmFuc2Zlcl90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgIGlmIGNw
cF90eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCk6CisgICAgICAgICAgICAgICAg
d2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0g
d2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9u
CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyh0cmFuc2Zlcl90
eXBlLCBjcHBfdHlwZSldID0gd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24KKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RvcmVfdHlwZSA9IHdlYmtpdF9pcGNf
Z2V0X3NwYW5fc3RvcmVfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBj
X3R5cGVzX2NvbnZlcnRlcnNbKHN0b3JlX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJh
eV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgZWxpZiBjcHBfdHlwZS5pc19y
ZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5pc19jb25zdF9yZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5p
c19jb250YWluZXIoKToKKyAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBjcHBfdHlwZS5nZXRfdmFs
dWVfdHlwZSgpIGlmIG5vdCBjcHBfdHlwZS5pc19jb250YWluZXIoKSBlbHNlIGNwcF90eXBlCisg
ICAgICAgICAgICBpZiB2YWx1ZV90eXBlLmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAgICAg
IGNvbnRhaW5lZF90eXBlID0gdmFsdWVfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKQorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2Nv
bnRhaW5lZF90eXBlXQorICAgICAgICAgICAgICAgIGlmIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5
cGUgPT0gY29udGFpbmVkX3R5cGU6CisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoZiJ7dmFsdWVfdHlwZS5n
ZXRfY29udGFpbmVyX25hbWUoKX08e3N0cih3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlKX0+IikK
KyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFuc2Zl
cl90eXBlCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogSGVyZSBtaWdodCBiZSBjYXNlIHdo
ZXJlIFZlY3RvcjxHQ0dMaW50PiB3YXMgdXNlZCBpbiB0aGUgaW50ZXJmYWNlIGFuZCBWZWN0b3I8
aW50MzJfdD4gaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBJUEMgZGVmaW5p
dGlvbi4gVGhlcmUgaXMgbm8gc2Vuc2libGUgd2F5IHRvIGRvIHRoaXMgYXQgdGhlIG1vbWVudC4g
V2UgZG8gbm90IGNvbnZlcnQsIHJhdGhlcgorICAgICAgICAgICAgICAgICAgICAjIGV4cGVjdCB0
aGF0IGFsbCB0aGUgaW52b2NhdGlvbnMgYXJlIHRha2VuIGNhcmUgb2YgdGhlIGZhY3QgdGhhdCBH
Q0dMaW50IGlzIHRoZSBzYW1lIHR5cGUgYXMgaW50MzJfdC4KKyAgICAgICAgICAgICAgICAgICAg
IyBUaGlzIHdpbGwgbm90IGhvbGQgZm9yIGFsbCB0eXBlcyBzdWNoIGFzIEdDR0xib29sZWFuLgor
ICAgICAgICAgICAgICAgICAgICAjd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlw
ZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lv
bgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2Nw
cF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdlYmtpdF9p
cGNfdHlwZXNbY3BwX3R5cGVdID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgIAorICAg
ICMgVGhlIGlucHV0IHRvIHRoZSBnZW5lcmF0b3JzIGlzIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJl
bW90ZS4KKyAgICAjIFJ1biB0aGUgdmFyaW91cyBnZW5lcmF0b3JzLgorICAgIGdlbmVyYXRvcnMg
PSBbCisgICAgICAgIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNz
LCB1bmltcGxlbWVudGVkKSwKKyAgICAgICAgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0
b3IoZnVuY3MpLAorICAgICAgICBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5j
cyksCisgICAgXQorICAgIGZvciBnIGluIGdlbmVyYXRvcnM6CisgICAgICAgIGcuZ2VuZXJhdGUo
KQorCisgICAgaWYgb3B0aW9ucy52ZXJib3NlOgorICAgICAgICBwcmludCgiSW1wbGVtZW50ZWQ6
IikKKyAgICAgICAgcHJpbnQoIiIuam9pbihmIiAgICB7c3RyKGkpfSBmaW5hbFxuIiBmb3IgaSBp
biBmdW5jcykpCisgICAgICAgIHByaW50KCJVbmltcGxlbWVudGVkOiIpCisgICAgICAgIHByaW50
KCIiLmpvaW4oZiIgICAge3N0cih1KX0gZmluYWxcbiIgZm9yIHUgaW4gdW5pbXBsZW1lbnRlZCkp
CisgICAgICAgIHByaW50KGYiSW1wbGVtZW50ZWQ6IHtsZW4oZnVuY3MpfSwgdW5pbXBsZW1lbnRl
ZDoge2xlbih1bmltcGxlbWVudGVkKX0sIHRvdGFsOiB7bGVuKGZ1bmNzKStsZW4odW5pbXBsZW1l
bnRlZCl9IikKKyAgICAgICAgcHJpbnQoIkMrKyB0eXBlIG1hcCB0byBXZWJLaXQgSVBDIHR5cGUg
bWFwOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAgICAg
ICAgaWYgdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgICAgIHByaW50KGYiICAg
IHtzdHIodCl9IC0+IHtzdHIod2Via2l0X2lwY190eXBlc1t0XSl9IikKKyAgICAgICAgcHJpbnQo
IkMrKyB0eXBlcyB3aXRob3V0IFdlYktpdCBJUEMgdHlwZToiKQorICAgICAgICBmb3IgXywgdCBp
biBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgbm90IGluIHdlYmtpdF9pcGNf
dHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cih0KX0iKQorICAgICAgICBw
cmludCgiV2ViS2l0IElQQyB0eXBlIGNvbnZlcnNpb25zIikKKyAgICAgICAgZm9yIChhLCBiKSwg
Y29udmVydGVyIGluIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5pdGVtcygpOgorICAgICAg
ICAgICAgcHJpbnQoZiIgICAge3N0cihhKX0gLT4ge3N0cihiKX0gOiB7Y29udmVydGVyLl9fbmFt
ZV9ffSIpCisgICAgICAgIHByaW50KCJEb25lLiIpCisgICAgcmV0dXJuIDAKKworCitpZiBfX25h
bWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyODA0YjBl
MmE0ZmQ5Y2M2ZTAyNTY5MDAxNzI0MGZmZjRiMGEwNTYwLi41YzEzMmI2YjFlN2I3MTAwNTJhMGZm
NGNhOGUzY2UzZjBmZGMyYjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMDEgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdM
IGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2lu
ZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEFkZHMgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHRoZSBt
aXNzaW5nIGZ1bmN0aW9uYWxpdHkuIERvZXMgbm90IHlldAorICAgICAgICBlbmFibGUgdGhlIHRl
c3RzIHRoYXQgYWN0dWFsbHkgcGFzcyBidXQgd2hpY2ggd2VyZSBza2lwcGVkIGJlZm9yZSB0aGUK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIwLTEyLTAyICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1dQRV0gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4gR2FyZGVu
ZWQgc2V2ZXJhbCBmbGFreSB0aW1lb3V0IGZhaWx1cmVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4NTMwNTgwMDMzOTBmZDc1
MzdkYzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBhMmQ0NjcyNjNjNzA4Yzk0OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTcsNiArMzE3LDE0IEBA
IGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93
ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmdsIFsgU2tpcCBdCiBqcy9z
aGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIx
ODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQt
bXNlLWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2Nh
bnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRl
eHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2Nh
bnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sIFsgRmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4
dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmdwdSBbIFNraXAgXQog
CiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlwZXMuaHRtbCBbIFNraXAg
XQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415297</attachid>
            <date>2020-12-03 05:44:45 -0800</date>
            <delta_ts>2020-12-04 01:41:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201203154442.patch</filename>
            <type>text/plain</type>
            <size>412517</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA0YTEwZDEzZDQ1ZjJj
M2I5ZWJlYTMzOTlmZmNkMWM4OTI4MWEyNi4uNGE4MWI0NTg2YzlmN2FhNjNhODk4MGEwMDVkODNj
Y2FjZDM1ZjcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgRXh0cmFjdHMgYW4gaW50ZXJmYWNlIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHdoaWNoIGlzCisgICAgICAgIHVzZWQgdG8gc3Vi
bWl0IElPU3VyZmFjZXMgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4gRm9yCisgICAgICAg
IHdlYiBwcm9jZXNzIFdlYkdMLCB0aGVzZSBnbyB0byBXZWJHTExheWVyLiBGb3IgR1BVIHByb2Nl
c3MgV2ViR0wsCisgICAgICAgIHRoZSBJT1N1cmZhY2VzIGdvIHRvIHRoZSBwcmVwYXJlRm9yRGlz
cGxheSBjYWxsZXIsIGUuZy4gdGhlCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLCB3
aGljaCB0aGVuIHJldHVybiB0aGUgSU9TdXJmYWNlcyBiYWNrCisgICAgICAgIHRvIFdlYiBwcm9j
ZXNzIHNpZGUuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgd2lsbCBzZW5kCisgICAgICAg
IHRoZW0gdG8gV2ViR0xMYXllci4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBl
eGlzdGluZyB3ZWJnbCB0ZXN0cyBvbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiB3b3Jrcy4KKworICAg
ICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVy
U3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRRdWVyeVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiaW5kU2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJhbnNmb3JtRmVl
ZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFN5bmMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTeW5jOjp1cGRhdGVDYWNoZSk6CisgICAgICAg
ICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1Nj
cmVlbkRpZENoYW5nZSk6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdl
L0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpjcmVhdGVH
cmFwaGljc0NvbnRleHRHTCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vSG9zdFdpbmRvdy5o
OgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6aXNJbkdQVVByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNJbkdQ
VVByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgor
ICAgICAgICAoR0NHTFNwYW48R0NHTHZvaWQ+OjpHQ0dMU3Bhbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cG93ZXJQ
cmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29u
dGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0QnVmZmVy
c1RvQXV0b0NsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBwb3J0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNp
b25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5
T2JqZWN0dWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpJbml0
aWFsaXplRUdMRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVm
ZmVyQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3Bs
YXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXll
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6YXNDVik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6cGxhdGZvcm1Td2FwQ2hhaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tOgorICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2aWNlUGl4ZWxS
YXRpbzpjb250ZW50c09wYXF1ZTpdKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBzd2FwQ2hhaW5d
KToKKyAgICAgICAgKC1bV2ViR0xMYXllciBwcmVwYXJlRm9yRGlzcGxheV0pOgorICAgICAgICAo
LVtXZWJHTExheWVyIGRpc3BsYXldKToKKyAgICAgICAgKFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnBy
ZXNlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6dmVy
dGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNv
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVy
U3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisKIDIw
MjAtMTItMDMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBHcmFwaGljc0NvbnRleHRHTCBoYXMgYSBjb3VwbGUgbm9uLXJvYnVzdCBnZXR0ZXJzIGFuZCBv
dGhlciBzbWFsbCBBUEkgcHJvYmxlbXMgcHJldmVudGluZyBHUFUgcHJvY2VzcyBpbXBsZW1lbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3YTZhZDc0NzBkZDhjNjY4OTYxMDc0NTgzNGQxNzk4ZDgxYTAxMGJj
Li4yZmU1NjZhNGIxNWJkNGJlZWI5N2QwYjcwMTllNDNjZWYxZWFhMjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc0MiBAQAorMjAyMC0xMi0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1vdGVXZWJHTEJhY2tlbmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJz
aW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVu
dCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxlbWVu
dGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBhc3Mg
dGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBmcm9t
IHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAgICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBpcyBy
dW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBj
b21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVhc2Ugb2YgcmV2aWV3LgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gV2ViS2l0IHNpZGUuIFRoaXMgY2xh
c3Mgd2lsbAorICAgICAgICBmb3J3YXJkIGNhbGxzIHJlY2VpdmVkIHZpYSBJUEMgdG8gdGhlIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLiBBdCB0aGUKKyAgICAgICAgbW9tZW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIGluc3RhbmNlIGlzIGEgZGlyZWN0IGNoaWxkIG9mCisgICAgICAgIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisKKyAgICAgICAgQ29tcG9zaXRpbmcgaXMgaW1wbGVtZW50
ZWQgb25seSBmb3IgUExBVEZPUk0oQ09DT0EpLgorCisgICAgICAgIE1pc3Npbmc6CisgICAgICAg
ICAtIFNpbXVsYXRlZCBjb250ZXh0IGxvc3MKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNvbnRleHQg
Y2hhbmdlCisgICAgICAgICAtIFBhaW50IFdlYkdMIGNvbnRlbnRzIHRvIDJEIGNhbnZhcworICAg
ICAgICAgLSBVcGxvYWQgdmlkZW8gdG8gV2ViR0wKKyAgICAgICAgIC0gVXBsb2FkIGNhbnZhcyB0
byBXZWJHTAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNz
Q29udGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5n
ZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cmVjeWNsZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpwcmVzZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OmRldGFjaENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBy
ZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6IEFkZGVkLgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDogQWRkZWQuCisgICAgICAgIChzZXRGYWlsTmV4
dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKHN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAg
KG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChhY3RpdmVUZXh0dXJl
KToKKyAgICAgICAgKGF0dGFjaFNoYWRlcik6CisgICAgICAgIChiaW5kQXR0cmliTG9jYXRpb24p
OgorICAgICAgICAoYmluZEJ1ZmZlcik6CisgICAgICAgIChiaW5kRnJhbWVidWZmZXIpOgorICAg
ICAgICAoYmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChiaW5kVGV4dHVyZSk6CisgICAgICAg
IChibGVuZENvbG9yKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb24pOgorICAgICAgICAoYmxlbmRF
cXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKGJsZW5kRnVuYyk6CisgICAgICAgIChibGVuZEZ1
bmNTZXBhcmF0ZSk6CisgICAgICAgIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAg
KGNsZWFyKToKKyAgICAgICAgKGNsZWFyQ29sb3IpOgorICAgICAgICAoY2xlYXJEZXB0aCk6Cisg
ICAgICAgIChjbGVhclN0ZW5jaWwpOgorICAgICAgICAoY29sb3JNYXNrKToKKyAgICAgICAgKGNv
bXBpbGVTaGFkZXIpOgorICAgICAgICAoY29weVRleEltYWdlMkQpOgorICAgICAgICAoY29weVRl
eFN1YkltYWdlMkQpOgorICAgICAgICAoY3JlYXRlQnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoY3JlYXRlUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVNoYWRlcik6CisgICAgICAgIChjcmVhdGVUZXh0
dXJlKToKKyAgICAgICAgKGN1bGxGYWNlKToKKyAgICAgICAgKGRlbGV0ZUJ1ZmZlcik6CisgICAg
ICAgIChkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChkZWxldGVQcm9ncmFtKToKKyAgICAg
ICAgKGRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChkZWxldGVTaGFkZXIpOgorICAgICAg
ICAoZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChkZXB0aEZ1bmMpOgorICAgICAgICAoZGVwdGhN
YXNrKToKKyAgICAgICAgKGRlcHRoUmFuZ2UpOgorICAgICAgICAoZGV0YWNoU2hhZGVyKToKKyAg
ICAgICAgKGRpc2FibGUpOgorICAgICAgICAoZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAg
ICAgICAgKGRyYXdBcnJheXMpOgorICAgICAgICAoZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKGVu
YWJsZSk6CisgICAgICAgIChlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChmaW5p
c2gpOgorICAgICAgICAoZmx1c2gpOgorICAgICAgICAoZnJhbWVidWZmZXJSZW5kZXJidWZmZXIp
OgorICAgICAgICAoZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoZnJvbnRGYWNlKToK
KyAgICAgICAgKGdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKGdldEFjdGl2ZUF0dHJpYik6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKGdldEF0dHJpYkxvY2F0aW9uKToK
KyAgICAgICAgKGdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0U3RyaW5nKToKKyAg
ICAgICAgKGdldEZsb2F0dik6CisgICAgICAgIChnZXRJbnRlZ2Vydik6CisgICAgICAgIChnZXRJ
bnRlZ2VyNjQpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChnZXRQcm9ncmFt
aSk6CisgICAgICAgIChnZXRCb29sZWFudik6CisgICAgICAgIChnZXRFcnJvcik6CisgICAgICAg
IChnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFByb2dy
YW1JbmZvTG9nKToKKyAgICAgICAgKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAg
ICAoZ2V0U2hhZGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKGdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChnZXRTaGFkZXJTb3VyY2UpOgorICAg
ICAgICAoZ2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRUZXhQYXJhbWV0ZXJpKToKKyAg
ICAgICAgKGdldFVuaWZvcm1mdik6CisgICAgICAgIChnZXRVbmlmb3JtaXYpOgorICAgICAgICAo
Z2V0VW5pZm9ybXVpdik6CisgICAgICAgIChnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAo
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAgKGhpbnQpOgorICAgICAgICAoaXNCdWZm
ZXIpOgorICAgICAgICAoaXNFbmFibGVkKToKKyAgICAgICAgKGlzRnJhbWVidWZmZXIpOgorICAg
ICAgICAoaXNQcm9ncmFtKToKKyAgICAgICAgKGlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGlz
U2hhZGVyKToKKyAgICAgICAgKGlzVGV4dHVyZSk6CisgICAgICAgIChsaW5lV2lkdGgpOgorICAg
ICAgICAobGlua1Byb2dyYW0pOgorICAgICAgICAocGl4ZWxTdG9yZWkpOgorICAgICAgICAocG9s
eWdvbk9mZnNldCk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKHNh
bXBsZUNvdmVyYWdlKToKKyAgICAgICAgKHNjaXNzb3IpOgorICAgICAgICAoc2hhZGVyU291cmNl
KToKKyAgICAgICAgKHN0ZW5jaWxGdW5jKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jU2VwYXJhdGUp
OgorICAgICAgICAoc3RlbmNpbE1hc2spOgorICAgICAgICAoc3RlbmNpbE1hc2tTZXBhcmF0ZSk6
CisgICAgICAgIChzdGVuY2lsT3ApOgorICAgICAgICAoc3RlbmNpbE9wU2VwYXJhdGUpOgorICAg
ICAgICAodGV4UGFyYW1ldGVyZik6CisgICAgICAgICh0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAg
KHVuaWZvcm0xZik6CisgICAgICAgICh1bmlmb3JtMWZ2KToKKyAgICAgICAgKHVuaWZvcm0xaSk6
CisgICAgICAgICh1bmlmb3JtMWl2KToKKyAgICAgICAgKHVuaWZvcm0yZik6CisgICAgICAgICh1
bmlmb3JtMmZ2KToKKyAgICAgICAgKHVuaWZvcm0yaSk6CisgICAgICAgICh1bmlmb3JtMml2KToK
KyAgICAgICAgKHVuaWZvcm0zZik6CisgICAgICAgICh1bmlmb3JtM2Z2KToKKyAgICAgICAgKHVu
aWZvcm0zaSk6CisgICAgICAgICh1bmlmb3JtM2l2KToKKyAgICAgICAgKHVuaWZvcm00Zik6Cisg
ICAgICAgICh1bmlmb3JtNGZ2KToKKyAgICAgICAgKHVuaWZvcm00aSk6CisgICAgICAgICh1bmlm
b3JtNGl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAodW5pZm9ybU1h
dHJpeDNmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKHVzZVByb2dy
YW0pOgorICAgICAgICAodmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjFm
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjFmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIyZik6
CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAodmVydGV4QXR0cmliM2YpOgor
ICAgICAgICAodmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjRmKToKKyAg
ICAgICAgKHZlcnRleEF0dHJpYjRmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJQb2ludGVyKToK
KyAgICAgICAgKHZpZXdwb3J0KToKKyAgICAgICAgKGJ1ZmZlckRhdGEwKToKKyAgICAgICAgKGJ1
ZmZlckRhdGExKToKKyAgICAgICAgKGJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAocmVhZG5QaXhl
bHMwKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMSk6CisgICAgICAgICh0ZXhJbWFnZTJEMCk6Cisg
ICAgICAgICh0ZXhJbWFnZTJEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTJEMCk6CisgICAgICAg
ICh0ZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UyRDApOgorICAg
ICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEpOgorICAgICAgICAo
ZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgor
ICAgICAgICAodmVydGV4QXR0cmliRGl2aXNvcik6CisgICAgICAgIChjcmVhdGVWZXJ0ZXhBcnJh
eSk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChpc1ZlcnRleEFycmF5
KToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAgIChjb3B5QnVmZmVyU3ViRGF0
YSk6CisgICAgICAgIChnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChpbnZhbGlk
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKHJlYWRCdWZmZXIpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKToKKyAgICAgICAgKHRleFN0b3JhZ2UyRCk6CisgICAgICAgICh0ZXhTdG9yYWdlM0QpOgor
ICAgICAgICAodGV4SW1hZ2UzRDApOgorICAgICAgICAodGV4SW1hZ2UzRDEpOgorICAgICAgICAo
dGV4U3ViSW1hZ2UzRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoY29w
eVRleFN1YkltYWdlM0QpOgorICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlM0QwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QxKToKKyAgICAgICAgKGdl
dEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAodW5pZm9ybTF1aSk6CisgICAgICAgICh1bmlm
b3JtMnVpKToKKyAgICAgICAgKHVuaWZvcm0zdWkpOgorICAgICAgICAodW5pZm9ybTR1aSk6Cisg
ICAgICAgICh1bmlmb3JtMXVpdik6CisgICAgICAgICh1bmlmb3JtMnVpdik6CisgICAgICAgICh1
bmlmb3JtM3Vpdik6CisgICAgICAgICh1bmlmb3JtNHVpdik6CisgICAgICAgICh1bmlmb3JtTWF0
cml4MngzZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKHVuaWZv
cm1NYXRyaXgyeDRmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAg
ICAgICh2ZXJ0ZXhBdHRyaWJJNGkpOgorICAgICAgICAodmVydGV4QXR0cmliSTRpdik6CisgICAg
ICAgICh2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0dWl2KToKKyAg
ICAgICAgKHZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKGRyYXdSYW5nZUVsZW1lbnRz
KToKKyAgICAgICAgKGRyYXdCdWZmZXJzKToKKyAgICAgICAgKGNsZWFyQnVmZmVyaXYpOgorICAg
ICAgICAoY2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmdik6CisgICAgICAg
IChjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKGNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKGRlbGV0
ZVF1ZXJ5KToKKyAgICAgICAgKGlzUXVlcnkpOgorICAgICAgICAoYmVnaW5RdWVyeSk6CisgICAg
ICAgIChlbmRRdWVyeSk6CisgICAgICAgIChnZXRRdWVyeSk6CisgICAgICAgIChnZXRRdWVyeU9i
amVjdHVpKToKKyAgICAgICAgKGNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoZGVsZXRlU2FtcGxl
cik6CisgICAgICAgIChpc1NhbXBsZXIpOgorICAgICAgICAoYmluZFNhbXBsZXIpOgorICAgICAg
ICAoc2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoc2FtcGxlclBhcmFtZXRlcmYpOgorICAg
ICAgICAoZ2V0U2FtcGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoZ2V0U2FtcGxlclBhcmFtZXRl
cmkpOgorICAgICAgICAoZmVuY2VTeW5jKToKKyAgICAgICAgKGlzU3luYyk6CisgICAgICAgIChk
ZWxldGVTeW5jKToKKyAgICAgICAgKGNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKHdhaXRTeW5j
KToKKyAgICAgICAgKGdldFN5bmNpKToKKyAgICAgICAgKGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGlzVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAg
KGJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZW5kVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChnZXRUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAocGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgIChyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiaW5kQnVmZmVy
QmFzZSk6CisgICAgICAgIChiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAgICAoZ2V0VW5pZm9ybUlu
ZGljZXMpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoZ2V0VW5pZm9y
bUJsb2NrSW5kZXgpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6CisgICAg
ICAgICh1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKGdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KToKKyAgICAgICAgKGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoYmxp
dEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZGVs
ZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAg
IChiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKToKKyAgICAgICAgKGluc2VydEV2ZW50TWFya2VyRVhUKToKKyAgICAgICAgKHB1c2hH
cm91cE1hcmtlckVYVCk6CisgICAgICAgIChwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChk
cmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAodmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
b2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJTb2NrZXRUYXNrU291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5
UmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6
OnNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6
CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNl
bmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVj
b2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVy
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpF
bmNvZGVyOjp3cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6
OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6
CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGls
aWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJl
ZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2Vu
ZFN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJh
bWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Fi
bGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2Nh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNo
YWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm1mdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9n
cmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1NoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nv
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRl
clNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFy
YW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
NGYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWIxZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYjRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliRGl2aXNvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
dWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2Uz
RCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1
YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxv
Y2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0ydWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliSTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1Jhbmdl
RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVl
cnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFF1ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVy
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNh
bXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3Jt
RmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5z
Zm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRV
bmlmb3JtSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bUJsb2NrQmluZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFy
cmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cHVzaEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZv
cm1hdGl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNh
bXBsZWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVp
NjR2Um9idXN0QU5HTEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVBy
b2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
bi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRS
ZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAzICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSVBDIHNob3VsZCBzdXBwb3J0IG5v
bi1ieXRlIGFsaWduZWQgZGF0YSByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBjMjkz
ZDdhMzlmMGQ4ZGFlMzE3NzA5N2VkODJjMGIyNDZkZTFhMjJlLi5mZThkMWI0ZWJkNjM2NGY1NjA2
NGVkYzU2M2I5NzIzYTE5NGQ1NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNTAsNiArMTI1
MCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9S
ZW5kZXJpbmdNb2RlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFlZDhl
YWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgyZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1ODk3
MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCArMzEx
LDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENv
Y29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5
ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjA4NDE3MjE2ODZjYjYzNDZlYTQxMjFl
NWI1MmEzNjc5MGQyZmU2YS4uY2ExNzVkNjdjODg1NDAwYTZhYzRhOGExYWQ4M2Y4NGIxYWUwZjk5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzIsNiArMTk3Miw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDY2ODc1MmM3OTUyNmJjNmNkMTQzYzJlZjY1
OTZmMTRjN2IwNzMzZWQuLmJiNGJhZDg3ZGZjYWU0MGI3ZmU0ZDAwYjBmY2UyNDFlZmZiOWQ1OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzU3LDEyICszNTcsMTQgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZmE3ZDdjNzMw
Y2Q2NjE0M2ZlYzg4ZjdiOTgzOTM1YTM3NDk3MWUyLi5hM2UwN2Q1ZTNhMzg4OGYzM2M1MmQ4MWI1
YjVjZjk4YTNhMzNhOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDU1LDcgKzIwNTUsNyBAQAogCQk2RTQ3RTY2MTEwQjc5
NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFCQ0Q1
MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFEMjkx
IC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEwMEEy
Nzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xD
b250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4
MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgwRThC
RDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNH
TC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZF
NzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBG
MUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEw
MDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIz
RTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBv
cmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjQ5LDYgKzIyNDksOCBAQAogCQk3QUY5
QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYg
LyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAv
KiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0
R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTkyMDAz
ODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4
MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDExNDIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4MjUz
Nzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3NkM2
MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZC
QjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZH
R3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDIzMSw5ICsxMDIzMywxNCBAQAogCQk3QjEw
MzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0IxNjAw
MDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAg
LyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTkyMDAz
ODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFO
R0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNz
Q29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0Qy
NEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJFRjEw
IC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNldHRp
bmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNGMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjY2MjAsNiArMjY2MjcsOCBAQAogCQkJCTA3NEU4MkI5MThBNjlGMEUw
MDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4
MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMg
LyogUmVnaW9uLmggKi8sCisJCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKKwkJCQk3QjkwNDE2RTI1NTAxMTA5MDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkwNzNB
MTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJCTA3
M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJCTcy
OTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0yNjc4Niw2
ICsyNjc5NSw4IEBACiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKIAkJCQlCNTMyMEQ2QTEyMkEyNEU5MDAyRDE0NDAg
LyogRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0MwMDA0
QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKKwkJCQk3QjZEQzgxNTI1NzEyRTkx
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovLAor
CQkJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4NDE4
NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBBODQx
ODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLApAQCAtMjY3OTcsNiArMjY4MDgsNyBAQAog
CQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3BlbkdM
U29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVu
R0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLAogCQkJCUNERUIzRDcy
MjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovLAogCQkJCUNERUIz
RDczMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCAqLywKIAkJCQlDRDhG
NjY3MDI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8sCkBA
IC0zMjA5Nyw2ICszMjEwOSw3IEBACiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdy
YXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcyMUUw
MEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5
QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQwMDAw
QjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQwMzUs
NiArMzQwNDgsNyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQwMEE3
RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlBMjA3
RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5MDQx
NzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3RlUGxh
eWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAvKiBS
ZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA3MmMyNjQ0NjY2Y2YwM2EyZjU5ZjFlMDlmZTkzMjkz
Y2I4MGI2YmFlLi5mN2M2YTJlODJhNGJmMDM3YTFiNDc3ZDc4M2ZhNTQxYWM0ZjU0Njk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcApAQCAtNzMyLDggKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2Fu
CiAgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAgICBy
ZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKICAgICB9Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpOworICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9z
dFdpbmRvdyk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNFbGVtZW50
KSB7CiAgICAgICAgICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4
dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVu
dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ZGFhMzRjYzJkNWQwNzk2MmVlMWE2MWM4MjUz
YmViNmE5NDY1NDZjLi5jMmE2OWI4NmJjMzE4MTY3YTMzMmNmZmY2ZGVhZjRjZjhiMjlmMzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MzAsNiArNTMwLDEzIEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJl
bmRlcmluZ01vCiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJl
bmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuY3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZGlzcGxheUlEKCkpOworfQorI2VuZGlm
CisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpAQCAtNTQzLDYgKzU1MCw3IEBAIHZvaWQgQ2hyb21l
Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRp
b25hbDx1bnNpZ25lCiAgICAgbV9wYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQs
IG5vbWluYWxGcmFtZUludGVydmFsKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKEdS
QVBISUNTX0NPTlRFWFRfR0wpCisgICAgLy8gVE9ETzogR1BVIHByb2Nlc3MuIENoYW5nZSB0byBH
Q0dMTWFuYWdlciwgbWFrZSBpdCB3b3JrLCByZXR1cm4gbnVsbCBmb3Igb3RoZXJzLgogICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNjcmVlbkRpZENo
YW5nZShkaXNwbGF5SUQsIHRoaXMpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCAy
MzMyOGY1NmExOTEyMDQ5ZDQ3OTc2NDFkMDE0MDA1NTE1OTAzNTAyLi5hODlkZDFhMWQ4NjVlNTMy
OGViMDUwNTc2NTQwZDNmMjMyYTNjZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTg2LDYgKzg2
LDEwIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBj
cmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
KSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxh
dGZvcm1EaXNwbGF5SUQsIE9wdGlvbmFsPHVuc2lnbmVkPikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDNhOWUxZDY2OTA5N2U1OTVkOWI1N2ZjNGNmZjdlNjFh
NWQxOGQwYTkuLjhmMThmZGZmMDQ5OTAzNzU4OThiMTdiOTI4Y2MwZTA2MDBlOTFjNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI1LDYgKzMyNSwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIENvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdy
YXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYK
KwogICAgIC8vIFBhc3MgbnVsbHB0ciBhcyB0aGUgR3JhcGhpY3NMYXllciB0byBkZXRhdGNoIHRo
ZSByb290IGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihG
cmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFZpZXdP
dmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vSG9zdFdpbmRvdy5oCmluZGV4IDQzZGIxZmZhZTAxMmJiMjE4OTRmMmNhOTYzMDcyMTQ3NjZh
YWRkOWUuLjczODExOGIyMWUzYzMzN2IyZTUzMWM5OTZkMDk5YmQzZTlhNTY5YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIldpZGdldC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Myw2ICs2NCwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25zdCA9
IDA7CisjZW5kaWYKKwogICAgIC8vIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgbmF0aXZlIGNs
aWVudCBvZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9y
bVBhZ2VDbGllbnQoKSBjb25zdCA9IDA7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCmluZGV4IGEyMjUzYzgxYmZlMGEwYmIw
OTEwYmRlNmMwZGIyNmFhNzg0NTJmYjMuLjdhZmJhNmVjNTA4ODE5Y2MxZWFiYWRjY2RlMGJiNzlh
ODM4NDJkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oCkBAIC0zNCwxMyArMzQsMTYgQEAgV0VCQ09SRV9FWFBPUlQgaW50IHBy
ZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogaW5saW5lIGJv
b2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQ
VVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogI2VsaWYgIVBMQVRGT1JNKENPQ09BKQogaW5s
aW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUgYm9vbCBp
c0luR1BVUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogCiBib29sIGlzSW5XZWJQcm9jZXNzKCk7Citib29sIGlzSW5HUFVQcm9jZXNzKCk7
CiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpOwogCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzQ29jb2EubW0KaW5kZXggZmJkMWQ0M2MwOGY4NmRjM2MxOGVkMjE1NjBmMDhjZjg3ZmExYWYz
OS4uYjA2ZmY0N2RmYzU0MTcyMWY2NGFhMGRlMzhiM2I5MmY4ODM4MjQ2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzQ29jb2EubW0KQEAgLTk2LDYgKzk2LDEyIEBAIGJvb2wgaXNJbldlYlByb2Nlc3Mo
KQogICAgIHJldHVybiBtYWluQnVuZGxlSXNXZWJQcm9jZXNzOwogfQogCitib29sIGlzSW5HUFVQ
cm9jZXNzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNHUFVQcm9jZXNzID0gW1tb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaGFzUHJlZml4OkAiY29tLmFw
cGxlLldlYktpdC5HUFUiXTsKKyAgICByZXR1cm4gbWFpbkJ1bmRsZUlzR1BVUHJvY2VzczsKK30K
KwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0YXRpYyBib29sIG1haW5CdW5k
bGVJc05ldHdvcmtQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRp
Zmllcl0gaGFzUHJlZml4OkAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nIl07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGM0ZTc3
NzhkYjZhNDQ4ZmQwYTVlNjUxNTkxZmVlYTE0NTM4NjM4MjMuLmQ1MDIxZGQzMzRlZGY5MWEzNDIz
MGJlMDE2ODkyMDc0MjQ5ZWIwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yNjcsNyArMjY3LDEwIEBAIHB1YmxpYzoKICAgICAv
LyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKICAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBMRVRJT05fU1RBVFVTX0tIUiA9IDB4OTFCMTsKIAotICAgIC8vIFdlYkdMIGZ1
bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRlcnN0YW5kcy4KKyAgICAv
LyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSA9IDB4OTNBODsKKworICAgIC8vIFdlYkdM
IGZ1bmN0aW9ucy4KIAogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8gTm90ZTogVGhp
cyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20gdGhlIEdMX0FSQl9yb2J1c3RuZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAKaW5kZXggZGY0YTExOWEzMjBkYWM2YWViNjMwNmQ0YzUwOTU1MTU4OGExOTczZS4u
MzRkNTU2YjBjYzRhOWJiMWFlYTdhNWE5NjhiYzY5NWIzYTJlMjc4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApA
QCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAK
ICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgogI2luY2x1ZGUgIkZvcm1hdENvbnZlcnRlci5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUg
IkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTQwMyw2ICs0MDUsMTUgQEAgc3RhdGljIGJvb2wgcGFja1Bp
eGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLCBHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZv
cm1hdAogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IEdy
YXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTD4gcmVzdWx0OworICAgIGlmIChob3N0V2luZG93KQorICAgICAgICByZXN1
bHQgPSBob3N0V2luZG93LT5jcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKTsKKyAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQog
CiBHcmFwaGljc0NvbnRleHRHTDo6R3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIGF0dHJzLCBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0
R0wqKQogICAgIDogbV9hdHRycyhhdHRycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGYyNzVmMzgzZTM2ODI3M2Y3
YzlmYmM4OGNiZTIwOGRiNGYyZmMwYzAuLmU0MjFjZTQ5OTM3ODdiZmVhOGRkODZjOWFiZjY3YzRj
MmQzNmFhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTksNiArNTksOCBAQCBjbGFzcyBJbWFnZURhdGE7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHRHTENWOwogI2VuZGlmCiAKKworLy8gQmFzZSBjbGFzcyBmb3Ig
Z3JhcGhpY3MgY29udGV4dCBmb3IgaW1wbGVtZW50aW5nIFdlYkdMIHJlbmRlcmluZyBtb2RlbC4K
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250
ZXh0R0w+IHsKIHB1YmxpYzoKICAgICAvLyBXZWJHTCAxIGNvbnN0YW50cy4KQEAgLTkwOSwxNCAr
OTExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgR0NHTGludCBzaXplOwogICAgIH07CiAKKyAgICAv
LyBDcmVhdGVzIGEgR3JhcGhpY3NDb250ZXh0R0wgaW5zdGFuY2UgdG8gcmVuZGVyIGludG8gb2Zm
c2NyZWVuIGRlc3RpbmF0aW9uIGluIGNvbnRleHQgb2YgSG9zdFdpbmRvdy4KKyAgICAvLyBIb3N0
V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFja2VuZCBpcyB0byBiZSB1
c2VkLgorICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBIb3N0V2luZG93Kik7CisKICAgICBHcmFwaGlj
c0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIERlc3RpbmF0aW9uID0gRGVz
dGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0wqIHNoYXJlZENvbnRleHQgPSBu
dWxscHRyKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTCgpID0gZGVmYXVsdDsKIAog
ICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5hZGQoJmNsaWVu
dCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMu
cmVtb3ZlKCZjbGllbnQpOyB9CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCi0KKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMu
CiAgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kQXR0cmli
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
bmFtZSkgPSAwOwpAQCAtMTM5NSw3ICsxNDAwLDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0w6OmdldEludGVybmFsZm9ybWF0aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGkK
ICAgICByZXR1cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlc0dMLmgKaW5kZXggMjE2YmQzNjY4ZjEwN2E4NzkxNGRlNGY2MGJiZTUyNjMxMTVkZmZmOC4u
M2IwNjRjM2U3NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcg
KzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTUgKzQ2LDE3IEBAIHR5cGVkZWYg
dW5zaWduZWQgR0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKLXR5
cGVkZWYgaW50cHRyX3QgR0NHTGludHB0cjsKLXR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRy
OwogdHlwZWRlZiBjaGFyIEdDR0xjaGFyOwotdHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0Owot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgR0NHTHVpbnQ2NDsKIHR5cGVkZWYgc3RydWN0IF9f
R0xzeW5jKiBHQ0dMc3luYzsKIHR5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKLXR5cGVkZWYgaW50cHRy
X3QgR0NHTHZvaWRwdHI7CiAKKy8vIFRoZXNlIEdDR0wgdHlwZXMgZG8gbm90IHN0cmljdGx5IG1h
dGNoIHRoZSBHTCB0eXBlcyBhcyBkZWZpbmVkIGluIE9wZW5HTCBFUyAyLjAKKy8vIGhlYWRlciBm
aWxlIGZvciBhbGwgcGxhdGZvcm1zLgordHlwZWRlZiBpbnRwdHJfdCBHQ0dMaW50cHRyOwordHlw
ZWRlZiBpbnRwdHJfdCBHQ0dMc2l6ZWlwdHI7Cit0eXBlZGVmIGludHB0cl90IEdDR0x2b2lkcHRy
OwordHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgR0NHTHVpbnQ2NDsKIAogdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogCkBA
IC02MCwxMyArNjQsMTcgQEAgdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogdHlw
ZWRlZiB1bnNpZ25lZCBHTHVpbnQ7CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IEV4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+CitpbmxpbmUg
Y29uc3RleHByIHNpemVfdCBnY0dMU3BhbkR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50
ID0gZ2NHTFNwYW5EeW5hbWljRXh0ZW50Pgogc3RydWN0IEdDR0xTcGFuOwogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbiB7Ci0gICAgZXhwbGljaXQg
R0NHTFNwYW4oVCogYXJyYXkpCisgICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXksIHNpemVf
dCBzaXplID0gRXh0ZW50KQogICAgICAgICA6IGRhdGEoYXJyYXkpCi0gICAgeyB9CisgICAgewor
ICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUgPT0gRXh0ZW50KTsKKyAgICB9CiAgICAg
R0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAg
eyB9CkBAIC03NCw2ICs4MiwxMiBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogICAgIEdDR0xTcGFuKGNv
bnN0IEdDR0xTcGFuPFUsIEV4dGVudD4mIG90aGVyLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
Y29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIp
CiAgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQogICAgIHsgfQorICAgIEdDR0xTcGFuKHN0ZDo6
YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCisg
ICAgeyB9CisgICAgR0NHTFNwYW4oY29uc3Qgc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkK
KyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KICAgICBUJiBvcGVyYXRvcltd
KHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgaSA8IGJ1ZlNpemUpOyByZXR1cm4g
ZGF0YVtpXTsgfQogICAgIFQmIG9wZXJhdG9yKigpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBi
dWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CiAgICAgVCogZGF0YTsKQEAgLTgxLDcgKzk1LDcgQEAg
c3RydWN0IEdDR0xTcGFuIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgR0NH
TFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4geworc3RydWN0IEdD
R0xTcGFuPFQsIGdjR0xTcGFuRHluYW1pY0V4dGVudD4gewogICAgIEdDR0xTcGFuKFQqIGFycmF5
LCBzaXplX3QgYnVmU2l6ZV8pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICAgICAgLCBidWZT
aXplKGJ1ZlNpemVfKQpAQCAtMTIzLDYgKzEzNywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48R0NHTHZv
aWQ+IHsKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAgICAgICAgICwgYnVmU2l6ZShvdGhl
ci5idWZTaXplICogc2l6ZW9mKFUpKQogICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxVLCBpbmxp
bmVDYXBhY2l0eT4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgICAg
ICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgpICogc2l6ZW9mKFUpKQorICAgIHsgfQogICAgIEdDR0x2
b2lkKiBkYXRhOwogICAgIGNvbnN0IHNpemVfdCBidWZTaXplOwogfTsKQEAgLTE1NCw4ICsxNzMs
MTEgQEAgc3RydWN0IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiB7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLUdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JikgLT4gR0NHTFNw
YW48VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KK0dDR0xTcGFuKHN0ZDo6YXJy
YXk8VCwgTj4mKSAtPiBHQ0dMU3BhbjxULCBOPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorR0NHTFNwYW4oV1RGOjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHk+JikgLT4gR0NHTFNwYW48VD47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBHQ0dMU3BhbjxU
PiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjYzM2YTlmMjM5NzA5MzQxYjlhMmYy
M2RjN2E2MWU0MDZiMWUwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKQEAgLTAs
MCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzKQorewor
ICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgPSBkZWZhdWx0Owor
CitFeHRlbnNpb25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRl
bnNpb25zKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJl
dHVybiB7IH07Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omlz
R0xFUzJDb21wbGlhbnQoKSBjb25zdAoreworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygp
LmlzV2ViR0wyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpt
YXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0
cmFjayB0aGlzIHN0YXRlLgorICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90
aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0xheWVyQ29t
cG9zaXRlZCgpCit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0
cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5n
QnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0
R0w6OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAg
ICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZG
RVJfQklUOworICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVy
c1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Cisg
ICAgfQorICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisg
ICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbGF5ZXJDb21wb3NpdGVkOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7Cisg
ICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAg
ICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOworfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkK
K3sKKyAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhNRTog
VGhlIHdob2xlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29udGV4
dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKK30KKworYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJl
RW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQo
KTsKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1f
ZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChuYW1lKTsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7
CisgICAgfQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0Vu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7
CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2Vu
YWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0
ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9y
IChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAg
ICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8m
IGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30KKworI2lmICFQTEFURk9S
TShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
SW5pdGlhbGl6ZSgpCit7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU2NWJiNWJkMjhjOGNmNTdhYTUzYjI3MGVhZTUxM2Y0YTk1MmZm
NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC0wLDAgKzEsMTEwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJF
eHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBXZWJHTExheWVyOworI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47CisjZW5kaWYKKworLy8gQSBiYXNlIGNsYXNzIGZv
ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCisvLyBU
aGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwg
ZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4K
Ky8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJs
aWMgRXh0ZW5zaW9uc0dMIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0Nv
bnRleHRHTDo6aXNFbmFibGVkOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyAg
ICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBoaWNzQ29u
dGV4dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0
ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0
ZmllbGQpIGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwor
ICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CisKKyNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViog
YXNDVigpIGZpbmFsOworI2VuZGlmCisgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3ZlcnJpZGVz
LgorICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOworICAgIGJvb2wgc3VwcG9ydHMo
Y29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0
ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAgIHZpcnR1
YWwgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2FwQ2hhaW4o
KTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXll
cjsKKyNlbmRpZgorCisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxT
dHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1f
ZW5hYmxlZEV4dGVuc2lvbnM7CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIgY2xlYXIg
dHJhY2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBtX2xheWVy
Q29tcG9zaXRlZCA9IGZhbHNlOworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1dG9DbGVh
ciA9IHsgMCB9OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjczNTk3ZjQ3NTNkMGJl
YzFkMDJlN2Q1ZmNmZGM2NDNhOTgzYzg4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmNwcApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKworI2lmIEVOQUJMRShH
UkFQSElDU19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6fkdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCkgPSBkZWZhdWx0OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTllODhjMmY5OWIxY2FhNTgxMTdjNzM5MTFhNTFiNjdkZGU2MzJiYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09DT0Ep
CisKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQW4gaW50ZXJmYWNlIGZvciBpbXBsZW1lbnRpbmcgZnJvbnQgYnVm
ZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2FwCisvLyBjaGFpbiBvZiBJT1N1cmZh
Y2VzLgorLy8gVGhlIGltcGxlbWVudG9yIHdpbGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMg
Zm9yIGRpc3BsYXkuCisvLyBUaGUgY2xpZW50IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJ
T1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRhdGEKKy8vIGJhY2sgb25jZSB0aGUg
SU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90
IG5lY2Nlc3NhcmlseQorLy8gYmUgYWJsZSB0byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYg
Zm9yIHJldXNlLgorLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xT
dXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlzIHdheQorLy8gd2hlbiB0aGUgZGlz
cGxheSBjbGllbnQgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxheSwgdGhlIGNsaWVu
dCBjYW4gY29udGludWUgdXNpbmcKKy8vIHRoZSBleGlzdGluZyBiaW5kaW5nIG9idGFpbmVkIHRo
cm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCk7CisgICAgc3RydWN0IEJ1ZmZl
ciB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1cmZhY2U7
IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCisgICAgICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIg
fTsgLy8gUHJvZHVjZXIgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1cmZh
Y2UpLgorICAgIH07CisgICAgLy8gUmV0dXJucyB0aGUgbWV0YWRhdGEgaGFuZGxlIG9mIGxhc3Qg
dW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgbWF5IHJlY2lldmUgYmFjayBh
bHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2UgaXQgaXMg
YXZhaWxhYmxlIGF0IHRoZQorICAgIC8vIHRpbWUgb2YgdGhlIGNhbGwuCisgICAgLy8gUmV0dXJu
cyBlaXRoZXI6CisgICAgLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1
Ym1pdHRlZC4KKyAgICAvLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2UgYW5kIG5vbi1lbXB0
eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMgYXZhaWxhYmxlCisg
ICAgLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4gdXNlLgorICAgIC8vIC0gU3VyZmFj
ZSBhbmQgaGFuZGxlLgorICAgIHZpcnR1YWwgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSA9IDA7CisK
KyAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50cyBi
dWZmZXIuCisgICAgLy8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlwIG9mIHRoZSBJT1N1
cmZhY2Ugc3VyZmFjZSBpbiB0aGUgYGJ1ZmZlcmAuCisgICAgdmlydHVhbCB2b2lkIHByZXNlbnQo
QnVmZmVyKSA9IDA7CisKKyAgICAvLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRo
ZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCisgICAgLy8gVGhlIGlm
IG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0
IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0aGlzLgorICAgIHZpcnR1
YWwgdm9pZCogZGV0YWNoQ2xpZW50KCkgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDQxNWM0NzAyOGM5ZDljY2Ez
NTZlYWI4MGU3NzJlZmVjZjgxOTY5YmUuLjQ4OWU0NWZjY2U2M2JkODU1ODdhNDgzMjg5OGQ5MzI0
MTFjZTlmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgpAQCAtODEsNyArODIsNyBAQCBzdGF0aWMgRUdMRGlzcGxheSBJbml0aWFsaXplRUdMRGlz
cGxheSgpCiAgICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CiAgICAgRUdMaW50IG1pbm9yVmVy
c2lvbiA9IDA7CiAgICAgRUdMRGlzcGxheSBkaXNwbGF5OwotICAgIGJvb2wgc2hvdWxkSW5pdGlh
bGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIWlzSW5XZWJQcm9jZXNzKCk7CisgICAg
Ym9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQgPSAhKGlzSW5X
ZWJQcm9jZXNzKCkgfHwgaXNJbkdQVVByb2Nlc3MoKSk7CiAgICAgaWYgKHNob3VsZEluaXRpYWxp
emVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCkgewogICAgICAgICAvLyBGb3IgV0sxIHR5cGUg
QVBJcyB3ZSBuZWVkIHRvIHNldCAidm9sYXRpbGUgcGxhdGZvcm0gY29udGV4dCIgZm9yIHNwZWNp
ZmljCiAgICAgICAgIC8vIEFQSXMsIHNpbmNlIGNsaWVudCBjb2RlIHdpbGwgYmUgYWJsZSB0byBv
dmVycmlkZSB0aGUgdGhyZWFkLWdsb2JhbCBjb250ZXh0CkBAIC0xMzQsNyArMTM1LDcgQEAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0
ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93
LCBkZXN0aW5hdGlvbikpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29u
dGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdp
bmRvdywgbnVsbHB0ciwgbnVsbHB0cikpOwogCiAgICAgaWYgKCFjb250ZXh0LT5tX2NvbnRleHRP
YmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ3LDEzICsxNDgsMTggQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dEcKIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hh
cmVkQ29udGV4dCkKIHsKICAgICBhdXRvIGhvc3RXaW5kb3cgPSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5ob3N0V2luZG93Rm9yQ29udGV4dCgmc2hhcmVk
Q29udGV4dCk7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3cs
IHNoYXJlZENvbnRleHQuZGVzdGluYXRpb24oKSwgJnNoYXJlZENvbnRleHQpKTsKKyAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENv
bnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgJnNoYXJlZENvbnRleHQsIG51
bGxwdHIpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdpbmRvdyk7CiAKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAorUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJzLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiog
c3dhcENoYWluKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKGF0dHJzLCBudWxscHRyLCBudWxscHRyLCBzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBM
QVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxl
ZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAogc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3Ry
eUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3Jt
YXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJyZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBA
QCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2Jq
LCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1H
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGlj
c0NvbnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBzaGFyZWRDb250ZXh0KQotICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3Rp
bmF0aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQs
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBH
cmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29u
dGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMuaXNXZWJHTDI7CiAKQEAgLTMzMywx
MyArMzM5LDE3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgdmFsaWRhdGVBdHRyaWJ1
dGVzKCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZl
IGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKLSAgICAvLyBDcmVhdGUgdGhlIFdlYkdMTGF5
ZXIKKyAgICBpZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsK
KyAgICBlbHNlIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAgICAgbV93
ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4
ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBo
YV0pOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2Vi
R0wgTGF5ZXIiXTsKICNlbmRpZgogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAg
ICAgbV9zd2FwQ2hhaW4gPSAmW21fd2ViR0xMYXllciBzd2FwQ2hhaW5dOworICAgIH0KIAogICAg
IC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVm
ZmVyLgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgp
OwpAQCAtNDA4LDEzICs0MTgsMTIgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6On5HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCgpCiAgICAgICAgIGlmIChtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZC
TykKICAgICAgICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fcHJlc2VydmVEcmF3
aW5nQnVmZmVyRkJPKTsKICAgICB9Ci0gICAgaWYgKG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpCisg
ICAgaWYgKG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpIHsKICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJm
YWNlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcik7Ci0gICAgaWYgKG1fd2Vi
R0xMYXllcikgewotICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciBy
ZWN5Y2xlQnVmZmVyXTsKKyAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWlu
LT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAgICAgIGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCiAg
ICAgICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZl
ci5oYW5kbGUpOwotICAgICAgICBhdXRvIGNvbnRlbnRzSGFuZGxlID0gW21fd2ViR0xMYXllciBk
ZXRhY2hDbGllbnRdOworICAgICAgICBhdXRvIGNvbnRlbnRzSGFuZGxlID0gbV9zd2FwQ2hhaW4t
PmRldGFjaENsaWVudCgpOwogICAgICAgICBpZiAoY29udGVudHNIYW5kbGUpCiAgICAgICAgICAg
ICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBjb250ZW50c0hhbmRsZSk7CiAgICAg
fQpAQCAtNTc3LDExICs1ODYsMTYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKICAgICAgICAgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
ciA9IEVHTF9OT19TVVJGQUNFOwogICAgIH0KICAgICAvLyBSZXNldCB0aGUgZnV0dXJlIHJlY3lj
bGVkIGJ1ZmZlciBub3csIGJlY2F1c2UgaXQgbW9zdCBsaWtlbHkgd2lsbCBub3QgYmUgcmV1c2Fi
bGUgYXQgdGhlIHRpbWUgaXQgd2lsbCBiZSByZXVzZWQuCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZl
ciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZl
ciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAgaWYgKHJlY3ljbGVkQnVmZmVy
LmhhbmRsZSkKICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNs
ZWRCdWZmZXIuaGFuZGxlKTsKICAgICByZWN5Y2xlZEJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7Cisg
ICAgcmV0dXJuIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7Cit9CiAKK2Jv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKCkKK3sKKyAgICBBU1NFUlQoIWdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNF
bXB0eSgpKTsKICAgICBhdXRvIGJhY2tpbmcgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShn
ZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigp
KTsKICAgICBpZiAoIWJhY2tpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3ICs2
NTMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJl
cnMoKSBjb25zdAogICAgIC8vIGZvciBPcGVuR0wgdG8gZGVjaWRlIHdoaWNoIEdQVSBpcyBjb25u
ZWN0ZWQgdG8gYSBkaXNwbGF5IChvbmxpbmUvb2ZmbGluZSkuCiAgICAgLy8gT3BlbkdMIHdpbGwg
dGhlbiBjb25zaWRlciBhbGwgR1BVcywgb3IgcmVuZGVyZXJzLCBhcyBvZmZsaW5lLCB3aGljaCBt
ZWFucwogICAgIC8vIGFsbCBvZmZsaW5lIHJlbmRlcmVycyBuZWVkIHRvIGJlIGNvbnNpZGVyZWQg
d2hlbiBmaW5kaW5nIGEgcGl4ZWwgZm9ybWF0LgotICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRo
ZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kb3dTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCisgICAgLy8g
SW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmR3U2VydmVyIGNvbm5l
Y3Rpb24sIGFuZAogICAgIC8vIG1fZGlzcGxheU1hc2sgd2lsbCBub3QgYmUgc2V0IGluIHRoaXMg
Y2FzZS4KICAgICBpZiAocHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtNjg1LDEwICs2OTksMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIC8vIFRoZSBJT1N1cmZhY2Ugd2lsbCBiZSB1c2Vk
IGZyb20gb3RoZXIgZ3JhcGhpY3Mgc3Vic3lzdGVtLCBzbyBmbHVzaCBHTCBjb21tYW5kcy4KICAg
ICBnbDo6Rmx1c2goKTsKIAotICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVy
IHJlY3ljbGVCdWZmZXJdOworICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+
cmVjeWNsZUJ1ZmZlcigpOwogCiAgICAgRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmos
IG1fZGlzcGxheUJ1ZmZlclBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgW21fd2ViR0xM
YXllciBwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czoge1dURk1vdmUobV9kaXNwbGF5QnVm
ZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZlclBidWZmZXJ9XTsKKyAgICBtX3N3YXBDaGFpbi0+
cHJlc2VudCh7IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIgfSk7CiAgICAgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNF
OwogCiAgICAgYm9vbCBoYXNOZXdCYWNraW5nID0gZmFsc2U7CkBAIC03MDIsNyArNzE2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogCiAgICAg
Ly8gRXJyb3Igd2lsbCBiZSBoYW5kbGVkIGJ5IG5leHQgY2FsbCB0byBtYWtlQ29udGV4dEN1cnJl
bnQoKSB3aGljaCB3aWxsIG5vdGljZSBsYWNrIG9mIGRpc3BsYXkgYnVmZmVyLgogICAgIGlmICgh
aGFzTmV3QmFja2luZykKLSAgICAgICAgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7Cisg
ICAgICAgIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAKICAgICBtYXJr
TGF5ZXJDb21wb3NpdGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQxNDAxNWI3YjBmMzRiYjI4
YmUzNDU1MDljNzQyOWUzMWRhYTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKyNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKKyNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
K3sKKyAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdM
TGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJh
dGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOworI2lmbmRlZiBOREVCVUcKKyAgICAg
ICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKKyNlbmRpZgorICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fd2ViR0xMYXllci5nZXQoKTsKK30KKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFW
Rk9VTkRBVElPTikKK0dyYXBoaWNzQ29udGV4dEdMQ1YqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjphc0NWKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCitH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENoYWluKCkKK3sKKyAgICByZXR1cm4gW21fd2ViR0xM
YXllciBzd2FwQ2hhaW5dOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAppbmRleCAxNGIwMWU3MDVmMjA1
MzAxYzdjOTdjZjY2ZTcxYTA4YmJmNDFlNzA1Li43ZmU4OGEyZmY0Y2UwZjU1OWQ1OWRjMWNkOTUy
YTNhN2VhODgwOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCkBAIC0yMyw1MiArMjMsMjIgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2ltcG9ydCAiSU9TdXJmYWNlLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+
CisjaW1wb3J0IDxtZW1vcnk+CiAjaW1wb3J0IDx3dGYvTmFrZWRQdHIuaD4KIAotbmFtZXNwYWNl
IFdlYkNvcmUgewotc3RydWN0IFdlYkdMTGF5ZXJCdWZmZXIgewotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1cmZhY2U7IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCi0g
ICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OyAvLyBDbGllbnQgc3BlY2lmaWMgbWV0YWRhdGEg
aGFuZGxlIChzdWNoIGFzIEVHTFN1cmZhY2UpLgotfTsKLX0KLQogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KIAogLy8gQSBsYXllciBjbGFzcyBpbXBsZW1lbnRpbmcgZnJvbnQg
YnVmZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2FwCiAvLyBjaGFpbiBvZiBJT1N1
cmZhY2VzLgotLy8gVGhlIGxheWVyIHdpbGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMgZm9y
IGRpc3BsYXkuCi0vLyBUaGUgY2xpZW50IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJT1N1
cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRhdGEKLS8vIGJhY2sgb25jZSB0aGUgSU9T
dXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90IG5l
Y2Nlc3NhcmlseQotLy8gYmUgYWJsZSB0byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYgZm9y
IHJldXNlLgotLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xTdXJm
YWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlzIHdheQotLy8gd2hlbiB0aGUgV2ViR0xM
YXllciBpcyBkb25lIHdpdGggdGhlIElPU3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBj
b250aW51ZSB1c2luZwotLy8gdGhlIGV4aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0
aGUgYnVmZmVyIHJlY3ljbGUgbG9naWMuCiBAaW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBDQUxheWVy
CiAKIC0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRp
byBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1ZTsKIAogLSAoQ0dJbWFnZVJlZilj
b3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFj
ZTsKIAotLy8gUmV0dXJucyB0aGUgbWV0YWRhdGEgaGFuZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRl
bnRzIGJ1ZmZlci4KLS8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hp
cCBvZiB0aGUgY29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhl
Ci0vLyB0aW1lIG9mIHRoZSBjYWxsLgotLy8gUmV0dXJucyBlaXRoZXI6Ci0vLyAtIEVtcHR5IGJ1
ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVkLgotLy8gLSBCdWZmZXIgd2l0aCBl
bXB0eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xl
ZCBidWZmZXIgd2FzIGF2YWlsYWJsZQotLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4g
dXNlLgotLy8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCi0tIChXZWJDb3JlOjpXZWJHTExheWVyQnVm
ZmVyKXJlY3ljbGVCdWZmZXI7Ci0KLS8vIFByZXBhcmVzIHRoZSBsYXllciBmb3IgZGlzcGxheSB3
aXRoIGEgY29udGVudHMgYnVmZmVyLgotLy8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlw
IG9mIHRoZSBJT1N1cmZhY2Ugc3VyZmFjZSBpbiB0aGUgYGJ1ZmZlcmAuCi0tICh2b2lkKXByZXBh
cmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKWJ1ZmZl
cjsKLQotLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250
ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgotLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMg
aGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQg
YmVmb3JlIGNhbGxpbmcKLS8vIHRoaXMuCi0tICh2b2lkKilkZXRhY2hDbGllbnQ7CistIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbjsKIAog
QGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5tbQppbmRleCBjOGY0ZTc5ZjczMTJlYWE2YWIwNDQ2ODA4M2VhOGQwYzhiZWZh
M2JjLi4zODU5N2U0YThmNjMzYTVlZTVkYjc0OTMzMDIyZGMyMzdmZTdlNDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
QEAgLTMyLDEzICszMiwzOSBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+
CisKK2NsYXNzIFdlYkdMTGF5ZXJTd2FwQ2hhaW4gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIGV4cGxpY2l0
IFdlYkdMTGF5ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIp
IHsgfTsKKyAgICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyAg
ICB2b2lkIHByZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZl
cigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7
CisgICAgICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCisgICAg
ICAgICAgICAgICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgICAgICAgICBy
ZXR1cm4gV1RGTW92ZShtX3NwYXJlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgICAgICB2b2lkKiByZXN1
bHQgPSBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIuaGFu
ZGxlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgV2ViQ29y
ZTo6SU9TdXJmYWNlKiBkaXNwbGF5U3VyZmFjZSgpIHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5z
dXJmYWNlLmdldCgpOyB9Citwcml2YXRlOgorICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7Cisg
ICAgQnVmZmVyIG1fc3BhcmVCdWZmZXI7CisgICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsK
K307CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBXZWJDb3JlOjpXZWJHTExh
eWVyQnVmZmVyIF9jb250ZW50c0J1ZmZlcjsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
IF9zcGFyZUJ1ZmZlcjsKLQogICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsKKyAgICBPcHRp
b25hbDxXZWJHTExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0
aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6
KGJvb2wpY29udGVudHNPcGFxdWUKQEAgLTQ3LDYgKzczLDcgQEAKICAgICBzZWxmLnRyYW5zZm9y
bSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKICAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29u
dGVudHNPcGFxdWU7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsK
KyAgICBfc3dhcENoYWluLmVtcGxhY2Uoc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAg
LTczLDMwICsxMDAsMjEgQEAKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9Ci0KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIHJlY3ljbGVC
dWZmZXIKKy0gKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikg
c3dhcENoYWluCiB7Ci0gICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgIGlm
IChfc3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAgICAgICAgX3NwYXJlQnVm
ZmVyLnN1cmZhY2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoX3NwYXJlQnVmZmVy
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gX3N3YXBDaGFpbi52YWx1ZSgp
OwogfQogCi0tICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpX
ZWJHTExheWVyQnVmZmVyKSBidWZmZXIKKy0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKIHsKLSAg
ICBBU1NFUlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBfc3BhcmVCdWZmZXIgPSBXVEZN
b3ZlKF9jb250ZW50c0J1ZmZlcik7Ci0gICAgX2NvbnRlbnRzQnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOwogICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheV07CiAgICAgX3ByZXBhcmVkRm9yRGlzcGxh
eSA9IFlFUzsKIH0KIAogLSAodm9pZClkaXNwbGF5CiB7Ci0gICAgaWYgKF9jb250ZW50c0J1ZmZl
ci5zdXJmYWNlICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50
cyA9IF9jb250ZW50c0J1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKTsKKyAgICBpZiAo
X3N3YXBDaGFpbi0+ZGlzcGxheVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7Cisg
ICAgICAgIHNlbGYuY29udGVudHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xh
eWVyQ29udGVudHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29u
dGVudHMiXTsKICAgICB9CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMTA2
LDEzICsxMjQsMTQgQEAKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLS0gKHZv
aWQqKSBkZXRhY2hDbGllbnQKK0BlbmQKKwordm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVz
ZW50KEJ1ZmZlciBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7
Ci0gICAgdm9pZCogcmVzdWx0ID0gX2NvbnRlbnRzQnVmZmVyLmhhbmRsZTsKLSAgICBfY29udGVu
dHNCdWZmZXIuaGFuZGxlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEFTU0VS
VCghbV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX3NwYXJlQnVmZmVyID0gV1RGTW92ZSht
X2Rpc3BsYXlCdWZmZXIpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsK
KyAgICBbbV9sYXllciBwcmVwYXJlRm9yRGlzcGxheV07CiB9Ci1AZW5kCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW0KaW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4u
OTlhZDkxNjUyNTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYsNyBA
QAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRD
Ry5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNp
bXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKaW5kZXggZDNiZDg2MjQ3ZTNhNzVlMTVlMWY2ODFhMmNkMjc1MDFhMDhjOGM1ZS4uMjYz
MmQ3YTgzZTg3YTkxMjlhODlmNDYwYzJlYzJiYTA0M2EzMDI4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKQEAgLTU4LDYgKzU4LDkgQEAKICNpZiBQTEFURk9STShDT0NPQSkK
IE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworfQog
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgVVNFKE5JQ09TSUEpCkBAIC04Niw3ICs4
OSw3IEBAIHR5cGVkZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1l
SGFzaDsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlOwogCi1jbGFzcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBI
b3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKTsKQEAgLTk0
LDYgKzk3LDggQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJl
ZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMJiBzaGFyZWRDb250ZXh0KTsKKyAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKik7CisKICAgICBDQUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eU9iajsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25m
aWcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ09iajsgfQpAQCAtNTAzLDcgKzUwOCwxMSBAQCBw
dWJsaWM6CiAjZW5kaWYgLy8gIVVTRShBTkdMRSkKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4
dCA9IG51bGxwdHIsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxw
dHIpOworI2Vsc2UKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZz
Y3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7
CisjZW5kaWYKIAogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBv
aW50cyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkg
YWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFs
bHkgY2FsbCBPcGVuR0wuCkBAIC01MzgsMTAgKzU0NywxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAg
Ym9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGFsbG9jYXRlQW5k
QmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJh
Y2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluKiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKKyAgICAvLyBUT0RPOiB0
aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gYSBpbWFnZSBi
dWZmZXIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTc5
IC4KICAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CmluZGV4IDg4ZTE1MWIxMjIyNGZlYmNjODkzYjUzZDY4NWUzZWMxYjAxMGNkNDUu
LjJiODk2YTlhYmFjMGUxMDc0YjFlMTM1MTkzMjA0OWFiZTc2ODAzYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dApAQCAtMTIzLDYgKzEyMyw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAg
ICBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICBHUFVQcm9jZXNzL0dQ
VVByb2Nlc3MKIAorICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wKICAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAogICAg
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIKQEAgLTIyMSw2
ICsyMjIsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbgogCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZTUxY2FlZDIxZTE4NmNmMmExNzNjYjhhMzMzMTJiZTBi
MzA0YmIwMC4uYmNlMzM4YzRiNDRmMDc5ZTgwZWQwZDQ2ZDY3MjI5M2MyMjdlNTliMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiAr
MjAsNyBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQog
JChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBs
ZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTM0LDYgKzEz
NSw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTg4YjJjMjFmYTcxN2M3N2Qy
MzAyY2I1MThiYTRhZDNlZGUyNTc0YS4uMTVmM2MyM2NjZTA1ZTJkMzJlNWVlYjY5MjQwYzY1NDhh
OWJkMTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CkBAIC0xNzgsNiArMTc4LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggNjgxNDg1NWZmOWQyM2FmMGE3N2U1ZmRhNmRmZDJmZDU1MDk3NmY2OS4uMzUz
ZDc2ZWQxYTVmMjA5ZWVhM2Y0NzgzMWUwNmNhOGRkMjEwNDNjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMTcxLDYgKzE3MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAog
CVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZSBcCkBAIC0yMjcsNiArMjI4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzIFwKIAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgXAogCUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBc
CisJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggMGUyZTg4MzJiMWUyMGYxZTBmMzE5ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2Ux
NGM1MGI3NDE5OTNkNmYzNWE1YTk1ZjVhZmQ4MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiAr
NjQsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNl
bmRpZgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAi
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
TWVzc2FnZXMuaCIKQEAgLTI5MCw2ICsyOTQsMjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkK
ICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wp
Cit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0pOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNYXAucmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVBy
b2Nlc3MoKS5ub3dQbGF5aW5nTWFuYWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggMjY3OGRiYzRlNWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4
ZC4uNWFlZGZiYjRkMmNhYzdiNzY2MGZmMDczNjA5ZDM3N2M2MDE1ODRiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlQXVkaW9TZXNzaW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFp
dHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgpAQCAtMzksNiArNDAsMTEgQEAKICNpbmNsdWRl
IDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJM
RShXRUJHTCkKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBj
bGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBj
bGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1
cmF0aW9uOwpAQCAtMTE5LDYgKzEyNiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxl
YXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgdm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAg
dm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBX
ZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYmKTsKIApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRl
OgogCiAgICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kPj47CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXA7Ci0KKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3Rv
cnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggNTE5NGZiNGY2MDg1ZDYyNGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1
NGUxNjQ1OTViMGEzNjFkZmU0Yzc1YmZmNDAxOGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDEwIEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcikKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktp
dDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3Ry
dWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJL
aXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpCisgICAgdm9pZCBSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAg
ICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJbmZvKCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZv
KGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5
aW5nSW5mbyBub3dQbGF5aW5nSW5mbykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MDRkMWZhOTk5NGQ1ZmZmMzE0MzY0ZDU5YmVm
OTVlYjQ5ZWE5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworCitu
YW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQp
CisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAg
ICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIG1fY29udGV4dC0+
YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0
U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICBTdHJpbmcgcmVxdWVz
dGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dMOjpSRVFV
RVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0
ZW5zaW9ucyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCit7CisgICAgaWYgKGF1
dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIudG9VSW50NjQoKSk7Cit9CisKK0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCitJUEM6
OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
PSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJldHVybiAmZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBudWxscHRy
OworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpk
aWRDb21wb3NpdGUoKQoreworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3Jj
ZUNvbnRleHRMb3N0KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpXYXNMb3N0KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2VkKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKK3sKKyAgICBpZiAod2lk
dGggJiYgaGVpZ2h0KQorICAgICAgICBtX2NvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7
CisgICAgZWxzZQorICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7Cit9CisKKyNpZiAhUExBVEZP
Uk0oQ09DT0EpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxh
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3Ry
aW5nJiYgZXh0ZW5zaW9uKQoreworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoZXh0ZW5zaW9uKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBtX2NvbnRleHQtPm1hcmtDb250ZXh0
Q2hhbmdlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYjBjZjUxOGFiZjliYjI1YWIzMzZkZGRlMDM5OTky
NWFhMDVmMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBHUFUgcHJv
Y2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZXMgYWJvdXQg
R3JhcGhpY3NDb250ZXh0R0wgY2FsbHMKKy8vIGFuZCBpc3N1ZXMgcmVhbCBHcmFwaGljc0NvbnRl
eHRHTCBjYWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCisvLyBUaGUgaW1wbGVt
ZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgIDog
cHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkgb3ZlcnJpZGU7CisKKyAgICBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CisK
K3Byb3RlY3RlZDoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+KTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisgICAg
SVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwor
ICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisK
KyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gR3JhcGhp
Y3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRDb21wb3NpdGUoKSBm
aW5hbDsKKyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKKyAgICB2b2lkIHJlY3lj
bGVDb250ZXh0KCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZp
Y2F0aW9uKCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2
b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZvaWQgZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJik7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+
JiYpID0gMDsKKyNlbHNlCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworI2VuZGlmCisKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKKworICAgIFJlZjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworICAgIFdlYWtQdHI8R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTAzNDcyNWY5YWE0MmY0MmJkM2M4YTAw
YjBhYTE4MDkwYTU5YjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0wLDAg
KzEsMjk1IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
ICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVm
Q291bnRlZCB7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAo
TWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJv
bm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRl
bnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorCisgICAgdm9pZCBT
ZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVp
bnQzMl90IGVycm9yKQorICAgIHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBBY3RpdmVUZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUpCisgICAgdm9pZCBBdHRhY2hTaGFkZXIodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3Qgc2hhZGVyKQorICAgIHZvaWQgQmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90
IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcgbmFtZSkKKyAgICB2b2lkIEJpbmRCdWZmZXIo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZEZyYW1lYnVmZmVy
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRSZW5kZXJidWZm
ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFRleHR1cmUo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmxlbmRDb2xvcihmbG9h
dCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIEJs
ZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb25TZXBhcmF0
ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgdm9pZCBCbGVuZEZ1
bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB2b2lkIEJsZW5kRnVu
Y1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNB
bHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgdm9pZCBDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KHVpbnQzMl90IHRhcmdldCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQ2xlYXIodWludDMyX3QgbWFzaykKKyAgICB2b2lkIENsZWFyQ29sb3IoZmxvYXQg
cmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBDbGVh
ckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHZvaWQgQ2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAg
ICB2b2lkIENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFs
cGhhKQorICAgIHZvaWQgQ29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29w
eVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTJEKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB2b2lkIENyZWF0ZUJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIENyZWF0ZUZyYW1lYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUHJvZ3JhbSgpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNoYWRl
cih1aW50MzJfdCBhcmcwKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBDcmVhdGVUZXh0dXJlKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgQ3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB2b2lkIERlbGV0ZUJ1
ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlRnJhbWVidWZmZXIodWludDMyX3Qg
YXJnMCkKKyAgICB2b2lkIERlbGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERl
bGV0ZVJlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlU2hhZGVyKHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBEZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB2b2lkIERlcHRoTWFzayhib29sIGZs
YWcpCisgICAgdm9pZCBEZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHZv
aWQgRGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBE
aXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1
aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIERyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50MzJf
dCBmaXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50cyh1aW50MzJfdCBt
b2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAg
dm9pZCBFbmFibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBGaW5pc2goKQorICAgIHZvaWQgRmx1c2goKQor
ICAgIHZvaWQgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhdHRhY2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMp
CisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWludDMyX3QgYXJnMywgaW50MzJfdCBs
ZXZlbCkKKyAgICB2b2lkIEZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgR2VuZXJh
dGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0QWN0aXZlQXR0cmliKHVpbnQz
Ml90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+
IChib29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
byBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QXR0cmliTG9jYXRpb24odWludDMyX3Qg
YXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFN0
cmluZyh1aW50MzJfdCBuYW1lKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+
IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
SW50ZWdlcjY0KHVpbnQzMl90IHBuYW1lKSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGlu
ZGV4KSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFBy
b2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1l
LCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3Jh
bUluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlckluZm9Mb2codWlu
dDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50MzJfdCBw
cmVjaXNpb25UeXBlKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZSwg
R0NHTGludCBwcmVjaXNpb24pIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJTb3VyY2Uo
dWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4g
KGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBp
bnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1pdih1aW50
MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
R2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRf
dCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJp
bmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lKSAtPiAo
dWludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBIaW50KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB2b2lkIElzQnVmZmVyKHVpbnQzMl90IGFyZzAp
IC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNFbmFibGVkKHVp
bnQzMl90IGNhcCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJ
c0ZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgSXNQcm9ncmFtKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1NoYWRlcih1aW50
MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElz
VGV4dHVyZSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIExpbmVXaWR0aChmbG9hdCBhcmcwKQorICAgIHZvaWQgTGlua1Byb2dyYW0odWlu
dDMyX3QgYXJnMCkKKyAgICB2b2lkIFBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90
IHBhcmFtKQorICAgIHZvaWQgUG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRz
KQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lk
IFNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB2b2lkIFNjaXNz
b3IoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHZvaWQgU2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyBhcmcxKQorICAgIHZv
aWQgU3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2sp
CisgICAgdm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1
bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2sodWlu
dDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwg
dWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJf
dCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBTdGVuY2lsT3BTZXBhcmF0ZSh1aW50
MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3Mp
CisgICAgdm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUs
IGZsb2F0IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgVW5pZm9ybTFmKGludDMyX3Qg
bG9jYXRpb24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3JtMWZ2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtMWkoaW50MzJf
dCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHZvaWQgVW5pZm9ybTFpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtMmYo
aW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFVuaWZvcm0yZnYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lk
IFVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB2
b2lkIFVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PiB2KQorICAgIHZvaWQgVW5pZm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBVbmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtM2koaW50MzJfdCBs
b2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB2b2lkIFVuaWZv
cm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQor
ICAgIHZvaWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3JtNGZ2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtNGkoaW50MzJfdCBs
b2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAg
IHZvaWQgVW5pZm9ybTRpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lk
IFVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDRmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4gdmFsdWUpCisgICAgdm9pZCBVc2VQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBW
YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjFmKHVp
bnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHZvaWQgVmVydGV4QXR0cmliMWZ2KHVpbnQzMl90
IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiB2YWx1ZXMpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lk
IFZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dCwgMj4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZnYodWludDMy
X3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+IHZhbHVlcykKKyAgICB2b2lk
IFZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6
LCBmbG9hdCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJQ
b2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wg
bm9ybWFsaXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFZp
ZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyAgICB2b2lkIEJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwg
dWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJEYXRhMSh1aW50MzJfdCB0YXJnZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9p
ZCBCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBSZWFkblBpeGVsczAoaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgUmVhZG5QaXhlbHMx
KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWlu
dDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBU
ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFn
ZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2Vk
VGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVy
LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQor
ICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1
YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJf
dCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBE
cmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3Qg
Y291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yKHVp
bnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJy
YXkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxl
dGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheSh1aW50
MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJp
bmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weUJ1ZmZlclN1YkRhdGEo
dWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRP
ZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0
QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qg
ZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZ
MCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBk
c3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMy
X3QgZmlsdGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVs
LCBpbnQzMl90IGxheWVyKQorICAgIHZvaWQgSW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90
IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMpCisgICAg
dm9pZCBJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgUmVhZEJ1ZmZlcih1aW50MzJf
dCBzcmMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UyRCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdlM0QodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHZvaWQgVGV4SW1hZ2UzRDAo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3Jk
ZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNE
MCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJf
dCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4U3ViSW1hZ2UzRDEodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9m
ZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQs
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1h
Z2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMy
X3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQg
Q29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwg
aW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAg
ICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBm
b3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBHZXRG
cmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyBuYW1lKSAtPiAoaW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm0xdWkoaW50MzJfdCBs
b2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlmb3JtMnVpKGludDMyX3QgbG9jYXRp
b24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2b2lkIFVuaWZvcm0zdWkoaW50MzJf
dCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB2
b2lkIFVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
LCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9pZCBVbmlmb3JtMXVpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQg
VW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtNHVpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQg
VW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4MmZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4
NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAg
IHZvaWQgVmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3Qg
eSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGl2KHVpbnQz
Ml90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+IHZhbHVlcykKKyAgICB2
b2lkIFZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90
IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpdih1
aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4gdmFsdWVzKQor
ICAgIHZvaWQgVmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6
ZSwgdWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIERyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50
MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB2b2lkIERyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMp
CisgICAgdm9pZCBDbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVm
ZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFy
QnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZ2KHVpbnQz
Ml90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJf
dCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHZvaWQgQ3Jl
YXRlUXVlcnkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBEZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB2b2lkIElzUXVlcnkodWludDMyX3Qg
cXVlcnkpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmVnaW5R
dWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgRW5kUXVlcnko
dWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNhbXBsZXIo
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVT
YW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJc1NhbXBsZXIodWludDMyX3Qgc2Ft
cGxlcikgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kU2Ft
cGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgU2FtcGxlclBh
cmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0p
CisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBw
bmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJf
dCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgRmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MpIC0+ICh1aW50
NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU3luYyh1aW50NjRfdCBh
cmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVN5
bmModWludDY0X3QgYXJnMCkKKyAgICB2b2lkIENsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAs
IHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJf
dCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHZvaWQgR2V0U3luY2kodWludDY0X3QgYXJn
MCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJf
dCBpZCkKKyAgICB2b2lkIElzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpIC0+IChib29s
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFRyYW5zZm9ybUZlZWRiYWNr
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgdm9pZCBCZWdpblRyYW5zZm9ybUZl
ZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgdm9pZCBFbmRUcmFuc2Zvcm1GZWVk
YmFjaygpCisgICAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dy
YW0sIFZlY3RvcjxTdHJpbmc+IHZhcnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHZv
aWQgR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90
IGluZGV4KSAtPiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikg
U3luY2hyb25vdXMKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQg
UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgQmluZEJ1ZmZlckJhc2UodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHZvaWQgQmlu
ZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1
ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0VW5pZm9y
bUluZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdW5pZm9ybU5hbWVzKSAt
PiAoVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4gdW5pZm9y
bUluZGljZXMsIHVpbnQzMl90IHBuYW1lKSAtPiAoVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJv
Z3JhbSwgU3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tC
aW5kaW5nKQorICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBw
YXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXJBTkdMRShp
bnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kx
LCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRz
dFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxl
cywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBh
cmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQz
Ml90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJ
bnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFB1c2hHcm91cE1hcmtl
ckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB2b2lk
IERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAg
dm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJz
dCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0
eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAg
IHZvaWQgR2V0SW50ZXJuYWxmb3JtYXRpdih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zKSBTeW5jaHJvbm91cworfQorCisjZW5kaWYK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YzQwYzk4
NWNiN2QyNzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdo
dC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgeworCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hIGZpbmFsIDog
cHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0
OworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmln
aHQmJik+JiYpIGZpbmFsOworCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4gb3ZlcnJpZGVzLgorICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgZmluYWw7CisgICAg
dm9pZCBwcmVzZW50KEJ1ZmZlcikgZmluYWw7CisgICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgZmlu
YWw7Citwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpC
dWZmZXIgbV9kaXNwbGF5QnVmZmVyOworfTsKKworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpOworfQorCitSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50
aWZpZXIpCisgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0
aW9uLCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJv
Y2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW46OkJ1ZmZlciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpyZWN5Y2xl
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikK
K3sKKyAgICBBU1NFUlQoIW1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX2Rpc3BsYXlC
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Cit9CisKK3ZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OmRldGFjaENsaWVudCgpCit7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9k
aXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
VEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jb250
ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdURk1v
dmUobV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0
OworICAgIGlmIChkaXNwbGF5QnVmZmVyKQorICAgICAgICBzZW5kUmlnaHQgPSBkaXNwbGF5QnVm
ZmVyLT5jcmVhdGVTZW5kUmlnaHQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNl
bmRSaWdodCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjAxNjAyYWY0OTNlYjY3
ZGUzZTYyY2YwZTUwYWMwYTJiOTkyNWYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmgKQEAgLTAsMCArMSwxMTg5IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMgZmls
ZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQorICAg
IHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAgICB9CisgICAgdm9pZCBzeW50aGVz
aXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgIH0KKyAgICB2b2lkIG1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgYWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNoYWRl
cih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lkIGJp
bmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nJiYg
bmFtZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKGFyZzAs
IGluZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0
YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFRl
eHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJsZW5k
Q29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvbihtb2RlKTsKKyAgICB9CisgICAgdm9p
ZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFs
cGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUobW9k
ZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmModWludDMyX3Qgc2Zh
Y3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRG
dW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRl
KHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWlu
dDMyX3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1NlcGFy
YXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgIH0KKyAgICB2b2lk
IGNoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY2xlYXIodWludDMyX3QgbWFzaykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFzayk7CisgICAgfQorICAgIHZvaWQg
Y2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBo
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7CisgICAgfQorICAgIHZvaWQg
Y2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJT
dGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVl
biwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb2xv
ck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlZCksIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihibHVlKSwgc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAgIHZvaWQgY29tcGlsZVNoYWRlcih1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGFyZzAp
OworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworICAgIH0KKyAgICB2b2lkIGNvcHlU
ZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1H
TE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVByb2dyYW0oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUmVuZGVyYnVmZmVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2hhZGVy
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihh
cmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4
dHVyZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihhcmcwKTsKKyAg
ICB9CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9p
ZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVy
KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1
ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aEZ1bmModWlu
dDMyX3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMpOwor
ICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZsYWcpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oZmxhZykpOworICAgIH0K
KyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpOworICAgIH0KKyAgICB2b2lk
IGRldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQg
ZGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGUo
Y2FwKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3Qg
aW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3
QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRz
KHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50
LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9p
ZCBlbmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGUo
Y2FwKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBp
bmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
aW5kZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1
ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsIGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJf
dCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwp
OworICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2VuZXJhdGVN
aXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZW5lcmF0
ZU1pcG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBh
cmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUoYXJn
MikpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwg
dWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3RyaW5nKHVp
bnQzMl90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
Z2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19j
YXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2
KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1
ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwg
dWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyNjQocG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NGko
dWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0aShwbmFtZSwgaW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1p
KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFBy
b2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50
NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5j
ZTxib29sPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NH
TGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPihyZWludGVycHJldF9jYXN0
PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRFcnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1
aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbUluZm9Mb2co
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhhcmcwKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGFyZzAsIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlckluZm9M
b2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFyZzAp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUs
IHVpbnQzMl90IHByZWNpc2lvblR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90LCAyPiwgaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBzdGQ6OmFycmF5PEdDR0xpbnQsIDI+IHJhbmdlIHsgfTsKKyAgICAgICAg
R0NHTGludCBwcmVjaXNpb24gPSB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLCAmcHJlY2lzaW9u
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
LCAyPihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihyYW5nZS5kYXRhKCkpLCByYW5nZS5zaXpl
KCkpLCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlclNvdXJjZSh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShhcmcwKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtZnYodWludDMyX3QgcHJv
Z3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNfY2Fz
dDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1m
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUu
ZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2KHVp
bnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1ZShz
dGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdl
dFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3Qg
dmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dM
dWludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5n
JiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
bW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOworICAg
IH0KKyAgICB2b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
QnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBjYXAs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzRW5hYmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlz
RnJhbWVidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1ZmZl
cihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUmVu
ZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVmZmVy
KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmlzU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4dHVy
ZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcwKTsK
KyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJh
bSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsK
KyAgICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7
CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFn
ZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNh
bXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7Cisg
ICAgfQorICAgIHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3IoeCwg
eSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQzMl90
IGFyZzAsIFN0cmluZyYmIGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNv
dXJjZShhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuYyh1aW50MzJfdCBm
dW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2ls
RnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1
aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuY1NlcGFy
YXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2so
dWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2sobWFz
ayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1
aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFza1NlcGFy
YXRlKGZhY2UsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcCh1aW50MzJfdCBmYWls
LCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHN0ZW5j
aWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWls
LCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wU2Vw
YXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJh
bWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFt
KTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBh
cmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0x
ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtMWYobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZnYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBm
bG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9j
YXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRp
b24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEo
KSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNmKGludDMyX3QgbG9jYXRp
b24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNm
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3QgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNp
KGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2l2KGludDMyX3Qg
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRp
b24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQz
Ml90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRpKGxv
Y2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGl2KGludDMyX3Qg
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
Pih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxv
YXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3Nl
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUu
ZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZh
bHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVzZVByb2dyYW0odWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAg
dm9pZCB2YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJp
YjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiYmIHZhbHVlcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NH
TFNwYW48MT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgp
KSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9h
dCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZihp
bmRleCwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiYmIHZhbHVlcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmRl
eCwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVpbnQzMl90IGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiYmIHZhbHVlcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRy
aWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiYmIHZhbHVlcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NH
TFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgp
KSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgs
IGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0
cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
bm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7Cisg
ICAgfQorICAgIHZvaWQgdmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52aWV3cG9ydCh4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMCh1aW50MzJf
dCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihh
cmcxKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEsIHVpbnQzMl90IHVzYWdlKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFy
Z2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGlj
X2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgcmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBk
YXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hh
ciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1f
Y29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBk
YXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4
ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDAodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQz
Ml90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIHRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVs
cy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2Uy
RDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1h
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7
CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
b21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1
aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQg
ZHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90
IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJh
d0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQor
ICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291
bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3Vu
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29y
KGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVmVy
dGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFyZzApOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5iaW5kVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weUJ1ZmZl
clN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2
NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0
ZVRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0
PEdDR0xpbnRwdHI+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmc0
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGNoYXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90Pihk
YXRhU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3Jj
WDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3Qg
ZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3Jj
WDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAg
ICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMy
X3QgbGF5ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICB9Cisg
ICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1lbnRz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50
MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMs
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50
cy5kYXRhKCkpLCBhdHRhY2htZW50cy5zaXplKCkpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICB9CisgICAgdm9pZCByZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+cmVhZEJ1ZmZlcihzcmMpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0
LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZv
aWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQq
PihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleElt
YWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMy
X3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMy
X3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0
YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhT
dWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHks
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGlu
dDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFn
ZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBp
bWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3Jt
YXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0
LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGdldEZy
YWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWkoaW50
MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1
aW50MzJfdCB2MikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2NhdGlv
biwgdjAsIHYxLCB2Mik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aShpbnQzMl90IGxvY2F0
aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2
MiwgdjMpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aXYo
bG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aXYobG9jYXRpb24sIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5z
cG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRy
YW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRh
KCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwgaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4m
JiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5k
ZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1
ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkodWludDMyX3Qg
aW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHos
IHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXpl
LCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlw
ZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBzdGFydCwgdWlu
dDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0
LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAg
ICB9CisgICAgdm9pZCBkcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYm
IGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzKG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBp
bnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2YWx1ZXMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVm
ZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFsdWVz
LmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVp
dih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVm
ZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIGNsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZm
ZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVl
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZl
ciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwg
ZGVwdGgsIHN0ZW5jaWwpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVRdWVyeSh1aW50MzJfdCBxdWVy
eSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUXVlcnkocXVlcnkpOworICAgIH0K
KyAgICB2b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUXVl
cnkocXVlcnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5RdWVyeSh0
YXJnZXQsIHF1ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBlbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldCk7CisgICAgfQorICAg
IHZvaWQgZ2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeU9iamVj
dHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNhbXBsZXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2FtcGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2FtcGxlcih1aW50MzJfdCBz
YW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTYW1wbGVyKHNhbXBsZXIp
OworICAgIH0KKyAgICB2b2lkIGlzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFNhbXBs
ZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFy
YW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIs
IHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYodWludDMy
X3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOworICAg
IH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIs
IHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90
IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBu
YW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZsYWdzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xzeW5jIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocmV0dXJuVmFsdWUpKSk7CisgICAgfQorICAgIHZvaWQgaXNTeW5jKHVpbnQ2NF90IGFy
ZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVT
eW5jKHVpbnQ2NF90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVN5bmMo
cmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7
CisgICAgfQorICAgIHZvaWQgY2xpZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3Qg
ZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jbGllbnRXYWl0U3lu
YyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkp
LCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTHVpbnQ2ND4odGltZW91dCkpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgd2FpdFN5bmModWlu
dDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+d2FpdFN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4odGlt
ZW91dCkpOworICAgIH0KKyAgICB2b2lkIGdldFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90
IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN5bmNpKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5
bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRyYW5zZm9y
bUZlZWRiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgIH0KKyAgICB2
b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
VHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCk7CisgICAgfQorICAgIHZv
aWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUp
OworICAgIH0KKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCB0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYg
dmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUp
OworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBw
cm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIg
eyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9n
cmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYXJn
MikpOworICAgIH0KKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZv
aWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5y
ZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNl
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVy
KTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFy
ZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGlu
ZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHN0YXRpY19jYXN0
PEdDR0xzaXplaXB0cj4oYXJnNCkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1JbmRpY2Vz
KHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdW5pZm9ybU5hbWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQ+IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwg
dW5pZm9ybU5hbWVzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dy
YW0sIFZlY3Rvcjx1aW50MzJfdD4mJiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0luZGV4
KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5p
Zm9ybUJsb2NrSW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFt
ZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5k
aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJf
dCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
QmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5k
aW5nKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBw
cm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2
NF90IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDApOwor
ICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZv
cm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihw
YXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBzcmNY
MCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBk
c3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMy
X3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3Jj
WTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVW
ZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFy
ZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWxldGVWZXJ0
ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5T0VTKHVpbnQz
Ml90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5
T0VTKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmluZFZl
cnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpbnNlcnRF
dmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZv
aWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQoKTsKKyAgICB9CisgICAgdm9pZCBkcmF3
QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVm
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWlu
dDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291
bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0KKyAg
ICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTHZvaWRwdHI+
KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4
LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRf
dCBwYXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdD
R0xpbnQsIDQ+IHBhcmFtcyhzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtc1NpemUpLCAwKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRh
KCkpLCBwYXJhbXMuc2l6ZSgpKSk7CisgICAgfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCBkNmVlMmJjYmNhYjZhNzBlNDJkMGU5ODg0OWFhODEzMDA5NjRj
YTI4Li44OWZiOGFiYWY5YWVjZTA3YzYzNDcwZGEzZGI4M2M4ODMyNmRkM2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNiw2ICsyMTYsNyBAQCBkZWYg
dHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29y
ZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCisgICAgICAg
ICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMnLAogICAgICAgICAnV2ViQ29y
ZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlh
UGxheWVySWRlbnRpZmllcicsCkBAIC0yNDQsNiArMjQ1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fu
bm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6RGlzcGxheUxpbmtP
YnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCiAgICAgICAgICdXZWJL
aXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAg
ICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQnLApAQCAtNTMxLDYgKzUzMyw3IEBAIGRl
ZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdPcHRp
b25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rl
cl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0b3InOiB7
J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzog
WyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMn
OiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29k
ZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsn
IkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1l
bnRDb2RlcnMuaCInXX0sCiAgICAgfQogCiAgICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9QPHRlbXBs
YXRlX25hbWU+Lis/KTwoP1A8cGFyYW1ldGVyX3N0cmluZz4uKyk+JywgdGVtcGxhdGVfc3RyaW5n
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggOWMyNmRiNGU5YTlmNmJhNzJlNDgyMGJiNDA2YzJjZmJkZTExM2U5Yi4uZGEzNzM0Yzg0ZDY1
NGQ4ZDAzY2E3OTI1ZjdiZDc1OTkxM2JjMzRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMjIxLDQgKzMyMjEsODIgQEAgT3B0aW9u
YWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBXVEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKK3ZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbHBoYTsKKyAgICBlbmNv
ZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5j
aWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFudGlhbGlhczsKKyAgICBlbmNvZGVyIDw8
IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRl
cy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJ
Zk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnBvd2Vy
UHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXM7Cisg
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wyOworICAgIGVuY29kZXIgPDwgYXR0cmli
dXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVs
UmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2U7
CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy54ckNvbXBhdGli
bGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5h
bHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3RlbmNpbCkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFudGlh
bGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcykpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVz
LmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxS
YXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mIGFj
dGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLm5hbWU7CisgICAgZW5jb2Rl
ciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9
CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8u
bmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5zaXplKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5mbzsKK30KKworI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1NWUyMTFlMTdjNGJlZGVmMTcwNWQ2Li4xZGFl
OTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2ZTlmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzEsNiArNzEsMTMgQEAKICNpbmNs
dWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBl
c0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBj
bGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIxMCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0
b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczsKKyNlbmRpZgorCiBu
YW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNv
cmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogfTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mKTsKKyAgICBzdGF0aWMgT3B0aW9u
YWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IGRlY29kZShEZWNvZGVy
Jik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsK
QEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZT4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsKK307CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUwODYzNjVkYmY3N2ZhOThlNDFjMWM3NGEzZTdl
MjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdiMDQ4YTNkZWM2Y2Y4NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0x
NTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyQ2Fu
dmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9j
ZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzOworI2lmIEVO
QUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNz
OworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIGVu
Y29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVBy
b2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJHTCkK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQ
VVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcikpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZDkxZTQ2MDM4ZjMwOWI1MTMwYmZkZTU4
ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1YmY0ZjkyY2YwNmZlNWUxMTIwNWE0YjUxMTJi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wg
c2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wp
CisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5k
aWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wg
c2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzNjBhMzU3MjZmNjcxODQwODQwODc0MDcxMDliODc1
MWIzNDEwMzE2Li41MGNkZTEyYWZhM2FhN2Y3OGMyNzllYzhmYjgxOTc0NGI2ZmIxZWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAog
R1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIu
Y3BwCkBAIC02OTIsMyArNjkzLDUgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKIFdlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisKK1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDRl
YThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJkNmY5NzMuLjE3NmZjOWExNzUwMWJjNTlm
OTY2OTk5MjNhZmNiYWE5M2U4ZDAxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU2LDYg
KzU2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKIAogR1BVUHJv
Y2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2VydmljZUVudHJ5UG9pbnQubW0K
K0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKIEdQ
VVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NN
YWMubW0KIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNw
cApAQCAtNjMsNiArNjQsOCBAQCBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bQogCisKKwogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKIFBsYXRmb3JtL2NsYXNzaWZpZXIv
Y29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKQEAgLTU3NSw2
ICs1NzgsOCBAQCBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250
ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5k
LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjg3LDYgKzY5Miw3IEBAIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcAogU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTIxMjUzMGZjNjVlNzQ3OTAzMTMy
NGM0NWQwNDg4MjUyZDFiNGEyNi4uMmRlM2IzYTQ1MWM3ZTFjMjhmZTFjOWMzNzQwNjFlNmZmMjFj
NmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC03MDEsNyArNzAxLDYgQEAKIAkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFy
Z3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87
IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcw
MDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5
M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICov
OyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JF
NTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZB
NzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAq
LzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAw
NThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQg
LyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2
ZXJNYXAuY3BwICovOyB9OwpAQCAtNDM5Miw2ICs0MzkxLDE2IEBACiAJCTdBRkJEMzZEMjFFNTQ2
RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3Rl
bmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZF
MzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVy
c2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMURCMjY1
MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTZBMjU0QUZF
QTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlv
bnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5j
dGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2NTcy
NTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNH
ZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAg
LyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1
MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBX
S1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjY4NCwxMSArNjY5MywxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBB
cmd1bWVudENvZGVyLmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3Vt
ZW50Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1l
bnRDb2RlcnMuaCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZl
cmVuY2UuaCAqLywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5j
cHAgKi8sCiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywK
IAkJCQlCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJ
QkMwMzJEQTMxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3
RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0Ux
ODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQz
N0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThD
MTVBIC8qIERlY29kZXIuaCAqLywKQEAgLTgzNjAsMTEgKzgzNjksMTYgQEAKIAkJCQk3MjdBN0Yz
MzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3
M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMw
NDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBC
NjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJ
CQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
ICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4
OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywK
IAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmggKi8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUx
NzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8s
CisJCQkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDRE
MjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYw
OTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUw
NjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICov
LApAQCAtODM4Miw2ICs4Mzk2LDExIEBACiAJCQkJRjQwOTRDQkMyNTUzMDRBRjAwM0Q3M0UzIC8q
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCQjI1NTMwNEFGMDAz
RDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCAqLywKIAkJCQk1NUFEMDk0MzI0MDhB
MEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAorCQkJCTdCOTA0
MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8sCisJ
CQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgg
Ki8sCisJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywK
IAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywK
IAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUyMTJjNjEyNjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGEwNmZiMDA3
NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKK30KKworUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3Nh
Z2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFw
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50
b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdl
UmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wo
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVCdWZmZXIoKTsKKyNlbmRpZgorfQorCitJ
UEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit1aW50
NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0
aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFj
aFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxh
eUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
V1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7Cisg
ICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBD
aGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CisgICAgICAgIHNjLnByZXNlbnQo
eyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOworICAgIH0KKyNlbHNlCisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlz
cGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNw
bGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisjZW5k
aWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFy
a0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11
bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IG5vdCBpbXBs
ZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgdGhlIHJpZ2h0IHdheS4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM0OQorICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3Ry
aW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKSB7
CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVkIG91dCBiZWZvcmUsIHNvIGxvc2UgdGhl
IGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25z
KTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29w
eVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9yY2VDb250ZXh0TG9zdCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQoKQor
eworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAg
ICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkK
K3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47CisgICAgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChjb25uZWN0aW9u
LT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VB
cnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91dCwgc28gcmVwb3J0IGlu
aXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2UgdGhlIGNvbnRleHQuCisg
ICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNv
bnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNh
bGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk5ZWRhMjlmNmRiNWUx
ODE5NzEzMTc4ZjJhYTUzMWI0ZjVkZDZlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
CkBAIC0wLDAgKzEsNDExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRl
eHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlvbgorLy8gY29udmVydHMgdGhlIGludGVy
ZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdlcyBhbmQgc2VuZHMgdGhlIG1lc3NhZ2Vz
IHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vzcy4KKy8vIFRoZSBp
bXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVibGljIFdlYkNvcmU6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgp
IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIHZvaWQgcmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRp
c3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5h
bDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdl
QnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gcGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsKKworICAgIC8vIEZ1bmN0aW9ucyB3aXRo
IGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0
ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2so
KSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5h
bDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOworICAg
IHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5hbDsKKyAgICB2b2lkIGF0
dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZv
aWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmlu
YWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kVGV4dHVy
ZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9p
ZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBm
IGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRFcXVhdGlvbihH
Q0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dM
ZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRG
dW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpIGZpbmFsOworICAgIHZvaWQg
YmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xl
bnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkgZmluYWw7CisgICAgR0NHTGVudW0gY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIHZvaWQgY2xl
YXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAgIHZvaWQgY2xlYXJDb2xvcihHQ0dMY2xh
bXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFs
cGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkgZmluYWw7
CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBzKSBmaW5hbDsKKyAgICB2b2lkIGNvbG9y
TWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVl
LCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5h
bDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJl
bmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2hhZGVyKEdD
R0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVGV4dHVyZSgp
IGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRl
bGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBk
ZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxl
dGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRl
bGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRl
VGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgZGVwdGhGdW5j
KEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQgZGVwdGhNYXNrKEdDR0xib29sZWFuIGZs
YWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xh
bXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGUoR0NH
TGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dM
dWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVu
dHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsK
KyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsK
KyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2
b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7CisgICAgdm9pZCBmcm9udEZhY2UoR0NHTGVu
dW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQp
IGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAgIGJvb2wgZ2V0
QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSBmaW5hbDsKKyAgICB2
b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkg
ZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NHTGludCBnZXRQcm9ncmFtaShQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEJv
b2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFs
OworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNo
bWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xv
ZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAg
ICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBz
aGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiBy
YW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU291
cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFRleFBh
cmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NH
TGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZp
bmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9p
ZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
THVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgR0NHTHNp
emVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUp
IGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVkKEdDR0xlbnVtIGNhcCkgZmluYWw7Cisg
ICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkgZmluYWw7CisgICAgdm9p
ZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgcGl4
ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQg
cG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpIGZpbmFsOwor
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwor
ICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52
ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBzaGFkZXJTb3Vy
Y2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBm
aW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVu
dW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3Rl
bmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFy
YXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNp
bE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7
CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWls
LCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZvaWQgdGV4UGFy
YW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0p
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgs
IEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0y
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYp
IGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4
LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAg
IHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00ZihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dM
ZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkg
ZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmlu
YWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJm
KEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFsOworICAgIHZv
aWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBp
bmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmluYWw7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQg
dykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwg
R0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKSBmaW5h
bDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQg
dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJy
YXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdD
R0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3Jp
dGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwg
R0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFs
OworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOworICAgIHZvaWQgaW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmluYWw7CisgICAgdm9pZCBy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkgZmluYWw7
CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQg
dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZp
bmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBH
Q0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0
YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
Ykk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykg
ZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1
aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdD
R0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJh
d0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQg
Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2
KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVz
KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBmaW5hbDsKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVR
dWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1F1
ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQgYmVnaW5RdWVyeShH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQg
ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGdl
dFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1
aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOwor
ICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFs
OworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBh
cmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVu
dW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOworICAgIEdDR0xib29sZWFu
IGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVN5bmMoR0NHTHN5
bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJn
MCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIHZv
aWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQg
dGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZv
cm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFj
ayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVk
YmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIHZv
aWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKSBmaW5hbDsK
KyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCB0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKSBmaW5hbDsKKyAgICB2b2lk
IGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlVHJh
bnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNr
KCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1
aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikgZmluYWw7CisgICAgdm9pZCBiaW5k
QnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9i
amVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIpIGZpbmFsOworICAg
IFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBmaW5hbDsKKyAgICBWZWN0
b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
b25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZp
bmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsKKyAgICBTdHJp
bmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1CbG9ja0Jp
bmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CisgICAgdm9pZCBnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7Cisg
ICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7CisgICAgdm9pZCBi
bGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50
IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dM
aW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmls
dGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0
ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJv
b2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5n
JiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcm
IGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSBmaW5hbDsKKyAgICB2
b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsK
KyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAg
IHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmlt
Y291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICB2b2lkIGdldEludGVybmFsZm9y
bWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCByZWFkUGl4
ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVp
KiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRR
dWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRl
eCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0
YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmluYWw7CisgICAgdm9pZCBnZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWlu
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmpl
Y3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICAvLyBFbmQgb2YgbGlzdCB1c2Vk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCitwcm90ZWN0ZWQ6CisgICAgLy8gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIHZvaWQgd2FpdFVu
dGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlcyB0byBi
ZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YXNMb3N0KCk7
CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGJv
b2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBm
b2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGVudW0s
IHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9m
KGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50
MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7
CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1Ynl0ZSwgdWludDhfdD4pOworc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hvcnQsIGludDE2X3Q+KTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92
PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGhh
bGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGNs
YW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHZvaWQsIHZv
aWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8UGxhdGZvcm1HTE9iamVjdCwgdWlu
dDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xjaGFyKSA9PSBzaXplb2YodWludDhf
dCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludDY0KSA9PSBzaXplb2YoaW50NjRfdCkp
Oworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2NCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7
CisvLyBHQ0dMc3luYyBhbmQgR0NHTCpwdHIgdHlwZXMgYXJlIHBvaW50ZXJzLiBPbiBzb21lIHBs
YXRmb3JtcywgdGhleSBhcmUgMzItYml0LgorLy8gQ3VycmVudGx5IHdlIGhhcmQtY29kZSBpdCBi
eSB1c2luZyA8PSwgYW5kIGFzc3VtZSB0aGF0IHdlIGRvIG5vdCB0cmFuc2ZlciBhcnJheXMgb2Yg
dGhlIHR5cGVzLgorc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludHB0cikgPD0gc2l6ZW9mKHVp
bnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMc2l6ZWlwdHIpIDw9IHNpemVvZih1
aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHZvaWRwdHIpIDw9IHNpemVvZih1
aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMpIDw9IHNpemVvZih1aW50
NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRyX3QpKTsKKy8vIEVuZCBv
ZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJiMmJjMTAxMGVmOGVjZDBh
ZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdl
cyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIHZv
aWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3Rh
YmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2FzQ2hhbmdlZCgp
OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZWNmODY1
NTZhMDA3M2FmOGY1NTRjZmNmYzBlZjMzOWY2MWU4OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NiBAQAorLyogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90
IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJH
TCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihl
cnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKQor
eworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNF
cnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRleHR1cmUo
dGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBH
Q0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgs
IG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIo
dGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
aW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dM
Y2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBm
IGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5k
RXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5k
RXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRp
b25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5j
KEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVu
dW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuY1NlcGFyYXRl
KHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
bGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNvbG9yKEdD
R0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFt
cGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xl
YXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
U3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dM
Ym9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9v
bGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdy
ZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGlsZVNoYWRl
cihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQ
bGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1l
YnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1aW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3Jt
R0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVy
KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQoreworICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRl
eHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
dWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhG
dW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayhHQ0dM
Ym9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpG
YXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwg
UGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
aXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6
ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVt
ZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51
bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0
dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWlu
dCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0
aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJl
cGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAs
IGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmli
TG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKEdD
R0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAg
ICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Rmxv
YXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1
ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkp
OworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVn
ZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2Vy
dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1
ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90
KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1
ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRl
Z2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAgICBpbnQ2NF90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+
IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVSZXBseTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAg
ICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXpl
ICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJy
b3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFj
aG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xv
ZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJv
Z3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sK
KyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdD
R0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3QgcHJlY2lzaW9uUmVw
bHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwg
cHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hh
ZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBseSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkg
eworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1
ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lzaW9uKQorICAgICAg
ICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30KKworU3RyaW5nIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJm
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdl
dCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFt
ZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQoreworICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYo
cHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAg
bWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6
ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0
aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5k
YXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7
CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2
YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFs
dWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9y
bXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZh
bHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAg
Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0
KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVy
dGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihy
ZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGlu
dChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVy
blZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVk
KGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NH
TGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIo
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisK
K0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3JhbShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbShhcmcw
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW06OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9v
bGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwor
R0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFkZXIoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihhcmcwKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3Jl
aShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChHQ0dMZmxvYXQg
ZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0
YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNh
bXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJhZ2Uo
dmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nv
cihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29y
KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NH
THVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxG
dW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdD
R0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFza1Nl
cGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZh
aWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51
bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZh
aWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBu
YW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFy
YW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9h
dCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90
Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRh
dGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgs
IHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
M2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NH
TGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGlu
dCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aXYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1
ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVl
LmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3Jh
bShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRh
dGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmYoR0NH
THVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRh
dGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YoR0NH
THVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNm
KGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWlu
dCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihpbmRl
eCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdD
R0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1
ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWlu
dCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxp
emVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRl
eCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmlld3BvcnQoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmlld3BvcnQoeCwg
eSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51
bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAg
ICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBz
aXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJE
MCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVs
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2Uy
RDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwg
aW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRl
eFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZCht
b2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVu
dHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1v
ZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihy
ZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0g
d3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNl
dCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3
cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdD
R0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAg
ICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICog
c2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NH
TGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwg
R0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVt
IGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZv
cm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1
cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
YXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNyYyksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwg
c2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJEKHRh
cmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwg
dHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhT
dWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDAodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3Nl
ZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dD
R0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwg
djApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWlu
dCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NH
THVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50
IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz
Ml90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
TWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYobG9j
YXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0
YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4o
dHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0
YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4
M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQg
aW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRp
KGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aXYoR0NH
THVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpdihp
bmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWlu
dCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZh
bHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6
ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwg
R0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMoR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZm
ZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJh
d2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFy
QnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBk
ZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0
ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3Jt
R0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5
KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnko
cXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5
T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
cikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRl
U2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2Ft
cGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0
LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5h
bWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZmxv
YXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxh
dGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNh
bXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1w
bGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc3luYyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9u
LCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5
bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNT
eW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKEdDR0xz
eW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVu
dW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMg
YXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7CisgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRX
YWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBm
bGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJl
dF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1l
b3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51
bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51
bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZl
TW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVn
aW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFRy
YW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
cHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5k
ZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5k
ZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5z
Zm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1
ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVj
dCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
aW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1H
TE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJh
bmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCks
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQoreworICAg
IFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVp
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpCit7
CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1
bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQorewor
ICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwg
dW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2Nr
SW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5p
Zm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7CisgICAgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1
ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHBhcmFtcy5k
YXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGludDMyX3Qp
KTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdM
RShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNy
Y1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50
IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShz
cmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1h
c2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdM
T2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VT
KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFy
cmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xi
b29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlPRVMoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5
T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJy
YXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJh
eU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3Qg
U3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
YnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50
LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNv
dW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sK
KyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5OworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgcGFyYW1z
LmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVybmFs
Zm9ybWF0aXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkocGFyYW1zLmRh
dGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkp
OworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhl
bHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQ
b2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBh
cmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJh
bSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJh
bWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRh
dGEpIC8vIE5PTElOVAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UG9pbnRlcnZS
b2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlP
YmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRp
ZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2
MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRlOWQ1NDkyMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYsMjIgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5B
QkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9tZUNsaWVudDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25z
dAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVu
ZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1ZB
UklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJl
dHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7Cisj
ZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9v
dEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4Li4xMjE1
ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpS
ZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFCTEUoV0VCR0wp
CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRD
b21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMsNiArNDA3LDcg
QEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6
b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5G
cmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBhZ2UmIG1fcGFn
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggYzQ0NjM4ZmVkN2JkMzhkNjFlOTY2Y2NmZTAzNDEyNjM0NjQyNmNmYi4uOTA0NDA3Mjlj
OTUxMzJhZDc4ZjhhNmIzN2UzOGFjNTI3OTcwNGRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyNyw2ICs0MjcsOSBAQCBXZWJQYWdlOjpX
ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IHBh
cmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxk
UmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQVVBy
b2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJz
LnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAgICwg
bV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVy
V2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMubmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzMwLDcgKzczMyw2IEBA
IFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYKLSAg
ICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAgICAgICAgc2Nh
bGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5OCwxMCArMzgwMCwx
MiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nl
c3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MpOwog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJp
bmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgJiYgRHJhd2luZ0FyZWE6OnN1cHBvcnRz
R1BVUHJvY2Vzc1JlbmRlcmluZyhtX2RyYXdpbmdBcmVhVHlwZSkpOwogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShtX3Nob3VsZFBsYXlNZWRpYUlu
R1BVUHJvY2Vzcyk7Ci0KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgd2ViIGZvbnRz
IGluIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBpZiAobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nl
c3MpCiAgICAgICAgIHNldHRpbmdzLnNldERvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZChm
YWxzZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNl
dFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKTsK
KyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpAQCAtNjk5OSw2
ICs3MDAzLDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJvbml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJu
c1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobV9p
ZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyksIDApOwogfQogCisKICNpZiBFTkFC
TEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lv
bihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM2MmFkNzdiZTZhZTMyZTBlNjljYTkzZWJmYzYy
M2VhNWRiY2ZlODQuLmZhMTMzNTRkZGZmMjMyODQ1MGI5YzcyY2RhYzRkY2Y3YWU0NTRiMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4MzIsNiAr
MTgzMiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJv
Y2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNl
IH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BV
UHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAj
ZW5kaWYKQEAgLTIxODksNCArMjE5MiwzIEBAIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3Jt
TmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCBmMmYyMjgyMmM3YjIyM2ZjYTU5Zjk1NTczZDExZGM5OWIxMDM0ODEx
Li41ODJlZTc1ZDk5YTc0MjQyNTRhMzlkYWIyMDZmODQ2MTczNGFkOWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTQyLDYgKzE5NDIsMjAgQEAgYm9vbCBX
ZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBw
dXJwb3NlKQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisKKyNpZiBFTkFCTEUoV0VCR0wp
Cit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChib29sIHVzZUdQVVBy
b2Nlc3NGb3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCA9IHVzZUdQVVBy
b2Nlc3NGb3JXZWJHTDsKK30KKworYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3JXZWJHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0Zvcldl
YkdMOworfQorCisjZW5kaWYKKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTljNDdkYjRjNDQ3YzBmNGFiNjI3YzA5NGI1
ZjY4ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMyNzY0YzRkODUzNzkwOTBiMmNiY2E3M2MxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNDcsNiArMzQ3LDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcoYm9vbCk7
CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEoYm9vbCk7CiAgICAgYm9vbCBzaG91
bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSk7CisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wpOwor
ICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdDsKKyNlbmRp
ZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpAQCAtNjg3LDYgKzY5MSw5IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wp
CisgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCB7IGZhbHNlIH07CisjZW5kaWYKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBjNWU2OTZhNmJmYmEzYzdmYmVjMjM0MGY5ZmIzNThhZTkzZjQw
OGZjLi5jMDcxZTNhYTZhMmJhYTVmZmY2NTcyYTdmNzQwMzBjNDUyYzBkY2VkIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50cyBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdM
IGZvciBHUFUgcHJvY2Vzcy4KKyAgICAgICAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2lu
ZyBXZWJLaXQgSVBDIGFuZCBpcyBpbmNvbXBsZXRlLgorCisgICAgICAgIEFkZCB0aGUgY29kZSBn
ZW5lcmF0b3IgdG8gZ2VuZXJhdGUgdGhlIGltcGxlbWVudGF0aW9uLiBDdXJyZW50bHkKKyAgICAg
ICAgdGhlIGdlbmVyYXRvciBnZW5lcmF0ZXMgYSBXZWJLaXQgSVBDIGltcGxlbWVudGF0aW9uLgor
CisgICAgICAgIFRoZSBpbnB1dCBkZWZpbml0aW9uIHRvIHRoZSBnZW5lcmF0b3IgaXMgdGhlIHBy
b3h5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGhlYWRlciBmaWxlcy4KKyAgICAgICAgVGhlIG91
dHB1dCBvZiB0aGUgZ2VuZXJhdG9yIGlzCisgICAgICAgICAgIC0gV2ViS2l0IElQQyBtZXNzYWdl
IGRlZmluaXRpb24gZmlsZQorICAgICAgICAgICAtIE1lc3NhZ2Ugc2VuZGVyIGNvZGUKKyAgICAg
ICAgICAgLSBNZXNzYWdlIHJlY2VpdmVyIGFuZCBwYXlsb2FkIGludm9jYXRpb24gY29kZQorCisg
ICAgICAgIFRoZSBnZW5lcmF0b3IgY29udmVydHMgR3JhcGhpY3NDb250ZXh0R0wgR0NHTCAtcHJl
Zml4ZWQgdHlwZXMgdG8KKyAgICAgICAgc2l6ZWQgSVBDIHR5cGVzLgorCisgICAgICAgIFRoZSBn
ZW5lcmF0b3IgaXMgaW52b2tlZCBkdXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQgdGhlIHJlc3Vs
dHMgYXJlCisgICAgICAgIHN0b3JlZCBpbiB0aGUgcmVwb3NpdG9yeS4KKworICAgICAgICAqIFNj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDogQWRkZWQuCisKIDIwMjAtMTItMDIgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFueSBkaWZmZXJlbnQg
YXNzZXJ0aW9uIGZhaWx1cmVzIG9uIHRoZSBHUFUgcHJvY2VzcyBib3QgYWZ0ZXIgcjI3MDM2Ngpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNmI0MjIyOWNmMmY4MjhjNjZj
N2U3YjQxNzczYzJlYmU0NDMxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAsMCArMSwxMDQ0IEBACisjIS91c3IvYmluL2VudiBweXRo
b24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMg
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBU
aGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIHNvdXJjZSBmaWxlcyBmb3IgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDLgorIworIyBweXRob24zIC1tIGJsYWNrIC1sIDE1MCBUb29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wKKyMgcHl0aG9uMyAtbSBteXB5IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbAorIworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZW51bQoraW1wb3J0IHBhdGhs
aWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCisKK2Zyb20gdHlw
aW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJdGVyYWJsZSwgQ2FsbGFibGUsIFR1cGxlLCBTZXQsIE9w
dGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJhdG9yLCBDb3VudGVyCisKK3Jvb3RfZGlyID0gKHBhdGhs
aWIuUGF0aChfX2ZpbGVfXykucGFyZW50IC8gIi4uIiAvICIuLiIpLnJlc29sdmUoKQorZXh0ZW5z
aW9uc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZv
cm0iIC8gImdyYXBoaWNzIiAvICJFeHRlbnNpb25zR0wuaCIKKworZnVuY3Rpb25zX2lucHV0X2Zu
cyA9IFsKKyAgICByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIg
LyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgor
XQordHlwZXNfaW5wdXRfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2Vi
UHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oIgorCisKK3RlbXBsYXRlX3ByZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmls
ZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisiIiIK
K2NvbnRleHRfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8g
IkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oIgorY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVt
cGxhdGVfcHJlYW1ibGUKKyAgICArICIiIi8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQg
aW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQore30KKworIiIiCispCitjb250ZXh0X21l
c3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3Mi
IC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiIKK2Nv
bnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICAr
ICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMg
LT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworICAgIHZvaWQgUmVz
aGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1
ZmZlcikgU3luY2hyb25vdXMKKyNlbmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lk
IFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQg
RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5
TWFya0NvbnRleHRDaGFuZ2VkKCkKK3t9Cit9fQorCisjZW5kaWYKKworIiIiCispCisKK2NvbnRl
eHRfcHJveHlfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8g
IldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIgorY29udGV4dF9wcm94eV9mdW5jdGlvbnNf
dGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIgorI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2Vi
S2l0IHt7Cit7fQorCit9fQorCisjZW5kaWYKKworIiIiCispCisKKworZGVmIHdyaXRlX2ZpbGUo
Zm4sIG5ld19jb250ZW50cyk6CisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6
CisgICAgICAgICAgICBpZiBmLnJlYWQoKSA9PSBuZXdfY29udGVudHM6CisgICAgICAgICAgICAg
ICAgcmV0dXJuCisgICAgZXhjZXB0OgorICAgICAgICBwYXNzCisgICAgd2l0aCBvcGVuKGZuLCAi
dyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUobmV3X2NvbnRlbnRzKQorCitjbGFzcyBjcHBfdHlw
ZShvYmplY3QpOgorICAgIHR5cGVfbmFtZTogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
dHlwZV9uYW1lIDogc3RyKToKKyAgICAgICAgc2VsZi50eXBlX25hbWUgPSB0eXBlX25hbWUKKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKwor
ICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi50eXBlX25h
bWUpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVf
bmFtZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxm
LnR5cGVfbmFtZSA9PSBvdGhlci50eXBlX25hbWUKKworICAgIGRlZiBpc192b2lkKHNlbGYpIC0+
IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSBpbiBbInZvaWQiLCAiR0NHTHZv
aWQiLCAiY29uc3Qgdm9pZCIsICJjb25zdCBHQ0dMdm9pZCJdCisKKyAgICBkZWYgaXNfY29uc3Qo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgo
ImNvbnN0ICIpCisKKyAgICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJv
b2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxm
KSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19wb2ludGVyKHNl
bGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3Bv
aW50ZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNf
cmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVm
IGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICBy
ZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9kZWNheV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6
CisgICAgICAgIGlmIHNlbGYuaXNfY29uc3QoKToKKyAgICAgICAgICAgIHJldHVybiBnZXRfY3Bw
X3R5cGUoc2VsZi50eXBlX25hbWVbNjpdKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVm
IGdldF9ydmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0
X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIiYmIikKKworICAgIGRlZiBnZXRfcG9pbnRlcl90
eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2Vs
Zi50eXBlX25hbWUgKyAiKiIpCisKK2NsYXNzIGNwcF90eXBlX2NvbnRhaW5lcihjcHBfdHlwZSk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY29udGFpbmVyX25hbWUg
OiBzdHIsIGNvbnRhaW5lZF90eXBlIDogY3BwX3R5cGUsIGFyaXR5IDogT3B0aW9uYWxbaW50XSA9
IE5vbmUpOgorICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAg
ICAgIHNlbGYuY29udGFpbmVyX25hbWUgPSBjb250YWluZXJfbmFtZQorICAgICAgICBzZWxmLmNv
bnRhaW5lZF90eXBlID0gY29udGFpbmVkX3R5cGUKKyAgICAgICAgc2VsZi5hcml0eSA9IGFyaXR5
CisgICAgZGVmIGlzX2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gVHJ1
ZQorICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNv
bnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3Bh
biIgYW5kIHNlbGYuYXJpdHkgaXMgTm9uZQorICAgIGRlZiBnZXRfY29udGFpbmVyX25hbWUoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lCisgICAgZGVmIGdldF9hcml0
eShzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICByZXR1cm4gc2VsZi5hcml0eQorICAg
IGRlZiBnZXRfY29udGFpbmVkX3R5cGUoc2VsZikgLT4gY3BwX3R5cGU6CisgICAgICAgIHJldHVy
biBzZWxmLmNvbnRhaW5lZF90eXBlCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxm
KSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZS5pc19jb25zdCgp
CisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0
aW9uYWxbY3BwX3R5cGVfY29udGFpbmVyXToKKyAgICBtID0gcmUubWF0Y2gociIoW1x3Ol0rKTwo
LispPiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisg
ICAgY29udGFpbmVyX25hbWUgPSBtWzFdCisgICAgdGVtcGxhdGVzID0gbVsyXQorICAgIGFyaXR5
ID0gTm9uZQorICAgIG0gPSByZS5tYXRjaChyIihbXixdKyksXHMqKFxkKykiLCB0ZW1wbGF0ZXMp
CisgICAgaWYgbToKKyAgICAgICAgdGVtcGxhdGVzID0gbVsxXQorICAgICAgICBhcml0eSA9IGlu
dChtWzJdKQorICAgIHJldHVybiBjcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lLCBjb250YWlu
ZXJfbmFtZSwgZ2V0X2NwcF90eXBlKHRlbXBsYXRlcyksIGFyaXR5KQorCitjbGFzcyBjcHBfdHlw
ZV9mdW5jdGlvbihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6
IHN0ciwgcmV0dXJuX3ZhbHVlX3R5cGUgOiBjcHBfdHlwZSwgYXJndW1lbnRfdHlwZXMgOiBMaXN0
W2NwcF90eXBlXSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkK
KyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfdHlwZSAgPSByZXR1cm5fdmFsdWVfdHlwZQorICAg
ICAgICBzZWxmLmFyZ3VtZW50X3R5cGVzID0gYXJndW1lbnRfdHlwZXMKKworZGVmIGNwcF9zcGxp
dF9hcmdzX3NwZWNzKGFyZ3Nfc3BlYyA6IHN0cikgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAgIyBo
dHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMzUyNzI0NS9weXRob24tc3BsaXQt
YnktY29tbWEtc2tpcHBpbmctdGhlLWNvbnRlbnQtaW5zaWRlLXBhcmVudGhlc2VzCisgICAgY29t
bWEgPSByIiwoPyEoPzpbXjxdKlw8W14+XSpcPikqW148Pl0qXD4pIgorICAgIHJldHVybiBmaWx0
ZXIoTm9uZSwgW2Euc3RyaXAoKSBmb3IgYSBpbiByZS5zcGxpdChjb21tYSwgYXJnc19zcGVjLnN0
cmlwKCkpXSkKKyAgICAKK2RlZiBjcmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lIDog
c3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9mdW5jdGlvbl06CisgICAgbSA9IHJlLm1hdGNoKHIn
KC4qKVwoKC4qKVwpJywgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4g
Tm9uZQorICAgIHJldHVybl92YWx1ZV90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgYXJn
c190eXBlcyA9IFtnZXRfY3BwX3R5cGUoYSkgZm9yIGEgaW4gY3BwX3NwbGl0X2FyZ3Nfc3BlY3Mo
bVsyXSldCisgICAgcmV0dXJuIGNwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSwgcmV0dXJuX3Zh
bHVlX3R5cGUsIGFyZ3NfdHlwZXMpCisgICAgICAgIAorIyBQb2ludGVyIG9yIHJlZmVyZXJlbmNl
CitjbGFzcyBjcHBfdHlwZV9pbmRpcmVjdChjcHBfdHlwZSk6CisgICAgY2F0ZWdvcnkgOiBzdHIK
KyAgICB2YWx1ZV90eXBlIDogY3BwX3R5cGUKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
dHlwZV9uYW1lIDogc3RyLCBjYXRlZ29yeSA6IHN0ciwgdmFsdWVfdHlwZSA6IGNwcF90eXBlKToK
KyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxm
LmNhdGVnb3J5ID0gY2F0ZWdvcnkKKyAgICAgICAgc2VsZi52YWx1ZV90eXBlID0gdmFsdWVfdHlw
ZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LmNhdGVnb3J5ID09ICcqJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3BvaW50ZXIo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgbm90IHNlbGYu
aXNfY29uc3QoKQorICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlz
X3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFu
ZCBub3Qgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3J2YWx1ZV9yZWZlcmVuY2Uoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJicKKyAgICBkZWYgZ2V0X3ZhbHVl
X3R5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlX3R5cGUKKworZGVmIGNyZWF0
ZV9jcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBl
X2luZGlyZWN0XToKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiYkIiwgdHlwZV9uYW1l
KQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiYkIiwgdHlwZV9u
YW1lKSAKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9u
YW1lLCAnJiYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3Qg
KC4rKSYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2go
ciIoLispJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBl
X2luZGlyZWN0KHR5cGVfbmFtZSwgJyYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJl
Lm1hdGNoKHIiY29uc3QgKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAg
ICAgbSA9IHJlLm1hdGNoKHIiKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAg
ICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnKicsIGdldF9jcHBfdHlwZSht
WzFdKSkKKyAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIGNwcF9leHByKG9iamVjdCk6CisgICAg
dHlwZTogY3BwX3R5cGUKKyAgICBleHByOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
eXBlOiBjcHBfdHlwZSwgZXhwcjogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAg
ICAgICBzZWxmLmV4cHIgPSBleHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuZXhwcgorCisKK0NwcEV4cHJDb252ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4
cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdCisKKworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zy
b21fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxh
YmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVy
cHJldF9jYXN0X2Zyb21fcG9pbnRlcihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+
IGNwcF9leHByOgorICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7
dHlwZS50eXBlX25hbWV9PihyZWludGVycHJldF9jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUp
fT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21f
cG9pbnRlcgorCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNh
c3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5
cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIo
ZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0
dXJuIGNwcF9leHByKHR5cGUsIGYicmVpbnRlcnByZXRfY2FzdDx7dHlwZS50eXBlX25hbWV9Pihz
dGF0aWNfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAg
IHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyCisKK2RlZiBjcHBfc3RhdGlj
X2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICBy
ZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9Pih7c3Ry
KGV4cHIpfSkiKQorCisKK2RlZiBjcHBfaW1wbGljaXRfY2FzdChleHByOiBjcHBfZXhwciwgdHlw
ZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBzdHIo
ZXhwcikpCisKKworZGVmIGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhw
cjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAg
ZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2lu
dGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50
ZXJwcmV0X2Nhc3Q8e2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSgpKSwg
e3N0cihleHByKX0uc2l6ZSgpKSIpCisKK2RlZiB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlw
ZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90
eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0
eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBj
cHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qge2VsZW1l
bnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSksIHtzdHIoZXhwcil9LmJ1ZlNpemUp
IikKKworZGVmIGNwcF9tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAg
IHJldHVybiBjcHBfZXhwcihleHByLnR5cGUuZ2V0X3J2YWx1ZV90eXBlKCksIGYiV1RGTW92ZSh7
c3RyKGV4cHIpfSkiKQorCisKK2NwcF90eXBlczogRGljdFtzdHIsIGNwcF90eXBlXSA9IHt9CisK
K2NwcF90eXBlX2NvbnN0cnVjdG9ycyA6IExpc3RbQ2FsbGFibGVbW3N0cl0sIE9wdGlvbmFsW2Nw
cF90eXBlXV1dID0gWworICAgIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbiwKKyAgICBjcmVhdGVf
Y3BwX3R5cGVfY29udGFpbmVyLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdAorXQorCitk
ZWYgZ2V0X2NwcF90eXBlKHR5cGVfbmFtZTogc3RyKToKKyAgICByID0gY3BwX3R5cGVzLmdldCh0
eXBlX25hbWUsIE5vbmUpCisgICAgaWYgcjoKKyAgICAgICAgcmV0dXJuIHIKKyAgICBmb3IgdHlw
ZV9jb25zdHIgaW4gY3BwX3R5cGVfY29uc3RydWN0b3JzOgorICAgICAgICByID0gdHlwZV9jb25z
dHIodHlwZV9uYW1lKQorICAgICAgICBpZiByOgorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBu
b3QgcjoKKyAgICAgICAgciA9IGNwcF90eXBlKHR5cGVfbmFtZSkKKyAgICBjcHBfdHlwZXNbdHlw
ZV9uYW1lXSA9IHIKKyAgICByZXR1cm4gcgorCisKK2NsYXNzIGNwcF9hcmcob2JqZWN0KToKKyAg
ICBuYW1lOiBzdHIKKyAgICB0eXBlOiBjcHBfdHlwZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisg
ICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gInt9IHt9Ii5mb3JtYXQoc2VsZi50eXBlLCBzZWxmLm5hbWUpCisKKworY2xhc3Mg
Y3BwX2RlY2wob2JqZWN0KToKKyAgICB0eXBlOiBjcHBfdHlwZQorICAgIG5hbWU6IHN0cgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAg
ICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5h
bWV9IgorCisKK2NsYXNzIGNwcF9hcmdfbGlzdChvYmplY3QpOgorICAgIGFyZ3M6IExpc3RbY3Bw
X2FyZ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddKToKKyAg
ICAgICAgc2VsZi5hcmdzID0gYXJncworCisgICAgZGVmIG5hbWVzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gIiwgIi5qb2luKGEubmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhw
cnMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2V4cHIoYS50eXBlLCBhLm5hbWUpIGZvciBh
IGluIHNlbGYuYXJnc10KKworICAgIGRlZiBkZWNscyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtj
cHBfZGVjbChhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIHR5
cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2EudHlwZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisK
KyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihzdHIoYSkg
Zm9yIGEgaW4gc2VsZi5hcmdzKQorCisKK2NsYXNzIGNwcF9mdW5jKG9iamVjdCk6CisgICAgbmFt
ZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBl
CisgICAgaXNfZXh0ZW5zaW9uOiBib29sCisgICAgb3ZlcmxvYWRfc3VmZml4OiBzdHIKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJn
czogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246IGJvb2wpOgorICAgICAgICBzZWxmLm5hbWUg
PSBuYW1lCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBz
ZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9u
CisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gIiIKKworICAgIGRlZiBfX3N0cl9fKHNl
bGYpOgorICAgICAgICByZXR1cm4gZiJ7c2VsZi5yZXR1cm5fdHlwZX0ge3NlbGYubmFtZX0oe3N0
cihzZWxmLmFyZ3MpfSkiCisKKyAgICBkZWYgZ2V0X2FyZ3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBU
dXBsZVtMaXN0W2NwcF9hcmddLCBMaXN0W2NwcF9hcmddXToKKyAgICAgICAgaW5fYXJncyA9IFtd
CisgICAgICAgIG91dF9hcmdzID0gW10KKyAgICAgICAgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6
CisgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVy
KCkgb3IgXAorICAgICAgICAgICAgICAgIGEudHlwZS5pc19yZWZlcmVuY2UoKToKKyAgICAgICAg
ICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLnR5
cGUsIGNwcF90eXBlX2NvbnRhaW5lcikgYW5kICgoKGEudHlwZS5pc19zcGFuKCkgb3IgYS50eXBl
LmlzX2R5bmFtaWNfc3BhbigpKSBhbmQgbm90IGEudHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5p
c19jb25zdCgpKSk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIGluX2FyZ3MgKz0gW2FdCisgICAgICAgICAgICAjZm10
OiBvbgorICAgICAgICByZXR1cm4gaW5fYXJncywgb3V0X2FyZ3MKKworICAgIGRlZiBpc19pbXBs
ZW1lbnRlZF90eXBlKHNlbGYsIHR5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgdHlwZS5pc19j
b25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJu
IFRydWUKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyIgaW4gYS50
eXBlLnR5cGVfbmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICMgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgICNpZiAiR0NHTHN5bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlw
ZV9uYW1lOgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkoYS5uYW1l
ID09ICJidWZTaXplIiBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEudHlwZS5pc19wb2ludGVyKCkgYW5kIGEudHlwZS5n
ZXRfdmFsdWVfdHlwZSgpLmlzX3ZvaWQoKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVu
dGVkX3R5cGUoYS50eXBlKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5fdHlwZS5pc19wb2ludGVyKCk6Cisg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfaW1wbGVtZW50
ZWRfdHlwZShzZWxmLnJldHVybl90eXBlKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg
ICAgICByZXR1cm4gVHJ1ZQorCisKK3dlYmtpdF9pcGNfdHlwZXM6IERpY3RbY3BwX3R5cGUsIGNw
cF90eXBlXSA9IHt9CisKK3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyczogRGljdFtUdXBsZVtj
cHBfdHlwZSwgY3BwX3R5cGVdLCBDcHBFeHByQ29udmVydGVyXSA9IHt9CisKKworZGVmIHdlYmtp
dF9pcGNfY29udmVydF9leHByKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3Bw
X2V4cHI6CisgICAgIiIiIENvbnZlcnRzIGBleHByYCBvZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlw
ZWAgIiIiCisgICAgY29udmVydCA9IHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5nZXQoKGV4
cHIudHlwZSwgdHlwZSksIE5vbmUpCisgICAgaWYgbm90IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4
cHIudHlwZSA9PSB0eXBlOgorICAgICAgICAgICAgcmV0dXJuIGV4cHIKKyAgICAgICAgY29udmVy
dCA9IGNwcF9pbXBsaWNpdF9jYXN0CisgICAgcmV0dXJuIGNvbnZlcnQoZXhwciwgdHlwZSkKKwor
CitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKHR5cGUgOiBjcHBfdHlwZV9j
b250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRh
aW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGFyaXR5ID0gdHlwZS5nZXRfYXJpdHko
KQorICAgIHdlYmtpdF9pcGNfZWxlbWVudF90eXBlID0gd2Via2l0X2lwY190eXBlc1tlbGVtZW50
X3R5cGVdIGlmIG5vdCBlbGVtZW50X3R5cGUuaXNfdm9pZCgpIGVsc2UgZ2V0X2NwcF90eXBlKCd1
aW50OF90JykKKyAgICBpZiBhcml0eSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGdldF9j
cHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlw
ZSl9LCB7YXJpdHl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZl
cmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9PiIpCisKKworCitkZWYgd2Via2l0
X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3Bw
X3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRf
ZGVjYXlfdHlwZSgpCisgICAgaWYgZWxlbWVudF90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgZWxl
bWVudF90eXBlID0gZ2V0X2NwcF90eXBlKCdHQ0dMY2hhcicpCisgICAgaWYgdHlwZS5pc19keW5h
bWljX3NwYW4oKToKKyAgICAgICAgaW5saW5lX2NhcGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiBl
bGVtZW50X3R5cGUudHlwZV9uYW1lIGVsc2UgNAorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBl
KGYiVmVjdG9yPHtzdHIoZWxlbWVudF90eXBlKX0sIHtzdHIoaW5saW5lX2NhcGFjaXR5KX0+IikK
KyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYic3RkOjphcnJheTx7c3RyKGVsZW1lbnRfdHlwZSl9
LCB7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4iKQorCitkZWYgd2Via2l0X2lwY19tYWtlX2djZ2xz
cGFuX2NvbnZlcnNpb24oZXhwciA6IGNwcF9leHByLCB0eXBlIDogY3BwX3R5cGVfY29udGFpbmVy
KSAtPiBjcHBfZXhwcjoKKyAgICBwb2ludGVyX2Nhc3RfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5l
ZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4o
KToKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYibWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7
c3RyKGV4cHIpfS5zaXplKCkpIikKKworICAgIGFzc2VydCh0eXBlLmlzX3NwYW4oKSkKKyAgICBy
ZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW48e3N0cih0eXBlLmdldF9hcml0eSgp
KX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIp
fS5kYXRhKCkpKSIpCisKKyMgU2VlIG1lc3NhZ2VzLnB5IGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBl
Cit3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXMgPSBzZXQoCisgICAgWyJ1aW50OF90IiwgInVpbnQx
Nl90IiwgInVpbnQzMl90IiwgInVpbnQ2NF90IiwgImludDhfdCIsICJpbnQxNl90IiwgImludDMy
X3QiLCAiaW50NjRfdCIsICJib29sIiwgImZsb2F0IiwgImRvdWJsZSIgImJvb2wiXQorKQorCisK
K2RlZiB3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHR5cGU6IGNwcF90eXBl
KSAtPiBjcHBfdHlwZToKKyAgICBpZiB0eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0
aW5fdHlwZXM6CisgICAgICAgIHJldHVybiB0eXBlCisgICAgcmV0dXJuIHR5cGUuZ2V0X3J2YWx1
ZV90eXBlKCkKKworCitkZWYgd2Via2l0X2lwY19tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+
IGNwcF9leHByOgorICAgIGlmIGV4cHIudHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWls
dGluX3R5cGVzOgorICAgICAgICByZXR1cm4gZXhwcgorICAgIHJldHVybiBjcHBfbW92ZV9leHBy
KGV4cHIpCisKKworZGVmIHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYzogY3BwX2Z1bmMpOgorICAg
IHJldHVybiBmdW5jLm5hbWVbMF0uY2FwaXRhbGl6ZSgpICsgZnVuYy5uYW1lWzE6XSArIGZ1bmMu
b3ZlcmxvYWRfc3VmZml4CisKKworY2xhc3Mgd2Via2l0X2lwY19tc2cob2JqZWN0KToKKyAgICBu
YW1lOiBzdHIKKyAgICBpbl9hcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBvdXRfYXJnczogY3BwX2Fy
Z19saXN0CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuYzogY3BwX2Z1bmMpOgorICAgICAg
ICBzZWxmLm5hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmMpCisgICAgICAgIGluX2FyZ3Ms
IG91dF9hcmdzID0gZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgaXBjX2luX2Fy
Z3MgPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSkgZm9yIGEgaW4g
aW5fYXJnc10KKyAgICAgICAgaXBjX291dF9hcmdzID0gW10KKyAgICAgICAgaWYgbm90IGZ1bmMu
cmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBf
YXJnKHdlYmtpdF9pcGNfdHlwZXNbZnVuYy5yZXR1cm5fdHlwZV0sICJyZXR1cm5WYWx1ZSIpXQor
ICAgICAgICBmb3IgYSBpbiBvdXRfYXJnczoKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBb
Y3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSldCisgICAgICAgICAgICBp
ZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgaXBjX2luX2FyZ3Mg
Kz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpXQor
ICAgICAgICBzZWxmLmluX2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX2luX2FyZ3MpCisgICAgICAg
IHNlbGYub3V0X2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX291dF9hcmdzKQorCisgICAgZGVmIF9f
c3RyX18oc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmLm91dF9hcmdzLmFyZ3MpOgorICAgICAg
ICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9
KSAtPiAoe3N0cihzZWxmLm91dF9hcmdzKX0pIFN5bmNocm9ub3VzIgorICAgICAgICByZXR1cm4g
ZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIgorCisKK2NsYXNz
IHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBt
c2dfbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2Fy
Z19saXN0CisKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czog
TGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICByZXR1cm5fc3Rt
dHM6IExpc3Rbc3RyXQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHBy
czogTGlzdFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3Bw
X2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYu
bXNnX25hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGNwcF9mdW5jKQorICAgICAgICBzZWxmLnJl
dHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3Bw
X2Z1bmMuYXJncworICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2Vs
Zi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAg
ICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQor
ICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0g
Y3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1
cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbl9h
cmdzKGluX2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJncyhvdXRfYXJncykKKyAg
ICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToK
KyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oW3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4
cHJzXSkKKyAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxm
Lm91dF9leHBycykKKyAgICAgICAgaXNfYXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQo
KSBhbmQgbGVuKG91dF9leHBycykgPT0gMAorICAgICAgICBpZiBpc19hc3luYzoKKyAgICAgICAg
ICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gIiIKKyAgICAgICAgICAgIGlmIHNlbGYu
cG9zdF9jYWxsX3N0bXRzOiAKKyAgICAgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNl
bmRSZXN1bHQgPSAiCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbCisg
ICAgICAgICAgICAgICAgICAgICJpZiAoc2VuZFJlc3VsdCkiICsgKCIgeyIgaWYgbGVuKHNlbGYu
cG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAgICBdICsgWyIgICAg
IiArIHMgZm9yIHMgaW4gc2VsZi5wb3N0X2NhbGxfc3RtdHNdICsgWworICAgICAgICAgICAgICAg
ICAgICAoIn0iIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAg
ICAgICAgICBmIntzZW5kX3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOyIsCisgICAgICAgICAgICBdCisKKwor
ICAgIGRlZiBwcm9jZXNzX2luX2FyZ3Moc2VsZiwgaW5fYXJnczogTGlzdFtjcHBfYXJnXSk6Cisg
ICAgICAgIGZvciBpIGluIGluX2FyZ3M6CisgICAgICAgICAgICBpZiBpLnR5cGUuaXNfY29uc3Rf
cG9pbnRlcigpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRf
ZXhwcihjcHBfZXhwcihpLnR5cGUsIGkubmFtZSksIHdlYmtpdF9pcGNfdHlwZXNbaS50eXBlXSld
CisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJncyhzZWxmLCBvdXRfYXJnczogTGlzdFtjcHBfYXJn
XSk6CisgICAgICAgIGZvciBvIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaWYgby50eXBlLmlz
X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICB2YWx1ZV90eXBlID0gby50eXBlLmdldF92YWx1
ZV90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRf
aXBjX3R5cGVzW3ZhbHVlX3R5cGVdCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0
X2lwY192YWx1ZV90eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYu
cHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9ID0ge3sgfX07
Il0KKyAgICAgICAgICAgICAgICBlID0gY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpCisgICAgICAg
ICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2VdCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0
X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAg
ICAgICAgICAgICAgZiJpZiAoe28ubmFtZX0pIiwKKyAgICAgICAgICAgICAgICAgICAgZiIgICAg
KntvLm5hbWV9ID0ge3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCisg
ICAgICAgICAgICAgICAgICAgICNmbXQ6IG9uCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgZWxpZiBvLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQorICAgICAgICAgICAgICAgIGFzc2VydChpc2lu
c3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAg
ICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAg
ICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIo
di5uYW1lKX07Il0KKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIo
di50eXBlLCB2Lm5hbWUpXQorICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3Nw
YW4oKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0
X2NwcF90eXBlKCJzaXplX3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCisgICAgICAgICAgICAg
ICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgICAgICBmIm1lbWNw
eSh7by5uYW1lfS5kYXRhLCB7di5uYW1lfS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXpl
b2Yoe3N0cih3ZWJraXRfaXBjX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkpfSkpOyIKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYub3V0
X2V4cHJzICs9IFtjcHBfZXhwcihvLnR5cGUsIG8ubmFtZSldCisKKyAgICBkZWYgcHJvY2Vzc19y
ZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0
dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmV0
dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRf
aXBjX3R5cGVzW3JldHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9l
eHByKGlwY19yZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2Fs
bF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHBy
LmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbcmV0dXJuX3ZhbHVl
X2V4cHJdICsgc2VsZi5vdXRfZXhwcnMKKyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbZiJy
ZXR1cm4ge3N0cih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgcmV0
dXJuX3R5cGUpKX07Il0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQg
PSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkg
PSAiIi5qb2luKGYiXG4gICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2Vs
Zi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKyBzZWxmLnJldHVybl9zdG10cykK
KyAgICAgICAgcmV0dXJuIGYiIiJcbntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH0K
K3t7e2JvZHl9Cit9fSIiIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9s
ZGVyKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisg
ICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgYm9keTogTGlzdFtzdHJdCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3Bw
X2Z1bmMubmFtZQorCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5f
dHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYuYm9k
eSA9IFsibm90SW1wbGVtZW50ZWQoKTsiXQorICAgICAgICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlw
ZS50eXBlX25hbWUgIT0gInZvaWQiOgorICAgICAgICAgICAgc2VsZi5ib2R5ICs9IFsicmV0dXJu
IHsgfTsiXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8g
Tk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICJcbntc
biAgICAiICsgIlxuICAgICIuam9pbihzZWxmLmJvZHkpICsgIlxufSIKKyAgICAgICAgcmV0dXJu
IGYiXG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9e2JvZHl9IgorCisKK2NsYXNz
IGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4i
CisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbF0KKyAgICB1bmltcGxz
OiBMaXN0W3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyXQorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJh
YmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJv
eHlfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKyAgICAgICAgc2VsZi51bmltcGxzID0gW3dlYmtp
dF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKGYpIGZvciBmIGluIHVuaW1wbGVtZW50ZWRdCisK
KyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihz
dHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBscyArIHNlbGYudW5pbXBscykKKworICAgIGRlZiBnZW5l
cmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfcHJv
eHlfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVt
cGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNz
IHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBj
cHBfYXJnX2xpc3QKKyAgICBpc19leHRlbnNpb246IGJvb2wKKyAgICBwcmVfY2FsbF9zdG10czog
TGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRz
OiBMaXN0W3N0cl0KKyAgICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6
IExpc3RbY3BwX2V4cHJdCisgICAgcmV0dXJuX3ZhbHVlX2V4cHI6IE9wdGlvbmFsW2NwcF9leHBy
XQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAg
IHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXgg
PSBjcHBfZnVuYy5vdmVybG9hZF9zdWZmaXgKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19s
aXN0KFtdKQorICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lv
bgorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0
bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxm
LmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBzZWxm
LnJldHVybl92YWx1ZV9leHByID0gTm9uZQorCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5f
dmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0g
Y3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19hcmdz
KGNwcF9mdW5jLmFyZ3MuYXJncywgc2V0KGluX2FyZ3MpLCBzZXQob3V0X2FyZ3MpKQorICAgICAg
ICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAg
ICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9ucygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAi
IgorCisgICAgICAgIGluX2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmlu
X2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAorCisg
ICAgICAgIGNhbGxfZXhwciA9IGYibV9jb250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHBy
c30pIgorICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoKKyAgICAgICAgICAg
IHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFtmIntzdHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhw
cil9ID0ge2NhbGxfZXhwcn07Il0KKyAgICAgICAgaWYgbm90IGlzX2FzeW5jOgorICAgICAgICAg
ICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLm91dF9leHBycykK
KyAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFtmImNvbXBsZXRpb25IYW5kbGVy
KHtvdXRfZXhwcnN9KTsiXQorCisgICAgZGVmIHByb2Nlc3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0
W2NwcF9hcmddLCBpbl9hcmdzOiBTZXRbY3BwX2FyZ10sIG91dF9hcmdzOiBTZXRbY3BwX2FyZ10p
OgorICAgICAgICBmb3IgYSBpbiBhcmdzOgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2NvbnN0
X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGlm
IGEgaW4gaW5fYXJnczoKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJnKGEp
CisgICAgICAgIGlmIHNlbGYub3V0X2V4cHJzOgorICAgICAgICAgICAgb3V0X2FyZ19kZWNscyA9
ICIsICIuam9pbihmIntzdHIoZS50eXBlKX0iIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAg
ICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh7b3V0X2FyZ19kZWNsc30pPiYmIiksICJjb21wbGV0aW9uSGFuZGxl
ciIpXQorCisgICAgZGVmIHByb2Nlc3NfaW5fYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAg
ICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2Zvcndh
cmRlcl90eXBlKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSksIGEubmFtZSldCisgICAgICAgIHNl
bGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKHdlYmtpdF9p
cGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSwgYS50eXBlKV0KKworICAgIGRlZiBwcm9jZXNzX291
dF9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCk6
CisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgp
LCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodmFs
dWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAg
ICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoYS50eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9
IildCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5u
YW1lKQorICAgICAgICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBl
c1tlLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252
ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY192YWx1ZV90eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUu
aXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUs
IGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0
X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpCisgICAgICAgICAgICBzZWxm
LmFyZ3MuYXJncyArPSBbc2l6ZV9hcmddCisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJn
KHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAg
ICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3Ry
KHN0b3JlX2FyZy5uYW1lKX0oc3RhdGljX2Nhc3Q8c2l6ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsi
XQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUs
IGYie3N0b3JlX2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Vi
a2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Vi
a2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5u
YW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfc3BhbigpOgor
ICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIp
KQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0
b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10
cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9IHt7IH19
OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlw
ZSwgc3RvcmVfYXJnLm5hbWUpXQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0
X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0
X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1l
KSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBh
LnR5cGUuaXNfcmVmZXJlbmNlKCkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtp
dF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAgICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5
cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9z
dG10cyArPSBbZiJ7c2VsZi5ucyh2YWx1ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUp
fSB7eyB9fTsiXQorICAgICAgICAgICAgZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1
ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2VdCisgICAgICAgICAg
ICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252
ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY190eXBlKSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5f
dmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5
cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlw
ZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9l
eHByID0gY3BwX2V4cHIocmV0dXJuX3R5cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYu
cHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFs
dWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJr
aXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhw
ciwgaXBjX3JldHVybl90eXBlKSldCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSBy
ZXR1cm5fdmFsdWVfZXhwcgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGJvZHkg
PSAiIi5qb2luKGYiXG4gICAgICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyAr
IHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzKQorICAgICAgICByZXR1cm4g
ZiIiIiAgICB2b2lkIHtzZWxmLm5hbWV9e3NlbGYub3ZlcmxvYWRfc3VmZml4fSh7c3RyKHNlbGYu
YXJncyl9KQorICAgIHt7e2JvZHl9CisgICAgfX0iIiIKKworICAgIGRlZiBucyhzZWxmLCB0eXBl
OiBjcHBfdHlwZSk6CisgICAgICAgICMgVE9ETzogbmFtZXNwYWNlIGluZm8gaXMgbm90IHN0b3Jl
ZCBpbiBuYW1lcy4KKyAgICAgICAgaWYgdHlwZS50eXBlX25hbWUgPT0gIkFjdGl2ZUluZm8iOgor
ICAgICAgICAgICAgcmV0dXJuICJXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6IiArIHN0cih0
eXBlKQorICAgICAgICByZXR1cm4gc3RyKHR5cGUpCisKK2RlZiB3ZWJraXRfaXBjX3Jlc29sdmVf
b3ZlcmxvYWRfc3VmZml4KGZ1bmNzIDogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICBjb3VudHMg
PSBjb2xsZWN0aW9ucy5Db3VudGVyKGYubmFtZSBmb3IgZiBpbiBmdW5jcykKKyAgICBzdWZmaXhl
cyA6IENvdW50ZXJbc3RyXSA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoKQorICAgIGZvciBmIGluIGZ1
bmNzOgorICAgICAgICBpZiBjb3VudHNbZi5uYW1lXSA+IDE6CisgICAgICAgICAgICBmLm92ZXJs
b2FkX3N1ZmZpeCA9IHN0cihzdWZmaXhlc1tmLm5hbWVdKQorICAgICAgICAgICAgc3VmZml4ZXMu
dXBkYXRlKFtmLm5hbWVdKQorCisKK2NsYXNzIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJh
dG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIEMrKyBpbXBsZW1lbnRh
dGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX2ltcGxdCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAg
ICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10K
KworICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2lu
KHN0cihpKSBmb3IgaSBpbiBzZWxmLmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgor
ICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfZm4sCisg
ICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVu
Y3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3MgY29udGV4dF9tc2dfd2Via2l0X2lwY19n
ZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgV2ViS2l0IElQ
QyBtZXNzYWdlIGRlZmluaXRpb24gZ2VuZXJhdG9yLiIKKyAgICBtc2dzOiBMaXN0W3dlYmtpdF9p
cGNfbXNnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVu
Y10pOgorICAgICAgICBzZWxmLm1zZ3MgPSBbd2Via2l0X2lwY19tc2coZikgZm9yIGYgaW4gZnVu
Y3NdCisKKyAgICBkZWYgZ2V0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIuam9p
bihzdHIobSkgZm9yIG0gaW4gc2VsZi5tc2dzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgor
ICAgICAgICB3cml0ZV9maWxlKGNvbnRleHRfbWVzc2FnZXNfZm4sIGNvbnRleHRfbWVzc2FnZXNf
dGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X21lc3NhZ2VzKCkpKQorCisKK2RlZiBjcmVhdGVfY3Bw
X2FyZyhhcmdfc3BlYzogc3RyLCBhcmdfaW5kZXg6IGludCk6CisgICAgciA9IGFyZ19zcGVjLnJz
cGxpdCgiICIsIDEpCisgICAgbmFtZSA9ICIiCisgICAgdHlwZSA9IE5vbmUKKyAgICBpZiBsZW4o
cikgPiAxIGFuZCByWzBdICE9ICJjb25zdCI6CisgICAgICAgIG5hbWUgPSByWzFdLnN0cmlwKCkK
KyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShyWzBdKQorICAgIGVsc2U6CisgICAgICAgIG5h
bWUgPSAiYXJne30iLmZvcm1hdChhcmdfaW5kZXgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5
cGUoYXJnX3NwZWMpCisgICAgcmV0dXJuIGNwcF9hcmcodHlwZSwgbmFtZSkKKworCitkZWYgY3Jl
YXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzOiBJdGVyYWJsZVtzdHJdKToKKyAgICByZXR1cm4g
Y3BwX2FyZ19saXN0KFtjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9y
IGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nfc3BlY3MpXSkKKworCitkZWYgY3JlYXRlX2NwcF9mdW5j
KG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJdLCBpc19l
eHRlbnNpb246IGJvb2wpOgorICAgIHJldHVybiBjcHBfZnVuYyhuYW1lPW5hbWUsIHJldHVybl90
eXBlPWdldF9jcHBfdHlwZShyZXR1cm5fc3BlYyksIGFyZ3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChh
cmdzX3NwZWNzKSwgaXNfZXh0ZW5zaW9uPWlzX2V4dGVuc2lvbikKKworCitkZWYgcmVhZF9saW5l
c191bnRpbChsaW5lcyA6IEl0ZXJhYmxlW3N0cl0sIG1hdGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jb
c3RyLCBOb25lLCBOb25lXToKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgaWYgcmUu
bWF0Y2gobWF0Y2gsIGxpbmUuc3RyaXAoKSk6CisgICAgICAgICAgICBicmVhaworICAgICAgICB5
aWVsZCBsaW5lCisKK2RlZiBtYWluKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQ
YXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ii0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlByaW50IHNvbWUgZGVidWcg
aW5mbyBmcm9tIHRoZSBnZW5lcmF0b3Igc2NyaXB0IikKKyAgICBvcHRpb25zID0gcGFyc2VyLnBh
cnNlX2FyZ3MoKQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJl
bW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzLgorCisgICAgIyBGSVhNRTogVW50
aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMgcmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRo
ZSBpbXBsZW1lbnRhdGlvbgorICAgICMgd2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBh
IGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBhbiBleHRlbnNpb24gZnVuY3Rpb24uCisgICAgZXh0ZW5z
aW9uX3NpZ25hdHVyZXMgOiBTZXRbc3RyXSA9IHNldCgpCisgICAgd2l0aCBvcGVuKGV4dGVuc2lv
bnNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Cisg
ICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwp
ID0gMDsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBmdW5jID0g
Y3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAgICAgICAgICBuYW1lPW1bMl0sCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgIGFyZ3Nf
c3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAgIGlz
X2V4dGVuc2lvbj1UcnVlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBleHRl
bnNpb25fc2lnbmF0dXJlcy51cGRhdGUoW3N0cihmdW5jKV0pCisgICAgZnVuY3MgPSBbXQorICAg
IHVuaW1wbGVtZW50ZWQgPSBbXQorICAgIGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgor
ICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGl0ZXIoZi5y
ZWFkbGluZXMoKSkKKyAgICAgICAgICAgIGZvciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMs
ICIvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0
IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAg
ICAgcGFzcworCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVz
LCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToK
KyAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2gociJccyooXFMrKVxzKyhcdyspXCgoLiopXCkg
ZmluYWw7IiwgbGluZSkKKyAgICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAg
ICBmdW5jX25hbWUgPSBtWzJdCisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3Bw
X2Z1bmMoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lv
bl9zaWduYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQo
KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQorICAgICAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5pbXBsZW1lbnRlZC5h
cHBlbmQoZnVuYykKKworCisgICAgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChm
dW5jcykKKyAgICAjIEluaXRpYWxpemUgV2ViS2l0IElQQyBnZW5lcmF0aW9uLiBDb25zdHJ1Y3Qg
dHlwZSBtYXBwaW5ncyBmb3IgdGhlIHVzZWQgQysrIHR5cGVzIC0+IElQQyB0eXBlcy4KKyAgICAj
IFRPRE86IG5hbWVzcGFjaW5nIGlzc3Vlcy4KKyAgICBhaV90eXBlID0gZ2V0X2NwcF90eXBlKCJB
Y3RpdmVJbmZvJiIpCisgICAgYWlfdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZSgiV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8iKQorICAgIHdlYmtpdF9pcGNfdHlwZXNb
YWlfdHlwZV0gPSBhaV90cmFuc2Zlcl90eXBlCisKKyAgICB3aXRoIG9wZW4odHlwZXNfaW5wdXRf
Zm4pIGFzIGY6CisgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAgICAgICBm
b3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRv
IGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbGlu
ZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5l
cmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4q
c3RhdGljX2Fzc2VydFwoc3RkOjppc19zYW1lX3Y8KFx3KyksIChcdyspPlwpOyIsIGxpbmUpCisg
ICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2Nw
cF90eXBlKG1bMV0pXSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwo
KFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToK
KyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAg
ICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGlj
X2Nhc3QKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190
eXBlLCBjcHBfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgICMgRklYTUU6IEhlcmUgd2UgdXNlIDw9IGluc3RlYWQgb2YgPT0gZHVl
IHRvIHBvaW50ZXJzLCBzdWNoIGFzIEdDR0xzeW5jLCBHQ0dMaW50cHRyLCAuLi4uCisgICAgICAg
ICAgICAjIFRoaXMgZW5kcyB1cCBmYWlsaW5nIGlmIHRoZXJlIGV2ZXIgaXMgYXJyYXlzIG9mIHRo
ZXNlIHR5cGVzLCBzaW5jZSBhcnJheXMgYXJlIGN1cnJlbnRseQorICAgICAgICAgICAgIyByZWlu
dGVycHJldC1jYXN0ZWQuCisgICAgICAgICAgICAjIFdlYktpdCBJUEMgcmVxdWlyZXMgb25lIHNp
emVkIHR5cGUsIGJ1dCB0aGUgc2l6ZSBvZiB0aGVzZSBwb2ludGVyLWJhc2VkIHZhbHVlcyB3aWxs
IGNoYW5nZQorICAgICAgICAgICAgIyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgICAg
ICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXpl
b2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAg
ICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBl
ID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tj
cHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29u
dmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAg
ICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSld
ID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVv
ZlwoKFx3KylcKSAmJiBzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGlu
ZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3Bw
X3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJd
KQorICAgICAgICAgICAgICAgIGNwcF9jYXN0X3Rocm91Z2hfdHlwZSA9IGdldF9jcHBfdHlwZSht
WzRdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5
cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBl
LCBpcGNfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyX3Rocm91Z2go
Y3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNf
Y29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF90
b19wb2ludGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAjIEZvciBhbGwgdHlwZXMgaW4gdGhlIGlucHV0IEFQSSwgZm9ybSBj
b3JyZXNwb25kaW5nIElQQyB0eXBlcyBhbmQgY29udmVyc2lvbnMuCisgICAgIyBUT0RPOiB0aGlz
IGlzIG5vdCBkcml2ZW4gYnkgdGhlIHR5cGluZy4KKyAgICBhbGxfdHlwZXMgPSBzZXQoKQorICAg
IGZvciBmdW5jIGluIGZ1bmNzOgorICAgICAgIGFsbF90eXBlcy51cGRhdGUoZnVuYy5hcmdzLnR5
cGVzKCkgKyBbZnVuYy5yZXR1cm5fdHlwZV0pCisgICAgIyBTb3J0IGJ5IGxlbiBzbyB0aGF0IHRl
bXBsYXRlIGFyZ3MgY29tZSBiZWZvcmUgdGVtcGxhdGVzLgorICAgIGZvciBjcHBfdHlwZSBpbiBz
b3J0ZWQoYWxsX3R5cGVzLCBrZXk9bGFtYmRhIHg6IGxlbih4LnR5cGVfbmFtZSkpOgorICAgICAg
ICBpZiBjcHBfdHlwZSBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgY29udGludWUK
KyAgICAgIAorICAgICAgICBpZiBjcHBfdHlwZS5pc19keW5hbWljX3NwYW4oKSBvciBjcHBfdHlw
ZS5pc19zcGFuKCk6CisgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gd2Via2l0X2lwY19nZXRf
c3Bhbl90cmFuc2Zlcl90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c1tjcHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAg
IGlmIGNwcF90eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCk6CisgICAgICAgICAg
ICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlw
ZSldID0gd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252
ZXJzaW9uCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyh0cmFu
c2Zlcl90eXBlLCBjcHBfdHlwZSldID0gd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNp
b24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RvcmVfdHlwZSA9IHdlYmtp
dF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHN0b3JlX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IGNw
cF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgZWxpZiBjcHBfdHlw
ZS5pc19yZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5pc19jb25zdF9yZWZlcmVuY2UoKSBvciBjcHBf
dHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBjcHBfdHlwZS5n
ZXRfdmFsdWVfdHlwZSgpIGlmIG5vdCBjcHBfdHlwZS5pc19jb250YWluZXIoKSBlbHNlIGNwcF90
eXBlCisgICAgICAgICAgICBpZiB2YWx1ZV90eXBlLmlzX2NvbnRhaW5lcigpOgorICAgICAgICAg
ICAgICAgIGNvbnRhaW5lZF90eXBlID0gdmFsdWVfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKQor
ICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUgPSB3ZWJraXRfaXBjX3R5
cGVzW2NvbnRhaW5lZF90eXBlXQorICAgICAgICAgICAgICAgIGlmIHdlYmtpdF9pcGNfY29udGFp
bmVkX3R5cGUgPT0gY29udGFpbmVkX3R5cGU6CisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9p
cGNfdHlwZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoZiJ7dmFsdWVf
dHlwZS5nZXRfY29udGFpbmVyX25hbWUoKX08e3N0cih3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBl
KX0+IikKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0
cmFuc2Zlcl90eXBlCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogSGVyZSBtaWdodCBiZSBj
YXNlIHdoZXJlIFZlY3RvcjxHQ0dMaW50PiB3YXMgdXNlZCBpbiB0aGUgaW50ZXJmYWNlIGFuZCBW
ZWN0b3I8aW50MzJfdD4gaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBJUEMg
ZGVmaW5pdGlvbi4gVGhlcmUgaXMgbm8gc2Vuc2libGUgd2F5IHRvIGRvIHRoaXMgYXQgdGhlIG1v
bWVudC4gV2UgZG8gbm90IGNvbnZlcnQsIHJhdGhlcgorICAgICAgICAgICAgICAgICAgICAjIGV4
cGVjdCB0aGF0IGFsbCB0aGUgaW52b2NhdGlvbnMgYXJlIHRha2VuIGNhcmUgb2YgdGhlIGZhY3Qg
dGhhdCBHQ0dMaW50IGlzIHRoZSBzYW1lIHR5cGUgYXMgaW50MzJfdC4KKyAgICAgICAgICAgICAg
ICAgICAgIyBUaGlzIHdpbGwgbm90IGhvbGQgZm9yIGFsbCB0eXBlcyBzdWNoIGFzIEdDR0xib29s
ZWFuLgorICAgICAgICAgICAgICAgICAgICAjd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhj
cHBfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29u
dmVyc2lvbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGVzW2NwcF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdl
YmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAg
IAorICAgICMgVGhlIGlucHV0IHRvIHRoZSBnZW5lcmF0b3JzIGlzIGxpc3Qgb2YgZnVuY3Rpb25z
IHRvIHJlbW90ZS4KKyAgICAjIFJ1biB0aGUgdmFyaW91cyBnZW5lcmF0b3JzLgorICAgIGdlbmVy
YXRvcnMgPSBbCisgICAgICAgIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9y
KGZ1bmNzLCB1bmltcGxlbWVudGVkKSwKKyAgICAgICAgY29udGV4dF9tc2dfd2Via2l0X2lwY19n
ZW5lcmF0b3IoZnVuY3MpLAorICAgICAgICBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRv
cihmdW5jcyksCisgICAgXQorICAgIGZvciBnIGluIGdlbmVyYXRvcnM6CisgICAgICAgIGcuZ2Vu
ZXJhdGUoKQorCisgICAgaWYgb3B0aW9ucy52ZXJib3NlOgorICAgICAgICBwcmludCgiSW1wbGVt
ZW50ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIuam9pbihmIiAgICB7c3RyKGkpfSBmaW5hbFxuIiBm
b3IgaSBpbiBmdW5jcykpCisgICAgICAgIHByaW50KCJVbmltcGxlbWVudGVkOiIpCisgICAgICAg
IHByaW50KCIiLmpvaW4oZiIgICAge3N0cih1KX0gZmluYWxcbiIgZm9yIHUgaW4gdW5pbXBsZW1l
bnRlZCkpCisgICAgICAgIHByaW50KGYiSW1wbGVtZW50ZWQ6IHtsZW4oZnVuY3MpfSwgdW5pbXBs
ZW1lbnRlZDoge2xlbih1bmltcGxlbWVudGVkKX0sIHRvdGFsOiB7bGVuKGZ1bmNzKStsZW4odW5p
bXBsZW1lbnRlZCl9IikKKyAgICAgICAgcHJpbnQoIkMrKyB0eXBlIG1hcCB0byBXZWJLaXQgSVBD
IHR5cGUgbWFwOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAg
ICAgICAgICAgaWYgdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgICAgIHByaW50
KGYiICAgIHtzdHIodCl9IC0+IHtzdHIod2Via2l0X2lwY190eXBlc1t0XSl9IikKKyAgICAgICAg
cHJpbnQoIkMrKyB0eXBlcyB3aXRob3V0IFdlYktpdCBJUEMgdHlwZToiKQorICAgICAgICBmb3Ig
XywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgbm90IGluIHdlYmtp
dF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cih0KX0iKQorICAg
ICAgICBwcmludCgiV2ViS2l0IElQQyB0eXBlIGNvbnZlcnNpb25zIikKKyAgICAgICAgZm9yIChh
LCBiKSwgY29udmVydGVyIGluIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5pdGVtcygpOgor
ICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cihhKX0gLT4ge3N0cihiKX0gOiB7Y29udmVydGVy
Ll9fbmFtZV9ffSIpCisgICAgICAgIHByaW50KCJEb25lLiIpCisgICAgcmV0dXJuIDAKKworCitp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAy
ODA0YjBlMmE0ZmQ5Y2M2ZTAyNTY5MDAxNzI0MGZmZjRiMGEwNTYwLi41YzEzMmI2YjFlN2I3MTAw
NTJhMGZmNGNhOGUzY2UzZjBmZGMyYjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTIt
MDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4
NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29u
dGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBp
cyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEFkZHMgdGVzdCBleHBlY3RhdGlvbnMgZm9y
IHRoZSBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkuIERvZXMgbm90IHlldAorICAgICAgICBlbmFibGUg
dGhlIHRlc3RzIHRoYXQgYWN0dWFsbHkgcGFzcyBidXQgd2hpY2ggd2VyZSBza2lwcGVkIGJlZm9y
ZSB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTEyLTAyICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5v
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4g
R2FyZGVuZWQgc2V2ZXJhbCBmbGFreSB0aW1lb3V0IGZhaWx1cmVzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1w
cm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4NTMwNTgwMDMz
OTBmZDc1MzdkYzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBhMmQ0NjcyNjNjNzA4Yzk0OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTcsNiArMzE3
LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdl
LWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmdsIFsgU2tpcCBd
CiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9y
Zy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5o
dG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dlYmdsL3RleElt
YWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBm
YXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24u
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC93ZWJn
bGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM1MSBm
YXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1s
IFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dlYmdsL2xvc2Ut
Y29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmdwdSBbIFNr
aXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlwZXMuaHRtbCBb
IFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415394</attachid>
            <date>2020-12-04 01:42:04 -0800</date>
            <delta_ts>2020-12-09 00:04:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201204114201.patch</filename>
            <type>text/plain</type>
            <size>413438</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA0YTEwZDEzZDQ1ZjJj
M2I5ZWJlYTMzOTlmZmNkMWM4OTI4MWEyNi4uNGE4MWI0NTg2YzlmN2FhNjNhODk4MGEwMDVkODNj
Y2FjZDM1ZjcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGEgYmVnaW5uaW5nIG9mIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhpY3NDb250ZXh0R0wg
Zm9yIEdQVQorICAgICAgICBwcm9jZXNzLiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHVzaW5n
IFdlYktpdCBJUEMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgd2l0aCBhIGdlbmVyYXRvciBzY3Jp
cHQgaW1wbGVtZW50aW5nIHRoZSBJUEMgdG8gcGFzcyB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0wgbWVtYmVyIGZ1bmN0aW9uIGNhbGxzIGZyb20gd2ViIHByb2Nlc3MgdG8gdGhlIEdQVQor
ICAgICAgICBwcm9jZXNzLiBUaGUgc2NyaXB0IGlzIHJ1biBkdXJpbmcgZGV2ZWxvcG1lbnQgdGlt
ZSBhbmQgdGhlIHJlc3VsdHMgYXJlCisgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgcmVwbyBmb3Ig
ZWFzZSBvZiByZXZpZXcuCisKKyAgICAgICAgRXh0cmFjdHMgYW4gaW50ZXJmYWNlIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHdoaWNoIGlzCisgICAgICAgIHVzZWQgdG8gc3Vi
bWl0IElPU3VyZmFjZXMgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4gRm9yCisgICAgICAg
IHdlYiBwcm9jZXNzIFdlYkdMLCB0aGVzZSBnbyB0byBXZWJHTExheWVyLiBGb3IgR1BVIHByb2Nl
c3MgV2ViR0wsCisgICAgICAgIHRoZSBJT1N1cmZhY2VzIGdvIHRvIHRoZSBwcmVwYXJlRm9yRGlz
cGxheSBjYWxsZXIsIGUuZy4gdGhlCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLCB3
aGljaCB0aGVuIHJldHVybiB0aGUgSU9TdXJmYWNlcyBiYWNrCisgICAgICAgIHRvIFdlYiBwcm9j
ZXNzIHNpZGUuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgd2lsbCBzZW5kCisgICAgICAg
IHRoZW0gdG8gV2ViR0xMYXllci4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBl
eGlzdGluZyB3ZWJnbCB0ZXN0cyBvbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiB3b3Jrcy4KKworICAg
ICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVy
U3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRRdWVyeVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpiaW5kU2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJhbnNmb3JtRmVl
ZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFN5bmMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTeW5jOjp1cGRhdGVDYWNoZSk6CisgICAgICAg
ICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OndpbmRvd1Nj
cmVlbkRpZENoYW5nZSk6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdl
L0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpjcmVhdGVH
cmFwaGljc0NvbnRleHRHTCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vSG9zdFdpbmRvdy5o
OgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6aXNJbkdQVVByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNJbkdQ
VVByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgIChHQ0dMU3Bhbjo6R0NHTFNwYW4pOgor
ICAgICAgICAoR0NHTFNwYW48R0NHTHZvaWQ+OjpHQ0dMU3Bhbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
cGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cG93ZXJQ
cmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29u
dGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0QnVmZmVy
c1RvQXV0b0NsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBwb3J0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNp
b25zR0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXJBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xBTkdMRTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5
T2JqZWN0dWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpJbml0
aWFsaXplRUdMRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVm
ZmVyQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG93T2ZmbGluZVJlbmRlcmVycyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3Bs
YXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXll
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6YXNDVik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6cGxhdGZvcm1Td2FwQ2hhaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tOgorICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2aWNlUGl4ZWxS
YXRpbzpjb250ZW50c09wYXF1ZTpdKToKKyAgICAgICAgKC1bV2ViR0xMYXllciBzd2FwQ2hhaW5d
KToKKyAgICAgICAgKC1bV2ViR0xMYXllciBwcmVwYXJlRm9yRGlzcGxheV0pOgorICAgICAgICAo
LVtXZWJHTExheWVyIGRpc3BsYXldKToKKyAgICAgICAgKFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnBy
ZXNlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6dmVy
dGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNv
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVy
U3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisKIDIw
MjAtMTItMDMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBHcmFwaGljc0NvbnRleHRHTCBoYXMgYSBjb3VwbGUgbm9uLXJvYnVzdCBnZXR0ZXJzIGFuZCBv
dGhlciBzbWFsbCBBUEkgcHJvYmxlbXMgcHJldmVudGluZyBHUFUgcHJvY2VzcyBpbXBsZW1lbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3YTZhZDc0NzBkZDhjNjY4OTYxMDc0NTgzNGQxNzk4ZDgxYTAxMGJj
Li4yZmU1NjZhNGIxNWJkNGJlZWI5N2QwYjcwMTllNDNjZWYxZWFhMjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc0MiBAQAorMjAyMC0xMi0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1vdGVXZWJHTEJhY2tlbmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJz
aW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVu
dCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxlbWVu
dGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBhc3Mg
dGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBmcm9t
IHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAgICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBpcyBy
dW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBj
b21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVhc2Ugb2YgcmV2aWV3LgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gV2ViS2l0IHNpZGUuIFRoaXMgY2xh
c3Mgd2lsbAorICAgICAgICBmb3J3YXJkIGNhbGxzIHJlY2VpdmVkIHZpYSBJUEMgdG8gdGhlIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLiBBdCB0aGUKKyAgICAgICAgbW9tZW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIGluc3RhbmNlIGlzIGEgZGlyZWN0IGNoaWxkIG9mCisgICAgICAgIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisKKyAgICAgICAgQ29tcG9zaXRpbmcgaXMgaW1wbGVtZW50
ZWQgb25seSBmb3IgUExBVEZPUk0oQ09DT0EpLgorCisgICAgICAgIE1pc3Npbmc6CisgICAgICAg
ICAtIFNpbXVsYXRlZCBjb250ZXh0IGxvc3MKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNvbnRleHQg
Y2hhbmdlCisgICAgICAgICAtIFBhaW50IFdlYkdMIGNvbnRlbnRzIHRvIDJEIGNhbnZhcworICAg
ICAgICAgLSBVcGxvYWQgdmlkZW8gdG8gV2ViR0wKKyAgICAgICAgIC0gVXBsb2FkIGNhbnZhcyB0
byBXZWJHTAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNz
Q29udGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5n
ZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cmVjeWNsZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpwcmVzZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OmRldGFjaENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBy
ZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6IEFkZGVkLgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDogQWRkZWQuCisgICAgICAgIChzZXRGYWlsTmV4
dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKHN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAg
KG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChhY3RpdmVUZXh0dXJl
KToKKyAgICAgICAgKGF0dGFjaFNoYWRlcik6CisgICAgICAgIChiaW5kQXR0cmliTG9jYXRpb24p
OgorICAgICAgICAoYmluZEJ1ZmZlcik6CisgICAgICAgIChiaW5kRnJhbWVidWZmZXIpOgorICAg
ICAgICAoYmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChiaW5kVGV4dHVyZSk6CisgICAgICAg
IChibGVuZENvbG9yKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb24pOgorICAgICAgICAoYmxlbmRF
cXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKGJsZW5kRnVuYyk6CisgICAgICAgIChibGVuZEZ1
bmNTZXBhcmF0ZSk6CisgICAgICAgIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAg
KGNsZWFyKToKKyAgICAgICAgKGNsZWFyQ29sb3IpOgorICAgICAgICAoY2xlYXJEZXB0aCk6Cisg
ICAgICAgIChjbGVhclN0ZW5jaWwpOgorICAgICAgICAoY29sb3JNYXNrKToKKyAgICAgICAgKGNv
bXBpbGVTaGFkZXIpOgorICAgICAgICAoY29weVRleEltYWdlMkQpOgorICAgICAgICAoY29weVRl
eFN1YkltYWdlMkQpOgorICAgICAgICAoY3JlYXRlQnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoY3JlYXRlUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVNoYWRlcik6CisgICAgICAgIChjcmVhdGVUZXh0
dXJlKToKKyAgICAgICAgKGN1bGxGYWNlKToKKyAgICAgICAgKGRlbGV0ZUJ1ZmZlcik6CisgICAg
ICAgIChkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChkZWxldGVQcm9ncmFtKToKKyAgICAg
ICAgKGRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChkZWxldGVTaGFkZXIpOgorICAgICAg
ICAoZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChkZXB0aEZ1bmMpOgorICAgICAgICAoZGVwdGhN
YXNrKToKKyAgICAgICAgKGRlcHRoUmFuZ2UpOgorICAgICAgICAoZGV0YWNoU2hhZGVyKToKKyAg
ICAgICAgKGRpc2FibGUpOgorICAgICAgICAoZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAg
ICAgICAgKGRyYXdBcnJheXMpOgorICAgICAgICAoZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKGVu
YWJsZSk6CisgICAgICAgIChlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChmaW5p
c2gpOgorICAgICAgICAoZmx1c2gpOgorICAgICAgICAoZnJhbWVidWZmZXJSZW5kZXJidWZmZXIp
OgorICAgICAgICAoZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoZnJvbnRGYWNlKToK
KyAgICAgICAgKGdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKGdldEFjdGl2ZUF0dHJpYik6Cisg
ICAgICAgIChnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKGdldEF0dHJpYkxvY2F0aW9uKToK
KyAgICAgICAgKGdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0U3RyaW5nKToKKyAg
ICAgICAgKGdldEZsb2F0dik6CisgICAgICAgIChnZXRJbnRlZ2Vydik6CisgICAgICAgIChnZXRJ
bnRlZ2VyNjQpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChnZXRQcm9ncmFt
aSk6CisgICAgICAgIChnZXRCb29sZWFudik6CisgICAgICAgIChnZXRFcnJvcik6CisgICAgICAg
IChnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFByb2dy
YW1JbmZvTG9nKToKKyAgICAgICAgKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAg
ICAoZ2V0U2hhZGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKGdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChnZXRTaGFkZXJTb3VyY2UpOgorICAg
ICAgICAoZ2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRUZXhQYXJhbWV0ZXJpKToKKyAg
ICAgICAgKGdldFVuaWZvcm1mdik6CisgICAgICAgIChnZXRVbmlmb3JtaXYpOgorICAgICAgICAo
Z2V0VW5pZm9ybXVpdik6CisgICAgICAgIChnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAo
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAgKGhpbnQpOgorICAgICAgICAoaXNCdWZm
ZXIpOgorICAgICAgICAoaXNFbmFibGVkKToKKyAgICAgICAgKGlzRnJhbWVidWZmZXIpOgorICAg
ICAgICAoaXNQcm9ncmFtKToKKyAgICAgICAgKGlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGlz
U2hhZGVyKToKKyAgICAgICAgKGlzVGV4dHVyZSk6CisgICAgICAgIChsaW5lV2lkdGgpOgorICAg
ICAgICAobGlua1Byb2dyYW0pOgorICAgICAgICAocGl4ZWxTdG9yZWkpOgorICAgICAgICAocG9s
eWdvbk9mZnNldCk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKHNh
bXBsZUNvdmVyYWdlKToKKyAgICAgICAgKHNjaXNzb3IpOgorICAgICAgICAoc2hhZGVyU291cmNl
KToKKyAgICAgICAgKHN0ZW5jaWxGdW5jKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jU2VwYXJhdGUp
OgorICAgICAgICAoc3RlbmNpbE1hc2spOgorICAgICAgICAoc3RlbmNpbE1hc2tTZXBhcmF0ZSk6
CisgICAgICAgIChzdGVuY2lsT3ApOgorICAgICAgICAoc3RlbmNpbE9wU2VwYXJhdGUpOgorICAg
ICAgICAodGV4UGFyYW1ldGVyZik6CisgICAgICAgICh0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAg
KHVuaWZvcm0xZik6CisgICAgICAgICh1bmlmb3JtMWZ2KToKKyAgICAgICAgKHVuaWZvcm0xaSk6
CisgICAgICAgICh1bmlmb3JtMWl2KToKKyAgICAgICAgKHVuaWZvcm0yZik6CisgICAgICAgICh1
bmlmb3JtMmZ2KToKKyAgICAgICAgKHVuaWZvcm0yaSk6CisgICAgICAgICh1bmlmb3JtMml2KToK
KyAgICAgICAgKHVuaWZvcm0zZik6CisgICAgICAgICh1bmlmb3JtM2Z2KToKKyAgICAgICAgKHVu
aWZvcm0zaSk6CisgICAgICAgICh1bmlmb3JtM2l2KToKKyAgICAgICAgKHVuaWZvcm00Zik6Cisg
ICAgICAgICh1bmlmb3JtNGZ2KToKKyAgICAgICAgKHVuaWZvcm00aSk6CisgICAgICAgICh1bmlm
b3JtNGl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAodW5pZm9ybU1h
dHJpeDNmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKHVzZVByb2dy
YW0pOgorICAgICAgICAodmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjFm
KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjFmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIyZik6
CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAodmVydGV4QXR0cmliM2YpOgor
ICAgICAgICAodmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjRmKToKKyAg
ICAgICAgKHZlcnRleEF0dHJpYjRmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJQb2ludGVyKToK
KyAgICAgICAgKHZpZXdwb3J0KToKKyAgICAgICAgKGJ1ZmZlckRhdGEwKToKKyAgICAgICAgKGJ1
ZmZlckRhdGExKToKKyAgICAgICAgKGJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAocmVhZG5QaXhl
bHMwKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMSk6CisgICAgICAgICh0ZXhJbWFnZTJEMCk6Cisg
ICAgICAgICh0ZXhJbWFnZTJEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTJEMCk6CisgICAgICAg
ICh0ZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UyRDApOgorICAg
ICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEpOgorICAgICAgICAo
ZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgor
ICAgICAgICAodmVydGV4QXR0cmliRGl2aXNvcik6CisgICAgICAgIChjcmVhdGVWZXJ0ZXhBcnJh
eSk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChpc1ZlcnRleEFycmF5
KToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAgIChjb3B5QnVmZmVyU3ViRGF0
YSk6CisgICAgICAgIChnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChpbnZhbGlk
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKHJlYWRCdWZmZXIpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKToKKyAgICAgICAgKHRleFN0b3JhZ2UyRCk6CisgICAgICAgICh0ZXhTdG9yYWdlM0QpOgor
ICAgICAgICAodGV4SW1hZ2UzRDApOgorICAgICAgICAodGV4SW1hZ2UzRDEpOgorICAgICAgICAo
dGV4U3ViSW1hZ2UzRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAoY29w
eVRleFN1YkltYWdlM0QpOgorICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlM0QwKToKKyAgICAg
ICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QxKToKKyAgICAgICAgKGdl
dEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAodW5pZm9ybTF1aSk6CisgICAgICAgICh1bmlm
b3JtMnVpKToKKyAgICAgICAgKHVuaWZvcm0zdWkpOgorICAgICAgICAodW5pZm9ybTR1aSk6Cisg
ICAgICAgICh1bmlmb3JtMXVpdik6CisgICAgICAgICh1bmlmb3JtMnVpdik6CisgICAgICAgICh1
bmlmb3JtM3Vpdik6CisgICAgICAgICh1bmlmb3JtNHVpdik6CisgICAgICAgICh1bmlmb3JtTWF0
cml4MngzZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKHVuaWZv
cm1NYXRyaXgyeDRmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAo
dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAg
ICAgICh2ZXJ0ZXhBdHRyaWJJNGkpOgorICAgICAgICAodmVydGV4QXR0cmliSTRpdik6CisgICAg
ICAgICh2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0dWl2KToKKyAg
ICAgICAgKHZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKGRyYXdSYW5nZUVsZW1lbnRz
KToKKyAgICAgICAgKGRyYXdCdWZmZXJzKToKKyAgICAgICAgKGNsZWFyQnVmZmVyaXYpOgorICAg
ICAgICAoY2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmdik6CisgICAgICAg
IChjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKGNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKGRlbGV0
ZVF1ZXJ5KToKKyAgICAgICAgKGlzUXVlcnkpOgorICAgICAgICAoYmVnaW5RdWVyeSk6CisgICAg
ICAgIChlbmRRdWVyeSk6CisgICAgICAgIChnZXRRdWVyeSk6CisgICAgICAgIChnZXRRdWVyeU9i
amVjdHVpKToKKyAgICAgICAgKGNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoZGVsZXRlU2FtcGxl
cik6CisgICAgICAgIChpc1NhbXBsZXIpOgorICAgICAgICAoYmluZFNhbXBsZXIpOgorICAgICAg
ICAoc2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoc2FtcGxlclBhcmFtZXRlcmYpOgorICAg
ICAgICAoZ2V0U2FtcGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoZ2V0U2FtcGxlclBhcmFtZXRl
cmkpOgorICAgICAgICAoZmVuY2VTeW5jKToKKyAgICAgICAgKGlzU3luYyk6CisgICAgICAgIChk
ZWxldGVTeW5jKToKKyAgICAgICAgKGNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKHdhaXRTeW5j
KToKKyAgICAgICAgKGdldFN5bmNpKToKKyAgICAgICAgKGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGlzVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAg
KGJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZW5kVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChnZXRUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAocGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgIChyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiaW5kQnVmZmVy
QmFzZSk6CisgICAgICAgIChiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAgICAoZ2V0VW5pZm9ybUlu
ZGljZXMpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoZ2V0VW5pZm9y
bUJsb2NrSW5kZXgpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6CisgICAg
ICAgICh1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKGdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KToKKyAgICAgICAgKGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoYmxp
dEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZGVs
ZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAg
IChiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKToKKyAgICAgICAgKGluc2VydEV2ZW50TWFya2VyRVhUKToKKyAgICAgICAgKHB1c2hH
cm91cE1hcmtlckVYVCk6CisgICAgICAgIChwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChk
cmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAodmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
b2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJTb2NrZXRUYXNrU291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAgIChJ
UEM6OkFycmF5UmVmZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFycmF5
UmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVuY2U6
OnNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6
CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNl
bmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVj
b2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVy
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpF
bmNvZGVyOjp3cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6
OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6
CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1eGls
aWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNoYXJl
ZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2Vu
ZFN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJh
bWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Fi
bGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2Nh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNo
YWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVy
aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm1mdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9n
cmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1NoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nv
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRl
clNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFy
YW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
NGYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWIxZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYjRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliRGl2aXNvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
dWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2Uz
RCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1
YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxv
Y2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0ydWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1h
dHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliSTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1Jhbmdl
RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVl
cnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFF1ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVy
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNh
bXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3Jt
RmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5z
Zm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRV
bmlmb3JtSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bUJsb2NrQmluZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFy
cmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50
TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cHVzaEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZv
cm1hdGl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0aXNh
bXBsZWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVp
NjR2Um9idXN0QU5HTEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVBy
b2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
bi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5ZWRS
ZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAzICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSVBDIHNob3VsZCBzdXBwb3J0IG5v
bi1ieXRlIGFsaWduZWQgZGF0YSByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBjMjkz
ZDdhMzlmMGQ4ZGFlMzE3NzA5N2VkODJjMGIyNDZkZTFhMjJlLi5mZThkMWI0ZWJkNjM2NGY1NjA2
NGVkYzU2M2I5NzIzYTE5NGQ1NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNTAsNiArMTI1
MCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9S
ZW5kZXJpbmdNb2RlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFlZDhl
YWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgyZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1ODk3
MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCArMzEx
LDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENv
Y29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5
ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjA4NDE3MjE2ODZjYjYzNDZlYTQxMjFl
NWI1MmEzNjc5MGQyZmU2YS4uY2ExNzVkNjdjODg1NDAwYTZhYzRhOGExYWQ4M2Y4NGIxYWUwZjk5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzIsNiArMTk3Miw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDY2ODc1MmM3OTUyNmJjNmNkMTQzYzJlZjY1
OTZmMTRjN2IwNzMzZWQuLmJiNGJhZDg3ZGZjYWU0MGI3ZmU0ZDAwYjBmY2UyNDFlZmZiOWQ1OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzU3LDEyICszNTcsMTQgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZmE3ZDdjNzMw
Y2Q2NjE0M2ZlYzg4ZjdiOTgzOTM1YTM3NDk3MWUyLi5hM2UwN2Q1ZTNhMzg4OGYzM2M1MmQ4MWI1
YjVjZjk4YTNhMzNhOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDU1LDcgKzIwNTUsNyBAQAogCQk2RTQ3RTY2MTEwQjc5
NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFCQ0Q1
MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFEMjkx
IC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEwMEEy
Nzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xD
b250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4
MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgwRThC
RDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNH
TC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZF
NzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBG
MUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEw
MDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIz
RTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBv
cmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjQ5LDYgKzIyNDksOCBAQAogCQk3QUY5
QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYg
LyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAv
KiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0
R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTkyMDAz
ODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4
MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDExNDIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4MjUz
Nzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3NkM2
MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZC
QjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZH
R3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDIzMSw5ICsxMDIzMywxNCBAQAogCQk3QjEw
MzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0IxNjAw
MDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAg
LyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTkyMDAz
ODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFO
R0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNz
Q29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0Qy
NEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVy
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJFRjEw
IC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNldHRp
bmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDEx
RjNGMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjY2MjAsNiArMjY2MjcsOCBAQAogCQkJCTA3NEU4MkI5MThBNjlGMEUw
MDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4
MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMg
LyogUmVnaW9uLmggKi8sCisJCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKKwkJCQk3QjkwNDE2RTI1NTAxMTA5MDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkwNzNB
MTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJCTA3
M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJCTcy
OTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0yNjc4Niw2
ICsyNjc5NSw4IEBACiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKIAkJCQlCNTMyMEQ2QTEyMkEyNEU5MDAyRDE0NDAg
LyogRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0MwMDA0
QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKKwkJCQk3QjZEQzgxNTI1NzEyRTkx
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovLAor
CQkJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4NDE4
NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBBODQx
ODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLApAQCAtMjY3OTcsNiArMjY4MDgsNyBAQAog
CQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3BlbkdM
U29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVu
R0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLAogCQkJCUNERUIzRDcy
MjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovLAogCQkJCUNERUIz
RDczMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCAqLywKIAkJCQlDRDhG
NjY3MDI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8sCkBA
IC0zMjA5Nyw2ICszMjEwOSw3IEBACiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdy
YXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcyMUUw
MEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5
QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQwMDAw
QjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQwMzUs
NiArMzQwNDgsNyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQwMEE3
RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlBMjA3
RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5MDQx
NzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3RlUGxh
eWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAvKiBS
ZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA3MmMyNjQ0NjY2Y2YwM2EyZjU5ZjFlMDlmZTkzMjkz
Y2I4MGI2YmFlLi5mN2M2YTJlODJhNGJmMDM3YTFiNDc3ZDc4M2ZhNTQxYWM0ZjU0Njk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcApAQCAtNzMyLDggKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2Fu
CiAgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAgICBy
ZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKICAgICB9Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpOworICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9z
dFdpbmRvdyk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNFbGVtZW50
KSB7CiAgICAgICAgICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4
dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVu
dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ZGFhMzRjYzJkNWQwNzk2MmVlMWE2MWM4MjUz
YmViNmE5NDY1NDZjLi5jMmE2OWI4NmJjMzE4MTY3YTMzMmNmZmY2ZGVhZjRjZjhiMjlmMzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MzAsNiArNTMwLDEzIEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJl
bmRlcmluZ01vCiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJl
bmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuY3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZGlzcGxheUlEKCkpOworfQorI2VuZGlm
CisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpAQCAtNTQzLDYgKzU1MCw3IEBAIHZvaWQgQ2hyb21l
Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRp
b25hbDx1bnNpZ25lCiAgICAgbV9wYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQs
IG5vbWluYWxGcmFtZUludGVydmFsKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKEdS
QVBISUNTX0NPTlRFWFRfR0wpCisgICAgLy8gVE9ETzogR1BVIHByb2Nlc3MuIENoYW5nZSB0byBH
Q0dMTWFuYWdlciwgbWFrZSBpdCB3b3JrLCByZXR1cm4gbnVsbCBmb3Igb3RoZXJzLgogICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNjcmVlbkRpZENo
YW5nZShkaXNwbGF5SUQsIHRoaXMpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCAy
MzMyOGY1NmExOTEyMDQ5ZDQ3OTc2NDFkMDE0MDA1NTE1OTAzNTAyLi5hODlkZDFhMWQ4NjVlNTMy
OGViMDUwNTc2NTQwZDNmMjMyYTNjZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTg2LDYgKzg2
LDEwIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBj
cmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
KSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxh
dGZvcm1EaXNwbGF5SUQsIE9wdGlvbmFsPHVuc2lnbmVkPikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDNhOWUxZDY2OTA5N2U1OTVkOWI1N2ZjNGNmZjdlNjFh
NWQxOGQwYTkuLjhmMThmZGZmMDQ5OTAzNzU4OThiMTdiOTI4Y2MwZTA2MDBlOTFjNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI1LDYgKzMyNSwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIENvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdy
YXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYK
KwogICAgIC8vIFBhc3MgbnVsbHB0ciBhcyB0aGUgR3JhcGhpY3NMYXllciB0byBkZXRhdGNoIHRo
ZSByb290IGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihG
cmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFZpZXdP
dmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vSG9zdFdpbmRvdy5oCmluZGV4IDQzZGIxZmZhZTAxMmJiMjE4OTRmMmNhOTYzMDcyMTQ3NjZh
YWRkOWUuLjczODExOGIyMWUzYzMzN2IyZTUzMWM5OTZkMDk5YmQzZTlhNTY5YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIldpZGdldC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Myw2ICs2NCwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25zdCA9
IDA7CisjZW5kaWYKKwogICAgIC8vIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgbmF0aXZlIGNs
aWVudCBvZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9y
bVBhZ2VDbGllbnQoKSBjb25zdCA9IDA7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCmluZGV4IGEyMjUzYzgxYmZlMGEwYmIw
OTEwYmRlNmMwZGIyNmFhNzg0NTJmYjMuLjdhZmJhNmVjNTA4ODE5Y2MxZWFiYWRjY2RlMGJiNzlh
ODM4NDJkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oCkBAIC0zNCwxMyArMzQsMTYgQEAgV0VCQ09SRV9FWFBPUlQgaW50IHBy
ZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogaW5saW5lIGJv
b2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQ
VVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogI2VsaWYgIVBMQVRGT1JNKENPQ09BKQogaW5s
aW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUgYm9vbCBp
c0luR1BVUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogCiBib29sIGlzSW5XZWJQcm9jZXNzKCk7Citib29sIGlzSW5HUFVQcm9jZXNzKCk7
CiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpOwogCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzQ29jb2EubW0KaW5kZXggZmJkMWQ0M2MwOGY4NmRjM2MxOGVkMjE1NjBmMDhjZjg3ZmExYWYz
OS4uYjA2ZmY0N2RmYzU0MTcyMWY2NGFhMGRlMzhiM2I5MmY4ODM4MjQ2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzQ29jb2EubW0KQEAgLTk2LDYgKzk2LDEyIEBAIGJvb2wgaXNJbldlYlByb2Nlc3Mo
KQogICAgIHJldHVybiBtYWluQnVuZGxlSXNXZWJQcm9jZXNzOwogfQogCitib29sIGlzSW5HUFVQ
cm9jZXNzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNHUFVQcm9jZXNzID0gW1tb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaGFzUHJlZml4OkAiY29tLmFw
cGxlLldlYktpdC5HUFUiXTsKKyAgICByZXR1cm4gbWFpbkJ1bmRsZUlzR1BVUHJvY2VzczsKK30K
KwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0YXRpYyBib29sIG1haW5CdW5k
bGVJc05ldHdvcmtQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRp
Zmllcl0gaGFzUHJlZml4OkAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nIl07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGM0ZTc3
NzhkYjZhNDQ4ZmQwYTVlNjUxNTkxZmVlYTE0NTM4NjM4MjMuLmQ1MDIxZGQzMzRlZGY5MWEzNDIz
MGJlMDE2ODkyMDc0MjQ5ZWIwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yNjcsNyArMjY3LDEwIEBAIHB1YmxpYzoKICAgICAv
LyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKICAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBMRVRJT05fU1RBVFVTX0tIUiA9IDB4OTFCMTsKIAotICAgIC8vIFdlYkdMIGZ1
bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRlcnN0YW5kcy4KKyAgICAv
LyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSA9IDB4OTNBODsKKworICAgIC8vIFdlYkdM
IGZ1bmN0aW9ucy4KIAogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8gTm90ZTogVGhp
cyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20gdGhlIEdMX0FSQl9yb2J1c3RuZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAKaW5kZXggZGY0YTExOWEzMjBkYWM2YWViNjMwNmQ0YzUwOTU1MTU4OGExOTczZS4u
MzRkNTU2YjBjYzRhOWJiMWFlYTdhNWE5NjhiYzY5NWIzYTJlMjc4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApA
QCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAK
ICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgogI2luY2x1ZGUgIkZvcm1hdENvbnZlcnRlci5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUg
IkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTQwMyw2ICs0MDUsMTUgQEAgc3RhdGljIGJvb2wgcGFja1Bp
eGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLCBHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZv
cm1hdAogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IEdy
YXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTD4gcmVzdWx0OworICAgIGlmIChob3N0V2luZG93KQorICAgICAgICByZXN1
bHQgPSBob3N0V2luZG93LT5jcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKTsKKyAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQog
CiBHcmFwaGljc0NvbnRleHRHTDo6R3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIGF0dHJzLCBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250ZXh0
R0wqKQogICAgIDogbV9hdHRycyhhdHRycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGYyNzVmMzgzZTM2ODI3M2Y3
YzlmYmM4OGNiZTIwOGRiNGYyZmMwYzAuLmU0MjFjZTQ5OTM3ODdiZmVhOGRkODZjOWFiZjY3YzRj
MmQzNmFhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTksNiArNTksOCBAQCBjbGFzcyBJbWFnZURhdGE7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHRHTENWOwogI2VuZGlmCiAKKworLy8gQmFzZSBjbGFzcyBmb3Ig
Z3JhcGhpY3MgY29udGV4dCBmb3IgaW1wbGVtZW50aW5nIFdlYkdMIHJlbmRlcmluZyBtb2RlbC4K
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250
ZXh0R0w+IHsKIHB1YmxpYzoKICAgICAvLyBXZWJHTCAxIGNvbnN0YW50cy4KQEAgLTkwOSwxNCAr
OTExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgR0NHTGludCBzaXplOwogICAgIH07CiAKKyAgICAv
LyBDcmVhdGVzIGEgR3JhcGhpY3NDb250ZXh0R0wgaW5zdGFuY2UgdG8gcmVuZGVyIGludG8gb2Zm
c2NyZWVuIGRlc3RpbmF0aW9uIGluIGNvbnRleHQgb2YgSG9zdFdpbmRvdy4KKyAgICAvLyBIb3N0
V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFja2VuZCBpcyB0byBiZSB1
c2VkLgorICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBIb3N0V2luZG93Kik7CisKICAgICBHcmFwaGlj
c0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIERlc3RpbmF0aW9uID0gRGVz
dGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0wqIHNoYXJlZENvbnRleHQgPSBu
dWxscHRyKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTCgpID0gZGVmYXVsdDsKIAog
ICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5hZGQoJmNsaWVu
dCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMu
cmVtb3ZlKCZjbGllbnQpOyB9CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCi0KKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMu
CiAgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kQXR0cmli
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
bmFtZSkgPSAwOwpAQCAtMTM5NSw3ICsxNDAwLDYgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3ND
b250ZXh0R0w6OmdldEludGVybmFsZm9ybWF0aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGkK
ICAgICByZXR1cm4gdmFsdWVbMF07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlc0dMLmgKaW5kZXggMjE2YmQzNjY4ZjEwN2E4NzkxNGRlNGY2MGJiZTUyNjMxMTVkZmZmOC4u
M2IwNjRjM2U3NjhlY2M0YmYwMmI3NjI1YTZmMWVkYmNjODA4NzRkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTI1LDcg
KzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDQsMTUgKzQ2LDE3IEBAIHR5cGVkZWYg
dW5zaWduZWQgR0NHTHVpbnQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xmbG9hdDsKIHR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgR0NHTGhhbGZmbG9hdDsKIHR5cGVkZWYgZmxvYXQgR0NHTGNsYW1wZjsKLXR5
cGVkZWYgaW50cHRyX3QgR0NHTGludHB0cjsKLXR5cGVkZWYgaW50cHRyX3QgR0NHTHNpemVpcHRy
OwogdHlwZWRlZiBjaGFyIEdDR0xjaGFyOwotdHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0Owot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgR0NHTHVpbnQ2NDsKIHR5cGVkZWYgc3RydWN0IF9f
R0xzeW5jKiBHQ0dMc3luYzsKIHR5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKLXR5cGVkZWYgaW50cHRy
X3QgR0NHTHZvaWRwdHI7CiAKKy8vIFRoZXNlIEdDR0wgdHlwZXMgZG8gbm90IHN0cmljdGx5IG1h
dGNoIHRoZSBHTCB0eXBlcyBhcyBkZWZpbmVkIGluIE9wZW5HTCBFUyAyLjAKKy8vIGhlYWRlciBm
aWxlIGZvciBhbGwgcGxhdGZvcm1zLgordHlwZWRlZiBpbnRwdHJfdCBHQ0dMaW50cHRyOwordHlw
ZWRlZiBpbnRwdHJfdCBHQ0dMc2l6ZWlwdHI7Cit0eXBlZGVmIGludHB0cl90IEdDR0x2b2lkcHRy
OwordHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgR0NHTHVpbnQ2NDsKIAogdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogCkBA
IC02MCwxMyArNjQsMTcgQEAgdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogdHlw
ZWRlZiB1bnNpZ25lZCBHTHVpbnQ7CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IEV4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+CitpbmxpbmUg
Y29uc3RleHByIHNpemVfdCBnY0dMU3BhbkR5bmFtaWNFeHRlbnQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50
ID0gZ2NHTFNwYW5EeW5hbWljRXh0ZW50Pgogc3RydWN0IEdDR0xTcGFuOwogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbiB7Ci0gICAgZXhwbGljaXQg
R0NHTFNwYW4oVCogYXJyYXkpCisgICAgZXhwbGljaXQgR0NHTFNwYW4oVCogYXJyYXksIHNpemVf
dCBzaXplID0gRXh0ZW50KQogICAgICAgICA6IGRhdGEoYXJyYXkpCi0gICAgeyB9CisgICAgewor
ICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUgPT0gRXh0ZW50KTsKKyAgICB9CiAgICAg
R0NHTFNwYW4oVCAoJmFycmF5KVtFeHRlbnRdKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAg
eyB9CkBAIC03NCw2ICs4MiwxMiBAQCBzdHJ1Y3QgR0NHTFNwYW4gewogICAgIEdDR0xTcGFuKGNv
bnN0IEdDR0xTcGFuPFUsIEV4dGVudD4mIG90aGVyLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
Y29udmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIp
CiAgICAgICAgIDogZGF0YShvdGhlci5kYXRhKQogICAgIHsgfQorICAgIEdDR0xTcGFuKHN0ZDo6
YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCisg
ICAgeyB9CisgICAgR0NHTFNwYW4oY29uc3Qgc3RkOjphcnJheTxULCBFeHRlbnQ+JiBhcnJheSkK
KyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KICAgICBUJiBvcGVyYXRvcltd
KHNpemVfdCBpKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgaSA8IGJ1ZlNpemUpOyByZXR1cm4g
ZGF0YVtpXTsgfQogICAgIFQmIG9wZXJhdG9yKigpIHsgUkVMRUFTRV9BU1NFUlQoZGF0YSAmJiBi
dWZTaXplKTsgcmV0dXJuICpkYXRhOyB9CiAgICAgVCogZGF0YTsKQEAgLTgxLDcgKzk1LDcgQEAg
c3RydWN0IEdDR0xTcGFuIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgR0NH
TFNwYW48VCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4geworc3RydWN0IEdD
R0xTcGFuPFQsIGdjR0xTcGFuRHluYW1pY0V4dGVudD4gewogICAgIEdDR0xTcGFuKFQqIGFycmF5
LCBzaXplX3QgYnVmU2l6ZV8pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICAgICAgLCBidWZT
aXplKGJ1ZlNpemVfKQpAQCAtMTIzLDYgKzEzNywxMSBAQCBzdHJ1Y3QgR0NHTFNwYW48R0NHTHZv
aWQ+IHsKICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpCiAgICAgICAgICwgYnVmU2l6ZShvdGhl
ci5idWZTaXplICogc2l6ZW9mKFUpKQogICAgIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxVLCBpbmxp
bmVDYXBhY2l0eT4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgICAg
ICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgpICogc2l6ZW9mKFUpKQorICAgIHsgfQogICAgIEdDR0x2
b2lkKiBkYXRhOwogICAgIGNvbnN0IHNpemVfdCBidWZTaXplOwogfTsKQEAgLTE1NCw4ICsxNzMs
MTEgQEAgc3RydWN0IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiB7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgTj4KIEdDR0xTcGFuKFQgKCYpW05dKSAtPiBHQ0dMU3BhbjxULCBOPjsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLUdDR0xTcGFuKFdURjo6VmVjdG9yPFQ+JikgLT4gR0NHTFNw
YW48VD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KK0dDR0xTcGFuKHN0ZDo6YXJy
YXk8VCwgTj4mKSAtPiBHQ0dMU3BhbjxULCBOPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorR0NHTFNwYW4oV1RGOjpWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHk+JikgLT4gR0NHTFNwYW48VD47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBHQ0dMU3BhbjxU
PiBtYWtlR0NHTFNwYW4oVCogZGF0YSwgc2l6ZV90IGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjYzM2YTlmMjM5NzA5MzQxYjlhMmYy
M2RjN2E2MWU0MDZiMWUwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKQEAgLTAs
MCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzKQorewor
ICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgPSBkZWZhdWx0Owor
CitFeHRlbnNpb25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRl
bnNpb25zKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK0dy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIHJl
dHVybiB7IH07Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omlz
R0xFUzJDb21wbGlhbnQoKSBjb25zdAoreworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygp
LmlzV2ViR0wyOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpt
YXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0
cmFjayB0aGlzIHN0YXRlLgorICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAgICAgbm90
aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0xheWVyQ29t
cG9zaXRlZCgpCit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0
cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5n
QnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0
R0w6OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAg
ICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZG
RVJfQklUOworICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVy
c1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Cisg
ICAgfQorICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisg
ICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbGF5ZXJDb21wb3NpdGVkOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCit7Cisg
ICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAg
ICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJzOworfQorCitHQ0dMYml0ZmllbGQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOworfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkK
K3sKKyAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBvcnQgcmVhc29ucy4KKyAgICAvLyBGSVhNRTog
VGhlIHdob2xlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkLgorICAgIEdyYXBoaWNzQ29udGV4
dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKK30KKworYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJl
RW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQo
KTsKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1f
ZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChuYW1lKTsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7
CisgICAgfQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0Vu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7
CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2Vu
YWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0
ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9y
IChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAg
ICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8m
IGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30KKworI2lmICFQTEFURk9S
TShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3Jt
SW5pdGlhbGl6ZSgpCit7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU2NWJiNWJkMjhjOGNmNTdhYTUzYjI3MGVhZTUxM2Y0YTk1MmZm
NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC0wLDAgKzEsMTEwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJF
eHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBXZWJHTExheWVyOworI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47CisjZW5kaWYKKworLy8gQSBiYXNlIGNsYXNzIGZv
ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCisvLyBU
aGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUgaW50ZXJuYWwg
ZnVuY3Rpb25hbGl0eToKKy8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tpbmcgbWFuYWdlbWVudC4K
Ky8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMLCBwdWJs
aWMgRXh0ZW5zaW9uc0dMIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoKSBvdmVycmlkZTsKKworICAgIC8vIE90aGVyIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBHcmFwaGljc0Nv
bnRleHRHTDo6aXNFbmFibGVkOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBmaW5hbDsKKyAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKKyAg
ICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIEdyYXBoaWNzQ29u
dGV4dEdMUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0
ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0
ZmllbGQpIGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwor
ICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CisKKyNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViog
YXNDVigpIGZpbmFsOworI2VuZGlmCisgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3ZlcnJpZGVz
LgorICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOworICAgIGJvb2wgc3VwcG9ydHMo
Y29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0
ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAgIHZpcnR1
YWwgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2FwQ2hhaW4o
KTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXll
cjsKKyNlbmRpZgorCisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxT
dHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1f
ZW5hYmxlZEV4dGVuc2lvbnM7CisKKyAgICAvLyBGSVhNRTogRHJhd2luZyBidWZmZXIgY2xlYXIg
dHJhY2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGllbnQuCisgICAgYm9vbCBtX2xheWVy
Q29tcG9zaXRlZCA9IGZhbHNlOworICAgIEdDR0xiaXRmaWVsZCBtX2J1ZmZlcnNUb0F1dG9DbGVh
ciA9IHsgMCB9OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjczNTk3ZjQ3NTNkMGJl
YzFkMDJlN2Q1ZmNmZGM2NDNhOTgzYzg4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmNwcApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKworI2lmIEVOQUJMRShH
UkFQSElDU19DT05URVhUX0dMKSAmJiBQTEFURk9STShDT0NPQSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6fkdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCkgPSBkZWZhdWx0OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTllODhjMmY5OWIxY2FhNTgxMTdjNzM5MTFhNTFiNjdkZGU2MzJiYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgUExBVEZPUk0oQ09DT0Ep
CisKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQW4gaW50ZXJmYWNlIGZvciBpbXBsZW1lbnRpbmcgZnJvbnQgYnVm
ZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2FwCisvLyBjaGFpbiBvZiBJT1N1cmZh
Y2VzLgorLy8gVGhlIGltcGxlbWVudG9yIHdpbGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMg
Zm9yIGRpc3BsYXkuCisvLyBUaGUgY2xpZW50IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJ
T1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRhdGEKKy8vIGJhY2sgb25jZSB0aGUg
SU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90
IG5lY2Nlc3NhcmlseQorLy8gYmUgYWJsZSB0byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYg
Zm9yIHJldXNlLgorLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xT
dXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlzIHdheQorLy8gd2hlbiB0aGUgZGlz
cGxheSBjbGllbnQgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxheSwgdGhlIGNsaWVu
dCBjYW4gY29udGludWUgdXNpbmcKKy8vIHRoZSBleGlzdGluZyBiaW5kaW5nIG9idGFpbmVkIHRo
cm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCk7CisgICAgc3RydWN0IEJ1ZmZl
ciB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1cmZhY2U7
IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCisgICAgICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIg
fTsgLy8gUHJvZHVjZXIgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1cmZh
Y2UpLgorICAgIH07CisgICAgLy8gUmV0dXJucyB0aGUgbWV0YWRhdGEgaGFuZGxlIG9mIGxhc3Qg
dW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGllbnQgbWF5IHJlY2lldmUgYmFjayBh
bHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2UgaXQgaXMg
YXZhaWxhYmxlIGF0IHRoZQorICAgIC8vIHRpbWUgb2YgdGhlIGNhbGwuCisgICAgLy8gUmV0dXJu
cyBlaXRoZXI6CisgICAgLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1
Ym1pdHRlZC4KKyAgICAvLyAtIEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2UgYW5kIG5vbi1lbXB0
eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMgYXZhaWxhYmxlCisg
ICAgLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4gdXNlLgorICAgIC8vIC0gU3VyZmFj
ZSBhbmQgaGFuZGxlLgorICAgIHZpcnR1YWwgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSA9IDA7CisK
KyAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50cyBi
dWZmZXIuCisgICAgLy8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlwIG9mIHRoZSBJT1N1
cmZhY2Ugc3VyZmFjZSBpbiB0aGUgYGJ1ZmZlcmAuCisgICAgdmlydHVhbCB2b2lkIHByZXNlbnQo
QnVmZmVyKSA9IDA7CisKKyAgICAvLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRo
ZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCisgICAgLy8gVGhlIGlm
IG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0
IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0aGlzLgorICAgIHZpcnR1
YWwgdm9pZCogZGV0YWNoQ2xpZW50KCkgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDQxNWM0NzAyOGM5ZDljY2Ez
NTZlYWI4MGU3NzJlZmVjZjgxOTY5YmUuLjQ4OWU0NWZjY2U2M2JkODU1ODdhNDgzMjg5OGQ5MzI0
MTFjZTlmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgpAQCAtODEsNyArODIsNyBAQCBzdGF0aWMgRUdMRGlzcGxheSBJbml0aWFsaXplRUdMRGlz
cGxheSgpCiAgICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CiAgICAgRUdMaW50IG1pbm9yVmVy
c2lvbiA9IDA7CiAgICAgRUdMRGlzcGxheSBkaXNwbGF5OwotICAgIGJvb2wgc2hvdWxkSW5pdGlh
bGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIWlzSW5XZWJQcm9jZXNzKCk7CisgICAg
Ym9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQgPSAhKGlzSW5X
ZWJQcm9jZXNzKCkgfHwgaXNJbkdQVVByb2Nlc3MoKSk7CiAgICAgaWYgKHNob3VsZEluaXRpYWxp
emVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCkgewogICAgICAgICAvLyBGb3IgV0sxIHR5cGUg
QVBJcyB3ZSBuZWVkIHRvIHNldCAidm9sYXRpbGUgcGxhdGZvcm0gY29udGV4dCIgZm9yIHNwZWNp
ZmljCiAgICAgICAgIC8vIEFQSXMsIHNpbmNlIGNsaWVudCBjb2RlIHdpbGwgYmUgYWJsZSB0byBv
dmVycmlkZSB0aGUgdGhyZWFkLWdsb2JhbCBjb250ZXh0CkBAIC0xMzQsNyArMTM1LDcgQEAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0
ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93
LCBkZXN0aW5hdGlvbikpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29u
dGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdp
bmRvdywgbnVsbHB0ciwgbnVsbHB0cikpOwogCiAgICAgaWYgKCFjb250ZXh0LT5tX2NvbnRleHRP
YmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ3LDEzICsxNDgsMTggQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dEcKIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hh
cmVkQ29udGV4dCkKIHsKICAgICBhdXRvIGhvc3RXaW5kb3cgPSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5ob3N0V2luZG93Rm9yQ29udGV4dCgmc2hhcmVk
Q29udGV4dCk7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3cs
IHNoYXJlZENvbnRleHQuZGVzdGluYXRpb24oKSwgJnNoYXJlZENvbnRleHQpKTsKKyAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENv
bnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgJnNoYXJlZENvbnRleHQsIG51
bGxwdHIpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdpbmRvdyk7CiAKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAorUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJzLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiog
c3dhcENoYWluKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKGF0dHJzLCBudWxscHRyLCBudWxscHRyLCBzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBM
QVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxl
ZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAogc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3Ry
eUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3Jt
YXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJyZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBA
QCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2Jq
LCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1H
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGlj
c0NvbnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBzaGFyZWRDb250ZXh0KQotICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3Rp
bmF0aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQs
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBH
cmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29u
dGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMuaXNXZWJHTDI7CiAKQEAgLTMzMywx
MyArMzM5LDE3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgdmFsaWRhdGVBdHRyaWJ1
dGVzKCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZl
IGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKLSAgICAvLyBDcmVhdGUgdGhlIFdlYkdMTGF5
ZXIKKyAgICBpZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsK
KyAgICBlbHNlIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAgICAgbV93
ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4
ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBo
YV0pOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2Vi
R0wgTGF5ZXIiXTsKICNlbmRpZgogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAg
ICAgbV9zd2FwQ2hhaW4gPSAmW21fd2ViR0xMYXllciBzd2FwQ2hhaW5dOworICAgIH0KIAogICAg
IC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVm
ZmVyLgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgp
OwpAQCAtNDA4LDEzICs0MTgsMTIgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6On5HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCgpCiAgICAgICAgIGlmIChtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZC
TykKICAgICAgICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fcHJlc2VydmVEcmF3
aW5nQnVmZmVyRkJPKTsKICAgICB9Ci0gICAgaWYgKG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpCisg
ICAgaWYgKG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpIHsKICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJm
YWNlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcik7Ci0gICAgaWYgKG1fd2Vi
R0xMYXllcikgewotICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciBy
ZWN5Y2xlQnVmZmVyXTsKKyAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWlu
LT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAgICAgIGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCiAg
ICAgICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZl
ci5oYW5kbGUpOwotICAgICAgICBhdXRvIGNvbnRlbnRzSGFuZGxlID0gW21fd2ViR0xMYXllciBk
ZXRhY2hDbGllbnRdOworICAgICAgICBhdXRvIGNvbnRlbnRzSGFuZGxlID0gbV9zd2FwQ2hhaW4t
PmRldGFjaENsaWVudCgpOwogICAgICAgICBpZiAoY29udGVudHNIYW5kbGUpCiAgICAgICAgICAg
ICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCBjb250ZW50c0hhbmRsZSk7CiAgICAg
fQpAQCAtNTc3LDExICs1ODYsMTYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKICAgICAgICAgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZl
ciA9IEVHTF9OT19TVVJGQUNFOwogICAgIH0KICAgICAvLyBSZXNldCB0aGUgZnV0dXJlIHJlY3lj
bGVkIGJ1ZmZlciBub3csIGJlY2F1c2UgaXQgbW9zdCBsaWtlbHkgd2lsbCBub3QgYmUgcmV1c2Fi
bGUgYXQgdGhlIHRpbWUgaXQgd2lsbCBiZSByZXVzZWQuCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZl
ciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZl
ciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAgaWYgKHJlY3ljbGVkQnVmZmVy
LmhhbmRsZSkKICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNs
ZWRCdWZmZXIuaGFuZGxlKTsKICAgICByZWN5Y2xlZEJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7Cisg
ICAgcmV0dXJuIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7Cit9CiAKK2Jv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKCkKK3sKKyAgICBBU1NFUlQoIWdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNF
bXB0eSgpKTsKICAgICBhdXRvIGJhY2tpbmcgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShn
ZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigp
KTsKICAgICBpZiAoIWJhY2tpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3ICs2
NTMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJl
cnMoKSBjb25zdAogICAgIC8vIGZvciBPcGVuR0wgdG8gZGVjaWRlIHdoaWNoIEdQVSBpcyBjb25u
ZWN0ZWQgdG8gYSBkaXNwbGF5IChvbmxpbmUvb2ZmbGluZSkuCiAgICAgLy8gT3BlbkdMIHdpbGwg
dGhlbiBjb25zaWRlciBhbGwgR1BVcywgb3IgcmVuZGVyZXJzLCBhcyBvZmZsaW5lLCB3aGljaCBt
ZWFucwogICAgIC8vIGFsbCBvZmZsaW5lIHJlbmRlcmVycyBuZWVkIHRvIGJlIGNvbnNpZGVyZWQg
d2hlbiBmaW5kaW5nIGEgcGl4ZWwgZm9ybWF0LgotICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRo
ZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kb3dTZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCisgICAgLy8g
SW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2lsbCBzdGlsbCBiZSBhIFdpbmR3U2VydmVyIGNvbm5l
Y3Rpb24sIGFuZAogICAgIC8vIG1fZGlzcGxheU1hc2sgd2lsbCBub3QgYmUgc2V0IGluIHRoaXMg
Y2FzZS4KICAgICBpZiAocHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtNjg1LDEwICs2OTksMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIC8vIFRoZSBJT1N1cmZhY2Ugd2lsbCBiZSB1c2Vk
IGZyb20gb3RoZXIgZ3JhcGhpY3Mgc3Vic3lzdGVtLCBzbyBmbHVzaCBHTCBjb21tYW5kcy4KICAg
ICBnbDo6Rmx1c2goKTsKIAotICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVy
IHJlY3ljbGVCdWZmZXJdOworICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+
cmVjeWNsZUJ1ZmZlcigpOwogCiAgICAgRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmos
IG1fZGlzcGxheUJ1ZmZlclBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgW21fd2ViR0xM
YXllciBwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czoge1dURk1vdmUobV9kaXNwbGF5QnVm
ZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZlclBidWZmZXJ9XTsKKyAgICBtX3N3YXBDaGFpbi0+
cHJlc2VudCh7IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIgfSk7CiAgICAgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNF
OwogCiAgICAgYm9vbCBoYXNOZXdCYWNraW5nID0gZmFsc2U7CkBAIC03MDIsNyArNzE2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogCiAgICAg
Ly8gRXJyb3Igd2lsbCBiZSBoYW5kbGVkIGJ5IG5leHQgY2FsbCB0byBtYWtlQ29udGV4dEN1cnJl
bnQoKSB3aGljaCB3aWxsIG5vdGljZSBsYWNrIG9mIGRpc3BsYXkgYnVmZmVyLgogICAgIGlmICgh
aGFzTmV3QmFja2luZykKLSAgICAgICAgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7Cisg
ICAgICAgIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAKICAgICBtYXJr
TGF5ZXJDb21wb3NpdGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQxNDAxNWI3YjBmMzRiYjI4
YmUzNDU1MDljNzQyOWUzMWRhYTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VD
b2NvYS5tbQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKyNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKKyNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
K3sKKyAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdM
TGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJh
dGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOworI2lmbmRlZiBOREVCVUcKKyAgICAg
ICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKKyNlbmRpZgorICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fd2ViR0xMYXllci5nZXQoKTsKK30KKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFW
Rk9VTkRBVElPTikKK0dyYXBoaWNzQ29udGV4dEdMQ1YqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjphc0NWKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCitH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENoYWluKCkKK3sKKyAgICByZXR1cm4gW21fd2ViR0xM
YXllciBzd2FwQ2hhaW5dOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAppbmRleCAxNGIwMWU3MDVmMjA1
MzAxYzdjOTdjZjY2ZTcxYTA4YmJmNDFlNzA1Li43ZmU4OGEyZmY0Y2UwZjU1OWQ1OWRjMWNkOTUy
YTNhN2VhODgwOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCkBAIC0yMyw1MiArMjMsMjIgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2ltcG9ydCAiSU9TdXJmYWNlLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+
CisjaW1wb3J0IDxtZW1vcnk+CiAjaW1wb3J0IDx3dGYvTmFrZWRQdHIuaD4KIAotbmFtZXNwYWNl
IFdlYkNvcmUgewotc3RydWN0IFdlYkdMTGF5ZXJCdWZmZXIgewotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1cmZhY2U7IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCi0g
ICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OyAvLyBDbGllbnQgc3BlY2lmaWMgbWV0YWRhdGEg
aGFuZGxlIChzdWNoIGFzIEVHTFN1cmZhY2UpLgotfTsKLX0KLQogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KIAogLy8gQSBsYXllciBjbGFzcyBpbXBsZW1lbnRpbmcgZnJvbnQg
YnVmZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2FwCiAvLyBjaGFpbiBvZiBJT1N1
cmZhY2VzLgotLy8gVGhlIGxheWVyIHdpbGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMgZm9y
IGRpc3BsYXkuCi0vLyBUaGUgY2xpZW50IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJT1N1
cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRhdGEKLS8vIGJhY2sgb25jZSB0aGUgSU9T
dXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90IG5l
Y2Nlc3NhcmlseQotLy8gYmUgYWJsZSB0byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYgZm9y
IHJldXNlLgotLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xTdXJm
YWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlzIHdheQotLy8gd2hlbiB0aGUgV2ViR0xM
YXllciBpcyBkb25lIHdpdGggdGhlIElPU3VyZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBj
b250aW51ZSB1c2luZwotLy8gdGhlIGV4aXN0aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0
aGUgYnVmZmVyIHJlY3ljbGUgbG9naWMuCiBAaW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBDQUxheWVy
CiAKIC0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRp
byBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1ZTsKIAogLSAoQ0dJbWFnZVJlZilj
b3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFj
ZTsKIAotLy8gUmV0dXJucyB0aGUgbWV0YWRhdGEgaGFuZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRl
bnRzIGJ1ZmZlci4KLS8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hp
cCBvZiB0aGUgY29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhl
Ci0vLyB0aW1lIG9mIHRoZSBjYWxsLgotLy8gUmV0dXJucyBlaXRoZXI6Ci0vLyAtIEVtcHR5IGJ1
ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVkLgotLy8gLSBCdWZmZXIgd2l0aCBl
bXB0eSBzdXJmYWNlIGFuZCBub24tZW1wdHkgbWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xl
ZCBidWZmZXIgd2FzIGF2YWlsYWJsZQotLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4g
dXNlLgotLy8gLSBTdXJmYWNlIGFuZCBoYW5kbGUuCi0tIChXZWJDb3JlOjpXZWJHTExheWVyQnVm
ZmVyKXJlY3ljbGVCdWZmZXI7Ci0KLS8vIFByZXBhcmVzIHRoZSBsYXllciBmb3IgZGlzcGxheSB3
aXRoIGEgY29udGVudHMgYnVmZmVyLgotLy8gQ2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlw
IG9mIHRoZSBJT1N1cmZhY2Ugc3VyZmFjZSBpbiB0aGUgYGJ1ZmZlcmAuCi0tICh2b2lkKXByZXBh
cmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKWJ1ZmZl
cjsKLQotLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250
ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgotLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMg
aGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQg
YmVmb3JlIGNhbGxpbmcKLS8vIHRoaXMuCi0tICh2b2lkKilkZXRhY2hDbGllbnQ7CistIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbjsKIAog
QGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5tbQppbmRleCBjOGY0ZTc5ZjczMTJlYWE2YWIwNDQ2ODA4M2VhOGQwYzhiZWZh
M2JjLi4zODU5N2U0YThmNjMzYTVlZTVkYjc0OTMzMDIyZGMyMzdmZTdlNDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
QEAgLTMyLDEzICszMiwzOSBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+
CisKK2NsYXNzIFdlYkdMTGF5ZXJTd2FwQ2hhaW4gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIGV4cGxpY2l0
IFdlYkdMTGF5ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIp
IHsgfTsKKyAgICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyAg
ICB2b2lkIHByZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZl
cigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7
CisgICAgICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCisgICAg
ICAgICAgICAgICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgICAgICAgICBy
ZXR1cm4gV1RGTW92ZShtX3NwYXJlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgICAgICB2b2lkKiByZXN1
bHQgPSBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIuaGFu
ZGxlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgV2ViQ29y
ZTo6SU9TdXJmYWNlKiBkaXNwbGF5U3VyZmFjZSgpIHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5z
dXJmYWNlLmdldCgpOyB9Citwcml2YXRlOgorICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7Cisg
ICAgQnVmZmVyIG1fc3BhcmVCdWZmZXI7CisgICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsK
K307CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBXZWJDb3JlOjpXZWJHTExh
eWVyQnVmZmVyIF9jb250ZW50c0J1ZmZlcjsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVy
IF9zcGFyZUJ1ZmZlcjsKLQogICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsKKyAgICBPcHRp
b25hbDxXZWJHTExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0
aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6
KGJvb2wpY29udGVudHNPcGFxdWUKQEAgLTQ3LDYgKzczLDcgQEAKICAgICBzZWxmLnRyYW5zZm9y
bSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKICAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29u
dGVudHNPcGFxdWU7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsK
KyAgICBfc3dhcENoYWluLmVtcGxhY2Uoc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAg
LTczLDMwICsxMDAsMjEgQEAKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9Ci0KLS0gKFdlYkNvcmU6OldlYkdMTGF5ZXJCdWZmZXIpIHJlY3ljbGVC
dWZmZXIKKy0gKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikg
c3dhcENoYWluCiB7Ci0gICAgaWYgKF9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgIGlm
IChfc3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAgICAgICAgX3NwYXJlQnVm
ZmVyLnN1cmZhY2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoX3NwYXJlQnVmZmVy
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gX3N3YXBDaGFpbi52YWx1ZSgp
OwogfQogCi0tICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpX
ZWJHTExheWVyQnVmZmVyKSBidWZmZXIKKy0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKIHsKLSAg
ICBBU1NFUlQoIV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBfc3BhcmVCdWZmZXIgPSBXVEZN
b3ZlKF9jb250ZW50c0J1ZmZlcik7Ci0gICAgX2NvbnRlbnRzQnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOwogICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheV07CiAgICAgX3ByZXBhcmVkRm9yRGlzcGxh
eSA9IFlFUzsKIH0KIAogLSAodm9pZClkaXNwbGF5CiB7Ci0gICAgaWYgKF9jb250ZW50c0J1ZmZl
ci5zdXJmYWNlICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50
cyA9IF9jb250ZW50c0J1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKTsKKyAgICBpZiAo
X3N3YXBDaGFpbi0+ZGlzcGxheVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7Cisg
ICAgICAgIHNlbGYuY29udGVudHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xh
eWVyQ29udGVudHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29u
dGVudHMiXTsKICAgICB9CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMTA2
LDEzICsxMjQsMTQgQEAKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLS0gKHZv
aWQqKSBkZXRhY2hDbGllbnQKK0BlbmQKKwordm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVz
ZW50KEJ1ZmZlciBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7
Ci0gICAgdm9pZCogcmVzdWx0ID0gX2NvbnRlbnRzQnVmZmVyLmhhbmRsZTsKLSAgICBfY29udGVu
dHNCdWZmZXIuaGFuZGxlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEFTU0VS
VCghbV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX3NwYXJlQnVmZmVyID0gV1RGTW92ZSht
X2Rpc3BsYXlCdWZmZXIpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsK
KyAgICBbbV9sYXllciBwcmVwYXJlRm9yRGlzcGxheV07CiB9Ci1AZW5kCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW0KaW5kZXggMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4u
OTlhZDkxNjUyNTkxODczZTBlODNmZTg3ODkyNWVjYTIzM2ExYTFjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMzYsNiArMzYsNyBA
QAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRD
Ry5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNp
bXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKaW5kZXggZDNiZDg2MjQ3ZTNhNzVlMTVlMWY2ODFhMmNkMjc1MDFhMDhjOGM1ZS4uMjYz
MmQ3YTgzZTg3YTkxMjlhODlmNDYwYzJlYzJiYTA0M2EzMDI4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKQEAgLTU4LDYgKzU4LDkgQEAKICNpZiBQTEFURk9STShDT0NPQSkK
IE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworfQog
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgVVNFKE5JQ09TSUEpCkBAIC04Niw3ICs4
OSw3IEBAIHR5cGVkZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1l
SGFzaDsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlOwogCi1jbGFzcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBI
b3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKTsKQEAgLTk0
LDYgKzk3LDggQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJl
ZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMJiBzaGFyZWRDb250ZXh0KTsKKyAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKik7CisKICAgICBDQUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eU9iajsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25m
aWcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ09iajsgfQpAQCAtNTAzLDcgKzUwOCwxMSBAQCBw
dWJsaWM6CiAjZW5kaWYgLy8gIVVTRShBTkdMRSkKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4
dCA9IG51bGxwdHIsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxw
dHIpOworI2Vsc2UKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZz
Y3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7
CisjZW5kaWYKIAogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBv
aW50cyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkg
YWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFs
bHkgY2FsbCBPcGVuR0wuCkBAIC01MzgsMTAgKzU0NywxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3Q7CiAgICAg
Ym9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGFsbG9jYXRlQW5k
QmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJh
Y2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluKiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKKyAgICAvLyBUT0RPOiB0
aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gYSBpbWFnZSBi
dWZmZXIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTc5
IC4KICAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CmluZGV4IDg4ZTE1MWIxMjIyNGZlYmNjODkzYjUzZDY4NWUzZWMxYjAxMGNkNDUu
LjJiODk2YTlhYmFjMGUxMDc0YjFlMTM1MTkzMjA0OWFiZTc2ODAzYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dApAQCAtMTIzLDYgKzEyMyw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAg
ICBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICBHUFVQcm9jZXNzL0dQ
VVByb2Nlc3MKIAorICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wKICAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAogICAg
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIKQEAgLTIyMSw2
ICsyMjIsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbgogCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZTUxY2FlZDIxZTE4NmNmMmExNzNjYjhhMzMzMTJiZTBi
MzA0YmIwMC4uYmNlMzM4YzRiNDRmMDc5ZTgwZWQwZDQ2ZDY3MjI5M2MyMjdlNTliMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjAsNiAr
MjAsNyBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQog
JChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBs
ZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTM0LDYgKzEz
NSw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTg4YjJjMjFmYTcxN2M3N2Qy
MzAyY2I1MThiYTRhZDNlZGUyNTc0YS4uMTVmM2MyM2NjZTA1ZTJkMzJlNWVlYjY5MjQwYzY1NDhh
OWJkMTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CkBAIC0xNzgsNiArMTc4LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggNjgxNDg1NWZmOWQyM2FmMGE3N2U1ZmRhNmRmZDJmZDU1MDk3NmY2OS4uMzUz
ZDc2ZWQxYTVmMjA5ZWVhM2Y0NzgzMWUwNmNhOGRkMjEwNDNjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMTcxLDYgKzE3MSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAog
CVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MgXAogCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZSBcCkBAIC0yMjcsNiArMjI4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzIFwKIAlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgXAogCUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBc
CisJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTCBcCiAJR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkgXAogCUdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgXAogCUdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggMGUyZTg4MzJiMWUyMGYxZTBmMzE5ZDVkOWYyNWQ3MmNlMWJmNzNhZC4uNDRiOWY2M2Ux
NGM1MGI3NDE5OTNkNmYzNWE1YTk1ZjVhZmQ4MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjQsNiAr
NjQsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KICNl
bmRpZgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAi
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
TWVzc2FnZXMuaCIKQEAgLTI5MCw2ICsyOTQsMjEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkK
ICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wp
Cit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIH0pOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNYXAucmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworfQorI2VuZGlmCiB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVBy
b2Nlc3MoKS5ub3dQbGF5aW5nTWFuYWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggMjY3OGRiYzRlNWQzNjVmYWQyOGU4YjQ4Mjc4NjM3NjJhM2M0NTc4
ZC4uNWFlZGZiYjRkMmNhYzdiNzY2MGZmMDczNjA5ZDM3N2M2MDE1ODRiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlQXVkaW9TZXNzaW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLmgiCisKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFp
dHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgpAQCAtMzksNiArNDAsMTEgQEAKICNpbmNsdWRl
IDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJM
RShXRUJHTCkKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVQcm9jZXNzOwpAQCAtNTQsNiArNjAsNyBAQCBj
bGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiBjbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7CiBj
bGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1
cmF0aW9uOwpAQCAtMTE5LDYgKzEyNiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxl
YXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgdm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAgICAg
dm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBX
ZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYmKTsKIApAQCAtMTgwLDcgKzE5MiwxMCBAQCBwcml2YXRl
OgogCiAgICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kPj47CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXA7Ci0KKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKKyNlbmRpZgogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3Rv
cnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggNTE5NGZiNGY2MDg1ZDYyNGQ1OTgzZjYyNTJjMzY1ZWIzMjcxZjM0NC4uOWQ1
NGUxNjQ1OTViMGEzNjFkZmU0Yzc1YmZmNDAxOGE4NTc1OWM4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDEwIEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcikKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktp
dDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3Ry
dWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJL
aXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpCisgICAgdm9pZCBSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorI2VuZGlmCiAg
ICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJbmZvKCkKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZv
KGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5
aW5nSW5mbyBub3dQbGF5aW5nSW5mbykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MDRkMWZhOTk5NGQ1ZmZmMzE0MzY0ZDU5YmVm
OTVlYjQ5ZWE5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworCitu
YW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQp
CisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAg
ICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIG1fY29udGV4dC0+
YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0
U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICBTdHJpbmcgcmVxdWVz
dGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dMOjpSRVFV
RVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0
ZW5zaW9ucyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCit7CisgICAgaWYgKGF1
dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIudG9VSW50NjQoKSk7Cit9CisKK0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCitJUEM6
OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
PSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJldHVybiAmZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBudWxscHRy
OworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpk
aWRDb21wb3NpdGUoKQoreworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3Jj
ZUNvbnRleHRMb3N0KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpXYXNMb3N0KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2VkKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKK3sKKyAgICBpZiAod2lk
dGggJiYgaGVpZ2h0KQorICAgICAgICBtX2NvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7
CisgICAgZWxzZQorICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7Cit9CisKKyNpZiAhUExBVEZP
Uk0oQ09DT0EpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxh
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3Ry
aW5nJiYgZXh0ZW5zaW9uKQoreworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoZXh0ZW5zaW9uKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBtX2NvbnRleHQtPm1hcmtDb250ZXh0
Q2hhbmdlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYjBjZjUxOGFiZjliYjI1YWIzMzZkZGRlMDM5OTky
NWFhMDVmMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBHUFUgcHJv
Y2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZXMgYWJvdXQg
R3JhcGhpY3NDb250ZXh0R0wgY2FsbHMKKy8vIGFuZCBpc3N1ZXMgcmVhbCBHcmFwaGljc0NvbnRl
eHRHTCBjYWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCisvLyBUaGUgaW1wbGVt
ZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgIDog
cHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkgb3ZlcnJpZGU7CisKKyAgICBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CisK
K3Byb3RlY3RlZDoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+KTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCisgICAg
SVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwor
ICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisK
KyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gR3JhcGhp
Y3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRDb21wb3NpdGUoKSBm
aW5hbDsKKyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKKyAgICB2b2lkIHJlY3lj
bGVDb250ZXh0KCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZp
Y2F0aW9uKCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2
b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOworICAgIHZvaWQgZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJik7CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+
JiYpID0gMDsKKyNlbHNlCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworI2VuZGlmCisKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKKworICAgIFJlZjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworICAgIFdlYWtQdHI8R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTAzNDcyNWY5YWE0MmY0MmJkM2M4YTAw
YjBhYTE4MDkwYTU5YjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0wLDAg
KzEsMjk1IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
ICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVm
Q291bnRlZCB7CisgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAo
TWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJv
bm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRl
bnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorCisgICAgdm9pZCBT
ZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVp
bnQzMl90IGVycm9yKQorICAgIHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBBY3RpdmVUZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUpCisgICAgdm9pZCBBdHRhY2hTaGFkZXIodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3Qgc2hhZGVyKQorICAgIHZvaWQgQmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90
IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcgbmFtZSkKKyAgICB2b2lkIEJpbmRCdWZmZXIo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZEZyYW1lYnVmZmVy
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJpbmRSZW5kZXJidWZm
ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFRleHR1cmUo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmxlbmRDb2xvcihmbG9h
dCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIEJs
ZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB2b2lkIEJsZW5kRXF1YXRpb25TZXBhcmF0
ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgdm9pZCBCbGVuZEZ1
bmModWludDMyX3Qgc2ZhY3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB2b2lkIEJsZW5kRnVu
Y1NlcGFyYXRlKHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNB
bHBoYSwgdWludDMyX3QgZHN0QWxwaGEpCisgICAgdm9pZCBDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KHVpbnQzMl90IHRhcmdldCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQ2xlYXIodWludDMyX3QgbWFzaykKKyAgICB2b2lkIENsZWFyQ29sb3IoZmxvYXQg
cmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisgICAgdm9pZCBDbGVh
ckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHZvaWQgQ2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAg
ICB2b2lkIENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFs
cGhhKQorICAgIHZvaWQgQ29tcGlsZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29w
eVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTJEKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
KyAgICB2b2lkIENyZWF0ZUJ1ZmZlcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIENyZWF0ZUZyYW1lYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUHJvZ3JhbSgpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmJ1ZmZlcigpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNoYWRl
cih1aW50MzJfdCBhcmcwKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBDcmVhdGVUZXh0dXJlKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgQ3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB2b2lkIERlbGV0ZUJ1
ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlRnJhbWVidWZmZXIodWludDMyX3Qg
YXJnMCkKKyAgICB2b2lkIERlbGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERl
bGV0ZVJlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlU2hhZGVyKHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBEZXB0aEZ1bmModWludDMyX3QgZnVuYykKKyAgICB2b2lkIERlcHRoTWFzayhib29sIGZs
YWcpCisgICAgdm9pZCBEZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQorICAgIHZv
aWQgRGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBE
aXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1
aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIERyYXdBcnJheXModWludDMyX3QgbW9kZSwgaW50MzJf
dCBmaXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50cyh1aW50MzJfdCBt
b2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAg
dm9pZCBFbmFibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBGaW5pc2goKQorICAgIHZvaWQgRmx1c2goKQor
ICAgIHZvaWQgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhdHRhY2htZW50LCB1aW50MzJfdCByZW5kZXJidWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMp
CisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmUyRCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRhcmdldCwgdWludDMyX3QgYXJnMywgaW50MzJfdCBs
ZXZlbCkKKyAgICB2b2lkIEZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgR2VuZXJh
dGVNaXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0QWN0aXZlQXR0cmliKHVpbnQz
Ml90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+
IChib29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
byBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QXR0cmliTG9jYXRpb24odWludDMyX3Qg
YXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBu
YW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFN0
cmluZyh1aW50MzJfdCBuYW1lKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+
IChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
SW50ZWdlcjY0KHVpbnQzMl90IHBuYW1lKSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldEludGVnZXI2NGkodWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGlu
ZGV4KSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFBy
b2dyYW1pKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1
cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1l
LCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3Jh
bUluZm9Mb2codWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlckluZm9Mb2codWlu
dDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJfdCBzaGFkZXJUeXBlLCB1aW50MzJfdCBw
cmVjaXNpb25UeXBlKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZSwg
R0NHTGludCBwcmVjaXNpb24pIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFkZXJTb3VyY2Uo
dWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4g
KGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1
ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBp
bnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1pdih1aW50
MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUpIC0+IChJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
R2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRf
dCB2YWx1ZVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJp
bmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lKSAtPiAo
dWludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBIaW50KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgbW9kZSkKKyAgICB2b2lkIElzQnVmZmVyKHVpbnQzMl90IGFyZzAp
IC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNFbmFibGVkKHVp
bnQzMl90IGNhcCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJ
c0ZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgSXNQcm9ncmFtKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1NoYWRlcih1aW50
MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElz
VGV4dHVyZSh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIExpbmVXaWR0aChmbG9hdCBhcmcwKQorICAgIHZvaWQgTGlua1Byb2dyYW0odWlu
dDMyX3QgYXJnMCkKKyAgICB2b2lkIFBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90
IHBhcmFtKQorICAgIHZvaWQgUG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRz
KQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lk
IFNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB2b2lkIFNjaXNz
b3IoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHZvaWQgU2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIFN0cmluZyBhcmcxKQorICAgIHZv
aWQgU3RlbmNpbEZ1bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2sp
CisgICAgdm9pZCBTdGVuY2lsRnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1
bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2sodWlu
dDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxNYXNrU2VwYXJhdGUodWludDMyX3QgZmFjZSwg
dWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5jaWxPcCh1aW50MzJfdCBmYWlsLCB1aW50MzJf
dCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgdm9pZCBTdGVuY2lsT3BTZXBhcmF0ZSh1aW50
MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3Mp
CisgICAgdm9pZCBUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUs
IGZsb2F0IHBhcmFtKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHZvaWQgVW5pZm9ybTFmKGludDMyX3Qg
bG9jYXRpb24sIGZsb2F0IHgpCisgICAgdm9pZCBVbmlmb3JtMWZ2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtMWkoaW50MzJf
dCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHZvaWQgVW5pZm9ybTFpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtMmYo
aW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lkIFVuaWZvcm0yZnYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lk
IFVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSkKKyAgICB2
b2lkIFVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PiB2KQorICAgIHZvaWQgVW5pZm9ybTNmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBVbmlmb3JtM2Z2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtM2koaW50MzJfdCBs
b2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeikKKyAgICB2b2lkIFVuaWZv
cm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQor
ICAgIHZvaWQgVW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHosIGZsb2F0IHcpCisgICAgdm9pZCBVbmlmb3JtNGZ2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHYpCisgICAgdm9pZCBVbmlmb3JtNGkoaW50MzJfdCBs
b2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAg
IHZvaWQgVW5pZm9ybTRpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lk
IFVuaWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDRmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4gdmFsdWUpCisgICAgdm9pZCBVc2VQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBW
YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYjFmKHVp
bnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHZvaWQgVmVydGV4QXR0cmliMWZ2KHVpbnQzMl90
IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiB2YWx1ZXMpCisgICAgdm9pZCBW
ZXJ0ZXhBdHRyaWIyZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB2b2lk
IFZlcnRleEF0dHJpYjJmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dCwgMj4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZnYodWludDMy
X3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+IHZhbHVlcykKKyAgICB2b2lk
IFZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6
LCBmbG9hdCB3KQorICAgIHZvaWQgVmVydGV4QXR0cmliNGZ2KHVpbnQzMl90IGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJQ
b2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wg
bm9ybWFsaXplZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFZp
ZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyAgICB2b2lkIEJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3QgYXJnMSwg
dWludDMyX3QgdXNhZ2UpCisgICAgdm9pZCBCdWZmZXJEYXRhMSh1aW50MzJfdCB0YXJnZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgdm9p
ZCBCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBSZWFkblBpeGVsczAoaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgUmVhZG5QaXhlbHMx
KGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWlu
dDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBU
ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFn
ZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2Vk
VGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVy
LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQor
ICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMy
X3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1
YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJf
dCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBE
cmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3Qg
Y291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yKHVp
bnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJy
YXkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxl
dGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheSh1aW50
MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJp
bmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgQ29weUJ1ZmZlclN1YkRhdGEo
dWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2NF90IHJlYWRP
ZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0
QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qg
ZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZ
MCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBk
c3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMy
X3QgZmlsdGVyKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90IGxldmVs
LCBpbnQzMl90IGxheWVyKQorICAgIHZvaWQgSW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90
IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMpCisgICAg
dm9pZCBJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgUmVhZEJ1ZmZlcih1aW50MzJf
dCBzcmMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UyRCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdlM0QodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHZvaWQgVGV4SW1hZ2UzRDAo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3Jk
ZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNE
MCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJf
dCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4U3ViSW1hZ2UzRDEodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9m
ZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50
MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgdm9pZCBDb3B5VGV4U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQs
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1h
Z2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMy
X3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQg
Q29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwg
aW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAg
ICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBm
b3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBHZXRG
cmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyBuYW1lKSAtPiAoaW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm0xdWkoaW50MzJfdCBs
b2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgdm9pZCBVbmlmb3JtMnVpKGludDMyX3QgbG9jYXRp
b24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAgICB2b2lkIFVuaWZvcm0zdWkoaW50MzJf
dCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2MikKKyAgICB2
b2lkIFVuaWZvcm00dWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYx
LCB1aW50MzJfdCB2MiwgdWludDMyX3QgdjMpCisgICAgdm9pZCBVbmlmb3JtMXVpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQg
VW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm0zdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtNHVpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQg
VW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4MmZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDN4
NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3QgbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiBkYXRhKQorICAg
IHZvaWQgVmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3Qg
eSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGl2KHVpbnQz
Ml90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+IHZhbHVlcykKKyAgICB2
b2lkIFZlcnRleEF0dHJpYkk0dWkodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90
IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpdih1
aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4gdmFsdWVzKQor
ICAgIHZvaWQgVmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6
ZSwgdWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2
b2lkIERyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50
MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB2b2lkIERyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMp
CisgICAgdm9pZCBDbGVhckJ1ZmZlcml2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVm
ZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFy
QnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZ2KHVpbnQz
Ml90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PiB2YWx1ZXMpCisgICAgdm9pZCBDbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZlciwgaW50MzJf
dCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAgIHZvaWQgQ3Jl
YXRlUXVlcnkoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBEZWxldGVRdWVyeSh1aW50MzJfdCBxdWVyeSkKKyAgICB2b2lkIElzUXVlcnkodWludDMyX3Qg
cXVlcnkpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmVnaW5R
dWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgRW5kUXVlcnko
dWludDMyX3QgdGFyZ2V0KQorICAgIHZvaWQgR2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVNhbXBsZXIo
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVT
YW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBJc1NhbXBsZXIodWludDMyX3Qgc2Ft
cGxlcikgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kU2Ft
cGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgU2FtcGxlclBh
cmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0p
CisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBw
bmFtZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJf
dCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4gKGZsb2F0IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWlu
dDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgRmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MpIC0+ICh1aW50
NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU3luYyh1aW50NjRfdCBh
cmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVN5
bmModWludDY0X3QgYXJnMCkKKyAgICB2b2lkIENsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAs
IHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJf
dCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHZvaWQgR2V0U3luY2kodWludDY0X3QgYXJn
MCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJf
dCBpZCkKKyAgICB2b2lkIElzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQpIC0+IChib29s
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFRyYW5zZm9ybUZlZWRiYWNr
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgdm9pZCBCZWdpblRyYW5zZm9ybUZl
ZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgdm9pZCBFbmRUcmFuc2Zvcm1GZWVk
YmFjaygpCisgICAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dy
YW0sIFZlY3RvcjxTdHJpbmc+IHZhcnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHZv
aWQgR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90
IGluZGV4KSAtPiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMikg
U3luY2hyb25vdXMKKyAgICB2b2lkIFBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQg
UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgQmluZEJ1ZmZlckJhc2UodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHZvaWQgQmlu
ZEJ1ZmZlclJhbmdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1
ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAgIHZvaWQgR2V0VW5pZm9y
bUluZGljZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4gdW5pZm9ybU5hbWVzKSAt
PiAoVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dyYW0sIFZlY3Rvcjx1aW50MzJfdD4gdW5pZm9y
bUluZGljZXMsIHVpbnQzMl90IHBuYW1lKSAtPiAoVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJv
Z3JhbSwgU3RyaW5nIHVuaWZvcm1CbG9ja05hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHBy
b2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tC
aW5kaW5nKQorICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBw
YXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCbGl0RnJhbWVidWZmZXJBTkdMRShp
bnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kx
LCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRz
dFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxl
cywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorICAgIHZvaWQgQ3JlYXRlVmVydGV4QXJyYXlPRVMoKSAtPiAodWludDMyX3QgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBEZWxldGVWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBh
cmcwKQorICAgIHZvaWQgSXNWZXJ0ZXhBcnJheU9FUyh1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50
MzJfdCBhcmcwKQorICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQz
Ml90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJ
bnNlcnRFdmVudE1hcmtlckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFB1c2hHcm91cE1hcmtl
ckVYVChTdHJpbmcgYXJnMCkKKyAgICB2b2lkIFBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB2b2lk
IERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMpCisgICAg
dm9pZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJz
dCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0
eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAg
IHZvaWQgR2V0SW50ZXJuYWxmb3JtYXRpdih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zKSBTeW5jaHJvbm91cworfQorCisjZW5kaWYK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YzQwYzk4
NWNiN2QyNzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdo
dC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgeworCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hIGZpbmFsIDog
cHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0
OworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmln
aHQmJik+JiYpIGZpbmFsOworCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4gb3ZlcnJpZGVzLgorICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgZmluYWw7CisgICAg
dm9pZCBwcmVzZW50KEJ1ZmZlcikgZmluYWw7CisgICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgZmlu
YWw7Citwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpC
dWZmZXIgbV9kaXNwbGF5QnVmZmVyOworfTsKKworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpOworfQorCitSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50
aWZpZXIpCisgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0
aW9uLCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJv
Y2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW46OkJ1ZmZlciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpyZWN5Y2xl
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikK
K3sKKyAgICBBU1NFUlQoIW1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBtX2Rpc3BsYXlC
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Cit9CisKK3ZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OmRldGFjaENsaWVudCgpCit7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9k
aXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
VEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jb250
ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdURk1v
dmUobV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0
OworICAgIGlmIChkaXNwbGF5QnVmZmVyKQorICAgICAgICBzZW5kUmlnaHQgPSBkaXNwbGF5QnVm
ZmVyLT5jcmVhdGVTZW5kUmlnaHQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNl
bmRSaWdodCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjAxNjAyYWY0OTNlYjY3
ZGUzZTYyY2YwZTUwYWMwYTJiOTkyNWYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmgKQEAgLTAsMCArMSwxMTg5IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMgZmls
ZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQorICAg
IHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKTsKKyAgICB9CisgICAgdm9pZCBzeW50aGVz
aXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgIH0KKyAgICB2b2lkIG1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgYWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaFNoYWRl
cih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIH0KKyAgICB2b2lkIGJp
bmRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nJiYg
bmFtZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKGFyZzAs
IGluZGV4LCBuYW1lKTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0
YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIo
dWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFRl
eHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIGJsZW5k
Q29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb24odWludDMyX3QgbW9kZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlvbihtb2RlKTsKKyAgICB9CisgICAgdm9p
ZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFs
cGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUobW9k
ZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEZ1bmModWludDMyX3Qgc2Zh
Y3RvciwgdWludDMyX3QgZGZhY3RvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRG
dW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRl
KHVpbnQzMl90IHNyY1JHQiwgdWludDMyX3QgZHN0UkdCLCB1aW50MzJfdCBzcmNBbHBoYSwgdWlu
dDMyX3QgZHN0QWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRnVuY1NlcGFy
YXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgIH0KKyAgICB2b2lk
IGNoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY2xlYXIodWludDMyX3QgbWFzaykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIobWFzayk7CisgICAgfQorICAgIHZvaWQg
Y2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBo
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7CisgICAgfQorICAgIHZvaWQg
Y2xlYXJTdGVuY2lsKGludDMyX3QgcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJT
dGVuY2lsKHMpOworICAgIH0KKyAgICB2b2lkIGNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVl
biwgYm9vbCBibHVlLCBib29sIGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb2xv
ck1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJlZCksIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihncmVlbiksIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihibHVlKSwgc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KGFscGhhKSk7CisgICAgfQorICAgIHZvaWQgY29tcGlsZVNoYWRlcih1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGFyZzAp
OworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworICAgIH0KKyAgICB2b2lkIGNvcHlU
ZXhTdWJJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1H
TE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlRnJhbWVidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVByb2dyYW0oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUmVuZGVyYnVmZmVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2hhZGVy
KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihh
cmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGNyZWF0ZVRleHR1cmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4
dHVyZSgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgY3VsbEZhY2UodWludDMyX3QgbW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Y3VsbEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlQnVmZmVyKHVpbnQzMl90
IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihhcmcwKTsKKyAg
ICB9CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9p
ZCBkZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVy
KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1
ZmZlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIGRlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZGVsZXRlVGV4dHVyZShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aEZ1bmModWlu
dDMyX3QgZnVuYykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMpOwor
ICAgIH0KKyAgICB2b2lkIGRlcHRoTWFzayhib29sIGZsYWcpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmRlcHRoTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oZmxhZykpOworICAgIH0K
KyAgICB2b2lkIGRlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpOworICAgIH0KKyAgICB2b2lk
IGRldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQg
ZGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGUo
Y2FwKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodWludDMyX3Qg
aW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3
QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1lbnRz
KHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50
LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9p
ZCBlbmFibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGUo
Y2FwKTsKKyAgICB9CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBp
bmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
aW5kZXgpOworICAgIH0KKyAgICB2b2lkIGZpbmlzaCgpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmZpbmlzaCgpOworICAgIH0KKyAgICB2b2lkIGZsdXNoKCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Zmx1c2goKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1
ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsIGFyZzMpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJf
dCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwp
OworICAgIH0KKyAgICB2b2lkIGZyb250RmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CisgICAgfQorICAgIHZvaWQgZ2VuZXJhdGVN
aXBtYXAodWludDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZW5lcmF0
ZU1pcG1hcCh0YXJnZXQpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYih1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBh
cmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUoYXJn
MikpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0odWludDMyX3QgcHJvZ3JhbSwg
dWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0QXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5nJiYgbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3RyaW5nKHVp
bnQzMl90IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
Z2V0RmxvYXR2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19j
YXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2
KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1
ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwg
dWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
NjQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyNjQocG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2Fz
dDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXI2NGko
dWludDMyX3QgcG5hbWUsIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludDY0IHJl
dHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0SW50
ZWdlcjY0aShwbmFtZSwgaW5kZXgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFByb2dyYW1p
KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFBy
b2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEJvb2xlYW52KHVpbnQzMl90IHBuYW1lLCB1aW50
NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5j
ZTxib29sPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NH
TGJvb2xlYW4sIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxib29sPihyZWludGVycHJldF9jYXN0
PGJvb2wqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRFcnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xlbnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1
aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbUluZm9Mb2co
dWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhhcmcwKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKGFyZzAsIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlckluZm9M
b2codWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKGFyZzAp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUs
IHVpbnQzMl90IHByZWNpc2lvblR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90LCAyPiwgaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBzdGQ6OmFycmF5PEdDR0xpbnQsIDI+IHJhbmdlIHsgfTsKKyAgICAgICAg
R0NHTGludCBwcmVjaXNpb24gPSB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUsIHJhbmdlLCAmcHJlY2lzaW9u
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
LCAyPihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihyYW5nZS5kYXRhKCkpLCByYW5nZS5zaXpl
KCkpLCBwcmVjaXNpb24pOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlclNvdXJjZSh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShhcmcwKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lk
IGdldFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtZnYodWludDMyX3QgcHJv
Z3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2YWx1ZShzdGF0aWNfY2Fz
dDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1m
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUu
ZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWl2KHVp
bnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1ZShz
dGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdl
dFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3Qg
dmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dM
dWludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24odWludDMyX3QgYXJnMCwgU3RyaW5n
JiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xzaXplaXB0ciByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBoaW50KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
bW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOworICAg
IH0KKyAgICB2b2lkIGlzQnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
QnVmZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzRW5hYmxlZCh1aW50MzJfdCBjYXAs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzRW5hYmxlZChjYXApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlz
RnJhbWVidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNGcmFtZWJ1ZmZl
cihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1Byb2dyYW0odWludDMyX3QgYXJnMCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+aXNQcm9ncmFtKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUmVu
ZGVyYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUmVuZGVyYnVmZmVy
KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzU2hhZGVyKHVpbnQzMl90IGFyZzAsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmlzU2hhZGVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzVGV4dHVy
ZSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1RleHR1cmUoYXJnMCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgbGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmxpbmVXaWR0aChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBsaW5rUHJvZ3JhbSh1aW50
MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShhcmcwKTsK
KyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlaSh1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJh
bSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsK
KyAgICB9CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7
CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFn
ZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNh
bXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oaW52ZXJ0KSk7Cisg
ICAgfQorICAgIHZvaWQgc2Npc3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNjaXNzb3IoeCwg
eSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgc2hhZGVyU291cmNlKHVpbnQzMl90
IGFyZzAsIFN0cmluZyYmIGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNv
dXJjZShhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsRnVuYyh1aW50MzJfdCBm
dW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2ls
RnVuY1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1
aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuY1NlcGFy
YXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2so
dWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2sobWFz
ayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1
aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFza1NlcGFy
YXRlKGZhY2UsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxPcCh1aW50MzJfdCBmYWls
LCB1aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHN0ZW5j
aWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWls
LCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wU2Vw
YXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJh
bWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFt
KTsKKyAgICB9CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBh
cmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0x
ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51
bmlmb3JtMWYobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xZnYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9uLCBm
bG9hdCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9j
YXRpb24sIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0yZnYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb24sIHgsIHkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0yaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRp
b24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEo
KSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNmKGludDMyX3QgbG9jYXRp
b24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNm
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2koaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3QgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNp
KGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2l2KGludDMyX3Qg
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRp
b24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00ZnYoaW50MzJfdCBsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQz
Ml90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRpKGxv
Y2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGl2KGludDMyX3Qg
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
Pih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxv
YXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3Nl
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUu
ZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZh
bHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVzZVByb2dyYW0odWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAg
dm9pZCB2YWxpZGF0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dmFsaWRhdGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJp
YjFmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPiYmIHZhbHVlcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBtYWtlR0NH
TFNwYW48MT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgp
KSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9h
dCB4LCBmbG9hdCB5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZihp
bmRleCwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiYmIHZhbHVlcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBtYWtlR0NHTFNwYW48Mj4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmRl
eCwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVpbnQzMl90IGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiYmIHZhbHVlcykKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBtYWtlR0NHTFNwYW48Mz4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRy
aWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PiYmIHZhbHVlcykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBtYWtlR0NH
TFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgp
KSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3QgaW5kZXgs
IGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQzMl90IHN0
cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
bm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7Cisg
ICAgfQorICAgIHZvaWQgdmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52aWV3cG9ydCh4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMCh1aW50MzJf
dCB0YXJnZXQsIHVpbnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihh
cmcxKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEsIHVpbnQzMl90IHVzYWdlKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSwgdXNhZ2UpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFy
Z2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGlj
X2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAg
IHZvaWQgcmVhZG5QaXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBk
YXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hh
ciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1f
Y29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBk
YXRhKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgcmVhZG5QaXhlbHMxKGludDMyX3QgeCwgaW50MzJfdCB5LCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4
ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDAodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQz
Ml90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6
ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIHRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVs
cy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2Uy
RDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1h
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7
CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5j
b21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1
aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQg
ZHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90
IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJh
d0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQor
ICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291
bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3Vu
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBkaXZpc29yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29y
KGluZGV4LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVWZXJ0ZXhBcnJheShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVmVy
dGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhBcnJheSh1aW50MzJfdCBh
cmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJl
dHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFyZzApOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRWZXJ0ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5iaW5kVmVydGV4QXJyYXkoYXJnMCk7CisgICAgfQorICAgIHZvaWQgY29weUJ1ZmZl
clN1YkRhdGEodWludDMyX3QgcmVhZFRhcmdldCwgdWludDMyX3Qgd3JpdGVUYXJnZXQsIHVpbnQ2
NF90IHJlYWRPZmZzZXQsIHVpbnQ2NF90IHdyaXRlT2Zmc2V0LCB1aW50NjRfdCBhcmc0KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0
ZVRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0
PEdDR0xpbnRwdHI+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihhcmc0
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQ2NF90IG9mZnNldCwgdWludDY0X3QgZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBWZWN0b3I8R0NHTGNoYXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90Pihk
YXRhU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBkYXRhKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3Jj
WDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3Qg
ZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3Jj
WDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKyAg
ICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMy
X3QgbGF5ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKTsKKyAgICB9Cisg
ICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiYmIGF0dGFjaG1lbnRzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFjaG1lbnRz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50
MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMs
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50
cy5kYXRhKCkpLCBhdHRhY2htZW50cy5zaXplKCkpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICB9CisgICAgdm9pZCByZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+cmVhZEJ1ZmZlcihzcmMpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0
LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZv
aWQgdGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90
IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgdGV4U3RvcmFnZTNEKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlM0QwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQq
PihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleElt
YWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMy
X3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBwaXhlbHMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMy
X3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0
YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvcHlUZXhT
dWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHks
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGlu
dDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFn
ZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBp
bWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3Jt
YXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0
LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUs
IHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGdldEZy
YWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0ydWkoaW50
MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0zdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1
aW50MzJfdCB2MikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2NhdGlv
biwgdjAsIHYxLCB2Mik7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aShpbnQzMl90IGxvY2F0
aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2
MiwgdjMpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aXYo
bG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zdWl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aXYobG9jYXRpb24sIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0x1aW50Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5z
cG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDN4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRy
YW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwg
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRh
KCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KGludDMyX3QgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAg
ICB2b2lkIHZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwgaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4m
JiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYoaW5k
ZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1
ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWkodWludDMyX3Qg
aW5kZXgsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHosIHVpbnQzMl90IHcpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHos
IHcpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXpl
LCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlw
ZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCBkcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBzdGFydCwgdWlu
dDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0
LCBlbmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAg
ICB9CisgICAgdm9pZCBkcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYm
IGJ1ZnMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzKG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNp
emUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBp
bnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2YWx1ZXMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVm
ZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4odmFsdWVz
LmRhdGEoKSksIHZhbHVlcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcnVp
dih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVm
ZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIGNsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZm
ZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVl
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKHVpbnQzMl90IGJ1ZmZl
ciwgaW50MzJfdCBkcmF3YnVmZmVyLCBmbG9hdCBkZXB0aCwgaW50MzJfdCBzdGVuY2lsKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwg
ZGVwdGgsIHN0ZW5jaWwpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVF1ZXJ5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVRdWVyeSh1aW50MzJfdCBxdWVy
eSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUXVlcnkocXVlcnkpOworICAgIH0K
KyAgICB2b2lkIGlzUXVlcnkodWludDMyX3QgcXVlcnksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUXVl
cnkocXVlcnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBxdWVyeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5RdWVyeSh0
YXJnZXQsIHF1ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBlbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldCk7CisgICAgfQorICAg
IHZvaWQgZ2V0UXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeU9iamVj
dHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWlu
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVNhbXBsZXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2FtcGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2FtcGxlcih1aW50MzJfdCBz
YW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTYW1wbGVyKHNhbXBsZXIp
OworICAgIH0KKyAgICB2b2lkIGlzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFNhbXBs
ZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+YmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcik7CisgICAgfQorICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFy
YW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIs
IHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYodWludDMy
X3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOworICAg
IH0KKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIs
IHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90
IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBu
YW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICB2b2lkIGZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZsYWdzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIEdDR0xzeW5jIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+ZmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocmV0dXJuVmFsdWUpKSk7CisgICAgfQorICAgIHZvaWQgaXNTeW5jKHVpbnQ2NF90IGFy
ZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVT
eW5jKHVpbnQ2NF90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVN5bmMo
cmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7
CisgICAgfQorICAgIHZvaWQgY2xpZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3Qg
ZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jbGllbnRXYWl0U3lu
YyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkp
LCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTHVpbnQ2ND4odGltZW91dCkpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgd2FpdFN5bmModWlu
dDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+d2FpdFN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4odGlt
ZW91dCkpOworICAgIH0KKyAgICB2b2lkIGdldFN5bmNpKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90
IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN5bmNpKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5
bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVRyYW5zZm9y
bUZlZWRiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgIH0KKyAgICB2
b2lkIGlzVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVh
biByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlz
VHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5iaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCk7CisgICAgfQorICAgIHZv
aWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUp
OworICAgIH0KKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCB0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYg
dmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUp
OworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBw
cm9ncmFtLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIg
eyB9OworICAgICAgICBtX2NvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9n
cmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYXJn
MikpOworICAgIH0KKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZv
aWQgcmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5y
ZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNl
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVy
KTsKKyAgICB9CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFy
ZzQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGlu
ZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHN0YXRpY19jYXN0
PEdDR0xzaXplaXB0cj4oYXJnNCkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1JbmRpY2Vz
KHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+JiYgdW5pZm9ybU5hbWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBWZWN0b3I8R0NHTHVpbnQ+IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwg
dW5pZm9ybU5hbWVzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKHVpbnQzMl90IHByb2dy
YW0sIFZlY3Rvcjx1aW50MzJfdD4mJiB1bmlmb3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQ+IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1CbG9ja0luZGV4
KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIHVuaWZvcm1CbG9ja05hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5p
Zm9ybUJsb2NrSW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFt
ZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5k
aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJf
dCB1bmlmb3JtQmxvY2tCaW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
QmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5k
aW5nKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBw
cm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2
NF90IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDApOwor
ICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZv
cm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihw
YXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50MzJfdCBzcmNY
MCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBk
c3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMy
X3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuYmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3Jj
WTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAg
ICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVW
ZXJ0ZXhBcnJheU9FUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFy
ZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWxldGVWZXJ0
ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5T0VTKHVpbnQz
Ml90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5
T0VTKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyh1aW50MzJf
dCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmluZFZl
cnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpbnNlcnRF
dmVudE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuaW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCk7CisgICAgfQorICAgIHZv
aWQgcHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5wdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkucG9wR3JvdXBNYXJrZXJFWFQoKTsKKyAgICB9CisgICAgdm9pZCBkcmF3
QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVm
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWlu
dDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291
bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIH0KKyAg
ICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3Qg
Y291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTHZvaWRwdHI+
KG9mZnNldCksIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkaXZpc29yKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4
LCBkaXZpc29yKTsKKyAgICB9CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRf
dCBwYXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdD
R0xpbnQsIDQ+IHBhcmFtcyhzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtc1NpemUpLCAwKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRh
KCkpLCBwYXJhbXMuc2l6ZSgpKSk7CisgICAgfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCBkNmVlMmJjYmNhYjZhNzBlNDJkMGU5ODg0OWFhODEzMDA5NjRj
YTI4Li44OWZiOGFiYWY5YWVjZTA3YzYzNDcwZGEzZGI4M2M4ODMyNmRkM2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNiw2ICsyMTYsNyBAQCBkZWYg
dHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29y
ZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCisgICAgICAg
ICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMnLAogICAgICAgICAnV2ViQ29y
ZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlh
UGxheWVySWRlbnRpZmllcicsCkBAIC0yNDQsNiArMjQ1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fu
bm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6RGlzcGxheUxpbmtP
YnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCiAgICAgICAgICdXZWJL
aXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAg
ICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQnLApAQCAtNTMxLDYgKzUzMyw3IEBAIGRl
ZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdPcHRp
b25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rl
cl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0b3InOiB7
J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzog
WyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMn
OiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29k
ZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsn
IkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1l
bnRDb2RlcnMuaCInXX0sCiAgICAgfQogCiAgICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9QPHRlbXBs
YXRlX25hbWU+Lis/KTwoP1A8cGFyYW1ldGVyX3N0cmluZz4uKyk+JywgdGVtcGxhdGVfc3RyaW5n
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggOWMyNmRiNGU5YTlmNmJhNzJlNDgyMGJiNDA2YzJjZmJkZTExM2U5Yi4uZGEzNzM0Yzg0ZDY1
NGQ4ZDAzY2E3OTI1ZjdiZDc1OTkxM2JjMzRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMjIxLDQgKzMyMjEsODIgQEAgT3B0aW9u
YWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBXVEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKK3ZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbHBoYTsKKyAgICBlbmNv
ZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5j
aWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFudGlhbGlhczsKKyAgICBlbmNvZGVyIDw8
IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRl
cy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJ
Zk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnBvd2Vy
UHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXM7Cisg
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wyOworICAgIGVuY29kZXIgPDwgYXR0cmli
dXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVs
UmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2U7
CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy54ckNvbXBhdGli
bGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5h
bHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3RlbmNpbCkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFudGlh
bGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcykpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVz
LmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxS
YXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mIGFj
dGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLm5hbWU7CisgICAgZW5jb2Rl
ciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9
CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8u
bmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5zaXplKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5mbzsKK30KKworI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1NWUyMTFlMTdjNGJlZGVmMTcwNWQ2Li4xZGFl
OTY5NWYzM2MwOWRjZDdjNTgwMzYwOGUyZDZhYzE2ZTlmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzEsNiArNzEsMTMgQEAKICNpbmNs
dWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBl
c0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBj
bGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIxMCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0
b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczsKKyNlbmRpZgorCiBu
YW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNv
cmQ7CkBAIC04NzMsNiArODg0LDE5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogfTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mKTsKKyAgICBzdGF0aWMgT3B0aW9u
YWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IGRlY29kZShEZWNvZGVy
Jik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsK
QEAgLTEwNDEsNCArMTA2NSwxNiBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZT4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
UG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsKK307CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IGNmMTMxYTkyMWUwODYzNjVkYmY3N2ZhOThlNDFjMWM3NGEzZTdl
MjUuLmFkZDk0OWJhNTA4ZDhlODE0MDg3ZmVkZTdiMDQ4YTNkZWM2Y2Y4NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0x
NTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyQ2Fu
dmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9j
ZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzOworI2lmIEVO
QUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNz
OworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIGVu
Y29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKQEAgLTUxMCw2ICs1MTMsMTAgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVBy
b2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJHTCkK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQ
VVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcikpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZDkxZTQ2MDM4ZjMwOWI1MTMwYmZkZTU4
ZGZmNGE5ZjE4MTk1MWRmZC4uYzIwNjEyMzExNDM1YmY0ZjkyY2YwNmZlNWUxMTIwNWE0YjUxMTJi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wg
c2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wp
CisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5k
aWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wg
c2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzNjBhMzU3MjZmNjcxODQwODQwODc0MDcxMDliODc1
MWIzNDEwMzE2Li41MGNkZTEyYWZhM2FhN2Y3OGMyNzllYzhmYjgxOTc0NGI2ZmIxZWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAog
R1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIu
Y3BwCkBAIC02OTIsMyArNjkzLDUgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKIFdlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisKK1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDRl
YThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJkNmY5NzMuLjE3NmZjOWExNzUwMWJjNTlm
OTY2OTk5MjNhZmNiYWE5M2U4ZDAxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU2LDYg
KzU2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKIAogR1BVUHJv
Y2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2VydmljZUVudHJ5UG9pbnQubW0K
K0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKIEdQ
VVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NN
YWMubW0KIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNw
cApAQCAtNjMsNiArNjQsOCBAQCBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bQogCisKKwogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKIFBsYXRmb3JtL2NsYXNzaWZpZXIv
Y29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKQEAgLTU3NSw2
ICs1NzgsOCBAQCBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250
ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5k
LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjg3LDYgKzY5Miw3IEBAIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcAogU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTliZTk1OTRjNTliYjMyZmZkZDM2YTc1ZTkzODE0M2U1
ODI4YTE4ZS4uZDE0Y2ZmMTM2OGJmYjE3MGE1NTAwODY5NWVjMDIzOGZmNmY3OTliOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03OTQwLDYgKzc5NDAsOSBA
QCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2Fu
dmFzSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVu
ZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9j
ZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZCgp
OwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5j
ZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCk7CisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNl
cygpLnVzZUdQVVByb2Nlc3NGb3JXZWJHTEVuYWJsZWQoKTsKKyNlbmRpZgogCiAgICAgcGFyYW1l
dGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5h
YmxlZCgpOwogI2lmIEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTIxMjUzMGZjNjVl
NzQ3OTAzMTMyNGM0NWQwNDg4MjUyZDFiNGEyNi4uMmRlM2IzYTQ1MWM3ZTFjMjhmZTFjOWMzNzQw
NjFlNmZmMjFjNmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC03MDEsNyArNzAxLDYgQEAKIAkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5
M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVy
cy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5NjZB
MTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5MkE3N0QyMTJC
NkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rp
b24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5j
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM3
NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07CiAJCTJEOTJB
NzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNv
ZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVuY29kZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEOUYx
MEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MTIxMkI2QTcx
MDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtNDM5Miw2ICs0MzkxLDE2IEBACiAJCTdBRkJE
MzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQz
NkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0
MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVG
MDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4
NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjY4NCwxMSArNjY5MywxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZDODEwMDgy
MTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRF
IC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMg
LyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyog
QXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0
YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1l
bnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAg
Ki8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAqLywKLQkJ
CQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJ
MUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlCQzAz
MkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUxMEY0
MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKQEAgLTgzNjAsMTEgKzgzNjksMTYgQEAKIAkJ
CQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRDQkEyNTUz
MDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5
NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKKwkJ
CQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdB
N0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tl
bmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0QUZERUIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJN0I5MDQx
NjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3RjQ5MjQw
OEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQw
OUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8s
CiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oICovLApAQCAtODM4Miw2ICs4Mzk2LDExIEBACiAJCQkJRjQwOTRDQkMyNTUzMDRBRjAw
M0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCQjI1
NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCAqLywKIAkJCQk1NUFE
MDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAor
CQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5
OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLywKKwkJCQk3QjkwNDE2RDI1
NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0
ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZm
ZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUyMTJjNjEyNjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
NGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKK30KKworUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJN
YXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVzc2FnZVJl
Y2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAgICBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAg
ICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3ND
b250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVCdWZmZXIoKTsKKyNlbmRp
ZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwor
fQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgbV9jdXJyZW50V2lk
dGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVw
bHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VS
ZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgYXV0byYgc2MgPSBwbGF0
Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CisgICAgICAgIHNj
LnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOworICAgIH0KKyNl
bHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVw
YXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5
IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgdGhlIHJpZ2h0
IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM0OQorICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAgICBpZiAobV9kaWRJbml0
aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVkIG91dCBiZWZvcmUsIHNv
IGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRF
eHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAgIGZvciAoYXV0byogY2xp
ZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9yY2VDb250
ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0No
YW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50
cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRpbEluaXRp
YWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47Cisg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChj
b25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3lu
Y01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91dCwgc28g
cmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2UgdGhlIGNv
bnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1h
cmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2UgbG9zdCBp
biB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk5ZWRh
MjlmNmRiNWUxODE5NzEzMTc4ZjJhYTUzMWI0ZjVkZDZlMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC0wLDAgKzEsNDExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiBHcmFw
aGljc0NvbnRleHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlvbgorLy8gY29udmVydHMg
dGhlIGludGVyZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdlcyBhbmQgc2VuZHMgdGhl
IG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vzcy4K
Ky8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAs
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVibGljIFdlYkNvcmU6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
UHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eSgpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4K
KyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5h
bDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAg
IHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3JlOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7CisgICAgdm9pZCBub3RpZnlN
YXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5n
ZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OkltYWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsKKworICAgIC8vIEZ1bmN0
aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBi
eSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVy
cm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZp
bmFsOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5hbDsKKyAg
ICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xP
YmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFs
OworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBi
aW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7
CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBH
Q0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRF
cXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBh
cmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpIGZpbmFsOworICAgIHZv
aWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpIGZpbmFsOwor
ICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RS
R0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkgZmluYWw7CisgICAgR0NH
TGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAg
IHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAgIHZvaWQgY2xlYXJDb2xv
cihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dM
Y2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0
aCkgZmluYWw7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBzKSBmaW5hbDsKKyAgICB2
b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9v
bGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjb21waWxlU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOwor
ICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0
Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
U2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VGV4dHVyZSgpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7
CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
dm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZv
aWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQg
ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQgZGVwdGhNYXNrKEdDR0xi
b29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFy
LCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGRp
c2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmluYWw7CisgICAgdm9pZCBk
cmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFibGUoR0NHTGVudW0gY2Fw
KSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4
KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZvaWQgZmx1c2goKSBmaW5h
bDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IGFyZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRm
b3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7CisgICAgdm9pZCBmcm9udEZh
Y2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQ0dMZW51
bSB0YXJnZXQpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFsOworICAg
IGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEF0dHJpYkxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsK
KyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1lKSBmaW5h
bDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0
PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjQo
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRpKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NHTGludCBnZXRQcm9ncmFt
aShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2
b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFs
dWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRQcm9n
cmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChH
Q0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dM
aW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0
U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGZsb2F0
IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7
CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRV
bmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7Cisg
ICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIG1vZGUpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVkKEdDR0xlbnVtIGNhcCkg
ZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkgZmluYWw7
CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOwor
ICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMp
IGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
IGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJv
b2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBz
aGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsK
KyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWlu
dCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFj
ZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAg
IHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2ls
TWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZv
aWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFz
cykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dM
ZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOworICAgIHZv
aWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxv
YXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0x
ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
MWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwg
R0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpIGZpbmFs
OworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihH
Q0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikgZmlu
YWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRm
KEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBH
Q0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVu
dW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGlu
dHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVz
YWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAgIHZvaWQg
YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5h
bDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwor
ICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9p
ZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgZmluYWw7
CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NH
TGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0
ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRh
dGEpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOworICAgIHZv
aWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFt
ZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2ht
ZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmluYWw7Cisg
ICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN0b3Jh
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwor
ICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBm
aW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
em9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
MXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1
aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50
IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0ydWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+
IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2lu
dGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdSYW5nZUVs
ZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZpbmFsOwor
ICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
QnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKSBm
aW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICBHQ0dMYm9v
bGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQgYmVn
aW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOwor
ICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIp
IGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIpIGZpbmFsOworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFs
OworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0
U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMc3luYyBmZW5jZVN5
bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOworICAgIEdD
R0xib29sZWFuIGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVN5
bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMoR0NH
THN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpIGZpbmFs
OworICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBH
Q0dMaW50NjQgdGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dMc3luYyBh
cmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUcmFuc2Zv
cm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRUcmFu
c2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFs
OworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2Rl
KSBmaW5hbDsKKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9p
ZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKSBmaW5hbDsK
KyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICB2b2lk
IHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZVRyYW5zZm9y
bUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikgZmluYWw7CisgICAg
dm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxh
dGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIpIGZp
bmFsOworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBmaW5hbDsK
KyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsK
KyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CisgICAgdm9p
ZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlm
b3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykg
ZmluYWw7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7Cisg
ICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwor
ICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBmaW5hbDsKKyAgICB2
b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7Cisg
ICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkg
ZmluYWw7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29u
c3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25z
dCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSBmaW5h
bDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZz
KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2Rl
LCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZp
bmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xz
aXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICB2b2lkIGdldElu
dGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywg
R0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBnZXRTYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RnJhbWVidWZm
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBm
aW5hbDsKKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9v
bGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmluYWw7CisgICAgdm9pZCBn
ZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdl
dG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmlu
YWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICAvLyBFbmQgb2Yg
bGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCitwcm90ZWN0ZWQ6Cisg
ICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIHZv
aWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBNZXNz
YWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxh
YmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3
YXNMb3N0KCk7CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYp
OworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8vIFRoZSBHQ0dMIHR5cGVz
IG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBn
ZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8
R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMYm9vbGVhbikg
PT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJpdGZp
ZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMYnl0ZSwg
aW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1Ynl0ZSwgdWludDhf
dD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hvcnQsIGludDE2X3Q+KTsK
K3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwgdWludDE2X3Q+KTsKK3N0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJfdD4pOworc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NH
THZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8UGxhdGZvcm1HTE9i
amVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xjaGFyKSA9PSBzaXpl
b2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludDY0KSA9PSBzaXplb2Yo
aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2NCkgPT0gc2l6ZW9mKHVp
bnQ2NF90KSk7CisvLyBHQ0dMc3luYyBhbmQgR0NHTCpwdHIgdHlwZXMgYXJlIHBvaW50ZXJzLiBP
biBzb21lIHBsYXRmb3JtcywgdGhleSBhcmUgMzItYml0LgorLy8gQ3VycmVudGx5IHdlIGhhcmQt
Y29kZSBpdCBieSB1c2luZyA8PSwgYW5kIGFzc3VtZSB0aGF0IHdlIGRvIG5vdCB0cmFuc2ZlciBh
cnJheXMgb2YgdGhlIHR5cGVzLgorc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludHB0cikgPD0g
c2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMc2l6ZWlwdHIpIDw9
IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHZvaWRwdHIpIDw9
IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMpIDw9IHNp
emVvZih1aW50NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRyX3QpKTsK
Ky8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJiMmJjMTAx
MGVmOGVjZDBhZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQor
CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQg
eworICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5n
IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZvaWQgV2Fz
Q2hhbmdlZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dl
bmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY3ZWNmODY1NTZhMDA3M2FmOGY1NTRjZmNmYzBlZjMzOWY2MWU4OWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0NiBAQAor
LyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJn
bC4gRG8gbm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hl
Y2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXpl
R0xFcnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9v
bCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJv
ckxpc3QoKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJv
ckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1
cmUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZVRleHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNo
YWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVj
dCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJn
MCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcx
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJh
bWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBh
cmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRD
b2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBH
Q0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2Rl
QWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJs
ZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBk
ZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JH
QiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVu
Y1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVh
ckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUs
IEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9y
TWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVl
LCBHQ0dMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0
PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+
KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cGlsZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlU
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3Jt
R0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKK3sK
KyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1l
YnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVi
dWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVu
ZGVyYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZl
cigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZl
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVy
ZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJv
Z3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRo
TWFzayhHQ0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uo
ek5lYXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShj
YXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5k
ZXgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJi
dWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0
LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZl
bCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVi
dWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVs
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVV
bmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUlu
Zm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0
ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U3RyaW5nKEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5n
KG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1l
bWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVv
ZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKK3sK
KyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1l
bWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVv
ZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0Pihy
ZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sKKyAgICBp
bnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShw
cm9ncmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJv
Z3JhbWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGJvb2xlYW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVS
ZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1
ZS5idWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJv
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJn
ZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9n
cmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5n
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5cGUsIEdD
R0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7CisgICAgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMyX3QgcHJl
Y2lzaW9uUmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hh
ZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25S
ZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2Vu
ZFJlc3VsdCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCks
IHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJlY2lzaW9u
KQorICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0KK30KKwor
U3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291
cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNv
dXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0
YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQ
YXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQorewor
ICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkK
KyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZT
aXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNw
eSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihp
bnQzMl90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2Nh
dGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVl
LmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90
KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9u
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0
cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNp
emVpcHRyPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFi
bGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1
ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJh
bWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFt
ZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJv
Z3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJv
Z3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW06
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
CitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVy
YnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVy
YnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVl
KTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRl
cihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dD
R0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
aXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChH
Q0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVy
U3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVy
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxl
Q292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291
cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwg
YXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50
IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGlu
dCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBt
YXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVu
Y2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdD
R0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWls
LCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNl
LCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRl
KGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJm
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0
YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBw
bmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
Pih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
MmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24s
IHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMy
X3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9j
YXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJp
eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEp
LCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3Nl
KSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9n
cmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlk
YXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYo
aW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
dmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5k
ZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
dmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0
IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRl
eEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRh
dGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRl
cihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVh
biBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9p
bnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0
cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmll
d3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmll
d3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJn
ZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
LCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6
ZSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEo
dGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVz
dWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1
ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
cGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0
YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQw
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2Vk
VGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9m
ZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0lu
c3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
cmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5z
dGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwg
cHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFy
cmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwg
R0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3
cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRl
VGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVp
bnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5i
dWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBz
cmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGlu
dCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ss
IEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RY
MCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVu
dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVy
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1
ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXll
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJn
ZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3
aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVy
KHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3Rv
cmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2
ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBp
eGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9y
bWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3Jt
YXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2Uz
RDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBi
b3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
TGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9u
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShs
b2NhdGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dCB2MSwgR0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEs
IEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1
aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4
M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bv
c2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
TWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9j
YXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0
YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGko
R0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQg
dykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4
QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
Ykk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4
LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5
LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihp
bmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWlu
dCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZl
cnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBi
dWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZm
ZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1
ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdD
R0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwg
ZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1Bs
YXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnko
KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5
KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVl
cnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUp
Cit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBs
ZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Nh
bXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1w
bGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dM
dWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUs
IHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2Ft
cGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBm
bG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJh
bWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitH
Q0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0g
Y29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3lu
Yz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xib29sZWFu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcwKQorewor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVy
blZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVT
eW5jKEdDR0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMo
R0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCit7
CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50
NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xi
aXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2
NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NH
TGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcw
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlk
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xP
YmplY3QgaWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFj
ayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJn
ZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0g
cHJpbWl0aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJv
Z3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
YXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZv
cm1HTE9iamVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwg
UGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIg
YXJnNCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Qmlu
ZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVpbnQzMl90
PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1l
KQoreworICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHBy
b2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2Nr
SW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9j
a05hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChw
cm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJs
b2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUo
cHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tC
aW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5p
Zm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCit7Cisg
ICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwg
cGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5
KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9m
KGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBH
Q0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgx
LCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZm
ZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwg
ZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQ
bGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRl
eEFycmF5T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5
T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJy
YXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Zl
cnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
VmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0
dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VY
VChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmly
c3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNv
dW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBh
cmFtcykKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5Owor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFt
ZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEludGVybmFsZm9ybWF0aXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHko
cGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2Yo
aW50MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBH
Q0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZs
b2F0KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJv
b2xlYW4qIGRhdGEpIC8vIE5PTElOVAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJh
bSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCog
cGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9
CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1
ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4YzI2MzRl
OWQ1NDkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2ICs5MTYs
MjIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRl
cmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQog
CisjaWYgRU5BQkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxh
eUlEKSBjb25zdAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNl
UmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
VU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmli
dXRlcyk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNlbmRpZgor
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6
YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYw
ZGM4Li4xMjE1ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25z
dCBmaW5hbDsKICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdz
IGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBAIC00MDMs
NiArNDA3LDcgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFt
ZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2Nh
Y2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAgIFdlYlBh
Z2UmIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggYzQ0NjM4ZmVkN2JkMzhkNjFlOTY2Y2NmZTAzNDEyNjM0NjQyNmNmYi4u
OTA0NDA3MjljOTUxMzJhZDc4ZjhhNmIzN2UzOGFjNTI3OTcwNGRlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyNyw2ICs0MjcsOSBAQCBX
ZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJv
Y2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0KICAgICAs
IG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJE
T01JbkdQVVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgeyBw
YXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKFdFQkdM
KQorICAgICwgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hv
dWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFt
ZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAtNzMwLDcg
KzczMyw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAj
ZW5kaWYKLSAgICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0gMSkKICAg
ICAgICAgc2NhbGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAtMzc5OCwx
MCArMzgwMCwxMiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVz
ZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVBy
b2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JE
T01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgJiYgRHJhd2luZ0FyZWE6
OnN1cHBvcnRzR1BVUHJvY2Vzc1JlbmRlcmluZyhtX2RyYXdpbmdBcmVhVHlwZSkpOwogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShtX3Nob3VsZFBs
YXlNZWRpYUluR1BVUHJvY2Vzcyk7Ci0KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQg
d2ViIGZvbnRzIGluIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBpZiAobV9zaG91bGRSZW5kZXJET01J
bkdQVVByb2Nlc3MpCiAgICAgICAgIHNldHRpbmdzLnNldERvd25sb2FkYWJsZUJpbmFyeUZvbnRz
RW5hYmxlZChmYWxzZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQ
cm9jZXNzKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpA
QCAtNjk5OSw2ICs3MDAzLDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJvbml6ZUNPUlNEaXNhYmxp
bmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDT1JTRGlzYWJsaW5nUGF0
dGVybnMobV9pZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyksIDApOwogfQogCisK
ICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNhZ2VNYW5h
Z2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM2MmFkNzdiZTZhZTMyZTBlNjlj
YTkzZWJmYzYyM2VhNWRiY2ZlODQuLmZhMTMzNTRkZGZmMjMyODQ1MGI5YzcyY2RhYzRkY2Y3YWU0
NTRiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTE4MzIsNiArMTgzMiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckNhbnZh
c0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckRPTUluR1BV
UHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vz
cyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV9zaG91bGRSZW5kZXJX
ZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZh
bHNlIH07CiAjZW5kaWYKQEAgLTIxODksNCArMjE5MiwzIEBAIGlubGluZSBib29sIFdlYlBhZ2U6
OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYp
IGNvCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBmMmYyMjgyMmM3YjIyM2ZjYTU5Zjk1NTczZDExZGM5
OWIxMDM0ODExLi41ODJlZTc1ZDk5YTc0MjQyNTRhMzlkYWIyMDZmODQ2MTczNGFkOWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTQyLDYgKzE5NDIsMjAg
QEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5n
UHVycG9zZSBwdXJwb3NlKQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisKKyNpZiBFTkFC
TEUoV0VCR0wpCit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChib29s
IHVzZUdQVVByb2Nlc3NGb3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCA9
IHVzZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VS
ZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlR1BVUHJv
Y2Vzc0ZvcldlYkdMOworfQorCisjZW5kaWYKKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTljNDdkYjRjNDQ3YzBmNGFi
NjI3YzA5NGI1ZjY4ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMyNzY0YzRkODUzNzkwOTBiMmNi
Y2E3M2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNDcsNiAr
MzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJp
bmcoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEoYm9vbCk7CiAgICAg
Ym9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9z
ZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdM
KGJvb2wpOworICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25z
dDsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpAQCAtNjg3LDYgKzY5MSw5IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFsc2UgfTsKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCB7IGZhbHNlIH07Cisj
ZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNWU2OTZhNmJmYmEzYzdmYmVjMjM0MGY5ZmIz
NThhZTkzZjQwOGZjLi5jMDcxZTNhYTZhMmJhYTVmZmY2NTcyYTdmNzQwMzBjNDUyYzBkY2VkIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNz
Q29udGV4dEdMIGZvciBHUFUgcHJvY2Vzcy4KKyAgICAgICAgQ3VycmVudCBpbXBsZW1lbnRhdGlv
biBpcyB1c2luZyBXZWJLaXQgSVBDIGFuZCBpcyBpbmNvbXBsZXRlLgorCisgICAgICAgIEFkZCB0
aGUgY29kZSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgdGhlIGltcGxlbWVudGF0aW9uLiBDdXJyZW50
bHkKKyAgICAgICAgdGhlIGdlbmVyYXRvciBnZW5lcmF0ZXMgYSBXZWJLaXQgSVBDIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgIFRoZSBpbnB1dCBkZWZpbml0aW9uIHRvIHRoZSBnZW5lcmF0b3Ig
aXMgdGhlIHByb3h5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGhlYWRlciBmaWxlcy4KKyAgICAg
ICAgVGhlIG91dHB1dCBvZiB0aGUgZ2VuZXJhdG9yIGlzCisgICAgICAgICAgIC0gV2ViS2l0IElQ
QyBtZXNzYWdlIGRlZmluaXRpb24gZmlsZQorICAgICAgICAgICAtIE1lc3NhZ2Ugc2VuZGVyIGNv
ZGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHJlY2VpdmVyIGFuZCBwYXlsb2FkIGludm9jYXRpb24g
Y29kZQorCisgICAgICAgIFRoZSBnZW5lcmF0b3IgY29udmVydHMgR3JhcGhpY3NDb250ZXh0R0wg
R0NHTCAtcHJlZml4ZWQgdHlwZXMgdG8KKyAgICAgICAgc2l6ZWQgSVBDIHR5cGVzLgorCisgICAg
ICAgIFRoZSBnZW5lcmF0b3IgaXMgaW52b2tlZCBkdXJpbmcgZGV2ZWxvcG1lbnQgdGltZSBhbmQg
dGhlIHJlc3VsdHMgYXJlCisgICAgICAgIHN0b3JlZCBpbiB0aGUgcmVwb3NpdG9yeS4KKworICAg
ICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDogQWRkZWQuCisKIDIwMjAtMTItMDIg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFueSBk
aWZmZXJlbnQgYXNzZXJ0aW9uIGZhaWx1cmVzIG9uIHRoZSBHUFUgcHJvY2VzcyBib3QgYWZ0ZXIg
cjI3MDM2NgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNmI0MjIyOWNm
MmY4MjhjNjZjN2U3YjQxNzczYzJlYmU0NDMxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9T
Y3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTAsMCArMSwxMDQ0IEBACisjIS91c3IvYmlu
L2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIHNvdXJjZSBmaWxlcyBmb3IgV2ViR0wg
R1BVIHByb2Nlc3MgSVBDLgorIworIyBweXRob24zIC1tIGJsYWNrIC1sIDE1MCBUb29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKyMgcHl0aG9uMyAtbSBteXB5IFRvb2xzL1NjcmlwdHMv
Z2VuZXJhdGUtZ3B1cC13ZWJnbAorIworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZW51bQoraW1w
b3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCisK
K2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJdGVyYWJsZSwgQ2FsbGFibGUsIFR1cGxl
LCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJhdG9yLCBDb3VudGVyCisKK3Jvb3RfZGly
ID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50IC8gIi4uIiAvICIuLiIpLnJlc29sdmUo
KQorZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIg
LyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRlbnNpb25zR0wuaCIKKworZnVuY3Rpb25z
X2lucHV0X2ZucyA9IFsKKyAgICByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2Vi
UHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oIgorXQordHlwZXNfaW5wdXRfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktp
dCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oIgorCisKK3RlbXBsYXRlX3ByZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8v
IFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVk
aXQuCisiIiIKK2NvbnRleHRfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJX
ZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIgorY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAo
CisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIi8vIFRoaXMgZmlsZSBzaG91bGQgYmUg
aW5jbHVkZWQgaW4gdGhlIHByaXZhdGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIGltcGxlbWVudGF0aW9ucy4KKyNwcmFnbWEgb25jZQore30KKworIiIiCispCitj
b250ZXh0X21lc3NhZ2VzX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQ
VVByb2Nlc3MiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbiIKK2NvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1i
bGUKKyAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKwor
bWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworICAg
IHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQg
ZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNlbmRpZgorI2lmICFQTEFURk9STShDT0NPQSkK
KyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgor
ICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZv
aWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3t9Cit9fQorCisjZW5kaWYKKworIiIiCisp
CisKK2NvbnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJX
ZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIgorY29udGV4dF9wcm94eV9m
dW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIgor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1l
c3BhY2UgV2ViS2l0IHt7Cit7fQorCit9fQorCisjZW5kaWYKKworIiIiCispCisKKworZGVmIHdy
aXRlX2ZpbGUoZm4sIG5ld19jb250ZW50cyk6CisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4o
Zm4pIGFzIGY6CisgICAgICAgICAgICBpZiBmLnJlYWQoKSA9PSBuZXdfY29udGVudHM6CisgICAg
ICAgICAgICAgICAgcmV0dXJuCisgICAgZXhjZXB0OgorICAgICAgICBwYXNzCisgICAgd2l0aCBv
cGVuKGZuLCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUobmV3X2NvbnRlbnRzKQorCitjbGFz
cyBjcHBfdHlwZShvYmplY3QpOgorICAgIHR5cGVfbmFtZTogc3RyCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyKToKKyAgICAgICAgc2VsZi50eXBlX25hbWUgPSB0eXBl
X25hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBl
X25hbWUKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2Vs
Zi50eXBlX25hbWUpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJl
dHVybiBzZWxmLnR5cGVfbmFtZSA9PSBvdGhlci50eXBlX25hbWUKKworICAgIGRlZiBpc192b2lk
KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSBpbiBbInZvaWQi
LCAiR0NHTHZvaWQiLCAiY29uc3Qgdm9pZCIsICJjb25zdCBHQ0dMdm9pZCJdCisKKyAgICBkZWYg
aXNfY29uc3Qoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lLnN0
YXJ0c3dpdGgoImNvbnN0ICIpCisKKyAgICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19zcGFuKHNl
bGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2R5bmFtaWNf
c3BhbihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19w
b2ludGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlz
X2NvbnN0X3BvaW50ZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAg
ICBkZWYgaXNfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgor
ICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9kZWNheV90eXBlKHNlbGYpIC0+ICdj
cHBfdHlwZSc6CisgICAgICAgIGlmIHNlbGYuaXNfY29uc3QoKToKKyAgICAgICAgICAgIHJldHVy
biBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWVbNjpdKQorICAgICAgICByZXR1cm4gc2VsZgor
CisgICAgZGVmIGdldF9ydmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICBy
ZXR1cm4gZ2V0X2NwcF90eXBlKHNlbGYudHlwZV9uYW1lICsgIiYmIikKKworICAgIGRlZiBnZXRf
cG9pbnRlcl90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3Bw
X3R5cGUoc2VsZi50eXBlX25hbWUgKyAiKiIpCisKK2NsYXNzIGNwcF90eXBlX2NvbnRhaW5lcihj
cHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY29udGFp
bmVyX25hbWUgOiBzdHIsIGNvbnRhaW5lZF90eXBlIDogY3BwX3R5cGUsIGFyaXR5IDogT3B0aW9u
YWxbaW50XSA9IE5vbmUpOgorICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25h
bWUpCisgICAgICAgIHNlbGYuY29udGFpbmVyX25hbWUgPSBjb250YWluZXJfbmFtZQorICAgICAg
ICBzZWxmLmNvbnRhaW5lZF90eXBlID0gY29udGFpbmVkX3R5cGUKKyAgICAgICAgc2VsZi5hcml0
eSA9IGFyaXR5CisgICAgZGVmIGlzX2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICBy
ZXR1cm4gVHJ1ZQorICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVy
biBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIKKyAgICBkZWYgaXNfZHluYW1pY19z
cGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09
ICJHQ0dMU3BhbiIgYW5kIHNlbGYuYXJpdHkgaXMgTm9uZQorICAgIGRlZiBnZXRfY29udGFpbmVy
X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lCisgICAgZGVm
IGdldF9hcml0eShzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICByZXR1cm4gc2VsZi5h
cml0eQorICAgIGRlZiBnZXRfY29udGFpbmVkX3R5cGUoc2VsZikgLT4gY3BwX3R5cGU6CisgICAg
ICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJf
dHlwZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZS5p
c19jb25zdCgpCisKK2RlZiBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0
cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFpbmVyXToKKyAgICBtID0gcmUubWF0Y2gociIo
W1x3Ol0rKTwoLispPiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVy
biBOb25lCisgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCisgICAgdGVtcGxhdGVzID0gbVsyXQor
ICAgIGFyaXR5ID0gTm9uZQorICAgIG0gPSByZS5tYXRjaChyIihbXixdKyksXHMqKFxkKykiLCB0
ZW1wbGF0ZXMpCisgICAgaWYgbToKKyAgICAgICAgdGVtcGxhdGVzID0gbVsxXQorICAgICAgICBh
cml0eSA9IGludChtWzJdKQorICAgIHJldHVybiBjcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1l
LCBjb250YWluZXJfbmFtZSwgZ2V0X2NwcF90eXBlKHRlbXBsYXRlcyksIGFyaXR5KQorCitjbGFz
cyBjcHBfdHlwZV9mdW5jdGlvbihjcHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5
cGVfbmFtZSA6IHN0ciwgcmV0dXJuX3ZhbHVlX3R5cGUgOiBjcHBfdHlwZSwgYXJndW1lbnRfdHlw
ZXMgOiBMaXN0W2NwcF90eXBlXSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5
cGVfbmFtZSkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfdHlwZSAgPSByZXR1cm5fdmFsdWVf
dHlwZQorICAgICAgICBzZWxmLmFyZ3VtZW50X3R5cGVzID0gYXJndW1lbnRfdHlwZXMKKworZGVm
IGNwcF9zcGxpdF9hcmdzX3NwZWNzKGFyZ3Nfc3BlYyA6IHN0cikgLT4gSXRlcmF0b3Jbc3RyXToK
KyAgICAgIyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMzUyNzI0NS9weXRo
b24tc3BsaXQtYnktY29tbWEtc2tpcHBpbmctdGhlLWNvbnRlbnQtaW5zaWRlLXBhcmVudGhlc2Vz
CisgICAgY29tbWEgPSByIiwoPyEoPzpbXjxdKlw8W14+XSpcPikqW148Pl0qXD4pIgorICAgIHJl
dHVybiBmaWx0ZXIoTm9uZSwgW2Euc3RyaXAoKSBmb3IgYSBpbiByZS5zcGxpdChjb21tYSwgYXJn
c19zcGVjLnN0cmlwKCkpXSkKKyAgICAKK2RlZiBjcmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24odHlw
ZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9mdW5jdGlvbl06CisgICAgbSA9IHJl
Lm1hdGNoKHInKC4qKVwoKC4qKVwpJywgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAg
ICByZXR1cm4gTm9uZQorICAgIHJldHVybl92YWx1ZV90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0p
CisgICAgYXJnc190eXBlcyA9IFtnZXRfY3BwX3R5cGUoYSkgZm9yIGEgaW4gY3BwX3NwbGl0X2Fy
Z3Nfc3BlY3MobVsyXSldCisgICAgcmV0dXJuIGNwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSwg
cmV0dXJuX3ZhbHVlX3R5cGUsIGFyZ3NfdHlwZXMpCisgICAgICAgIAorIyBQb2ludGVyIG9yIHJl
ZmVyZXJlbmNlCitjbGFzcyBjcHBfdHlwZV9pbmRpcmVjdChjcHBfdHlwZSk6CisgICAgY2F0ZWdv
cnkgOiBzdHIKKyAgICB2YWx1ZV90eXBlIDogY3BwX3R5cGUKKyAgICAKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjYXRlZ29yeSA6IHN0ciwgdmFsdWVfdHlwZSA6IGNw
cF90eXBlKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAg
ICAgICBzZWxmLmNhdGVnb3J5ID0gY2F0ZWdvcnkKKyAgICAgICAgc2VsZi52YWx1ZV90eXBlID0g
dmFsdWVfdHlwZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlz
X3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQg
bm90IHNlbGYuaXNfY29uc3QoKQorICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJyBhbmQgc2VsZi5pc19jb25zdCgpCisg
ICAgZGVmIGlzX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkg
PT0gJyYnIGFuZCBub3Qgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3J2YWx1ZV9yZWZlcmVu
Y2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJicKKyAgICBkZWYg
Z2V0X3ZhbHVlX3R5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlX3R5cGUKKwor
ZGVmIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFs
W2NwcF90eXBlX2luZGlyZWN0XToKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiYkIiwg
dHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiYk
IiwgdHlwZV9uYW1lKSAKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJl
Y3QodHlwZV9uYW1lLCAnJiYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNo
KHIiY29uc3QgKC4rKSYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0g
cmUubWF0Y2gociIoLispJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJu
IGNwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSwgJyYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisg
ICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3Qg
bToKKyAgICAgICAgbSA9IHJlLm1hdGNoKHIiKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBt
OgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnKicsIGdldF9j
cHBfdHlwZShtWzFdKSkKKyAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIGNwcF9leHByKG9iamVj
dCk6CisgICAgdHlwZTogY3BwX3R5cGUKKyAgICBleHByOiBzdHIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0eXBlOiBjcHBfdHlwZSwgZXhwcjogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0g
dHlwZQorICAgICAgICBzZWxmLmV4cHIgPSBleHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuZXhwcgorCisKK0NwcEV4cHJDb252ZXJ0ZXIgPSBDYWxsYWJs
ZVtbY3BwX2V4cHIsIGNwcF90eXBlXSwgY3BwX2V4cHJdCisKKworZGVmIGNwcF9yZWludGVycHJl
dF9jYXN0X2Zyb21fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUp
IC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNw
cF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcihleHByOiBjcHBfZXhwciwgdHlwZTogY3Bw
X3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0
aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9PihyZWludGVycHJldF9jYXN0PHtzdHIoY2FzdF90aHJv
dWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0dXJuIGNwcF9yZWludGVycHJldF9j
YXN0X2Zyb21fcG9pbnRlcgorCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90
aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhw
ciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X3Rv
X3BvaW50ZXIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAg
ICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYicmVpbnRlcnByZXRfY2FzdDx7dHlwZS50eXBl
X25hbWV9PihzdGF0aWNfY2FzdDx7c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9
KSkiKQorICAgIHJldHVybiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyCisKK2RlZiBj
cHBfc3RhdGljX2Nhc3QoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhw
cjoKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25h
bWV9Pih7c3RyKGV4cHIpfSkiKQorCisKK2RlZiBjcHBfaW1wbGljaXRfY2FzdChleHByOiBjcHBf
ZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcih0
eXBlLCBzdHIoZXhwcikpCisKKworZGVmIGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZl
cnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4
cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgp
LmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlw
ZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8e2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0u
ZGF0YSgpKSwge3N0cihleHByKX0uc2l6ZSgpKSIpCisKK2RlZiB3ZWJraXRfaXBjX3NwYW5fdHJh
bnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5
cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVy
X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAg
IHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qge2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSksIHtzdHIoZXhwcil9
LmJ1ZlNpemUpIikKKworZGVmIGNwcF9tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9l
eHByOgorICAgIHJldHVybiBjcHBfZXhwcihleHByLnR5cGUuZ2V0X3J2YWx1ZV90eXBlKCksIGYi
V1RGTW92ZSh7c3RyKGV4cHIpfSkiKQorCisKK2NwcF90eXBlczogRGljdFtzdHIsIGNwcF90eXBl
XSA9IHt9CisKK2NwcF90eXBlX2NvbnN0cnVjdG9ycyA6IExpc3RbQ2FsbGFibGVbW3N0cl0sIE9w
dGlvbmFsW2NwcF90eXBlXV1dID0gWworICAgIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbiwKKyAg
ICBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVj
dAorXQorCitkZWYgZ2V0X2NwcF90eXBlKHR5cGVfbmFtZTogc3RyKToKKyAgICByID0gY3BwX3R5
cGVzLmdldCh0eXBlX25hbWUsIE5vbmUpCisgICAgaWYgcjoKKyAgICAgICAgcmV0dXJuIHIKKyAg
ICBmb3IgdHlwZV9jb25zdHIgaW4gY3BwX3R5cGVfY29uc3RydWN0b3JzOgorICAgICAgICByID0g
dHlwZV9jb25zdHIodHlwZV9uYW1lKQorICAgICAgICBpZiByOgorICAgICAgICAgICAgYnJlYWsK
KyAgICBpZiBub3QgcjoKKyAgICAgICAgciA9IGNwcF90eXBlKHR5cGVfbmFtZSkKKyAgICBjcHBf
dHlwZXNbdHlwZV9uYW1lXSA9IHIKKyAgICByZXR1cm4gcgorCisKK2NsYXNzIGNwcF9hcmcob2Jq
ZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICB0eXBlOiBjcHBfdHlwZQorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLm5hbWUg
PSBuYW1lCisgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgorICAgICAgICByZXR1cm4gInt9IHt9Ii5mb3JtYXQoc2VsZi50eXBlLCBzZWxmLm5hbWUpCisK
KworY2xhc3MgY3BwX2RlY2wob2JqZWN0KToKKyAgICB0eXBlOiBjcHBfdHlwZQorICAgIG5hbWU6
IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIp
OgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7c3RyKHNlbGYudHlwZSl9
IHtzZWxmLm5hbWV9IgorCisKK2NsYXNzIGNwcF9hcmdfbGlzdChvYmplY3QpOgorICAgIGFyZ3M6
IExpc3RbY3BwX2FyZ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9h
cmddKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworCisgICAgZGVmIG5hbWVzKHNlbGYpOgor
ICAgICAgICByZXR1cm4gIiwgIi5qb2luKGEubmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisKKyAg
ICBkZWYgZXhwcnMoc2VsZik6CisgICAgICAgIHJldHVybiBbY3BwX2V4cHIoYS50eXBlLCBhLm5h
bWUpIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiBkZWNscyhzZWxmKToKKyAgICAgICAg
cmV0dXJuIFtjcHBfZGVjbChhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisg
ICAgZGVmIHR5cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2EudHlwZSBmb3IgYSBpbiBzZWxm
LmFyZ3NdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9p
bihzdHIoYSkgZm9yIGEgaW4gc2VsZi5hcmdzKQorCisKK2NsYXNzIGNwcF9mdW5jKG9iamVjdCk6
CisgICAgbmFtZTogc3RyCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgcmV0dXJuX3R5cGU6
IGNwcF90eXBlCisgICAgaXNfZXh0ZW5zaW9uOiBib29sCisgICAgb3ZlcmxvYWRfc3VmZml4OiBz
dHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBf
dHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246IGJvb2wpOgorICAgICAgICBz
ZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQor
ICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gaXNf
ZXh0ZW5zaW9uCisgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gIiIKKworICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gZiJ7c2VsZi5yZXR1cm5fdHlwZX0ge3NlbGYu
bmFtZX0oe3N0cihzZWxmLmFyZ3MpfSkiCisKKyAgICBkZWYgZ2V0X2FyZ3NfY2F0ZWdvcmllcyhz
ZWxmKSAtPiBUdXBsZVtMaXN0W2NwcF9hcmddLCBMaXN0W2NwcF9hcmddXToKKyAgICAgICAgaW5f
YXJncyA9IFtdCisgICAgICAgIG91dF9hcmdzID0gW10KKyAgICAgICAgZm9yIGEgaW4gc2VsZi5h
cmdzLmFyZ3M6CisgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgIGlmIGEudHlwZS5p
c19wb2ludGVyKCkgb3IgXAorICAgICAgICAgICAgICAgIGEudHlwZS5pc19yZWZlcmVuY2UoKToK
KyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAgIGVsaWYgaXNpbnN0
YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikgYW5kICgoKGEudHlwZS5pc19zcGFuKCkg
b3IgYS50eXBlLmlzX2R5bmFtaWNfc3BhbigpKSBhbmQgbm90IGEudHlwZS5nZXRfY29udGFpbmVk
X3R5cGUoKS5pc19jb25zdCgpKSk6CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluX2FyZ3MgKz0gW2FdCisgICAgICAg
ICAgICAjZm10OiBvbgorICAgICAgICByZXR1cm4gaW5fYXJncywgb3V0X2FyZ3MKKworICAgIGRl
ZiBpc19pbXBsZW1lbnRlZF90eXBlKHNlbGYsIHR5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYg
dHlwZS5pc19jb25zdF9wb2ludGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAg
ICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAg
IyIgaW4gYS50eXBlLnR5cGVfbmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAg
ICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICNpZiAiR0NHTHN5bmMiIGluIHNlbGYucmV0dXJu
X3R5cGUudHlwZV9uYW1lOgorICAgICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBh
bnkoYS5uYW1lID09ICJidWZTaXplIiBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KGEudHlwZS5pc19wb2ludGVyKCkgYW5k
IGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLmlzX3ZvaWQoKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJn
cyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KG5vdCBzZWxmLmlz
X2ltcGxlbWVudGVkX3R5cGUoYS50eXBlKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5fdHlwZS5pc19wb2lu
dGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbm90IHNlbGYuaXNf
aW1wbGVtZW50ZWRfdHlwZShzZWxmLnJldHVybl90eXBlKToKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK3dlYmtpdF9pcGNfdHlwZXM6IERpY3RbY3Bw
X3R5cGUsIGNwcF90eXBlXSA9IHt9CisKK3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyczogRGlj
dFtUdXBsZVtjcHBfdHlwZSwgY3BwX3R5cGVdLCBDcHBFeHByQ29udmVydGVyXSA9IHt9CisKKwor
ZGVmIHdlYmtpdF9pcGNfY29udmVydF9leHByKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlw
ZSkgLT4gY3BwX2V4cHI6CisgICAgIiIiIENvbnZlcnRzIGBleHByYCBvZiB0eXBlIG9mIGBzZWxm
YCB0byBgdHlwZWAgIiIiCisgICAgY29udmVydCA9IHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVy
cy5nZXQoKGV4cHIudHlwZSwgdHlwZSksIE5vbmUpCisgICAgaWYgbm90IGNvbnZlcnQ6CisgICAg
ICAgIGlmIGV4cHIudHlwZSA9PSB0eXBlOgorICAgICAgICAgICAgcmV0dXJuIGV4cHIKKyAgICAg
ICAgY29udmVydCA9IGNwcF9pbXBsaWNpdF9jYXN0CisgICAgcmV0dXJuIGNvbnZlcnQoZXhwciwg
dHlwZSkKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKHR5cGUgOiBj
cHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUu
Z2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X2RlY2F5X3R5cGUoKQorICAgIGFyaXR5ID0gdHlwZS5n
ZXRfYXJpdHkoKQorICAgIHdlYmtpdF9pcGNfZWxlbWVudF90eXBlID0gd2Via2l0X2lwY190eXBl
c1tlbGVtZW50X3R5cGVdIGlmIG5vdCBlbGVtZW50X3R5cGUuaXNfdm9pZCgpIGVsc2UgZ2V0X2Nw
cF90eXBlKCd1aW50OF90JykKKyAgICBpZiBhcml0eSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0
dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2Vs
ZW1lbnRfdHlwZSl9LCB7YXJpdHl9PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6
QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9PiIpCisKKworCitk
ZWYgd2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKHR5cGU6IGNwcF90eXBlX2NvbnRhaW5l
cikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5
cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgaWYgZWxlbWVudF90eXBlLmlzX3ZvaWQoKToKKyAg
ICAgICAgZWxlbWVudF90eXBlID0gZ2V0X2NwcF90eXBlKCdHQ0dMY2hhcicpCisgICAgaWYgdHlw
ZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgaW5saW5lX2NhcGFjaXR5ID0gMTYgaWYgImZs
b2F0IiBpbiBlbGVtZW50X3R5cGUudHlwZV9uYW1lIGVsc2UgNAorICAgICAgICByZXR1cm4gZ2V0
X2NwcF90eXBlKGYiVmVjdG9yPHtzdHIoZWxlbWVudF90eXBlKX0sIHtzdHIoaW5saW5lX2NhcGFj
aXR5KX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYic3RkOjphcnJheTx7c3RyKGVsZW1l
bnRfdHlwZSl9LCB7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4iKQorCitkZWYgd2Via2l0X2lwY19t
YWtlX2djZ2xzcGFuX2NvbnZlcnNpb24oZXhwciA6IGNwcF9leHByLCB0eXBlIDogY3BwX3R5cGVf
Y29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBwb2ludGVyX2Nhc3RfdHlwZSA9IHR5cGUuZ2V0
X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgaWYgdHlwZS5pc19keW5h
bWljX3NwYW4oKToKKyAgICAgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYibWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5k
YXRhKCkpLCB7c3RyKGV4cHIpfS5zaXplKCkpIikKKworICAgIGFzc2VydCh0eXBlLmlzX3NwYW4o
KSkKKyAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW48e3N0cih0eXBlLmdl
dF9hcml0eSgpKX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7
c3RyKGV4cHIpfS5kYXRhKCkpKSIpCisKKyMgU2VlIG1lc3NhZ2VzLnB5IGZ1bmN0aW9uX3BhcmFt
ZXRlcl90eXBlCit3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXMgPSBzZXQoCisgICAgWyJ1aW50OF90
IiwgInVpbnQxNl90IiwgInVpbnQzMl90IiwgInVpbnQ2NF90IiwgImludDhfdCIsICJpbnQxNl90
IiwgImludDMyX3QiLCAiaW50NjRfdCIsICJib29sIiwgImZsb2F0IiwgImRvdWJsZSIgImJvb2wi
XQorKQorCisKK2RlZiB3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHR5cGU6
IGNwcF90eXBlKSAtPiBjcHBfdHlwZToKKyAgICBpZiB0eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRf
aXBjX2J1aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVybiB0eXBlCisgICAgcmV0dXJuIHR5cGUu
Z2V0X3J2YWx1ZV90eXBlKCkKKworCitkZWYgd2Via2l0X2lwY19tb3ZlX2V4cHIoZXhwcjogY3Bw
X2V4cHIpIC0+IGNwcF9leHByOgorICAgIGlmIGV4cHIudHlwZS50eXBlX25hbWUgaW4gd2Via2l0
X2lwY19idWlsdGluX3R5cGVzOgorICAgICAgICByZXR1cm4gZXhwcgorICAgIHJldHVybiBjcHBf
bW92ZV9leHByKGV4cHIpCisKKworZGVmIHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYzogY3BwX2Z1
bmMpOgorICAgIHJldHVybiBmdW5jLm5hbWVbMF0uY2FwaXRhbGl6ZSgpICsgZnVuYy5uYW1lWzE6
XSArIGZ1bmMub3ZlcmxvYWRfc3VmZml4CisKKworY2xhc3Mgd2Via2l0X2lwY19tc2cob2JqZWN0
KToKKyAgICBuYW1lOiBzdHIKKyAgICBpbl9hcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBvdXRfYXJn
czogY3BwX2FyZ19saXN0CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuYzogY3BwX2Z1bmMp
OgorICAgICAgICBzZWxmLm5hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmMpCisgICAgICAg
IGluX2FyZ3MsIG91dF9hcmdzID0gZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAg
aXBjX2luX2FyZ3MgPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSkg
Zm9yIGEgaW4gaW5fYXJnc10KKyAgICAgICAgaXBjX291dF9hcmdzID0gW10KKyAgICAgICAgaWYg
bm90IGZ1bmMucmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgaXBjX291dF9hcmdz
ICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbZnVuYy5yZXR1cm5fdHlwZV0sICJyZXR1cm5W
YWx1ZSIpXQorICAgICAgICBmb3IgYSBpbiBvdXRfYXJnczoKKyAgICAgICAgICAgIGlwY19vdXRf
YXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSldCisgICAg
ICAgICAgICBpZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgaXBj
X2luX2FyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9
U2l6ZSIpXQorICAgICAgICBzZWxmLmluX2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX2luX2FyZ3Mp
CisgICAgICAgIHNlbGYub3V0X2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX291dF9hcmdzKQorCisg
ICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmLm91dF9hcmdzLmFyZ3Mp
OgorICAgICAgICAgICAgcmV0dXJuIGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYu
aW5fYXJncyl9KSAtPiAoe3N0cihzZWxmLm91dF9hcmdzKX0pIFN5bmNocm9ub3VzIgorICAgICAg
ICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIgor
CisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBz
dHIKKyAgICBtc2dfbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJn
czogY3BwX2FyZ19saXN0CisKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2Fs
bF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBy
ZXR1cm5fc3RtdHM6IExpc3Rbc3RyXQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAg
IG91dF9leHByczogTGlzdFtjcHBfZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBf
ZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisgICAg
ICAgIHNlbGYubXNnX25hbWUgPSB3ZWJraXRfaXBjX21zZ19uYW1lKGNwcF9mdW5jKQorICAgICAg
ICBzZWxmLnJldHVybl90eXBlID0gY3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5h
cmdzID0gY3BwX2Z1bmMuYXJncworICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAg
ICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMg
PSBbXQorICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhw
cnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIGluX2FyZ3MsIG91
dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJv
Y2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIHNlbGYucHJv
Y2Vzc19pbl9hcmdzKGluX2FyZ3MpCisgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJncyhvdXRf
YXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2NhbGwoKQorCisgICAgZGVmIHByb2Nlc3NfY2Fs
bChzZWxmKToKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oW3N0cihpKSBmb3IgaSBpbiBz
ZWxmLmluX2V4cHJzXSkKKyAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihvKSBmb3Ig
byBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgaXNfYXN5bmMgPSBzZWxmLnJldHVybl90eXBl
LmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykgPT0gMAorICAgICAgICBpZiBpc19hc3luYzoK
KyAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9l
eHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7IiwKKyAgICAgICAgICAgIF0K
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gIiIKKyAgICAgICAgICAg
IGlmIHNlbGYucG9zdF9jYWxsX3N0bXRzOiAKKyAgICAgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9
ICJhdXRvIHNlbmRSZXN1bHQgPSAiCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3Rt
dHMgPSBbCisgICAgICAgICAgICAgICAgICAgICJpZiAoc2VuZFJlc3VsdCkiICsgKCIgeyIgaWYg
bGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAgICBd
ICsgWyIgICAgIiArIHMgZm9yIHMgaW4gc2VsZi5wb3N0X2NhbGxfc3RtdHNdICsgWworICAgICAg
ICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2Ug
IiIpCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsK
KyAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhw
cnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOyIsCisgICAgICAgICAg
ICBdCisKKworICAgIGRlZiBwcm9jZXNzX2luX2FyZ3Moc2VsZiwgaW5fYXJnczogTGlzdFtjcHBf
YXJnXSk6CisgICAgICAgIGZvciBpIGluIGluX2FyZ3M6CisgICAgICAgICAgICBpZiBpLnR5cGUu
aXNfY29uc3RfcG9pbnRlcigpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBj
X2NvbnZlcnRfZXhwcihjcHBfZXhwcihpLnR5cGUsIGkubmFtZSksIHdlYmtpdF9pcGNfdHlwZXNb
aS50eXBlXSldCisKKyAgICBkZWYgcHJvY2Vzc19vdXRfYXJncyhzZWxmLCBvdXRfYXJnczogTGlz
dFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBvIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaWYg
by50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICB2YWx1ZV90eXBlID0gby50eXBl
LmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUg
PSB3ZWJraXRfaXBjX3R5cGVzW3ZhbHVlX3R5cGVdCisgICAgICAgICAgICAgICAgdiA9IGNwcF9h
cmcod2Via2l0X2lwY192YWx1ZV90eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAg
ICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9
ID0ge3sgfX07Il0KKyAgICAgICAgICAgICAgICBlID0gY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUp
CisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2VdCisgICAgICAgICAgICAgICAg
c2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgICAgICAjZm10OiBvZmYK
KyAgICAgICAgICAgICAgICAgICAgZiJpZiAoe28ubmFtZX0pIiwKKyAgICAgICAgICAgICAgICAg
ICAgZiIgICAgKntvLm5hbWV9ID0ge3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHZhbHVlX3R5
cGUpfTsiCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9uCisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgZWxpZiBvLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQorICAgICAgICAgICAgICAgIGFz
c2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAg
ICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJSZXBs
eSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlw
ZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBb
Y3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpXQorICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19k
eW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3Bw
X2V4cHIoZ2V0X2NwcF90eXBlKCJzaXplX3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCisgICAg
ICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgICAg
ICBmIm1lbWNweSh7by5uYW1lfS5kYXRhLCB7di5uYW1lfS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNp
emUgKiBzaXplb2Yoe3N0cih3ZWJraXRfaXBjX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkpfSkp
OyIKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcihvLnR5cGUsIG8ubmFtZSldCisKKyAgICBkZWYg
cHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAg
ICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBpcGNfcmV0dXJuX3R5cGUg
PSB3ZWJraXRfaXBjX3R5cGVzW3JldHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhw
ciA9IGNwcF9leHByKGlwY19yZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92
YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbcmV0
dXJuX3ZhbHVlX2V4cHJdICsgc2VsZi5vdXRfZXhwcnMKKyAgICAgICAgc2VsZi5yZXR1cm5fc3Rt
dHMgPSBbZiJyZXR1cm4ge3N0cih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVf
ZXhwciwgcmV0dXJuX3R5cGUpKX07Il0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICBub2xpbnQgPSAiIC8vIE5PTElOVCIgaWYgIl8iIGluIHNlbGYubmFtZSBlbHNlICIiCisgICAg
ICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0
bXRzICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKyBzZWxmLnJldHVy
bl9zdG10cykKKyAgICAgICAgcmV0dXJuIGYiIiJcbntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0p
e25vbGludH0KK3t7e2JvZHl9Cit9fSIiIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5
X3BsYWNlaG9sZGVyKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNw
cF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisgICAgYm9keTogTGlzdFtzdHJdCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5u
YW1lID0gY3BwX2Z1bmMubmFtZQorCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBjcHBfZnVu
Yy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisgICAgICAg
IHNlbGYuYm9keSA9IFsibm90SW1wbGVtZW50ZWQoKTsiXQorICAgICAgICBpZiBjcHBfZnVuYy5y
ZXR1cm5fdHlwZS50eXBlX25hbWUgIT0gInZvaWQiOgorICAgICAgICAgICAgc2VsZi5ib2R5ICs9
IFsicmV0dXJuIHsgfTsiXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGlu
dCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9k
eSA9ICJcbntcbiAgICAiICsgIlxuICAgICIuam9pbihzZWxmLmJvZHkpICsgIlxufSIKKyAgICAg
ICAgcmV0dXJuIGYiXG57c3RyKHNlbGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9e2JvZHl9Igor
CisKK2NsYXNzIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6
CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgQysrIGltcGxlbWVudGF0aW9uIGdl
bmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbF0KKyAg
ICB1bmltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyXQorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10sIHVuaW1wbGVtZW50
ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lw
Y19jcHBfcHJveHlfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKyAgICAgICAgc2VsZi51bmltcGxz
ID0gW3dlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKGYpIGZvciBmIGluIHVuaW1wbGVt
ZW50ZWRdCisKKyAgICBkZWYgZ2V0X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJc
biIuam9pbihzdHIoaSkgZm9yIGkgaW4gc2VsZi5pbXBscyArIHNlbGYudW5pbXBscykKKworICAg
IGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAgICAgIGNv
bnRleHRfcHJveHlfZnVuY3Rpb25zX2ZuLAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9mdW5j
dGlvbnNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQor
CisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAg
ICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBpc19leHRlbnNpb246IGJvb2wKKyAgICBwcmVfY2Fs
bF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9j
YWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBv
dXRfZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgcmV0dXJuX3ZhbHVlX2V4cHI6IE9wdGlvbmFs
W2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6
CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5vdmVybG9h
ZF9zdWZmaXggPSBjcHBfZnVuYy5vdmVybG9hZF9zdWZmaXgKKyAgICAgICAgc2VsZi5hcmdzID0g
Y3BwX2FyZ19saXN0KFtdKQorICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlz
X2V4dGVuc2lvbgorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2Vs
Zi5jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAg
ICAgICBzZWxmLmluX2V4cHJzID0gW10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbXQorICAg
ICAgICBzZWxmLnJldHVybl92YWx1ZV9leHByID0gTm9uZQorCisgICAgICAgIHNlbGYucHJvY2Vz
c19yZXR1cm5fdmFsdWUoY3BwX2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIGluX2FyZ3MsIG91
dF9hcmdzID0gY3BwX2Z1bmMuZ2V0X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJv
Y2Vzc19hcmdzKGNwcF9mdW5jLmFyZ3MuYXJncywgc2V0KGluX2FyZ3MpLCBzZXQob3V0X2FyZ3Mp
KQorICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNl
bGYpOgorICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9ucygpLiIgaWYgc2VsZi5pc19leHRlbnNp
b24gZWxzZSAiIgorCisgICAgICAgIGluX2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBp
biBzZWxmLmluX2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IGxlbihzZWxmLm91dF9leHBycykg
PT0gMAorCisgICAgICAgIGNhbGxfZXhwciA9IGYibV9jb250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9
KHtpbl9leHByc30pIgorICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoKKyAg
ICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFtmIntzdHIoc2VsZi5yZXR1cm5f
dmFsdWVfZXhwcil9ID0ge2NhbGxfZXhwcn07Il0KKyAgICAgICAgaWYgbm90IGlzX2FzeW5jOgor
ICAgICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLm91
dF9leHBycykKKyAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFtmImNvbXBsZXRp
b25IYW5kbGVyKHtvdXRfZXhwcnN9KTsiXQorCisgICAgZGVmIHByb2Nlc3NfYXJncyhzZWxmLCBh
cmdzOiBMaXN0W2NwcF9hcmddLCBpbl9hcmdzOiBTZXRbY3BwX2FyZ10sIG91dF9hcmdzOiBTZXRb
Y3BwX2FyZ10pOgorICAgICAgICBmb3IgYSBpbiBhcmdzOgorICAgICAgICAgICAgaWYgYS50eXBl
LmlzX2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAg
ICAgICAgIGlmIGEgaW4gaW5fYXJnczoKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfaW5f
YXJnKGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19v
dXRfYXJnKGEpCisgICAgICAgIGlmIHNlbGYub3V0X2V4cHJzOgorICAgICAgICAgICAgb3V0X2Fy
Z19kZWNscyA9ICIsICIuam9pbihmIntzdHIoZS50eXBlKX0iIGZvciBlIGluIHNlbGYub3V0X2V4
cHJzKQorICAgICAgICAgICAgc2VsZi5hcmdzLmFyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBl
KGYiQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh7b3V0X2FyZ19kZWNsc30pPiYmIiksICJjb21wbGV0
aW9uSGFuZGxlciIpXQorCisgICAgZGVmIHByb2Nlc3NfaW5fYXJnKHNlbGYsIGE6IGNwcF9hcmcp
OgorICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9tZXNz
YWdlX2ZvcndhcmRlcl90eXBlKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSksIGEubmFtZSldCisg
ICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHBy
KHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSwgYS50eXBlKV0KKworICAgIGRlZiBw
cm9jZXNzX291dF9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIGlmIGEudHlwZS5pc19w
b2ludGVyKCk6CisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFs
dWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntzdHIodmFsdWVfYXJnLnR5cGUpfSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0gPSB7eyB9fTsiXQor
ICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoYS50eXBlLCBmIiZ7dmFsdWVf
YXJnLm5hbWV9IildCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZh
bHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0
X2lwY190eXBlc1tlLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0
X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY192YWx1ZV90eXBlKV0KKyAgICAgICAgZWxp
ZiBhLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5j
ZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAgICAgICBzaXplX2FyZyA9IGNw
cF9hcmcoZ2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpCisgICAgICAg
ICAgICBzZWxmLmFyZ3MuYXJncyArPSBbc2l6ZV9hcmddCisgICAgICAgICAgICBzdG9yZV9hcmcg
PSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShhLnR5cGUpLCBhLm5hbWUp
CisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5
cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0oc3RhdGljX2Nhc3Q8c2l6ZV90Pih7YS5uYW1lfVNp
emUpLCAwKTsiXQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVf
YXJnLnR5cGUsIGYie3N0b3JlX2FyZy5uYW1lfSIpXQorICAgICAgICAgICAgd2Via2l0X2lwY190
eXBlID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBy
cyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0
b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNf
c3BhbigpOgorICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9j
b250YWluZXIpKQorICAgICAgICAgICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dl
dF9zcGFuX3N0b3JlX3R5cGUoYS50eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVf
Y2FsbF9zdG10cyArPSBbZiJ7c3RyKHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFt
ZSl9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9y
ZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpXQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
ID0gd2Via2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyAr
PSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3Jl
X2FyZy5uYW1lKSwgd2Via2l0X2lwY190eXBlKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGFzc2VydCBhLnR5cGUuaXNfcmVmZXJlbmNlKCkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZSA9IHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXQorICAgICAgICAgICAgdmFsdWVfYXJnID0gY3Bw
X2FyZyhhLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5w
cmVfY2FsbF9zdG10cyArPSBbZiJ7c2VsZi5ucyh2YWx1ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVf
YXJnLm5hbWUpfSB7eyB9fTsiXQorICAgICAgICAgICAgZSA9IGNwcF9leHByKHZhbHVlX2FyZy50
eXBlLCB2YWx1ZV9hcmcubmFtZSkKKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2VdCisg
ICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0
X2lwY19jb252ZXJ0X2V4cHIoZSwgd2Via2l0X2lwY190eXBlKSldCisKKyAgICBkZWYgcHJvY2Vz
c19yZXR1cm5fdmFsdWUoc2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYg
cmV0dXJuX3R5cGUuaXNfdm9pZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlwY19y
ZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVy
bl92YWx1ZV9leHByID0gY3BwX2V4cHIocmV0dXJuX3R5cGUsICJyZXR1cm5WYWx1ZSIpCisgICAg
ICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3JldHVybl92YWx1ZV9leHByLnR5cGV9IHty
ZXR1cm5fdmFsdWVfZXhwci5leHByfSA9IHt7IH19OyJdCisgICAgICAgIHNlbGYub3V0X2V4cHJz
ICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5f
dmFsdWVfZXhwciwgaXBjX3JldHVybl90eXBlKSldCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVl
X2V4cHIgPSByZXR1cm5fdmFsdWVfZXhwcgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAg
ICAgIGJvZHkgPSAiIi5qb2luKGYiXG4gICAgICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2Fs
bF9zdG10cyArIHNlbGYuY2FsbF9zdG10cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzKQorICAgICAg
ICByZXR1cm4gZiIiIiAgICB2b2lkIHtzZWxmLm5hbWV9e3NlbGYub3ZlcmxvYWRfc3VmZml4fSh7
c3RyKHNlbGYuYXJncyl9KQorICAgIHt7e2JvZHl9CisgICAgfX0iIiIKKworICAgIGRlZiBucyhz
ZWxmLCB0eXBlOiBjcHBfdHlwZSk6CisgICAgICAgICMgVE9ETzogbmFtZXNwYWNlIGluZm8gaXMg
bm90IHN0b3JlZCBpbiBuYW1lcy4KKyAgICAgICAgaWYgdHlwZS50eXBlX25hbWUgPT0gIkFjdGl2
ZUluZm8iOgorICAgICAgICAgICAgcmV0dXJuICJXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
IiArIHN0cih0eXBlKQorICAgICAgICByZXR1cm4gc3RyKHR5cGUpCisKK2RlZiB3ZWJraXRfaXBj
X3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzIDogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAg
ICBjb3VudHMgPSBjb2xsZWN0aW9ucy5Db3VudGVyKGYubmFtZSBmb3IgZiBpbiBmdW5jcykKKyAg
ICBzdWZmaXhlcyA6IENvdW50ZXJbc3RyXSA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoKQorICAgIGZv
ciBmIGluIGZ1bmNzOgorICAgICAgICBpZiBjb3VudHNbZi5uYW1lXSA+IDE6CisgICAgICAgICAg
ICBmLm92ZXJsb2FkX3N1ZmZpeCA9IHN0cihzdWZmaXhlc1tmLm5hbWVdKQorICAgICAgICAgICAg
c3VmZml4ZXMudXBkYXRlKFtmLm5hbWVdKQorCisKK2NsYXNzIGNvbnRleHRfY3BwX3dlYmtpdF9p
cGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIEMrKyBp
bXBsZW1lbnRhdGlvbiBnZW5lcmF0b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3Bw
X2ltcGxdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5j
XSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfaW1wbChmKSBmb3IgZiBp
biBmdW5jc10KKworICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4g
IlxuIi5qb2luKHN0cihpKSBmb3IgaSBpbiBzZWxmLmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRl
KHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlv
bnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2Vs
Zi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3MgY29udGV4dF9tc2dfd2Vi
a2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wg
V2ViS2l0IElQQyBtZXNzYWdlIGRlZmluaXRpb24gZ2VuZXJhdG9yLiIKKyAgICBtc2dzOiBMaXN0
W3dlYmtpdF9pcGNfbXNnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJs
ZVtjcHBfZnVuY10pOgorICAgICAgICBzZWxmLm1zZ3MgPSBbd2Via2l0X2lwY19tc2coZikgZm9y
IGYgaW4gZnVuY3NdCisKKyAgICBkZWYgZ2V0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICByZXR1
cm4gIiIuam9pbihzdHIobSkgZm9yIG0gaW4gc2VsZi5tc2dzKQorCisgICAgZGVmIGdlbmVyYXRl
KHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKGNvbnRleHRfbWVzc2FnZXNfZm4sIGNvbnRleHRf
bWVzc2FnZXNfdGVtcGxhdGUuZm9ybWF0KHNlbGYuZ2V0X21lc3NhZ2VzKCkpKQorCisKK2RlZiBj
cmVhdGVfY3BwX2FyZyhhcmdfc3BlYzogc3RyLCBhcmdfaW5kZXg6IGludCk6CisgICAgciA9IGFy
Z19zcGVjLnJzcGxpdCgiICIsIDEpCisgICAgbmFtZSA9ICIiCisgICAgdHlwZSA9IE5vbmUKKyAg
ICBpZiBsZW4ocikgPiAxIGFuZCByWzBdICE9ICJjb25zdCI6CisgICAgICAgIG5hbWUgPSByWzFd
LnN0cmlwKCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShyWzBdKQorICAgIGVsc2U6Cisg
ICAgICAgIG5hbWUgPSAiYXJne30iLmZvcm1hdChhcmdfaW5kZXgpCisgICAgICAgIHR5cGUgPSBn
ZXRfY3BwX3R5cGUoYXJnX3NwZWMpCisgICAgcmV0dXJuIGNwcF9hcmcodHlwZSwgbmFtZSkKKwor
CitkZWYgY3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzOiBJdGVyYWJsZVtzdHJdKToKKyAg
ICByZXR1cm4gY3BwX2FyZ19saXN0KFtjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5k
ZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nfc3BlY3MpXSkKKworCitkZWYgY3JlYXRl
X2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVjczogTGlzdFtz
dHJdLCBpc19leHRlbnNpb246IGJvb2wpOgorICAgIHJldHVybiBjcHBfZnVuYyhuYW1lPW5hbWUs
IHJldHVybl90eXBlPWdldF9jcHBfdHlwZShyZXR1cm5fc3BlYyksIGFyZ3M9Y3JlYXRlX2NwcF9h
cmdfbGlzdChhcmdzX3NwZWNzKSwgaXNfZXh0ZW5zaW9uPWlzX2V4dGVuc2lvbikKKworCitkZWYg
cmVhZF9saW5lc191bnRpbChsaW5lcyA6IEl0ZXJhYmxlW3N0cl0sIG1hdGNoIDogc3RyKSAtPiBH
ZW5lcmF0b3Jbc3RyLCBOb25lLCBOb25lXToKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAg
ICAgaWYgcmUubWF0Y2gobWF0Y2gsIGxpbmUuc3RyaXAoKSk6CisgICAgICAgICAgICBicmVhawor
ICAgICAgICB5aWVsZCBsaW5lCisKK2RlZiBtYWluKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2Uu
QXJndW1lbnRQYXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10iKQorICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlByaW50IHNv
bWUgZGVidWcgaW5mbyBmcm9tIHRoZSBnZW5lcmF0b3Igc2NyaXB0IikKKyAgICBvcHRpb25zID0g
cGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rp
b25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzLgorCisgICAgIyBG
SVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMgcmVtb3ZlZCwgd2UgbmVlZCB0byBjb21w
bGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICMgd2l0aCB0aGUgZGlzdGluY3Rpb24gb2Yg
d2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBhbiBleHRlbnNpb24gZnVuY3Rpb24uCisg
ICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3RyXSA9IHNldCgpCisgICAgd2l0aCBvcGVu
KGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxp
bmVzKCk6CisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnZpcnR1YWwgKFxTKylccysoXHcr
KVwoKC4qKVwpID0gMDsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAg
ICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAorICAgICAgICAgICAgICAgICAgICBuYW1lPW1bMl0s
CisgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAg
ICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAg
ICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUoW3N0cihmdW5jKV0pCisgICAgZnVuY3Mg
PSBbXQorICAgIHVuaW1wbGVtZW50ZWQgPSBbXQorICAgIGZvciBmbiBpbiBmdW5jdGlvbnNfaW5w
dXRfZm5zOgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9
IGl0ZXIoZi5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIGZvciBfIGluIHJlYWRfbGluZXNfdW50
aWwobGluZXMsICIvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4g
VGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAg
ICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3Vu
dGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNj
cmlwdC4iKToKKyAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2gociJccyooXFMrKVxzKyhcdysp
XCgoLiopXCkgZmluYWw7IiwgbGluZSkKKyAgICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAg
ICAgICAgICAgICBmdW5jX25hbWUgPSBtWzJdCisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBj
cmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAorICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGlu
IGV4dGVuc2lvbl9zaWduYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1w
bGVtZW50ZWQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQor
ICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5pbXBs
ZW1lbnRlZC5hcHBlbmQoZnVuYykKKworCisgICAgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2Fk
X3N1ZmZpeChmdW5jcykKKyAgICAjIEluaXRpYWxpemUgV2ViS2l0IElQQyBnZW5lcmF0aW9uLiBD
b25zdHJ1Y3QgdHlwZSBtYXBwaW5ncyBmb3IgdGhlIHVzZWQgQysrIHR5cGVzIC0+IElQQyB0eXBl
cy4KKyAgICAjIFRPRE86IG5hbWVzcGFjaW5nIGlzc3Vlcy4KKyAgICBhaV90eXBlID0gZ2V0X2Nw
cF90eXBlKCJBY3RpdmVJbmZvJiIpCisgICAgYWlfdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlw
ZSgiV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8iKQorICAgIHdlYmtpdF9p
cGNfdHlwZXNbYWlfdHlwZV0gPSBhaV90cmFuc2Zlcl90eXBlCisKKyAgICB3aXRoIG9wZW4odHlw
ZXNfaW5wdXRfZm4pIGFzIGY6CisgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQor
ICAgICAgICBmb3IgXyBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gVGhlIEdDR0wgdHlw
ZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgcGFzcworICAgICAg
ICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNl
ZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgIG0gPSByZS5t
YXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc3RkOjppc19zYW1lX3Y8KFx3KyksIChcdyspPlwpOyIs
IGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNbZ2V0X2NwcF90eXBlKG1bMV0pXSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRc
KHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAg
ICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQor
ICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAg
ICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBj
cHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRl
cnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgICAgICMgRklYTUU6IEhlcmUgd2UgdXNlIDw9IGluc3RlYWQg
b2YgPT0gZHVlIHRvIHBvaW50ZXJzLCBzdWNoIGFzIEdDR0xzeW5jLCBHQ0dMaW50cHRyLCAuLi4u
CisgICAgICAgICAgICAjIFRoaXMgZW5kcyB1cCBmYWlsaW5nIGlmIHRoZXJlIGV2ZXIgaXMgYXJy
YXlzIG9mIHRoZXNlIHR5cGVzLCBzaW5jZSBhcnJheXMgYXJlIGN1cnJlbnRseQorICAgICAgICAg
ICAgIyByZWludGVycHJldC1jYXN0ZWQuCisgICAgICAgICAgICAjIFdlYktpdCBJUEMgcmVxdWly
ZXMgb25lIHNpemVkIHR5cGUsIGJ1dCB0aGUgc2l6ZSBvZiB0aGVzZSBwb2ludGVyLWJhc2VkIHZh
bHVlcyB3aWxsIGNoYW5nZQorICAgICAgICAgICAgIyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0uCisg
ICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3Kylc
KSA8PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAg
ICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAg
IGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lw
Y190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QK
KyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBj
cHBfdHlwZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwp
IDw9IHNpemVvZlwoKFx3KylcKSAmJiBzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwp
XCk7IiwgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUg
PSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBf
dHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNwcF9jYXN0X3Rocm91Z2hfdHlwZSA9IGdldF9j
cHBfdHlwZShtWzRdKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVd
ID0gaXBjX3R5cGUKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNb
KGNwcF90eXBlLCBpcGNfdHlwZSldID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVy
X3Rocm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9p
cGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfcmVpbnRlcnBy
ZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAjIEZvciBhbGwgdHlwZXMgaW4gdGhlIGlucHV0IEFQ
SSwgZm9ybSBjb3JyZXNwb25kaW5nIElQQyB0eXBlcyBhbmQgY29udmVyc2lvbnMuCisgICAgIyBU
T0RPOiB0aGlzIGlzIG5vdCBkcml2ZW4gYnkgdGhlIHR5cGluZy4KKyAgICBhbGxfdHlwZXMgPSBz
ZXQoKQorICAgIGZvciBmdW5jIGluIGZ1bmNzOgorICAgICAgIGFsbF90eXBlcy51cGRhdGUoZnVu
Yy5hcmdzLnR5cGVzKCkgKyBbZnVuYy5yZXR1cm5fdHlwZV0pCisgICAgIyBTb3J0IGJ5IGxlbiBz
byB0aGF0IHRlbXBsYXRlIGFyZ3MgY29tZSBiZWZvcmUgdGVtcGxhdGVzLgorICAgIGZvciBjcHBf
dHlwZSBpbiBzb3J0ZWQoYWxsX3R5cGVzLCBrZXk9bGFtYmRhIHg6IGxlbih4LnR5cGVfbmFtZSkp
OgorICAgICAgICBpZiBjcHBfdHlwZSBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAg
Y29udGludWUKKyAgICAgIAorICAgICAgICBpZiBjcHBfdHlwZS5pc19keW5hbWljX3NwYW4oKSBv
ciBjcHBfdHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gd2Via2l0
X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAg
ICAgICAgICAgIGlmIGNwcF90eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCk6Cisg
ICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJh
bnNmZXJfdHlwZSldID0gd2Via2l0X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRf
Y2FzdF9jb252ZXJzaW9uCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0
ZXJzWyh0cmFuc2Zlcl90eXBlLCBjcHBfdHlwZSldID0gd2Via2l0X2lwY19tYWtlX2djZ2xzcGFu
X2NvbnZlcnNpb24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RvcmVfdHlw
ZSA9IHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAg
ICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHN0b3JlX3R5cGUsIHRyYW5zZmVyX3R5
cGUpXSA9IGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgZWxp
ZiBjcHBfdHlwZS5pc19yZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5pc19jb25zdF9yZWZlcmVuY2Uo
KSBvciBjcHBfdHlwZS5pc19jb250YWluZXIoKToKKyAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBj
cHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpIGlmIG5vdCBjcHBfdHlwZS5pc19jb250YWluZXIoKSBl
bHNlIGNwcF90eXBlCisgICAgICAgICAgICBpZiB2YWx1ZV90eXBlLmlzX2NvbnRhaW5lcigpOgor
ICAgICAgICAgICAgICAgIGNvbnRhaW5lZF90eXBlID0gdmFsdWVfdHlwZS5nZXRfY29udGFpbmVk
X3R5cGUoKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUgPSB3ZWJr
aXRfaXBjX3R5cGVzW2NvbnRhaW5lZF90eXBlXQorICAgICAgICAgICAgICAgIGlmIHdlYmtpdF9p
cGNfY29udGFpbmVkX3R5cGUgPT0gY29udGFpbmVkX3R5cGU6CisgICAgICAgICAgICAgICAgICAg
IHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUo
ZiJ7dmFsdWVfdHlwZS5nZXRfY29udGFpbmVyX25hbWUoKX08e3N0cih3ZWJraXRfaXBjX2NvbnRh
aW5lZF90eXBlKX0+IikKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBf
dHlwZV0gPSB0cmFuc2Zlcl90eXBlCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogSGVyZSBt
aWdodCBiZSBjYXNlIHdoZXJlIFZlY3RvcjxHQ0dMaW50PiB3YXMgdXNlZCBpbiB0aGUgaW50ZXJm
YWNlIGFuZCBWZWN0b3I8aW50MzJfdD4gaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICAjIGlu
IHRoZSBJUEMgZGVmaW5pdGlvbi4gVGhlcmUgaXMgbm8gc2Vuc2libGUgd2F5IHRvIGRvIHRoaXMg
YXQgdGhlIG1vbWVudC4gV2UgZG8gbm90IGNvbnZlcnQsIHJhdGhlcgorICAgICAgICAgICAgICAg
ICAgICAjIGV4cGVjdCB0aGF0IGFsbCB0aGUgaW52b2NhdGlvbnMgYXJlIHRha2VuIGNhcmUgb2Yg
dGhlIGZhY3QgdGhhdCBHQ0dMaW50IGlzIHRoZSBzYW1lIHR5cGUgYXMgaW50MzJfdC4KKyAgICAg
ICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgbm90IGhvbGQgZm9yIGFsbCB0eXBlcyBzdWNoIGFz
IEdDR0xib29sZWFuLgorICAgICAgICAgICAgICAgICAgICAjd2Via2l0X2lwY190eXBlc19jb252
ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3JlaW50ZXJwcmV0
X2Nhc3RfY29udmVyc2lvbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHZhbHVlX3R5cGUKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5
cGUoKQorICAgIAorICAgICMgVGhlIGlucHV0IHRvIHRoZSBnZW5lcmF0b3JzIGlzIGxpc3Qgb2Yg
ZnVuY3Rpb25zIHRvIHJlbW90ZS4KKyAgICAjIFJ1biB0aGUgdmFyaW91cyBnZW5lcmF0b3JzLgor
ICAgIGdlbmVyYXRvcnMgPSBbCisgICAgICAgIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNf
Z2VuZXJhdG9yKGZ1bmNzLCB1bmltcGxlbWVudGVkKSwKKyAgICAgICAgY29udGV4dF9tc2dfd2Vi
a2l0X2lwY19nZW5lcmF0b3IoZnVuY3MpLAorICAgICAgICBjb250ZXh0X2NwcF93ZWJraXRfaXBj
X2dlbmVyYXRvcihmdW5jcyksCisgICAgXQorICAgIGZvciBnIGluIGdlbmVyYXRvcnM6CisgICAg
ICAgIGcuZ2VuZXJhdGUoKQorCisgICAgaWYgb3B0aW9ucy52ZXJib3NlOgorICAgICAgICBwcmlu
dCgiSW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIuam9pbihmIiAgICB7c3RyKGkpfSBm
aW5hbFxuIiBmb3IgaSBpbiBmdW5jcykpCisgICAgICAgIHByaW50KCJVbmltcGxlbWVudGVkOiIp
CisgICAgICAgIHByaW50KCIiLmpvaW4oZiIgICAge3N0cih1KX0gZmluYWxcbiIgZm9yIHUgaW4g
dW5pbXBsZW1lbnRlZCkpCisgICAgICAgIHByaW50KGYiSW1wbGVtZW50ZWQ6IHtsZW4oZnVuY3Mp
fSwgdW5pbXBsZW1lbnRlZDoge2xlbih1bmltcGxlbWVudGVkKX0sIHRvdGFsOiB7bGVuKGZ1bmNz
KStsZW4odW5pbXBsZW1lbnRlZCl9IikKKyAgICAgICAgcHJpbnQoIkMrKyB0eXBlIG1hcCB0byBX
ZWJLaXQgSVBDIHR5cGUgbWFwOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNwcF90eXBlcy5pdGVt
cygpOgorICAgICAgICAgICAgaWYgdCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAg
ICAgIHByaW50KGYiICAgIHtzdHIodCl9IC0+IHtzdHIod2Via2l0X2lwY190eXBlc1t0XSl9IikK
KyAgICAgICAgcHJpbnQoIkMrKyB0eXBlcyB3aXRob3V0IFdlYktpdCBJUEMgdHlwZToiKQorICAg
ICAgICBmb3IgXywgdCBpbiBjcHBfdHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgbm90
IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cih0
KX0iKQorICAgICAgICBwcmludCgiV2ViS2l0IElQQyB0eXBlIGNvbnZlcnNpb25zIikKKyAgICAg
ICAgZm9yIChhLCBiKSwgY29udmVydGVyIGluIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5p
dGVtcygpOgorICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cihhKX0gLT4ge3N0cihiKX0gOiB7
Y29udmVydGVyLl9fbmFtZV9ffSIpCisgICAgICAgIHByaW50KCJEb25lLiIpCisgICAgcmV0dXJu
IDAKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KG1haW4oKSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyODA0YjBlMmE0ZmQ5Y2M2ZTAyNTY5MDAxNzI0MGZmZjRiMGEwNTYwLi41YzEzMmI2
YjFlN2I3MTAwNTJhMGZmNGNhOGUzY2UzZjBmZGMyYjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdy
YXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1l
bnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEFkZHMgdGVzdCBleHBlY3Rh
dGlvbnMgZm9yIHRoZSBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkuIERvZXMgbm90IHlldAorICAgICAg
ICBlbmFibGUgdGhlIHRlc3RzIHRoYXQgYWN0dWFsbHkgcGFzcyBidXQgd2hpY2ggd2VyZSBza2lw
cGVkIGJlZm9yZSB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBncHUt
cHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTEyLTAyICBEaWVnbyBQaW5vIEdhcmNp
YSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gVW5yZXZpZXdlZCB0ZXN0IGdh
cmRlbmluZy4gR2FyZGVuZWQgc2V2ZXJhbCBmbGFreSB0aW1lb3V0IGZhaWx1cmVzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4
NTMwNTgwMDMzOTBmZDc1MzdkYzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBhMmQ0NjcyNjNj
NzA4Yzk0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0z
MTcsNiArMzE3LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVt
b3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmds
IFsgU2tpcCBdCiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAor
d2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlw
WS1mYWxzZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dl
YmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZp
Z3VyYXRpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93
ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEt
dGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dl
YmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdl
YmdwdSBbIFNraXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlw
ZXMuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415724</attachid>
            <date>2020-12-09 00:05:07 -0800</date>
            <delta_ts>2020-12-09 01:21:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201209100504.patch</filename>
            <type>text/plain</type>
            <size>413096</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlkMjMwZTAzYjhlZTE5
NjcxY2Q2NDUwYjhmYTdhYWFmZTFmZjc5Zi4uNThiMTgwOTc4ZGZlYjUwYTU1NTFkNjUwN2I5ZDdm
N2UwZDNlNTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50
cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZv
ciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBX
ZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxlbWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0
IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBhc3MgdGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4
dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBmcm9tIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAg
ICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBpcyBydW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUg
YW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBjb21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVh
c2Ugb2YgcmV2aWV3LgorCisgICAgICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1p
dCBJT1N1cmZhY2VzIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3
ZWIgcHJvY2VzcyBXZWJHTCwgdGhlc2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNz
IFdlYkdMLAorICAgICAgICB0aGUgSU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3Bs
YXkgY2FsbGVyLCBlLmcuIHRoZQorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hp
Y2ggdGhlbiByZXR1cm4gdGhlIElPU3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2Vz
cyBzaWRlLiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0
aGVtIHRvIFdlYkdMTGF5ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhp
c3Rpbmcgd2ViZ2wgdGVzdHMgb25jZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4
QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UXVlcnlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQ
cm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAg
ICAgICAgKEdDR0xTcGFuPEdDR0x2b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBs
YXRmb3JtVGV4dHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJl
ZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRl
eHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNU
b0F1dG9DbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9u
c0dMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9i
amVjdHVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
YW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlh
bGl6ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y3JlYXRlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVGb3JHUFVQcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZl
ckJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFs
bG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmFzQ1YpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnBsYXRmb3JtU3dhcENoYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbToKKyAgICAgICAgKC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0
aW86Y29udGVudHNPcGFxdWU6XSk6CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1b
V2ViR0xMYXllciBkaXNwbGF5XSk6CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVz
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1
ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIw
LTEyLTA4ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIEFkZCBtaXNzaW5nIExGQyBndWFyZHMgYXJvdW5kIExpbmVMYXlvdXQgdXNhZ2UgZnJv
bSByMjcwNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmNTVjZTliNjFkYjMzZThhMzU1ODQ4NzdiOTAwMmU5YTlk
NjQxMzIuLmU3OTdmMzExNzA3ZjMxY2Y4ZWQ2MDllNDFhNzc4OWZiZTdlY2MzNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNzQyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2
ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxl
bWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBh
c3MgdGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBm
cm9tIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAgICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBp
cyBydW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAg
ICBjb21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVhc2Ugb2YgcmV2aWV3LgorCisgICAgICAgIElt
cGxlbWVudCB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gV2ViS2l0IHNpZGUuIFRoaXMg
Y2xhc3Mgd2lsbAorICAgICAgICBmb3J3YXJkIGNhbGxzIHJlY2VpdmVkIHZpYSBJUEMgdG8gdGhl
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLiBBdCB0aGUKKyAgICAgICAgbW9tZW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIGluc3RhbmNlIGlzIGEgZGlyZWN0IGNoaWxkIG9mCisgICAgICAgIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisKKyAgICAgICAgQ29tcG9zaXRpbmcgaXMgaW1wbGVt
ZW50ZWQgb25seSBmb3IgUExBVEZPUk0oQ09DT0EpLgorCisgICAgICAgIE1pc3Npbmc6CisgICAg
ICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGxvc3MKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNvbnRl
eHQgY2hhbmdlCisgICAgICAgICAtIFBhaW50IFdlYkdMIGNvbnRlbnRzIHRvIDJEIGNhbnZhcwor
ICAgICAgICAgLSBVcGxvYWQgdmlkZW8gdG8gV2ViR0wKKyAgICAgICAgIC0gVXBsb2FkIGNhbnZh
cyB0byBXZWJHTAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBo
aWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cmVjeWNsZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpwcmVzZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmRldGFjaENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6IEFkZGVkLgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDogQWRkZWQuCisgICAgICAgIChzZXRGYWls
TmV4dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKHN5bnRoZXNpemVHTEVycm9yKToKKyAgICAg
ICAgKG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChhY3RpdmVUZXh0
dXJlKToKKyAgICAgICAgKGF0dGFjaFNoYWRlcik6CisgICAgICAgIChiaW5kQXR0cmliTG9jYXRp
b24pOgorICAgICAgICAoYmluZEJ1ZmZlcik6CisgICAgICAgIChiaW5kRnJhbWVidWZmZXIpOgor
ICAgICAgICAoYmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChiaW5kVGV4dHVyZSk6CisgICAg
ICAgIChibGVuZENvbG9yKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb24pOgorICAgICAgICAoYmxl
bmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKGJsZW5kRnVuYyk6CisgICAgICAgIChibGVu
ZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAg
ICAgKGNsZWFyKToKKyAgICAgICAgKGNsZWFyQ29sb3IpOgorICAgICAgICAoY2xlYXJEZXB0aCk6
CisgICAgICAgIChjbGVhclN0ZW5jaWwpOgorICAgICAgICAoY29sb3JNYXNrKToKKyAgICAgICAg
KGNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoY29weVRleEltYWdlMkQpOgorICAgICAgICAoY29w
eVRleFN1YkltYWdlMkQpOgorICAgICAgICAoY3JlYXRlQnVmZmVyKToKKyAgICAgICAgKGNyZWF0
ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoY3JlYXRl
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVNoYWRlcik6CisgICAgICAgIChjcmVhdGVU
ZXh0dXJlKToKKyAgICAgICAgKGN1bGxGYWNlKToKKyAgICAgICAgKGRlbGV0ZUJ1ZmZlcik6Cisg
ICAgICAgIChkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChkZWxldGVQcm9ncmFtKToKKyAg
ICAgICAgKGRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChkZWxldGVTaGFkZXIpOgorICAg
ICAgICAoZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChkZXB0aEZ1bmMpOgorICAgICAgICAoZGVw
dGhNYXNrKToKKyAgICAgICAgKGRlcHRoUmFuZ2UpOgorICAgICAgICAoZGV0YWNoU2hhZGVyKToK
KyAgICAgICAgKGRpc2FibGUpOgorICAgICAgICAoZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToK
KyAgICAgICAgKGRyYXdBcnJheXMpOgorICAgICAgICAoZHJhd0VsZW1lbnRzKToKKyAgICAgICAg
KGVuYWJsZSk6CisgICAgICAgIChlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChm
aW5pc2gpOgorICAgICAgICAoZmx1c2gpOgorICAgICAgICAoZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoZnJvbnRGYWNl
KToKKyAgICAgICAgKGdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKGdldEFjdGl2ZUF0dHJpYik6
CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKGdldEF0dHJpYkxvY2F0aW9u
KToKKyAgICAgICAgKGdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0U3RyaW5nKToK
KyAgICAgICAgKGdldEZsb2F0dik6CisgICAgICAgIChnZXRJbnRlZ2Vydik6CisgICAgICAgIChn
ZXRJbnRlZ2VyNjQpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChnZXRQcm9n
cmFtaSk6CisgICAgICAgIChnZXRCb29sZWFudik6CisgICAgICAgIChnZXRFcnJvcik6CisgICAg
ICAgIChnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFBy
b2dyYW1JbmZvTG9nKToKKyAgICAgICAgKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAg
KGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChnZXRTaGFkZXJTb3VyY2UpOgor
ICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRUZXhQYXJhbWV0ZXJpKToK
KyAgICAgICAgKGdldFVuaWZvcm1mdik6CisgICAgICAgIChnZXRVbmlmb3JtaXYpOgorICAgICAg
ICAoZ2V0VW5pZm9ybXVpdik6CisgICAgICAgIChnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAg
ICAoZ2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAgKGhpbnQpOgorICAgICAgICAoaXNC
dWZmZXIpOgorICAgICAgICAoaXNFbmFibGVkKToKKyAgICAgICAgKGlzRnJhbWVidWZmZXIpOgor
ICAgICAgICAoaXNQcm9ncmFtKToKKyAgICAgICAgKGlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAg
KGlzU2hhZGVyKToKKyAgICAgICAgKGlzVGV4dHVyZSk6CisgICAgICAgIChsaW5lV2lkdGgpOgor
ICAgICAgICAobGlua1Byb2dyYW0pOgorICAgICAgICAocGl4ZWxTdG9yZWkpOgorICAgICAgICAo
cG9seWdvbk9mZnNldCk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAg
KHNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAgKHNjaXNzb3IpOgorICAgICAgICAoc2hhZGVyU291
cmNlKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jU2VwYXJh
dGUpOgorICAgICAgICAoc3RlbmNpbE1hc2spOgorICAgICAgICAoc3RlbmNpbE1hc2tTZXBhcmF0
ZSk6CisgICAgICAgIChzdGVuY2lsT3ApOgorICAgICAgICAoc3RlbmNpbE9wU2VwYXJhdGUpOgor
ICAgICAgICAodGV4UGFyYW1ldGVyZik6CisgICAgICAgICh0ZXhQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKHVuaWZvcm0xZik6CisgICAgICAgICh1bmlmb3JtMWZ2KToKKyAgICAgICAgKHVuaWZvcm0x
aSk6CisgICAgICAgICh1bmlmb3JtMWl2KToKKyAgICAgICAgKHVuaWZvcm0yZik6CisgICAgICAg
ICh1bmlmb3JtMmZ2KToKKyAgICAgICAgKHVuaWZvcm0yaSk6CisgICAgICAgICh1bmlmb3JtMml2
KToKKyAgICAgICAgKHVuaWZvcm0zZik6CisgICAgICAgICh1bmlmb3JtM2Z2KToKKyAgICAgICAg
KHVuaWZvcm0zaSk6CisgICAgICAgICh1bmlmb3JtM2l2KToKKyAgICAgICAgKHVuaWZvcm00Zik6
CisgICAgICAgICh1bmlmb3JtNGZ2KToKKyAgICAgICAgKHVuaWZvcm00aSk6CisgICAgICAgICh1
bmlmb3JtNGl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAodW5pZm9y
bU1hdHJpeDNmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKHVzZVBy
b2dyYW0pOgorICAgICAgICAodmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjFmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjFmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIy
Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAodmVydGV4QXR0cmliM2Yp
OgorICAgICAgICAodmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjRmKToK
KyAgICAgICAgKHZlcnRleEF0dHJpYjRmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJQb2ludGVy
KToKKyAgICAgICAgKHZpZXdwb3J0KToKKyAgICAgICAgKGJ1ZmZlckRhdGEwKToKKyAgICAgICAg
KGJ1ZmZlckRhdGExKToKKyAgICAgICAgKGJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAocmVhZG5Q
aXhlbHMwKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMSk6CisgICAgICAgICh0ZXhJbWFnZTJEMCk6
CisgICAgICAgICh0ZXhJbWFnZTJEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTJEMCk6CisgICAg
ICAgICh0ZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UyRDApOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEpOgorICAgICAg
ICAoZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChkcmF3RWxlbWVudHNJbnN0YW5jZWQp
OgorICAgICAgICAodmVydGV4QXR0cmliRGl2aXNvcik6CisgICAgICAgIChjcmVhdGVWZXJ0ZXhB
cnJheSk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChpc1ZlcnRleEFy
cmF5KToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAgIChjb3B5QnVmZmVyU3Vi
RGF0YSk6CisgICAgICAgIChnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChpbnZh
bGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToK
KyAgICAgICAgKHJlYWRCdWZmZXIpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKToKKyAgICAgICAgKHRleFN0b3JhZ2UyRCk6CisgICAgICAgICh0ZXhTdG9yYWdlM0Qp
OgorICAgICAgICAodGV4SW1hZ2UzRDApOgorICAgICAgICAodGV4SW1hZ2UzRDEpOgorICAgICAg
ICAodGV4U3ViSW1hZ2UzRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAo
Y29weVRleFN1YkltYWdlM0QpOgorICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlM0QwKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QxKToKKyAgICAgICAg
KGdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAodW5pZm9ybTF1aSk6CisgICAgICAgICh1
bmlmb3JtMnVpKToKKyAgICAgICAgKHVuaWZvcm0zdWkpOgorICAgICAgICAodW5pZm9ybTR1aSk6
CisgICAgICAgICh1bmlmb3JtMXVpdik6CisgICAgICAgICh1bmlmb3JtMnVpdik6CisgICAgICAg
ICh1bmlmb3JtM3Vpdik6CisgICAgICAgICh1bmlmb3JtNHVpdik6CisgICAgICAgICh1bmlmb3Jt
TWF0cml4MngzZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKHVu
aWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDNmdik6Cisg
ICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGkpOgorICAgICAgICAodmVydGV4QXR0cmliSTRpdik6Cisg
ICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0dWl2KToK
KyAgICAgICAgKHZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKGRyYXdSYW5nZUVsZW1l
bnRzKToKKyAgICAgICAgKGRyYXdCdWZmZXJzKToKKyAgICAgICAgKGNsZWFyQnVmZmVyaXYpOgor
ICAgICAgICAoY2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmdik6CisgICAg
ICAgIChjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKGNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKGRl
bGV0ZVF1ZXJ5KToKKyAgICAgICAgKGlzUXVlcnkpOgorICAgICAgICAoYmVnaW5RdWVyeSk6Cisg
ICAgICAgIChlbmRRdWVyeSk6CisgICAgICAgIChnZXRRdWVyeSk6CisgICAgICAgIChnZXRRdWVy
eU9iamVjdHVpKToKKyAgICAgICAgKGNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoZGVsZXRlU2Ft
cGxlcik6CisgICAgICAgIChpc1NhbXBsZXIpOgorICAgICAgICAoYmluZFNhbXBsZXIpOgorICAg
ICAgICAoc2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoc2FtcGxlclBhcmFtZXRlcmYpOgor
ICAgICAgICAoZ2V0U2FtcGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoZ2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoZmVuY2VTeW5jKToKKyAgICAgICAgKGlzU3luYyk6CisgICAgICAg
IChkZWxldGVTeW5jKToKKyAgICAgICAgKGNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKHdhaXRT
eW5jKToKKyAgICAgICAgKGdldFN5bmNpKToKKyAgICAgICAgKGNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGlzVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZW5kVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChnZXRU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAocGF1c2VUcmFuc2Zvcm1GZWVkYmFj
ayk6CisgICAgICAgIChyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiaW5kQnVm
ZmVyQmFzZSk6CisgICAgICAgIChiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAgICAoZ2V0VW5pZm9y
bUluZGljZXMpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoZ2V0VW5p
Zm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6Cisg
ICAgICAgICh1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKGdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2KToKKyAgICAgICAgKGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAo
YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAo
ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgIChiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKToKKyAgICAgICAgKGluc2VydEV2ZW50TWFya2VyRVhUKToKKyAgICAgICAgKHB1
c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAg
IChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgor
ICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAodmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICog
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAg
IChJUEM6OkFycmF5UmVmZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFy
cmF5UmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OnNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6
ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNv
ZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5k
ZXI6OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1
eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNo
YXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
c2VuZFN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFy
a0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVu
Y3Rpb25zR2VuZXJhdGVkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdl
MkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRp
c2FibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJM
b2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3Ip
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1l
dGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1mdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQ
cm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1NoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVy
YWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Np
c3Nvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNo
YWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFy
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNGYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dy
YW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWI0Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNz
ZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliRGl2aXNvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1h
Z2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0
YUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0ydWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4
M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1Jh
bmdlRWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1
ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5k
UXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1l
dGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRy
YW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVy
UmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybUJsb2NrQmluZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1
ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRl
eEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2
ZW50TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhl
bHNSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVj
dHVpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQ
VVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vz
c2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5
ZWRSZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAzICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSVBDIHNob3VsZCBzdXBwb3J0
IG5vbi1ieXRlIGFsaWduZWQgZGF0YSByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBi
MWY1NGY2MWMyYTNkYjlmMWRlMTRmMmRlZWNjOWQ5N2Y0MThhYzgxLi4yOWIyY2E2ODk2OTk0MWFk
NGYyOTdmOTMxZWE0YWIyZTQwZmRhNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNTQsNiAr
MTI1NCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFl
ZDhlYWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgyZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1
ODk3MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCAr
MzExLDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOWJmYWU5NjRlMjRkMmMyN2JiZTc4
N2ZiOTAwMTMzNjM1ZTg0MDEyMy4uM2I3ZTRhZjA2ZjNlZjAwNDAzNGU3YmYzMWM5N2EyYTU3MGYw
ZWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzUsNiArMTk3NSw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGM4ZTVhZjFmZWYxMDVmMzRjODE3ODE3
MmZjMWRjZDY3ZGU0ZTdmNjUuLjhmOTlmOWExOTE4Yzk1NTg4NWZiMmFjYjk5YzhkMWE3NTI2NWFh
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzU4LDEyICszNTgsMTQgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYzdjZDg3
YzgzYjIzMGFlOTRjN2NlMzAxYWNlMTUwM2E5ZmM2YjgyLi4yNDFjZTBmODhjZjcwZDM1NjFlN2Ey
NzZiMzQ2Zjk0ODRkNzc4OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDU2LDcgKzIwNTYsNyBAQAogCQk2RTQ3RTY2MTEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFC
Q0Q1MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFE
MjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEw
MEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgw
RThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lv
bnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0
MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURD
RDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMw
MEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRl
bXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjUwLDYgKzIyNTAsOCBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDEx
NDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4
MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3
NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkw
NkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDI1NSw5ICsxMDI1NywxNCBAQAogCQk3
QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0Ix
NjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBD
NzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDgg
LyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFG
M0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3Bw
LmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJF
RjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNGMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5l
cmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjY2NTksNiArMjY2NjYsOCBAQAogCQkJCTA3NEU4MkI5MThBNjlG
MEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmggKi8sCisJCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKKwkJCQk3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkw
NzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJ
CTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJ
CTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0yNjgy
Niw2ICsyNjgzNSw4IEBACiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKIAkJCQlCNTMyMEQ2QTEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0Mw
MDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKKwkJCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
LAorCQkJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4
NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLApAQCAtMjY4MzcsNiArMjY4NDgsNyBA
QAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3Bl
bkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLAogCQkJCUNERUIz
RDcyMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovLAogCQkJCUNE
RUIzRDczMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCAqLywKIAkJCQlD
RDhGNjY3MDI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8s
CkBAIC0zMjE0NCw2ICszMjE1Niw3IEBACiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcy
MUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQw
MDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQw
OTAsNiArMzQxMDMsNyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQw
MEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlB
MjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5
MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3Rl
UGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAv
KiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA3MmMyNjQ0NjY2Y2YwM2EyZjU5ZjFlMDlmZTkz
MjkzY2I4MGI2YmFlLi5mN2M2YTJlODJhNGJmMDM3YTFiNDc3ZDc4M2ZhNTQxYWM0ZjU0Njk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcApAQCAtNzMyLDggKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUo
Q2FuCiAgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAg
ICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKICAgICB9Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpOwor
ICAgIGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywg
aG9zdFdpbmRvdyk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNFbGVt
ZW50KSB7CiAgICAgICAgICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29u
dGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JF
dmVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA1Y2NlNWQzZmZiMWM5YTdmY2IxNDdlZTYz
NDUxMWRjYjQ0OWRjNWUwLi5iNzEwZTcxNWE2NmRjYWM1Njc0MmRiNmJiZWE3NDFkNmY4NjM0MmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MzAsNiArNTMwLDEzIEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vCiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQu
Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZGlzcGxheUlEKCkpOworfQorI2Vu
ZGlmCisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhm
NTZhMTkxMjA0OWQ0Nzk3NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1
MDU3NjU0MGQzZjIzMmEzY2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBA
QCBwdWJsaWM6CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwog
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29u
c3Qgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAppbmRleCAzYTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThk
MGE5Li44ZjE4ZmRmZjA0OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQ
bGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAg
ICAvLyBQYXNzIG51bGxwdHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9v
dCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUm
LCBHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3Zlcmxh
eUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hv
c3RXaW5kb3cuaAppbmRleCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDll
Li43MzgxMThiMjFlM2MzMzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJH
TCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOwor
I2VuZGlmCisKICAgICAvLyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQg
b2YgdGhlIHBhZ2UuCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdl
Q2xpZW50KCkgY29uc3QgPSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJk
ZTZjMGRiMjZhYTc4NDUyZmIzLi43YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQy
ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaApAQCAtMzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50
aW5nQXBwbGljYXRpb25QSUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlz
SW5XZWJQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9j
ZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBi
b29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQ
VVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKIAogYm9vbCBpc0luV2ViUHJvY2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9v
bCBpc0luTmV0d29ya1Byb2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0Nv
Y29hLm1tCmluZGV4IGZiZDFkNDNjMDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIw
NmZmNDdkZmM1NDE3MjFmNjRhYTBkZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrc0NvY29hLm1tCkBAIC05Niw2ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAg
ICByZXR1cm4gbWFpbkJ1bmRsZUlzV2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2Vz
cygpCit7CisgICAgc3RhdGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5X
ZWJLaXQuR1BVIl07CisgICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJv
b2wgaXNJbk5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNO
ZXR3b3JrUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
IGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBjNGU3Nzc4ZGI2
YTQ0OGZkMGE1ZTY1MTU5MWZlZWExNDUzODYzODIzLi5kNTAyMWRkMzM0ZWRmOTFhMzQyMzBiZTAx
Njg5MjA3NDI0OWViMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaApAQCAtMjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xf
S0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QTEVUSU9OX1NUQVRVU19LSFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlv
bnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xf
QU5HTEVfcmVxdWVzdF9leHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5j
dGlvbnMuCiAKICAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0
aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCmluZGV4IGFlMGYwN2MyZGU0YjUwMzc3MTkzYmI1ZjdiOWEwNGQ5Y2FmMjhlODUuLjk1MDNi
NGE3ZTIwN2RkYTZjZmI3YjI2M2FjOWYzMjE4MWVhZTRiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTI3
LDExICsyNywxMyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCiAjaWYg
RU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9y
bWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpA
QCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1
bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdM
OjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJz
KGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggNTk2MzRlOTFkNzAwMDg4ZThhZjk2ZDg3MmRhMTQ5YmRiN2Yz
MTJiYy4uMjIzYTVjOWJmMTY5N2YyNWYxMTJkYmNjMTg2ZjgxOWI3Y2UxZGU0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
CkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZv
ciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgog
ICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTA5LDE0ICs5MTEsMTcgQEAgcHVibGljOgog
ICAgICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGlj
c0NvbnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24g
aW4gY29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0
IHRoZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVu
LCBHcmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1
YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQo
Q2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVt
b3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0K
IAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1
bmRlcnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQg
YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC0xMzk1
LDcgKzE0MDAsNiBAQCBpbmxpbmUgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0SW50ZXJu
YWxmb3JtYXRpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaQogICAgIHJldHVybiB2YWx1ZVsw
XTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCAyMTZi
ZDM2NjhmMTA3YTg3OTE0ZGU0ZjYwYmJlNTI2MzExNWRmZmY4Li4zYjA2NGMzZTc2OGVjYzRiZjAy
Yjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC00NCwxNSArNDYsMTcgQEAgdHlwZWRlZiB1bnNpZ25lZCBHQ0dMdWludDsK
IHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0OwogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQ0dMaGFs
ZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dMY2xhbXBmOwotdHlwZWRlZiBpbnRwdHJfdCBHQ0dM
aW50cHRyOwotdHlwZWRlZiBpbnRwdHJfdCBHQ0dMc2l6ZWlwdHI7CiB0eXBlZGVmIGNoYXIgR0NH
TGNoYXI7Ci10eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBHQ0dMdWludDY0OwogdHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdDR0xzeW5jOwog
dHlwZWRlZiB2b2lkIEdDR0x2b2lkOwotdHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIAor
Ly8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0Y2ggdGhlIEdMIHR5cGVzIGFz
IGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZpbGUgZm9yIGFsbCBwbGF0Zm9y
bXMuCit0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7Cit0eXBlZGVmIGludHB0cl90IEdDR0xz
aXplaXB0cjsKK3R5cGVkZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7Cit0eXBlZGVmIGxvbmcgbG9u
ZyBHQ0dMaW50NjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwogCiB0
eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTYwLDEzICs2NCwxNyBAQCB0
eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWlu
dDsKICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdj
R0xTcGFuRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNF
eHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0
ZW50Pgogc3RydWN0IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkK
KyAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAg
ICAgICAgIDogZGF0YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkp
W0V4dGVudF0pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTc0LDYgKzgyLDEy
IEBAIHN0cnVjdCBHQ0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0
ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilb
XSwgVCgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90
aGVyLmRhdGEpCiAgICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBh
cnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bh
bihjb25zdCBzdGQ6OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJy
YXkuZGF0YSgpKQorICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFT
RV9BU1NFUlQoZGF0YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYg
b3BlcmF0b3IqKCkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRh
dGE7IH0KICAgICBUKiBkYXRhOwpAQCAtODEsNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5E
eW5hbWljRXh0ZW50PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykK
ICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0x
MjMsNiArMTM3LDExIEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRh
dGEob3RoZXIuZGF0YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2Yo
VSkpCiAgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkp
CisgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5z
aXplKCkgKiBzaXplb2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29u
c3Qgc2l6ZV90IGJ1ZlNpemU7CiB9OwpAQCAtMTU0LDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NH
TFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xT
cGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CitHQ0dMU3BhbihXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxU
PjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBk
YXRhLCBzaXplX3QgY291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDNjMzgzMzc3YjdkZTcwNzk3NzQyMDY5MmM4OTA3NTg3YTI3ZjE4Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChh
dHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKK30KKworUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpID0g
ZGVmYXVsdDsKKworRXh0ZW5zaW9uc0dMJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNH
TEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCku
aXNXZWJHTDI7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1h
cmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRy
YWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQorICAgICAgICBub3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CisgICAgYXV0byBhdHRy
cyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdpbmdC
dWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJzLmRlcHRoKQorICAgICAgICAg
ICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZF
Ul9CSVQ7CisgICAgICAgIGlmIChhdHRycy5zdGVuY2lsKQorICAgICAgICAgICAgbV9idWZmZXJz
VG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAg
ICB9CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAg
ICAgICAgY2xpZW50LT5kaWRDb21wb3NpdGUoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sYXllckNvbXBvc2l0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQgYnVmZmVycykKK3sKKyAg
ICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCkucHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgICAg
ICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IGJ1ZmZlcnM7Cit9CisKK0dDR0xiaXRmaWVsZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xlYXI7Cit9CisKK2Jvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQor
eworICAgIC8vIFJlZGVjbGFyZWQgZm9yIGV4cG9ydCByZWFzb25zLgorICAgIC8vIEZJWE1FOiBU
aGUgd2hvbGUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgR3JhcGhpY3NDb250ZXh0
R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOworfQorCitib29sIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgp
OworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9l
bmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBlbnN1cmVFeHRlbnNp
b25FbmFibGVkKG5hbWUpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsK
KyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5h
YmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5h
YmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKK3sKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAg
ICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGZvciAoYXV0byYg
ZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworfQorCisjaWYgIVBMQVRGT1JN
KENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKCkKK3sKK30KKworUGxhdGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRy
OworfQorI2VuZGlmCisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTY1YmI1YmQyOGM4Y2Y1N2FhNTNiMjcwZWFlNTEzZjRhOTUyZmY0
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkV4
dGVuc2lvbnNHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oQ09DT0EpCitPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisjaWYgUExBVEZPUk0oQ09DT0EpCitjbGFzcyBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKKyNlbmRpZgorCisvLyBBIGJhc2UgY2xhc3MgZm9y
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHByb3h5IHNpZGUgaW1wbGVtZW50YXRpb24KKy8vIFRo
aXMgaW1wbGVtZW50cyB0aGUgcGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29yZSBpbnRlcm5hbCBm
dW5jdGlvbmFsaXR5OgorLy8gLSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBtYW5hZ2VtZW50Lgor
Ly8gLSBDb21wb3NpdGluZyBzdXBwb3J0LgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wsIHB1Ymxp
YyBFeHRlbnNpb25zR0wgeworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIH5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpIG92ZXJyaWRlOworCisgICAgLy8gT3RoZXIgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHVzaW5nIEdyYXBoaWNzQ29u
dGV4dEdMOjppc0VuYWJsZWQ7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IGZpbmFsOworICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAg
IHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250
ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29u
c3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRl
ZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRm
aWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7Cisg
ICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJM
RShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBh
c0NWKCkgZmluYWw7CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMu
CisgICAgdXNpbmcgRXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
JikgZmluYWw7CisgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVh
bCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigp
OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVy
OworI2VuZGlmCisKKyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisg
ICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0
cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9l
bmFibGVkRXh0ZW5zaW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0
cmFja2luZyBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJD
b21wb3NpdGVkID0gZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFy
ID0geyAwIH07Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2NlNDczMjE2MjhmMWY2
MDcyNDIxYTc2YmM2MGNlMWJjNTNkYWIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKFdF
QkdMKSAmJiBQTEFURk9STShDT0NPQSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6fkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluKCkgPSBkZWZhdWx0OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVlNDE2OGUz
MWJlYjhmMmJiNzc0Y2Y3ZGUxZTk1ZjhkMGI5OTYxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisj
aW5jbHVkZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFj
ZSBmb3IgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJp
bmcgc3dhcAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxs
IG93biB0aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBt
YXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhl
IG1ldGFkYXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQu
IEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8g
b2J0YWluIHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9m
IHRoZSBtZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0
YS4gVGhpcyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUg
SU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUg
ZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dp
Yy4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAgICAvLyBUaGUgYWN0dWFsIGNv
bnRlbnRzLiBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3VyZmFjZS4K
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsKKyAg
ICAgICAgLy8gUHJvZHVjZXIgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1
cmZhY2UpLiBDbGllbnQgZG9lcyBub3QgdHJhbnNmZXIgdGhlIG93bmVyc2hpcC4KKyAgICAgICAg
dm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OworICAgIH07CisgICAgLy8gUmV0dXJucyB0aGUgbWV0
YWRhdGEgaGFuZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGll
bnQgbWF5IHJlY2lldmUgYmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1
cmZhY2UsIGluIGNhc2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRoZQorICAgIC8vIHRpbWUgb2YgdGhl
IGNhbGwuCisgICAgLy8gUmV0dXJucyBlaXRoZXI6CisgICAgLy8gLSBFbXB0eSBidWZmZXIgaWYg
bm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRlZC4KKyAgICAvLyAtIEJ1ZmZlciB3aXRoIGVtcHR5
IHN1cmZhY2UgYW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1
ZmZlciB3YXMgYXZhaWxhYmxlCisgICAgLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4g
dXNlLgorICAgIC8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgorICAgIHZpcnR1YWwgQnVmZmVyIHJl
Y3ljbGVCdWZmZXIoKSA9IDA7CisKKyAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNw
bGF5IHdpdGggYSBjb250ZW50cyBidWZmZXIuCisgICAgdmlydHVhbCB2b2lkIHByZXNlbnQoQnVm
ZmVyKSA9IDA7CisKKyAgICAvLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBj
dXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCisgICAgLy8gVGhlIGlmIG11
bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0IGhh
dmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0aGlzLgorICAgIHZpcnR1YWwg
dm9pZCogZGV0YWNoQ2xpZW50KCkgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDUzNTgwZDIxZTk4ZmY2MjIwNGQw
NWIyNGRhNzMxYmE1YjI1MDgwYzAuLmRjMTY1NGY1ODRjMDJiZWU5ZWJhMTNiMGRiZjM1NThmMWQ1
NDk4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlci5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtODEsNyArODIsNyBAQCBzdGF0aWMgRUdMRGlzcGxheSBJbml0aWFsaXplRUdMRGlzcGxh
eSgpCiAgICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CiAgICAgRUdMaW50IG1pbm9yVmVyc2lv
biA9IDA7CiAgICAgRUdMRGlzcGxheSBkaXNwbGF5OwotICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6
ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIWlzSW5XZWJQcm9jZXNzKCk7CisgICAgYm9v
bCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQgPSAhKGlzSW5XZWJQ
cm9jZXNzKCkgfHwgaXNJbkdQVVByb2Nlc3MoKSk7CiAgICAgaWYgKHNob3VsZEluaXRpYWxpemVX
aXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCkgewogICAgICAgICAvLyBGb3IgV0sxIHR5cGUgQVBJ
cyB3ZSBuZWVkIHRvIHNldCAidm9sYXRpbGUgcGxhdGZvcm0gY29udGV4dCIgZm9yIHNwZWNpZmlj
CiAgICAgICAgIC8vIEFQSXMsIHNpbmNlIGNsaWVudCBjb2RlIHdpbGwgYmUgYWJsZSB0byBvdmVy
cmlkZSB0aGUgdGhyZWFkLWdsb2JhbCBjb250ZXh0CkBAIC0xMzQsNyArMTM1LDcgQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0g
YWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBk
ZXN0aW5hdGlvbikpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4
dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdpbmRv
dywgbnVsbHB0ciwgbnVsbHB0cikpOwogCiAgICAgaWYgKCFjb250ZXh0LT5tX2NvbnRleHRPYmop
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ3LDEzICsxNDgsMTggQEAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdy
YXBoaWNzQ29udGV4dEcKIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVk
Q29udGV4dCkKIHsKICAgICBhdXRvIGhvc3RXaW5kb3cgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5ob3N0V2luZG93Rm9yQ29udGV4dCgmc2hhcmVkQ29u
dGV4dCk7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csIHNo
YXJlZENvbnRleHQuZGVzdGluYXRpb24oKSwgJnNoYXJlZENvbnRleHQpKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRl
eHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgJnNoYXJlZENvbnRleHQsIG51bGxw
dHIpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdpbmRvdyk7CiAKICAgICByZXR1cm4g
Y29udGV4dDsKIH0KIAorUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJzLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dh
cENoYWluKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKGF0dHJzLCBudWxscHRyLCBudWxscHRyLCBzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRG
T1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAt
IHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAogc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlE
KENHTENvbnRleHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRP
YmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJyZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBAQCBz
dGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBD
R0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0Nv
bnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBzaGFyZWRDb250ZXh0KQotICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3RpbmF0
aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQsIEdy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBHcmFw
aGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4
dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMuaXNXZWJHTDI7CiAKQEAgLTMzMywxMyAr
MzM5LDE3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVz
KCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNo
YW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKLSAgICAvLyBDcmVhdGUgdGhlIFdlYkdMTGF5ZXIK
KyAgICBpZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsKKyAg
ICBlbHNlIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAgICAgbV93ZWJH
TExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxS
YXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0p
OwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wg
TGF5ZXIiXTsKICNlbmRpZgogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAg
bV9zd2FwQ2hhaW4gPSAmW21fd2ViR0xMYXllciBzd2FwQ2hhaW5dOworICAgIH0KIAogICAgIC8v
IENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVy
LgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KTsKQEAgLTQwOCwxMyArNDE4LDEyIEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp+R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woKQogICAgICAgICBpZiAobV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJG
Qk8pCiAgICAgICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX3ByZXNlcnZlRHJh
d2luZ0J1ZmZlckZCTyk7CiAgICAgfQotICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKQor
ICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKSB7CiAgICAgICAgIEVHTF9EZXN0cm95U3Vy
ZmFjZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpOwotICAgIGlmIChtX3dl
YkdMTGF5ZXIpIHsKLSAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIg
cmVjeWNsZUJ1ZmZlcl07CisgICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFp
bi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQog
ICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZm
ZXIuaGFuZGxlKTsKLSAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IFttX3dlYkdMTGF5ZXIg
ZGV0YWNoQ2xpZW50XTsKKyAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IG1fc3dhcENoYWlu
LT5kZXRhY2hDbGllbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRzSGFuZGxlKQogICAgICAgICAg
ICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgY29udGVudHNIYW5kbGUpOwogICAg
IH0KQEAgLTU3NywxMSArNTg2LDE2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
c2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgICAgIG1fZGlzcGxheUJ1ZmZlclBidWZm
ZXIgPSBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAgICAgLy8gUmVzZXQgdGhlIGZ1dHVyZSByZWN5
Y2xlZCBidWZmZXIgbm93LCBiZWNhdXNlIGl0IG1vc3QgbGlrZWx5IHdpbGwgbm90IGJlIHJldXNh
YmxlIGF0IHRoZSB0aW1lIGl0IHdpbGwgYmUgcmV1c2VkLgotICAgIGF1dG8gcmVjeWNsZWRCdWZm
ZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgIGF1dG8gcmVjeWNsZWRCdWZm
ZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgIGlmIChyZWN5Y2xlZEJ1ZmZl
ci5oYW5kbGUpCiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3lj
bGVkQnVmZmVyLmhhbmRsZSk7CiAgICAgcmVjeWNsZWRCdWZmZXIuc3VyZmFjZS5yZXNldCgpOwor
ICAgIHJldHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOworfQogCiti
b29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVy
QmFja2luZygpCit7CisgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlz
RW1wdHkoKSk7CiAgICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUo
Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYo
KSk7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzksNyAr
NjUzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzKCkgY29uc3QKICAgICAvLyBmb3IgT3BlbkdMIHRvIGRlY2lkZSB3aGljaCBHUFUgaXMgY29u
bmVjdGVkIHRvIGEgZGlzcGxheSAob25saW5lL29mZmxpbmUpLgogICAgIC8vIE9wZW5HTCB3aWxs
IHRoZW4gY29uc2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRlcmVycywgYXMgb2ZmbGluZSwgd2hpY2gg
bWVhbnMKICAgICAvLyBhbGwgb2ZmbGluZSByZW5kZXJlcnMgbmVlZCB0byBiZSBjb25zaWRlcmVk
IHdoZW4gZmluZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0
aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZG93U2VydmVyIGNvbm5lY3Rpb24sIGFuZAorICAgIC8v
IEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kd1NlcnZlciBjb25u
ZWN0aW9uLCBhbmQKICAgICAvLyBtX2Rpc3BsYXlNYXNrIHdpbGwgbm90IGJlIHNldCBpbiB0aGlz
IGNhc2UuCiAgICAgaWYgKHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTY4NSwxMCArNjk5LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAvLyBUaGUgSU9TdXJmYWNlIHdpbGwgYmUgdXNl
ZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwgc28gZmx1c2ggR0wgY29tbWFuZHMuCiAg
ICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXll
ciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4t
PnJlY3ljbGVCdWZmZXIoKTsKIAogICAgIEVHTF9SZWxlYXNlVGV4SW1hZ2UobV9kaXNwbGF5T2Jq
LCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIpOwotICAgIFttX3dlYkdM
TGF5ZXIgcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6IHtXVEZNb3ZlKG1fZGlzcGxheUJ1
ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyfV07CisgICAgbV9zd2FwQ2hhaW4t
PnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZm
ZXJQYnVmZmVyIH0pOwogICAgIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgPSBFR0xfTk9fU1VSRkFD
RTsKIAogICAgIGJvb2wgaGFzTmV3QmFja2luZyA9IGZhbHNlOwpAQCAtNzAyLDcgKzcxNiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKIAogICAg
IC8vIEVycm9yIHdpbGwgYmUgaGFuZGxlZCBieSBuZXh0IGNhbGwgdG8gbWFrZUNvbnRleHRDdXJy
ZW50KCkgd2hpY2ggd2lsbCBub3RpY2UgbGFjayBvZiBkaXNwbGF5IGJ1ZmZlci4KICAgICBpZiAo
IWhhc05ld0JhY2tpbmcpCi0gICAgICAgIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpOwor
ICAgICAgICBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogCiAgICAgbWFy
a0xheWVyQ29tcG9zaXRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM0MTQwMTViN2IwZjM0YmIy
OGJlMzQ1NTA5Yzc0MjllMzFkYWEzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2EubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisjaW1wb3J0ICJXZWJHTExheWVyLmgiCisjaW1wb3J0
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgp
Cit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJH
TExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxS
YXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CisjZW5kaWYKKyAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKworUGxhdGZvcm1MYXllciogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7Cit9CisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShB
VkZPVU5EQVRJT04pCitHcmFwaGljc0NvbnRleHRHTENWKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6YXNDVigpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwor
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVN3YXBDaGFpbigpCit7CisgICAgcmV0dXJuIFttX3dlYkdM
TGF5ZXIgc3dhcENoYWluXTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKaW5kZXggMTRiMDFlNzA1ZjIw
NTMwMWM3Yzk3Y2Y2NmU3MWEwOGJiZjQxZTcwNS4uN2ZlODhhMmZmNGNlMGY1NTlkNTlkYzFjZDk1
MmEzYTdlYTg4MDk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIuaApAQCAtMjMsNTIgKzIzLDIyIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpbXBvcnQgIklPU3VyZmFjZS5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
PgorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8d3RmL05ha2VkUHRyLmg+CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLXN0cnVjdCBXZWJHTExheWVyQnVmZmVyIHsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgot
ICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8gQ2xpZW50IHNwZWNpZmljIG1ldGFkYXRh
IGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KLX07Ci19Ci0KIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAKIC8vIEEgbGF5ZXIgY2xhc3MgaW1wbGVtZW50aW5nIGZyb250
IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dhcAogLy8gY2hhaW4gb2YgSU9T
dXJmYWNlcy4KLS8vIFRoZSBsYXllciB3aWxsIG93biB0aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZv
ciBkaXNwbGF5LgotLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9T
dXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRhCi0vLyBiYWNrIG9uY2UgdGhlIElP
U3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBu
ZWNjZXNzYXJpbHkKLS8vIGJlIGFibGUgdG8gb2J0YWluIHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZv
ciByZXVzZS4KLS8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRhZGF0YSBpcyB0byB1c2UgRUdMU3Vy
ZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3YXkKLS8vIHdoZW4gdGhlIFdlYkdM
TGF5ZXIgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxheSwgdGhlIGNsaWVudCBjYW4g
Y29udGludWUgdXNpbmcKLS8vIHRoZSBleGlzdGluZyBiaW5kaW5nIG9idGFpbmVkIHRocm91Z2gg
dGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgogQGludGVyZmFjZSBXZWJHTExheWVyIDogQ0FMYXll
cgogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0
aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWU7CiAKIC0gKENHSW1hZ2VSZWYp
Y29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9yU3Bh
Y2U7CiAKLS8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250
ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgbWF5IHJlY2lldmUgYmFjayBhbHNvIHRoZSBvd25lcnNo
aXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRo
ZQotLy8gdGltZSBvZiB0aGUgY2FsbC4KLS8vIFJldHVybnMgZWl0aGVyOgotLy8gLSBFbXB0eSBi
dWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRlZC4KLS8vIC0gQnVmZmVyIHdpdGgg
ZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRsZSBpZiB0aGUgcmVjeWNs
ZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKLS8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGlu
IHVzZS4KLS8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgotLSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1
ZmZlcilyZWN5Y2xlQnVmZmVyOwotCi0vLyBQcmVwYXJlcyB0aGUgbGF5ZXIgZm9yIGRpc3BsYXkg
d2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hp
cCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgotLSAodm9pZClwcmVw
YXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcilidWZm
ZXI7Ci0KLS8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29u
dGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KLS8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJz
IGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVk
IGJlZm9yZSBjYWxsaW5nCi0vLyB0aGlzLgotLSAodm9pZCopZGV0YWNoQ2xpZW50OworLSAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2FwQ2hhaW47CiAK
IEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW0KaW5kZXggYzhmNGU3OWY3MzEyZWFhNmFiMDQ0NjgwODNlYThkMGM4YmVm
YTNiYy4uMzg1OTdlNGE4ZjYzM2E1ZWU1ZGI3NDkzMzAyMmRjMjM3ZmU3ZTQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1t
CkBAIC0zMiwxMyArMzIsMzkgQEAKICNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9y
dCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVT
UEkuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5o
PgorCitjbGFzcyBXZWJHTExheWVyU3dhcENoYWluIGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBXZWJHTExheWVyU3dhcENoYWluKFdlYkdMTGF5ZXIqIGxheWVyKSAgOiBtX2xheWVyKGxheWVy
KSB7IH07CisgICAgfldlYkdMTGF5ZXJTd2FwQ2hhaW4oKSBvdmVycmlkZSA9IGRlZmF1bHQ7Cisg
ICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgQnVmZmVyIHJlY3ljbGVCdWZm
ZXIoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkg
eworICAgICAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQorICAg
ICAgICAgICAgICAgIG1fc3BhcmVCdWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgICAgICAgICAg
cmV0dXJuIFdURk1vdmUobV9zcGFyZUJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisgICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICAgICAgdm9pZCogcmVz
dWx0ID0gbV9kaXNwbGF5QnVmZmVyLmhhbmRsZTsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyLmhh
bmRsZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIFdlYkNv
cmU6OklPU3VyZmFjZSogZGlzcGxheVN1cmZhY2UoKSB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIu
c3VyZmFjZS5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOwor
ICAgIEJ1ZmZlciBtX3NwYXJlQnVmZmVyOworICAgIFdlYkdMTGF5ZXIqIGNvbnN0IG1fbGF5ZXI7
Cit9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXllciB7Ci0gICAgV2ViQ29yZTo6V2ViR0xM
YXllckJ1ZmZlciBfY29udGVudHNCdWZmZXI7Ci0gICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZl
ciBfc3BhcmVCdWZmZXI7Ci0KICAgICBCT09MIF9wcmVwYXJlZEZvckRpc3BsYXk7CisgICAgT3B0
aW9uYWw8V2ViR0xMYXllclN3YXBDaGFpbj4gX3N3YXBDaGFpbjsKIH0KIAogLSAoaWQpaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVl
Oihib29sKWNvbnRlbnRzT3BhcXVlCkBAIC00Nyw2ICs3Myw3IEBACiAgICAgc2VsZi50cmFuc2Zv
cm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7CiAgICAgc2VsZi5jb250ZW50c09wYXF1ZSA9IGNv
bnRlbnRzT3BhcXVlOwogICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVsUmF0aW87
CisgICAgX3N3YXBDaGFpbi5lbXBsYWNlKHNlbGYpOwogICAgIHJldHVybiBzZWxmOwogfQogCkBA
IC03MywzMCArMTAwLDIxIEBACiAgICAgVU5VU0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQotCi0tIChXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKSByZWN5Y2xl
QnVmZmVyCistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYp
IHN3YXBDaGFpbgogewotICAgIGlmIChfc3BhcmVCdWZmZXIuc3VyZmFjZSkgewotICAgICAgICBp
ZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKLSAgICAgICAgICAgIF9zcGFyZUJ1
ZmZlci5zdXJmYWNlLnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKF9zcGFyZUJ1ZmZl
cik7Ci0gICAgfQotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIF9zd2FwQ2hhaW4udmFsdWUo
KTsKIH0KIAotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6
V2ViR0xMYXllckJ1ZmZlcikgYnVmZmVyCistICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5CiB7Ci0g
ICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgX3NwYXJlQnVmZmVyID0gV1RG
TW92ZShfY29udGVudHNCdWZmZXIpOwotICAgIF9jb250ZW50c0J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXldOwogICAgIF9wcmVwYXJlZEZvckRpc3Bs
YXkgPSBZRVM7CiB9CiAKIC0gKHZvaWQpZGlzcGxheQogewotICAgIGlmIChfY29udGVudHNCdWZm
ZXIuc3VyZmFjZSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7Ci0gICAgICAgIHNlbGYuY29udGVu
dHMgPSBfY29udGVudHNCdWZmZXIuc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCk7CisgICAgaWYg
KF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCkgJiYgX3ByZXBhcmVkRm9yRGlzcGxheSkgewor
ICAgICAgICBzZWxmLmNvbnRlbnRzID0gX3N3YXBDaGFpbi0+ZGlzcGxheVN1cmZhY2UoKS0+YXNM
YXllckNvbnRlbnRzKCk7CiAgICAgICAgIFtzZWxmIHJlbG9hZFZhbHVlRm9yS2V5UGF0aDpAImNv
bnRlbnRzIl07CiAgICAgfQogICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKQEAgLTEw
NiwxMyArMTI0LDE0IEBACiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IE5POwogfQogCi0tICh2
b2lkKikgZGV0YWNoQ2xpZW50CitAZW5kCisKK3ZvaWQgV2ViR0xMYXllclN3YXBDaGFpbjo6cHJl
c2VudChCdWZmZXIgYnVmZmVyKQogewotICAgIEFTU0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2Up
OwotICAgIHZvaWQqIHJlc3VsdCA9IF9jb250ZW50c0J1ZmZlci5oYW5kbGU7Ci0gICAgX2NvbnRl
bnRzQnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBBU1NF
UlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgbV9zcGFyZUJ1ZmZlciA9IFdURk1vdmUo
bV9kaXNwbGF5QnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisgICAgW21fbGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldOwogfQotQGVuZAogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAyNzA2
ZTdiMzBhYjliMzdhMjEyNzhjNTE3ZWRiZGYxNTJiYzBmYTcwLi5mNTI0ZGU5MmRjZDlhNTk4YjBm
YmVmOGQzM2I5YzQ0MDliOGNkMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aApAQCAtNTgsNiArNTgsOSBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBDQUxh
eWVyOwogT0JKQ19DTEFTUyBXZWJHTExheWVyOworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47Cit9CiAjZW5kaWYgLy8gUExBVEZP
Uk0oQ09DT0EpCiAKICNpZiBVU0UoTklDT1NJQSkKQEAgLTg2LDcgKzg5LDcgQEAgdHlwZWRlZiBX
VEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5hbWVIYXNoOwogCiBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTFByaXZhdGU7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRl
eHRHTAogewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBEZXN0
aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4pOwpAQCAtOTQsNiArOTcsOCBAQCBwdWJs
aWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMPiBjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIHNoYXJlZENv
bnRleHQpOworICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZUZv
ckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qKTsKKwogICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dl
YkdMTGF5ZXIuZ2V0KCkpOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkg
cGxhdGZvcm1EaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5T2JqOyB9CiAgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBwbGF0Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0
dXJuIG1fY29uZmlnT2JqOyB9CkBAIC01MDMsNyArNTA4LDExIEBAIHB1YmxpYzoKICNlbmRpZiAv
LyAhVVNFKEFOR0xFKQogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRv
dyosIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0ciwgR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qID0gbnVsbHB0cik7CisjZWxzZQogICAg
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9z
dFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRyKTsKKyNlbmRpZgogCiAgICAg
Ly8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1
YWxseSBjYWxsIE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBl
bnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4K
QEAgLTUzNCwxMCArNTQzLDEzIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ym9vbCBhbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdDsKICAgICBib29sIHJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZygpOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4q
IG1fc3dhcENoYWluIHsgbnVsbHB0ciB9OworICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSB0aGUgY29udGV4dCBkcmF3cyB0byBhIGltYWdlIGJ1ZmZlci4gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNzkgLgogICAgIFJldGFpblB0
cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRH
TCBtX2NvbnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRH
TERpc3BsYXkgbV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXgg
YmUwODY1MTMyYmY0NTZlMzU1YmViMzFiNmRjNDY2M2JkMmQyNDNjNS4uMmUwNjVhYzY2OWNhNWZl
OWFlYzA4OWM2MTQ0MThjYzhkYWJlN2NkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMjMsNiAr
MTIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCisgICAg
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTAogICAgIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogCiAgICAgR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcgpAQCAtMjIyLDYgKzIyMyw3IEBAIHNldChX
ZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uCiAKKyAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5CiAKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCAyNjdjZGQyOTQzZTE0NmYwNWNjOGU3YzMxMDIyMzlkYmY2YmUzYjU3Li4wMWY2MDVj
OTNmNzk5OWU2ODBlMTg3NGM3MzA0MTNkYTIyOTRjYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMCw2ICsyMCw3IEBAICQoSkFWQVND
UklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvbW9kZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9j
ZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMzUsNiArMTM2LDcgQEAgJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAppbmRleCA2MGQ0NDMwMjZmMzZkNDkzYWNiNjI3OWQ4ZjdhMGMzMWVh
MmI0NjI5Li4xNDJmMzQ1YmI0YTQ0ZDZhZTBjZjFjYzNlNmIwM2Q0MzI4ZThiYTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3OCw2
ICsxNzgsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzNThm
NzRiYmQzMjUxNjRkMjk1NzYyMDEyN2U0YTYwMmQ5MmQ3YTU2Li5kNzhjNWI3ZTI1MmY3ZmNhOTBh
MjVmYzg1MjM0ZmQ2YzFmMDdhZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0x
NzEsNiArMTcxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFz
ZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSBcCisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBc
CiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKQEAgLTIy
Nyw2ICsyMjgsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MgXAogCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCiAJR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eSBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwYzI2MTY4NjU3
YWE4YzQ3MzM5MTk5NGVlZjAyMzcyYzZjODkyN2JmLi40OGI3NGVhZTgwMWM2MjRkMTIxNzMxMDk0
OTA4MGVkYmE2MzQwNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02NCw2ICs2NCwxMCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oPgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoV0VCR0wpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAt
Mjk4LDYgKzMwMiwyMSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VS
ZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVT
RUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhp
Y3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7Cit9CisjZW5kaWYKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAgICAgZ3B1UHJvY2VzcygpLm5vd1BsYXlp
bmdNYW5hZ2VyKCkuY2xlYXJOb3dQbGF5aW5nSW5mb0NsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCBlMzNmNzM4MTNiZjYwMGU3YTkxYmE2OTI1MzExMjg4Y2Q3OWVhYjAyLi5hMjhjOGZmNWY2YzA2
NGJlZWIzYjg2YzZlYTU0YzNlNDdiNGFmOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nl
c3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIu
aCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJ
ZGVudGlmaWVyLmg+CkBAIC0zOSw2ICs0MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEdQVVByb2Nlc3M7CkBAIC01NSw2ICs2MSw3IEBAIGNsYXNzIFJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiBjbGFz
cyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7CitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CkBAIC0xMjAs
NiArMTI3LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNr
ZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAg
ICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVh
c2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlm
CisKICAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKTsKICAgICB2b2lkIHNldE5vd1BsYXlp
bmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlp
bmdJbmZvJiYpOwogCkBAIC0xODEsNyArMTkzLDEwIEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKLQorI2lm
IEVOQUJMRShXRUJHTCkKKyAgICB1c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhh
c2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBtX3Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOworI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2NkbUZh
Y3RvcnlQcm94eTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1MTk0
ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1MmMzNjVlYjMyNzFmMzQ0Li45ZDU0ZTE2NDU5NWIwYTM2MWRm
ZTRjNzViZmY0MDE4YTg1NzU5YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2Fu
dHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJL
aXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIFJl
bGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIENsZWFyTm93
UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1Bs
YXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlp
bmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDgwNGQxZmE5OTk0ZDVmZmYzMTQzNjRkNTliZWY5NWViNDllYTk5OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQg
ewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKKyAgICA6IG1fY29udGV4
dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1h
a2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGlm
IChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdl
UmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMp
OworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3ND
b250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMg
PSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lP
TlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sK
KyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2NF90
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xv
c3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4
dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZXNoYXBlKGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCisg
ICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBlbHNlCisgICAg
ICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisjZW5kaWYKKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJiBleHRlbnNpb24p
Cit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChleHRlbnNp
b24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2RiMGNmNTE4YWJmOWJiMjVhYjMzNmRkZGUwMzk5OTI1YWEwNWYzMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4u
aD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IE1hY2hTZW5kUmlnaHQ7Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVt
ZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRH
TCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2Vk
IG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJn
ZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgOiBwdWJsaWMgSVBDOjpNZXNz
YWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwcml2
YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAg
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4pOworCisg
ICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTDo6Q2xp
ZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBvc2l0ZSgpIGZpbmFsOworICAgIHZvaWQg
Zm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKSBmaW5h
bDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBmaW5hbDsK
KworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQgcmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFi
bGVkKFN0cmluZyYmKTsKKyAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgPSAwOworI2Vsc2UK
KyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisjZW5kaWYKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFhMDM0NzI1ZjlhYTQyZjQyYmQzYzhhMDBiMGFhMTgwOTBhNTliOWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOTUgQEAKKy8qIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERv
IG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKKyAgICB2
b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRp
c3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisg
ICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYKKyAg
ICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lk
IE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisKKyAgICB2b2lkIFNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKQorICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCisg
ICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVy
ZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFk
ZXIpCisgICAgdm9pZCBCaW5kQXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3Qg
aW5kZXgsIFN0cmluZyBuYW1lKQorICAgIHZvaWQgQmluZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3Jl
ZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvbih1aW50
MzJfdCBtb2RlKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVS
R0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAgICB2b2lkIEJsZW5kRnVuYyh1aW50MzJfdCBzZmFj
dG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHZvaWQgQmxlbmRGdW5jU2VwYXJhdGUodWludDMy
X3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBk
c3RBbHBoYSkKKyAgICB2b2lkIENoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDbGVhcih1
aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVu
LCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIENsZWFyRGVwdGgoZmxvYXQgZGVw
dGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHZvaWQgQ29sb3JNYXNr
KGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgdm9pZCBD
b21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5VGV4SW1hZ2UyRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3Qg
Ym9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRl
QnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
Q3JlYXRlRnJhbWVidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBDcmVhdGVQcm9ncmFtKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgQ3JlYXRlUmVuZGVyYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzAp
IC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRl
eHR1cmUoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBD
dWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgRGVsZXRlQnVmZmVyKHVpbnQzMl90IGFy
ZzApCisgICAgdm9pZCBEZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQg
RGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVy
KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAg
ICB2b2lkIERlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlcHRoRnVuYyh1
aW50MzJfdCBmdW5jKQorICAgIHZvaWQgRGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB2b2lkIERl
cHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgdm9pZCBEZXRhY2hTaGFkZXIo
dWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIERpc2FibGUodWludDMyX3Qg
Y2FwKQorICAgIHZvaWQgRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQor
ICAgIHZvaWQgRHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90
IGNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291
bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEVuYWJsZSh1aW50
MzJfdCBjYXApCisgICAgdm9pZCBFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRl
eCkKKyAgICB2b2lkIEZpbmlzaCgpCisgICAgdm9pZCBGbHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVp
bnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB2b2lkIEZyYW1l
YnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWlu
dDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHZvaWQg
RnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJf
dCB0YXJnZXQpCisgICAgdm9pZCBHZXRBY3RpdmVBdHRyaWIodWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5p
Zm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJuVmFs
dWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCdWZm
ZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U3RyaW5nKHVpbnQzMl90IG5h
bWUpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGbG9h
dHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcnYodWlu
dDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjQodWludDMy
X3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
R2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgpIC0+IChpbnQ2NF90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbWkodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVl
U2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJf
dCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAt
PiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlcmko
dWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAo
U3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUpIC0+
IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlLCBHQ0dMaW50IHByZWNpc2lv
bikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwKSAt
PiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1l
dGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24s
IHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGlu
dDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtdWl2KHVp
bnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4g
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFZlcnRleEF0dHJpYk9m
ZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50NjRfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBtb2RlKQorICAgIHZvaWQgSXNCdWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0VuYWJsZWQodWludDMyX3QgY2FwKSAtPiAo
Ym9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzRnJhbWVidWZmZXIodWlu
dDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJ
c1Byb2dyYW0odWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNUZXh0dXJlKHVpbnQzMl90
IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgTGluZVdp
ZHRoKGZsb2F0IGFyZzApCisgICAgdm9pZCBMaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgUGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9p
ZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgdm9pZCBSZW5k
ZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2Uo
ZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHZvaWQgU2Npc3NvcihpbnQzMl90IHgsIGlu
dDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBTaGFkZXJT
b3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nIGFyZzEpCisgICAgdm9pZCBTdGVuY2lsRnVuYyh1
aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5j
aWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYs
IHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQorICAg
IHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQor
ICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJf
dCB6cGFzcykKKyAgICB2b2lkIFN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQz
Ml90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFRleFBh
cmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisg
ICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGlu
dDMyX3QgcGFyYW0pCisgICAgdm9pZCBVbmlmb3JtMWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQg
eCkKKyAgICB2b2lkIFVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQz
Ml90IHgpCisgICAgdm9pZCBVbmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9ybTJpKGludDMy
X3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHZvaWQgVW5pZm9ybTJpdihp
bnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9p
ZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikK
KyAgICB2b2lkIFVuaWZvcm0zZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90
IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZvaWQgVW5pZm9ybTNpdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3Jt
NGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykK
KyAgICB2b2lkIFVuaWZvcm00ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90
IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBVbmlmb3JtNGl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2
b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDNm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4gdmFsdWUpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2
b2lkIFVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZs
b2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmKHVp
bnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVmVydGV4QXR0cmliMmZ2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiB2YWx1ZXMpCisg
ICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeikKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNmdih1aW50MzJfdCBpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdCwgMz4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliNGYo
dWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAg
dm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3Qg
aW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQz
Ml90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVmlld3BvcnQoaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQnVm
ZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkK
KyAgICB2b2lkIEJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiBkYXRhLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlclN1YkRhdGEo
dWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4gZGF0YSkKKyAgICB2b2lkIFJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleEltYWdlMkQwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAg
ICB2b2lkIFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VT
aXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVz
c2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9y
ZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJl
c3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNl
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJf
dCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5j
ZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBw
cmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwg
aW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHBy
aW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVp
bnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5KHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5KHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFy
Z2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qg
d3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBHZXRCdWZmZXJTdWJEYXRhKHVp
bnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4gKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJs
aXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gx
LCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRz
dFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAg
dm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0
dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIp
CisgICAgdm9pZCBJbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cykKKyAgICB2b2lkIEludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisgICAgdm9pZCBSZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB2b2lk
IFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
c2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgZGVwdGgpCisgICAgdm9pZCBUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykK
KyAgICB2b2lkIFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMy
X3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENv
cHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ29tcHJlc3Nl
ZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRo
LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMy
X3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQs
IGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3Nl
ZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBp
bWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEdldEZyYWdEYXRhTG9jYXRpb24o
dWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJf
dCB2MCkKKyAgICB2b2lkIFVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAs
IHVpbnQzMl90IHYxKQorICAgIHZvaWQgVW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50
MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAgIHZvaWQgVW5pZm9ybTR1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1
aW50MzJfdCB2MykKKyAgICB2b2lkIFVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtMnVpdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZv
aWQgVW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mngz
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAg
dm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4
NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBWZXJ0ZXhBdHRy
aWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGlu
dDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmli
STR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3Qgeiwg
dWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBl
LCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd1JhbmdlRWxl
bWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgaW50MzJf
dCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd0J1
ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIENsZWFy
QnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJ1aXYodWludDMy
X3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQz
Ml90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlcykKKyAgICB2
b2lkIENsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZs
b2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgdm9pZCBDcmVhdGVRdWVyeSgpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVF1ZXJ5KHVp
bnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgSXNRdWVyeSh1aW50MzJfdCBxdWVyeSkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCZWdpblF1ZXJ5KHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBFbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQp
CisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAo
dWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRRdWVyeU9iamVj
dHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2FtcGxlcigpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVNhbXBsZXIodWludDMyX3Qg
c2FtcGxlcikKKyAgICB2b2lkIElzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKSAtPiAoYm9vbCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRTYW1wbGVyKHVpbnQzMl90IHVu
aXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJf
dCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFNhbXBs
ZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJh
bSkKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQz
Ml90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4g
KGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBGZW5jZVN5bmModWlu
dDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncykgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTeW5jKHVpbnQ2NF90IGFyZzApIC0+IChib29sIHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlU3luYyh1aW50NjRfdCBhcmcw
KQorICAgIHZvaWQgQ2xpZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3Ms
IHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90
IHRpbWVvdXQpCisgICAgdm9pZCBHZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHZvaWQg
SXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3Qg
cHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lk
IFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmlu
Zz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgdm9pZCBHZXRUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAg
IHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBSZXN1bWVUcmFuc2Zvcm1G
ZWVkYmFjaygpCisgICAgdm9pZCBCaW5kQnVmZmVyQmFzZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAgdm9pZCBCaW5kQnVmZmVyUmFuZ2UodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBv
ZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBHZXRVbmlmb3JtSW5kaWNlcyh1aW50MzJf
dCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB1bmlmb3JtTmFtZXMpIC0+IChWZWN0b3I8dWludDMy
X3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybXMo
dWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90PiB1bmlmb3JtSW5kaWNlcywgdWludDMy
X3QgcG5hbWUpIC0+IChWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5p
Zm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJf
dCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgdm9p
ZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlm
b3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGlu
dDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAs
IGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1h
c2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVh
dGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJ
c1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4gKFN0
cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEluc2VydEV2ZW50TWFya2Vy
RVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBhcmcw
KQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQo
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIERyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50
LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBHZXRJbnRlcm5h
bGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQz
Ml90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdjNDBjOTg1Y2I3ZDI3MjI4NjlhNWRm
Zjk2OTE5NDcwNzdhZjQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMCwwICsx
LDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKK2Ns
YXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgflJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxh
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgZmluYWw7
CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiBvdmVycmlkZXMu
CisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnQoQnVm
ZmVyKSBmaW5hbDsKKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBmaW5hbDsKK3ByaXZhdGU6Cisg
ICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBtX2Rpc3BsYXlC
dWZmZXI7Cit9OworCit9CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRH
TD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKSk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIs
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMs
IHRoaXMpKQoreworfQorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVm
ZmVyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQoreworICAg
IHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYTo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQoreworICAgIEFTU0VSVCgh
bV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKK30KKwordm9pZCogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGV0YWNo
Q2xpZW50KCkKK3sKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIuaGFu
ZGxlLCBudWxscHRyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdo
dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JE
aXNwbGF5KCk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlCdWZm
ZXIuc3VyZmFjZSk7CisgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgaWYgKGRpc3Bs
YXlCdWZmZXIpCisgICAgICAgIHNlbmRSaWdodCA9IGRpc3BsYXlCdWZmZXItPmNyZWF0ZVNlbmRS
aWdodCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMDE2MDJhZjQ5M2ViNjdkZTNlNjJjZjBlNTBhYzBh
MmI5OTI1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMCww
ICsxLDExODkgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNs
dWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisgICAgdm9pZCBzZXRGYWlsTmV4
dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2V0RmFpbE5leHRH
UFVTdGF0dXNDaGVjaygpOworICAgIH0KKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQz
Ml90IGVycm9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihl
cnJvcik7CisgICAgfQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBhY3RpdmVUZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1
cmUodGV4dHVyZSk7CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hhZGVyKHVpbnQzMl90IHByb2dy
YW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YXR0YWNoU2hh
ZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgfQorICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9u
KHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcmJiBuYW1lKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpOwor
ICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcx
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYXJnMSk7Cisg
ICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
YXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwg
YXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRSZW5kZXJidWZm
ZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4dHVyZSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0
dXJlKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRDb2xvcihmbG9hdCByZWQs
IGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAg
IHZvaWQgYmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb25T
ZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEp
OworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBk
ZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmMoc2ZhY3RvciwgZGZh
Y3Rvcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdC
LCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RS
R0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyh1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckNvbG9yKGZsb2F0
IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICB9
CisgICAgdm9pZCBjbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoaW50
MzJfdCBzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwocyk7CisgICAg
fQorICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJv
b2wgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGdyZWVuKSwgc3Rh
dGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oYWxw
aGEpKTsKKyAgICB9CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZv
aWQgY29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGJvcmRlcik7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9m
ZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAg
dm9pZCBjcmVhdGVCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVy
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBjcmVhdGVGcmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVG
cmFtZWJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9y
bUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVGV4
dHVyZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjdWxsRmFj
ZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jdWxsRmFjZShtb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRl
bGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0o
dWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShh
cmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApOworICAg
IH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVGV4
dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0
dXJlKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CisgICAgfQorICAgIHZvaWQg
ZGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhNYXNr
KHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAgfQorICAgIHZvaWQgZGVwdGhS
YW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0YWNoU2hhZGVyKHVp
bnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRl
dGFjaFNoYWRlcihhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlKHVpbnQzMl90
IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOworICAgIH0KKyAg
ICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICB9
CisgICAgdm9pZCBkcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMy
X3QgY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmly
c3QsIGNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHModWludDMyX3QgbW9kZSwg
aW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGVuYWJsZSh1aW50MzJf
dCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOworICAgIH0KKyAg
ICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQor
ICAgIHZvaWQgZmluaXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZmluaXNoKCk7Cisg
ICAgfQorICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mbHVzaCgp
OworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1aW50
MzJfdCBhcmczKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyk7CisgICAg
fQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGludDMyX3Qg
bGV2ZWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRh
cmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7CisgICAgfQorICAgIHZv
aWQgZnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZy
b250RmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0
YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7
CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAg
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9pZCBnZXRB
dHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEJ1ZmZl
clBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmcodWludDMyX3QgbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGbG9hdHYodWludDMy
X3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1
ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4g
dmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250
ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+
KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVn
ZXI2NCh1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwg
dWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHBuYW1lLCBp
bmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbSwg
cG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMYm9vbGVhbiwgND4gdmFs
dWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KHZhbHVlLmRh
dGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEVycm9yKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRFcnJvcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0
LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFNoYWRlcmkoYXJnMCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcw
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWludDMyX3QgcHJlY2lz
aW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3QsIDI+LCBpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0
ZDo6YXJyYXk8R0NHTGludCwgMj4gcmFuZ2UgeyB9OworICAgICAgICBHQ0dMaW50IHByZWNpc2lv
biA9IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hh
ZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+KHJlaW50ZXJwcmV0
X2Nhc3Q8aW50MzJfdCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNpemUoKSksIHByZWNpc2lvbik7
CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0U2hhZGVyU291cmNlKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
Zih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRl
eFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxv
Y2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVT
aXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0
aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwg
aW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVf
dD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odmFsdWUuZGF0
YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybXVpdih1aW50
MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50LCA0PiB2YWx1ZShz
dGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFZlcnRleEF0dHJp
Yk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
THNpemVpcHRyIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAgfQorICAgIHZvaWQgaXNC
dWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNCdWZmZXIoYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNhcCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xi
b29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+aXNFbmFibGVkKGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNGcmFtZWJ1ZmZlcih1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGFyZzApOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xl
YW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5p
c1Byb2dyYW0oYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJv
b2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNSZW5kZXJidWZmZXIodWludDMy
X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIoYXJnMCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgaXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFu
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNT
aGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJlKHVpbnQzMl90IGFyZzAs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBs
aW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGluZVdpZHRo
KGFyZzApOworICAgIH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lk
IHBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lk
IHBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKKyAgICB9CisgICAgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBi
b29sIGludmVydCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlQ292ZXJhZ2UodmFs
dWUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsKKyAgICB9CisgICAgdm9pZCBz
Y2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICB9CisgICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nJiYg
YXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFyZzAsIGFyZzEp
OworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVm
LCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuYyhm
dW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUodWlu
dDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywg
cmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsKKyAgICB9CisgICAg
dm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7
CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWls
LCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wKGZh
aWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUodWlu
dDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWls
LCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmYodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2
b2lkIHRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJf
dCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmKGludDMyX3QgbG9jYXRp
b24sIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlv
biwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0xZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
MWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xaXYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYo
bG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+
KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmkoaW50MzJf
dCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJp
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0
aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2KGludDMyX3QgbG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24sIHgsIHks
IHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0zaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRm
KGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00
ZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGkoaW50
MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHos
IHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm00aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEo
KSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoaW50
MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9j
YXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7Cisg
ICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZhbGlkYXRlUHJv
Z3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52YWxpZGF0ZVBy
b2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYodWludDMyX3QgaW5k
ZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmKGlu
ZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHkpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0
IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5
LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1
aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5k
ZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihub3JtYWxpemVkKSwgc3Ry
aWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB2
aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWln
aHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0
X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZl
ckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzEpLCB1c2FnZSk7Cisg
ICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpLCB1c2FnZSk7Cisg
ICAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9m
ZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBpeGVs
czAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRp
Y19jYXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCByZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB0ZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2Uy
RDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1h
dCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVs
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRl
ciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3Qg
eW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwg
aW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6
ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBp
bnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBm
b3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFu
Y2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3Qg
cHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2Vk
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxl
bWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlw
ZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3Ip
OworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZv
cm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBh
cmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShhcmcwKTsK
KyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRl
eEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRWZXJ0
ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJf
dCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwg
dWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4od3Jp
dGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9CisgICAg
dm9pZCBnZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1
aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3Rv
cjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdD
R0xpbnRwdHI+KG9mZnNldCksIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEu
ZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIo
aW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZ
MSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBk
c3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5ibGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgw
LCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2b2lkIGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVu
dCwgdWludDMyX3QgdGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRh
Y2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRh
dGVGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+JiYgYXR0YWNobWVudHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVG
cmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xlbnVtKj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFj
aG1lbnRzLnNpemUoKSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHJl
YWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkQnVm
ZmVyKHNyYyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1h
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhT
dG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkp
LCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQz
Ml90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdD
R0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3Vi
SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNl
dCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFn
ZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGlu
dDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6
ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
M0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90
IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGlj
X2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFn
ZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VT
aXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhZ0RhdGFMb2NhdGlvbih1
aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYWdE
YXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpKGludDMyX3QgbG9jYXRpb24s
IHVpbnQzMl90IHYwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpKGxvY2F0
aW9uLCB2MCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQzMl90IGxvY2F0aW9uLCB1
aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aShpbnQz
Ml90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYw
LCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVp
dihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1
aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
NHVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVp
bnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9z
ZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEu
ZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gy
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4
MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihpbnQzMl90
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0
cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0
cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBp
bnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aShpbmRl
eCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdih1aW50MzJf
dCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdDR0xTcGFu
PDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRhKCkpKSk7Cisg
ICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
eCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUs
IGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRp
Y19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdSYW5nZUVs
ZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMy
X3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5
cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRy
YXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgY2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZl
ciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIHZh
bHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBk
cmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+
KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJC
dWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdi
dWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCk7
CisgICAgfQorICAgIHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAgfQorICAgIHZvaWQgaXNRdWVy
eSh1aW50MzJfdCBxdWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNRdWVyeShxdWVyeSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpOwor
ICAgIH0KKyAgICB2b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xP
YmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVl
cnksIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1aW50IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aShx
dWVyeSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVTYW1wbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgfQorICAgIHZv
aWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2FtcGxl
cihzYW1wbGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4o
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcih1aW50MzJfdCB1bml0
LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kU2FtcGxl
cih1bml0LCBzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaSh1aW50
MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsK
KyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50
MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBs
ZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2Ft
cGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZmVuY2VTeW5j
KHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHN5
bmMgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5m
ZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihyZXR1cm5WYWx1
ZSkpKTsKKyAgICB9CisgICAgdm9pZCBpc1N5bmModWludDY0X3QgYXJnMCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+aXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0
cl90PihhcmcwKSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5bmModWludDY0X3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3luYyhyZWludGVycHJldF9jYXN0
PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICB9CisgICAgdm9p
ZCBjbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWludDY0X3Qg
dGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRTeW5jKHJlaW50ZXJwcmV0X2Nh
c3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNf
Y2FzdDxHQ0dMdWludDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50
MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT53
YWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
YXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0aW1lb3V0KSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgfQorICAgIHZvaWQgaXNUcmFuc2Zvcm1G
ZWVkYmFjayh1aW50MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUcmFuc2Zvcm1GZWVkYmFj
ayhpZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUcmFu
c2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblRyYW5zZm9y
bUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7CisgICAgfQorICAgIHZv
aWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRU
cmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2YXJ5aW5ncywgdWludDMy
X3QgYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CisgICAgfQorICAgIHZv
aWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90
IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4LCBhcmcy
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAg
IHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCByZXN1bWVUcmFuc2Zv
cm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlc3VtZVRyYW5zZm9ybUZl
ZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOworICAgIH0KKyAgICB2
b2lkIGJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50
MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihh
cmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJvZ3Jh
bSwgVmVjdG9yPFN0cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPHVpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQz
Ml90PiYmIHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBWZWN0b3I8R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNl
cywgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3Jh
bSwgU3RyaW5nJiYgdW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9y
bUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZv
cm1CbG9ja0luZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJv
Z3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0Jp
bmRpbmcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRpbmcocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAgIH0KKyAg
ICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90
IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiBwYXJh
bXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBu
YW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRhKCkpLCBw
YXJhbXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kw
LCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRz
dFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJf
dCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5ibGl0
RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkw
LCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBs
ZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5T0VTKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzAp
OworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlPRVMoYXJn
MCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQz
Ml90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKFN0
cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5p
bnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3JvdXBNYXJr
ZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwb3BHcm91
cE1hcmtlckVYVCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5w
b3BHcm91cE1hcmtlckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSht
b2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1v
ZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zmc2V0KSwgcHJpbWNv
dW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3Qg
aW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpOworICAg
IH0KKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gcGFyYW1z
KHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQt
PmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFt
cyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1zLmRhdGEoKSksIHBhcmFtcy5zaXpl
KCkpKTsKKyAgICB9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDQwMTdhMmE4ZjIyY2VjZWNjMjE1MWEz
MGEzMjc4ZmY5MDZlYWYzMmEuLjY3NDhkMWY1ZDgwMGQ5NTc0ZjIzODA3NWIxODkwYjRlNGFjZWU5
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBkNmVlMmJjYmNhYjZhNzBlNDJkMGU5ODg0OWFhODEz
MDA5NjRjYTI4Li44OWZiOGFiYWY5YWVjZTA3YzYzNDcwZGEzZGI4M2M4ODMyNmRkM2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNiw2ICsyMTYsNyBA
QCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAn
V2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCisg
ICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMnLAogICAgICAgICAn
V2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDQsNiArMjQ1LDcgQEAgZGVmIHR5cGVzX3Ro
YXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6RGlzcGxh
eUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCiAgICAgICAg
ICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OkdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAg
ICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQnLApAQCAtNTMxLDYgKzUzMyw3
IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAg
ICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVu
dF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0
b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFk
ZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hl
YWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3Vt
ZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZSc6IHsnaGVhZGVy
cyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyci
QXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgfQogCiAgICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9Q
PHRlbXBsYXRlX25hbWU+Lis/KTwoP1A8cGFyYW1ldGVyX3N0cmluZz4uKyk+JywgdGVtcGxhdGVf
c3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggZTc5OGU5MTJlNDdiMGQ4ZDBmMDM4ZTdmNzZkNzBmYzA2YWY2ZWNhZS4uMDMyNTIx
MWE5YWQwMTdiZGQyYWRjNWU2MTdiODNkN2Y5N2Y5NWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMTY3LDQgKzMxNjcsODIgQEAg
T3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBXVEZNb3ZlKCpyZXN1bHQpIH07
CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbHBoYTsKKyAg
ICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFudGlhbGlhczsKKyAgICBlbmNv
ZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOworICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJj
ZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wyOworICAgIGVuY29kZXIgPDwg
YXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZl
cmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy54ckNv
bXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3RlbmNpbCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVz
LmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZXNl
cnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcykpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRy
aWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGV2aWNl
UGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2UpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCit2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLm5hbWU7CisgICAg
ZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnNp
emU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZv
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2
ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5zaXplKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5mbzsKK30KKworI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAppbmRleCA5MmFmNjEzYmRmY2U3MmY0MzVjNDBiNDM4ZjJiMjhjZDQ0OGY2YTk1
Li5mZTc4NThmZjljYTZhNGZjYzU5ZjEyNDNiMzgxMzQ0ZWM1ZGZmY2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzEsNiArNzEsMTMgQEAK
ICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdU
RiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIxMCwxMCBAQCBzdHJ1Y3QgU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0aCA9IFZhcmlhbnQ8U3RyaW5n
LCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0IENhY2hlSW5mbzsKIHN0cnVj
dCBSZWNvcmQ7CkBAIC04NjgsNiArODc5LDE5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogfTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mKTsKKyAgICBzdGF0aWMg
T3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2Ug
V1RGIHsKQEAgLTEwMzYsNCArMTA2MCwxNiBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewogCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93
ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93
ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsKK307CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDIxY2Q2NWIyOGQ0NmZkZWRiNjYyYzRjYmZmNzk5ZWRl
YWI1ZTc1ODMuLjM4Y2E2ODkyMmVhYWNhY2M2ZjBhMTU1NDNiZGE2YzkwMDE0OGRiZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyRE9NSW5H
UFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzOwor
I2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlcldlYkdMSW5HUFVQ
cm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlEZWNvZGVyOwog
ICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwogI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKQEAgLTUxMiw2ICs1MTUsMTAgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJ
bkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShX
RUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2Vi
R0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2Rl
cikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZmUyOWFmMjBhODhhNTllMWVi
YTZjZThmYmNiNWQ1YTZjM2EzNTQyNC4uYzg3OGU2ZDk4MWZhOTQ0NDk3ZjAyN2ZhYTMyMTA5N2Yy
ZDY5YmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNl
IH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAg
IGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07
CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAg
IGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA4OWQ3YjY1YzY3NTE0ZTkwYzNmZGUyNDky
MDg3NTdmNGE2NmU4NWEyLi4zYWY0NGEwODc0ZDEyNTY4NzdmZGE5ZTEzMjczMWIzZmI3N2ZiM2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1h
bmFnZXIuY3BwCkBAIC02OTQsMyArNjk1LDUgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAK
IFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKIFdlYlByb2Nl
c3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisKK1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDRlYThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJkNmY5NzMuLjE3NmZjOWExNzUw
MWJjNTlmOTY2OTk5MjNhZmNiYWE5M2U4ZDAxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTU2LDYgKzU2LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAKIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKIAog
R1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2VydmljZUVudHJ5UG9p
bnQubW0KK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5j
cHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3MvbWFjL0dQVVBy
b2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclBy
b3h5LmNwcApAQCAtNjMsNiArNjQsOCBAQCBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHlDb2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5tbQogCisKKwogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKIFBsYXRmb3JtL2NsYXNz
aWZpZXIvY29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKQEAg
LTU3NSw2ICs1NzgsOCBAQCBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9X
ZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VC
YWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjg3LDYgKzY5Miw3IEBAIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcAogU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTAxMWE1YjFkOWM5MmU5ZjczMDI5NDE0ZjEz
M2IyZjA5MTFhMWQ0My4uNWViMzcxZjIyMDU4ZjZmMGI2NWYzZWZhMDUzMzdmM2U3N2QwNTYzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03OTQ1LDYgKzc5
NDUsOSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yQ2Fu
dmFzUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5H
UFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5h
YmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzID0gcHJl
ZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCk7CisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgPSBwcmVm
ZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JXZWJHTEVuYWJsZWQoKTsKKyNlbmRpZgogCiAgICAg
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNv
ZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmQyODJl
NDY2ZWE0NzQ0ZjBmNTJiMzNlY2M2YTliMDM4ODYzOWQ1Zi4uZTk0MmFkNjdjOTI1YTM3NjRkYzgy
OGE0OWVjZmI0YTBmMjljNTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MTIsNyArNzEyLDYgQEAKIAkJMkQ5MkE3N0IyMTJCNkE3
MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVu
dENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2ht
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkQ5MkE3
N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENv
bm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJl
ZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi87IH07CiAJ
CTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAv
KiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZEIC8qIEVuY29k
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMw
MzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9OwogCQkyRDkyQTc4MTIx
MkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAv
KiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtNDQwNSw2ICs0NDA0LDE2IEBACiAJ
CTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NTI1NEFGREVB
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NzI1NEFGRTE3MDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY5MjU0QUZFQTcwMDZF
RUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFD
OENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJB
MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjcxMiwxMSArNjcyMSwxMSBAQAogCQkJCTFBRUZEMjc4MTFEMTZD
ODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJCQkJMUEzRDYxMDQxM0E3RjAzQTAw
Rjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVGRDJGNjExRDE4MDdCMDA4
MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQg
LyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0
dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlv
bi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uaCAq
LywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8s
CiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJ
CQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJE
OUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKQEAgLTgzODgsMTEgKzgzOTcsMTYg
QEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJRjQwOTRD
QkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJ
CQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAq
LywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4
RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJ
CQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovLAorCQkJCTdCOTA0MTY2MjU0
QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8sCisJCQkJ
N0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
bWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovLAogCQkJCTcyN0E3
RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJ
NTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oICovLApAQCAtODQxMCw2ICs4NDI0LDExIEBACiAJCQkJRjQwOTRDQkMyNTUz
MDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5
NENCQjI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCAqLywKIAkJ
CQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5o
ICovLAorCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjY4MjU3NjgwRUYw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLywKKwkJCQk3Qjkw
NDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2QwMzUyMTJjNjEy
NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKK30KKwor
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgIDogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgbWVz
c2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sKKyAgICBJUEM6
Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAo
KTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVCdWZmZXIoKTsK
KyNlbmRpZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgbV9jdXJy
ZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdo
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3Bs
YXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxh
eTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgYXV0byYgc2Mg
PSBwbGF0Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CisgICAg
ICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOworICAg
IH0KKyNlbHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogQ3Vy
cmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgdGhl
IHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM0
OQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYgYXZhaWxhYmxl
RXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAgICBpZiAobV9k
aWRJbml0aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVkIG91dCBiZWZv
cmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1
ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAgIGZvciAoYXV0
byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9y
Y2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Ondhc0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1f
Y2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNh
dGlvbigpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRVbnRp
bEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1
cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAg
IGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGlu
Z0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRpbWVkIG91
dCwgc28gcmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hvdWxkIGxvc2Ug
dGhlIGNvbnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJWE1FOiBOZWVk
IHRvIG1hcmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUgdG8gZm9yY2Ug
bG9zdCBpbiB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDk5ZWRhMjlmNmRiNWUxODE5NzEzMTc4ZjJhYTUzMWI0ZjVkZDZlMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNDExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBv
ZiBHcmFwaGljc0NvbnRleHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlvbgorLy8gY29u
dmVydHMgdGhlIGludGVyZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdlcyBhbmQgc2Vu
ZHMgdGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJv
Y2Vzcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5u
aW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIK
KyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVibGljIFdlYkNv
cmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSgpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJy
aWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVz
LgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOworICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7CisgICAgdm9pZCBu
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4
dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
RGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsKKworICAgIC8v
IEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMg
dXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNldEZhaWxOZXh0
R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xl
bnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5h
bDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUp
IGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZFJlbmRlcmJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAg
dm9pZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkg
ZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdy
ZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOworICAgIHZvaWQg
YmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJsZW5kRXF1YXRp
b25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpIGZpbmFsOwor
ICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpIGZp
bmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51
bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkgZmluYWw7Cisg
ICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpIGZpbmFs
OworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAgIHZvaWQgY2xl
YXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVl
LCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0NHTGNsYW1w
ZiBkZXB0aCkgZmluYWw7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBzKSBmaW5hbDsK
KyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBH
Q0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjb21w
aWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZlcigpIGZp
bmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5hbDsKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdM
T2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVGV4dHVyZSgpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0gbW9kZSkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5h
bDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAg
IHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQgZGVwdGhNYXNr
KEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShHQ0dMY2xhbXBm
IHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2
b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdD
R0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmluYWw7CisgICAg
dm9pZCBkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFibGUoR0NHTGVu
dW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50
IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZvaWQgZmx1c2go
KSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7CisgICAgdm9pZCBm
cm9udEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChH
Q0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpIGZpbmFs
OworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEF0
dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKSBm
aW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dMZW51bSBuYW1l
KSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRl
Z2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJbnRlZ2VyNjRp
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NHTGludCBnZXRQ
cm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsK
KyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVh
bj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7CisgICAgR0NH
TGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBn
ZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZv
cm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3Bh
bjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsKKyAgICBTdHJp
bmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NH
TGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkg
ZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CisgICAgdm9p
ZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFVuaWZv
cm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmlu
YWw7CisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVkKEdDR0xlbnVt
IGNhcCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkg
ZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZp
bmFsOworICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQg
dW5pdHMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwg
R0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAg
dm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmKSBm
aW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBH
Q0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVu
dW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spIGZpbmFs
OworICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBz
dGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spIGZpbmFsOwor
ICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51
bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNl
LCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpIGZpbmFsOwor
ICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkg
ZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFsOworICAgIHZv
aWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdD
R0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xp
bnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkp
IGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQg
eikgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9h
dCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBmaW5hbDsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwg
R0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAg
dm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xl
bnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZpbmFsOworICAg
IHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRh
KSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZp
bmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQg
dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7Cisg
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CisgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBk
aXZpc29yKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdl
dCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0
ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAs
IEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0
WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRm
aWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9y
bUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOwor
ICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48
Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBh
dHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmlu
YWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIHRl
eFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZp
bmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0
ciBvZmZzZXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAs
IEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdD
R0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0y
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDJm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2
b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KSBm
aW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdS
YW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZp
bmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJh
d2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVy
ZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVu
Y2lsKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICBH
Q0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFsOworICAgIHZv
aWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZp
bmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBQbGF0
Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZp
bmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVy
eSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlU2Ft
cGxlcigpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxh
dGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0p
IGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICBHQ0dMZmxv
YXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMc3luYyBm
ZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpIGZpbmFsOwor
ICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRl
bGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xpZW50V2FpdFN5
bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQp
IGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZs
YWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRTeW5jaShHQ0dM
c3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBj
cmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVHJhbnNmb3Jt
RmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNU
cmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAgICB2b2lkIGJp
bmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQp
IGZpbmFsOworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRp
dmVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7Cisg
ICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKSBm
aW5hbDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAg
ICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZVRy
YW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikgZmluYWw7
CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRl
eCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlw
dHIpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSBm
aW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBm
aW5hbDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7Cisg
ICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBh
cmFtcykgZmluYWw7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmlu
YWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50
IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dM
aW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFz
aywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZp
bmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVY
VChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQo
KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVt
PiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291
bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQs
IEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICB2b2lk
IGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29s
dW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lk
IHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAg
ICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVy
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZpbmFsOworICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBn
ZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RnJh
bWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0TXVsdGlzYW1w
bGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmluYWw7CisgICAg
dm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBn
ZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZpbmFsOworICAg
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICAvLyBF
bmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgorCitwcm90ZWN0
ZWQ6CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgor
ICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAv
LyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQoU3RyaW5nJiYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAg
dm9pZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYpOworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8vIFRoZSBHQ0dM
IHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNl
ZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMYm9v
bGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NH
TGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dM
Ynl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1Ynl0ZSwg
dWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hvcnQsIGludDE2
X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwgdWludDE2X3Q+
KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJfdD4pOworc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8UGxhdGZv
cm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xjaGFyKSA9
PSBzaXplb2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludDY0KSA9PSBz
aXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2NCkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSk7CisvLyBHQ0dMc3luYyBhbmQgR0NHTCpwdHIgdHlwZXMgYXJlIHBvaW50
ZXJzLiBPbiBzb21lIHBsYXRmb3JtcywgdGhleSBhcmUgMzItYml0LgorLy8gQ3VycmVudGx5IHdl
IGhhcmQtY29kZSBpdCBieSB1c2luZyA8PSwgYW5kIGFzc3VtZSB0aGF0IHdlIGRvIG5vdCB0cmFu
c2ZlciBhcnJheXMgb2YgdGhlIHR5cGVzLgorc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGludHB0
cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMc2l6ZWlw
dHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHZvaWRw
dHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHN5bmMp
IDw9IHNpemVvZih1aW50NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXplb2YoaW50cHRy
X3QpKTsKKy8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQu
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJiMzJi
MmJjMTAxMGVmOGVjZDBhZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNv
dW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywg
U3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3QoKQorICAgIHZv
aWQgV2FzQ2hhbmdlZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0
aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3ZWNmODY1NTZhMDA3M2FmOGY1NTRjZmNmYzBlZjMzOWY2MWU4OWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0wLDAgKzEsMTY0
NiBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1
cC13ZWJnbC4gRG8gbm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVy
cm9yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50
aGVzaXplR0xFcnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJy
b3JzVG9TeW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVt
IHRleHR1cmUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZVRleHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dy
YW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRp
b24oYXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
aW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJi
dWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFy
Z2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBi
bHVlLCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51
bSBtb2RlQWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFj
dG9yLCBkZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVt
IHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0
QWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJs
ZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0
dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBm
IGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVh
biBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRp
Y19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0
PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1Bs
YXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVy
KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
RnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9i
amVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRl
cmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRl
cmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcw
KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
VGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1
cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZm
ZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpG
YXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRo
UmFuZ2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXko
aW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51
bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVu
YWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVp
bnQgaW5kZXgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBy
ZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
dGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGlu
dCBsZXZlbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMs
IGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2RlKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRh
cmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAgICBib29sIHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBh
cmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRB
Y3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFj
dGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmlu
Zzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0
PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5Owor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAg
ICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAq
IHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1
ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAg
ICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAq
IHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50NjRf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGlu
dDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKK3sK
KyAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9n
cmFtaShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGJvb2xlYW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4g
dmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFs
dWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAo
c2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgp
LCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NHTGVudW0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKK3sK
KyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dM
ZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
U3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHByZWNpc2lvblR5
cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNpb24pCit7Cisg
ICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5OworICAgIGludDMy
X3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVj
aXNpb25SZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBp
ZiAoc2VuZFJlc3VsdCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBseS5k
YXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBpZiAocHJl
Y2lzaW9uKQorICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5OworICAgIH0K
K30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJj
ZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hh
ZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNo
YWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMZmxvYXQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1l
dGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQ
YXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVl
KQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJl
c3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1
ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7CisgICAgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAg
IG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNp
emVvZihpbnQzMl90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFt
LCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5
KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVp
bnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJn
MCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxv
Y2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXplaXB0ciBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVy
dGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2Rl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBib29sIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNFbmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZh
bHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNG
cmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1
cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1By
b2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUp
OworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRl
cmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVy
blZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRl
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9
CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShh
cmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRo
KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJv
Z3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9m
ZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0
cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVy
YnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFu
IGludmVydCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
U2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hh
ZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2Uo
YXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBH
Q0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywg
R0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBt
YXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2sp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dM
dWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWws
IHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51
bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNl
cGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJh
bWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1l
dGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFy
Z2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0x
aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9j
YXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2Nh
dGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
M2YobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRh
dGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHop
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBH
Q0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHos
IHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1
ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVl
LmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJh
bnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliMWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
MmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NH
TGZsb2F0IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1
ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRl
eEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwg
R0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHks
IHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFs
dWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
UG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dM
Ym9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXpl
ZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRh
MCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1
YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBp
eGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0
YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChz
ZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBk
YXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhl
bHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleElt
YWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21w
cmVzc2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50
cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0Fy
cmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1l
bnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3Ip
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZl
cnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5
KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRh
cmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGlu
dHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQs
IHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0
YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRh
dGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAo
c2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwg
ZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NH
TGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwg
R0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxk
IG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kx
LCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IGxheWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpG
cmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVs
LCBsYXllciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZl
cih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIo
dGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0g
c3JjKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFk
QnVmZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxl
dmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0
YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdl
M0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgs
IGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXpl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
aW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJh
Z0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFt
LCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxv
Y2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTF1aShsb2NhdGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBH
Q0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVp
bnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2Miwg
djMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00
dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
TWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0
cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2Up
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdD
R0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZh
bHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dM
dWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4
LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRl
eCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9p
bnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBH
Q0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwg
dHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRh
dGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZh
bHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xl
YXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVy
LCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVy
dWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1
ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZm
ZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1
ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
UXVlcnkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnko
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmpl
Y3R1aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQoreworICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZh
bHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxl
cihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBs
ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwg
cG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRl
cmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxl
clBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKK3sK
KyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVy
Zjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBs
ZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NH
TGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWludDY0X3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxH
Q0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9CisKK0dDR0xi
b29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3luYyBhcmcw
KQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2Fp
dFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVv
dXQpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAs
IEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2Fz
dDxpbnQ2NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3lu
YyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3lu
Y2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzAp
KSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHVp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrKGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVh
biBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRm
b3JtR0xPYmplY3QgaWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJh
Y2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVl
ZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFj
ayh0YXJnZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NH
TGVudW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwg
UGxhdGZvcm1HTE9iamVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAgVmVjdG9yPHVp
bnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1l
cyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVt
IHBuYW1lKQoreworICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZv
cm1CbG9ja05hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJ
bmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5p
Zm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9j
a05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
QmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3Jh
bSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMp
Cit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBw
bmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAg
bWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICog
c2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBpbnQzMl90IHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0
RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNy
Y1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50
IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVy
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJh
bWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBk
c3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZVZlcnRleEFycmF5T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRl
eEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVy
dGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRN
YXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZz
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVm
ZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9k
ZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwg
cHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZp
c29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IHBhcmFtcykKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1Jl
cGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0
LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEludGVybmFsZm9ybWF0aXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBz
aXplb2YoaW50MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1
bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQq
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5PTElOVAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVsdGlzYW1wbGVmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExl
dmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0
KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dWludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJh
OGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNlYmY4NDA4N2E4
YzI2MzRlOWQ1NDkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgsNiArMTA4LDEw
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
Lmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTkxMiw2
ICs5MTYsMjIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4gbV9wYWdlLmVu
c3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQp
OwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93
RGlzcGxheUlEKSBjb25zdAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgVU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUo
YXR0cmlidXRlcyk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNl
bmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdlYkNocm9tZUNs
aWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJj
ZDMzNzYwZGM4Li4xMjE1ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUwNTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyNp
ZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBj
cmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlE
KSBjb25zdCBmaW5hbDsKICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dl
ckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CkBA
IC00MDMsNiArNDA3LDcgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1h
aW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9v
bCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKKwogICAg
IFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggOTc4Y2M3ZDE4ZGNlMGY3ZTRlOGEzNjU5NTlmNThkMzQzYWQy
MTAxOS4uYjBhYThkZjJlYTE4NTg1ZjI3ZWIxMzNjYzA5OGQ1ZGZiMjQzOTAyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQyNyw2ICs0Mjcs
OSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRlckNhbnZhc0lu
R1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIH0K
ICAgICAsIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRS
ZW5kZXJET01JbkdQVVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nl
c3MgeyBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxF
KFdFQkdMKQorICAgICwgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IHBhcmFtZXRl
cnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7
IHBhcmFtZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNlbmRpZgpAQCAt
NzMyLDcgKzczNSw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVudDxXZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnko
KSk7CiAjZW5kaWYKLSAgICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVGYWN0b3IgIT0g
MSkKICAgICAgICAgc2NhbGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKTsKIApAQCAt
MzgwMCwxMCArMzgwMiwxMiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJ
bkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nl
c3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgJiYgRHJhd2lu
Z0FyZWE6OnN1cHBvcnRzR1BVUHJvY2Vzc1JlbmRlcmluZyhtX2RyYXdpbmdBcmVhVHlwZSkpOwog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShtX3No
b3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7Ci0KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1
cHBvcnQgd2ViIGZvbnRzIGluIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBpZiAobV9zaG91bGRSZW5k
ZXJET01JbkdQVVByb2Nlc3MpCiAgICAgICAgIHNldHRpbmdzLnNldERvd25sb2FkYWJsZUJpbmFy
eUZvbnRzRW5hYmxlZChmYWxzZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdM
SW5HUFVQcm9jZXNzKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdf
QVBJKQpAQCAtNzAwMyw2ICs3MDA3LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJvbml6ZUNPUlNE
aXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDT1JTRGlzYWJs
aW5nUGF0dGVybnMobV9pZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyksIDApOwog
fQogCisKICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNh
Z2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM2MmFkNzdiZTZhZTMy
ZTBlNjljYTkzZWJmYzYyM2VhNWRiY2ZlODQuLmZhMTMzNTRkZGZmMjMyODQ1MGI5YzcyY2RhYzRk
Y2Y3YWU0NTRiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTE4MzIsNiArMTgzMiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFJlbmRlckRP
TUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlNZWRpYUluR1BV
UHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV9zaG91bGRS
ZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJr
cyB7IGZhbHNlIH07CiAjZW5kaWYKQEAgLTIxODksNCArMjE5MiwzIEBAIGlubGluZSBib29sIFdl
YlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpG
cmFtZSYpIGNvCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjM2ZhODFlZGMwMGViNjkyNzczY2M3M2Y5
ZjRhYWRjY2UxZGNjMTMyLi5iZDI5OTkwZjk4MWJlODk0Nzg1MmIwN2M5MmJhYjNjYjVkODUzNGFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTUzLDYgKzE5
NTMsMjAgQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoUmVu
ZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisKKyNp
ZiBFTkFCTEUoV0VCR0wpCit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JXZWJH
TChib29sIHVzZUdQVVByb2Nlc3NGb3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQVVByb2Nlc3NGb3JX
ZWJHTCA9IHVzZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworYm9vbCBXZWJQcm9jZXNzOjpzaG91
bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNl
R1BVUHJvY2Vzc0ZvcldlYkdMOworfQorCisjZW5kaWYKKwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VlA5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTljNDdkYjRjNDQ3
YzBmNGFiNjI3YzA5NGI1ZjY4ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMyNzY0YzRkODUzNzkw
OTBiMmNiY2E3M2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0z
NDcsNiArMzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JET01S
ZW5kZXJpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEoYm9vbCk7
CiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5n
UHVycG9zZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0Zv
cldlYkdMKGJvb2wpOworICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wo
KSBjb25zdDsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpAQCAtNjg3LDYgKzY5
MSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJp
bmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFsc2UgfTsKKyNp
ZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JXZWJHTCB7IGZhbHNl
IH07CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmZWJkMDc0NDhkMjc2NzFlMDVhYzE4
OTNhZDM0ZDY4NmVlNjQxZTQzLi5mMDA2MmNiZjc5MTBhNTFkMmM3NWEyNWI1OTM4ZmQ5YTBmYTMw
NWJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgorCisgICAgICAgIEltcGxlbWVudHMgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFw
aGljc0NvbnRleHRHTCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJlbnQgaW1wbGVtZW50
YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQyBhbmQgaXMgaW5jb21wbGV0ZS4KKworICAgICAgICBB
ZGQgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbi4gQ3Vy
cmVudGx5CisgICAgICAgIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGVzIGEgV2ViS2l0IElQQyBpbXBs
ZW1lbnRhdGlvbi4KKworICAgICAgICBUaGUgaW5wdXQgZGVmaW5pdGlvbiB0byB0aGUgZ2VuZXJh
dG9yIGlzIHRoZSBwcm94eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBoZWFkZXIgZmlsZXMuCisg
ICAgICAgIFRoZSBvdXRwdXQgb2YgdGhlIGdlbmVyYXRvciBpcworICAgICAgICAgICAtIFdlYktp
dCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGZpbGUKKyAgICAgICAgICAgLSBNZXNzYWdlIHNlbmRl
ciBjb2RlCisgICAgICAgICAgIC0gTWVzc2FnZSByZWNlaXZlciBhbmQgcGF5bG9hZCBpbnZvY2F0
aW9uIGNvZGUKKworICAgICAgICBUaGUgZ2VuZXJhdG9yIGNvbnZlcnRzIEdyYXBoaWNzQ29udGV4
dEdMIEdDR0wgLXByZWZpeGVkIHR5cGVzIHRvCisgICAgICAgIHNpemVkIElQQyB0eXBlcy4KKwor
ICAgICAgICBUaGUgZ2VuZXJhdG9yIGlzIGludm9rZWQgZHVyaW5nIGRldmVsb3BtZW50IHRpbWUg
YW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBzdG9yZWQgaW4gdGhlIHJlcG9zaXRvcnkuCisK
KyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6IEFkZGVkLgorCiAyMDIwLTEy
LTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgSW5jcmVhc2UgbWF4aW11bSBzaXplIG9mIFdLQ29udGVudFJ1bGVMaXN0CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2YjQyMjI5Y2YyZjgyOGM2NmM3ZTdiNDE3NzNj
MmViZTQ0MzExNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbApAQCAtMCwwICsxLDEwNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSot
IGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIFRoaXMgc2NyaXB0
IGdlbmVyYXRlcyB0aGUgc291cmNlIGZpbGVzIGZvciBXZWJHTCBHUFUgcHJvY2VzcyBJUEMuCisj
CisjIHB5dGhvbjMgLW0gYmxhY2sgLWwgMTUwIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbAorIyBweXRob24zIC1tIG15cHkgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmds
CisjCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBlbnVtCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0
IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgY29sbGVjdGlvbnMKKworZnJvbSB0eXBpbmcgaW1wb3J0
IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdl
bmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIKKworcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9f
ZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCitleHRlbnNpb25zX2lucHV0
X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3Jh
cGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgorCitmdW5jdGlvbnNfaW5wdXRfZm5zID0gWworICAg
IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8g
ImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCitdCit0eXBlc19p
bnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAv
ICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisK
KwordGVtcGxhdGVfcHJlYW1ibGUgPSAiIiIvKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGlzIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyIiIgorY29udGV4dF9m
dW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2Vz
cyIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmgiCitjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVh
bWJsZQorICAgICsgIiIiLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJp
dmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50
YXRpb25zLgorI3ByYWdtYSBvbmNlCit7fQorCisiIiIKKykKK2NvbnRleHRfbWVzc2FnZXNfZm4g
PSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIgLyAiZ3JhcGhp
Y3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIgorY29udGV4dF9tZXNz
YWdlc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CisgICAgdm9pZCBSZXNoYXBlKGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQg
UHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5j
aHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgUHJlcGFyZUZv
ckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBFbnN1cmVFeHRl
bnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKQore30KK319CisKKyNlbmRpZgorCisiIiIKKykKKworY29udGV4dF9wcm94eV9m
dW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2Vz
cyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1
bmN0aW9uc0dlbmVyYXRlZC5jcHAiCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZSA9
ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJLaXQge3sKK3t9
CisKK319CisKKyNlbmRpZgorCisiIiIKKykKKworCitkZWYgd3JpdGVfZmlsZShmbiwgbmV3X2Nv
bnRlbnRzKToKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoKKyAgICAgICAg
ICAgIGlmIGYucmVhZCgpID09IG5ld19jb250ZW50czoKKyAgICAgICAgICAgICAgICByZXR1cm4K
KyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKyAgICB3aXRoIG9wZW4oZm4sICJ3IikgYXMgZjoK
KyAgICAgICAgZi53cml0ZShuZXdfY29udGVudHMpCisKK2NsYXNzIGNwcF90eXBlKG9iamVjdCk6
CisgICAgdHlwZV9uYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUg
OiBzdHIpOgorICAgICAgICBzZWxmLnR5cGVfbmFtZSA9IHR5cGVfbmFtZQorCisgICAgZGVmIF9f
c3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAgZGVmIF9f
aGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnR5cGVfbmFtZSkKKworICAg
IGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lCisKKyAg
ICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1l
ID09IG90aGVyLnR5cGVfbmFtZQorCisgICAgZGVmIGlzX3ZvaWQoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lIGluIFsidm9pZCIsICJHQ0dMdm9pZCIsICJjb25z
dCB2b2lkIiwgImNvbnN0IEdDR0x2b2lkIl0KKworICAgIGRlZiBpc19jb25zdChzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUuc3RhcnRzd2l0aCgiY29uc3QgIikK
KworICAgIGRlZiBpc19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZh
bHNlCisKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZikgLT4gYm9v
bDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcG9pbnRlcihzZWxm
KSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19yZWZlcmVuY2Uo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3Rf
cmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVm
IGdldF92YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBzZWxm
CisKKyAgICBkZWYgZ2V0X2RlY2F5X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAg
aWYgc2VsZi5pc19jb25zdCgpOgorICAgICAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxm
LnR5cGVfbmFtZVs2Ol0pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgZ2V0X3J2YWx1
ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUo
c2VsZi50eXBlX25hbWUgKyAiJiYiKQorCisgICAgZGVmIGdldF9wb2ludGVyX3R5cGUoc2VsZikg
LT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxmLnR5cGVfbmFt
ZSArICIqIikKKworY2xhc3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBlKToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjb250YWluZXJfbmFtZSA6IHN0ciwgY29u
dGFpbmVkX3R5cGUgOiBjcHBfdHlwZSwgYXJpdHkgOiBPcHRpb25hbFtpbnRdID0gTm9uZSk6Cisg
ICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2VsZi5j
b250YWluZXJfbmFtZSA9IGNvbnRhaW5lcl9uYW1lCisgICAgICAgIHNlbGYuY29udGFpbmVkX3R5
cGUgPSBjb250YWluZWRfdHlwZQorICAgICAgICBzZWxmLmFyaXR5ID0gYXJpdHkKKyAgICBkZWYg
aXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgZGVm
IGlzX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25h
bWUgPT0gIkdDR0xTcGFuIgorICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUgPT0gIkdDR0xTcGFuIiBhbmQgc2Vs
Zi5hcml0eSBpcyBOb25lCisgICAgZGVmIGdldF9jb250YWluZXJfbmFtZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUKKyAgICBkZWYgZ2V0X2FyaXR5KHNlbGYpIC0+
IE9wdGlvbmFsW2ludF06CisgICAgICAgIHJldHVybiBzZWxmLmFyaXR5CisgICAgZGVmIGdldF9j
b250YWluZWRfdHlwZShzZWxmKSAtPiBjcHBfdHlwZToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29u
dGFpbmVkX3R5cGUKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlLmlzX2NvbnN0KCkKKworZGVmIGNy
ZWF0ZV9jcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBf
dHlwZV9jb250YWluZXJdOgorICAgIG0gPSByZS5tYXRjaChyIihbXHc6XSspPCguKyk+JCIsIHR5
cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBjb250YWlu
ZXJfbmFtZSA9IG1bMV0KKyAgICB0ZW1wbGF0ZXMgPSBtWzJdCisgICAgYXJpdHkgPSBOb25lCisg
ICAgbSA9IHJlLm1hdGNoKHIiKFteLF0rKSxccyooXGQrKSIsIHRlbXBsYXRlcykKKyAgICBpZiBt
OgorICAgICAgICB0ZW1wbGF0ZXMgPSBtWzFdCisgICAgICAgIGFyaXR5ID0gaW50KG1bMl0pCisg
ICAgcmV0dXJuIGNwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUsIGNvbnRhaW5lcl9uYW1lLCBn
ZXRfY3BwX3R5cGUodGVtcGxhdGVzKSwgYXJpdHkpCisKK2NsYXNzIGNwcF90eXBlX2Z1bmN0aW9u
KGNwcF90eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCByZXR1
cm5fdmFsdWVfdHlwZSA6IGNwcF90eXBlLCBhcmd1bWVudF90eXBlcyA6IExpc3RbY3BwX3R5cGVd
KToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBz
ZWxmLnJldHVybl92YWx1ZV90eXBlICA9IHJldHVybl92YWx1ZV90eXBlCisgICAgICAgIHNlbGYu
YXJndW1lbnRfdHlwZXMgPSBhcmd1bWVudF90eXBlcworCitkZWYgY3BwX3NwbGl0X2FyZ3Nfc3Bl
Y3MoYXJnc19zcGVjIDogc3RyKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAjIGh0dHBzOi8vc3Rh
Y2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMzNTI3MjQ1L3B5dGhvbi1zcGxpdC1ieS1jb21tYS1z
a2lwcGluZy10aGUtY29udGVudC1pbnNpZGUtcGFyZW50aGVzZXMKKyAgICBjb21tYSA9IHIiLCg/
ISg/OltePF0qXDxbXj5dKlw+KSpbXjw+XSpcPikiCisgICAgcmV0dXJuIGZpbHRlcihOb25lLCBb
YS5zdHJpcCgpIGZvciBhIGluIHJlLnNwbGl0KGNvbW1hLCBhcmdzX3NwZWMuc3RyaXAoKSldKQor
ICAgIAorZGVmIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUgOiBzdHIpIC0+IE9w
dGlvbmFsW2NwcF90eXBlX2Z1bmN0aW9uXToKKyAgICBtID0gcmUubWF0Y2gocicoLiopXCgoLiop
XCknLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAg
cmV0dXJuX3ZhbHVlX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICBhcmdzX3R5cGVzID0g
W2dldF9jcHBfdHlwZShhKSBmb3IgYSBpbiBjcHBfc3BsaXRfYXJnc19zcGVjcyhtWzJdKV0KKyAg
ICByZXR1cm4gY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lLCByZXR1cm5fdmFsdWVfdHlwZSwg
YXJnc190eXBlcykKKyAgICAgICAgCisjIFBvaW50ZXIgb3IgcmVmZXJlcmVuY2UKK2NsYXNzIGNw
cF90eXBlX2luZGlyZWN0KGNwcF90eXBlKToKKyAgICBjYXRlZ29yeSA6IHN0cgorICAgIHZhbHVl
X3R5cGUgOiBjcHBfdHlwZQorICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlX25hbWUg
OiBzdHIsIGNhdGVnb3J5IDogc3RyLCB2YWx1ZV90eXBlIDogY3BwX3R5cGUpOgorICAgICAgICBj
cHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY2F0ZWdvcnkg
PSBjYXRlZ29yeQorICAgICAgICBzZWxmLnZhbHVlX3R5cGUgPSB2YWx1ZV90eXBlCisKKyAgICBk
ZWYgaXNfY29uc3RfcG9pbnRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkg
PT0gJyonIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcG9pbnRlcihzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBub3Qgc2VsZi5pc19jb25zdCgp
CisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
Y2F0ZWdvcnkgPT0gJyYnIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcmVmZXJlbmNl
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicgYW5kIG5vdCBzZWxm
LmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcnZhbHVlX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYmJworICAgIGRlZiBnZXRfdmFsdWVfdHlwZShzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVfdHlwZQorCitkZWYgY3JlYXRlX2NwcF90eXBl
X2luZGlyZWN0KHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfaW5kaXJlY3Rd
OgorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJiQiLCB0eXBlX25hbWUpCisgICAgaWYg
bm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJiQiLCB0eXBlX25hbWUpIAorICAg
IGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcmJics
IGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiQiLCB0
eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJCIs
IHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3Qo
dHlwZV9uYW1lLCAnJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJj
b25zdCAoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUu
bWF0Y2gociIoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAgIHJldHVybiBj
cHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcqJywgZ2V0X2NwcF90eXBlKG1bMV0pKQorICAg
IHJldHVybiBOb25lCisKKworY2xhc3MgY3BwX2V4cHIob2JqZWN0KToKKyAgICB0eXBlOiBjcHBf
dHlwZQorICAgIGV4cHI6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90
eXBlLCBleHByOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAgICAgIHNlbGYu
ZXhwciA9IGV4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5leHByCisKKworQ3BwRXhwckNvbnZlcnRlciA9IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5
cGVdLCBjcHBfZXhwcl0KKworCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVy
X3Rocm91Z2goY2FzdF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9l
eHByLCBjcHBfdHlwZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3Rf
ZnJvbV9wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6
CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVf
bmFtZX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9Pih7c3RyKGV4
cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyCisK
K2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY2FzdF90aHJvdWdo
X3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9l
eHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcihleHByOiBjcHBf
ZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1cm4gY3BwX2V4
cHIodHlwZSwgZiJyZWludGVycHJldF9jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHN0YXRpY19jYXN0
PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAgcmV0dXJuIGNw
cF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIKKworZGVmIGNwcF9zdGF0aWNfY2FzdChleHBy
OiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBf
ZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHtzdHIoZXhwcil9KSIp
CisKKworZGVmIGNwcF9pbXBsaWNpdF9jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlw
ZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIHN0cihleHByKSkKKwor
CitkZWYgY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhw
ciwgdHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3Bv
aW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgp
CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2Fz
dDx7ZWxlbWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIp
fS5zaXplKCkpIikKKworZGVmIHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBlX3JlaW50ZXJw
cmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGVfY29udGFp
bmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2Nv
bnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNwcF9leHByKHR5
cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB7ZWxlbWVudF9wb2ludGVy
X3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKSwge3N0cihleHByKX0uYnVmU2l6ZSkiKQorCitkZWYg
Y3BwX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNw
cF9leHByKGV4cHIudHlwZS5nZXRfcnZhbHVlX3R5cGUoKSwgZiJXVEZNb3ZlKHtzdHIoZXhwcil9
KSIpCisKKworY3BwX3R5cGVzOiBEaWN0W3N0ciwgY3BwX3R5cGVdID0ge30KKworY3BwX3R5cGVf
Y29uc3RydWN0b3JzIDogTGlzdFtDYWxsYWJsZVtbc3RyXSwgT3B0aW9uYWxbY3BwX3R5cGVdXV0g
PSBbCisgICAgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9j
b250YWluZXIsCisgICAgY3JlYXRlX2NwcF90eXBlX2luZGlyZWN0CitdCisKK2RlZiBnZXRfY3Bw
X3R5cGUodHlwZV9uYW1lOiBzdHIpOgorICAgIHIgPSBjcHBfdHlwZXMuZ2V0KHR5cGVfbmFtZSwg
Tm9uZSkKKyAgICBpZiByOgorICAgICAgICByZXR1cm4gcgorICAgIGZvciB0eXBlX2NvbnN0ciBp
biBjcHBfdHlwZV9jb25zdHJ1Y3RvcnM6CisgICAgICAgIHIgPSB0eXBlX2NvbnN0cih0eXBlX25h
bWUpCisgICAgICAgIGlmIHI6CisgICAgICAgICAgICBicmVhaworICAgIGlmIG5vdCByOgorICAg
ICAgICByID0gY3BwX3R5cGUodHlwZV9uYW1lKQorICAgIGNwcF90eXBlc1t0eXBlX25hbWVdID0g
cgorICAgIHJldHVybiByCisKKworY2xhc3MgY3BwX2FyZyhvYmplY3QpOgorICAgIG5hbWU6IHN0
cgorICAgIHR5cGU6IGNwcF90eXBlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3Bw
X3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2Vs
Zi50eXBlID0gdHlwZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAi
e30ge30iLmZvcm1hdChzZWxmLnR5cGUsIHNlbGYubmFtZSkKKworCitjbGFzcyBjcHBfZGVjbChv
YmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgbmFtZTogc3RyCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYudHlw
ZSA9IHR5cGUKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CisgICAgICAgIHJldHVybiBmIntzdHIoc2VsZi50eXBlKX0ge3NlbGYubmFtZX0iCisKKwor
Y2xhc3MgY3BwX2FyZ19saXN0KG9iamVjdCk6CisgICAgYXJnczogTGlzdFtjcHBfYXJnXQorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAgICAgICBzZWxm
LmFyZ3MgPSBhcmdzCisKKyAgICBkZWYgbmFtZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiLCAi
LmpvaW4oYS5uYW1lIGZvciBhIGluIHNlbGYuYXJncykKKworICAgIGRlZiBleHBycyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIFtjcHBfZXhwcihhLnR5cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5h
cmdzXQorCisgICAgZGVmIGRlY2xzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2NwcF9kZWNsKGEu
dHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgdHlwZXMoc2VsZik6
CisgICAgICAgIHJldHVybiBbYS50eXBlIGZvciBhIGluIHNlbGYuYXJnc10KKworICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKHN0cihhKSBmb3IgYSBpbiBz
ZWxmLmFyZ3MpCisKKworY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAg
ICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBpc19l
eHRlbnNpb246IGJvb2wKKyAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBjcHBfYXJn
X2xpc3QsIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAg
ICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9
IGFyZ3MKKyAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBpc19leHRlbnNpb24KKyAgICAgICAg
c2VsZi5vdmVybG9hZF9zdWZmaXggPSAiIgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAg
ICAgIHJldHVybiBmIntzZWxmLnJldHVybl90eXBlfSB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuYXJn
cyl9KSIKKworICAgIGRlZiBnZXRfYXJnc19jYXRlZ29yaWVzKHNlbGYpIC0+IFR1cGxlW0xpc3Rb
Y3BwX2FyZ10sIExpc3RbY3BwX2FyZ11dOgorICAgICAgICBpbl9hcmdzID0gW10KKyAgICAgICAg
b3V0X2FyZ3MgPSBbXQorICAgICAgICBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJnczoKKyAgICAgICAg
ICAgICNmbXQ6IG9mZgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKSBvciBcCisg
ICAgICAgICAgICAgICAgYS50eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAgICAgICAgICAgIG91
dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5
cGVfY29udGFpbmVyKSBhbmQgKCgoYS50eXBlLmlzX3NwYW4oKSBvciBhLnR5cGUuaXNfZHluYW1p
Y19zcGFuKCkpIGFuZCBub3QgYS50eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCkp
KToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgaW5fYXJncyArPSBbYV0KKyAgICAgICAgICAgICNmbXQ6IG9uCisgICAg
ICAgIHJldHVybiBpbl9hcmdzLCBvdXRfYXJncworCisgICAgZGVmIGlzX2ltcGxlbWVudGVkX3R5
cGUoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiB0eXBlLmlzX2NvbnN0X3BvaW50
ZXIoKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisg
ICAgZGVmIGlzX2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICAjIiBpbiBhLnR5cGUudHlwZV9u
YW1lIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgIyAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgI2lmICJHQ0dMc3luYyIgaW4gc2VsZi5yZXR1cm5fdHlwZS50eXBlX25hbWU6Cisg
ICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLm5hbWUgPT0gImJ1ZlNp
emUiIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor
ICAgICAgICBpZiBhbnkoYS50eXBlLmlzX3BvaW50ZXIoKSBhbmQgYS50eXBlLmdldF92YWx1ZV90
eXBlKCkuaXNfdm9pZCgpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorICAgICAgICBpZiBhbnkobm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShh
LnR5cGUpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorICAgICAgICBpZiBzZWxmLnJldHVybl90eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5pc19pbXBsZW1lbnRlZF90eXBlKHNl
bGYucmV0dXJuX3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVy
biBUcnVlCisKKword2Via2l0X2lwY190eXBlczogRGljdFtjcHBfdHlwZSwgY3BwX3R5cGVdID0g
e30KKword2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzOiBEaWN0W1R1cGxlW2NwcF90eXBlLCBj
cHBfdHlwZV0sIENwcEV4cHJDb252ZXJ0ZXJdID0ge30KKworCitkZWYgd2Via2l0X2lwY19jb252
ZXJ0X2V4cHIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAg
ICAiIiIgQ29udmVydHMgYGV4cHJgIG9mIHR5cGUgb2YgYHNlbGZgIHRvIGB0eXBlYCAiIiIKKyAg
ICBjb252ZXJ0ID0gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLmdldCgoZXhwci50eXBlLCB0
eXBlKSwgTm9uZSkKKyAgICBpZiBub3QgY29udmVydDoKKyAgICAgICAgaWYgZXhwci50eXBlID09
IHR5cGU6CisgICAgICAgICAgICByZXR1cm4gZXhwcgorICAgICAgICBjb252ZXJ0ID0gY3BwX2lt
cGxpY2l0X2Nhc3QKKyAgICByZXR1cm4gY29udmVydChleHByLCB0eXBlKQorCisKK2RlZiB3ZWJr
aXRfaXBjX2dldF9zcGFuX3RyYW5zZmVyX3R5cGUodHlwZSA6IGNwcF90eXBlX2NvbnRhaW5lcikg
LT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUo
KS5nZXRfZGVjYXlfdHlwZSgpCisgICAgYXJpdHkgPSB0eXBlLmdldF9hcml0eSgpCisgICAgd2Vi
a2l0X2lwY19lbGVtZW50X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2VsZW1lbnRfdHlwZV0gaWYg
bm90IGVsZW1lbnRfdHlwZS5pc192b2lkKCkgZWxzZSBnZXRfY3BwX3R5cGUoJ3VpbnQ4X3QnKQor
ICAgIGlmIGFyaXR5IGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYi
SVBDOjpBcnJheVJlZmVyZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0sIHthcml0
eX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpBcnJheVJlZmVyZW5jZTx7c3Ry
KHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0+IikKKworCisKK2RlZiB3ZWJraXRfaXBjX2dldF9z
cGFuX3N0b3JlX3R5cGUodHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfdHlwZToKKyAg
ICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9kZWNheV90eXBl
KCkKKyAgICBpZiBlbGVtZW50X3R5cGUuaXNfdm9pZCgpOgorICAgICAgICBlbGVtZW50X3R5cGUg
PSBnZXRfY3BwX3R5cGUoJ0dDR0xjaGFyJykKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3Bhbigp
OgorICAgICAgICBpbmxpbmVfY2FwYWNpdHkgPSAxNiBpZiAiZmxvYXQiIGluIGVsZW1lbnRfdHlw
ZS50eXBlX25hbWUgZWxzZSA0CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJWZWN0b3I8
e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cihpbmxpbmVfY2FwYWNpdHkpfT4iKQorICAgIHJldHVy
biBnZXRfY3BwX3R5cGUoZiJzdGQ6OmFycmF5PHtzdHIoZWxlbWVudF90eXBlKX0sIHtzdHIodHlw
ZS5nZXRfYXJpdHkoKSl9PiIpCisKK2RlZiB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVy
c2lvbihleHByIDogY3BwX2V4cHIsIHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+IGNwcF9l
eHByOgorICAgIHBvaW50ZXJfY2FzdF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5n
ZXRfcG9pbnRlcl90eXBlKCkKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAg
ICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDx7
c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtzdHIoZXhwcil9
LnNpemUoKSkiKQorCisgICAgYXNzZXJ0KHR5cGUuaXNfc3BhbigpKQorICAgIHJldHVybiBjcHBf
ZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3Bhbjx7c3RyKHR5cGUuZ2V0X2FyaXR5KCkpfT4ocmVpbnRl
cnByZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSkp
IikKKworIyBTZWUgbWVzc2FnZXMucHkgZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUKK3dlYmtpdF9p
cGNfYnVpbHRpbl90eXBlcyA9IHNldCgKKyAgICBbInVpbnQ4X3QiLCAidWludDE2X3QiLCAidWlu
dDMyX3QiLCAidWludDY0X3QiLCAiaW50OF90IiwgImludDE2X3QiLCAiaW50MzJfdCIsICJpbnQ2
NF90IiwgImJvb2wiLCAiZmxvYXQiLCAiZG91YmxlIiAiYm9vbCJdCispCisKKworZGVmIHdlYmtp
dF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUodHlwZTogY3BwX3R5cGUpIC0+IGNwcF90
eXBlOgorICAgIGlmIHR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRpbl90eXBlczoK
KyAgICAgICAgcmV0dXJuIHR5cGUKKyAgICByZXR1cm4gdHlwZS5nZXRfcnZhbHVlX3R5cGUoKQor
CisKK2RlZiB3ZWJraXRfaXBjX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6
CisgICAgaWYgZXhwci50eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6
CisgICAgICAgIHJldHVybiBleHByCisgICAgcmV0dXJuIGNwcF9tb3ZlX2V4cHIoZXhwcikKKwor
CitkZWYgd2Via2l0X2lwY19tc2dfbmFtZShmdW5jOiBjcHBfZnVuYyk6CisgICAgcmV0dXJuIGZ1
bmMubmFtZVswXS5jYXBpdGFsaXplKCkgKyBmdW5jLm5hbWVbMTpdICsgZnVuYy5vdmVybG9hZF9z
dWZmaXgKKworCitjbGFzcyB3ZWJraXRfaXBjX21zZyhvYmplY3QpOgorICAgIG5hbWU6IHN0cgor
ICAgIGluX2FyZ3M6IGNwcF9hcmdfbGlzdAorICAgIG91dF9hcmdzOiBjcHBfYXJnX2xpc3QKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFt
ZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYykKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3Mg
PSBmdW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBpcGNfaW5fYXJncyA9IFtjcHBf
YXJnKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSBmb3IgYSBpbiBpbl9hcmdzXQor
ICAgICAgICBpcGNfb3V0X2FyZ3MgPSBbXQorICAgICAgICBpZiBub3QgZnVuYy5yZXR1cm5fdHlw
ZS5pc192b2lkKCk6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9hcmcod2Via2l0
X2lwY190eXBlc1tmdW5jLnJldHVybl90eXBlXSwgInJldHVyblZhbHVlIildCisgICAgICAgIGZv
ciBhIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdl
YmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKV0KKyAgICAgICAgICAgIGlmIGEudHlwZS5p
c19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICBpcGNfaW5fYXJncyArPSBbY3BwX2Fy
ZyhnZXRfY3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIildCisgICAgICAgIHNl
bGYuaW5fYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfaW5fYXJncykKKyAgICAgICAgc2VsZi5vdXRf
YXJncyA9IGNwcF9hcmdfbGlzdChpcGNfb3V0X2FyZ3MpCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgaWYgbGVuKHNlbGYub3V0X2FyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1
cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIC0+ICh7c3Ry
KHNlbGYub3V0X2FyZ3MpfSkgU3luY2hyb25vdXMiCisgICAgICAgIHJldHVybiBmIlxuICAgIHZv
aWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkiCisKKworY2xhc3Mgd2Via2l0X2lw
Y19jcHBfcHJveHlfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIG1zZ19uYW1lOiBz
dHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKwor
ICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0K
KyAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHJldHVybl9zdG10czogTGlzdFtz
dHJdCisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJzOiBMaXN0W2Nw
cF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6Cisg
ICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5tc2dfbmFtZSA9
IHdlYmtpdF9pcGNfbXNnX25hbWUoY3BwX2Z1bmMpCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUg
PSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdz
CisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3Rt
dHMgPSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYu
cmV0dXJuX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisgICAgICAgIHNl
bGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBfZnVuYy5n
ZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1ZShj
cHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2luX2FyZ3MoaW5fYXJn
cykKKyAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmdzKG91dF9hcmdzKQorICAgICAgICBzZWxm
LnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBp
bl9leHBycyA9ICIsICIuam9pbihbc3RyKGkpIGZvciBpIGluIHNlbGYuaW5fZXhwcnNdKQorICAg
ICAgICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIHNlbGYub3V0X2V4cHJz
KQorICAgICAgICBpc19hc3luYyA9IHNlbGYucmV0dXJuX3R5cGUuaXNfdm9pZCgpIGFuZCBsZW4o
b3V0X2V4cHJzKSA9PSAwCisgICAgICAgIGlmIGlzX2FzeW5jOgorICAgICAgICAgICAgc2VsZi5j
YWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsiLAorICAgICAgICAgICAgXQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2VuZF9yZXN1bHQgPSAiIgorICAgICAgICAgICAgaWYgc2VsZi5wb3N0X2NhbGxf
c3RtdHM6IAorICAgICAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gImF1dG8gc2VuZFJlc3VsdCA9
ICIKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFsKKyAgICAgICAgICAg
ICAgICAgICAgImlmIChzZW5kUmVzdWx0KSIgKyAoIiB7IiBpZiBsZW4oc2VsZi5wb3N0X2NhbGxf
c3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0gKyBbIiAgICAiICsgcyBmb3Ig
cyBpbiBzZWxmLnBvc3RfY2FsbF9zdG10c10gKyBbCisgICAgICAgICAgICAgICAgICAgICgifSIg
aWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgIGYi
e3NlbmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9leHByc30pLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7IiwKKyAgICAgICAgICAgIF0KKworCisgICAgZGVmIHBy
b2Nlc3NfaW5fYXJncyhzZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgZm9y
IGkgaW4gaW5fYXJnczoKKyAgICAgICAgICAgIGlmIGkudHlwZS5pc19jb25zdF9wb2ludGVyKCk6
CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9l
eHByKGkudHlwZSwgaS5uYW1lKSwgd2Via2l0X2lwY190eXBlc1tpLnR5cGVdKV0KKworICAgIGRl
ZiBwcm9jZXNzX291dF9hcmdzKHNlbGYsIG91dF9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAg
ICAgZm9yIG8gaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpZiBvLnR5cGUuaXNfcG9pbnRlcigp
OgorICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBvLnR5cGUuZ2V0X3ZhbHVlX3R5cGUoKQor
ICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNb
dmFsdWVfdHlwZV0KKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3ZhbHVl
X3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9z
dG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAg
ICAgICAgICAgIGUgPSBjcHBfZXhwcih2LnR5cGUsIHYubmFtZSkKKyAgICAgICAgICAgICAgICBz
ZWxmLm91dF9leHBycyArPSBbZV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10
cyArPSBbCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAgICAgICAgICAg
ICBmImlmICh7by5uYW1lfSkiLAorICAgICAgICAgICAgICAgICAgICBmIiAgICAqe28ubmFtZX0g
PSB7d2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgdmFsdWVfdHlwZSl9OyIKKyAgICAgICAgICAg
ICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBlbGlmIG8u
dHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0
X2lwY190eXBlc1tvLnR5cGVdCisgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uod2Vi
a2l0X2lwY190eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAgICAgIHYgPSBj
cHBfYXJnKHdlYmtpdF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAgICAgICAgICAg
ICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsi
XQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYu
bmFtZSldCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUo
InNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KKyAgICAgICAgICAgICAgICBzZWxmLnBv
c3RfY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgIGYibWVtY3B5KHtvLm5hbWV9
LmRhdGEsIHt2Lm5hbWV9LmRhdGEoKSwge28ubmFtZX0uYnVmU2l6ZSAqIHNpemVvZih7c3RyKHdl
YmtpdF9pcGNfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKSl9KSk7IgorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0g
W2NwcF9leHByKG8udHlwZSwgby5uYW1lKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92YWx1
ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlwZS5p
c192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9
IHJldHVybl90eXBlCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNb
cmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4cHIoaXBjX3Jl
dHVybl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9
IFtmIntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIuZXhwcn0gPSB7
eyB9fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtyZXR1cm5fdmFsdWVfZXhwcl0gKyBz
ZWxmLm91dF9leHBycworICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtmInJldHVybiB7c3Ry
KHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCByZXR1cm5fdHlwZSkp
fTsiXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9M
SU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICIiLmpvaW4o
ZiJcbiAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxmLmNhbGxfc3Rt
dHMgKyBzZWxmLnBvc3RfY2FsbF9zdG10cyArIHNlbGYucmV0dXJuX3N0bXRzKQorICAgICAgICBy
ZXR1cm4gZiIiIlxue3N0cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fQore3t7Ym9keX0K
K319IiIiCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXIob2JqZWN0
KToKKyAgICBuYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBj
cHBfYXJnX2xpc3QKKyAgICBib2R5OiBMaXN0W3N0cl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1l
CisKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90eXBlCisgICAg
ICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5ib2R5ID0gWyJub3RJ
bXBsZW1lbnRlZCgpOyJdCisgICAgICAgIGlmIGNwcF9mdW5jLnJldHVybl90eXBlLnR5cGVfbmFt
ZSAhPSAidm9pZCI6CisgICAgICAgICAgICBzZWxmLmJvZHkgKz0gWyJyZXR1cm4geyB9OyJdCisK
KyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBOT0xJTlQiIGlm
ICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIlxue1xuICAgICIgKyAi
XG4gICAgIi5qb2luKHNlbGYuYm9keSkgKyAiXG59IgorICAgICAgICByZXR1cm4gZiJcbntzdHIo
c2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OntzZWxmLm5h
bWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH17Ym9keX0iCisKKworY2xhc3MgY29udGV4dF9w
cm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eSBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIKKyAgICBpbXBs
czogTGlzdFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsXQorICAgIHVuaW1wbHM6IExpc3Rbd2Vi
a2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSwgdW5pbXBsZW1lbnRlZDogSXRlcmFibGVbY3BwX2Z1
bmNdKToKKyAgICAgICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKGYp
IGZvciBmIGluIGZ1bmNzXQorICAgICAgICBzZWxmLnVuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBf
cHJveHlfcGxhY2Vob2xkZXIoZikgZm9yIGYgaW4gdW5pbXBsZW1lbnRlZF0KKworICAgIGRlZiBn
ZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3Ig
aSBpbiBzZWxmLmltcGxzICsgc2VsZi51bmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYp
OgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlv
bnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3Jt
YXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3Mgd2Via2l0X2lw
Y19jcHBfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNwcF9hcmdfbGlz
dAorICAgIGlzX2V4dGVuc2lvbjogYm9vbAorICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0K
KyAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3Ry
XQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBf
ZXhwcl0KKyAgICByZXR1cm5fdmFsdWVfZXhwcjogT3B0aW9uYWxbY3BwX2V4cHJdCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1l
ID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNwcF9mdW5j
Lm92ZXJsb2FkX3N1ZmZpeAorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3QoW10pCisg
ICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCisgICAgICAg
IHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBbXQor
ICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMg
PSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIHNlbGYucmV0dXJuX3Zh
bHVlX2V4cHIgPSBOb25lCisKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92YWx1ZShjcHBf
ZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBjcHBfZnVuYy5n
ZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2FyZ3MoY3BwX2Z1bmMu
YXJncy5hcmdzLCBzZXQoaW5fYXJncyksIHNldChvdXRfYXJncykpCisgICAgICAgIHNlbGYucHJv
Y2Vzc19jYWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAgICAgIGV4dCA9
ICJnZXRFeHRlbnNpb25zKCkuIiBpZiBzZWxmLmlzX2V4dGVuc2lvbiBlbHNlICIiCisKKyAgICAg
ICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYuaW5fZXhwcnMpCisg
ICAgICAgIGlzX2FzeW5jID0gbGVuKHNlbGYub3V0X2V4cHJzKSA9PSAwCisKKyAgICAgICAgY2Fs
bF9leHByID0gZiJtX2NvbnRleHQtPntleHR9e3NlbGYubmFtZX0oe2luX2V4cHJzfSkiCisgICAg
ICAgIGlmIG5vdCBzZWxmLnJldHVybl92YWx1ZV9leHByOgorICAgICAgICAgICAgc2VsZi5jYWxs
X3N0bXRzICs9IFtmIntjYWxsX2V4cHJ9OyJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
ZWxmLmNhbGxfc3RtdHMgKz0gW2Yie3N0cihzZWxmLnJldHVybl92YWx1ZV9leHByKX0gPSB7Y2Fs
bF9leHByfTsiXQorICAgICAgICBpZiBub3QgaXNfYXN5bmM6CisgICAgICAgICAgICBvdXRfZXhw
cnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAg
ICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gW2YiY29tcGxldGlvbkhhbmRsZXIoe291dF9leHBy
c30pOyJdCisKKyAgICBkZWYgcHJvY2Vzc19hcmdzKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10s
IGluX2FyZ3M6IFNldFtjcHBfYXJnXSwgb3V0X2FyZ3M6IFNldFtjcHBfYXJnXSk6CisgICAgICAg
IGZvciBhIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfY29uc3RfcG9pbnRlcigp
OgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgaWYgYSBpbiBpbl9h
cmdzOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmcoYSkKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmcoYSkKKyAgICAgICAg
aWYgc2VsZi5vdXRfZXhwcnM6CisgICAgICAgICAgICBvdXRfYXJnX2RlY2xzID0gIiwgIi5qb2lu
KGYie3N0cihlLnR5cGUpfSIgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAgICAgICAgICBz
ZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoZiJDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHtvdXRfYXJnX2RlY2xzfSk+JiYiKSwgImNvbXBsZXRpb25IYW5kbGVyIildCisKKyAg
ICBkZWYgcHJvY2Vzc19pbl9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAgIHNlbGYuYXJn
cy5hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUo
d2Via2l0X2lwY190eXBlc1thLnR5cGVdKSwgYS5uYW1lKV0KKyAgICAgICAgc2VsZi5pbl9leHBy
cyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIod2Via2l0X2lwY190eXBlc1th
LnR5cGVdLCBhLm5hbWUpLCBhLnR5cGUpXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0X2FyZyhzZWxm
LCBhOiBjcHBfYXJnKToKKyAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKToKKyAgICAgICAg
ICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCksIGEubmFtZSkK
KyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2YWx1ZV9hcmcudHlw
ZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAgICBzZWxmLmlu
X2V4cHJzICs9IFtjcHBfZXhwcihhLnR5cGUsIGYiJnt2YWx1ZV9hcmcubmFtZX0iKV0KKyAgICAg
ICAgICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5hbWUpCisgICAg
ICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2UudHlwZV0K
KyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihl
LCB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19keW5hbWlj
X3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwgY3BwX3R5cGVf
Y29udGFpbmVyKSkKKyAgICAgICAgICAgIHNpemVfYXJnID0gY3BwX2FyZyhnZXRfY3BwX3R5cGUo
InVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIikKKyAgICAgICAgICAgIHNlbGYuYXJncy5hcmdz
ICs9IFtzaXplX2FyZ10KKyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9hcmcod2Via2l0X2lw
Y19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYu
cHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtzdHIoc3RvcmVfYXJn
Lm5hbWUpfShzdGF0aWNfY2FzdDxzaXplX3Q+KHthLm5hbWV9U2l6ZSksIDApOyJdCisgICAgICAg
ICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgZiJ7c3RvcmVf
YXJnLm5hbWV9IildCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5
cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2Nv
bnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJr
aXRfaXBjX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19zcGFuKCk6CisgICAgICAgICAg
ICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCisgICAgICAg
ICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3RvcmVfdHlwZShh
LnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntz
dHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0ge3sgfX07Il0KKyAgICAg
ICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBlLCBzdG9yZV9h
cmcubmFtZSldCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZl
cnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUpLCB3ZWJraXRf
aXBjX3R5cGUpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGEudHlwZS5pc19y
ZWZlcmVuY2UoKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBl
c1thLnR5cGVdCisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFs
dWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntzZWxmLm5zKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9IHt7IH19OyJd
CisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1l
KQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbZV0KKyAgICAgICAgICAgIHNlbGYub3V0
X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihl
LCB3ZWJraXRfaXBjX3R5cGUpKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92YWx1ZShzZWxm
LCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlwZS5pc192b2lk
KCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaXBjX3JldHVybl90eXBlID0gd2Via2l0
X2lwY190eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4cHIgPSBjcHBf
ZXhwcihyZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9z
dG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4
cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtpdF9pcGNfbW92
ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCBpcGNfcmV0
dXJuX3R5cGUpKV0KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IHJldHVybl92YWx1
ZV9leHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgYm9keSA9ICIiLmpvaW4o
ZiJcbiAgICAgICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxs
X3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMpCisgICAgICAgIHJldHVybiBmIiIiICAgIHZv
aWQge3NlbGYubmFtZX17c2VsZi5vdmVybG9hZF9zdWZmaXh9KHtzdHIoc2VsZi5hcmdzKX0pCisg
ICAge3t7Ym9keX0KKyAgICB9fSIiIgorCisgICAgZGVmIG5zKHNlbGYsIHR5cGU6IGNwcF90eXBl
KToKKyAgICAgICAgIyBUT0RPOiBuYW1lc3BhY2UgaW5mbyBpcyBub3Qgc3RvcmVkIGluIG5hbWVz
LgorICAgICAgICBpZiB0eXBlLnR5cGVfbmFtZSA9PSAiQWN0aXZlSW5mbyI6CisgICAgICAgICAg
ICByZXR1cm4gIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjoiICsgc3RyKHR5cGUpCisgICAg
ICAgIHJldHVybiBzdHIodHlwZSkKKworZGVmIHdlYmtpdF9pcGNfcmVzb2x2ZV9vdmVybG9hZF9z
dWZmaXgoZnVuY3MgOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgIGNvdW50cyA9IGNvbGxlY3Rp
b25zLkNvdW50ZXIoZi5uYW1lIGZvciBmIGluIGZ1bmNzKQorICAgIHN1ZmZpeGVzIDogQ291bnRl
cltzdHJdID0gY29sbGVjdGlvbnMuQ291bnRlcigpCisgICAgZm9yIGYgaW4gZnVuY3M6CisgICAg
ICAgIGlmIGNvdW50c1tmLm5hbWVdID4gMToKKyAgICAgICAgICAgIGYub3ZlcmxvYWRfc3VmZml4
ID0gc3RyKHN1ZmZpeGVzW2YubmFtZV0pCisgICAgICAgICAgICBzdWZmaXhlcy51cGRhdGUoW2Yu
bmFtZV0pCisKKworY2xhc3MgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0
KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgQysrIGltcGxlbWVudGF0aW9uIGdlbmVy
YXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfaW1wbF0KKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5p
bXBscyA9IFt3ZWJraXRfaXBjX2NwcF9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQorCisgICAgZGVm
IGdldF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc3RyKGkpIGZv
ciBpIGluIHNlbGYuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdy
aXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc19mbiwKKyAgICAgICAgICAg
IGNvbnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5jdGlvbnMoKSks
CisgICAgICAgICkKKworCitjbGFzcyBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVyYXRvcihv
YmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBXZWJLaXQgSVBDIG1lc3NhZ2Ug
ZGVmaW5pdGlvbiBnZW5lcmF0b3IuIgorICAgIG1zZ3M6IExpc3Rbd2Via2l0X2lwY19tc2ddCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAg
ICAgIHNlbGYubXNncyA9IFt3ZWJraXRfaXBjX21zZyhmKSBmb3IgZiBpbiBmdW5jc10KKworICAg
IGRlZiBnZXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiIi5qb2luKHN0cihtKSBm
b3IgbSBpbiBzZWxmLm1zZ3MpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdy
aXRlX2ZpbGUoY29udGV4dF9tZXNzYWdlc19mbiwgY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZS5m
b3JtYXQoc2VsZi5nZXRfbWVzc2FnZXMoKSkpCisKKworZGVmIGNyZWF0ZV9jcHBfYXJnKGFyZ19z
cGVjOiBzdHIsIGFyZ19pbmRleDogaW50KToKKyAgICByID0gYXJnX3NwZWMucnNwbGl0KCIgIiwg
MSkKKyAgICBuYW1lID0gIiIKKyAgICB0eXBlID0gTm9uZQorICAgIGlmIGxlbihyKSA+IDEgYW5k
IHJbMF0gIT0gImNvbnN0IjoKKyAgICAgICAgbmFtZSA9IHJbMV0uc3RyaXAoKQorICAgICAgICB0
eXBlID0gZ2V0X2NwcF90eXBlKHJbMF0pCisgICAgZWxzZToKKyAgICAgICAgbmFtZSA9ICJhcmd7
fSIuZm9ybWF0KGFyZ19pbmRleCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlwZShhcmdfc3Bl
YykKKyAgICByZXR1cm4gY3BwX2FyZyh0eXBlLCBuYW1lKQorCisKK2RlZiBjcmVhdGVfY3BwX2Fy
Z19saXN0KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgorICAgIHJldHVybiBjcHBfYXJnX2xp
c3QoW2NyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3IgaSwgZSBpbiBl
bnVtZXJhdGUoYXJnc19zcGVjcyldKQorCisKK2RlZiBjcmVhdGVfY3BwX2Z1bmMobmFtZTogc3Ry
LCByZXR1cm5fc3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVuc2lvbjog
Ym9vbCk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2Nw
cF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3Mp
LCBpc19leHRlbnNpb249aXNfZXh0ZW5zaW9uKQorCisKK2RlZiByZWFkX2xpbmVzX3VudGlsKGxp
bmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltzdHIsIE5vbmUs
IE5vbmVdOgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBpZiByZS5tYXRjaChtYXRj
aCwgbGluZS5zdHJpcCgpKToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHlpZWxkIGxpbmUK
KworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigidXNh
Z2U6ICVwcm9nIFtvcHRpb25zXSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS12ZXJib3Nl
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUHJpbnQgc29tZSBkZWJ1ZyBpbmZvIGZyb20g
dGhlIGdlbmVyYXRvciBzY3JpcHQiKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygp
CisKKyAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3RlIGZyb20g
d2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCisKKyAgICAjIEZJWE1FOiBVbnRpbCBleHRlbnNp
b25zIGhlYWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUgdGhlIGltcGxlbWVu
dGF0aW9uCisgICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVyIGEgZnVuY3Rpb24g
aXMgb3IgaXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4KKyAgICBleHRlbnNpb25fc2lnbmF0
dXJlcyA6IFNldFtzdHJdID0gc2V0KCkKKyAgICB3aXRoIG9wZW4oZXh0ZW5zaW9uc19pbnB1dF9m
bikgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAgICAg
IG0gPSByZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkgPSAwOyIsIGxp
bmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3Bw
X2Z1bmMoCisgICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVjcz1jcHBf
c3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9u
PVRydWUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9zaWdu
YXR1cmVzLnVwZGF0ZShbc3RyKGZ1bmMpXSkKKyAgICBmdW5jcyA9IFtdCisgICAgdW5pbXBsZW1l
bnRlZCA9IFtdCisgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6CisgICAgICAgIHdp
dGggb3BlbihmbikgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygp
KQorICAgICAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywgIi8vIEZ1bmN0
aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBi
eSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAgICBwYXNzCisK
KyAgICAgICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBFbmQg
b2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAg
ICAgICAgIG0gPSByZS5tYXRjaChyIlxzKihcUyspXHMrKFx3KylcKCguKilcKSBmaW5hbDsiLCBs
aW5lKQorICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgIGZ1bmNfbmFt
ZSA9IG1bMl0KKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVuY19uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3Bl
Y3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAgICAgICBp
c19leHRlbnNpb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICAgICAgZnVuYy5pc19leHRlbnNpb24gPSBzdHIoZnVuYykgaW4gZXh0ZW5zaW9uX3NpZ25hdHVy
ZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgZnVuYy5pc19pbXBsZW1lbnRlZCgpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKGZ1bmMpCisgICAgICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmltcGxlbWVudGVkLmFwcGVuZChmdW5j
KQorCisKKyAgICB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1bmNzKQorICAg
ICMgSW5pdGlhbGl6ZSBXZWJLaXQgSVBDIGdlbmVyYXRpb24uIENvbnN0cnVjdCB0eXBlIG1hcHBp
bmdzIGZvciB0aGUgdXNlZCBDKysgdHlwZXMgLT4gSVBDIHR5cGVzLgorICAgICMgVE9ETzogbmFt
ZXNwYWNpbmcgaXNzdWVzLgorICAgIGFpX3R5cGUgPSBnZXRfY3BwX3R5cGUoIkFjdGl2ZUluZm8m
IikKKyAgICBhaV90cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKCJXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyIpCisgICAgd2Via2l0X2lwY190eXBlc1thaV90eXBlXSA9
IGFpX3RyYW5zZmVyX3R5cGUKKworICAgIHdpdGggb3Blbih0eXBlc19pbnB1dF9mbikgYXMgZjoK
KyAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgIGZvciBfIGluIHJl
YWRfbGluZXNfdW50aWwobGluZXMsICIvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5n
IFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCBzY3JpcHQuIik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBsaW5lIGluIHJlYWRf
bGluZXNfdW50aWwobGluZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNz
ZXJ0XChzdGQ6OmlzX3NhbWVfdjwoXHcrKSwgKFx3Kyk+XCk7IiwgbGluZSkKKyAgICAgICAgICAg
IGlmIG06CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tnZXRfY3BwX3R5cGUobVsx
XSldID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpID09
IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAg
ICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBj
X3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAg
ICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90
eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgIyBGSVhNRTogSGVyZSB3ZSB1c2UgPD0gaW5zdGVhZCBvZiA9PSBkdWUgdG8gcG9pbnRl
cnMsIHN1Y2ggYXMgR0NHTHN5bmMsIEdDR0xpbnRwdHIsIC4uLi4KKyAgICAgICAgICAgICMgVGhp
cyBlbmRzIHVwIGZhaWxpbmcgaWYgdGhlcmUgZXZlciBpcyBhcnJheXMgb2YgdGhlc2UgdHlwZXMs
IHNpbmNlIGFycmF5cyBhcmUgY3VycmVudGx5CisgICAgICAgICAgICAjIHJlaW50ZXJwcmV0LWNh
c3RlZC4KKyAgICAgICAgICAgICMgV2ViS2l0IElQQyByZXF1aXJlcyBvbmUgc2l6ZWQgdHlwZSwg
YnV0IHRoZSBzaXplIG9mIHRoZXNlIHBvaW50ZXItYmFzZWQgdmFsdWVzIHdpbGwgY2hhbmdlCisg
ICAgICAgICAgICAjIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgICAgIG0gPSByZS5t
YXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVvZlwoKFx3Kylc
KVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNwcF90eXBl
ID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3Bw
X3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9
IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhj
cHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAgICAgICAgIHdl
YmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfc3Rh
dGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9mXCgoXHcrKVwp
ICYmIHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAg
ICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFd
KQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAg
ICAgICAgICAgY3BwX2Nhc3RfdGhyb3VnaF90eXBlID0gZ2V0X2NwcF90eXBlKG1bNF0pCisgICAg
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBl
KV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChjcHBfY2FzdF90
aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJz
WyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXJf
dGhyb3VnaChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICMgRm9yIGFsbCB0eXBlcyBpbiB0aGUgaW5wdXQgQVBJLCBmb3JtIGNvcnJlc3BvbmRp
bmcgSVBDIHR5cGVzIGFuZCBjb252ZXJzaW9ucy4KKyAgICAjIFRPRE86IHRoaXMgaXMgbm90IGRy
aXZlbiBieSB0aGUgdHlwaW5nLgorICAgIGFsbF90eXBlcyA9IHNldCgpCisgICAgZm9yIGZ1bmMg
aW4gZnVuY3M6CisgICAgICAgYWxsX3R5cGVzLnVwZGF0ZShmdW5jLmFyZ3MudHlwZXMoKSArIFtm
dW5jLnJldHVybl90eXBlXSkKKyAgICAjIFNvcnQgYnkgbGVuIHNvIHRoYXQgdGVtcGxhdGUgYXJn
cyBjb21lIGJlZm9yZSB0ZW1wbGF0ZXMuCisgICAgZm9yIGNwcF90eXBlIGluIHNvcnRlZChhbGxf
dHlwZXMsIGtleT1sYW1iZGEgeDogbGVuKHgudHlwZV9uYW1lKSk6CisgICAgICAgIGlmIGNwcF90
eXBlIGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgCisg
ICAgICAgIGlmIGNwcF90eXBlLmlzX2R5bmFtaWNfc3BhbigpIG9yIGNwcF90eXBlLmlzX3NwYW4o
KToKKyAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5z
ZmVyX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBl
XSA9IHRyYW5zZmVyX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAgaWYgY3BwX3R5
cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKToKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSB3ZWJr
aXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHRyYW5zZmVyX3R5cGUs
IGNwcF90eXBlKV0gPSB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lvbgorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdG9yZV90eXBlID0gd2Via2l0X2lwY19nZXRf
c3Bhbl9zdG9yZV90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNfY29udmVydGVyc1soc3RvcmVfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3Jl
aW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICBlbGlmIGNwcF90eXBlLmlzX3JlZmVy
ZW5jZSgpIG9yIGNwcF90eXBlLmlzX2NvbnN0X3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2Nv
bnRhaW5lcigpOgorICAgICAgICAgICAgdmFsdWVfdHlwZSA9IGNwcF90eXBlLmdldF92YWx1ZV90
eXBlKCkgaWYgbm90IGNwcF90eXBlLmlzX2NvbnRhaW5lcigpIGVsc2UgY3BwX3R5cGUKKyAgICAg
ICAgICAgIGlmIHZhbHVlX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAgICAgICAgY29u
dGFpbmVkX3R5cGUgPSB2YWx1ZV90eXBlLmdldF9jb250YWluZWRfdHlwZSgpCisgICAgICAgICAg
ICAgICAgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbY29udGFp
bmVkX3R5cGVdCisgICAgICAgICAgICAgICAgaWYgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9
PSBjb250YWluZWRfdHlwZToKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tj
cHBfdHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZShmInt2YWx1ZV90eXBlLmdldF9j
b250YWluZXJfbmFtZSgpfTx7c3RyKHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUpfT4iKQorICAg
ICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5
cGUKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBIZXJlIG1pZ2h0IGJlIGNhc2Ugd2hlcmUg
VmVjdG9yPEdDR0xpbnQ+IHdhcyB1c2VkIGluIHRoZSBpbnRlcmZhY2UgYW5kIFZlY3RvcjxpbnQz
Ml90PiBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIElQQyBkZWZpbml0aW9u
LiBUaGVyZSBpcyBubyBzZW5zaWJsZSB3YXkgdG8gZG8gdGhpcyBhdCB0aGUgbW9tZW50LiBXZSBk
byBub3QgY29udmVydCwgcmF0aGVyCisgICAgICAgICAgICAgICAgICAgICMgZXhwZWN0IHRoYXQg
YWxsIHRoZSBpbnZvY2F0aW9ucyBhcmUgdGFrZW4gY2FyZSBvZiB0aGUgZmFjdCB0aGF0IEdDR0xp
bnQgaXMgdGhlIHNhbWUgdHlwZSBhcyBpbnQzMl90LgorICAgICAgICAgICAgICAgICAgICAjIFRo
aXMgd2lsbCBub3QgaG9sZCBmb3IgYWxsIHR5cGVzIHN1Y2ggYXMgR0NHTGJvb2xlYW4uCisgICAg
ICAgICAgICAgICAgICAgICN3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0
cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5
cGVdID0gdmFsdWVfdHlwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2Via2l0X2lwY190
eXBlc1tjcHBfdHlwZV0gPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAgCisgICAgIyBU
aGUgaW5wdXQgdG8gdGhlIGdlbmVyYXRvcnMgaXMgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3Rl
LgorICAgICMgUnVuIHRoZSB2YXJpb3VzIGdlbmVyYXRvcnMuCisgICAgZ2VuZXJhdG9ycyA9IFsK
KyAgICAgICAgY29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVuY3MsIHVu
aW1wbGVtZW50ZWQpLAorICAgICAgICBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dlbmVyYXRvcihm
dW5jcyksCisgICAgICAgIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzKSwK
KyAgICBdCisgICAgZm9yIGcgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgZy5nZW5lcmF0ZSgpCisK
KyAgICBpZiBvcHRpb25zLnZlcmJvc2U6CisgICAgICAgIHByaW50KCJJbXBsZW1lbnRlZDoiKQor
ICAgICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIoaSl9IGZpbmFsXG4iIGZvciBpIGluIGZ1
bmNzKSkKKyAgICAgICAgcHJpbnQoIlVuaW1wbGVtZW50ZWQ6IikKKyAgICAgICAgcHJpbnQoIiIu
am9pbihmIiAgICB7c3RyKHUpfSBmaW5hbFxuIiBmb3IgdSBpbiB1bmltcGxlbWVudGVkKSkKKyAg
ICAgICAgcHJpbnQoZiJJbXBsZW1lbnRlZDoge2xlbihmdW5jcyl9LCB1bmltcGxlbWVudGVkOiB7
bGVuKHVuaW1wbGVtZW50ZWQpfSwgdG90YWw6IHtsZW4oZnVuY3MpK2xlbih1bmltcGxlbWVudGVk
KX0iKQorICAgICAgICBwcmludCgiQysrIHR5cGUgbWFwIHRvIFdlYktpdCBJUEMgdHlwZSBtYXA6
IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAgICAgICAgICBp
ZiB0IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0
cih0KX0gLT4ge3N0cih3ZWJraXRfaXBjX3R5cGVzW3RdKX0iKQorICAgICAgICBwcmludCgiQysr
IHR5cGVzIHdpdGhvdXQgV2ViS2l0IElQQyB0eXBlOiIpCisgICAgICAgIGZvciBfLCB0IGluIGNw
cF90eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdCBub3QgaW4gd2Via2l0X2lwY190eXBl
czoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSIpCisgICAgICAgIHByaW50
KCJXZWJLaXQgSVBDIHR5cGUgY29udmVyc2lvbnMiKQorICAgICAgICBmb3IgKGEsIGIpLCBjb252
ZXJ0ZXIgaW4gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLml0ZW1zKCk6CisgICAgICAgICAg
ICBwcmludChmIiAgICB7c3RyKGEpfSAtPiB7c3RyKGIpfSA6IHtjb252ZXJ0ZXIuX19uYW1lX199
IikKKyAgICAgICAgcHJpbnQoIkRvbmUuIikKKyAgICByZXR1cm4gMAorCisKK2lmIF9fbmFtZV9f
ID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNlNWMyZjk4NjU0
NWYzM2MzZWQwODRiNmFkMzQ1MzA3NTFkNGY2NjQuLjQwODAzZTQxMTc5YTZjMzRhYTQ0MjhiYjk5
M2I0NDVlZDc0YWFhMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0xMi0wMSAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50cyBh
IGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBH
UFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJL
aXQgSVBDLgorCisgICAgICAgIEFkZHMgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHRoZSBtaXNzaW5n
IGZ1bmN0aW9uYWxpdHkuIERvZXMgbm90IHlldAorICAgICAgICBlbmFibGUgdGhlIHRlc3RzIHRo
YXQgYWN0dWFsbHkgcGFzcyBidXQgd2hpY2ggd2VyZSBza2lwcGVkIGJlZm9yZSB0aGUKKyAgICAg
ICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zOgorCiAyMDIwLTEyLTA4ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW92aW5nLWJldHdlZW4tZG9jdW1lbnRzL2Jl
Zm9yZS1wcmVwYXJlLSogYW5kIG1vdmUtYmFjay0qIGFyZSBmbGFreSBmYWlsdXJlcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmExYjI2Nzg3MzE4
NTMwNTgwMDMzOTBmZDc1MzdkYzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBhMmQ0NjcyNjNj
NzA4Yzk0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0z
MTcsNiArMzE3LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVt
b3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3dlYmds
IFsgU2tpcCBdCiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBTa2lwIF0KIAor
d2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlw
WS1mYWxzZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3QvY2FudmFzL3dl
YmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZp
Z3VyYXRpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93
ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5YWxwaGEt
dGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3QvY2FudmFzL3dl
YmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVyZSBdCisKIHdl
YmdwdSBbIFNraXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNvbnRyb2wtdHlw
ZXMuaHRtbCBbIFNraXAgXQo=
</data>
<flag name="commit-queue"
          id="433017"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415727</attachid>
            <date>2020-12-09 00:34:04 -0800</date>
            <delta_ts>2020-12-09 02:09:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201209103401.patch</filename>
            <type>text/plain</type>
            <size>414077</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlkMjMwZTAzYjhlZTE5
NjcxY2Q2NDUwYjhmYTdhYWFmZTFmZjc5Zi4uNThiMTgwOTc4ZGZlYjUwYTU1NTFkNjUwN2I5ZDdm
N2UwZDNlNTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50
cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZv
ciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBX
ZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxlbWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0
IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBhc3MgdGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4
dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBmcm9tIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAg
ICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBpcyBydW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUg
YW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBjb21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVh
c2Ugb2YgcmV2aWV3LgorCisgICAgICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1p
dCBJT1N1cmZhY2VzIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3
ZWIgcHJvY2VzcyBXZWJHTCwgdGhlc2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNz
IFdlYkdMLAorICAgICAgICB0aGUgSU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3Bs
YXkgY2FsbGVyLCBlLmcuIHRoZQorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hp
Y2ggdGhlbiByZXR1cm4gdGhlIElPU3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2Vz
cyBzaWRlLiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0
aGVtIHRvIFdlYkdMTGF5ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhp
c3Rpbmcgd2ViZ2wgdGVzdHMgb25jZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4
QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UXVlcnlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQ
cm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAg
ICAgICAgKEdDR0xTcGFuPEdDR0x2b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBs
YXRmb3JtVGV4dHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJl
ZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRl
eHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNU
b0F1dG9DbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9u
c0dMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9i
amVjdHVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
YW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlh
bGl6ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y3JlYXRlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVGb3JHUFVQcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZl
ckJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFs
bG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmFzQ1YpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnBsYXRmb3JtU3dhcENoYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbToKKyAgICAgICAgKC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0
aW86Y29udGVudHNPcGFxdWU6XSk6CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1b
V2ViR0xMYXllciBkaXNwbGF5XSk6CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVz
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1
ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIw
LTEyLTA4ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIEFkZCBtaXNzaW5nIExGQyBndWFyZHMgYXJvdW5kIExpbmVMYXlvdXQgdXNhZ2UgZnJv
bSByMjcwNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmNTVjZTliNjFkYjMzZThhMzU1ODQ4NzdiOTAwMmU5YTlk
NjQxMzIuLmU3OTdmMzExNzA3ZjMxY2Y4ZWQ2MDllNDFhNzc4OWZiZTdlY2MzNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNzQyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2
ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxl
bWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBh
c3MgdGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBm
cm9tIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAgICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBp
cyBydW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAg
ICBjb21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVhc2Ugb2YgcmV2aWV3LgorCisgICAgICAgIElt
cGxlbWVudCB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gV2ViS2l0IHNpZGUuIFRoaXMg
Y2xhc3Mgd2lsbAorICAgICAgICBmb3J3YXJkIGNhbGxzIHJlY2VpdmVkIHZpYSBJUEMgdG8gdGhl
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLiBBdCB0aGUKKyAgICAgICAgbW9tZW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIGluc3RhbmNlIGlzIGEgZGlyZWN0IGNoaWxkIG9mCisgICAgICAgIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisKKyAgICAgICAgQ29tcG9zaXRpbmcgaXMgaW1wbGVt
ZW50ZWQgb25seSBmb3IgUExBVEZPUk0oQ09DT0EpLgorCisgICAgICAgIE1pc3Npbmc6CisgICAg
ICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGxvc3MKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNvbnRl
eHQgY2hhbmdlCisgICAgICAgICAtIFBhaW50IFdlYkdMIGNvbnRlbnRzIHRvIDJEIGNhbnZhcwor
ICAgICAgICAgLSBVcGxvYWQgdmlkZW8gdG8gV2ViR0wKKyAgICAgICAgIC0gVXBsb2FkIGNhbnZh
cyB0byBXZWJHTAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBo
aWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cmVjeWNsZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpwcmVzZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmRldGFjaENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6IEFkZGVkLgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDogQWRkZWQuCisgICAgICAgIChzZXRGYWls
TmV4dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKHN5bnRoZXNpemVHTEVycm9yKToKKyAgICAg
ICAgKG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChhY3RpdmVUZXh0
dXJlKToKKyAgICAgICAgKGF0dGFjaFNoYWRlcik6CisgICAgICAgIChiaW5kQXR0cmliTG9jYXRp
b24pOgorICAgICAgICAoYmluZEJ1ZmZlcik6CisgICAgICAgIChiaW5kRnJhbWVidWZmZXIpOgor
ICAgICAgICAoYmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChiaW5kVGV4dHVyZSk6CisgICAg
ICAgIChibGVuZENvbG9yKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb24pOgorICAgICAgICAoYmxl
bmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKGJsZW5kRnVuYyk6CisgICAgICAgIChibGVu
ZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAg
ICAgKGNsZWFyKToKKyAgICAgICAgKGNsZWFyQ29sb3IpOgorICAgICAgICAoY2xlYXJEZXB0aCk6
CisgICAgICAgIChjbGVhclN0ZW5jaWwpOgorICAgICAgICAoY29sb3JNYXNrKToKKyAgICAgICAg
KGNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoY29weVRleEltYWdlMkQpOgorICAgICAgICAoY29w
eVRleFN1YkltYWdlMkQpOgorICAgICAgICAoY3JlYXRlQnVmZmVyKToKKyAgICAgICAgKGNyZWF0
ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoY3JlYXRl
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVNoYWRlcik6CisgICAgICAgIChjcmVhdGVU
ZXh0dXJlKToKKyAgICAgICAgKGN1bGxGYWNlKToKKyAgICAgICAgKGRlbGV0ZUJ1ZmZlcik6Cisg
ICAgICAgIChkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChkZWxldGVQcm9ncmFtKToKKyAg
ICAgICAgKGRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChkZWxldGVTaGFkZXIpOgorICAg
ICAgICAoZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChkZXB0aEZ1bmMpOgorICAgICAgICAoZGVw
dGhNYXNrKToKKyAgICAgICAgKGRlcHRoUmFuZ2UpOgorICAgICAgICAoZGV0YWNoU2hhZGVyKToK
KyAgICAgICAgKGRpc2FibGUpOgorICAgICAgICAoZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToK
KyAgICAgICAgKGRyYXdBcnJheXMpOgorICAgICAgICAoZHJhd0VsZW1lbnRzKToKKyAgICAgICAg
KGVuYWJsZSk6CisgICAgICAgIChlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChm
aW5pc2gpOgorICAgICAgICAoZmx1c2gpOgorICAgICAgICAoZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoZnJvbnRGYWNl
KToKKyAgICAgICAgKGdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKGdldEFjdGl2ZUF0dHJpYik6
CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKGdldEF0dHJpYkxvY2F0aW9u
KToKKyAgICAgICAgKGdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0U3RyaW5nKToK
KyAgICAgICAgKGdldEZsb2F0dik6CisgICAgICAgIChnZXRJbnRlZ2Vydik6CisgICAgICAgIChn
ZXRJbnRlZ2VyNjQpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChnZXRQcm9n
cmFtaSk6CisgICAgICAgIChnZXRCb29sZWFudik6CisgICAgICAgIChnZXRFcnJvcik6CisgICAg
ICAgIChnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFBy
b2dyYW1JbmZvTG9nKToKKyAgICAgICAgKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAg
KGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChnZXRTaGFkZXJTb3VyY2UpOgor
ICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRUZXhQYXJhbWV0ZXJpKToK
KyAgICAgICAgKGdldFVuaWZvcm1mdik6CisgICAgICAgIChnZXRVbmlmb3JtaXYpOgorICAgICAg
ICAoZ2V0VW5pZm9ybXVpdik6CisgICAgICAgIChnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAg
ICAoZ2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAgKGhpbnQpOgorICAgICAgICAoaXNC
dWZmZXIpOgorICAgICAgICAoaXNFbmFibGVkKToKKyAgICAgICAgKGlzRnJhbWVidWZmZXIpOgor
ICAgICAgICAoaXNQcm9ncmFtKToKKyAgICAgICAgKGlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAg
KGlzU2hhZGVyKToKKyAgICAgICAgKGlzVGV4dHVyZSk6CisgICAgICAgIChsaW5lV2lkdGgpOgor
ICAgICAgICAobGlua1Byb2dyYW0pOgorICAgICAgICAocGl4ZWxTdG9yZWkpOgorICAgICAgICAo
cG9seWdvbk9mZnNldCk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAg
KHNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAgKHNjaXNzb3IpOgorICAgICAgICAoc2hhZGVyU291
cmNlKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jU2VwYXJh
dGUpOgorICAgICAgICAoc3RlbmNpbE1hc2spOgorICAgICAgICAoc3RlbmNpbE1hc2tTZXBhcmF0
ZSk6CisgICAgICAgIChzdGVuY2lsT3ApOgorICAgICAgICAoc3RlbmNpbE9wU2VwYXJhdGUpOgor
ICAgICAgICAodGV4UGFyYW1ldGVyZik6CisgICAgICAgICh0ZXhQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKHVuaWZvcm0xZik6CisgICAgICAgICh1bmlmb3JtMWZ2KToKKyAgICAgICAgKHVuaWZvcm0x
aSk6CisgICAgICAgICh1bmlmb3JtMWl2KToKKyAgICAgICAgKHVuaWZvcm0yZik6CisgICAgICAg
ICh1bmlmb3JtMmZ2KToKKyAgICAgICAgKHVuaWZvcm0yaSk6CisgICAgICAgICh1bmlmb3JtMml2
KToKKyAgICAgICAgKHVuaWZvcm0zZik6CisgICAgICAgICh1bmlmb3JtM2Z2KToKKyAgICAgICAg
KHVuaWZvcm0zaSk6CisgICAgICAgICh1bmlmb3JtM2l2KToKKyAgICAgICAgKHVuaWZvcm00Zik6
CisgICAgICAgICh1bmlmb3JtNGZ2KToKKyAgICAgICAgKHVuaWZvcm00aSk6CisgICAgICAgICh1
bmlmb3JtNGl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAodW5pZm9y
bU1hdHJpeDNmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKHVzZVBy
b2dyYW0pOgorICAgICAgICAodmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjFmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjFmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIy
Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAodmVydGV4QXR0cmliM2Yp
OgorICAgICAgICAodmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjRmKToK
KyAgICAgICAgKHZlcnRleEF0dHJpYjRmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJQb2ludGVy
KToKKyAgICAgICAgKHZpZXdwb3J0KToKKyAgICAgICAgKGJ1ZmZlckRhdGEwKToKKyAgICAgICAg
KGJ1ZmZlckRhdGExKToKKyAgICAgICAgKGJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAocmVhZG5Q
aXhlbHMwKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMSk6CisgICAgICAgICh0ZXhJbWFnZTJEMCk6
CisgICAgICAgICh0ZXhJbWFnZTJEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTJEMCk6CisgICAg
ICAgICh0ZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UyRDApOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEpOgorICAgICAg
ICAoZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChkcmF3RWxlbWVudHNJbnN0YW5jZWQp
OgorICAgICAgICAodmVydGV4QXR0cmliRGl2aXNvcik6CisgICAgICAgIChjcmVhdGVWZXJ0ZXhB
cnJheSk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChpc1ZlcnRleEFy
cmF5KToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAgIChjb3B5QnVmZmVyU3Vi
RGF0YSk6CisgICAgICAgIChnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChpbnZh
bGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToK
KyAgICAgICAgKHJlYWRCdWZmZXIpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKToKKyAgICAgICAgKHRleFN0b3JhZ2UyRCk6CisgICAgICAgICh0ZXhTdG9yYWdlM0Qp
OgorICAgICAgICAodGV4SW1hZ2UzRDApOgorICAgICAgICAodGV4SW1hZ2UzRDEpOgorICAgICAg
ICAodGV4U3ViSW1hZ2UzRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAo
Y29weVRleFN1YkltYWdlM0QpOgorICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlM0QwKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QxKToKKyAgICAgICAg
KGdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAodW5pZm9ybTF1aSk6CisgICAgICAgICh1
bmlmb3JtMnVpKToKKyAgICAgICAgKHVuaWZvcm0zdWkpOgorICAgICAgICAodW5pZm9ybTR1aSk6
CisgICAgICAgICh1bmlmb3JtMXVpdik6CisgICAgICAgICh1bmlmb3JtMnVpdik6CisgICAgICAg
ICh1bmlmb3JtM3Vpdik6CisgICAgICAgICh1bmlmb3JtNHVpdik6CisgICAgICAgICh1bmlmb3Jt
TWF0cml4MngzZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKHVu
aWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDNmdik6Cisg
ICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGkpOgorICAgICAgICAodmVydGV4QXR0cmliSTRpdik6Cisg
ICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0dWl2KToK
KyAgICAgICAgKHZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKGRyYXdSYW5nZUVsZW1l
bnRzKToKKyAgICAgICAgKGRyYXdCdWZmZXJzKToKKyAgICAgICAgKGNsZWFyQnVmZmVyaXYpOgor
ICAgICAgICAoY2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmdik6CisgICAg
ICAgIChjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKGNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKGRl
bGV0ZVF1ZXJ5KToKKyAgICAgICAgKGlzUXVlcnkpOgorICAgICAgICAoYmVnaW5RdWVyeSk6Cisg
ICAgICAgIChlbmRRdWVyeSk6CisgICAgICAgIChnZXRRdWVyeSk6CisgICAgICAgIChnZXRRdWVy
eU9iamVjdHVpKToKKyAgICAgICAgKGNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoZGVsZXRlU2Ft
cGxlcik6CisgICAgICAgIChpc1NhbXBsZXIpOgorICAgICAgICAoYmluZFNhbXBsZXIpOgorICAg
ICAgICAoc2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoc2FtcGxlclBhcmFtZXRlcmYpOgor
ICAgICAgICAoZ2V0U2FtcGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoZ2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoZmVuY2VTeW5jKToKKyAgICAgICAgKGlzU3luYyk6CisgICAgICAg
IChkZWxldGVTeW5jKToKKyAgICAgICAgKGNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKHdhaXRT
eW5jKToKKyAgICAgICAgKGdldFN5bmNpKToKKyAgICAgICAgKGNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGlzVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZW5kVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChnZXRU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAocGF1c2VUcmFuc2Zvcm1GZWVkYmFj
ayk6CisgICAgICAgIChyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiaW5kQnVm
ZmVyQmFzZSk6CisgICAgICAgIChiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAgICAoZ2V0VW5pZm9y
bUluZGljZXMpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoZ2V0VW5p
Zm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6Cisg
ICAgICAgICh1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKGdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2KToKKyAgICAgICAgKGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAo
YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAo
ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgIChiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKToKKyAgICAgICAgKGluc2VydEV2ZW50TWFya2VyRVhUKToKKyAgICAgICAgKHB1
c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAg
IChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgor
ICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAodmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICog
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAg
IChJUEM6OkFycmF5UmVmZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFy
cmF5UmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OnNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6
ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNv
ZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5k
ZXI6OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1
eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNo
YXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
c2VuZFN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFy
a0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVu
Y3Rpb25zR2VuZXJhdGVkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdl
MkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRp
c2FibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJM
b2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3Ip
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1l
dGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1mdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQ
cm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1NoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVy
YWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Np
c3Nvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNo
YWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFy
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNGYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dy
YW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWI0Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNz
ZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliRGl2aXNvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1h
Z2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0
YUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0ydWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4
M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1Jh
bmdlRWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1
ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5k
UXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1l
dGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRy
YW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVy
UmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybUJsb2NrQmluZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1
ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRl
eEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2
ZW50TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhl
bHNSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVj
dHVpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQ
VVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vz
c2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5
ZWRSZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAzICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSVBDIHNob3VsZCBzdXBwb3J0
IG5vbi1ieXRlIGFsaWduZWQgZGF0YSByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBi
MWY1NGY2MWMyYTNkYjlmMWRlMTRmMmRlZWNjOWQ5N2Y0MThhYzgxLi4yOWIyY2E2ODk2OTk0MWFk
NGYyOTdmOTMxZWE0YWIyZTQwZmRhNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNTQsNiAr
MTI1NCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFl
ZDhlYWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgyZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1
ODk3MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCAr
MzExLDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOWJmYWU5NjRlMjRkMmMyN2JiZTc4
N2ZiOTAwMTMzNjM1ZTg0MDEyMy4uM2I3ZTRhZjA2ZjNlZjAwNDAzNGU3YmYzMWM5N2EyYTU3MGYw
ZWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzUsNiArMTk3NSw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGM4ZTVhZjFmZWYxMDVmMzRjODE3ODE3
MmZjMWRjZDY3ZGU0ZTdmNjUuLjhmOTlmOWExOTE4Yzk1NTg4NWZiMmFjYjk5YzhkMWE3NTI2NWFh
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzU4LDEyICszNTgsMTQgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYzdjZDg3
YzgzYjIzMGFlOTRjN2NlMzAxYWNlMTUwM2E5ZmM2YjgyLi4yNDFjZTBmODhjZjcwZDM1NjFlN2Ey
NzZiMzQ2Zjk0ODRkNzc4OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDU2LDcgKzIwNTYsNyBAQAogCQk2RTQ3RTY2MTEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFC
Q0Q1MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFE
MjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEw
MEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgw
RThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lv
bnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0
MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURD
RDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMw
MEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRl
bXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjUwLDYgKzIyNTAsOCBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDEx
NDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4
MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3
NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkw
NkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDI1NSw5ICsxMDI1NywxNCBAQAogCQk3
QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0Ix
NjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBD
NzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDgg
LyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFG
M0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3Bw
LmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJF
RjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNGMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5l
cmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjY2NTksNiArMjY2NjYsOCBAQAogCQkJCTA3NEU4MkI5MThBNjlG
MEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmggKi8sCisJCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKKwkJCQk3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkw
NzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJ
CTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJ
CTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0yNjgy
Niw2ICsyNjgzNSw4IEBACiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKIAkJCQlCNTMyMEQ2QTEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0Mw
MDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKKwkJCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
LAorCQkJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4
NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLApAQCAtMjY4MzcsNiArMjY4NDgsNyBA
QAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3Bl
bkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLAogCQkJCUNERUIz
RDcyMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovLAogCQkJCUNE
RUIzRDczMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCAqLywKIAkJCQlD
RDhGNjY3MDI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8s
CkBAIC0zMjE0NCw2ICszMjE1Niw3IEBACiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcy
MUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQw
MDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQw
OTAsNiArMzQxMDMsNyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQw
MEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlB
MjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5
MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3Rl
UGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAv
KiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA3MmMyNjQ0NjY2Y2YwM2EyZjU5ZjFlMDlmZTkz
MjkzY2I4MGI2YmFlLi5mN2M2YTJlODJhNGJmMDM3YTFiNDc3ZDc4M2ZhNTQxYWM0ZjU0Njk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcApAQCAtNzMyLDggKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUo
Q2FuCiAgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAg
ICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKICAgICB9Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpOwor
ICAgIGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywg
aG9zdFdpbmRvdyk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNFbGVt
ZW50KSB7CiAgICAgICAgICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29u
dGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JF
dmVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA1Y2NlNWQzZmZiMWM5YTdmY2IxNDdlZTYz
NDUxMWRjYjQ0OWRjNWUwLi5iNzEwZTcxNWE2NmRjYWM1Njc0MmRiNmJiZWE3NDFkNmY4NjM0MmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MzAsNiArNTMwLDEzIEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vCiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQu
Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZGlzcGxheUlEKCkpOworfQorI2Vu
ZGlmCisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhm
NTZhMTkxMjA0OWQ0Nzk3NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1
MDU3NjU0MGQzZjIzMmEzY2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBA
QCBwdWJsaWM6CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwog
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29u
c3Qgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAppbmRleCAzYTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThk
MGE5Li44ZjE4ZmRmZjA0OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQ
bGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAg
ICAvLyBQYXNzIG51bGxwdHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9v
dCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUm
LCBHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3Zlcmxh
eUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hv
c3RXaW5kb3cuaAppbmRleCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDll
Li43MzgxMThiMjFlM2MzMzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJH
TCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOwor
I2VuZGlmCisKICAgICAvLyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQg
b2YgdGhlIHBhZ2UuCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdl
Q2xpZW50KCkgY29uc3QgPSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJk
ZTZjMGRiMjZhYTc4NDUyZmIzLi43YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQy
ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaApAQCAtMzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50
aW5nQXBwbGljYXRpb25QSUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlz
SW5XZWJQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9j
ZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBi
b29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQ
VVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKIAogYm9vbCBpc0luV2ViUHJvY2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9v
bCBpc0luTmV0d29ya1Byb2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0Nv
Y29hLm1tCmluZGV4IGZiZDFkNDNjMDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIw
NmZmNDdkZmM1NDE3MjFmNjRhYTBkZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrc0NvY29hLm1tCkBAIC05Niw2ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAg
ICByZXR1cm4gbWFpbkJ1bmRsZUlzV2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2Vz
cygpCit7CisgICAgc3RhdGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5X
ZWJLaXQuR1BVIl07CisgICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJv
b2wgaXNJbk5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNO
ZXR3b3JrUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
IGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBjNGU3Nzc4ZGI2
YTQ0OGZkMGE1ZTY1MTU5MWZlZWExNDUzODYzODIzLi5kNTAyMWRkMzM0ZWRmOTFhMzQyMzBiZTAx
Njg5MjA3NDI0OWViMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaApAQCAtMjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xf
S0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QTEVUSU9OX1NUQVRVU19LSFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlv
bnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xf
QU5HTEVfcmVxdWVzdF9leHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5j
dGlvbnMuCiAKICAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0
aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCmluZGV4IGFlMGYwN2MyZGU0YjUwMzc3MTkzYmI1ZjdiOWEwNGQ5Y2FmMjhlODUuLjk1MDNi
NGE3ZTIwN2RkYTZjZmI3YjI2M2FjOWYzMjE4MWVhZTRiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTI3
LDExICsyNywxMyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCiAjaWYg
RU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9y
bWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpA
QCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1
bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdM
OjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJz
KGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggNTk2MzRlOTFkNzAwMDg4ZThhZjk2ZDg3MmRhMTQ5YmRiN2Yz
MTJiYy4uMjIzYTVjOWJmMTY5N2YyNWYxMTJkYmNjMTg2ZjgxOWI3Y2UxZGU0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
CkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZv
ciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgog
ICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTA5LDE0ICs5MTEsMTcgQEAgcHVibGljOgog
ICAgICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGlj
c0NvbnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24g
aW4gY29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0
IHRoZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVu
LCBHcmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1
YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQo
Q2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVt
b3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0K
IAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1
bmRlcnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQg
YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC0xMzk1
LDcgKzE0MDAsNiBAQCBpbmxpbmUgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0SW50ZXJu
YWxmb3JtYXRpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaQogICAgIHJldHVybiB2YWx1ZVsw
XTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCAyMTZi
ZDM2NjhmMTA3YTg3OTE0ZGU0ZjYwYmJlNTI2MzExNWRmZmY4Li4zYjA2NGMzZTc2OGVjYzRiZjAy
Yjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC00NCwxNSArNDYsMTcgQEAgdHlwZWRlZiB1bnNpZ25lZCBHQ0dMdWludDsK
IHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0OwogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQ0dMaGFs
ZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dMY2xhbXBmOwotdHlwZWRlZiBpbnRwdHJfdCBHQ0dM
aW50cHRyOwotdHlwZWRlZiBpbnRwdHJfdCBHQ0dMc2l6ZWlwdHI7CiB0eXBlZGVmIGNoYXIgR0NH
TGNoYXI7Ci10eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBHQ0dMdWludDY0OwogdHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdDR0xzeW5jOwog
dHlwZWRlZiB2b2lkIEdDR0x2b2lkOwotdHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIAor
Ly8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0Y2ggdGhlIEdMIHR5cGVzIGFz
IGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZpbGUgZm9yIGFsbCBwbGF0Zm9y
bXMuCit0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7Cit0eXBlZGVmIGludHB0cl90IEdDR0xz
aXplaXB0cjsKK3R5cGVkZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7Cit0eXBlZGVmIGxvbmcgbG9u
ZyBHQ0dMaW50NjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwogCiB0
eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTYwLDEzICs2NCwxNyBAQCB0
eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWlu
dDsKICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdj
R0xTcGFuRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNF
eHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0
ZW50Pgogc3RydWN0IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkK
KyAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAg
ICAgICAgIDogZGF0YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkp
W0V4dGVudF0pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTc0LDYgKzgyLDEy
IEBAIHN0cnVjdCBHQ0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0
ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilb
XSwgVCgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90
aGVyLmRhdGEpCiAgICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBh
cnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bh
bihjb25zdCBzdGQ6OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJy
YXkuZGF0YSgpKQorICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFT
RV9BU1NFUlQoZGF0YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYg
b3BlcmF0b3IqKCkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRh
dGE7IH0KICAgICBUKiBkYXRhOwpAQCAtODEsNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5E
eW5hbWljRXh0ZW50PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykK
ICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0x
MjMsNiArMTM3LDExIEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRh
dGEob3RoZXIuZGF0YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2Yo
VSkpCiAgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkp
CisgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5z
aXplKCkgKiBzaXplb2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29u
c3Qgc2l6ZV90IGJ1ZlNpemU7CiB9OwpAQCAtMTU0LDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NH
TFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xT
cGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CitHQ0dMU3BhbihXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxU
PjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBk
YXRhLCBzaXplX3QgY291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDNjMzgzMzc3YjdkZTcwNzk3NzQyMDY5MmM4OTA3NTg3YTI3ZjE4Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChh
dHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKK30KKworUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpID0g
ZGVmYXVsdDsKKworRXh0ZW5zaW9uc0dMJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNH
TEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCku
aXNXZWJHTDI7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1h
cmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRy
YWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQorICAgICAgICBub3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CisgICAgYXV0byBhdHRy
cyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdpbmdC
dWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJzLmRlcHRoKQorICAgICAgICAg
ICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZF
Ul9CSVQ7CisgICAgICAgIGlmIChhdHRycy5zdGVuY2lsKQorICAgICAgICAgICAgbV9idWZmZXJz
VG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAg
ICB9CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAg
ICAgICAgY2xpZW50LT5kaWRDb21wb3NpdGUoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sYXllckNvbXBvc2l0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQgYnVmZmVycykKK3sKKyAg
ICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCkucHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgICAg
ICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IGJ1ZmZlcnM7Cit9CisKK0dDR0xiaXRmaWVsZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xlYXI7Cit9CisKK2Jvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQor
eworICAgIC8vIFJlZGVjbGFyZWQgZm9yIGV4cG9ydCByZWFzb25zLgorICAgIC8vIEZJWE1FOiBU
aGUgd2hvbGUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgR3JhcGhpY3NDb250ZXh0
R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOworfQorCitib29sIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgp
OworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9l
bmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBlbnN1cmVFeHRlbnNp
b25FbmFibGVkKG5hbWUpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsK
KyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5h
YmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5h
YmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKK3sKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAg
ICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGZvciAoYXV0byYg
ZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworfQorCisjaWYgIVBMQVRGT1JN
KENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKCkKK3sKK30KKworUGxhdGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRy
OworfQorI2VuZGlmCisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTY1YmI1YmQyOGM4Y2Y1N2FhNTNiMjcwZWFlNTEzZjRhOTUyZmY0
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkV4
dGVuc2lvbnNHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oQ09DT0EpCitPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisjaWYgUExBVEZPUk0oQ09DT0EpCitjbGFzcyBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKKyNlbmRpZgorCisvLyBBIGJhc2UgY2xhc3MgZm9y
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHByb3h5IHNpZGUgaW1wbGVtZW50YXRpb24KKy8vIFRo
aXMgaW1wbGVtZW50cyB0aGUgcGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29yZSBpbnRlcm5hbCBm
dW5jdGlvbmFsaXR5OgorLy8gLSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBtYW5hZ2VtZW50Lgor
Ly8gLSBDb21wb3NpdGluZyBzdXBwb3J0LgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wsIHB1Ymxp
YyBFeHRlbnNpb25zR0wgeworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIH5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpIG92ZXJyaWRlOworCisgICAgLy8gT3RoZXIgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHVzaW5nIEdyYXBoaWNzQ29u
dGV4dEdMOjppc0VuYWJsZWQ7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IGZpbmFsOworICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOworICAg
IHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhpY3NDb250
ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgY29u
c3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRl
ZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRm
aWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7Cisg
ICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKworI2lmIEVOQUJM
RShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRleHRHTENWKiBh
c0NWKCkgZmluYWw7CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMu
CisgICAgdXNpbmcgRXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBzdXBwb3J0cyhj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
JikgZmluYWw7CisgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdmlydHVh
bCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0Zm9ybVN3YXBDaGFpbigp
OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVy
OworI2VuZGlmCisKKyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisg
ICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0
cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9l
bmFibGVkRXh0ZW5zaW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3aW5nIGJ1ZmZlciBjbGVhciB0
cmFja2luZyBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4KKyAgICBib29sIG1fbGF5ZXJD
b21wb3NpdGVkID0gZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFy
ID0geyAwIH07Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2NlNDczMjE2MjhmMWY2
MDcyNDIxYTc2YmM2MGNlMWJjNTNkYWIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKFdF
QkdMKSAmJiBQTEFURk9STShDT0NPQSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6fkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluKCkgPSBkZWZhdWx0OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVlNDE2OGUz
MWJlYjhmMmJiNzc0Y2Y3ZGUxZTk1ZjhkMGI5OTYxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisj
aW5jbHVkZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEFuIGludGVyZmFj
ZSBmb3IgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJp
bmcgc3dhcAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRoZSBpbXBsZW1lbnRvciB3aWxs
IG93biB0aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgorLy8gVGhlIGNsaWVudCBt
YXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhl
IG1ldGFkYXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQu
IEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKKy8vIGJlIGFibGUgdG8g
b2J0YWluIHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KKy8vIEV4YW1wbGUgdXNlIG9m
IHRoZSBtZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0
YS4gVGhpcyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50IGlzIGRvbmUgd2l0aCB0aGUg
SU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRpbnVlIHVzaW5nCisvLyB0aGUg
ZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBidWZmZXIgcmVjeWNsZSBsb2dp
Yy4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAgICAvLyBUaGUgYWN0dWFsIGNv
bnRlbnRzLiBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIElPU3VyZmFjZS4K
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsKKyAg
ICAgICAgLy8gUHJvZHVjZXIgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1
cmZhY2UpLiBDbGllbnQgZG9lcyBub3QgdHJhbnNmZXIgdGhlIG93bmVyc2hpcC4KKyAgICAgICAg
dm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OworICAgIH07CisgICAgLy8gUmV0dXJucyB0aGUgbWV0
YWRhdGEgaGFuZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KKyAgICAvLyBDbGll
bnQgbWF5IHJlY2lldmUgYmFjayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1
cmZhY2UsIGluIGNhc2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRoZQorICAgIC8vIHRpbWUgb2YgdGhl
IGNhbGwuCisgICAgLy8gUmV0dXJucyBlaXRoZXI6CisgICAgLy8gLSBFbXB0eSBidWZmZXIgaWYg
bm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRlZC4KKyAgICAvLyAtIEJ1ZmZlciB3aXRoIGVtcHR5
IHN1cmZhY2UgYW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUgaWYgdGhlIHJlY3ljbGVkIGJ1
ZmZlciB3YXMgYXZhaWxhYmxlCisgICAgLy8gICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4g
dXNlLgorICAgIC8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgorICAgIHZpcnR1YWwgQnVmZmVyIHJl
Y3ljbGVCdWZmZXIoKSA9IDA7CisKKyAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNw
bGF5IHdpdGggYSBjb250ZW50cyBidWZmZXIuCisgICAgdmlydHVhbCB2b2lkIHByZXNlbnQoQnVm
ZmVyKSA9IDA7CisKKyAgICAvLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBj
dXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCisgICAgLy8gVGhlIGlmIG11
bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0IGhh
dmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0aGlzLgorICAgIHZpcnR1YWwg
dm9pZCogZGV0YWNoQ2xpZW50KCkgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDUzNTgwZDIxZTk4ZmY2MjIwNGQw
NWIyNGRhNzMxYmE1YjI1MDgwYzAuLmRjMTY1NGY1ODRjMDJiZWU5ZWJhMTNiMGRiZjM1NThmMWQ1
NDk4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlci5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtODEsNyArODIsNyBAQCBzdGF0aWMgRUdMRGlzcGxheSBJbml0aWFsaXplRUdMRGlzcGxh
eSgpCiAgICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CiAgICAgRUdMaW50IG1pbm9yVmVyc2lv
biA9IDA7CiAgICAgRUdMRGlzcGxheSBkaXNwbGF5OwotICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6
ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIWlzSW5XZWJQcm9jZXNzKCk7CisgICAgYm9v
bCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQgPSAhKGlzSW5XZWJQ
cm9jZXNzKCkgfHwgaXNJbkdQVVByb2Nlc3MoKSk7CiAgICAgaWYgKHNob3VsZEluaXRpYWxpemVX
aXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCkgewogICAgICAgICAvLyBGb3IgV0sxIHR5cGUgQVBJ
cyB3ZSBuZWVkIHRvIHNldCAidm9sYXRpbGUgcGxhdGZvcm0gY29udGV4dCIgZm9yIHNwZWNpZmlj
CiAgICAgICAgIC8vIEFQSXMsIHNpbmNlIGNsaWVudCBjb2RlIHdpbGwgYmUgYWJsZSB0byBvdmVy
cmlkZSB0aGUgdGhyZWFkLWdsb2JhbCBjb250ZXh0CkBAIC0xMzQsNyArMTM1LDcgQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0g
YWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBk
ZXN0aW5hdGlvbikpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4
dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgaG9zdFdpbmRv
dywgbnVsbHB0ciwgbnVsbHB0cikpOwogCiAgICAgaWYgKCFjb250ZXh0LT5tX2NvbnRleHRPYmop
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ3LDEzICsxNDgsMTggQEAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdy
YXBoaWNzQ29udGV4dEcKIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVk
Q29udGV4dCkKIHsKICAgICBhdXRvIGhvc3RXaW5kb3cgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5ob3N0V2luZG93Rm9yQ29udGV4dCgmc2hhcmVkQ29u
dGV4dCk7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCksIGhvc3RXaW5kb3csIHNo
YXJlZENvbnRleHQuZGVzdGluYXRpb24oKSwgJnNoYXJlZENvbnRleHQpKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRl
eHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgJnNoYXJlZENvbnRleHQsIG51bGxw
dHIpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdpbmRvdyk7CiAKICAgICByZXR1cm4g
Y29udGV4dDsKIH0KIAorUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJzLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogc3dh
cENoYWluKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKGF0dHJzLCBudWxscHRyLCBudWxscHRyLCBzd2FwQ2hhaW4pKTsKK30KKwogI2lmIFBMQVRG
T1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGp1c3QgZW5hYmxlZCAt
IHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAogc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlE
KENHTENvbnRleHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRP
YmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJyZWRHUFVJRCkKQEAgLTIwNCw4ICsyMTAsOCBAQCBz
dGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBD
R0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1HcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0Nv
bnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBzaGFyZWRDb250ZXh0KQotICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIGRlc3RpbmF0
aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQsIEdy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCisgICAgOiBHcmFw
aGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgc2hhcmVkQ29udGV4
dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMuaXNXZWJHTDI7CiAKQEAgLTMzMywxMyAr
MzM5LDE3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVz
KCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNo
YW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKLSAgICAvLyBDcmVhdGUgdGhlIFdlYkdMTGF5ZXIK
KyAgICBpZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFpbiA9IHN3YXBDaGFpbjsKKyAg
ICBlbHNlIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAgICAgbV93ZWJH
TExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxS
YXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0p
OwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wg
TGF5ZXIiXTsKICNlbmRpZgogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAg
bV9zd2FwQ2hhaW4gPSAmW21fd2ViR0xMYXllciBzd2FwQ2hhaW5dOworICAgIH0KIAogICAgIC8v
IENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVy
LgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KTsKQEAgLTQwOCwxMyArNDE4LDEyIEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp+R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woKQogICAgICAgICBpZiAobV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJG
Qk8pCiAgICAgICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX3ByZXNlcnZlRHJh
d2luZ0J1ZmZlckZCTyk7CiAgICAgfQotICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKQor
ICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKSB7CiAgICAgICAgIEVHTF9EZXN0cm95U3Vy
ZmFjZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpOwotICAgIGlmIChtX3dl
YkdMTGF5ZXIpIHsKLSAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIg
cmVjeWNsZUJ1ZmZlcl07CisgICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFp
bi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQog
ICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZm
ZXIuaGFuZGxlKTsKLSAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IFttX3dlYkdMTGF5ZXIg
ZGV0YWNoQ2xpZW50XTsKKyAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IG1fc3dhcENoYWlu
LT5kZXRhY2hDbGllbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRzSGFuZGxlKQogICAgICAgICAg
ICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgY29udGVudHNIYW5kbGUpOwogICAg
IH0KQEAgLTU3NywxMSArNTg2LDE2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
c2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgICAgIG1fZGlzcGxheUJ1ZmZlclBidWZm
ZXIgPSBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAgICAgLy8gUmVzZXQgdGhlIGZ1dHVyZSByZWN5
Y2xlZCBidWZmZXIgbm93LCBiZWNhdXNlIGl0IG1vc3QgbGlrZWx5IHdpbGwgbm90IGJlIHJldXNh
YmxlIGF0IHRoZSB0aW1lIGl0IHdpbGwgYmUgcmV1c2VkLgotICAgIGF1dG8gcmVjeWNsZWRCdWZm
ZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgIGF1dG8gcmVjeWNsZWRCdWZm
ZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgIGlmIChyZWN5Y2xlZEJ1ZmZl
ci5oYW5kbGUpCiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3lj
bGVkQnVmZmVyLmhhbmRsZSk7CiAgICAgcmVjeWNsZWRCdWZmZXIuc3VyZmFjZS5yZXNldCgpOwor
ICAgIHJldHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOworfQogCiti
b29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVy
QmFja2luZygpCit7CisgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlz
RW1wdHkoKSk7CiAgICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUo
Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYo
KSk7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzksNyAr
NjUzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzKCkgY29uc3QKICAgICAvLyBmb3IgT3BlbkdMIHRvIGRlY2lkZSB3aGljaCBHUFUgaXMgY29u
bmVjdGVkIHRvIGEgZGlzcGxheSAob25saW5lL29mZmxpbmUpLgogICAgIC8vIE9wZW5HTCB3aWxs
IHRoZW4gY29uc2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRlcmVycywgYXMgb2ZmbGluZSwgd2hpY2gg
bWVhbnMKICAgICAvLyBhbGwgb2ZmbGluZSByZW5kZXJlcnMgbmVlZCB0byBiZSBjb25zaWRlcmVk
IHdoZW4gZmluZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAgICAvLyBJbiBXZWJLaXQgbGVnYWN5LCB0
aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZG93U2VydmVyIGNvbm5lY3Rpb24sIGFuZAorICAgIC8v
IEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kd1NlcnZlciBjb25u
ZWN0aW9uLCBhbmQKICAgICAvLyBtX2Rpc3BsYXlNYXNrIHdpbGwgbm90IGJlIHNldCBpbiB0aGlz
IGNhc2UuCiAgICAgaWYgKHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTY4NSwxMCArNjk5LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAvLyBUaGUgSU9TdXJmYWNlIHdpbGwgYmUgdXNl
ZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwgc28gZmx1c2ggR0wgY29tbWFuZHMuCiAg
ICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXll
ciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4t
PnJlY3ljbGVCdWZmZXIoKTsKIAogICAgIEVHTF9SZWxlYXNlVGV4SW1hZ2UobV9kaXNwbGF5T2Jq
LCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIpOwotICAgIFttX3dlYkdM
TGF5ZXIgcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6IHtXVEZNb3ZlKG1fZGlzcGxheUJ1
ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyfV07CisgICAgbV9zd2FwQ2hhaW4t
PnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZm
ZXJQYnVmZmVyIH0pOwogICAgIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgPSBFR0xfTk9fU1VSRkFD
RTsKIAogICAgIGJvb2wgaGFzTmV3QmFja2luZyA9IGZhbHNlOwpAQCAtNzAyLDcgKzcxNiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKIAogICAg
IC8vIEVycm9yIHdpbGwgYmUgaGFuZGxlZCBieSBuZXh0IGNhbGwgdG8gbWFrZUNvbnRleHRDdXJy
ZW50KCkgd2hpY2ggd2lsbCBub3RpY2UgbGFjayBvZiBkaXNwbGF5IGJ1ZmZlci4KICAgICBpZiAo
IWhhc05ld0JhY2tpbmcpCi0gICAgICAgIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpOwor
ICAgICAgICBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogCiAgICAgbWFy
a0xheWVyQ29tcG9zaXRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM0MTQwMTViN2IwZjM0YmIy
OGJlMzQ1NTA5Yzc0MjllMzFkYWEzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2EubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisjaW1wb3J0ICJXZWJHTExheWVyLmgiCisjaW1wb3J0
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgp
Cit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJH
TExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxS
YXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07CisjZW5kaWYKKyAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKworUGxhdGZvcm1MYXllciogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7Cit9CisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShB
VkZPVU5EQVRJT04pCitHcmFwaGljc0NvbnRleHRHTENWKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6YXNDVigpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwor
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVN3YXBDaGFpbigpCit7CisgICAgcmV0dXJuIFttX3dlYkdM
TGF5ZXIgc3dhcENoYWluXTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKaW5kZXggMTRiMDFlNzA1ZjIw
NTMwMWM3Yzk3Y2Y2NmU3MWEwOGJiZjQxZTcwNS4uN2ZlODhhMmZmNGNlMGY1NTlkNTlkYzFjZDk1
MmEzYTdlYTg4MDk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIuaApAQCAtMjMsNTIgKzIzLDIyIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpbXBvcnQgIklPU3VyZmFjZS5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
PgorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8d3RmL05ha2VkUHRyLmg+CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLXN0cnVjdCBXZWJHTExheWVyQnVmZmVyIHsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLgot
ICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8gQ2xpZW50IHNwZWNpZmljIG1ldGFkYXRh
IGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KLX07Ci19Ci0KIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAKIC8vIEEgbGF5ZXIgY2xhc3MgaW1wbGVtZW50aW5nIGZyb250
IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dhcAogLy8gY2hhaW4gb2YgSU9T
dXJmYWNlcy4KLS8vIFRoZSBsYXllciB3aWxsIG93biB0aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZv
ciBkaXNwbGF5LgotLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9T
dXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRhCi0vLyBiYWNrIG9uY2UgdGhlIElP
U3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBu
ZWNjZXNzYXJpbHkKLS8vIGJlIGFibGUgdG8gb2J0YWluIHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZv
ciByZXVzZS4KLS8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRhZGF0YSBpcyB0byB1c2UgRUdMU3Vy
ZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3YXkKLS8vIHdoZW4gdGhlIFdlYkdM
TGF5ZXIgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxheSwgdGhlIGNsaWVudCBjYW4g
Y29udGludWUgdXNpbmcKLS8vIHRoZSBleGlzdGluZyBiaW5kaW5nIG9idGFpbmVkIHRocm91Z2gg
dGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgogQGludGVyZmFjZSBXZWJHTExheWVyIDogQ0FMYXll
cgogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0
aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWU7CiAKIC0gKENHSW1hZ2VSZWYp
Y29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9yU3Bh
Y2U7CiAKLS8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRsZSBvZiBsYXN0IHVudXNlZCBjb250
ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgbWF5IHJlY2lldmUgYmFjayBhbHNvIHRoZSBvd25lcnNo
aXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRo
ZQotLy8gdGltZSBvZiB0aGUgY2FsbC4KLS8vIFJldHVybnMgZWl0aGVyOgotLy8gLSBFbXB0eSBi
dWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRlZC4KLS8vIC0gQnVmZmVyIHdpdGgg
ZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhhbmRsZSBpZiB0aGUgcmVjeWNs
ZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKLS8vICAgYnV0IHRoZSBzdXJmYWNlIGlzIHN0aWxsIGlu
IHVzZS4KLS8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgotLSAoV2ViQ29yZTo6V2ViR0xMYXllckJ1
ZmZlcilyZWN5Y2xlQnVmZmVyOwotCi0vLyBQcmVwYXJlcyB0aGUgbGF5ZXIgZm9yIGRpc3BsYXkg
d2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCB0cmFuc2ZlcnMgdGhlIG93bmVyc2hp
cCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZmZXJgLgotLSAodm9pZClwcmVw
YXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcilidWZm
ZXI7Ci0KLS8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29u
dGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KLS8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJz
IGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVk
IGJlZm9yZSBjYWxsaW5nCi0vLyB0aGlzLgotLSAodm9pZCopZGV0YWNoQ2xpZW50OworLSAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2FwQ2hhaW47CiAK
IEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW0KaW5kZXggYzhmNGU3OWY3MzEyZWFhNmFiMDQ0NjgwODNlYThkMGM4YmVm
YTNiYy4uMzg1OTdlNGE4ZjYzM2E1ZWU1ZGI3NDkzMzAyMmRjMjM3ZmU3ZTQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1t
CkBAIC0zMiwxMyArMzIsMzkgQEAKICNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9y
dCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVT
UEkuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5o
PgorCitjbGFzcyBXZWJHTExheWVyU3dhcENoYWluIGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBXZWJHTExheWVyU3dhcENoYWluKFdlYkdMTGF5ZXIqIGxheWVyKSAgOiBtX2xheWVyKGxheWVy
KSB7IH07CisgICAgfldlYkdMTGF5ZXJTd2FwQ2hhaW4oKSBvdmVycmlkZSA9IGRlZmF1bHQ7Cisg
ICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgQnVmZmVyIHJlY3ljbGVCdWZm
ZXIoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkg
eworICAgICAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQorICAg
ICAgICAgICAgICAgIG1fc3BhcmVCdWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgICAgICAgICAg
cmV0dXJuIFdURk1vdmUobV9zcGFyZUJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisgICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKKyAgICAgICAgdm9pZCogcmVz
dWx0ID0gbV9kaXNwbGF5QnVmZmVyLmhhbmRsZTsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyLmhh
bmRsZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIFdlYkNv
cmU6OklPU3VyZmFjZSogZGlzcGxheVN1cmZhY2UoKSB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIu
c3VyZmFjZS5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOwor
ICAgIEJ1ZmZlciBtX3NwYXJlQnVmZmVyOworICAgIFdlYkdMTGF5ZXIqIGNvbnN0IG1fbGF5ZXI7
Cit9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXllciB7Ci0gICAgV2ViQ29yZTo6V2ViR0xM
YXllckJ1ZmZlciBfY29udGVudHNCdWZmZXI7Ci0gICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZl
ciBfc3BhcmVCdWZmZXI7Ci0KICAgICBCT09MIF9wcmVwYXJlZEZvckRpc3BsYXk7CisgICAgT3B0
aW9uYWw8V2ViR0xMYXllclN3YXBDaGFpbj4gX3N3YXBDaGFpbjsKIH0KIAogLSAoaWQpaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVl
Oihib29sKWNvbnRlbnRzT3BhcXVlCkBAIC00Nyw2ICs3Myw3IEBACiAgICAgc2VsZi50cmFuc2Zv
cm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7CiAgICAgc2VsZi5jb250ZW50c09wYXF1ZSA9IGNv
bnRlbnRzT3BhcXVlOwogICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVsUmF0aW87
CisgICAgX3N3YXBDaGFpbi5lbXBsYWNlKHNlbGYpOwogICAgIHJldHVybiBzZWxmOwogfQogCkBA
IC03MywzMCArMTAwLDIxIEBACiAgICAgVU5VU0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQotCi0tIChXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKSByZWN5Y2xl
QnVmZmVyCistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYp
IHN3YXBDaGFpbgogewotICAgIGlmIChfc3BhcmVCdWZmZXIuc3VyZmFjZSkgewotICAgICAgICBp
ZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKLSAgICAgICAgICAgIF9zcGFyZUJ1
ZmZlci5zdXJmYWNlLnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKF9zcGFyZUJ1ZmZl
cik7Ci0gICAgfQotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIF9zd2FwQ2hhaW4udmFsdWUo
KTsKIH0KIAotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6
V2ViR0xMYXllckJ1ZmZlcikgYnVmZmVyCistICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5CiB7Ci0g
ICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgX3NwYXJlQnVmZmVyID0gV1RG
TW92ZShfY29udGVudHNCdWZmZXIpOwotICAgIF9jb250ZW50c0J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXldOwogICAgIF9wcmVwYXJlZEZvckRpc3Bs
YXkgPSBZRVM7CiB9CiAKIC0gKHZvaWQpZGlzcGxheQogewotICAgIGlmIChfY29udGVudHNCdWZm
ZXIuc3VyZmFjZSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7Ci0gICAgICAgIHNlbGYuY29udGVu
dHMgPSBfY29udGVudHNCdWZmZXIuc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCk7CisgICAgaWYg
KF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCkgJiYgX3ByZXBhcmVkRm9yRGlzcGxheSkgewor
ICAgICAgICBzZWxmLmNvbnRlbnRzID0gX3N3YXBDaGFpbi0+ZGlzcGxheVN1cmZhY2UoKS0+YXNM
YXllckNvbnRlbnRzKCk7CiAgICAgICAgIFtzZWxmIHJlbG9hZFZhbHVlRm9yS2V5UGF0aDpAImNv
bnRlbnRzIl07CiAgICAgfQogICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKQEAgLTEw
NiwxMyArMTI0LDE0IEBACiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IE5POwogfQogCi0tICh2
b2lkKikgZGV0YWNoQ2xpZW50CitAZW5kCisKK3ZvaWQgV2ViR0xMYXllclN3YXBDaGFpbjo6cHJl
c2VudChCdWZmZXIgYnVmZmVyKQogewotICAgIEFTU0VSVCghX3NwYXJlQnVmZmVyLnN1cmZhY2Up
OwotICAgIHZvaWQqIHJlc3VsdCA9IF9jb250ZW50c0J1ZmZlci5oYW5kbGU7Ci0gICAgX2NvbnRl
bnRzQnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBBU1NF
UlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgbV9zcGFyZUJ1ZmZlciA9IFdURk1vdmUo
bV9kaXNwbGF5QnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisgICAgW21fbGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldOwogfQotQGVuZAogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAyNzA2
ZTdiMzBhYjliMzdhMjEyNzhjNTE3ZWRiZGYxNTJiYzBmYTcwLi5mNTI0ZGU5MmRjZDlhNTk4YjBm
YmVmOGQzM2I5YzQ0MDliOGNkMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aApAQCAtNTgsNiArNTgsOSBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBDQUxh
eWVyOwogT0JKQ19DTEFTUyBXZWJHTExheWVyOworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47Cit9CiAjZW5kaWYgLy8gUExBVEZP
Uk0oQ09DT0EpCiAKICNpZiBVU0UoTklDT1NJQSkKQEAgLTg2LDcgKzg5LDcgQEAgdHlwZWRlZiBX
VEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5hbWVIYXNoOwogCiBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTFByaXZhdGU7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRl
eHRHTAogewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBEZXN0
aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4pOwpAQCAtOTQsNiArOTcsOCBAQCBwdWJs
aWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMPiBjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIHNoYXJlZENv
bnRleHQpOworICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZUZv
ckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qKTsKKwogICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dl
YkdMTGF5ZXIuZ2V0KCkpOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkg
cGxhdGZvcm1EaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5T2JqOyB9CiAgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBwbGF0Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0
dXJuIG1fY29uZmlnT2JqOyB9CkBAIC01MDMsNyArNTA4LDExIEBAIHB1YmxpYzoKICNlbmRpZiAv
LyAhVVNFKEFOR0xFKQogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRv
dyosIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0ciwgR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qID0gbnVsbHB0cik7CisjZWxzZQogICAg
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9z
dFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRyKTsKKyNlbmRpZgogCiAgICAg
Ly8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1
YWxseSBjYWxsIE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBl
bnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4K
QEAgLTUzNCwxMCArNTQzLDEzIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ym9vbCBhbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdDsKICAgICBib29sIHJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZygpOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4q
IG1fc3dhcENoYWluIHsgbnVsbHB0ciB9OworICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSB0aGUgY29udGV4dCBkcmF3cyB0byBhIGltYWdlIGJ1ZmZlci4gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNzkgLgogICAgIFJldGFpblB0
cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRH
TCBtX2NvbnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRH
TERpc3BsYXkgbV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXgg
YmUwODY1MTMyYmY0NTZlMzU1YmViMzFiNmRjNDY2M2JkMmQyNDNjNS4uMmUwNjVhYzY2OWNhNWZl
OWFlYzA4OWM2MTQ0MThjYzhkYWJlN2NkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMjMsNiAr
MTIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCisgICAg
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTAogICAgIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogCiAgICAgR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcgpAQCAtMjIyLDYgKzIyMyw3IEBAIHNldChX
ZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uCiAKKyAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5CiAKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCAyNjdjZGQyOTQzZTE0NmYwNWNjOGU3YzMxMDIyMzlkYmY2YmUzYjU3Li4wMWY2MDVj
OTNmNzk5OWU2ODBlMTg3NGM3MzA0MTNkYTIyOTRjYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMCw2ICsyMCw3IEBAICQoSkFWQVND
UklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvbW9kZWxzLnB5CiAkKEpBVkFTQ1JJUFRDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9j
ZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMzUsNiArMTM2LDcgQEAgJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAppbmRleCA2MGQ0NDMwMjZmMzZkNDkzYWNiNjI3OWQ4ZjdhMGMzMWVh
MmI0NjI5Li4xNDJmMzQ1YmI0YTQ0ZDZhZTBjZjFjYzNlNmIwM2Q0MzI4ZThiYTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3OCw2
ICsxNzgsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzNThm
NzRiYmQzMjUxNjRkMjk1NzYyMDEyN2U0YTYwMmQ5MmQ3YTU2Li5kNzhjNWI3ZTI1MmY3ZmNhOTBh
MjVmYzg1MjM0ZmQ2YzFmMDdhZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0x
NzEsNiArMTcxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFz
ZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSBcCisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBc
CiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKQEAgLTIy
Nyw2ICsyMjgsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MgXAogCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCiAJR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFwKIAlHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eSBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlciBcCiAJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwYzI2MTY4NjU3
YWE4YzQ3MzM5MTk5NGVlZjAyMzcyYzZjODkyN2JmLi40OGI3NGVhZTgwMWM2MjRkMTIxNzMxMDk0
OTA4MGVkYmE2MzQwNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02NCw2ICs2NCwxMCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oPgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoV0VCR0wpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAt
Mjk4LDYgKzMwMiwyMSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VS
ZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVT
RUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgfSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhp
Y3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7Cit9CisjZW5kaWYKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAgICAgZ3B1UHJvY2VzcygpLm5vd1BsYXlp
bmdNYW5hZ2VyKCkuY2xlYXJOb3dQbGF5aW5nSW5mb0NsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCBlMzNmNzM4MTNiZjYwMGU3YTkxYmE2OTI1MzExMjg4Y2Q3OWVhYjAyLi5hMjhjOGZmNWY2YzA2
NGJlZWIzYjg2YzZlYTU0YzNlNDdiNGFmOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nl
c3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIu
aCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJ
ZGVudGlmaWVyLmg+CkBAIC0zOSw2ICs0MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEdQVVByb2Nlc3M7CkBAIC01NSw2ICs2MSw3IEBAIGNsYXNzIFJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiBjbGFz
cyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7CitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CkBAIC0xMjAs
NiArMTI3LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNr
ZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAg
ICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVh
c2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlm
CisKICAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKTsKICAgICB2b2lkIHNldE5vd1BsYXlp
bmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlp
bmdJbmZvJiYpOwogCkBAIC0xODEsNyArMTkzLDEwIEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKLQorI2lm
IEVOQUJMRShXRUJHTCkKKyAgICB1c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhh
c2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBtX3Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOworI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2NkbUZh
Y3RvcnlQcm94eTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1MTk0
ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1MmMzNjVlYjMyNzFmMzQ0Li45ZDU0ZTE2NDU5NWIwYTM2MWRm
ZTRjNzViZmY0MDE4YTg1NzU5YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2Fu
dHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJL
aXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIFJl
bGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIENsZWFyTm93
UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1Bs
YXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlp
bmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDgwNGQxZmE5OTk0ZDVmZmYzMTQzNjRkNTliZWY5NWViNDllYTk5OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQg
ewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKKyAgICA6IG1fY29udGV4
dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1h
a2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAgICwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGlm
IChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdl
UmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMp
OworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3ND
b250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMg
PSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lP
TlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sK
KyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2NF90
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCit7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xv
c3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4
dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZXNoYXBlKGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCisg
ICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBlbHNlCisgICAg
ICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisjZW5kaWYKKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJiBleHRlbnNpb24p
Cit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChleHRlbnNp
b24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2RiMGNmNTE4YWJmOWJiMjVhYjMzNmRkZGUwMzk5OTI1YWEwNWYzMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4u
aD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IE1hY2hTZW5kUmlnaHQ7Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVt
ZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRH
TCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2Vk
IG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJn
ZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAgOiBwdWJsaWMgSVBDOjpNZXNz
YWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwcml2
YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAg
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4pOworCisg
ICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTDo6Q2xp
ZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBvc2l0ZSgpIGZpbmFsOworICAgIHZvaWQg
Zm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKSBmaW5h
bDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBmaW5hbDsK
KworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAgIHZvaWQgcmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFi
bGVkKFN0cmluZyYmKTsKKyAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgPSAwOworI2Vsc2UK
KyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisjZW5kaWYKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFhMDM0NzI1ZjlhYTQyZjQyYmQzYzhhMDBiMGFhMTgwOTBhNTliOWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOTUgQEAKKy8qIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERv
IG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKKyAgICB2
b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRp
c3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisg
ICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCisjZW5kaWYKKyAg
ICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKKyAgICB2b2lk
IE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisKKyAgICB2b2lkIFNldEZhaWxOZXh0R1BVU3Rh
dHVzQ2hlY2soKQorICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCisg
ICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVy
ZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBzaGFk
ZXIpCisgICAgdm9pZCBCaW5kQXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3Qg
aW5kZXgsIFN0cmluZyBuYW1lKQorICAgIHZvaWQgQmluZEJ1ZmZlcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3Jl
ZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvbih1aW50
MzJfdCBtb2RlKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVS
R0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAgICB2b2lkIEJsZW5kRnVuYyh1aW50MzJfdCBzZmFj
dG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHZvaWQgQmxlbmRGdW5jU2VwYXJhdGUodWludDMy
X3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBk
c3RBbHBoYSkKKyAgICB2b2lkIENoZWNrRnJhbWVidWZmZXJTdGF0dXModWludDMyX3QgdGFyZ2V0
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDbGVhcih1
aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVu
LCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIENsZWFyRGVwdGgoZmxvYXQgZGVw
dGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHZvaWQgQ29sb3JNYXNr
KGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgdm9pZCBD
b21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5VGV4SW1hZ2UyRCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3Qg
Ym9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBp
bnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ3JlYXRl
QnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
Q3JlYXRlRnJhbWVidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBDcmVhdGVQcm9ncmFtKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgQ3JlYXRlUmVuZGVyYnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2hhZGVyKHVpbnQzMl90IGFyZzAp
IC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRl
eHR1cmUoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBD
dWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgRGVsZXRlQnVmZmVyKHVpbnQzMl90IGFy
ZzApCisgICAgdm9pZCBEZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQg
RGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUmVuZGVyYnVmZmVy
KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAg
ICB2b2lkIERlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlcHRoRnVuYyh1
aW50MzJfdCBmdW5jKQorICAgIHZvaWQgRGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB2b2lkIERl
cHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAgdm9pZCBEZXRhY2hTaGFkZXIo
dWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIERpc2FibGUodWludDMyX3Qg
Y2FwKQorICAgIHZvaWQgRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQor
ICAgIHZvaWQgRHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90
IGNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291
bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEVuYWJsZSh1aW50
MzJfdCBjYXApCisgICAgdm9pZCBFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRl
eCkKKyAgICB2b2lkIEZpbmlzaCgpCisgICAgdm9pZCBGbHVzaCgpCisgICAgdm9pZCBGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVp
bnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJnMykKKyAgICB2b2lkIEZyYW1l
YnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWlu
dDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90IGxldmVsKQorICAgIHZvaWQg
RnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBHZW5lcmF0ZU1pcG1hcCh1aW50MzJf
dCB0YXJnZXQpCisgICAgdm9pZCBHZXRBY3RpdmVBdHRyaWIodWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5p
Zm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJuVmFs
dWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcgbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCdWZm
ZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U3RyaW5nKHVpbnQzMl90IG5h
bWUpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRGbG9h
dHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcnYodWlu
dDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjQodWludDMy
X3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
R2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgpIC0+IChpbnQ2NF90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0UHJvZ3JhbWkodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVl
U2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJf
dCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAt
PiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlcmko
dWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAo
U3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90IHByZWNpc2lvblR5cGUpIC0+
IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlLCBHQ0dMaW50IHByZWNpc2lv
bikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwKSAt
PiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VGV4UGFyYW1l
dGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24s
IHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWl2KHVpbnQzMl90IHByb2dyYW0sIGlu
dDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtdWl2KHVp
bnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4g
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFZlcnRleEF0dHJpYk9m
ZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50NjRfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBtb2RlKQorICAgIHZvaWQgSXNCdWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0VuYWJsZWQodWludDMyX3QgY2FwKSAtPiAo
Ym9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzRnJhbWVidWZmZXIodWlu
dDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJ
c1Byb2dyYW0odWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU2hhZGVyKHVpbnQzMl90IGFyZzApIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNUZXh0dXJlKHVpbnQzMl90
IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgTGluZVdp
ZHRoKGZsb2F0IGFyZzApCisgICAgdm9pZCBMaW5rUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAg
IHZvaWQgUGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9p
ZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5pdHMpCisgICAgdm9pZCBSZW5k
ZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgU2FtcGxlQ292ZXJhZ2Uo
ZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHZvaWQgU2Npc3NvcihpbnQzMl90IHgsIGlu
dDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBTaGFkZXJT
b3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nIGFyZzEpCisgICAgdm9pZCBTdGVuY2lsRnVuYyh1
aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0ZW5j
aWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYs
IHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQorICAg
IHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBtYXNrKQor
ICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJf
dCB6cGFzcykKKyAgICB2b2lkIFN0ZW5jaWxPcFNlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQz
Ml90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFRleFBh
cmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisg
ICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIGlu
dDMyX3QgcGFyYW0pCisgICAgdm9pZCBVbmlmb3JtMWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQg
eCkKKyAgICB2b2lkIFVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQz
Ml90IHgpCisgICAgdm9pZCBVbmlmb3JtMWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm0yZihpbnQzMl90IGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9ybTJpKGludDMy
X3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAgIHZvaWQgVW5pZm9ybTJpdihp
bnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9p
ZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikK
KyAgICB2b2lkIFVuaWZvcm0zZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90
IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZvaWQgVW5pZm9ybTNpdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3Jt
NGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykK
KyAgICB2b2lkIFVuaWZvcm00ZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90
IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgdm9pZCBVbmlmb3JtNGl2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2
b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDNm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4gdmFsdWUpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2
b2lkIFVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lkIFZhbGlkYXRlUHJvZ3JhbSh1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmVydGV4QXR0cmliMWYodWludDMyX3QgaW5kZXgsIGZs
b2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjJmKHVp
bnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVmVydGV4QXR0cmliMmZ2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPiB2YWx1ZXMpCisg
ICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeikKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNmdih1aW50MzJfdCBpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdCwgMz4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmliNGYo
dWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAg
dm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYlBvaW50ZXIodWludDMyX3Qg
aW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQz
Ml90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgVmlld3BvcnQoaW50MzJfdCB4
LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQnVm
ZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkK
KyAgICB2b2lkIEJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiBkYXRhLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlclN1YkRhdGEo
dWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4gZGF0YSkKKyAgICB2b2lkIFJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleEltYWdlMkQwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAg
ICB2b2lkIFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VT
aXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVz
c2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBp
bnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9y
ZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29tcHJl
c3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJf
dCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNl
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJf
dCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5j
ZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBw
cmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwg
aW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHBy
aW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVp
bnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheSgpIC0+ICh1aW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5KHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5KHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFy
Z2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qg
d3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBHZXRCdWZmZXJTdWJEYXRhKHVp
bnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4gKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJs
aXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gx
LCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRz
dFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAg
dm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0
dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgbGF5ZXIp
CisgICAgdm9pZCBJbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cykKKyAgICB2b2lkIEludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisgICAgdm9pZCBSZWFkQnVmZmVyKHVpbnQzMl90IHNyYykKKyAgICB2b2lk
IFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
c2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgZGVwdGgpCisgICAgdm9pZCBUZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykK
KyAgICB2b2lkIFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMy
X3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENv
cHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgQ29tcHJlc3Nl
ZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRo
LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTNEMSh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGludDMy
X3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQs
IGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29tcHJlc3Nl
ZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBp
bWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEdldEZyYWdEYXRhTG9jYXRpb24o
dWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybTF1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJf
dCB2MCkKKyAgICB2b2lkIFVuaWZvcm0ydWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAs
IHVpbnQzMl90IHYxKQorICAgIHZvaWQgVW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50
MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAgIHZvaWQgVW5pZm9ybTR1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyLCB1
aW50MzJfdCB2MykKKyAgICB2b2lkIFVuaWZvcm0xdWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtMnVpdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZv
aWQgVW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm00dWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mngz
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAg
dm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4
NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisg
ICAgdm9pZCBVbmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBWZXJ0ZXhBdHRy
aWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGlu
dDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aXYodWludDMyX3QgaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4gdmFsdWVzKQorICAgIHZvaWQgVmVydGV4QXR0cmli
STR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3Qgeiwg
dWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWl2KHVpbnQzMl90IGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhB
dHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBl
LCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd1JhbmdlRWxl
bWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgaW50MzJf
dCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgRHJhd0J1
ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIENsZWFy
QnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJ1aXYodWludDMy
X3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZnYodWludDMyX3QgYnVmZmVyLCBpbnQz
Ml90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlcykKKyAgICB2
b2lkIENsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZs
b2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgdm9pZCBDcmVhdGVRdWVyeSgpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVF1ZXJ5KHVp
bnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgSXNRdWVyeSh1aW50MzJfdCBxdWVyeSkgLT4gKGJvb2wg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCZWdpblF1ZXJ5KHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBFbmRRdWVyeSh1aW50MzJfdCB0YXJnZXQp
CisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAtPiAo
dWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRRdWVyeU9iamVj
dHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2FtcGxlcigpIC0+ICh1aW50MzJfdCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVNhbXBsZXIodWludDMyX3Qg
c2FtcGxlcikKKyAgICB2b2lkIElzU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKSAtPiAoYm9vbCBy
ZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRTYW1wbGVyKHVpbnQzMl90IHVu
aXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJf
dCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFNhbXBs
ZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJh
bSkKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQz
Ml90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSkgLT4g
KGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBGZW5jZVN5bmModWlu
dDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncykgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTeW5jKHVpbnQ2NF90IGFyZzApIC0+IChib29sIHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlU3luYyh1aW50NjRfdCBhcmcw
KQorICAgIHZvaWQgQ2xpZW50V2FpdFN5bmModWludDY0X3QgYXJnMCwgdWludDMyX3QgZmxhZ3Ms
IHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90
IHRpbWVvdXQpCisgICAgdm9pZCBHZXRTeW5jaSh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHZvaWQg
SXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3Qg
cHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lk
IFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmlu
Zz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAgdm9pZCBHZXRUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAg
IHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBSZXN1bWVUcmFuc2Zvcm1G
ZWVkYmFjaygpCisgICAgdm9pZCBCaW5kQnVmZmVyQmFzZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAgdm9pZCBCaW5kQnVmZmVyUmFuZ2UodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyLCB1aW50NjRfdCBv
ZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBHZXRVbmlmb3JtSW5kaWNlcyh1aW50MzJf
dCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB1bmlmb3JtTmFtZXMpIC0+IChWZWN0b3I8dWludDMy
X3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybXMo
dWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90PiB1bmlmb3JtSW5kaWNlcywgdWludDMy
X3QgcG5hbWUpIC0+IChWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgdW5p
Zm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJf
dCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgdm9p
ZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlm
b3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludDMyX3Qgc3JjWDAsIGlu
dDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0WDAs
IGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90IG1h
c2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVh
dGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJ
c1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAg
dm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4gKFN0
cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEluc2VydEV2ZW50TWFya2Vy
RVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdyb3VwTWFya2VyRVhUKFN0cmluZyBhcmcw
KQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQo
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAgICB2b2lkIERyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50
LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBHZXRJbnRlcm5h
bGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQz
Ml90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdjNDBjOTg1Y2I3ZDI3MjI4NjlhNWRm
Zjk2OTE5NDcwNzdhZjQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMCwwICsx
LDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKK2Ns
YXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgflJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxh
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgZmluYWw7
CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiBvdmVycmlkZXMu
CisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnQoQnVm
ZmVyKSBmaW5hbDsKKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBmaW5hbDsKK3ByaXZhdGU6Cisg
ICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBtX2Rpc3BsYXlC
dWZmZXI7Cit9OworCit9CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRH
TD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKSk7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIs
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMs
IHRoaXMpKQoreworfQorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVm
ZmVyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQoreworICAg
IHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYTo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQoreworICAgIEFTU0VSVCgh
bV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKK30KKwordm9pZCogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGV0YWNo
Q2xpZW50KCkKK3sKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIuaGFu
ZGxlLCBudWxscHRyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdo
dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JE
aXNwbGF5KCk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlCdWZm
ZXIuc3VyZmFjZSk7CisgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgaWYgKGRpc3Bs
YXlCdWZmZXIpCisgICAgICAgIHNlbmRSaWdodCA9IGRpc3BsYXlCdWZmZXItPmNyZWF0ZVNlbmRS
aWdodCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMDE2MDJhZjQ5M2ViNjdkZTNlNjJjZjBlNTBhYzBh
MmI5OTI1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMCww
ICsxLDExODkgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNs
dWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisgICAgdm9pZCBzZXRGYWlsTmV4
dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2V0RmFpbE5leHRH
UFVTdGF0dXNDaGVjaygpOworICAgIH0KKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQz
Ml90IGVycm9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihl
cnJvcik7CisgICAgfQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBhY3RpdmVUZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1
cmUodGV4dHVyZSk7CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hhZGVyKHVpbnQzMl90IHByb2dy
YW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YXR0YWNoU2hh
ZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgfQorICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9u
KHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcmJiBuYW1lKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpOwor
ICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcx
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYXJnMSk7Cisg
ICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
YXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwg
YXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRSZW5kZXJidWZm
ZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVGV4dHVyZSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0
dXJlKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRDb2xvcihmbG9hdCByZWQs
IGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgfQorICAg
IHZvaWQgYmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRXF1YXRpb25T
ZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2RlQWxwaGEpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEp
OworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBk
ZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmMoc2ZhY3RvciwgZGZh
Y3Rvcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdC
LCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RS
R0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZvaWQgY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyh1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckNvbG9yKGZsb2F0
IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICB9
CisgICAgdm9pZCBjbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoaW50
MzJfdCBzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwocyk7CisgICAg
fQorICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJv
b2wgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGdyZWVuKSwgc3Rh
dGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oYWxw
aGEpKTsKKyAgICB9CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZv
aWQgY29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGJvcmRlcik7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9m
ZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAg
dm9pZCBjcmVhdGVCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVy
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBjcmVhdGVGcmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVG
cmFtZWJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9y
bUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKGFyZzApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVGV4
dHVyZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjdWxsRmFj
ZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jdWxsRmFjZShtb2Rl
KTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRl
bGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0o
dWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShh
cmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApOworICAg
IH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVGV4
dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0
dXJlKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CisgICAgfQorICAgIHZvaWQg
ZGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVwdGhNYXNr
KHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAgfQorICAgIHZvaWQgZGVwdGhS
YW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgfQorICAgIHZvaWQgZGV0YWNoU2hhZGVyKHVp
bnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRl
dGFjaFNoYWRlcihhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBkaXNhYmxlKHVpbnQzMl90
IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOworICAgIH0KKyAg
ICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICB9
CisgICAgdm9pZCBkcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMy
X3QgY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmly
c3QsIGNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHModWludDMyX3QgbW9kZSwg
aW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGVuYWJsZSh1aW50MzJf
dCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOworICAgIH0KKyAg
ICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgfQor
ICAgIHZvaWQgZmluaXNoKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZmluaXNoKCk7Cisg
ICAgfQorICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mbHVzaCgp
OworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1aW50
MzJfdCBhcmczKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyk7CisgICAg
fQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFyZzMsIGludDMyX3Qg
bGV2ZWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRh
cmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCk7CisgICAgfQorICAgIHZv
aWQgZnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZy
b250RmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1aW50MzJfdCB0
YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7
CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAg
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9pZCBnZXRB
dHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEJ1ZmZl
clBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmcodWludDMyX3QgbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRGbG9hdHYodWludDMy
X3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1
ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCB2YWx1ZVNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4g
dmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250
ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+
KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVn
ZXI2NCh1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQ2NCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEludGVnZXI2NChwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwg
dWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyNjRpKHBuYW1lLCBp
bmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGludDY0X3Q+KHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3JhbWkodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbSwg
cG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMYm9vbGVhbiwgND4gdmFs
dWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KHZhbHVlLmRh
dGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEVycm9yKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRFcnJvcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5W
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0
LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzApOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
TGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldFNoYWRlcmkoYXJnMCwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5mb0xvZyh1aW50MzJfdCBhcmcw
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJnMCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlwZSwgdWludDMyX3QgcHJlY2lz
aW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3QsIDI+LCBpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0
ZDo6YXJyYXk8R0NHTGludCwgMj4gcmFuZ2UgeyB9OworICAgICAgICBHQ0dMaW50IHByZWNpc2lv
biA9IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hh
ZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNpb24pOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+KHJlaW50ZXJwcmV0
X2Nhc3Q8aW50MzJfdCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNpemUoKSksIHByZWNpc2lvbik7
CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0U2hhZGVyU291cmNlKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
Zih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xmbG9hdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRl
eFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxv
Y2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVT
aXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0
aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwg
aW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVf
dD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odmFsdWUuZGF0
YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybXVpdih1aW50
MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50LCA0PiB2YWx1ZShz
dGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFZlcnRleEF0dHJp
Yk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NH
THNpemVpcHRyIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1cm5WYWx1ZSkpOworICAgIH0K
KyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAgfQorICAgIHZvaWQgaXNC
dWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNCdWZmZXIoYXJnMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNhcCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xi
b29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4
dC0+aXNFbmFibGVkKGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0
PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNGcmFtZWJ1ZmZlcih1aW50
MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGFyZzApOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xl
YW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5p
c1Byb2dyYW0oYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJv
b2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNSZW5kZXJidWZmZXIodWludDMy
X3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZmZXIoYXJnMCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgaXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFu
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNT
aGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0dXJlKHVpbnQzMl90IGFyZzAs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBs
aW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGluZVdpZHRo
KGFyZzApOworICAgIH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lk
IHBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lk
IHBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0cykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKKyAgICB9CisgICAgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGZsb2F0IHZhbHVlLCBi
b29sIGludmVydCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlQ292ZXJhZ2UodmFs
dWUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsKKyAgICB9CisgICAgdm9pZCBz
Y2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICB9CisgICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nJiYg
YXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGFyZzAsIGFyZzEp
OworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVm
LCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsRnVuYyhm
dW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUodWlu
dDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywg
cmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFzayh1aW50MzJfdCBtYXNrKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsKKyAgICB9CisgICAg
dm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7
CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWls
LCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE9wKGZh
aWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUodWlu
dDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWls
LCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmYodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2
b2lkIHRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJf
dCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmKGludDMyX3QgbG9jYXRp
b24sIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlv
biwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0xZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
MWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xaXYoaW50
MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYo
bG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+
KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmkoaW50MzJf
dCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJp
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0
aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2Z2KGludDMyX3QgbG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf
dCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24sIHgsIHks
IHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0zaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRm
KGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyk7
CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00
ZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGkoaW50
MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHos
IHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm00aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlLmRhdGEo
KSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoaW50
MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9j
YXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGludDMyX3QgbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7Cisg
ICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIHZhbGlkYXRlUHJv
Z3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52YWxpZGF0ZVBy
b2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMWYodWludDMyX3QgaW5k
ZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmKGlu
ZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwxPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHkpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKKyAg
ICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0
IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5
LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VHQ0dMU3Bhbjw0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1
aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5k
ZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihub3JtYWxpemVkKSwgc3Ry
aWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB2
aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWln
aHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQzMl90IHRhcmdldCwgdWludDY0
X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZl
ckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzEpLCB1c2FnZSk7Cisg
ICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpLCB1c2FnZSk7Cisg
ICAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9m
ZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRy
PihvZmZzZXQpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBpeGVs
czAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRp
Y19jYXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkblBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCByZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB0ZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQz
Ml90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJf
dCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2Uy
RDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMy
X3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1h
dCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVs
cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRl
ciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3Qg
eW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwg
aW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6
ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBp
bnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBm
b3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFu
Y2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3Qg
cHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2Vk
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxl
bWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlw
ZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3Ip
OworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZv
cm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheSh1aW50MzJfdCBh
cmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheShhcmcwKTsK
KyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBH
Q0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRl
eEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRWZXJ0
ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YSh1aW50MzJf
dCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVhZE9mZnNldCwg
dWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4od3Jp
dGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9CisgICAg
dm9pZCBnZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1
aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3Rv
cjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFTaXplKSwgMCk7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdD
R0xpbnRwdHI+KG9mZnNldCksIGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEu
ZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIo
aW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwgaW50MzJfdCBzcmNZ
MSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RYMSwgaW50MzJfdCBk
c3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5ibGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgw
LCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworICAgIH0KKyAgICB2b2lkIGZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVu
dCwgdWludDMyX3QgdGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRh
Y2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0KKyAgICB2b2lkIGludmFsaWRh
dGVGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+JiYgYXR0YWNobWVudHMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVG
cmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdD
R0xlbnVtKj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cywgaW50MzJfdCB4LCBpbnQz
Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1lbnRzLmRhdGEoKSksIGF0dGFj
aG1lbnRzLnNpemUoKSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHJl
YWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZWFkQnVm
ZmVyKHNyYyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1h
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlMkQo
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhT
dG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkp
LCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVpbnQz
Ml90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdD
R0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleFN1YkltYWdlM0QwKHVpbnQz
Ml90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZz
ZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMy
X3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3Vi
SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29weVRleFN1YkltYWdlM0QodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNl
dCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFn
ZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEMCh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIGlu
dDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6
ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
M0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90
IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGlj
X2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFn
ZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNl
dCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VT
aXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NH
TGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhZ0RhdGFMb2NhdGlvbih1
aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYWdE
YXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpKGludDMyX3QgbG9jYXRpb24s
IHVpbnQzMl90IHYwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpKGxvY2F0
aW9uLCB2MCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShpbnQzMl90IGxvY2F0aW9uLCB1
aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aShpbnQz
Ml90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsK
KyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYw
LCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMXVp
dihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1
aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
NHVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVp
bnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9z
ZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEu
ZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gy
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4
MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDRmdihpbnQzMl90
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2KGludDMyX3QgbG9jYXRpb24s
IGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0
cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0
cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBp
bnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0aShpbmRl
eCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdih1aW50MzJf
dCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiYmIHZhbHVlcykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgbWFrZUdDR0xTcGFu
PDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZhbHVlcy5kYXRhKCkpKSk7Cisg
ICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
eCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAg
IHZvaWQgdmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0
dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUs
IGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRp
Y19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRyYXdSYW5nZUVs
ZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIGludDMy
X3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5
cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGRy
YXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgY2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3Bh
bihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVz
LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KHVpbnQzMl90IGJ1ZmZl
ciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIHZh
bHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBk
cmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+
KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJC
dWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFy
QnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdi
dWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCk7
CisgICAgfQorICAgIHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAgfQorICAgIHZvaWQgaXNRdWVy
eSh1aW50MzJfdCBxdWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNRdWVyeShxdWVyeSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHF1ZXJ5
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpOwor
ICAgIH0KKyAgICB2b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRRdWVyeSh1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xP
YmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVl
cnksIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1aW50IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aShx
dWVyeSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVTYW1wbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxlcik7CisgICAgfQorICAgIHZv
aWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzU2FtcGxl
cihzYW1wbGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4o
cmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2FtcGxlcih1aW50MzJfdCB1bml0
LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kU2FtcGxl
cih1bml0LCBzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaSh1aW50
MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsK
KyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBzYW1wbGVyLCB1aW50
MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnNhbXBs
ZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2Ft
cGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZmVuY2VTeW5j
KHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTHN5
bmMgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5m
ZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihyZXR1cm5WYWx1
ZSkpKTsKKyAgICB9CisgICAgdm9pZCBpc1N5bmModWludDY0X3QgYXJnMCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdD
R0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+aXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0
cl90PihhcmcwKSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29s
PihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVN5bmModWludDY0X3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3luYyhyZWludGVycHJldF9jYXN0
PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKTsKKyAgICB9CisgICAgdm9p
ZCBjbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWludDY0X3Qg
dGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRTeW5jKHJlaW50ZXJwcmV0X2Nh
c3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNf
Y2FzdDxHQ0dMdWludDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50
MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT53
YWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
YXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0aW1lb3V0KSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgfQorICAgIHZvaWQgaXNUcmFuc2Zvcm1G
ZWVkYmFjayh1aW50MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUcmFuc2Zvcm1GZWVkYmFj
ayhpZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRUcmFu
c2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblRyYW5zZm9y
bUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7CisgICAgfQorICAgIHZv
aWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRU
cmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB2YXJ5aW5ncywgdWludDMy
X3QgYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CisgICAgfQorICAgIHZv
aWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90
IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4LCBhcmcy
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcmcyKSk7CisgICAgfQorICAg
IHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCByZXN1bWVUcmFuc2Zv
cm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlc3VtZVRyYW5zZm9ybUZl
ZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOworICAgIH0KKyAgICB2
b2lkIGJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50
MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3Rh
dGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihh
cmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGljZXModWludDMyX3QgcHJvZ3Jh
bSwgVmVjdG9yPFN0cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPHVpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQz
Ml90PiYmIHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBWZWN0b3I8R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNl
cywgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVl
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgodWludDMyX3QgcHJvZ3Jh
bSwgU3RyaW5nJiYgdW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMdWludCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9y
bUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZv
cm1CbG9ja0luZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3QgcHJv
Z3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9ja0Jp
bmRpbmcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRpbmcocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAgIH0KKyAg
ICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90
IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiBwYXJh
bXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBu
YW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRhKCkpLCBw
YXJhbXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kw
LCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRz
dFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJf
dCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5ibGl0
RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkw
LCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNhbXBs
ZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5T0VTKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVWZXJ0ZXhBcnJh
eU9FUygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzAp
OworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7Cisg
ICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlPRVMoYXJn
MCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQz
Ml90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKFN0
cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5p
bnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwdXNoR3JvdXBNYXJr
ZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAgdm9pZCBwb3BHcm91
cE1hcmtlckVYVCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5w
b3BHcm91cE1hcmtlckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSht
b2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3Qg
dHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1v
ZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0cj4ob2Zmc2V0KSwgcHJpbWNv
dW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3Qg
aW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpOworICAg
IH0KKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludCwgND4gcGFyYW1z
KHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQt
PmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFt
cyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1zLmRhdGEoKSksIHBhcmFtcy5zaXpl
KCkpKTsKKyAgICB9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDQwMTdhMmE4ZjIyY2VjZWNjMjE1MWEz
MGEzMjc4ZmY5MDZlYWYzMmEuLjY3NDhkMWY1ZDgwMGQ5NTc0ZjIzODA3NWIxODkwYjRlNGFjZWU5
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBkNmVlMmJjYmNhYjZhNzBlNDJkMGU5ODg0OWFhODEz
MDA5NjRjYTI4Li44OWZiOGFiYWY5YWVjZTA3YzYzNDcwZGEzZGI4M2M4ODMyNmRkM2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNiw2ICsyMTYsNyBA
QCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAn
V2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCisg
ICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMnLAogICAgICAgICAn
V2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDQsNiArMjQ1LDcgQEAgZGVmIHR5cGVzX3Ro
YXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6RGlzcGxh
eUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcsCiAgICAgICAg
ICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OkdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAg
ICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQnLApAQCAtNTMxLDYgKzUzMyw3
IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAg
ICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVu
dF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0
b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFk
ZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hl
YWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3Vt
ZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZSc6IHsnaGVhZGVy
cyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyci
QXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgfQogCiAgICAgbWF0Y2ggPSByZS5tYXRjaCgnKD9Q
PHRlbXBsYXRlX25hbWU+Lis/KTwoP1A8cGFyYW1ldGVyX3N0cmluZz4uKyk+JywgdGVtcGxhdGVf
c3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggZTc5OGU5MTJlNDdiMGQ4ZDBmMDM4ZTdmNzZkNzBmYzA2YWY2ZWNhZS4uMDMyNTIx
MWE5YWQwMTdiZGQyYWRjNWU2MTdiODNkN2Y5N2Y5NWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMTY3LDQgKzMxNjcsODIgQEAg
T3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBXVEZNb3ZlKCpyZXN1bHQpIH07
CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5hbHBoYTsKKyAg
ICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFudGlhbGlhczsKKyAgICBlbmNv
ZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOworICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJj
ZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wyOworICAgIGVuY29kZXIgPDwg
YXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZl
cmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy54ckNv
bXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3RlbmNpbCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVz
LmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZXNl
cnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zaGFyZVJlc291cmNlcykpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRy
aWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGV2aWNl
UGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2UpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCit2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLm5hbWU7CisgICAg
ZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnNp
emU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZv
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2
ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5zaXplKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5mbzsKK30KKworI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAppbmRleCA5MmFmNjEzYmRmY2U3MmY0MzVjNDBiNDM4ZjJiMjhjZDQ0OGY2YTk1
Li5mZTc4NThmZjljYTZhNGZjYzU5ZjEyNDNiMzgxMzQ0ZWM1ZGZmY2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzEsNiArNzEsMTMgQEAK
ICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJBcnJheVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdU
RiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIxMCwxMCBAQCBzdHJ1Y3QgU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0aCA9IFZhcmlhbnQ8U3RyaW5n
LCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlczsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0IENhY2hlSW5mbzsKIHN0cnVj
dCBSZWNvcmQ7CkBAIC04NjgsNiArODc5LDE5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogfTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mKTsKKyAgICBzdGF0aWMg
T3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2Ug
V1RGIHsKQEAgLTEwMzYsNCArMTA2MCwxNiBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewogCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93
ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93
ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsKK307CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDIxY2Q2NWIyOGQ0NmZkZWRiNjYyYzRjYmZmNzk5ZWRl
YWI1ZTc1ODMuLjM4Y2E2ODkyMmVhYWNhY2M2ZjBhMTU1NDNiZGE2YzkwMDE0OGRiZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyRE9NSW5H
UFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzOwor
I2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlcldlYkdMSW5HUFVQ
cm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlEZWNvZGVyOwog
ICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwogI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKQEAgLTUxMiw2ICs1MTUsMTAgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJ
bkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShX
RUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2Vi
R0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2Rl
cikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZmUyOWFmMjBhODhhNTllMWVi
YTZjZThmYmNiNWQ1YTZjM2EzNTQyNC4uYzg3OGU2ZDk4MWZhOTQ0NDk3ZjAyN2ZhYTMyMTA5N2Yy
ZDY5YmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNl
IH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAg
IGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUo
V0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07
CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAg
IGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA4OWQ3YjY1YzY3NTE0ZTkwYzNmZGUyNDky
MDg3NTdmNGE2NmU4NWEyLi5mYWQzMmU4ZGM4YjY1OGU1YzliNTY0ZWIwOGVlOWJjN2UzMTAxZDE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKK0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1h
bmFnZXIuY3BwCkBAIC01NjgsNiArNTY5LDcgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlLmNwcApAQCAtNTkwLDEwICs1OTIsMTAgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0
ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCitX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKLVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5jcHAKIApAQCAtNjk0LDMgKzY5Niw1IEBAIFdlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cAorCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAppbmRleCA0ZWE4Yjc4MWQyMGE4MWEwOGU0NGI0NGRiYTBiNThmMjFiZDZmOTcz
Li40ZWY3OGU0OWQ5ODAzZjk3ZDQ1ZmMyMjFlOWVjNzRlNzQ5ZGRjZTEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC01Niw2ICs1Niw3IEBAIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwCiAKIEdQVVByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL0dQVVNl
cnZpY2VFbnRyeVBvaW50Lm1tCitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuY3BwCiBHUFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNzSU9TLm1tCiBHUFVQcm9j
ZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU291
cmNlUHJvdmlkZXJQcm94eS5jcHAKQEAgLTYzLDYgKzY0LDggQEAgR1BVUHJvY2Vzcy9tZWRpYS9j
b2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KIEdQVVByb2Nlc3MvbWVkaWEvaW9z
L1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkubW0KIAorCisKIFBsYXRmb3JtL2NmL01vZHVsZUNGLmNwcAogCiBQ
bGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Q29jb2EuY3BwCkBAIC01NzUsNiArNTc4LDcgQEAgV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29h
L1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5j
cHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjg3LDYgKzY5
MSw3IEBAIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTAxMWE1YjFkOWM5MmU5
ZjczMDI5NDE0ZjEzM2IyZjA5MTFhMWQ0My4uNWViMzcxZjIyMDU4ZjZmMGI2NWYzZWZhMDUzMzdm
M2U3N2QwNTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC03OTQ1LDYgKzc5NDUsOSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94
eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRl
cnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQ
cm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxk
UmVuZGVyRE9NSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yRE9N
UmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQ
cm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCk7Cisj
aWYgRU5BQkxFKFdFQkdMKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVBy
b2Nlc3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JXZWJHTEVuYWJsZWQoKTsKKyNl
bmRpZgogCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyID0gcHJlZmVyZW5j
ZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMmQyODJlNDY2ZWE0NzQ0ZjBmNTJiMzNlY2M2YTliMDM4ODYzOWQ1Zi4uZTk0MmFkNjdj
OTI1YTM3NjRkYzgyOGE0OWVjZmI0YTBmMjljNTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MTIsNyArNzEyLDYgQEAKIAkJMkQ5
MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0
RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNG
RCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsg
fTsKIAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAw
NThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkz
RkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5j
cHAgKi87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3
RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5
M0ZEIC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9Owog
CQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUz
NTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtNDQwNSw2ICs0
NDA0LDE2IEBACiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVy
ZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYg
LyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qjkw
NDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2
NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY5
MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjcxMiwxMSArNjcyMSwxMSBAQAogCQkJCTFB
RUZEMjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJCQkJMUEzRDYx
MDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVGRDJG
NjExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3QjFEQjI2NTI1
NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VFOTY2QTExMkZB
RjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAw
NkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEg
LyogQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThDMTVBIC8qIENv
bm5lY3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVy
ZW5jZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVu
Y2UuaCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8s
CiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKQEAgLTgzODgs
MTEgKzgzOTcsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8s
CiAJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmNwcCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0
ZXJIYW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8q
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcy
N0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIg
LyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5MDQxNjUyNTRB
RkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovLAorCQkJ
CTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmggKi8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICov
LAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODQxMCw2ICs4NDI0LDExIEBACiAJCQkJ
RjQwOTRDQkMyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAq
LywKIAkJCQlGNDA5NENCQjI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGUuaCAqLywKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlci5oICovLAorCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcy
NjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAq
LywKKwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYg
LyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUg
LyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAw
QUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3
N2QwMzUyMTJjNjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEs
MzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
VHlwZSB7IH07Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJH
TCkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0
ZXMpKTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQor
ICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBD
OjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFw
KCk7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkK
K3sKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdl
UmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKCp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
LCAwKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3lj
bGVCdWZmZXIoKTsKKyNlbmRpZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7
CisgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWln
aHQ7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUo
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJp
Z2h0OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJl
cGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVw
YXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0
KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAg
ICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVm
ZmVyKCk7CisgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxs
cHRyIH0pOworICAgIH0KKyNlbHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24p
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFu
Z2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAv
LyBGSVhNRTogQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFy
IHRoaXMgaXMgdGhlIHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTM0OQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1h
Z2VEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5n
JiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sK
KyAgICBpZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRp
bWVkIG91dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRl
bnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQorewor
ICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAg
IGNsaWVudC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Ondhc0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29w
eVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hh
bmdlZE5vdGlmaWNhdGlvbigpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQor
ICAgICAgICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpOworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVs
eTxNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50
ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAg
IC8vIFRpbWVkIG91dCwgc28gcmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ug
c2hvdWxkIGxvc2UgdGhlIGNvbnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8v
IEZJWE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNh
ZmUgdG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDk5ZWRhMjlmNmRiNWUxODE5NzEzMTc4ZjJhYTUzMWI0ZjVkZDZlMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNDExIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBs
ZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRh
dGlvbgorLy8gY29udmVydHMgdGhlIGludGVyZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNz
YWdlcyBhbmQgc2VuZHMgdGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBpbiBHUFUgcHJvY2Vzcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVy
YXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNz
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwg
cHVibGljIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdl
U2VuZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJy
aWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2Ugb3ZlcnJpZGVzLgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJD
b3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZv
aWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7
CisgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNp
bXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5h
bDsKKworICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBU
aGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lk
IHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVH
TEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0
ZXh0dXJlKSBmaW5hbDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRy
aWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQg
YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkg
ZmluYWw7CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBH
Q0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFs
OworICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lk
IGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxw
aGEpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVt
IGRmYWN0b3IpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3Jj
UkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBo
YSkgZmluYWw7CisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0
YXJnZXQpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOwor
ICAgIHZvaWQgY2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NH
TGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVw
dGgoR0NHTGNsYW1wZiBkZXB0aCkgZmluYWw7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGlu
dCBzKSBmaW5hbDsKKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29s
ZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7Cisg
ICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAg
dm9pZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5
VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0
ZUJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIo
KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NH
TGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZv
aWQgZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5n
ZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0
YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBm
aW5hbDsKKyAgICB2b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBk
cmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkg
ZmluYWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBl
bmFibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAg
IHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVy
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51
bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7
CisgICAgdm9pZCBmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5l
cmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0
cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8m
IGFyZzIpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBH
Q0dMaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3Ry
aW5nJiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhH
Q0dMZW51bSBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xp
bnQ2NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBn
ZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAg
R0NHTGludCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3Bh
bjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmlu
YWw7CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwor
ICAgIFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1H
TE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRl
ckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRl
clByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25U
eXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5h
bDsKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmlu
YWw7CisgICAgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZs
b2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmlu
YWw7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgZmluYWw7CisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFi
bGVkKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1
cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dM
ZmxvYXQgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9y
LCBHQ0dMZmxvYXQgdW5pdHMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNs
YW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3Io
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
ZmluYWw7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdD
R0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2Vw
YXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50
IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7
CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1h
c2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpm
YWlsLCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShH
Q0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBh
c3MpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGludCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NH
TGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1
aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwg
R0NHTGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
LCBHQ0dMZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQg
aW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2
b2lkIHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVz
KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdD
R0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNp
emVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
ZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRy
IGFyZzEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2Up
IGZpbmFsOworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFs
OworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7
CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZl
cnRleEFycmF5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNl
dCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lk
IGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdD
R0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEs
IEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0
WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQg
ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2ht
ZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5
ZXIpIGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lk
IGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xl
bnVtIHNyYykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0
ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsK
KyAgICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9p
ZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAg
dm9pZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRl
eFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50
IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdD
R0x1aW50IHYxKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NH
THVpbnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2
b2lkIHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dM
dWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBm
aW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
NHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBH
Q0dMdWludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAg
ICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBH
Q0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIs
IEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5h
bDsKKyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3
YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IGNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVy
ZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwg
R0NHTGludCBzdGVuY2lsKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5
KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBm
aW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZp
bmFsOworICAgIHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnkpIGZpbmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5h
bDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmpl
Y3QgY3JlYXRlU2FtcGxlcigpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVp
bnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsK
KyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1l
dGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAg
ICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxh
Z3MpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0g
Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWlu
dDY0IHRpbWVvdXQpIGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NH
TGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBn
ZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZv
cm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NH
TGJvb2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsK
KyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3Jt
R0xPYmplY3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dM
ZW51bSBwcmltaXRpdmVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNr
KCkgZmluYWw7CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBi
dWZmZXJNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcy
KSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2
b2lkIHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVy
QmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1
ZmZlcikgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWlwdHIpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUlu
ZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5p
Zm9ybU5hbWVzKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3Jt
SW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1C
bG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3Jt
QmxvY2tOYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5h
bDsKKyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGlu
ZykgZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNh
bXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlP
RVMoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0
RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hH
cm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3Jv
dXBNYXJrZXJFWFQoKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9p
ZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5h
bDsKKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5h
bDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1z
KSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRC
dWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7
CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAg
IHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQg
Z2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRl
eCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkg
ZmluYWw7CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5V
bmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBm
aW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0
ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNh
bXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0p
IGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5h
bDsKKyAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0
LgorCitwcm90ZWN0ZWQ6CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ug
b3ZlcnJpZGVzLgorICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJp
dmF0ZToKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0
ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5z
aW9ucyk7CisgICAgdm9pZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAg
ICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYpOworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsK
KyAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisK
Ky8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhl
IGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNp
emVvZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92
PEdDR0x1Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dM
c2hvcnQsIGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9y
dCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50
MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+
KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7Citz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8UGxhdGZvcm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KEdDR0xjaGFyKSA9PSBzaXplb2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NH
TGludDY0KSA9PSBzaXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVp
bnQ2NCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisvLyBHQ0dMc3luYyBhbmQgR0NHTCpwdHIgdHlw
ZXMgYXJlIHBvaW50ZXJzLiBPbiBzb21lIHBsYXRmb3JtcywgdGhleSBhcmUgMzItYml0LgorLy8g
Q3VycmVudGx5IHdlIGhhcmQtY29kZSBpdCBieSB1c2luZyA8PSwgYW5kIGFzc3VtZSB0aGF0IHdl
IGRvIG5vdCB0cmFuc2ZlciBhcnJheXMgb2YgdGhlIHR5cGVzLgorc3RhdGljX2Fzc2VydChzaXpl
b2YoR0NHTGludHB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihHQ0dMc2l6ZWlwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXpl
b2YoR0NHTHZvaWRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXpl
b2YoR0NHTHN5bmMpIDw9IHNpemVvZih1aW50NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBz
aXplb2YoaW50cHRyX3QpKTsKKy8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13
ZWJnbCBzY3JpcHQuCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZjJiMzJiMmJjMTAxMGVmOGVjZDBhZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5IE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxl
RXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xv
c3QoKQorICAgIHZvaWQgV2FzQ2hhbmdlZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY3ZWNmODY1NTZhMDA3M2FmOGY1NTRjZmNmYzBlZjMzOWY2MWU4
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBA
IC0wLDAgKzEsMTY0NiBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVj
aygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZh
aWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9y
KEdDR0xlbnVtIGVycm9yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJy
b3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJy
b3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0
dXJlKEdDR0xlbnVtIHRleHR1cmUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRh
Y2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRl
cikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNo
U2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5k
QXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFy
ZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwg
R0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbiht
b2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2Rl
UkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRm
YWN0b3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJs
ZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFy
YXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwg
R0NHTGVudW0gZHN0QWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0
QWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVu
dW0gdGFyZ2V0KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyh0YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJh
bWVidWZmZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVu
LCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRl
cHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVu
LCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+
KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSks
IHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
UGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9n
cmFtKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihH
Q0dMZW51bSBhcmcwKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlRnJhbWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRl
cmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9v
bD4oZmxhZykpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBH
Q0dMY2xhbXBmIHpGYXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJn
MCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQs
IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVu
YWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoR0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmZpbmlzaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMywgR0NHTGludCBsZXZlbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0
YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBt
b2RlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9u
dEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJn
ZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVy
YXRlTWlwbWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sK
KyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJl
dHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVp
bnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2Nh
dGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7
CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJl
dHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2
YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRS
ZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFs
dWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVl
UmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRS
ZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFs
dWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7
CisgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWlu
dCBpbmRleCkKK3sKKyAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwg
aW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKwor
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZl
cmVuY2U8Ym9vbD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1
ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFu
djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVl
UmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKwor
R0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dM
aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51
bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUp
Cit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFy
Z2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVj
dCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hh
ZGVyaShhcmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
U2hhZGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVt
IHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVj
aXNpb24pCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5
OworICAgIGludDMyX3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5n
ZVJlcGx5LCBwcmVjaXNpb25SZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwg
cmFuZ2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAg
ICAgICBpZiAocHJlY2lzaW9uKQorICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJl
cGx5OworICAgIH0KK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitH
Q0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVy
aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dM
ZmxvYXQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVw
bHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVw
bHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHku
ZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7
CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1
bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUu
YnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9y
bXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAg
ICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXpl
ICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
TG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xz
aXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1v
ZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQo
dGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dM
Ym9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNFbmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1
cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Rl
eHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dM
ZmxvYXQgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6TGluZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQo
ZmFjdG9yLCB1bml0cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUs
IEdDR0xib29sZWFuIGludmVydCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVy
dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5n
JiBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
aGFkZXJTb3VyY2UoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dM
ZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNr
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NH
TGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwg
ZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1h
c2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5j
aWxNYXNrKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51
bSBmYWNlLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6
cGFzcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3Rl
bmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBh
cmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVu
dW0genBhc3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFy
YW0pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBh
cmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFm
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtMmYobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2
LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHks
IEdDR0xmbG9hdCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRp
b24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRp
b24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwg
eSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRh
dGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3Jh
bShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
MWZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
MmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dM
ZmxvYXQgeSwgR0NHTGZsb2F0IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0LCAzPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwg
Mz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBH
Q0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYo
aW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1
aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51
bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50
cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9v
bD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xl
bnVtIHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2Up
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRh
dGEpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRh
LmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxz
MDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVw
bHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEp
LCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21w
cmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNp
emVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
IHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5k
ZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRm
b3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJy
YXkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Qmlu
ZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9m
ZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRh
KHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNl
dCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAg
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVm
ZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1
ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRh
dGE6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJl
cGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGlu
dCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NH
TGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwg
R0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IGxheWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRl
eHR1cmUsIGxldmVsLCBsYXllciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZm
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRh
dGVGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVu
dHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3Vi
RnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRz
LmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZm
ZXIoR0NHTGVudW0gc3JjKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZWFkQnVmZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxl
dmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBp
eGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVs
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xp
bnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1Yklt
YWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9m
ZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29w
eVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b21wcmVzc2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRl
ciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21w
cmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQs
IGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2Nh
dGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMdWludCB2MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1
aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24s
IHYwLCB2MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwg
djIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWlu
dCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwg
djAsIHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
ZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
M3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
THVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRy
aXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5z
cG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBk
YXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29s
Pih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMaW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZh
bHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0
dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWJJNHVpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dM
aW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0
ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dM
ZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwg
ZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVm
ZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRh
dGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NH
TGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50
PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwg
dmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0g
YnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFs
dWVzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVh
ckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1
ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlUXVlcnkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVl
cnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7Cisg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRh
cmdldCwgcXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0
YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5
KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1
ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVy
eSwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9i
amVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1w
bGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVy
KHVuaXQsIHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRl
cmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0
ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBw
YXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2Ft
cGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNh
bXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1w
bGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
ZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAg
dWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7
Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhH
Q0dMc3luYyBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dM
dWludDY0IHRpbWVvdXQpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3lu
YyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkp
LCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdD
R0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdz
LCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRT
eW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmpl
Y3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFj
azo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZl
ZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJh
bnNmb3JtRmVlZGJhY2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
VHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFu
c2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3Jt
RmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVN
b2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2so
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1
ZmZlck1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFj
aygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgs
IGJ1ZmZlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7Cisg
ICAgVmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0s
IHVuaWZvcm1OYW1lcyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybUluZGljZXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xp
bnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGlj
ZXMsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBT
dHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0Jp
bmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
aW50PiBwYXJhbXMpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNS
ZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1C
bG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3Vs
dCkKKyAgICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFt
cy5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAg
ICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kw
LCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRz
dFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NH
TGVudW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0
WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhB
cnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJp
bmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91
cE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJr
ZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+IHBhcmFtc1JlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGlu
dGVybmFsZm9ybWF0LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEludGVybmFsZm9ybWF0aXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0
KQorICAgICAgICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1z
LmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBw
YXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVy
ZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVy
ZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5PTElOVAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVs
dGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMdWludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4
IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0
ODNlYmY4NDA4N2E4YzI2MzRlOWQ1NDkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0x
MDgsNiArMTA4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKQEAgLTkxMiw2ICs5MTYsMjIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1
cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdl
QnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0w+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJ
RCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUoYXR0cmlidXRlcyk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2Vu
ZGlmCit9CisKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGlj
c0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2
Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4Li4xMjE1ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQz
MDUwNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25z
dCBmaW5hbDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2lu
ZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBv
c2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmlu
YWwKICAgICB7CkBAIC00MDMsNiArNDA3LDcgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9v
bCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAg
IG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFs
c2UgfTsKKwogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTc4Y2M3ZDE4ZGNlMGY3ZTRlOGEzNjU5
NTlmNThkMzQzYWQyMTAxOS4uYjBhYThkZjJlYTE4NTg1ZjI3ZWIxMzNjYzA5OGQ1ZGZiMjQzOTAy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTQyNyw2ICs0MjcsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJl
bmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5H
UFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1l
dGVycy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVk
aWFJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgICwgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vz
cyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJp
dmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0K
ICNlbmRpZgpAQCAtNzMyLDcgKzczNSw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBp
ZiAoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxl
bWVudDxXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRp
bmdzKCkuc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3Jh
Z2VEaXJlY3RvcnkoKSk7CiAjZW5kaWYKLSAgICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2Nh
bGVGYWN0b3IgIT0gMSkKICAgICAgICAgc2NhbGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFj
dG9yKTsKIApAQCAtMzgwMCwxMCArMzgwMiwxMiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZl
cmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRS
ZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNl
dFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nl
c3MgJiYgRHJhd2luZ0FyZWE6OnN1cHBvcnRzR1BVUHJvY2Vzc1JlbmRlcmluZyhtX2RyYXdpbmdB
cmVhVHlwZSkpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NG
b3JNZWRpYShtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7Ci0KICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHN1cHBvcnQgd2ViIGZvbnRzIGluIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBpZiAo
bV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MpCiAgICAgICAgIHNldHRpbmdzLnNldERvd25s
b2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZChmYWxzZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3Vs
ZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
SVBDX1RFU1RJTkdfQVBJKQpAQCAtNzAwMyw2ICs3MDA3LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5j
aHJvbml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpT
ZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobV9pZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0
ZXJucyksIDApOwogfQogCisKICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6
OmFkZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJM
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM2
MmFkNzdiZTZhZTMyZTBlNjljYTkzZWJmYzYyM2VhNWRiY2ZlODQuLmZhMTMzNTRkZGZmMjMyODQ1
MGI5YzcyY2RhYzRkY2Y3YWU0NTRiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTE4MzIsNiArMTgzMiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3No
b3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBs
YXlNZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJv
b2wgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2Vy
UHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYKQEAgLTIxODksNCArMjE5MiwzIEBAIGlu
bGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25z
dCBXZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjM2ZhODFlZGMwMGVi
NjkyNzczY2M3M2Y5ZjRhYWRjY2UxZGNjMTMyLi5iZDI5OTkwZjk4MWJlODk0Nzg1MmIwN2M5MmJh
YjNjYjVkODUzNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0xOTUzLDYgKzE5NTMsMjAgQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CisKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVBy
b2Nlc3NGb3JXZWJHTChib29sIHVzZUdQVVByb2Nlc3NGb3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQ
VVByb2Nlc3NGb3JXZWJHTCA9IHVzZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworYm9vbCBXZWJQ
cm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQorCisjZW5kaWYKKwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
ZTljNDdkYjRjNDQ3YzBmNGFiNjI3YzA5NGI1ZjY4ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMy
NzY0YzRkODUzNzkwOTBiMmNiY2E3M2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC0zNDcsNiArMzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUdQVVBy
b2Nlc3NGb3JET01SZW5kZXJpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9y
TWVkaWEoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29y
ZTo6UmVuZGVyaW5nUHVycG9zZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgc2V0VXNl
R1BVUHJvY2Vzc0ZvcldlYkdMKGJvb2wpOworICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVy
aW5nRm9yV2ViR0woKSBjb25zdDsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpA
QCAtNjg3LDYgKzY5MSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JD
YW52YXNSZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yRE9N
UmVuZGVyaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsg
ZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JX
ZWJHTCB7IGZhbHNlIH07CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmZWJkMDc0NDhk
Mjc2NzFlMDVhYzE4OTNhZDM0ZDY4NmVlNjQxZTQzLi5mMDA2MmNiZjc5MTBhNTFkMmM3NWEyNWI1
OTM4ZmQ5YTBmYTMwNWJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEltcGxlbWVudHMgYSByZW1vdGUgdmVy
c2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJl
bnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQyBhbmQgaXMgaW5jb21wbGV0ZS4K
KworICAgICAgICBBZGQgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBpbXBsZW1l
bnRhdGlvbi4gQ3VycmVudGx5CisgICAgICAgIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGVzIGEgV2Vi
S2l0IElQQyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBUaGUgaW5wdXQgZGVmaW5pdGlvbiB0
byB0aGUgZ2VuZXJhdG9yIGlzIHRoZSBwcm94eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBoZWFk
ZXIgZmlsZXMuCisgICAgICAgIFRoZSBvdXRwdXQgb2YgdGhlIGdlbmVyYXRvciBpcworICAgICAg
ICAgICAtIFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGZpbGUKKyAgICAgICAgICAgLSBN
ZXNzYWdlIHNlbmRlciBjb2RlCisgICAgICAgICAgIC0gTWVzc2FnZSByZWNlaXZlciBhbmQgcGF5
bG9hZCBpbnZvY2F0aW9uIGNvZGUKKworICAgICAgICBUaGUgZ2VuZXJhdG9yIGNvbnZlcnRzIEdy
YXBoaWNzQ29udGV4dEdMIEdDR0wgLXByZWZpeGVkIHR5cGVzIHRvCisgICAgICAgIHNpemVkIElQ
QyB0eXBlcy4KKworICAgICAgICBUaGUgZ2VuZXJhdG9yIGlzIGludm9rZWQgZHVyaW5nIGRldmVs
b3BtZW50IHRpbWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBzdG9yZWQgaW4gdGhlIHJl
cG9zaXRvcnkuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6IEFkZGVk
LgorCiAyMDIwLTEyLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgSW5jcmVhc2UgbWF4aW11bSBzaXplIG9mIFdLQ29udGVudFJ1bGVMaXN0
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9T
Y3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2YjQyMjI5Y2YyZjgyOGM2
NmM3ZTdiNDE3NzNjMmViZTQ0MzExNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
Z2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAtMCwwICsxLDEwNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
IyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisj
IFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgc291cmNlIGZpbGVzIGZvciBXZWJHTCBHUFUgcHJv
Y2VzcyBJUEMuCisjCisjIHB5dGhvbjMgLW0gYmxhY2sgLWwgMTUwIFRvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbAorIyBweXRob24zIC1tIG15cHkgVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsCisjCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBlbnVtCitpbXBvcnQgcGF0
aGxpYgoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgY29sbGVjdGlvbnMKKworZnJvbSB0
eXBpbmcgaW1wb3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwg
T3B0aW9uYWwsIEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIKKworcm9vdF9kaXIgPSAocGF0
aGxpYi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCitleHRl
bnNpb25zX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0
Zm9ybSIgLyAiZ3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgorCitmdW5jdGlvbnNfaW5wdXRf
Zm5zID0gWworICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNz
IiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmgi
CitdCit0eXBlc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJX
ZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmgiCisKKwordGVtcGxhdGVfcHJlYW1ibGUgPSAiIiIvKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBm
aWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyIi
IgorY29udGV4dF9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIg
LyAiR1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVu
Y3Rpb25zR2VuZXJhdGVkLmgiCitjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0
ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRl
ZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCit7fQorCisiIiIKKykKK2NvbnRleHRf
bWVzc2FnZXNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2Vz
cyIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIgor
Y29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAg
ICsgIiIiI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdl
cyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CisgICAgdm9pZCBS
ZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5
QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZv
aWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9p
ZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKQore30KK319CisKKyNlbmRpZgorCisiIiIKKykKKworY29u
dGV4dF9wcm94eV9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIg
LyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAiCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9u
c190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBX
ZWJLaXQge3sKK3t9CisKK319CisKKyNlbmRpZgorCisiIiIKKykKKworCitkZWYgd3JpdGVfZmls
ZShmbiwgbmV3X2NvbnRlbnRzKToKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmbikgYXMg
ZjoKKyAgICAgICAgICAgIGlmIGYucmVhZCgpID09IG5ld19jb250ZW50czoKKyAgICAgICAgICAg
ICAgICByZXR1cm4KKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKyAgICB3aXRoIG9wZW4oZm4s
ICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0ZShuZXdfY29udGVudHMpCisKK2NsYXNzIGNwcF90
eXBlKG9iamVjdCk6CisgICAgdHlwZV9uYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB0eXBlX25hbWUgOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGVfbmFtZSA9IHR5cGVfbmFtZQor
CisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQor
CisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnR5cGVf
bmFtZSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlw
ZV9uYW1lCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNl
bGYudHlwZV9uYW1lID09IG90aGVyLnR5cGVfbmFtZQorCisgICAgZGVmIGlzX3ZvaWQoc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lIGluIFsidm9pZCIsICJHQ0dM
dm9pZCIsICJjb25zdCB2b2lkIiwgImNvbnN0IEdDR0x2b2lkIl0KKworICAgIGRlZiBpc19jb25z
dChzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUuc3RhcnRzd2l0
aCgiY29uc3QgIikKKworICAgIGRlZiBpc19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+
IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4g
Ym9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNl
bGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3BvaW50ZXIo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3Rf
cG9pbnRlcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBp
c19yZWZlcmVuY2Uoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBk
ZWYgaXNfY29uc3RfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAg
IHJldHVybiBzZWxmCisKKyAgICBkZWYgZ2V0X2RlY2F5X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBl
JzoKKyAgICAgICAgaWYgc2VsZi5pc19jb25zdCgpOgorICAgICAgICAgICAgcmV0dXJuIGdldF9j
cHBfdHlwZShzZWxmLnR5cGVfbmFtZVs2Ol0pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBk
ZWYgZ2V0X3J2YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBn
ZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiJiYiKQorCisgICAgZGVmIGdldF9wb2ludGVy
X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShz
ZWxmLnR5cGVfbmFtZSArICIqIikKKworY2xhc3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBl
KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjb250YWluZXJfbmFt
ZSA6IHN0ciwgY29udGFpbmVkX3R5cGUgOiBjcHBfdHlwZSwgYXJpdHkgOiBPcHRpb25hbFtpbnRd
ID0gTm9uZSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAg
ICAgICAgc2VsZi5jb250YWluZXJfbmFtZSA9IGNvbnRhaW5lcl9uYW1lCisgICAgICAgIHNlbGYu
Y29udGFpbmVkX3R5cGUgPSBjb250YWluZWRfdHlwZQorICAgICAgICBzZWxmLmFyaXR5ID0gYXJp
dHkKKyAgICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBU
cnVlCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYu
Y29udGFpbmVyX25hbWUgPT0gIkdDR0xTcGFuIgorICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2Vs
ZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUgPT0gIkdDR0xT
cGFuIiBhbmQgc2VsZi5hcml0eSBpcyBOb25lCisgICAgZGVmIGdldF9jb250YWluZXJfbmFtZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUKKyAgICBkZWYgZ2V0X2Fy
aXR5KHNlbGYpIC0+IE9wdGlvbmFsW2ludF06CisgICAgICAgIHJldHVybiBzZWxmLmFyaXR5Cisg
ICAgZGVmIGdldF9jb250YWluZWRfdHlwZShzZWxmKSAtPiBjcHBfdHlwZToKKyAgICAgICAgcmV0
dXJuIHNlbGYuY29udGFpbmVkX3R5cGUKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNl
bGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlLmlzX2NvbnN0
KCkKKworZGVmIGNyZWF0ZV9jcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBP
cHRpb25hbFtjcHBfdHlwZV9jb250YWluZXJdOgorICAgIG0gPSByZS5tYXRjaChyIihbXHc6XSsp
PCguKyk+JCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICBjb250YWluZXJfbmFtZSA9IG1bMV0KKyAgICB0ZW1wbGF0ZXMgPSBtWzJdCisgICAgYXJp
dHkgPSBOb25lCisgICAgbSA9IHJlLm1hdGNoKHIiKFteLF0rKSxccyooXGQrKSIsIHRlbXBsYXRl
cykKKyAgICBpZiBtOgorICAgICAgICB0ZW1wbGF0ZXMgPSBtWzFdCisgICAgICAgIGFyaXR5ID0g
aW50KG1bMl0pCisgICAgcmV0dXJuIGNwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUsIGNvbnRh
aW5lcl9uYW1lLCBnZXRfY3BwX3R5cGUodGVtcGxhdGVzKSwgYXJpdHkpCisKK2NsYXNzIGNwcF90
eXBlX2Z1bmN0aW9uKGNwcF90eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1l
IDogc3RyLCByZXR1cm5fdmFsdWVfdHlwZSA6IGNwcF90eXBlLCBhcmd1bWVudF90eXBlcyA6IExp
c3RbY3BwX3R5cGVdKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1l
KQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZV90eXBlICA9IHJldHVybl92YWx1ZV90eXBlCisg
ICAgICAgIHNlbGYuYXJndW1lbnRfdHlwZXMgPSBhcmd1bWVudF90eXBlcworCitkZWYgY3BwX3Nw
bGl0X2FyZ3Nfc3BlY3MoYXJnc19zcGVjIDogc3RyKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAj
IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMzNTI3MjQ1L3B5dGhvbi1zcGxp
dC1ieS1jb21tYS1za2lwcGluZy10aGUtY29udGVudC1pbnNpZGUtcGFyZW50aGVzZXMKKyAgICBj
b21tYSA9IHIiLCg/ISg/OltePF0qXDxbXj5dKlw+KSpbXjw+XSpcPikiCisgICAgcmV0dXJuIGZp
bHRlcihOb25lLCBbYS5zdHJpcCgpIGZvciBhIGluIHJlLnNwbGl0KGNvbW1hLCBhcmdzX3NwZWMu
c3RyaXAoKSldKQorICAgIAorZGVmIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUg
OiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2Z1bmN0aW9uXToKKyAgICBtID0gcmUubWF0Y2go
cicoLiopXCgoLiopXCknLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVy
biBOb25lCisgICAgcmV0dXJuX3ZhbHVlX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICBh
cmdzX3R5cGVzID0gW2dldF9jcHBfdHlwZShhKSBmb3IgYSBpbiBjcHBfc3BsaXRfYXJnc19zcGVj
cyhtWzJdKV0KKyAgICByZXR1cm4gY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lLCByZXR1cm5f
dmFsdWVfdHlwZSwgYXJnc190eXBlcykKKyAgICAgICAgCisjIFBvaW50ZXIgb3IgcmVmZXJlcmVu
Y2UKK2NsYXNzIGNwcF90eXBlX2luZGlyZWN0KGNwcF90eXBlKToKKyAgICBjYXRlZ29yeSA6IHN0
cgorICAgIHZhbHVlX3R5cGUgOiBjcHBfdHlwZQorICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB0eXBlX25hbWUgOiBzdHIsIGNhdGVnb3J5IDogc3RyLCB2YWx1ZV90eXBlIDogY3BwX3R5cGUp
OgorICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNl
bGYuY2F0ZWdvcnkgPSBjYXRlZ29yeQorICAgICAgICBzZWxmLnZhbHVlX3R5cGUgPSB2YWx1ZV90
eXBlCisKKyAgICBkZWYgaXNfY29uc3RfcG9pbnRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcG9pbnRl
cihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBub3Qgc2Vs
Zi5pc19jb25zdCgpCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYg
aXNfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicg
YW5kIG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcnZhbHVlX3JlZmVyZW5jZShzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYmJworICAgIGRlZiBnZXRfdmFs
dWVfdHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVfdHlwZQorCitkZWYgY3Jl
YXRlX2NwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5
cGVfaW5kaXJlY3RdOgorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJiQiLCB0eXBlX25h
bWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJiQiLCB0eXBl
X25hbWUpIAorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBl
X25hbWUsICcmJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25z
dCAoLispJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRj
aChyIiguKykmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5
cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0g
cmUubWF0Y2gociJjb25zdCAoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAg
ICAgICBtID0gcmUubWF0Y2gociIoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAg
ICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcqJywgZ2V0X2NwcF90eXBl
KG1bMV0pKQorICAgIHJldHVybiBOb25lCisKKworY2xhc3MgY3BwX2V4cHIob2JqZWN0KToKKyAg
ICB0eXBlOiBjcHBfdHlwZQorICAgIGV4cHI6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHR5cGU6IGNwcF90eXBlLCBleHByOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisg
ICAgICAgIHNlbGYuZXhwciA9IGV4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5leHByCisKKworQ3BwRXhwckNvbnZlcnRlciA9IENhbGxhYmxlW1tjcHBf
ZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhwcl0KKworCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3Rf
ZnJvbV9wb2ludGVyX3Rocm91Z2goY2FzdF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2Fs
bGFibGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50
ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkg
LT4gY3BwX2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0
PHt0eXBlLnR5cGVfbmFtZX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlw
ZSl9Pih7c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJv
bV9wb2ludGVyCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2go
Y2FzdF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBf
dHlwZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRl
cihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICBy
ZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJyZWludGVycHJldF9jYXN0PHt0eXBlLnR5cGVfbmFtZX0+
KHN0YXRpY19jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisg
ICAgcmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIKKworZGVmIGNwcF9zdGF0
aWNfY2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAg
IHJldHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHtz
dHIoZXhwcil9KSIpCisKKworZGVmIGNwcF9pbXBsaWNpdF9jYXN0KGV4cHI6IGNwcF9leHByLCB0
eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIHN0
cihleHByKSkKKworCitkZWYgY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihl
eHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAg
ICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3Bv
aW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVp
bnRlcnByZXRfY2FzdDx7ZWxlbWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKCkp
LCB7c3RyKGV4cHIpfS5zaXplKCkpIikKKworZGVmIHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90
eXBlX3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwgdHlwZTogY3Bw
X3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9
IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJu
IGNwcF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB7ZWxl
bWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKSwge3N0cihleHByKX0uYnVmU2l6
ZSkiKQorCitkZWYgY3BwX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6Cisg
ICAgcmV0dXJuIGNwcF9leHByKGV4cHIudHlwZS5nZXRfcnZhbHVlX3R5cGUoKSwgZiJXVEZNb3Zl
KHtzdHIoZXhwcil9KSIpCisKKworY3BwX3R5cGVzOiBEaWN0W3N0ciwgY3BwX3R5cGVdID0ge30K
KworY3BwX3R5cGVfY29uc3RydWN0b3JzIDogTGlzdFtDYWxsYWJsZVtbc3RyXSwgT3B0aW9uYWxb
Y3BwX3R5cGVdXV0gPSBbCisgICAgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uLAorICAgIGNyZWF0
ZV9jcHBfdHlwZV9jb250YWluZXIsCisgICAgY3JlYXRlX2NwcF90eXBlX2luZGlyZWN0CitdCisK
K2RlZiBnZXRfY3BwX3R5cGUodHlwZV9uYW1lOiBzdHIpOgorICAgIHIgPSBjcHBfdHlwZXMuZ2V0
KHR5cGVfbmFtZSwgTm9uZSkKKyAgICBpZiByOgorICAgICAgICByZXR1cm4gcgorICAgIGZvciB0
eXBlX2NvbnN0ciBpbiBjcHBfdHlwZV9jb25zdHJ1Y3RvcnM6CisgICAgICAgIHIgPSB0eXBlX2Nv
bnN0cih0eXBlX25hbWUpCisgICAgICAgIGlmIHI6CisgICAgICAgICAgICBicmVhaworICAgIGlm
IG5vdCByOgorICAgICAgICByID0gY3BwX3R5cGUodHlwZV9uYW1lKQorICAgIGNwcF90eXBlc1t0
eXBlX25hbWVdID0gcgorICAgIHJldHVybiByCisKKworY2xhc3MgY3BwX2FyZyhvYmplY3QpOgor
ICAgIG5hbWU6IHN0cgorICAgIHR5cGU6IGNwcF90eXBlCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUK
KyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAg
ICAgIHJldHVybiAie30ge30iLmZvcm1hdChzZWxmLnR5cGUsIHNlbGYubmFtZSkKKworCitjbGFz
cyBjcHBfZGVjbChvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgbmFtZTogc3RyCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAg
ICAgIHNlbGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVm
IF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBmIntzdHIoc2VsZi50eXBlKX0ge3NlbGYu
bmFtZX0iCisKKworY2xhc3MgY3BwX2FyZ19saXN0KG9iamVjdCk6CisgICAgYXJnczogTGlzdFtj
cHBfYXJnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10pOgor
ICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisKKyAgICBkZWYgbmFtZXMoc2VsZik6CisgICAgICAg
IHJldHVybiAiLCAiLmpvaW4oYS5uYW1lIGZvciBhIGluIHNlbGYuYXJncykKKworICAgIGRlZiBl
eHBycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZXhwcihhLnR5cGUsIGEubmFtZSkgZm9y
IGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIGRlY2xzKHNlbGYpOgorICAgICAgICByZXR1cm4g
W2NwcF9kZWNsKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYg
dHlwZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbYS50eXBlIGZvciBhIGluIHNlbGYuYXJnc10K
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKHN0cihh
KSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisKKworY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKKyAgICBu
YW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5
cGUKKyAgICBpc19leHRlbnNpb246IGJvb2wKKyAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBh
cmdzOiBjcHBfYXJnX2xpc3QsIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgICAgIHNlbGYubmFt
ZSA9IG5hbWUKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAg
IHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBpc19leHRlbnNp
b24KKyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSAiIgorCisgICAgZGVmIF9fc3RyX18o
c2VsZik6CisgICAgICAgIHJldHVybiBmIntzZWxmLnJldHVybl90eXBlfSB7c2VsZi5uYW1lfSh7
c3RyKHNlbGYuYXJncyl9KSIKKworICAgIGRlZiBnZXRfYXJnc19jYXRlZ29yaWVzKHNlbGYpIC0+
IFR1cGxlW0xpc3RbY3BwX2FyZ10sIExpc3RbY3BwX2FyZ11dOgorICAgICAgICBpbl9hcmdzID0g
W10KKyAgICAgICAgb3V0X2FyZ3MgPSBbXQorICAgICAgICBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJn
czoKKyAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50
ZXIoKSBvciBcCisgICAgICAgICAgICAgICAgYS50eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAg
ICAgICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEu
dHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSBhbmQgKCgoYS50eXBlLmlzX3NwYW4oKSBvciBhLnR5
cGUuaXNfZHluYW1pY19zcGFuKCkpIGFuZCBub3QgYS50eXBlLmdldF9jb250YWluZWRfdHlwZSgp
LmlzX2NvbnN0KCkpKToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW5fYXJncyArPSBbYV0KKyAgICAgICAgICAgICNm
bXQ6IG9uCisgICAgICAgIHJldHVybiBpbl9hcmdzLCBvdXRfYXJncworCisgICAgZGVmIGlzX2lt
cGxlbWVudGVkX3R5cGUoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiB0eXBlLmlz
X2NvbnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1
cm4gVHJ1ZQorCisgICAgZGVmIGlzX2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICAjIiBpbiBh
LnR5cGUudHlwZV9uYW1lIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgIyAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgI2lmICJHQ0dMc3luYyIgaW4gc2VsZi5yZXR1cm5fdHlwZS50
eXBlX25hbWU6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLm5h
bWUgPT0gImJ1ZlNpemUiIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorICAgICAgICBpZiBhbnkoYS50eXBlLmlzX3BvaW50ZXIoKSBhbmQgYS50eXBl
LmdldF92YWx1ZV90eXBlKCkuaXNfdm9pZCgpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkobm90IHNlbGYuaXNfaW1wbGVt
ZW50ZWRfdHlwZShhLnR5cGUpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLnJldHVybl90eXBlLmlzX3BvaW50ZXIoKToK
KyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5pc19pbXBsZW1l
bnRlZF90eXBlKHNlbGYucmV0dXJuX3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgIHJldHVybiBUcnVlCisKKword2Via2l0X2lwY190eXBlczogRGljdFtjcHBfdHlwZSwg
Y3BwX3R5cGVdID0ge30KKword2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzOiBEaWN0W1R1cGxl
W2NwcF90eXBlLCBjcHBfdHlwZV0sIENwcEV4cHJDb252ZXJ0ZXJdID0ge30KKworCitkZWYgd2Vi
a2l0X2lwY19jb252ZXJ0X2V4cHIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBj
cHBfZXhwcjoKKyAgICAiIiIgQ29udmVydHMgYGV4cHJgIG9mIHR5cGUgb2YgYHNlbGZgIHRvIGB0
eXBlYCAiIiIKKyAgICBjb252ZXJ0ID0gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLmdldCgo
ZXhwci50eXBlLCB0eXBlKSwgTm9uZSkKKyAgICBpZiBub3QgY29udmVydDoKKyAgICAgICAgaWYg
ZXhwci50eXBlID09IHR5cGU6CisgICAgICAgICAgICByZXR1cm4gZXhwcgorICAgICAgICBjb252
ZXJ0ID0gY3BwX2ltcGxpY2l0X2Nhc3QKKyAgICByZXR1cm4gY29udmVydChleHByLCB0eXBlKQor
CisKK2RlZiB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5zZmVyX3R5cGUodHlwZSA6IGNwcF90eXBl
X2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29u
dGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgYXJpdHkgPSB0eXBlLmdldF9hcml0
eSgpCisgICAgd2Via2l0X2lwY19lbGVtZW50X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2VsZW1l
bnRfdHlwZV0gaWYgbm90IGVsZW1lbnRfdHlwZS5pc192b2lkKCkgZWxzZSBnZXRfY3BwX3R5cGUo
J3VpbnQ4X3QnKQorICAgIGlmIGFyaXR5IGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2V0
X2NwcF90eXBlKGYiSVBDOjpBcnJheVJlZmVyZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90
eXBlKX0sIHthcml0eX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpBcnJheVJl
ZmVyZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0+IikKKworCisKK2RlZiB3ZWJr
aXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUodHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBj
cHBfdHlwZToKKyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdl
dF9kZWNheV90eXBlKCkKKyAgICBpZiBlbGVtZW50X3R5cGUuaXNfdm9pZCgpOgorICAgICAgICBl
bGVtZW50X3R5cGUgPSBnZXRfY3BwX3R5cGUoJ0dDR0xjaGFyJykKKyAgICBpZiB0eXBlLmlzX2R5
bmFtaWNfc3BhbigpOgorICAgICAgICBpbmxpbmVfY2FwYWNpdHkgPSAxNiBpZiAiZmxvYXQiIGlu
IGVsZW1lbnRfdHlwZS50eXBlX25hbWUgZWxzZSA0CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5
cGUoZiJWZWN0b3I8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cihpbmxpbmVfY2FwYWNpdHkpfT4i
KQorICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJzdGQ6OmFycmF5PHtzdHIoZWxlbWVudF90eXBl
KX0sIHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9PiIpCisKK2RlZiB3ZWJraXRfaXBjX21ha2VfZ2Nn
bHNwYW5fY29udmVyc2lvbihleHByIDogY3BwX2V4cHIsIHR5cGUgOiBjcHBfdHlwZV9jb250YWlu
ZXIpIC0+IGNwcF9leHByOgorICAgIHBvaW50ZXJfY2FzdF90eXBlID0gdHlwZS5nZXRfY29udGFp
bmVkX3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3Bh
bigpOgorICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW4ocmVpbnRl
cnByZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSks
IHtzdHIoZXhwcil9LnNpemUoKSkiKQorCisgICAgYXNzZXJ0KHR5cGUuaXNfc3BhbigpKQorICAg
IHJldHVybiBjcHBfZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3Bhbjx7c3RyKHR5cGUuZ2V0X2FyaXR5
KCkpfT4ocmVpbnRlcnByZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhw
cil9LmRhdGEoKSkpIikKKworIyBTZWUgbWVzc2FnZXMucHkgZnVuY3Rpb25fcGFyYW1ldGVyX3R5
cGUKK3dlYmtpdF9pcGNfYnVpbHRpbl90eXBlcyA9IHNldCgKKyAgICBbInVpbnQ4X3QiLCAidWlu
dDE2X3QiLCAidWludDMyX3QiLCAidWludDY0X3QiLCAiaW50OF90IiwgImludDE2X3QiLCAiaW50
MzJfdCIsICJpbnQ2NF90IiwgImJvb2wiLCAiZmxvYXQiLCAiZG91YmxlIiAiYm9vbCJdCispCisK
KworZGVmIHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUodHlwZTogY3BwX3R5
cGUpIC0+IGNwcF90eXBlOgorICAgIGlmIHR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVp
bHRpbl90eXBlczoKKyAgICAgICAgcmV0dXJuIHR5cGUKKyAgICByZXR1cm4gdHlwZS5nZXRfcnZh
bHVlX3R5cGUoKQorCisKK2RlZiB3ZWJraXRfaXBjX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikg
LT4gY3BwX2V4cHI6CisgICAgaWYgZXhwci50eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1
aWx0aW5fdHlwZXM6CisgICAgICAgIHJldHVybiBleHByCisgICAgcmV0dXJuIGNwcF9tb3ZlX2V4
cHIoZXhwcikKKworCitkZWYgd2Via2l0X2lwY19tc2dfbmFtZShmdW5jOiBjcHBfZnVuYyk6Cisg
ICAgcmV0dXJuIGZ1bmMubmFtZVswXS5jYXBpdGFsaXplKCkgKyBmdW5jLm5hbWVbMTpdICsgZnVu
Yy5vdmVybG9hZF9zdWZmaXgKKworCitjbGFzcyB3ZWJraXRfaXBjX21zZyhvYmplY3QpOgorICAg
IG5hbWU6IHN0cgorICAgIGluX2FyZ3M6IGNwcF9hcmdfbGlzdAorICAgIG91dF9hcmdzOiBjcHBf
YXJnX2xpc3QKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jOiBjcHBfZnVuYyk6CisgICAg
ICAgIHNlbGYubmFtZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYykKKyAgICAgICAgaW5fYXJn
cywgb3V0X2FyZ3MgPSBmdW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBpcGNfaW5f
YXJncyA9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSBmb3IgYSBp
biBpbl9hcmdzXQorICAgICAgICBpcGNfb3V0X2FyZ3MgPSBbXQorICAgICAgICBpZiBub3QgZnVu
Yy5yZXR1cm5fdHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2Nw
cF9hcmcod2Via2l0X2lwY190eXBlc1tmdW5jLnJldHVybl90eXBlXSwgInJldHVyblZhbHVlIild
CisgICAgICAgIGZvciBhIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9
IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKV0KKyAgICAgICAgICAg
IGlmIGEudHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICBpcGNfaW5fYXJn
cyArPSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIild
CisgICAgICAgIHNlbGYuaW5fYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfaW5fYXJncykKKyAgICAg
ICAgc2VsZi5vdXRfYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfb3V0X2FyZ3MpCisKKyAgICBkZWYg
X19zdHJfXyhzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYub3V0X2FyZ3MuYXJncyk6CisgICAg
ICAgICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdz
KX0pIC0+ICh7c3RyKHNlbGYub3V0X2FyZ3MpfSkgU3luY2hyb25vdXMiCisgICAgICAgIHJldHVy
biBmIlxuICAgIHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkiCisKKworY2xh
c3Mgd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAg
IG1zZ19uYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBf
YXJnX2xpc3QKKworICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRz
OiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHJldHVybl9z
dG10czogTGlzdFtzdHJdCisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4
cHJzOiBMaXN0W2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBj
cHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2Vs
Zi5tc2dfbmFtZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoY3BwX2Z1bmMpCisgICAgICAgIHNlbGYu
cmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBj
cHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBz
ZWxmLmNhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisg
ICAgICAgIHNlbGYucmV0dXJuX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtd
CisgICAgICAgIHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3Mg
PSBjcHBfZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX3Jl
dHVybl92YWx1ZShjcHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2lu
X2FyZ3MoaW5fYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmdzKG91dF9hcmdzKQor
ICAgICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYp
OgorICAgICAgICBpbl9leHBycyA9ICIsICIuam9pbihbc3RyKGkpIGZvciBpIGluIHNlbGYuaW5f
ZXhwcnNdKQorICAgICAgICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIHNl
bGYub3V0X2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IHNlbGYucmV0dXJuX3R5cGUuaXNfdm9p
ZCgpIGFuZCBsZW4ob3V0X2V4cHJzKSA9PSAwCisgICAgICAgIGlmIGlzX2FzeW5jOgorICAgICAg
ICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsiLAorICAgICAgICAgICAgXQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiIgorICAgICAgICAgICAgaWYgc2Vs
Zi5wb3N0X2NhbGxfc3RtdHM6IAorICAgICAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gImF1dG8g
c2VuZFJlc3VsdCA9ICIKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFsK
KyAgICAgICAgICAgICAgICAgICAgImlmIChzZW5kUmVzdWx0KSIgKyAoIiB7IiBpZiBsZW4oc2Vs
Zi5wb3N0X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0gKyBbIiAg
ICAiICsgcyBmb3IgcyBpbiBzZWxmLnBvc3RfY2FsbF9zdG10c10gKyBbCisgICAgICAgICAgICAg
ICAgICAgICgifSIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAg
ICAgICAgICAgIGYie3NlbmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9leHByc30pLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7IiwKKyAgICAgICAgICAgIF0KKwor
CisgICAgZGVmIHByb2Nlc3NfaW5fYXJncyhzZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToK
KyAgICAgICAgZm9yIGkgaW4gaW5fYXJnczoKKyAgICAgICAgICAgIGlmIGkudHlwZS5pc19jb25z
dF9wb2ludGVyKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVy
dF9leHByKGNwcF9leHByKGkudHlwZSwgaS5uYW1lKSwgd2Via2l0X2lwY190eXBlc1tpLnR5cGVd
KV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmdzKHNlbGYsIG91dF9hcmdzOiBMaXN0W2NwcF9h
cmddKToKKyAgICAgICAgZm9yIG8gaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpZiBvLnR5cGUu
aXNfcG9pbnRlcigpOgorICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBvLnR5cGUuZ2V0X3Zh
bHVlX3R5cGUoKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtp
dF9pcGNfdHlwZXNbdmFsdWVfdHlwZV0KKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJr
aXRfaXBjX3ZhbHVlX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0gPSB7eyB9
fTsiXQorICAgICAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2LnR5cGUsIHYubmFtZSkKKyAgICAg
ICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbZV0KKyAgICAgICAgICAgICAgICBzZWxmLnBv
c3RfY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAg
ICAgICAgICAgICAgICBmImlmICh7by5uYW1lfSkiLAorICAgICAgICAgICAgICAgICAgICBmIiAg
ICAqe28ubmFtZX0gPSB7d2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgdmFsdWVfdHlwZSl9OyIK
KyAgICAgICAgICAgICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICBlbGlmIG8udHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190
eXBlID0gd2Via2l0X2lwY190eXBlc1tvLnR5cGVdCisgICAgICAgICAgICAgICAgYXNzZXJ0KGlz
aW5zdGFuY2Uod2Via2l0X2lwY190eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAg
ICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAg
ICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0
cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhw
cih2LnR5cGUsIHYubmFtZSldCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNf
c3BhbigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihn
ZXRfY3BwX3R5cGUoInNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KKyAgICAgICAgICAg
ICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgIGYibWVt
Y3B5KHtvLm5hbWV9LmRhdGEsIHt2Lm5hbWV9LmRhdGEoKSwge28ubmFtZX0uYnVmU2l6ZSAqIHNp
emVvZih7c3RyKHdlYmtpdF9pcGNfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKSl9KSk7IgorICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5v
dXRfZXhwcnMgKz0gW2NwcF9leHByKG8udHlwZSwgby5uYW1lKV0KKworICAgIGRlZiBwcm9jZXNz
X3JldHVybl92YWx1ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiBy
ZXR1cm5fdHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5y
ZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtp
dF9pcGNfdHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3Bw
X2V4cHIoaXBjX3JldHVybl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9j
YWxsX3N0bXRzICs9IFtmIntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4
cHIuZXhwcn0gPSB7eyB9fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtyZXR1cm5fdmFs
dWVfZXhwcl0gKyBzZWxmLm91dF9leHBycworICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtm
InJldHVybiB7c3RyKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCBy
ZXR1cm5fdHlwZSkpfTsiXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGlu
dCA9ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9k
eSA9ICIiLmpvaW4oZiJcbiAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBz
ZWxmLmNhbGxfc3RtdHMgKyBzZWxmLnBvc3RfY2FsbF9zdG10cyArIHNlbGYucmV0dXJuX3N0bXRz
KQorICAgICAgICByZXR1cm4gZiIiIlxue3N0cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50
fQore3t7Ym9keX0KK319IiIiCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vo
b2xkZXIob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUK
KyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBib2R5OiBMaXN0W3N0cl0KKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBj
cHBfZnVuYy5uYW1lCisKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVy
bl90eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5i
b2R5ID0gWyJub3RJbXBsZW1lbnRlZCgpOyJdCisgICAgICAgIGlmIGNwcF9mdW5jLnJldHVybl90
eXBlLnR5cGVfbmFtZSAhPSAidm9pZCI6CisgICAgICAgICAgICBzZWxmLmJvZHkgKz0gWyJyZXR1
cm4geyB9OyJdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAv
LyBOT0xJTlQiIGlmICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIlxu
e1xuICAgICIgKyAiXG4gICAgIi5qb2luKHNlbGYuYm9keSkgKyAiXG59IgorICAgICAgICByZXR1
cm4gZiJcbntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH17Ym9keX0iCisKKworY2xh
c3MgY29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9y
LiIKKyAgICBpbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsXQorICAgIHVuaW1w
bHM6IExpc3Rbd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXJdCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSwgdW5pbXBsZW1lbnRlZDogSXRl
cmFibGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9w
cm94eV9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQorICAgICAgICBzZWxmLnVuaW1wbHMgPSBbd2Vi
a2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXIoZikgZm9yIGYgaW4gdW5pbXBsZW1lbnRlZF0K
KworICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2lu
KHN0cihpKSBmb3IgaSBpbiBzZWxmLmltcGxzICsgc2VsZi51bmltcGxzKQorCisgICAgZGVmIGdl
bmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9w
cm94eV9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190
ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xh
c3Mgd2Via2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6
IGNwcF9hcmdfbGlzdAorICAgIGlzX2V4dGVuc2lvbjogYm9vbAorICAgIHByZV9jYWxsX3N0bXRz
OiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3Rt
dHM6IExpc3Rbc3RyXQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHBy
czogTGlzdFtjcHBfZXhwcl0KKyAgICByZXR1cm5fdmFsdWVfZXhwcjogT3B0aW9uYWxbY3BwX2V4
cHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAg
ICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZp
eCA9IGNwcF9mdW5jLm92ZXJsb2FkX3N1ZmZpeAorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJn
X2xpc3QoW10pCisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5z
aW9uCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxf
c3RtdHMgPSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNl
bGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIHNl
bGYucmV0dXJuX3ZhbHVlX2V4cHIgPSBOb25lCisKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVy
bl92YWx1ZShjcHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3Mg
PSBjcHBfZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2Fy
Z3MoY3BwX2Z1bmMuYXJncy5hcmdzLCBzZXQoaW5fYXJncyksIHNldChvdXRfYXJncykpCisgICAg
ICAgIHNlbGYucHJvY2Vzc19jYWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6Cisg
ICAgICAgIGV4dCA9ICJnZXRFeHRlbnNpb25zKCkuIiBpZiBzZWxmLmlzX2V4dGVuc2lvbiBlbHNl
ICIiCisKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYu
aW5fZXhwcnMpCisgICAgICAgIGlzX2FzeW5jID0gbGVuKHNlbGYub3V0X2V4cHJzKSA9PSAwCisK
KyAgICAgICAgY2FsbF9leHByID0gZiJtX2NvbnRleHQtPntleHR9e3NlbGYubmFtZX0oe2luX2V4
cHJzfSkiCisgICAgICAgIGlmIG5vdCBzZWxmLnJldHVybl92YWx1ZV9leHByOgorICAgICAgICAg
ICAgc2VsZi5jYWxsX3N0bXRzICs9IFtmIntjYWxsX2V4cHJ9OyJdCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yie3N0cihzZWxmLnJldHVybl92YWx1ZV9l
eHByKX0gPSB7Y2FsbF9leHByfTsiXQorICAgICAgICBpZiBub3QgaXNfYXN5bmM6CisgICAgICAg
ICAgICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYub3V0X2V4cHJz
KQorICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gW2YiY29tcGxldGlvbkhhbmRs
ZXIoe291dF9leHByc30pOyJdCisKKyAgICBkZWYgcHJvY2Vzc19hcmdzKHNlbGYsIGFyZ3M6IExp
c3RbY3BwX2FyZ10sIGluX2FyZ3M6IFNldFtjcHBfYXJnXSwgb3V0X2FyZ3M6IFNldFtjcHBfYXJn
XSk6CisgICAgICAgIGZvciBhIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfY29u
c3RfcG9pbnRlcigpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAg
aWYgYSBpbiBpbl9hcmdzOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmcoYSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmco
YSkKKyAgICAgICAgaWYgc2VsZi5vdXRfZXhwcnM6CisgICAgICAgICAgICBvdXRfYXJnX2RlY2xz
ID0gIiwgIi5qb2luKGYie3N0cihlLnR5cGUpfSIgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisg
ICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoZiJDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHtvdXRfYXJnX2RlY2xzfSk+JiYiKSwgImNvbXBsZXRpb25IYW5k
bGVyIildCisKKyAgICBkZWYgcHJvY2Vzc19pbl9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAg
ICAgIHNlbGYuYXJncy5hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9y
d2FyZGVyX3R5cGUod2Via2l0X2lwY190eXBlc1thLnR5cGVdKSwgYS5uYW1lKV0KKyAgICAgICAg
c2VsZi5pbl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIod2Via2l0
X2lwY190eXBlc1thLnR5cGVdLCBhLm5hbWUpLCBhLnR5cGUpXQorCisgICAgZGVmIHByb2Nlc3Nf
b3V0X2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIo
KToKKyAgICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBl
KCksIGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2
YWx1ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAg
ICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihhLnR5cGUsIGYiJnt2YWx1ZV9hcmcubmFt
ZX0iKV0KKyAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJn
Lm5hbWUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5
cGVzW2UudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2Nv
bnZlcnRfZXhwcihlLCB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlw
ZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlw
ZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgIHNpemVfYXJnID0gY3BwX2FyZyhn
ZXRfY3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIikKKyAgICAgICAgICAgIHNl
bGYuYXJncy5hcmdzICs9IFtzaXplX2FyZ10KKyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9h
cmcod2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAg
ICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtz
dHIoc3RvcmVfYXJnLm5hbWUpfShzdGF0aWNfY2FzdDxzaXplX3Q+KHthLm5hbWV9U2l6ZSksIDAp
OyJdCisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlw
ZSwgZiJ7c3RvcmVfYXJnLm5hbWV9IildCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3
ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3
ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJn
Lm5hbWUpLCB3ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19zcGFuKCk6
CisgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5l
cikpCisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5f
c3RvcmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0
bXRzICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0ge3sg
fX07Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50
eXBlLCBzdG9yZV9hcmcubmFtZSldCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJr
aXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJr
aXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5h
bWUpLCB3ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0
IGEudHlwZS5pc19yZWZlcmVuY2UoKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Vi
a2l0X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEu
dHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzICs9IFtmIntzZWxmLm5zKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFt
ZSl9IHt7IH19OyJdCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZh
bHVlX2FyZy5uYW1lKQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbZV0KKyAgICAgICAg
ICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2Nv
bnZlcnRfZXhwcihlLCB3ZWJraXRfaXBjX3R5cGUpKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVy
bl92YWx1ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5f
dHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaXBjX3JldHVybl90
eXBlID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVl
X2V4cHIgPSBjcHBfZXhwcihyZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92
YWx1ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dl
YmtpdF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9l
eHByLCBpcGNfcmV0dXJuX3R5cGUpKV0KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9
IHJldHVybl92YWx1ZV9leHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgYm9k
eSA9ICIiLmpvaW4oZiJcbiAgICAgICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRz
ICsgc2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMpCisgICAgICAgIHJldHVy
biBmIiIiICAgIHZvaWQge3NlbGYubmFtZX17c2VsZi5vdmVybG9hZF9zdWZmaXh9KHtzdHIoc2Vs
Zi5hcmdzKX0pCisgICAge3t7Ym9keX0KKyAgICB9fSIiIgorCisgICAgZGVmIG5zKHNlbGYsIHR5
cGU6IGNwcF90eXBlKToKKyAgICAgICAgIyBUT0RPOiBuYW1lc3BhY2UgaW5mbyBpcyBub3Qgc3Rv
cmVkIGluIG5hbWVzLgorICAgICAgICBpZiB0eXBlLnR5cGVfbmFtZSA9PSAiQWN0aXZlSW5mbyI6
CisgICAgICAgICAgICByZXR1cm4gIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjoiICsgc3Ry
KHR5cGUpCisgICAgICAgIHJldHVybiBzdHIodHlwZSkKKworZGVmIHdlYmtpdF9pcGNfcmVzb2x2
ZV9vdmVybG9hZF9zdWZmaXgoZnVuY3MgOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgIGNvdW50
cyA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoZi5uYW1lIGZvciBmIGluIGZ1bmNzKQorICAgIHN1ZmZp
eGVzIDogQ291bnRlcltzdHJdID0gY29sbGVjdGlvbnMuQ291bnRlcigpCisgICAgZm9yIGYgaW4g
ZnVuY3M6CisgICAgICAgIGlmIGNvdW50c1tmLm5hbWVdID4gMToKKyAgICAgICAgICAgIGYub3Zl
cmxvYWRfc3VmZml4ID0gc3RyKHN1ZmZpeGVzW2YubmFtZV0pCisgICAgICAgICAgICBzdWZmaXhl
cy51cGRhdGUoW2YubmFtZV0pCisKKworY2xhc3MgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5l
cmF0b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgQysrIGltcGxlbWVu
dGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfaW1wbF0K
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAg
ICAgICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9pbXBsKGYpIGZvciBmIGluIGZ1bmNz
XQorCisgICAgZGVmIGdldF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpv
aW4oc3RyKGkpIGZvciBpIGluIHNlbGYuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6
CisgICAgICAgIHdyaXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc19mbiwK
KyAgICAgICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9m
dW5jdGlvbnMoKSksCisgICAgICAgICkKKworCitjbGFzcyBjb250ZXh0X21zZ193ZWJraXRfaXBj
X2dlbmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBXZWJLaXQg
SVBDIG1lc3NhZ2UgZGVmaW5pdGlvbiBnZW5lcmF0b3IuIgorICAgIG1zZ3M6IExpc3Rbd2Via2l0
X2lwY19tc2ddCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9m
dW5jXSk6CisgICAgICAgIHNlbGYubXNncyA9IFt3ZWJraXRfaXBjX21zZyhmKSBmb3IgZiBpbiBm
dW5jc10KKworICAgIGRlZiBnZXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiIi5q
b2luKHN0cihtKSBmb3IgbSBpbiBzZWxmLm1zZ3MpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6
CisgICAgICAgIHdyaXRlX2ZpbGUoY29udGV4dF9tZXNzYWdlc19mbiwgY29udGV4dF9tZXNzYWdl
c190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfbWVzc2FnZXMoKSkpCisKKworZGVmIGNyZWF0ZV9j
cHBfYXJnKGFyZ19zcGVjOiBzdHIsIGFyZ19pbmRleDogaW50KToKKyAgICByID0gYXJnX3NwZWMu
cnNwbGl0KCIgIiwgMSkKKyAgICBuYW1lID0gIiIKKyAgICB0eXBlID0gTm9uZQorICAgIGlmIGxl
bihyKSA+IDEgYW5kIHJbMF0gIT0gImNvbnN0IjoKKyAgICAgICAgbmFtZSA9IHJbMV0uc3RyaXAo
KQorICAgICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKHJbMF0pCisgICAgZWxzZToKKyAgICAgICAg
bmFtZSA9ICJhcmd7fSIuZm9ybWF0KGFyZ19pbmRleCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBf
dHlwZShhcmdfc3BlYykKKyAgICByZXR1cm4gY3BwX2FyZyh0eXBlLCBuYW1lKQorCisKK2RlZiBj
cmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgorICAgIHJldHVy
biBjcHBfYXJnX2xpc3QoW2NyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBm
b3IgaSwgZSBpbiBlbnVtZXJhdGUoYXJnc19zcGVjcyldKQorCisKK2RlZiBjcmVhdGVfY3BwX2Z1
bmMobmFtZTogc3RyLCByZXR1cm5fc3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlz
X2V4dGVuc2lvbjogYm9vbCk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJu
X3R5cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0
KGFyZ3Nfc3BlY3MpLCBpc19leHRlbnNpb249aXNfZXh0ZW5zaW9uKQorCisKK2RlZiByZWFkX2xp
bmVzX3VudGlsKGxpbmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRv
cltzdHIsIE5vbmUsIE5vbmVdOgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBpZiBy
ZS5tYXRjaChtYXRjaCwgbGluZS5zdHJpcCgpKToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAg
IHlpZWxkIGxpbmUKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVu
dFBhcnNlcigidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUHJpbnQgc29tZSBkZWJ1
ZyBpbmZvIGZyb20gdGhlIGdlbmVyYXRvciBzY3JpcHQiKQorICAgIG9wdGlvbnMgPSBwYXJzZXIu
cGFyc2VfYXJncygpCisKKyAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8g
cmVtb3RlIGZyb20gd2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCisKKyAgICAjIEZJWE1FOiBV
bnRpbCBleHRlbnNpb25zIGhlYWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUg
dGhlIGltcGxlbWVudGF0aW9uCisgICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVy
IGEgZnVuY3Rpb24gaXMgb3IgaXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4KKyAgICBleHRl
bnNpb25fc2lnbmF0dXJlcyA6IFNldFtzdHJdID0gc2V0KCkKKyAgICB3aXRoIG9wZW4oZXh0ZW5z
aW9uc19pbnB1dF9mbikgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToK
KyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiop
XCkgPSAwOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGZ1bmMg
PSBjcmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgYXJn
c19zcGVjcz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAg
aXNfZXh0ZW5zaW9uPVRydWUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGV4
dGVuc2lvbl9zaWduYXR1cmVzLnVwZGF0ZShbc3RyKGZ1bmMpXSkKKyAgICBmdW5jcyA9IFtdCisg
ICAgdW5pbXBsZW1lbnRlZCA9IFtdCisgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6
CisgICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gaXRlcihm
LnJlYWRsaW5lcygpKQorICAgICAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5l
cywgIi8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAg
ICAgICBwYXNzCisKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGluZXNfdW50aWwobGlu
ZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIp
OgorICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIlxzKihcUyspXHMrKFx3KylcKCguKilc
KSBmaW5hbDsiLCBsaW5lKQorICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAg
ICAgIGZ1bmNfbmFtZSA9IG1bMl0KKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9j
cHBfZnVuYygKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVuY19uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICBpc19leHRlbnNpb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICAgICAgZnVuYy5pc19leHRlbnNpb24gPSBzdHIoZnVuYykgaW4gZXh0ZW5z
aW9uX3NpZ25hdHVyZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgZnVuYy5pc19pbXBsZW1lbnRl
ZCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKGZ1bmMpCisgICAgICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmltcGxlbWVudGVk
LmFwcGVuZChmdW5jKQorCisKKyAgICB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4
KGZ1bmNzKQorICAgICMgSW5pdGlhbGl6ZSBXZWJLaXQgSVBDIGdlbmVyYXRpb24uIENvbnN0cnVj
dCB0eXBlIG1hcHBpbmdzIGZvciB0aGUgdXNlZCBDKysgdHlwZXMgLT4gSVBDIHR5cGVzLgorICAg
ICMgVE9ETzogbmFtZXNwYWNpbmcgaXNzdWVzLgorICAgIGFpX3R5cGUgPSBnZXRfY3BwX3R5cGUo
IkFjdGl2ZUluZm8mIikKKyAgICBhaV90cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKCJXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyIpCisgICAgd2Via2l0X2lwY190eXBl
c1thaV90eXBlXSA9IGFpX3RyYW5zZmVyX3R5cGUKKworICAgIHdpdGggb3Blbih0eXBlc19pbnB1
dF9mbikgYXMgZjoKKyAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAg
IGZvciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBUaGUgR0NHTCB0eXBlcyBtYXAg
dG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJh
dGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBs
aW5lIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIi
LipzdGF0aWNfYXNzZXJ0XChzdGQ6OmlzX3NhbWVfdjwoXHcrKSwgKFx3Kyk+XCk7IiwgbGluZSkK
KyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tnZXRf
Y3BwX3R5cGUobVsxXSldID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9m
XCgoXHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBt
OgorICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAg
ICAgICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3
ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0
aWNfY2FzdAorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBj
X3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgIyBGSVhNRTogSGVyZSB3ZSB1c2UgPD0gaW5zdGVhZCBvZiA9PSBk
dWUgdG8gcG9pbnRlcnMsIHN1Y2ggYXMgR0NHTHN5bmMsIEdDR0xpbnRwdHIsIC4uLi4KKyAgICAg
ICAgICAgICMgVGhpcyBlbmRzIHVwIGZhaWxpbmcgaWYgdGhlcmUgZXZlciBpcyBhcnJheXMgb2Yg
dGhlc2UgdHlwZXMsIHNpbmNlIGFycmF5cyBhcmUgY3VycmVudGx5CisgICAgICAgICAgICAjIHJl
aW50ZXJwcmV0LWNhc3RlZC4KKyAgICAgICAgICAgICMgV2ViS2l0IElQQyByZXF1aXJlcyBvbmUg
c2l6ZWQgdHlwZSwgYnV0IHRoZSBzaXplIG9mIHRoZXNlIHBvaW50ZXItYmFzZWQgdmFsdWVzIHdp
bGwgY2hhbmdlCisgICAgICAgICAgICAjIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAg
ICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNp
emVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAg
ICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5
cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVz
W2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19j
b252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBl
KV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAg
ICAgbSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6
ZW9mXCgoXHcrKVwpICYmIHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBs
aW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9j
cHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1b
Ml0pCisgICAgICAgICAgICAgICAgY3BwX2Nhc3RfdGhyb3VnaF90eXBlID0gZ2V0X2NwcF90eXBl
KG1bNF0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNf
dHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5
cGUsIGlwY190eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3Vn
aChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c19jb252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0
X3RvX3BvaW50ZXJfdGhyb3VnaChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICMgRm9yIGFsbCB0eXBlcyBpbiB0aGUgaW5wdXQgQVBJLCBmb3Jt
IGNvcnJlc3BvbmRpbmcgSVBDIHR5cGVzIGFuZCBjb252ZXJzaW9ucy4KKyAgICAjIFRPRE86IHRo
aXMgaXMgbm90IGRyaXZlbiBieSB0aGUgdHlwaW5nLgorICAgIGFsbF90eXBlcyA9IHNldCgpCisg
ICAgZm9yIGZ1bmMgaW4gZnVuY3M6CisgICAgICAgYWxsX3R5cGVzLnVwZGF0ZShmdW5jLmFyZ3Mu
dHlwZXMoKSArIFtmdW5jLnJldHVybl90eXBlXSkKKyAgICAjIFNvcnQgYnkgbGVuIHNvIHRoYXQg
dGVtcGxhdGUgYXJncyBjb21lIGJlZm9yZSB0ZW1wbGF0ZXMuCisgICAgZm9yIGNwcF90eXBlIGlu
IHNvcnRlZChhbGxfdHlwZXMsIGtleT1sYW1iZGEgeDogbGVuKHgudHlwZV9uYW1lKSk6CisgICAg
ICAgIGlmIGNwcF90eXBlIGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICBjb250aW51
ZQorICAgICAgCisgICAgICAgIGlmIGNwcF90eXBlLmlzX2R5bmFtaWNfc3BhbigpIG9yIGNwcF90
eXBlLmlzX3NwYW4oKToKKyAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSB3ZWJraXRfaXBjX2dl
dF9zcGFuX3RyYW5zZmVyX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5
cGVzW2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAg
ICAgaWYgY3BwX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKToKKyAgICAgICAg
ICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90
eXBlKV0gPSB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2Nv
bnZlcnNpb24KKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHRy
YW5zZmVyX3R5cGUsIGNwcF90eXBlKV0gPSB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVy
c2lvbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdG9yZV90eXBlID0gd2Vi
a2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgICAgIHdl
YmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soc3RvcmVfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0g
Y3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICBlbGlmIGNwcF90
eXBlLmlzX3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2NvbnN0X3JlZmVyZW5jZSgpIG9yIGNw
cF90eXBlLmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAgdmFsdWVfdHlwZSA9IGNwcF90eXBl
LmdldF92YWx1ZV90eXBlKCkgaWYgbm90IGNwcF90eXBlLmlzX2NvbnRhaW5lcigpIGVsc2UgY3Bw
X3R5cGUKKyAgICAgICAgICAgIGlmIHZhbHVlX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAg
ICAgICAgICAgY29udGFpbmVkX3R5cGUgPSB2YWx1ZV90eXBlLmdldF9jb250YWluZWRfdHlwZSgp
CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9IHdlYmtpdF9pcGNf
dHlwZXNbY29udGFpbmVkX3R5cGVdCisgICAgICAgICAgICAgICAgaWYgd2Via2l0X2lwY19jb250
YWluZWRfdHlwZSA9PSBjb250YWluZWRfdHlwZToKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc1tjcHBfdHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZShmInt2YWx1
ZV90eXBlLmdldF9jb250YWluZXJfbmFtZSgpfTx7c3RyKHdlYmtpdF9pcGNfY29udGFpbmVkX3R5
cGUpfT4iKQorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9
IHRyYW5zZmVyX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBIZXJlIG1pZ2h0IGJl
IGNhc2Ugd2hlcmUgVmVjdG9yPEdDR0xpbnQ+IHdhcyB1c2VkIGluIHRoZSBpbnRlcmZhY2UgYW5k
IFZlY3RvcjxpbnQzMl90PiBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIElQ
QyBkZWZpbml0aW9uLiBUaGVyZSBpcyBubyBzZW5zaWJsZSB3YXkgdG8gZG8gdGhpcyBhdCB0aGUg
bW9tZW50LiBXZSBkbyBub3QgY29udmVydCwgcmF0aGVyCisgICAgICAgICAgICAgICAgICAgICMg
ZXhwZWN0IHRoYXQgYWxsIHRoZSBpbnZvY2F0aW9ucyBhcmUgdGFrZW4gY2FyZSBvZiB0aGUgZmFj
dCB0aGF0IEdDR0xpbnQgaXMgdGhlIHNhbWUgdHlwZSBhcyBpbnQzMl90LgorICAgICAgICAgICAg
ICAgICAgICAjIFRoaXMgd2lsbCBub3QgaG9sZCBmb3IgYWxsIHR5cGVzIHN1Y2ggYXMgR0NHTGJv
b2xlYW4uCisgICAgICAgICAgICAgICAgICAgICN3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNb
KGNwcF90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9j
b252ZXJzaW9uCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
d2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisg
ICAgCisgICAgIyBUaGUgaW5wdXQgdG8gdGhlIGdlbmVyYXRvcnMgaXMgbGlzdCBvZiBmdW5jdGlv
bnMgdG8gcmVtb3RlLgorICAgICMgUnVuIHRoZSB2YXJpb3VzIGdlbmVyYXRvcnMuCisgICAgZ2Vu
ZXJhdG9ycyA9IFsKKyAgICAgICAgY29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0
b3IoZnVuY3MsIHVuaW1wbGVtZW50ZWQpLAorICAgICAgICBjb250ZXh0X21zZ193ZWJraXRfaXBj
X2dlbmVyYXRvcihmdW5jcyksCisgICAgICAgIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJh
dG9yKGZ1bmNzKSwKKyAgICBdCisgICAgZm9yIGcgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgZy5n
ZW5lcmF0ZSgpCisKKyAgICBpZiBvcHRpb25zLnZlcmJvc2U6CisgICAgICAgIHByaW50KCJJbXBs
ZW1lbnRlZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIoaSl9IGZpbmFsXG4i
IGZvciBpIGluIGZ1bmNzKSkKKyAgICAgICAgcHJpbnQoIlVuaW1wbGVtZW50ZWQ6IikKKyAgICAg
ICAgcHJpbnQoIiIuam9pbihmIiAgICB7c3RyKHUpfSBmaW5hbFxuIiBmb3IgdSBpbiB1bmltcGxl
bWVudGVkKSkKKyAgICAgICAgcHJpbnQoZiJJbXBsZW1lbnRlZDoge2xlbihmdW5jcyl9LCB1bmlt
cGxlbWVudGVkOiB7bGVuKHVuaW1wbGVtZW50ZWQpfSwgdG90YWw6IHtsZW4oZnVuY3MpK2xlbih1
bmltcGxlbWVudGVkKX0iKQorICAgICAgICBwcmludCgiQysrIHR5cGUgbWFwIHRvIFdlYktpdCBJ
UEMgdHlwZSBtYXA6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6Cisg
ICAgICAgICAgICBpZiB0IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJp
bnQoZiIgICAge3N0cih0KX0gLT4ge3N0cih3ZWJraXRfaXBjX3R5cGVzW3RdKX0iKQorICAgICAg
ICBwcmludCgiQysrIHR5cGVzIHdpdGhvdXQgV2ViS2l0IElQQyB0eXBlOiIpCisgICAgICAgIGZv
ciBfLCB0IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdCBub3QgaW4gd2Vi
a2l0X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSIpCisg
ICAgICAgIHByaW50KCJXZWJLaXQgSVBDIHR5cGUgY29udmVyc2lvbnMiKQorICAgICAgICBmb3Ig
KGEsIGIpLCBjb252ZXJ0ZXIgaW4gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLml0ZW1zKCk6
CisgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKGEpfSAtPiB7c3RyKGIpfSA6IHtjb252ZXJ0
ZXIuX19uYW1lX199IikKKyAgICAgICAgcHJpbnQoIkRvbmUuIikKKyAgICByZXR1cm4gMAorCisK
K2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGNlNWMyZjk4NjU0NWYzM2MzZWQwODRiNmFkMzQ1MzA3NTFkNGY2NjQuLjQwODAzZTQxMTc5YTZj
MzRhYTQ0MjhiYjk5M2I0NDVlZDc0YWFhMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0x
Mi0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAg
SW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29u
dGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBp
cyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEFkZHMgdGVzdCBleHBlY3RhdGlvbnMgZm9y
IHRoZSBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkuIERvZXMgbm90IHlldAorICAgICAgICBlbmFibGUg
dGhlIHRlc3RzIHRoYXQgYWN0dWFsbHkgcGFzcyBidXQgd2hpY2ggd2VyZSBza2lwcGVkIGJlZm9y
ZSB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTEyLTA4ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW92aW5nLWJldHdlZW4t
ZG9jdW1lbnRzL2JlZm9yZS1wcmVwYXJlLSogYW5kIG1vdmUtYmFjay0qIGFyZSBmbGFreSBmYWls
dXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4
ZmExYjI2Nzg3MzE4NTMwNTgwMDMzOTBmZDc1MzdkYzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0
OTBhMmQ0NjcyNjNjNzA4Yzk0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0zMTcsNiArMzE3LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVt
b3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRw
L3Rlc3RzL3dlYmdsIFsgU2tpcCBdCiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwg
WyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFn
ZTJELW1zZS1mbGlwWS1mYWxzZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZh
c3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQor
d2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1k
aXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBm
YXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQor
d2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1s
IFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11
bHRpcGx5YWxwaGEtdGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZh
c3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFp
bHVyZSBdCisKIHdlYmdwdSBbIFNraXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9u
LWNvbnRyb2wtdHlwZXMuaHRtbCBbIFNraXAgXQo=
</data>
<flag name="commit-queue"
          id="433019"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415729</attachid>
            <date>2020-12-09 01:30:45 -0800</date>
            <delta_ts>2020-12-09 04:06:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201209113042.patch</filename>
            <type>text/plain</type>
            <size>414918</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlkMjMwZTAzYjhlZTE5
NjcxY2Q2NDUwYjhmYTdhYWFmZTFmZjc5Zi4uNThiMTgwOTc4ZGZlYjUwYTU1NTFkNjUwN2I5ZDdm
N2UwZDNlNTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50
cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZv
ciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBX
ZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxlbWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0
IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBhc3MgdGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4
dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBmcm9tIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAg
ICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBpcyBydW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUg
YW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBjb21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVh
c2Ugb2YgcmV2aWV3LgorCisgICAgICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1p
dCBJT1N1cmZhY2VzIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3
ZWIgcHJvY2VzcyBXZWJHTCwgdGhlc2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNz
IFdlYkdMLAorICAgICAgICB0aGUgSU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3Bs
YXkgY2FsbGVyLCBlLmcuIHRoZQorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hp
Y2ggdGhlbiByZXR1cm4gdGhlIElPU3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2Vz
cyBzaWRlLiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0
aGVtIHRvIFdlYkdMTGF5ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhp
c3Rpbmcgd2ViZ2wgdGVzdHMgb25jZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4
QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UXVlcnlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQ
cm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAg
ICAgICAgKEdDR0xTcGFuPEdDR0x2b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBs
YXRmb3JtVGV4dHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJl
ZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRl
eHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNU
b0F1dG9DbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9u
c0dMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9i
amVjdHVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
YW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlh
bGl6ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y3JlYXRlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVGb3JHUFVQcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZl
ckJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFs
bG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmFzQ1YpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnBsYXRmb3JtU3dhcENoYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbToKKyAgICAgICAgKC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0
aW86Y29udGVudHNPcGFxdWU6XSk6CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1b
V2ViR0xMYXllciBkaXNwbGF5XSk6CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVz
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1
ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIw
LTEyLTA4ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIEFkZCBtaXNzaW5nIExGQyBndWFyZHMgYXJvdW5kIExpbmVMYXlvdXQgdXNhZ2UgZnJv
bSByMjcwNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmNTVjZTliNjFkYjMzZThhMzU1ODQ4NzdiOTAwMmU5YTlk
NjQxMzIuLmU3OTdmMzExNzA3ZjMxY2Y4ZWQ2MDllNDFhNzc4OWZiZTdlY2MzNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNzQyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2
ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxl
bWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBh
c3MgdGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBm
cm9tIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAgICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBp
cyBydW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAg
ICBjb21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVhc2Ugb2YgcmV2aWV3LgorCisgICAgICAgIElt
cGxlbWVudCB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gV2ViS2l0IHNpZGUuIFRoaXMg
Y2xhc3Mgd2lsbAorICAgICAgICBmb3J3YXJkIGNhbGxzIHJlY2VpdmVkIHZpYSBJUEMgdG8gdGhl
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLiBBdCB0aGUKKyAgICAgICAgbW9tZW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIGluc3RhbmNlIGlzIGEgZGlyZWN0IGNoaWxkIG9mCisgICAgICAgIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisKKyAgICAgICAgQ29tcG9zaXRpbmcgaXMgaW1wbGVt
ZW50ZWQgb25seSBmb3IgUExBVEZPUk0oQ09DT0EpLgorCisgICAgICAgIE1pc3Npbmc6CisgICAg
ICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGxvc3MKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNvbnRl
eHQgY2hhbmdlCisgICAgICAgICAtIFBhaW50IFdlYkdMIGNvbnRlbnRzIHRvIDJEIGNhbnZhcwor
ICAgICAgICAgLSBVcGxvYWQgdmlkZW8gdG8gV2ViR0wKKyAgICAgICAgIC0gVXBsb2FkIGNhbnZh
cyB0byBXZWJHTAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBo
aWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cmVjeWNsZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpwcmVzZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmRldGFjaENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6IEFkZGVkLgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDogQWRkZWQuCisgICAgICAgIChzZXRGYWls
TmV4dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKHN5bnRoZXNpemVHTEVycm9yKToKKyAgICAg
ICAgKG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChhY3RpdmVUZXh0
dXJlKToKKyAgICAgICAgKGF0dGFjaFNoYWRlcik6CisgICAgICAgIChiaW5kQXR0cmliTG9jYXRp
b24pOgorICAgICAgICAoYmluZEJ1ZmZlcik6CisgICAgICAgIChiaW5kRnJhbWVidWZmZXIpOgor
ICAgICAgICAoYmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChiaW5kVGV4dHVyZSk6CisgICAg
ICAgIChibGVuZENvbG9yKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb24pOgorICAgICAgICAoYmxl
bmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKGJsZW5kRnVuYyk6CisgICAgICAgIChibGVu
ZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAg
ICAgKGNsZWFyKToKKyAgICAgICAgKGNsZWFyQ29sb3IpOgorICAgICAgICAoY2xlYXJEZXB0aCk6
CisgICAgICAgIChjbGVhclN0ZW5jaWwpOgorICAgICAgICAoY29sb3JNYXNrKToKKyAgICAgICAg
KGNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoY29weVRleEltYWdlMkQpOgorICAgICAgICAoY29w
eVRleFN1YkltYWdlMkQpOgorICAgICAgICAoY3JlYXRlQnVmZmVyKToKKyAgICAgICAgKGNyZWF0
ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoY3JlYXRl
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVNoYWRlcik6CisgICAgICAgIChjcmVhdGVU
ZXh0dXJlKToKKyAgICAgICAgKGN1bGxGYWNlKToKKyAgICAgICAgKGRlbGV0ZUJ1ZmZlcik6Cisg
ICAgICAgIChkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChkZWxldGVQcm9ncmFtKToKKyAg
ICAgICAgKGRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChkZWxldGVTaGFkZXIpOgorICAg
ICAgICAoZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChkZXB0aEZ1bmMpOgorICAgICAgICAoZGVw
dGhNYXNrKToKKyAgICAgICAgKGRlcHRoUmFuZ2UpOgorICAgICAgICAoZGV0YWNoU2hhZGVyKToK
KyAgICAgICAgKGRpc2FibGUpOgorICAgICAgICAoZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToK
KyAgICAgICAgKGRyYXdBcnJheXMpOgorICAgICAgICAoZHJhd0VsZW1lbnRzKToKKyAgICAgICAg
KGVuYWJsZSk6CisgICAgICAgIChlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChm
aW5pc2gpOgorICAgICAgICAoZmx1c2gpOgorICAgICAgICAoZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoZnJvbnRGYWNl
KToKKyAgICAgICAgKGdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKGdldEFjdGl2ZUF0dHJpYik6
CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKGdldEF0dHJpYkxvY2F0aW9u
KToKKyAgICAgICAgKGdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0U3RyaW5nKToK
KyAgICAgICAgKGdldEZsb2F0dik6CisgICAgICAgIChnZXRJbnRlZ2Vydik6CisgICAgICAgIChn
ZXRJbnRlZ2VyNjQpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChnZXRQcm9n
cmFtaSk6CisgICAgICAgIChnZXRCb29sZWFudik6CisgICAgICAgIChnZXRFcnJvcik6CisgICAg
ICAgIChnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFBy
b2dyYW1JbmZvTG9nKToKKyAgICAgICAgKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAg
KGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChnZXRTaGFkZXJTb3VyY2UpOgor
ICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRUZXhQYXJhbWV0ZXJpKToK
KyAgICAgICAgKGdldFVuaWZvcm1mdik6CisgICAgICAgIChnZXRVbmlmb3JtaXYpOgorICAgICAg
ICAoZ2V0VW5pZm9ybXVpdik6CisgICAgICAgIChnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAg
ICAoZ2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAgKGhpbnQpOgorICAgICAgICAoaXNC
dWZmZXIpOgorICAgICAgICAoaXNFbmFibGVkKToKKyAgICAgICAgKGlzRnJhbWVidWZmZXIpOgor
ICAgICAgICAoaXNQcm9ncmFtKToKKyAgICAgICAgKGlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAg
KGlzU2hhZGVyKToKKyAgICAgICAgKGlzVGV4dHVyZSk6CisgICAgICAgIChsaW5lV2lkdGgpOgor
ICAgICAgICAobGlua1Byb2dyYW0pOgorICAgICAgICAocGl4ZWxTdG9yZWkpOgorICAgICAgICAo
cG9seWdvbk9mZnNldCk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAg
KHNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAgKHNjaXNzb3IpOgorICAgICAgICAoc2hhZGVyU291
cmNlKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jU2VwYXJh
dGUpOgorICAgICAgICAoc3RlbmNpbE1hc2spOgorICAgICAgICAoc3RlbmNpbE1hc2tTZXBhcmF0
ZSk6CisgICAgICAgIChzdGVuY2lsT3ApOgorICAgICAgICAoc3RlbmNpbE9wU2VwYXJhdGUpOgor
ICAgICAgICAodGV4UGFyYW1ldGVyZik6CisgICAgICAgICh0ZXhQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKHVuaWZvcm0xZik6CisgICAgICAgICh1bmlmb3JtMWZ2KToKKyAgICAgICAgKHVuaWZvcm0x
aSk6CisgICAgICAgICh1bmlmb3JtMWl2KToKKyAgICAgICAgKHVuaWZvcm0yZik6CisgICAgICAg
ICh1bmlmb3JtMmZ2KToKKyAgICAgICAgKHVuaWZvcm0yaSk6CisgICAgICAgICh1bmlmb3JtMml2
KToKKyAgICAgICAgKHVuaWZvcm0zZik6CisgICAgICAgICh1bmlmb3JtM2Z2KToKKyAgICAgICAg
KHVuaWZvcm0zaSk6CisgICAgICAgICh1bmlmb3JtM2l2KToKKyAgICAgICAgKHVuaWZvcm00Zik6
CisgICAgICAgICh1bmlmb3JtNGZ2KToKKyAgICAgICAgKHVuaWZvcm00aSk6CisgICAgICAgICh1
bmlmb3JtNGl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAodW5pZm9y
bU1hdHJpeDNmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKHVzZVBy
b2dyYW0pOgorICAgICAgICAodmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjFmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjFmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIy
Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAodmVydGV4QXR0cmliM2Yp
OgorICAgICAgICAodmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjRmKToK
KyAgICAgICAgKHZlcnRleEF0dHJpYjRmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJQb2ludGVy
KToKKyAgICAgICAgKHZpZXdwb3J0KToKKyAgICAgICAgKGJ1ZmZlckRhdGEwKToKKyAgICAgICAg
KGJ1ZmZlckRhdGExKToKKyAgICAgICAgKGJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAocmVhZG5Q
aXhlbHMwKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMSk6CisgICAgICAgICh0ZXhJbWFnZTJEMCk6
CisgICAgICAgICh0ZXhJbWFnZTJEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTJEMCk6CisgICAg
ICAgICh0ZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UyRDApOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEpOgorICAgICAg
ICAoZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChkcmF3RWxlbWVudHNJbnN0YW5jZWQp
OgorICAgICAgICAodmVydGV4QXR0cmliRGl2aXNvcik6CisgICAgICAgIChjcmVhdGVWZXJ0ZXhB
cnJheSk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChpc1ZlcnRleEFy
cmF5KToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAgIChjb3B5QnVmZmVyU3Vi
RGF0YSk6CisgICAgICAgIChnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChpbnZh
bGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToK
KyAgICAgICAgKHJlYWRCdWZmZXIpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKToKKyAgICAgICAgKHRleFN0b3JhZ2UyRCk6CisgICAgICAgICh0ZXhTdG9yYWdlM0Qp
OgorICAgICAgICAodGV4SW1hZ2UzRDApOgorICAgICAgICAodGV4SW1hZ2UzRDEpOgorICAgICAg
ICAodGV4U3ViSW1hZ2UzRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAo
Y29weVRleFN1YkltYWdlM0QpOgorICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlM0QwKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QxKToKKyAgICAgICAg
KGdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAodW5pZm9ybTF1aSk6CisgICAgICAgICh1
bmlmb3JtMnVpKToKKyAgICAgICAgKHVuaWZvcm0zdWkpOgorICAgICAgICAodW5pZm9ybTR1aSk6
CisgICAgICAgICh1bmlmb3JtMXVpdik6CisgICAgICAgICh1bmlmb3JtMnVpdik6CisgICAgICAg
ICh1bmlmb3JtM3Vpdik6CisgICAgICAgICh1bmlmb3JtNHVpdik6CisgICAgICAgICh1bmlmb3Jt
TWF0cml4MngzZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKHVu
aWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDNmdik6Cisg
ICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGkpOgorICAgICAgICAodmVydGV4QXR0cmliSTRpdik6Cisg
ICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0dWl2KToK
KyAgICAgICAgKHZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKGRyYXdSYW5nZUVsZW1l
bnRzKToKKyAgICAgICAgKGRyYXdCdWZmZXJzKToKKyAgICAgICAgKGNsZWFyQnVmZmVyaXYpOgor
ICAgICAgICAoY2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmdik6CisgICAg
ICAgIChjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKGNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKGRl
bGV0ZVF1ZXJ5KToKKyAgICAgICAgKGlzUXVlcnkpOgorICAgICAgICAoYmVnaW5RdWVyeSk6Cisg
ICAgICAgIChlbmRRdWVyeSk6CisgICAgICAgIChnZXRRdWVyeSk6CisgICAgICAgIChnZXRRdWVy
eU9iamVjdHVpKToKKyAgICAgICAgKGNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoZGVsZXRlU2Ft
cGxlcik6CisgICAgICAgIChpc1NhbXBsZXIpOgorICAgICAgICAoYmluZFNhbXBsZXIpOgorICAg
ICAgICAoc2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoc2FtcGxlclBhcmFtZXRlcmYpOgor
ICAgICAgICAoZ2V0U2FtcGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoZ2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoZmVuY2VTeW5jKToKKyAgICAgICAgKGlzU3luYyk6CisgICAgICAg
IChkZWxldGVTeW5jKToKKyAgICAgICAgKGNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKHdhaXRT
eW5jKToKKyAgICAgICAgKGdldFN5bmNpKToKKyAgICAgICAgKGNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGlzVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZW5kVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChnZXRU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAocGF1c2VUcmFuc2Zvcm1GZWVkYmFj
ayk6CisgICAgICAgIChyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiaW5kQnVm
ZmVyQmFzZSk6CisgICAgICAgIChiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAgICAoZ2V0VW5pZm9y
bUluZGljZXMpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoZ2V0VW5p
Zm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6Cisg
ICAgICAgICh1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKGdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2KToKKyAgICAgICAgKGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAo
YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAo
ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgIChiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKToKKyAgICAgICAgKGluc2VydEV2ZW50TWFya2VyRVhUKToKKyAgICAgICAgKHB1
c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAg
IChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgor
ICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAodmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICog
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAg
IChJUEM6OkFycmF5UmVmZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFy
cmF5UmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OnNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6
ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNv
ZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5k
ZXI6OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1
eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNo
YXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
c2VuZFN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFy
a0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVu
Y3Rpb25zR2VuZXJhdGVkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdl
MkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRp
c2FibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJM
b2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3Ip
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1l
dGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1mdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQ
cm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1NoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVy
YWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Np
c3Nvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNo
YWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFy
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNGYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dy
YW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWI0Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNz
ZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliRGl2aXNvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1h
Z2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0
YUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0ydWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4
M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1Jh
bmdlRWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1
ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5k
UXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1l
dGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRy
YW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVy
UmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybUJsb2NrQmluZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1
ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRl
eEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2
ZW50TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhl
bHNSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVj
dHVpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQ
VVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vz
c2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5
ZWRSZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAzICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSVBDIHNob3VsZCBzdXBwb3J0
IG5vbi1ieXRlIGFsaWduZWQgZGF0YSByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBi
MWY1NGY2MWMyYTNkYjlmMWRlMTRmMmRlZWNjOWQ5N2Y0MThhYzgxLi4yOWIyY2E2ODk2OTk0MWFk
NGYyOTdmOTMxZWE0YWIyZTQwZmRhNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNTQsNiAr
MTI1NCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFl
ZDhlYWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgyZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1
ODk3MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCAr
MzExLDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOWJmYWU5NjRlMjRkMmMyN2JiZTc4
N2ZiOTAwMTMzNjM1ZTg0MDEyMy4uM2I3ZTRhZjA2ZjNlZjAwNDAzNGU3YmYzMWM5N2EyYTU3MGYw
ZWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzUsNiArMTk3NSw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGM4ZTVhZjFmZWYxMDVmMzRjODE3ODE3
MmZjMWRjZDY3ZGU0ZTdmNjUuLjhmOTlmOWExOTE4Yzk1NTg4NWZiMmFjYjk5YzhkMWE3NTI2NWFh
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzU4LDEyICszNTgsMTQgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYzdjZDg3
YzgzYjIzMGFlOTRjN2NlMzAxYWNlMTUwM2E5ZmM2YjgyLi4yNDFjZTBmODhjZjcwZDM1NjFlN2Ey
NzZiMzQ2Zjk0ODRkNzc4OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDU2LDcgKzIwNTYsNyBAQAogCQk2RTQ3RTY2MTEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFC
Q0Q1MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFE
MjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEw
MEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgw
RThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lv
bnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0
MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURD
RDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMw
MEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRl
bXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjUwLDYgKzIyNTAsOCBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDEx
NDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4
MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3
NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkw
NkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDI1NSw5ICsxMDI1NywxNCBAQAogCQk3
QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0Ix
NjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBD
NzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDgg
LyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFG
M0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3Bw
LmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJF
RjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNGMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5l
cmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjY2NTksNiArMjY2NjYsOCBAQAogCQkJCTA3NEU4MkI5MThBNjlG
MEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmggKi8sCisJCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKKwkJCQk3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkw
NzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJ
CTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJ
CTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0yNjgy
Niw2ICsyNjgzNSw4IEBACiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKIAkJCQlCNTMyMEQ2QTEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0Mw
MDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKKwkJCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
LAorCQkJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4
NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLApAQCAtMjY4MzcsNiArMjY4NDgsNyBA
QAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3Bl
bkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLAogCQkJCUNERUIz
RDcyMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovLAogCQkJCUNE
RUIzRDczMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCAqLywKIAkJCQlD
RDhGNjY3MDI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8s
CkBAIC0zMjE0NCw2ICszMjE1Niw3IEBACiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcy
MUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQw
MDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQw
OTAsNiArMzQxMDMsNyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQw
MEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlB
MjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5
MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3Rl
UGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAv
KiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA3MmMyNjQ0NjY2Y2YwM2EyZjU5ZjFlMDlmZTkz
MjkzY2I4MGI2YmFlLi5mN2M2YTJlODJhNGJmMDM3YTFiNDc3ZDc4M2ZhNTQxYWM0ZjU0Njk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcApAQCAtNzMyLDggKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUo
Q2FuCiAgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAg
ICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKICAgICB9Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpOwor
ICAgIGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywg
aG9zdFdpbmRvdyk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNFbGVt
ZW50KSB7CiAgICAgICAgICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29u
dGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JF
dmVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA1Y2NlNWQzZmZiMWM5YTdmY2IxNDdlZTYz
NDUxMWRjYjQ0OWRjNWUwLi5iNzEwZTcxNWE2NmRjYWM1Njc0MmRiNmJiZWE3NDFkNmY4NjM0MmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MzAsNiArNTMwLDEzIEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vCiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBDaHJvbWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQu
Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZGlzcGxheUlEKCkpOworfQorI2Vu
ZGlmCisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjMzMjhm
NTZhMTkxMjA0OWQ0Nzk3NjQxZDAxNDAwNTUxNTkwMzUwMi4uYTg5ZGQxYTFkODY1ZTUzMjhlYjA1
MDU3NjU0MGQzZjIzMmEzY2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC04Niw2ICs4NiwxMCBA
QCBwdWJsaWM6CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwog
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29u
c3Qgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lZD4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAppbmRleCAzYTllMWQ2NjkwOTdlNTk1ZDliNTdmYzRjZmY3ZTYxYTVkMThk
MGE5Li44ZjE4ZmRmZjA0OTkwMzc1ODk4YjE3YjkyOGNjMGUwNjAwZTkxYzc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTMyNSw2ICszMjUsMTAgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBDb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQ
bGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAg
ICAvLyBQYXNzIG51bGxwdHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9v
dCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUm
LCBHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3Zlcmxh
eUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hv
c3RXaW5kb3cuaAppbmRleCA0M2RiMWZmYWUwMTJiYjIxODk0ZjJjYTk2MzA3MjE0NzY2YWFkZDll
Li43MzgxMThiMjFlM2MzMzdiMmU1MzFjOTk2ZDA5OWJkM2U5YTU2OWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsNiArNjQsMTAgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShXRUJH
TCkKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOwor
I2VuZGlmCisKICAgICAvLyBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQg
b2YgdGhlIHBhZ2UuCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdl
Q2xpZW50KCkgY29uc3QgPSAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAppbmRleCBhMjI1M2M4MWJmZTBhMGJiMDkxMGJk
ZTZjMGRiMjZhYTc4NDUyZmIzLi43YWZiYTZlYzUwODgxOWNjMWVhYmFkY2NkZTBiYjc5YTgzODQy
ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaApAQCAtMzQsMTMgKzM0LDE2IEBAIFdFQkNPUkVfRVhQT1JUIGludCBwcmVzZW50
aW5nQXBwbGljYXRpb25QSUQoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKIGlubGluZSBib29sIGlz
SW5XZWJQcm9jZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzSW5HUFVQcm9j
ZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbGlmICFQTEFURk9STShDT0NPQSkKIGlubGluZSBi
b29sIGlzSW5XZWJQcm9jZXNzKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgaXNJbkdQ
VVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKIAogYm9vbCBpc0luV2ViUHJvY2VzcygpOworYm9vbCBpc0luR1BVUHJvY2VzcygpOwogYm9v
bCBpc0luTmV0d29ya1Byb2Nlc3MoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0Nv
Y29hLm1tCmluZGV4IGZiZDFkNDNjMDhmODZkYzNjMThlZDIxNTYwZjA4Y2Y4N2ZhMWFmMzkuLmIw
NmZmNDdkZmM1NDE3MjFmNjRhYTBkZTM4YjNiOTJmODgzODI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrc0NvY29hLm1tCkBAIC05Niw2ICs5NiwxMiBAQCBib29sIGlzSW5XZWJQcm9jZXNzKCkKICAg
ICByZXR1cm4gbWFpbkJ1bmRsZUlzV2ViUHJvY2VzczsKIH0KIAorYm9vbCBpc0luR1BVUHJvY2Vz
cygpCit7CisgICAgc3RhdGljIGJvb2wgbWFpbkJ1bmRsZUlzR1BVUHJvY2VzcyA9IFtbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5X
ZWJLaXQuR1BVIl07CisgICAgcmV0dXJuIG1haW5CdW5kbGVJc0dQVVByb2Nlc3M7Cit9CisKIGJv
b2wgaXNJbk5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNO
ZXR3b3JrUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
IGhhc1ByZWZpeDpAImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyJdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBjNGU3Nzc4ZGI2
YTQ0OGZkMGE1ZTY1MTU5MWZlZWExNDUzODYzODIzLi5kNTAyMWRkMzM0ZWRmOTFhMzQyMzBiZTAx
Njg5MjA3NDI0OWViMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaApAQCAtMjY3LDcgKzI2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gR0xf
S0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QTEVUSU9OX1NUQVRVU19LSFIgPSAweDkxQjE7CiAKLSAgICAvLyBXZWJHTCBmdW5jdGlv
bnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisgICAgLy8gR0xf
QU5HTEVfcmVxdWVzdF9leHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7CisKKyAgICAvLyBXZWJHTCBmdW5j
dGlvbnMuCiAKICAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0
aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCmluZGV4IGFlMGYwN2MyZGU0YjUwMzc3MTkzYmI1ZjdiOWEwNGQ5Y2FmMjhlODUuLjk1MDNi
NGE3ZTIwN2RkYTZjZmI3YjI2M2FjOWYzMjE4MWVhZTRiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTI3
LDExICsyNywxMyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCiAjaWYg
RU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9y
bWF0Q29udmVydGVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpA
QCAtNDAzLDYgKzQwNSwxNSBAQCBzdGF0aWMgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZURhdGEsIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiByZXN1
bHQ7CisgICAgaWYgKGhvc3RXaW5kb3cpCisgICAgICAgIHJlc3VsdCA9IGhvc3RXaW5kb3ctPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXN1bHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMs
IGhvc3RXaW5kb3cpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIEdyYXBoaWNzQ29udGV4dEdM
OjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIERl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBHcmFwaGljc0NvbnRleHRHTCopCiAgICAgOiBtX2F0dHJz
KGF0dHJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggNTk2MzRlOTFkNzAwMDg4ZThhZjk2ZDg3MmRhMTQ5YmRiN2Yz
MTJiYy4uMjIzYTVjOWJmMTY5N2YyNWYxMTJkYmNjMTg2ZjgxOWI3Y2UxZGU0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
CkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMQ1Y7CiAjZW5kaWYKIAorCisvLyBCYXNlIGNsYXNzIGZvciBncmFwaGljcyBjb250ZXh0IGZv
ciBpbXBsZW1lbnRpbmcgV2ViR0wgcmVuZGVyaW5nIG1vZGVsLgogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0wgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgog
ICAgIC8vIFdlYkdMIDEgY29uc3RhbnRzLgpAQCAtOTA5LDE0ICs5MTEsMTcgQEAgcHVibGljOgog
ICAgICAgICBHQ0dMaW50IHNpemU7CiAgICAgfTsKIAorICAgIC8vIENyZWF0ZXMgYSBHcmFwaGlj
c0NvbnRleHRHTCBpbnN0YW5jZSB0byByZW5kZXIgaW50byBvZmZzY3JlZW4gZGVzdGluYXRpb24g
aW4gY29udGV4dCBvZiBIb3N0V2luZG93LgorICAgIC8vIEhvc3RXaW5kb3cgbWlnaHQgYWZmZWN0
IHRoZSBkZWNpc2lvbiB3aGljaCBiYWNrZW5kIGlzIHRvIGJlIHVzZWQuCisgICAgc3RhdGljIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYsIEhvc3RXaW5kb3cqKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcywgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVu
LCBHcmFwaGljc0NvbnRleHRHTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHZpcnR1
YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQo
Q2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVt
b3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0K
IAotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1
bmRlcnN0YW5kcy4KLQorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQg
YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CkBAIC0xMzk1
LDcgKzE0MDAsNiBAQCBpbmxpbmUgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0SW50ZXJu
YWxmb3JtYXRpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaQogICAgIHJldHVybiB2YWx1ZVsw
XTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCAyMTZi
ZDM2NjhmMTA3YTg3OTE0ZGU0ZjYwYmJlNTI2MzExNWRmZmY4Li4zYjA2NGMzZTc2OGVjYzRiZjAy
Yjc2MjVhNmYxZWRiY2M4MDg3NGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC00NCwxNSArNDYsMTcgQEAgdHlwZWRlZiB1bnNpZ25lZCBHQ0dMdWludDsK
IHR5cGVkZWYgZmxvYXQgR0NHTGZsb2F0OwogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQ0dMaGFs
ZmZsb2F0OwogdHlwZWRlZiBmbG9hdCBHQ0dMY2xhbXBmOwotdHlwZWRlZiBpbnRwdHJfdCBHQ0dM
aW50cHRyOwotdHlwZWRlZiBpbnRwdHJfdCBHQ0dMc2l6ZWlwdHI7CiB0eXBlZGVmIGNoYXIgR0NH
TGNoYXI7Ci10eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBHQ0dMdWludDY0OwogdHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdDR0xzeW5jOwog
dHlwZWRlZiB2b2lkIEdDR0x2b2lkOwotdHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKIAor
Ly8gVGhlc2UgR0NHTCB0eXBlcyBkbyBub3Qgc3RyaWN0bHkgbWF0Y2ggdGhlIEdMIHR5cGVzIGFz
IGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAorLy8gaGVhZGVyIGZpbGUgZm9yIGFsbCBwbGF0Zm9y
bXMuCit0eXBlZGVmIGludHB0cl90IEdDR0xpbnRwdHI7Cit0eXBlZGVmIGludHB0cl90IEdDR0xz
aXplaXB0cjsKK3R5cGVkZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7Cit0eXBlZGVmIGxvbmcgbG9u
ZyBHQ0dMaW50NjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwogCiB0
eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKQEAgLTYwLDEzICs2NCwxNyBAQCB0
eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiB0eXBlZGVmIHVuc2lnbmVkIEdMdWlu
dDsKICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKT4KK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGdj
R0xTcGFuRHluYW1pY0V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBnY0dMU3BhbkR5bmFtaWNF
eHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0
ZW50Pgogc3RydWN0IEdDR0xTcGFuIHsKLSAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSkK
KyAgICBleHBsaWNpdCBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90IHNpemUgPSBFeHRlbnQpCiAg
ICAgICAgIDogZGF0YShhcnJheSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoc2l6ZSwgc2l6ZSA9PSBFeHRlbnQpOworICAgIH0KICAgICBHQ0dMU3BhbihUICgmYXJyYXkp
W0V4dGVudF0pCiAgICAgICAgIDogZGF0YShhcnJheSkKICAgICB7IH0KQEAgLTc0LDYgKzgyLDEy
IEBAIHN0cnVjdCBHQ0dMU3BhbiB7CiAgICAgR0NHTFNwYW4oY29uc3QgR0NHTFNwYW48VSwgRXh0
ZW50PiYgb3RoZXIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilb
XSwgVCgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKICAgICAgICAgOiBkYXRhKG90
aGVyLmRhdGEpCiAgICAgeyB9CisgICAgR0NHTFNwYW4oc3RkOjphcnJheTxULCBFeHRlbnQ+JiBh
cnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICB7IH0KKyAgICBHQ0dMU3Bh
bihjb25zdCBzdGQ6OmFycmF5PFQsIEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJy
YXkuZGF0YSgpKQorICAgIHsgfQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgUkVMRUFT
RV9BU1NFUlQoZGF0YSAmJiBpIDwgYnVmU2l6ZSk7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgVCYg
b3BlcmF0b3IqKCkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGJ1ZlNpemUpOyByZXR1cm4gKmRh
dGE7IH0KICAgICBUKiBkYXRhOwpAQCAtODEsNyArOTUsNyBAQCBzdHJ1Y3QgR0NHTFNwYW4gewog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBHQ0dMU3BhbjxULCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpPiB7CitzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5E
eW5hbWljRXh0ZW50PiB7CiAgICAgR0NHTFNwYW4oVCogYXJyYXksIHNpemVfdCBidWZTaXplXykK
ICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgICAgICAsIGJ1ZlNpemUoYnVmU2l6ZV8pCkBAIC0x
MjMsNiArMTM3LDExIEBAIHN0cnVjdCBHQ0dMU3BhbjxHQ0dMdm9pZD4gewogICAgICAgICA6IGRh
dGEob3RoZXIuZGF0YSkKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2Yo
VSkpCiAgICAgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkp
CisgICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCisgICAgICAgICwgYnVmU2l6ZShhcnJheS5z
aXplKCkgKiBzaXplb2YoVSkpCisgICAgeyB9CiAgICAgR0NHTHZvaWQqIGRhdGE7CiAgICAgY29u
c3Qgc2l6ZV90IGJ1ZlNpemU7CiB9OwpAQCAtMTU0LDggKzE3MywxMSBAQCBzdHJ1Y3QgR0NHTFNw
YW48Y29uc3QgR0NHTHZvaWQ+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NH
TFNwYW4oVCAoJilbTl0pIC0+IEdDR0xTcGFuPFQsIE4+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotR0NHTFNwYW4oV1RGOjpWZWN0b3I8VD4mKSAtPiBHQ0dMU3BhbjxUPjsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBOPgorR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xT
cGFuPFQsIE4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CitHQ0dMU3BhbihXVEY6OlZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxU
PjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBk
YXRhLCBzaXplX3QgY291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjBmN2E5NDdlZmNiYjM3MTU2YzA5OGUwYjVlZTMzYzNiNjJiODQ5Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChh
dHRycykKK3sKKyAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKK30KKworUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpID0g
ZGVmYXVsdDsKKworRXh0ZW5zaW9uc0dMJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVm
ZXJlbmNlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwb3dlclByZWZlcmVuY2VV
c2VkRm9yQ3JlYXRpb24oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNH
TEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCku
aXNXZWJHTDI7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1h
cmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRy
YWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQorICAgICAgICBub3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21w
b3NpdGVkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CisgICAgYXV0byBhdHRy
cyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdpbmdC
dWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJzLmRlcHRoKQorICAgICAgICAg
ICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZF
Ul9CSVQ7CisgICAgICAgIGlmIChhdHRycy5zdGVuY2lsKQorICAgICAgICAgICAgbV9idWZmZXJz
VG9BdXRvQ2xlYXIgfD0gR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAg
ICB9CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKKyAg
ICAgICAgY2xpZW50LT5kaWRDb21wb3NpdGUoKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sYXllckNvbXBvc2l0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQgYnVmZmVycykKK3sKKyAg
ICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCkucHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgICAg
ICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IGJ1ZmZlcnM7Cit9CisKK0dDR0xiaXRmaWVsZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xlYXI7Cit9CisKK2Jvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyhJbWFnZUJ1ZmZlciopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQor
eworICAgIC8vIFJlZGVjbGFyZWQgZm9yIGV4cG9ydCByZWFzb25zLgorICAgIC8vIEZJWE1FOiBU
aGUgd2hvbGUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgR3JhcGhpY3NDb250ZXh0
R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOworfQorCitib29sIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgp
OworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9l
bmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBlbnN1cmVFeHRlbnNp
b25FbmFibGVkKG5hbWUpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsK
KyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5h
YmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5h
YmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKK3sKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAg
ICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGZvciAoYXV0byYg
ZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworfQorCisjaWYgIVBMQVRGT1JN
KENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1J
bml0aWFsaXplKCkKK3sKK30KKworUGxhdGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRy
OworfQorI2VuZGlmCisjaWYgIVVTRShBTkdMRSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwg
R0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHZvaWQqKQorewor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWZ2
RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCopCit7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtaXZFWFQoR0NH
THVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopCit7Cit9CisKK2Jvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzTlZJRElBKCkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzQU1EKCkK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OmlzSW50ZWwoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNJbWFnaW5hdGlvbigpCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnZlbmRvcigpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6cmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6cmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisjZW5kaWYKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2YWFmNmM2YTBmNjJmZjI4MmU1YjhkMjAyYTEyOTRl
MWRlODU3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTAsMCArMSwxMjQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
KworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgUExBVEZPUk0oQ09DT0EpCitjbGFzcyBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKKyNlbmRpZgorCisvLyBBIGJhc2UgY2xh
c3MgZm9yIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHByb3h5IHNpZGUgaW1wbGVtZW50YXRpb24K
Ky8vIFRoaXMgaW1wbGVtZW50cyB0aGUgcGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29yZSBpbnRl
cm5hbCBmdW5jdGlvbmFsaXR5OgorLy8gLSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBtYW5hZ2Vt
ZW50LgorLy8gLSBDb21wb3NpdGluZyBzdXBwb3J0LgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0ws
IHB1YmxpYyBFeHRlbnNpb25zR0wgeworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIH5S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpIG92ZXJyaWRlOworCisgICAgLy8gT3Ro
ZXIgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHVzaW5nIEdyYXBo
aWNzQ29udGV4dEdMOjppc0VuYWJsZWQ7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsOworICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFs
OworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgR3JhcGhp
Y3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UgcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9u
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7
CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29t
cG9zaXRlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdD
R0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVh
cigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KEltYWdlQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmlu
YWw7CisgICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsKKworI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBHcmFwaGljc0NvbnRleHRH
TENWKiBhc0NWKCkgZmluYWw7CisjZW5kaWYKKyAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVy
cmlkZXMuCisgICAgdXNpbmcgRXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7CisgICAgYm9vbCBzdXBw
b3J0cyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3Qg
U3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7
CisKKyNpZiAhVVNFKEFOR0xFKQorICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgc3VwcG9zZWQgdG8g
YmUgcmVtb3ZlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
ODk2LgorICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCopIGZp
bmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNp
emVpLCBHQ0dMZmxvYXQqKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVp
bnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopIGZpbmFsOworICAgIGJvb2wgaXNOVklE
SUEoKSBmaW5hbDsKKyAgICBib29sIGlzQU1EKCkgZmluYWw7CisgICAgYm9vbCBpc0ludGVsKCkg
ZmluYWw7CisgICAgYm9vbCBpc0ltYWdpbmF0aW9uKCkgZmluYWw7CisgICAgU3RyaW5nIHZlbmRv
cigpIGZpbmFsOworICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBm
aW5hbDsKKyAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpIGZp
bmFsOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3Ry
aW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5z
aW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBw
bGF0Zm9ybVN3YXBDaGFpbigpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemUoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8V2ViR0xM
YXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCisKKyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRp
bEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9u
czsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBI
YXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKKworICAgIC8vIEZJWE1FOiBEcmF3
aW5nIGJ1ZmZlciBjbGVhciB0cmFja2luZyBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIGNsaWVudC4K
KyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CisgICAgR0NHTGJpdGZpZWxkIG1f
YnVmZmVyc1RvQXV0b0NsZWFyID0geyAwIH07Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45M2NlNDczMjE2MjhmMWY2MDcyNDIxYTc2YmM2MGNlMWJjNTNkYWIzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
IgorCisjaWYgRU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6fkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCkgPSBkZWZhdWx0OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDVlNDE2OGUzMWJlYjhmMmJiNzc0Y2Y3ZGUxZTk1ZjhkMGI5OTYxOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVk
ZSAiSU9TdXJmYWNlLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKy8vIEFuIGludGVyZmFjZSBmb3IgaW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2Vt
ZW50IG9mIGEgMy1idWZmZXJpbmcgc3dhcAorLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KKy8vIFRo
ZSBpbXBsZW1lbnRvciB3aWxsIG93biB0aGUgSU9TdXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5
LgorLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNoIG1ldGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFu
ZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRhCisvLyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBo
YXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIsIHRoZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJp
bHkKKy8vIGJlIGFibGUgdG8gb2J0YWluIHRoZSBJT1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4K
Ky8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRhZGF0YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5k
aW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3YXkKKy8vIHdoZW4gdGhlIGRpc3BsYXkgY2xpZW50
IGlzIGRvbmUgd2l0aCB0aGUgSU9TdXJmYWNlIGRpc3BsYXksIHRoZSBjbGllbnQgY2FuIGNvbnRp
bnVlIHVzaW5nCisvLyB0aGUgZXhpc3RpbmcgYmluZGluZyBvYnRhaW5lZCB0aHJvdWdoIHRoZSBi
dWZmZXIgcmVjeWNsZSBsb2dpYy4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbigpOworICAgIHN0cnVjdCBCdWZmZXIgeworICAgICAg
ICAvLyBUaGUgYWN0dWFsIGNvbnRlbnRzLiBDbGllbnQgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAg
b2YgdGhlIElPU3VyZmFjZS4KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3Vy
ZmFjZT4gc3VyZmFjZTsKKyAgICAgICAgLy8gUHJvZHVjZXIgc3BlY2lmaWMgbWV0YWRhdGEgaGFu
ZGxlIChzdWNoIGFzIEVHTFN1cmZhY2UpLiBDbGllbnQgZG9lcyBub3QgdHJhbnNmZXIgdGhlIG93
bmVyc2hpcC4KKyAgICAgICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9OworICAgIH07CisgICAg
Ly8gUmV0dXJucyB0aGUgbWV0YWRhdGEgaGFuZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRlbnRzIGJ1
ZmZlci4KKyAgICAvLyBDbGllbnQgbWF5IHJlY2lldmUgYmFjayBhbHNvIHRoZSBvd25lcnNoaXAg
b2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2UgaXQgaXMgYXZhaWxhYmxlIGF0IHRoZQor
ICAgIC8vIHRpbWUgb2YgdGhlIGNhbGwuCisgICAgLy8gUmV0dXJucyBlaXRoZXI6CisgICAgLy8g
LSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRlZC4KKyAgICAvLyAt
IEJ1ZmZlciB3aXRoIGVtcHR5IHN1cmZhY2UgYW5kIG5vbi1lbXB0eSBtZXRhZGF0YSBoYW5kbGUg
aWYgdGhlIHJlY3ljbGVkIGJ1ZmZlciB3YXMgYXZhaWxhYmxlCisgICAgLy8gICBidXQgdGhlIHN1
cmZhY2UgaXMgc3RpbGwgaW4gdXNlLgorICAgIC8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgorICAg
IHZpcnR1YWwgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSA9IDA7CisKKyAgICAvLyBQcmVwYXJlcyB0
aGUgdGFyZ2V0IGZvciBkaXNwbGF5IHdpdGggYSBjb250ZW50cyBidWZmZXIuCisgICAgdmlydHVh
bCB2b2lkIHByZXNlbnQoQnVmZmVyKSA9IDA7CisKKyAgICAvLyBEZXRhY2hlcyB0aGUgY2xpZW50
IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUu
CisgICAgLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVj
eWNsZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0
aGlzLgorICAgIHZpcnR1YWwgdm9pZCogZGV0YWNoQ2xpZW50KCkgPSAwOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDUz
NTgwZDIxZTk4ZmY2MjIwNGQwNWIyNGRhNzMxYmE1YjI1MDgwYzAuLmRjMTY1NGY1ODRjMDJiZWU5
ZWJhMTNiMGRiZjM1NThmMWQ1NDk4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJFeHRlbnNpb25zR0xB
TkdMRS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtODEsNyArODIsNyBAQCBzdGF0aWMgRUdMRGlzcGxheSBJ
bml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CiAgICAg
RUdMaW50IG1pbm9yVmVyc2lvbiA9IDA7CiAgICAgRUdMRGlzcGxheSBkaXNwbGF5OwotICAgIGJv
b2wgc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0ID0gIWlzSW5XZWJQ
cm9jZXNzKCk7CisgICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1
cHBvcnQgPSAhKGlzSW5XZWJQcm9jZXNzKCkgfHwgaXNJbkdQVVByb2Nlc3MoKSk7CiAgICAgaWYg
KHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCkgewogICAgICAgICAv
LyBGb3IgV0sxIHR5cGUgQVBJcyB3ZSBuZWVkIHRvIHNldCAidm9sYXRpbGUgcGxhdGZvcm0gY29u
dGV4dCIgZm9yIHNwZWNpZmljCiAgICAgICAgIC8vIEFQSXMsIHNpbmNlIGNsaWVudCBjb2RlIHdp
bGwgYmUgYWJsZSB0byBvdmVycmlkZSB0aGUgdGhyZWFkLWdsb2JhbCBjb250ZXh0CkBAIC0xMzQs
NyArMTM1LDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICBpZiAoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0
dHJzLCBob3N0V2luZG93LCBkZXN0aW5hdGlvbikpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TChhdHRycywgaG9zdFdpbmRvdywgbnVsbHB0ciwgbnVsbHB0cikpOwogCiAgICAgaWYgKCFjb250
ZXh0LT5tX2NvbnRleHRPYmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ3LDEzICsx
NDgsMTggQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKIFJlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCkKIHsKICAgICBhdXRvIGhvc3RXaW5kb3cgPSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5ob3N0V2luZG93Rm9y
Q29udGV4dCgmc2hhcmVkQ29udGV4dCk7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5l
dyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChzaGFyZWRDb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVz
KCksIGhvc3RXaW5kb3csIHNoYXJlZENvbnRleHQuZGVzdGluYXRpb24oKSwgJnNoYXJlZENvbnRl
eHQpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgJnNo
YXJlZENvbnRleHQsIG51bGxwdHIpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5wdHIoKSwgaG9zdFdpbmRv
dyk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAorUmVmPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzLCBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbiogc3dhcENoYWluKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBudWxscHRyLCBudWxscHRyLCBzd2FwQ2hhaW4p
KTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxk
IGJlIGp1c3QgZW5hYmxlZCAtIHNlZSA8cmRhcjovLzUzMDYyNzk0Pi4KIAogc3RhdGljIHZvaWQg
c2V0R1BVQnlSZWdpc3RyeUlEKENHTENvbnRleHRPYmogY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3Jt
YXRPYmogcGl4ZWxGb3JtYXRPYmosIElPUmVnaXN0cnlHUFVJRCBwcmVmZXJyZWRHUFVJRCkKQEAg
LTIwNCw4ICsyMTAsOCBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4
dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbAogCiAjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQogCi1HcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0
V2luZG93LCBHcmFwaGljc0NvbnRleHRHTDo6RGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250ZXh0KQotICAgIDogR3JhcGhpY3NDb250ZXh0
R0woYXR0cnMsIGRlc3RpbmF0aW9uLCBzaGFyZWRDb250ZXh0KQorR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IHNoYXJlZENvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2Fw
Q2hhaW4pCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRycywgRGVzdGluYXRpb246Ok9mZnNj
cmVlbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMuaXNXZWJH
TDI7CiAKQEAgLTMzMywxMyArMzM5LDE3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAg
dmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAgICAgYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAv
LyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKLSAgICAvLyBDcmVh
dGUgdGhlIFdlYkdMTGF5ZXIKKyAgICBpZiAoc3dhcENoYWluKQorICAgICAgICBtX3N3YXBDaGFp
biA9IHN3YXBDaGFpbjsKKyAgICBlbHNlIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKICAgICAgICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGlu
aXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOiFhdHRycy5hbHBoYV0pOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgW21fd2ViR0xMYXll
ciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKICNlbmRpZgogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKyAgICAgICAgbV9zd2FwQ2hhaW4gPSAmW21fd2ViR0xMYXllciBzd2FwQ2hhaW5d
OworICAgIH0KIAogICAgIC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdpbGwgYmUgdXNlZCBm
b3IgdGhlIGZyYW1lYnVmZmVyLgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1
ZmZlclRleHR1cmVUYXJnZXQoKTsKQEAgLTQwOCwxMyArNDE4LDEyIEBAIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAgICAgICBpZiAobV9wcmVz
ZXJ2ZURyYXdpbmdCdWZmZXJGQk8pCiAgICAgICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJz
KDEsICZtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZCTyk7CiAgICAgfQotICAgIGlmIChtX2Rpc3Bs
YXlCdWZmZXJQYnVmZmVyKQorICAgIGlmIChtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyKSB7CiAgICAg
ICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZm
ZXIpOwotICAgIGlmIChtX3dlYkdMTGF5ZXIpIHsKLSAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZl
ciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1ZmZlcl07CisgICAgICAgIGF1dG8gcmVjeWNsZWRC
dWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAgICAgICBpZiAocmVjeWNs
ZWRCdWZmZXIuaGFuZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxh
eU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxlKTsKLSAgICAgICAgYXV0byBjb250ZW50c0hhbmRs
ZSA9IFttX3dlYkdMTGF5ZXIgZGV0YWNoQ2xpZW50XTsKKyAgICAgICAgYXV0byBjb250ZW50c0hh
bmRsZSA9IG1fc3dhcENoYWluLT5kZXRhY2hDbGllbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRz
SGFuZGxlKQogICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgY29u
dGVudHNIYW5kbGUpOwogICAgIH0KQEAgLTU3NywxMSArNTg2LDE2IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgICAgIG1f
ZGlzcGxheUJ1ZmZlclBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAgICAgLy8gUmVz
ZXQgdGhlIGZ1dHVyZSByZWN5Y2xlZCBidWZmZXIgbm93LCBiZWNhdXNlIGl0IG1vc3QgbGlrZWx5
IHdpbGwgbm90IGJlIHJldXNhYmxlIGF0IHRoZSB0aW1lIGl0IHdpbGwgYmUgcmV1c2VkLgotICAg
IGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAg
IGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogICAg
IGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZSht
X2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7CiAgICAgcmVjeWNsZWRCdWZmZXIu
c3VyZmFjZS5yZXNldCgpOworICAgIHJldHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVy
QmFja2luZygpOworfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFu
ZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCit7CisgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6
c1JHQkNvbG9yU3BhY2VSZWYoKSk7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC02MzksNyArNjUzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
YWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkgY29uc3QKICAgICAvLyBmb3IgT3BlbkdMIHRvIGRlY2lk
ZSB3aGljaCBHUFUgaXMgY29ubmVjdGVkIHRvIGEgZGlzcGxheSAob25saW5lL29mZmxpbmUpLgog
ICAgIC8vIE9wZW5HTCB3aWxsIHRoZW4gY29uc2lkZXIgYWxsIEdQVXMsIG9yIHJlbmRlcmVycywg
YXMgb2ZmbGluZSwgd2hpY2ggbWVhbnMKICAgICAvLyBhbGwgb2ZmbGluZSByZW5kZXJlcnMgbmVl
ZCB0byBiZSBjb25zaWRlcmVkIHdoZW4gZmluZGluZyBhIHBpeGVsIGZvcm1hdC4KLSAgICAvLyBJ
biBXZWJLaXQgbGVnYWN5LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgV2luZG93U2VydmVyIGNvbm5l
Y3Rpb24sIGFuZAorICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwgYmUg
YSBXaW5kd1NlcnZlciBjb25uZWN0aW9uLCBhbmQKICAgICAvLyBtX2Rpc3BsYXlNYXNrIHdpbGwg
bm90IGJlIHNldCBpbiB0aGlzIGNhc2UuCiAgICAgaWYgKHByaW1hcnlPcGVuR0xEaXNwbGF5TWFz
aygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY4NSwxMCArNjk5LDEwIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAvLyBUaGUgSU9T
dXJmYWNlIHdpbGwgYmUgdXNlZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwgc28gZmx1
c2ggR0wgY29tbWFuZHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3ljbGVkQnVm
ZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICBhdXRvIHJlY3ljbGVkQnVm
ZmVyID0gbV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKIAogICAgIEVHTF9SZWxlYXNlVGV4
SW1hZ2UobV9kaXNwbGF5T2JqLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyLCBFR0xfQkFDS19CVUZG
RVIpOwotICAgIFttX3dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXlXaXRoQ29udGVudHM6IHtX
VEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyfV07
CisgICAgbV9zd2FwQ2hhaW4tPnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tp
bmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIH0pOwogICAgIG1fZGlzcGxheUJ1ZmZlclBidWZm
ZXIgPSBFR0xfTk9fU1VSRkFDRTsKIAogICAgIGJvb2wgaGFzTmV3QmFja2luZyA9IGZhbHNlOwpA
QCAtNzAyLDcgKzcxNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVG
b3JEaXNwbGF5KCkKIAogICAgIC8vIEVycm9yIHdpbGwgYmUgaGFuZGxlZCBieSBuZXh0IGNhbGwg
dG8gbWFrZUNvbnRleHRDdXJyZW50KCkgd2hpY2ggd2lsbCBub3RpY2UgbGFjayBvZiBkaXNwbGF5
IGJ1ZmZlci4KICAgICBpZiAoIWhhc05ld0JhY2tpbmcpCi0gICAgICAgIHJlc2hhcGVEaXNwbGF5
QnVmZmVyQmFja2luZygpOworICAgICAgICBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZygpOwogCiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGM0MTQwMTViN2IwZjM0YmIyOGJlMzQ1NTA5Yzc0MjllMzFkYWEzYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCisjaW1wb3J0ICJXZWJH
TExheWVyLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBs
YXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVz
KCk7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIG1fd2ViR0xMYXll
ciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86
YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVy
Il07CisjZW5kaWYKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKworUGxhdGZv
cm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7Cit9CisKKyNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCitHcmFwaGljc0NvbnRleHRHTENWKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6YXNDVigpCit7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisjZW5kaWYKKworR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVN3YXBDaGFpbigpCit7Cisg
ICAgcmV0dXJuIFttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKK30KKworfQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgK
aW5kZXggMTRiMDFlNzA1ZjIwNTMwMWM3Yzk3Y2Y2NmU3MWEwOGJiZjQxZTcwNS4uN2ZlODhhMmZm
NGNlMGY1NTlkNTlkYzFjZDk1MmEzYTdlYTg4MDk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaApAQCAtMjMsNTIgKzIzLDIy
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIklPU3VyZmFjZS5oIgorI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8d3RmL05ha2Vk
UHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBXZWJHTExheWVyQnVmZmVyIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOyAvLyBUaGUg
YWN0dWFsIGNvbnRlbnRzLgotICAgIHZvaWQqIGhhbmRsZSB7IG51bGxwdHIgfTsgLy8gQ2xpZW50
IHNwZWNpZmljIG1ldGFkYXRhIGhhbmRsZSAoc3VjaCBhcyBFR0xTdXJmYWNlKS4KLX07Ci19Ci0K
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKIC8vIEEgbGF5ZXIgY2xhc3Mg
aW1wbGVtZW50aW5nIGZyb250IGJ1ZmZlciBtYW5hZ2VtZW50IG9mIGEgMy1idWZmZXJpbmcgc3dh
cAogLy8gY2hhaW4gb2YgSU9TdXJmYWNlcy4KLS8vIFRoZSBsYXllciB3aWxsIG93biB0aGUgSU9T
dXJmYWNlcyBpdCB1c2VzIGZvciBkaXNwbGF5LgotLy8gVGhlIGNsaWVudCBtYXkgYXR0YWNoIG1l
dGFkYXRhIHRvIGVhY2ggSU9TdXJmYWNlIGFuZCB3aWxsIHJlY2VpdmUgdGhlIG1ldGFkYXRhCi0v
LyBiYWNrIG9uY2UgdGhlIElPU3VyZmFjZSBoYXMgYmVlbiBkaXNwbGF5ZWQuIEhvd2V2ZXIsIHRo
ZSBjbGllbnQgbWF5IG5vdCBuZWNjZXNzYXJpbHkKLS8vIGJlIGFibGUgdG8gb2J0YWluIHRoZSBJ
T1N1cmZhY2UgaXRzZWxmIGZvciByZXVzZS4KLS8vIEV4YW1wbGUgdXNlIG9mIHRoZSBtZXRhZGF0
YSBpcyB0byB1c2UgRUdMU3VyZmFjZSBiaW5kaW5nIGFzIHRoZSBtZXRhZGF0YS4gVGhpcyB3YXkK
LS8vIHdoZW4gdGhlIFdlYkdMTGF5ZXIgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxh
eSwgdGhlIGNsaWVudCBjYW4gY29udGludWUgdXNpbmcKLS8vIHRoZSBleGlzdGluZyBiaW5kaW5n
IG9idGFpbmVkIHRocm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgogQGludGVyZmFjZSBX
ZWJHTExheWVyIDogQ0FMYXllcgogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZs
b2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWU7
CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dDb2xv
clNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKLS8vIFJldHVybnMgdGhlIG1ldGFkYXRhIGhhbmRsZSBv
ZiBsYXN0IHVudXNlZCBjb250ZW50cyBidWZmZXIuCi0vLyBDbGllbnQgbWF5IHJlY2lldmUgYmFj
ayBhbHNvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGNvbnRlbnRzIHN1cmZhY2UsIGluIGNhc2UgaXQg
aXMgYXZhaWxhYmxlIGF0IHRoZQotLy8gdGltZSBvZiB0aGUgY2FsbC4KLS8vIFJldHVybnMgZWl0
aGVyOgotLy8gLSBFbXB0eSBidWZmZXIgaWYgbm8gYnVmZmVyIGhhcyBiZWVuIHN1Ym1pdHRlZC4K
LS8vIC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFkYXRhIGhh
bmRsZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKLS8vICAgYnV0IHRoZSBz
dXJmYWNlIGlzIHN0aWxsIGluIHVzZS4KLS8vIC0gU3VyZmFjZSBhbmQgaGFuZGxlLgotLSAoV2Vi
Q29yZTo6V2ViR0xMYXllckJ1ZmZlcilyZWN5Y2xlQnVmZmVyOwotCi0vLyBQcmVwYXJlcyB0aGUg
bGF5ZXIgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCB0cmFu
c2ZlcnMgdGhlIG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIHN1cmZhY2UgaW4gdGhlIGBidWZm
ZXJgLgotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhDb250ZW50czooV2ViQ29yZTo6V2Vi
R0xMYXllckJ1ZmZlcilidWZmZXI7Ci0KLS8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVy
bnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KLS8vIFRoZSBp
ZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIgbXVz
dCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCi0vLyB0aGlzLgotLSAodm9pZCopZGV0
YWNoQ2xpZW50OworLSAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4mKSBzd2FwQ2hhaW47CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KaW5kZXggYzhmNGU3OWY3MzEyZWFhNmFi
MDQ0NjgwODNlYThkMGM4YmVmYTNiYy4uMzg1OTdlNGE4ZjYzM2E1ZWU1ZGI3NDkzMzAyMmRjMjM3
ZmU3ZTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR0xMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCkBAIC0zMiwxMyArMzIsMzkgQEAKICNpbXBvcnQgIkdyYXBoaWNz
TGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBv
cnQgPHd0Zi9PcHRpb25hbC5oPgorCitjbGFzcyBXZWJHTExheWVyU3dhcENoYWluIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBXZWJHTExheWVyU3dhcENoYWluKFdlYkdMTGF5ZXIqIGxheWVy
KSAgOiBtX2xheWVyKGxheWVyKSB7IH07CisgICAgfldlYkdMTGF5ZXJTd2FwQ2hhaW4oKSBvdmVy
cmlkZSA9IGRlZmF1bHQ7CisgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgb3ZlcnJpZGU7CisgICAg
QnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fc3Bh
cmVCdWZmZXIuc3VyZmFjZSkgeworICAgICAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFj
ZS0+aXNJblVzZSgpKQorICAgICAgICAgICAgICAgIG1fc3BhcmVCdWZmZXIuc3VyZmFjZS5yZXNl
dCgpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9zcGFyZUJ1ZmZlcik7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdm9pZCogZGV0YWNoQ2xpZW50KCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsK
KyAgICAgICAgdm9pZCogcmVzdWx0ID0gbV9kaXNwbGF5QnVmZmVyLmhhbmRsZTsKKyAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheVN1cmZhY2UoKSB7IHJldHVy
biBtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZS5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICBCdWZmZXIg
bV9kaXNwbGF5QnVmZmVyOworICAgIEJ1ZmZlciBtX3NwYXJlQnVmZmVyOworICAgIFdlYkdMTGF5
ZXIqIGNvbnN0IG1fbGF5ZXI7Cit9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXllciB7Ci0g
ICAgV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlciBfY29udGVudHNCdWZmZXI7Ci0gICAgV2ViQ29y
ZTo6V2ViR0xMYXllckJ1ZmZlciBfc3BhcmVCdWZmZXI7Ci0KICAgICBCT09MIF9wcmVwYXJlZEZv
ckRpc3BsYXk7CisgICAgT3B0aW9uYWw8V2ViR0xMYXllclN3YXBDaGFpbj4gX3N3YXBDaGFpbjsK
IH0KIAogLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJh
dGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCkBAIC00Nyw2ICs3Myw3IEBA
CiAgICAgc2VsZi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7CiAgICAgc2VsZi5j
b250ZW50c09wYXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwogICAgIHNlbGYuY29udGVudHNTY2FsZSA9
IGRldmljZVBpeGVsUmF0aW87CisgICAgX3N3YXBDaGFpbi5lbXBsYWNlKHNlbGYpOwogICAgIHJl
dHVybiBzZWxmOwogfQogCkBAIC03MywzMCArMTAwLDIxIEBACiAgICAgVU5VU0VEX1BBUkFNKGNv
bG9yU3BhY2UpOwogICAgIHJldHVybiBudWxscHRyOwogfQotCi0tIChXZWJDb3JlOjpXZWJHTExh
eWVyQnVmZmVyKSByZWN5Y2xlQnVmZmVyCistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbgogewotICAgIGlmIChfc3BhcmVCdWZmZXIuc3Vy
ZmFjZSkgewotICAgICAgICBpZiAoX3NwYXJlQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKLSAg
ICAgICAgICAgIF9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiBX
VEZNb3ZlKF9zcGFyZUJ1ZmZlcik7Ci0gICAgfQotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJu
IF9zd2FwQ2hhaW4udmFsdWUoKTsKIH0KIAotLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheVdpdGhD
b250ZW50czooV2ViQ29yZTo6V2ViR0xMYXllckJ1ZmZlcikgYnVmZmVyCistICh2b2lkKXByZXBh
cmVGb3JEaXNwbGF5CiB7Ci0gICAgQVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAg
X3NwYXJlQnVmZmVyID0gV1RGTW92ZShfY29udGVudHNCdWZmZXIpOwotICAgIF9jb250ZW50c0J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXldOwogICAg
IF9wcmVwYXJlZEZvckRpc3BsYXkgPSBZRVM7CiB9CiAKIC0gKHZvaWQpZGlzcGxheQogewotICAg
IGlmIChfY29udGVudHNCdWZmZXIuc3VyZmFjZSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7Ci0g
ICAgICAgIHNlbGYuY29udGVudHMgPSBfY29udGVudHNCdWZmZXIuc3VyZmFjZS0+YXNMYXllckNv
bnRlbnRzKCk7CisgICAgaWYgKF9zd2FwQ2hhaW4tPmRpc3BsYXlTdXJmYWNlKCkgJiYgX3ByZXBh
cmVkRm9yRGlzcGxheSkgeworICAgICAgICBzZWxmLmNvbnRlbnRzID0gX3N3YXBDaGFpbi0+ZGlz
cGxheVN1cmZhY2UoKS0+YXNMYXllckNvbnRlbnRzKCk7CiAgICAgICAgIFtzZWxmIHJlbG9hZFZh
bHVlRm9yS2V5UGF0aDpAImNvbnRlbnRzIl07CiAgICAgfQogICAgIGF1dG8gbGF5ZXIgPSBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2
b2lkKilzZWxmKTsKQEAgLTEwNiwxMyArMTI0LDE0IEBACiAgICAgX3ByZXBhcmVkRm9yRGlzcGxh
eSA9IE5POwogfQogCi0tICh2b2lkKikgZGV0YWNoQ2xpZW50CitAZW5kCisKK3ZvaWQgV2ViR0xM
YXllclN3YXBDaGFpbjo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQogewotICAgIEFTU0VSVCghX3Nw
YXJlQnVmZmVyLnN1cmZhY2UpOwotICAgIHZvaWQqIHJlc3VsdCA9IF9jb250ZW50c0J1ZmZlci5o
YW5kbGU7Ci0gICAgX2NvbnRlbnRzQnVmZmVyLmhhbmRsZSA9IG51bGxwdHI7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7CisgICAgbV9zcGFy
ZUJ1ZmZlciA9IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlCdWZmZXIg
PSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgW21fbGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldOwogfQot
QGVuZAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaAppbmRleCAyNzA2ZTdiMzBhYjliMzdhMjEyNzhjNTE3ZWRiZGYxNTJiYzBmYTcwLi5m
NTI0ZGU5MmRjZDlhNTk4YjBmYmVmOGQzM2I5YzQ0MDliOGNkMWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNTgsNiArNTgsOSBAQAogI2lmIFBMQVRGT1JNKENPQ09B
KQogT0JKQ19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFTUyBXZWJHTExheWVyOworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW47Cit9
CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICNpZiBVU0UoTklDT1NJQSkKQEAgLTg2LDcg
Kzg5LDcgQEAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5h
bWVIYXNoOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTFByaXZhdGU7CiAKLWNsYXNz
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdM
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1
YmxpYyBHcmFwaGljc0NvbnRleHRHTAogewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMs
IEhvc3RXaW5kb3cqLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4pOwpAQCAt
OTQsNiArOTcsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMg
UmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wmIHNoYXJlZENvbnRleHQpOworICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IGNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qKTsKKwogICAgIENB
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0KCkpOyB9CiAgICAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5T2JqOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBwbGF0Zm9ybUNv
bmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9CkBAIC01MDMsNyArNTA4LDExIEBA
IHB1YmxpYzoKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBzaGFyZWRDb250
ZXh0ID0gbnVsbHB0ciwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qID0gbnVs
bHB0cik7CisjZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9m
ZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQgPSBudWxscHRy
KTsKKyNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkg
cG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBi
eSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1
YWxseSBjYWxsIE9wZW5HTC4KQEAgLTUzNCwxMCArNTQzLDEzIEBAIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgYm9vbCBhbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdDsKICAg
ICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpOworICAgIGJvb2wgYWxsb2NhdGVB
bmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVy
QmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVy
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4qIG1fc3dhcENoYWluIHsgbnVsbHB0ciB9OworICAgIC8vIFRPRE86
IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSB0aGUgY29udGV4dCBkcmF3cyB0byBhIGltYWdl
IGJ1ZmZlci4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgx
NzkgLgogICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CiAgICAgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHRHTCBtX2NvbnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgbV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKaW5kZXggYmUwODY1MTMyYmY0NTZlMzU1YmViMzFiNmRjNDY2M2JkMmQyNDNj
NS4uMmUwNjVhYzY2OWNhNWZlOWFlYzA4OWM2MTQ0MThjYzhkYWJlN2NkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwog
ICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIEdQVVByb2Nlc3Mv
R1BVUHJvY2VzcwogCisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTAogICAgIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogCiAg
ICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcgpAQCAtMjIy
LDYgKzIyMyw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKKyAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAyNjdjZGQyOTQzZTE0NmYwNWNjOGU3YzMxMDIyMzlk
YmY2YmUzYjU3Li4wMWY2MDVjOTNmNzk5OWU2ODBlMTg3NGM3MzA0MTNkYTIyOTRjYzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMCw2
ICsyMCw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvbW9kZWxzLnB5
CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFw
cGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMzUsNiAr
MTM2LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA2MGQ0NDMwMjZmMzZkNDkz
YWNiNjI3OWQ4ZjdhMGMzMWVhMmI0NjI5Li4xNDJmMzQ1YmI0YTQ0ZDZhZTBjZjFjYzNlNmIwM2Q0
MzI4ZThiYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKQEAgLTE3OCw2ICsxNzgsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCAzNThmNzRiYmQzMjUxNjRkMjk1NzYyMDEyN2U0YTYwMmQ5MmQ3YTU2Li5k
NzhjNWI3ZTI1MmY3ZmNhOTBhMjVmYzg1MjM0ZmQ2YzFmMDdhZWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0xNzEsNiArMTcxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJ
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciBc
CiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCisJV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlIFwKQEAgLTIyNyw2ICsyMjgsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlQ
bHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAogCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
IFwKKwlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMIFwKIAlHUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eSBcCiAJR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCiAJR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCAwYzI2MTY4NjU3YWE4YzQ3MzM5MTk5NGVlZjAyMzcyYzZjODkyN2JmLi40OGI3NGVh
ZTgwMWM2MjRkMTIxNzMxMDk0OTA4MGVkYmE2MzQwNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02NCw2
ICs2NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oPgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNpbmNsdWRl
ICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlcy5oIgpAQCAtMjk4LDYgKzMwMiwyMSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIEVOQUJMRShXRUJH
TCkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7Cisg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgfSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0gbV9yZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cit9CisjZW5kaWYKIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CiAgICAgZ3B1
UHJvY2VzcygpLm5vd1BsYXlpbmdNYW5hZ2VyKCkuY2xlYXJOb3dQbGF5aW5nSW5mb0NsaWVudCgq
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAppbmRleCBlMzNmNzM4MTNiZjYwMGU3YTkxYmE2OTI1MzExMjg4Y2Q3OWVh
YjAyLi5hMjhjOGZmNWY2YzA2NGJlZWIzYjg2YzZlYTU0YzNlNDdiNGFmOWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNs
dWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIuaCIKKwogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CkBAIC0zOSw2ICs0MCwxMSBAQAogI2luY2x1
ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgRU5B
QkxFKFdFQkdMKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmg+CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7CkBAIC01NSw2ICs2MSw3IEBA
IGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKIGNsYXNz
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDsK
IGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZp
Z3VyYXRpb247CkBAIC0xMjAsNiArMTI3LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVS
ZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJl
bGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAorI2lm
IEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworI2VuZGlmCisKICAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKTsKICAg
ICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24s
IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCkBAIC0xODEsNyArMTkzLDEwIEBAIHByaXZh
dGU6CiAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZE1hcDsKLQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB1c2luZyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOworI2VuZGlmCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFj
dG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA1MTk0ZmI0ZjYwODVkNjI0ZDU5ODNmNjI1MmMzNjVlYjMyNzFmMzQ0Li45
ZDU0ZTE2NDU5NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5YzhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2Vi
S2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cikKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChz
dHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdl
YktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikKKyAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisjZW5kaWYK
ICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxheWluZ0lu
Zm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1Bs
YXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgwNGQxZmE5OTk0ZDVmZmYzMTQzNjRkNTli
ZWY5NWViNDllYTk5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTAsMCArMSwxMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCisK
K25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4
dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQor
ICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKQoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9jb250ZXh0
LT5hZGRDbGllbnQoKnRoaXMpOworICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5n
ZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgIFN0cmluZyByZXF1
ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVF
eHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKK3sKKyAgICBpZiAo
YXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJl
Y2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKK30KKworR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAor
eworICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKK0lQ
Qzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3VpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OmRpZENvbXBvc2l0ZSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZv
cmNlQ29udGV4dExvc3QoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQoreworICAgIGlmICh3
aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0
KTsKKyAgICBlbHNlCisgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKK30KKworI2lmICFQTEFU
Rk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNw
bGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisjZW5kaWYK
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChT
dHJpbmcmJiBleHRlbnNpb24pCit7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5z
dXJlRW5hYmxlZChleHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIG1fY29udGV4dC0+bWFya0NvbnRl
eHRDaGFuZ2VkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RiMGNmNTE4YWJmOWJiMjVhYjMzNmRkZGUwMzk5
OTI1YWEwNWYzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCituYW1l
c3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEdQVSBw
cm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91
dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscworLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29u
dGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KKy8vIFRoZSBpbXBs
ZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMv
Z2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAg
OiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCisgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKworICAgIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsK
KworcHJvdGVjdGVkOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4pOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KKyAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7
CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsK
KworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBHcmFw
aGljc0NvbnRleHRHTDo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZENvbXBvc2l0ZSgp
IGZpbmFsOworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpIGZpbmFsOworICAgIHZvaWQgcmVj
eWNsZUNvbnRleHQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3Rp
ZmljYXRpb24oKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgorICAg
IHZvaWQgcmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyYmKTsKKyAgICB2b2lkIG5vdGlmeU1hcmtDb250
ZXh0Q2hhbmdlZCgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYm
KT4mJikgPSAwOworI2Vsc2UKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAorCisgICAgUmVmPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgV2Vha1B0cjxHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhMDM0NzI1ZjlhYTQyZjQyYmQzYzhh
MDBiMGFhMTgwOTBhNTliOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTAs
MCArMSwyOTUgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RS
ZWZDb3VudGVkIHsKKyAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+
IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNo
cm9ub3VzCisjZW5kaWYKKyAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4
dGVuc2lvbikKKyAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisKKyAgICB2b2lk
IFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3Io
dWludDMyX3QgZXJyb3IpCisgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEFjdGl2ZVRleHR1
cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB2b2lkIEF0dGFjaFNoYWRlcih1aW50MzJfdCBwcm9n
cmFtLCB1aW50MzJfdCBzaGFkZXIpCisgICAgdm9pZCBCaW5kQXR0cmliTG9jYXRpb24odWludDMy
X3QgYXJnMCwgdWludDMyX3QgaW5kZXgsIFN0cmluZyBuYW1lKQorICAgIHZvaWQgQmluZEJ1ZmZl
cih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kRnJhbWVidWZm
ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHZvaWQgQmluZFJlbmRlcmJ1
ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCaW5kVGV4dHVy
ZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBCbGVuZENvbG9yKGZs
b2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQorICAgIHZvaWQg
QmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgQmxlbmRFcXVhdGlvblNlcGFy
YXRlKHVpbnQzMl90IG1vZGVSR0IsIHVpbnQzMl90IG1vZGVBbHBoYSkKKyAgICB2b2lkIEJsZW5k
RnVuYyh1aW50MzJfdCBzZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHZvaWQgQmxlbmRG
dW5jU2VwYXJhdGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNy
Y0FscGhhLCB1aW50MzJfdCBkc3RBbHBoYSkKKyAgICB2b2lkIENoZWNrRnJhbWVidWZmZXJTdGF0
dXModWludDMyX3QgdGFyZ2V0KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBDbGVhcih1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgQ2xlYXJDb2xvcihmbG9h
dCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKKyAgICB2b2lkIENs
ZWFyRGVwdGgoZmxvYXQgZGVwdGgpCisgICAgdm9pZCBDbGVhclN0ZW5jaWwoaW50MzJfdCBzKQor
ICAgIHZvaWQgQ29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wg
YWxwaGEpCisgICAgdm9pZCBDb21waWxlU2hhZGVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBD
b3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgYm9yZGVyKQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlMkQodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9m
ZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQorICAgIHZvaWQgQ3JlYXRlQnVmZmVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgQ3JlYXRlRnJhbWVidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVQcm9ncmFtKCkgLT4gKHVpbnQzMl90
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlUmVuZGVyYnVmZmVyKCkg
LT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2hh
ZGVyKHVpbnQzMl90IGFyZzApIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIENyZWF0ZVRleHR1cmUoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgRGVsZXRl
QnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVGcmFtZWJ1ZmZlcih1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgRGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQg
RGVsZXRlUmVuZGVyYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVTaGFkZXIo
dWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZVRleHR1cmUodWludDMyX3QgYXJnMCkKKyAg
ICB2b2lkIERlcHRoRnVuYyh1aW50MzJfdCBmdW5jKQorICAgIHZvaWQgRGVwdGhNYXNrKGJvb2wg
ZmxhZykKKyAgICB2b2lkIERlcHRoUmFuZ2UoZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIpCisgICAg
dm9pZCBEZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lk
IERpc2FibGUodWludDMyX3QgY2FwKQorICAgIHZvaWQgRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRHJhd0FycmF5cyh1aW50MzJfdCBtb2RlLCBpbnQz
Ml90IGZpcnN0LCBpbnQzMl90IGNvdW50KQorICAgIHZvaWQgRHJhd0VsZW1lbnRzKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAg
ICB2b2lkIEVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSh1aW50MzJfdCBpbmRleCkKKyAgICB2b2lkIEZpbmlzaCgpCisgICAgdm9pZCBGbHVzaCgp
CisgICAgdm9pZCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHJlbmRlcmJ1ZmZlcnRhcmdldCwgdWludDMyX3QgYXJn
MykKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZTJEKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dGFyZ2V0LCB1aW50MzJfdCBhcmczLCBpbnQzMl90
IGxldmVsKQorICAgIHZvaWQgRnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBHZW5l
cmF0ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRBY3RpdmVBdHRyaWIodWlu
dDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgpIC0+IChib29sIHJldHVyblZhbHVlLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJ
bmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBdHRyaWJMb2NhdGlvbih1aW50MzJf
dCBhcmcwLCBTdHJpbmcgbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
cG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
U3RyaW5nKHVpbnQzMl90IG5hbWUpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkg
LT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0SW50ZWdlcnYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBH
ZXRJbnRlZ2VyNjQodWludDMyX3QgcG5hbWUpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0SW50ZWdlcjY0aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3Qg
aW5kZXgpIC0+IChpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
UHJvZ3JhbWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0Qm9vbGVhbnYodWludDMyX3QgcG5h
bWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCBwbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRQcm9n
cmFtSW5mb0xvZyh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQs
IHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVySW5mb0xvZyh1
aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZv
aWQgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHVpbnQzMl90IHNoYWRlclR5cGUsIHVpbnQzMl90
IHByZWNpc2lvblR5cGUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdl
LCBHQ0dMaW50IHByZWNpc2lvbikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNoYWRlclNvdXJj
ZSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgR2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lKSAt
PiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0
ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQzMl90IHByb2dyYW0s
IGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IHZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybWl2KHVp
bnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSkgLT4g
KElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBHZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2
NF90IHZhbHVlU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgR2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIFN0
cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUpIC0+
ICh1aW50NjRfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEhpbnQodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBtb2RlKQorICAgIHZvaWQgSXNCdWZmZXIodWludDMyX3QgYXJn
MCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc0VuYWJsZWQo
dWludDMyX3QgY2FwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IElzRnJhbWVidWZmZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBJc1Byb2dyYW0odWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1JlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcw
KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzU2hhZGVyKHVp
bnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SXNUZXh0dXJlKHVpbnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgTGluZVdpZHRoKGZsb2F0IGFyZzApCisgICAgdm9pZCBMaW5rUHJvZ3JhbSh1
aW50MzJfdCBhcmcwKQorICAgIHZvaWQgUGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUsIGludDMy
X3QgcGFyYW0pCisgICAgdm9pZCBQb2x5Z29uT2Zmc2V0KGZsb2F0IGZhY3RvciwgZmxvYXQgdW5p
dHMpCisgICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZv
aWQgU2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHZvaWQgU2Np
c3NvcihpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQp
CisgICAgdm9pZCBTaGFkZXJTb3VyY2UodWludDMyX3QgYXJnMCwgU3RyaW5nIGFyZzEpCisgICAg
dm9pZCBTdGVuY2lsRnVuYyh1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFz
aykKKyAgICB2b2lkIFN0ZW5jaWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3Qg
ZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFzayh1
aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE1hc2tTZXBhcmF0ZSh1aW50MzJfdCBmYWNl
LCB1aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbE9wKHVpbnQzMl90IGZhaWwsIHVpbnQz
Ml90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB2b2lkIFN0ZW5jaWxPcFNlcGFyYXRlKHVp
bnQzMl90IGZhY2UsIHVpbnQzMl90IGZhaWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFz
cykKKyAgICB2b2lkIFRleFBhcmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFt
ZSwgZmxvYXQgcGFyYW0pCisgICAgdm9pZCBUZXhQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgcG5hbWUsIGludDMyX3QgcGFyYW0pCisgICAgdm9pZCBVbmlmb3JtMWYoaW50MzJf
dCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB2b2lkIFVuaWZvcm0xZnYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0xaShpbnQz
Ml90IGxvY2F0aW9uLCBpbnQzMl90IHgpCisgICAgdm9pZCBVbmlmb3JtMWl2KGludDMyX3QgbG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm0y
ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZvaWQgVW5pZm9ybTJm
dihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZv
aWQgVW5pZm9ybTJpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5KQorICAg
IHZvaWQgVW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+IHYpCisgICAgdm9pZCBVbmlmb3JtM2YoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFVuaWZvcm0zZnYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zaShpbnQzMl90
IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHZvaWQgVW5p
Zm9ybTNpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHYp
CisgICAgdm9pZCBVbmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFVuaWZvcm00ZnYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdikKKyAgICB2b2lkIFVuaWZvcm00aShpbnQzMl90
IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisg
ICAgdm9pZCBVbmlmb3JtNGl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyZnYoaW50MzJfdCBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZv
aWQgVW5pZm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NGZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVzZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB2b2lk
IFZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgVmVydGV4QXR0cmliMWYo
dWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIxZnYodWludDMy
X3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+IHZhbHVlcykKKyAgICB2b2lk
IFZlcnRleEF0dHJpYjJmKHVpbnQzMl90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KQorICAgIHZv
aWQgVmVydGV4QXR0cmliMmZ2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0LCAyPiB2YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwg
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNmdih1aW50
MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4gdmFsdWVzKQorICAgIHZv
aWQgVmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHosIGZsb2F0IHcpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0ZnYodWludDMyX3QgaW5kZXgsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJp
YlBvaW50ZXIodWludDMyX3QgaW5kZXgsIGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgYm9v
bCBub3JtYWxpemVkLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQg
Vmlld3BvcnQoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0KQorICAgIHZvaWQgQnVmZmVyRGF0YTAodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBhcmcx
LCB1aW50MzJfdCB1c2FnZSkKKyAgICB2b2lkIEJ1ZmZlckRhdGExKHVpbnQzMl90IHRhcmdldCwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhLCB1aW50MzJfdCB1c2FnZSkKKyAgICB2
b2lkIEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIFJlYWRuUGl4ZWxzMChpbnQz
Ml90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90
IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3QgZGF0YVNpemUpIC0+IChJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZWFkblBpeGVs
czEoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lk
IFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRl
ciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9pZCBUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleFN1Yklt
YWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBp
bnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIENvbXByZXNz
ZWRUZXhJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3Jk
ZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEp
CisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZz
ZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQz
Ml90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lk
IERyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJf
dCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5j
ZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3Io
dWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhB
cnJheSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERl
bGV0ZVZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5KHVp
bnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
QmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBDb3B5QnVmZmVyU3ViRGF0
YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWludDY0X3QgcmVh
ZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBH
ZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRf
dCBkYXRhU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNy
Y1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90
IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50
MzJfdCBmaWx0ZXIpCisgICAgdm9pZCBGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHR1cmUsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgbGF5ZXIpCisgICAgdm9pZCBJbnZhbGlkYXRlRnJhbWVidWZmZXIodWludDMy
X3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBhdHRhY2htZW50cykKKyAg
ICB2b2lkIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBSZWFkQnVmZmVyKHVpbnQz
Ml90IHNyYykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1aW50MzJf
dCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTJEKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFRleFN0b3JhZ2UzRCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisgICAgdm9pZCBUZXhJbWFnZTNE
MCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJv
cmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3Jt
YXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1YkltYWdl
M0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQz
Ml90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiBwaXhlbHMpCisgICAgdm9pZCBUZXhTdWJJbWFnZTNEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB2b2lkIENvcHlUZXhTdWJJbWFnZTNEKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNl
dCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHZvaWQgQ29tcHJlc3NlZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJ
bWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50
MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgdm9p
ZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0
LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQor
ICAgIHZvaWQgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJf
dCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNl
dCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90
IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIEdl
dEZyYWdEYXRhTG9jYXRpb24odWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nIG5hbWUpIC0+IChpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybTF1aShpbnQzMl90
IGxvY2F0aW9uLCB1aW50MzJfdCB2MCkKKyAgICB2b2lkIFVuaWZvcm0ydWkoaW50MzJfdCBsb2Nh
dGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxKQorICAgIHZvaWQgVW5pZm9ybTN1aShpbnQz
Ml90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEsIHVpbnQzMl90IHYyKQorICAg
IHZvaWQgVW5pZm9ybTR1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3Qg
djEsIHVpbnQzMl90IHYyLCB1aW50MzJfdCB2MykKKyAgICB2b2lkIFVuaWZvcm0xdWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9p
ZCBVbmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9ybTN1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm00dWl2KGludDMy
X3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9p
ZCBVbmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M3gy
ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4Mng0ZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAg
dm9pZCBVbmlmb3JtTWF0cml4NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4
M3g0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4NHgzZnYoaW50MzJfdCBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IGRhdGEpCisg
ICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMyX3QgeCwgaW50MzJf
dCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aXYodWlu
dDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4gdmFsdWVzKQorICAg
IHZvaWQgVmVydGV4QXR0cmliSTR1aSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgeCwgdWludDMy
X3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0dWl2
KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PiB2YWx1ZXMp
CisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBz
aXplLCB1aW50MzJfdCB0eXBlLCBpbnQzMl90IHN0cmlkZSwgdWludDY0X3Qgb2Zmc2V0KQorICAg
IHZvaWQgRHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVp
bnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgRHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVm
cykKKyAgICB2b2lkIENsZWFyQnVmZmVyaXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdi
dWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xl
YXJCdWZmZXJ1aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZnYodWlu
dDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+IHZhbHVlcykKKyAgICB2b2lkIENsZWFyQnVmZmVyZmkodWludDMyX3QgYnVmZmVyLCBpbnQz
Ml90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisgICAgdm9pZCBD
cmVhdGVRdWVyeSgpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIERlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1ZXJ5KQorICAgIHZvaWQgSXNRdWVyeSh1aW50MzJf
dCBxdWVyeSkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCZWdp
blF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBFbmRRdWVy
eSh1aW50MzJfdCB0YXJnZXQpCisgICAgdm9pZCBHZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBHZXRRdWVyeU9iamVjdHVpKHVpbnQzMl90IHF1ZXJ5LCB1aW50MzJfdCBwbmFtZSkgLT4g
KHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlU2FtcGxl
cigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0
ZVNhbXBsZXIodWludDMyX3Qgc2FtcGxlcikKKyAgICB2b2lkIElzU2FtcGxlcih1aW50MzJfdCBz
YW1wbGVyKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRT
YW1wbGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgdm9pZCBTYW1wbGVy
UGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJh
bSkKKyAgICB2b2lkIFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90
IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJmKHVpbnQz
Ml90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoZmxvYXQgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1
aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBGZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJfdCBmbGFncykgLT4gKHVp
bnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgSXNTeW5jKHVpbnQ2NF90
IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRl
U3luYyh1aW50NjRfdCBhcmcwKQorICAgIHZvaWQgQ2xpZW50V2FpdFN5bmModWludDY0X3QgYXJn
MCwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IHRpbWVvdXQpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQz
Ml90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQpCisgICAgdm9pZCBHZXRTeW5jaSh1aW50NjRfdCBh
cmcwLCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQz
Ml90IGlkKQorICAgIHZvaWQgSXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVHJhbnNmb3JtRmVlZGJh
Y2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB2b2lkIEJlZ2luVHJhbnNmb3Jt
RmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZlTW9kZSkKKyAgICB2b2lkIEVuZFRyYW5zZm9ybUZl
ZWRiYWNrKCkKKyAgICB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJv
Z3JhbSwgVmVjdG9yPFN0cmluZz4gdmFyeWluZ3MsIHVpbnQzMl90IGJ1ZmZlck1vZGUpCisgICAg
dm9pZCBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMy
X3QgaW5kZXgpIC0+IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcy
KSBTeW5jaHJvbm91cworICAgIHZvaWQgUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9p
ZCBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgdm9pZCBCaW5kQnVmZmVyQmFzZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIpCisgICAgdm9pZCBC
aW5kQnVmZmVyUmFuZ2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
YnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisgICAgdm9pZCBHZXRVbmlm
b3JtSW5kaWNlcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB1bmlmb3JtTmFtZXMp
IC0+IChWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
R2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPHVpbnQzMl90PiB1bmlm
b3JtSW5kaWNlcywgdWludDMyX3QgcG5hbWUpIC0+IChWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmRleCh1aW50MzJfdCBw
cm9ncmFtLCBTdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJf
dCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCkgLT4gKFN0cmluZyByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFVuaWZvcm1CbG9ja0JpbmRpbmcodWludDMyX3Qg
cHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHVuaWZvcm1CbG9j
a0JpbmRpbmcpCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1aW50MzJfdCBwcm9n
cmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90
IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAtPiAoaW50MzJf
dCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xF
KGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3Jj
WTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3Qg
ZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIFJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1w
bGVzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgdm9pZCBDcmVhdGVWZXJ0ZXhBcnJheU9FUygpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIERlbGV0ZVZlcnRleEFycmF5T0VTKHVpbnQzMl90
IGFyZzApCisgICAgdm9pZCBJc1ZlcnRleEFycmF5T0VTKHVpbnQzMl90IGFyZzApIC0+IChib29s
IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmluZFZlcnRleEFycmF5T0VTKHVp
bnQzMl90IGFyZzApCisgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWlu
dDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IEluc2VydEV2ZW50TWFya2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUHVzaEdyb3VwTWFy
a2VyRVhUKFN0cmluZyBhcmcwKQorICAgIHZvaWQgUG9wR3JvdXBNYXJrZXJFWFQoKQorICAgIHZv
aWQgRHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKKyAg
ICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZp
cnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291bnQsIHVpbnQzMl90
IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCisgICAgdm9pZCBWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisg
ICAgdm9pZCBHZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAoSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCit9CisKKyNlbmRp
ZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdjNDBj
OTg1Y2I3ZDI3MjI4NjlhNWRmZjk2OTE5NDcwNzdhZjQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJp
Z2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSB7CisKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EgZmluYWwg
OiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1
bHQ7CisKKyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9p
ZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRS
aWdodCYmKT4mJikgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbiBvdmVycmlkZXMuCisgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBmaW5hbDsKKyAg
ICB2b2lkIHByZXNlbnQoQnVmZmVyKSBmaW5hbDsKKyAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBm
aW5hbDsKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46
OkJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7Cit9OworCit9CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSk7Cit9CisKK1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRl
bnRpZmllcikKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIGNvbm5l
Y3Rpb24sIGlkZW50aWZpZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQ
cm9jZXNzKGF0dHJpYnV0ZXMsIHRoaXMpKQoreworfQorCitHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3lj
bGVCdWZmZXIoKQoreworICAgIHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlc2VudChCdWZmZXIgYnVmZmVy
KQoreworICAgIEFTU0VSVCghbV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UpOworICAgIG1fZGlzcGxh
eUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKK30KKwordm9pZCogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6ZGV0YWNoQ2xpZW50KCkKK3sKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZSht
X2Rpc3BsYXlCdWZmZXIuaGFuZGxlLCBudWxscHRyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2Nv
bnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7CisgICAgTWFjaFNlbmRSaWdodCBzZW5kUmln
aHQ7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpCisgICAgICAgIHNlbmRSaWdodCA9IGRpc3BsYXlC
dWZmZXItPmNyZWF0ZVNlbmRSaWdodCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
c2VuZFJpZ2h0KSk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5l
cmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMDE2MDJhZjQ5M2Vi
NjdkZTNlNjJjZjBlNTBhYzBhMmI5OTI1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaApAQCAtMCwwICsxLDExODkgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMg
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBm
aWxlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCisg
ICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOworICAgIH0KKyAgICB2b2lkIHN5bnRo
ZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAgfQorICAgIHZvaWQgbW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
dm9pZCBhY3RpdmVUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CisgICAgfQorICAgIHZvaWQgYXR0YWNoU2hh
ZGVyKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgfQorICAgIHZvaWQg
YmluZEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGluZGV4LCBTdHJpbmcm
JiBuYW1lKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24oYXJn
MCwgaW5kZXgsIG5hbWUpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXIodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVy
KHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEZy
YW1lYnVmZmVyKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZl
cih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5k
VGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgYmxl
bmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRFcXVhdGlvbih1aW50MzJfdCBtb2RlKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KKyAgICB2
b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1aW50MzJfdCBtb2RlUkdCLCB1aW50MzJfdCBtb2Rl
QWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZSht
b2RlUkdCLCBtb2RlQWxwaGEpOworICAgIH0KKyAgICB2b2lkIGJsZW5kRnVuYyh1aW50MzJfdCBz
ZmFjdG9yLCB1aW50MzJfdCBkZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVu
ZEZ1bmMoc2ZhY3RvciwgZGZhY3Rvcik7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJh
dGUodWludDMyX3Qgc3JjUkdCLCB1aW50MzJfdCBkc3RSR0IsIHVpbnQzMl90IHNyY0FscGhhLCB1
aW50MzJfdCBkc3RBbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2Vw
YXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgfQorICAgIHZv
aWQgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjbGVhcih1aW50MzJfdCBtYXNr
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICB9CisgICAgdm9p
ZCBjbGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFs
cGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckRlcHRoKGZsb2F0IGRlcHRoKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsKKyAgICB9CisgICAgdm9p
ZCBjbGVhclN0ZW5jaWwoaW50MzJfdCBzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVh
clN0ZW5jaWwocyk7CisgICAgfQorICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdy
ZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNv
bG9yTWFzayhzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmVkKSwgc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGJsdWUpLCBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4oYWxwaGEpKTsKKyAgICB9CisgICAgdm9pZCBjb21waWxlU2hhZGVyKHVp
bnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoYXJn
MCk7CisgICAgfQorICAgIHZvaWQgY29weVRleEltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB4LCBpbnQzMl90IHks
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlcikKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisgICAgfQorICAgIHZvaWQgY29w
eVRleFN1YkltYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9y
bUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29u
dGV4dC0+Y3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVGcmFtZWJ1ZmZlcihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBs
YXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUHJvZ3JhbShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVSZW5kZXJidWZmZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTaGFk
ZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVy
KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgY3JlYXRlVGV4dHVyZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVU
ZXh0dXJlKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgdm9pZCBjdWxsRmFjZSh1aW50MzJfdCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jdWxsRmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVCdWZmZXIodWludDMy
X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGFyZzApOwor
ICAgIH0KKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzApCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2
b2lkIGRlbGV0ZVByb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+ZGVsZXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZm
ZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVy
YnVmZmVyKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNoYWRlcih1aW50MzJfdCBhcmcw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoYXJnMCk7CisgICAgfQor
ICAgIHZvaWQgZGVsZXRlVGV4dHVyZSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5kZWxldGVUZXh0dXJlKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlcHRoRnVuYyh1
aW50MzJfdCBmdW5jKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7
CisgICAgfQorICAgIHZvaWQgZGVwdGhNYXNrKGJvb2wgZmxhZykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGVwdGhNYXNrKHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihmbGFnKSk7CisgICAg
fQorICAgIHZvaWQgZGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgfQorICAgIHZv
aWQgZGV0YWNoU2hhZGVyKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihhcmcwLCBhcmcxKTsKKyAgICB9CisgICAgdm9p
ZCBkaXNhYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJs
ZShjYXApOworICAgIH0KKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1aW50MzJf
dCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBkcmF3QXJyYXlzKHVpbnQzMl90IG1vZGUsIGlu
dDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRy
YXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVu
dHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291
bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIGVuYWJsZSh1aW50MzJfdCBjYXApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJs
ZShjYXApOworICAgIH0KKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVpbnQzMl90
IGluZGV4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShpbmRleCk7CisgICAgfQorICAgIHZvaWQgZmluaXNoKCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZmluaXNoKCk7CisgICAgfQorICAgIHZvaWQgZmx1c2goKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5mbHVzaCgpOworICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVy
YnVmZmVydGFyZ2V0LCB1aW50MzJfdCBhcmczKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRh
cmdldCwgYXJnMyk7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQz
Ml90IGFyZzMsIGludDMyX3QgbGV2ZWwpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZl
bCk7CisgICAgfQorICAgIHZvaWQgZnJvbnRGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmZyb250RmFjZShtb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZW5lcmF0
ZU1pcG1hcCh1aW50MzJfdCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdlbmVy
YXRlTWlwbWFwKHRhcmdldCk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmliKHVpbnQz
Ml90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2ws
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgs
IGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShh
cmcyKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybSh1aW50MzJfdCBwcm9ncmFt
LCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIgeyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYXJnMik7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGFyZzIpKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRBdHRyaWJMb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0
QnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTdHJpbmco
dWludDMyX3QgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRGbG9hdHYodWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFsdWUoc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGbG9h
dHYocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHZhbHVlLmRhdGEoKSksIHZh
bHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdldEludGVnZXJ2KHVpbnQzMl90IHBuYW1l
LCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBW
ZWN0b3I8R0NHTGludCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAw
KTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0K
KyAgICB2b2lkIGdldEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xp
bnQ2NCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmdldEludGVnZXI2NChwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19j
YXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0
aSh1aW50MzJfdCBwbmFtZSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50NjQg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRJ
bnRlZ2VyNjRpKHBuYW1lLCBpbmRleCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PGludDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0UHJvZ3Jh
bWkodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0Qm9vbGVhbnYodWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJl
bmNlPGJvb2w+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxH
Q0dMYm9vbGVhbiwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+KHJlaW50ZXJwcmV0X2Nh
c3Q8Ym9vbCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IGdldEVycm9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGVudW0gcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFcnJvcigpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQs
IHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRQcm9ncmFtSW5mb0xv
Zyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKGFyZzAp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmko
dGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJpKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IHBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoYXJnMCwgcG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVySW5m
b0xvZyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlw
ZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3QsIDI+LCBpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIHN0ZDo6YXJyYXk8R0NHTGludCwgMj4gcmFuZ2UgeyB9OworICAgICAg
ICBHQ0dMaW50IHByZWNpc2lvbiA9IHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSwgcmFuZ2UsICZwcmVjaXNp
b24pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3QsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHJhbmdlLmRhdGEoKSksIHJhbmdlLnNp
emUoKSksIHByZWNpc2lvbik7CisgICAgfQorICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKHVpbnQz
Ml90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKGFyZzApOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZv
aWQgZ2V0VGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGZsb2F0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dM
aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1mdih1aW50MzJfdCBw
cm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2YWx1ZVNpemUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xmbG9hdCwgMTY+IHZhbHVlKHN0YXRpY19j
YXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9y
bWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2YWx1
ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlmb3JtaXYo
dWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHZhbHVl
KHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxp
bnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
Z2V0VW5pZm9ybXVpdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRf
dCB2YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdD
R0x1aW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAg
ICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbih1aW50MzJfdCBhcmcwLCBTdHJp
bmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2
b2lkIGdldFZlcnRleEF0dHJpYk9mZnNldCh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgR0NHTHNpemVpcHRyIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFt
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGhpbnQodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBtb2RlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7Cisg
ICAgfQorICAgIHZvaWQgaXNCdWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29s
ZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
aXNCdWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJv
b2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNFbmFibGVkKHVpbnQzMl90IGNh
cCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNFbmFibGVkKGNhcCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQg
aXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0ZyYW1lYnVm
ZmVyKGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihy
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGlzUHJvZ3JhbSh1aW50MzJfdCBhcmcwLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5pc1Byb2dyYW0oYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNS
ZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNSZW5kZXJidWZm
ZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJl
dHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNTaGFkZXIodWludDMyX3QgYXJnMCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1
ZSA9IG1fY29udGV4dC0+aXNTaGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNUZXh0
dXJlKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVGV4dHVyZShhcmcwKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsK
KyAgICB9CisgICAgdm9pZCBsaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+bGluZVdpZHRoKGFyZzApOworICAgIH0KKyAgICB2b2lkIGxpbmtQcm9ncmFtKHVp
bnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKGFyZzAp
OworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmVpKHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBh
cmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0p
OworICAgIH0KKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9yLCBmbG9hdCB1bml0
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRz
KTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNhbXBsZUNvdmVy
YWdlKGZsb2F0IHZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
c2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihpbnZlcnQpKTsK
KyAgICB9CisgICAgdm9pZCBzY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2Npc3Nvcih4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzaGFkZXJTb3VyY2UodWludDMy
X3QgYXJnMCwgU3RyaW5nJiYgYXJnMSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2hhZGVy
U291cmNlKGFyZzAsIGFyZzEpOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVpbnQzMl90
IGZ1bmMsIGludDMyX3QgcmVmLCB1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5j
aWxGdW5jU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZnVuYywgaW50MzJfdCByZWYs
IHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jU2Vw
YXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFz
ayh1aW50MzJfdCBtYXNrKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsTWFzayht
YXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVpbnQzMl90IGZhY2Us
IHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2Vw
YXJhdGUoZmFjZSwgbWFzayk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbE9wKHVpbnQzMl90IGZh
aWwsIHVpbnQzMl90IHpmYWlsLCB1aW50MzJfdCB6cGFzcykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+c3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAgIHZvaWQgc3Rl
bmNpbE9wU2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZh
aWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BT
ZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKyAgICB2b2lkIHRleFBh
cmFtZXRlcmYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFy
YW0pOworICAgIH0KKyAgICB2b2lkIHRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50
MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTFmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0xZihsb2NhdGlvbiwgeCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTFmdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCB1bmlmb3JtMWkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0xaXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PiYmIHYpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24s
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSks
IHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24s
IGZsb2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihs
b2NhdGlvbiwgeCwgeSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJmdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0
PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHkpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTJpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2Nh
dGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0
YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtM2YoaW50MzJfdCBsb2Nh
dGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
M2Z2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgs
IGludDMyX3QgeSwgaW50MzJfdCB6KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
M2kobG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zaXYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTRmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00Zihsb2Nh
dGlvbiwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTRmdihpbnQzMl90IGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHYpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9j
YXN0PGNvbnN0IEdDR0xmbG9hdCo+KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtNGkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNGko
bG9jYXRpb24sIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aXYoaW50MzJf
dCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHYpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24sIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2LmRhdGEoKSksIHYuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xm
bG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXgzZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bv
c2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1
ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwg
dmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcw
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKGFyZzApOworICAgIH0KKyAg
ICB2b2lkIHZhbGlkYXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT52YWxpZGF0ZVByb2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0
cmliMWYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIx
ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+JiYgdmFsdWVz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIG1ha2VH
Q0dMU3BhbjwxPihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRh
KCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZs
b2F0IHgsIGZsb2F0IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJm
KGluZGV4LCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodWludDMyX3Qg
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+JiYgdmFsdWVzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwyPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliM2YodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHopCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGlu
ZGV4LCB4LCB5LCB6KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodWludDMyX3Qg
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+JiYgdmFsdWVzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIG1ha2VHQ0dMU3BhbjwzPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRhKCkpKSk7CisgICAg
fQorICAgIHZvaWQgdmVydGV4QXR0cmliNGYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHosIGZsb2F0IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0
dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0
ZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+JiYgdmFsdWVz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIG1ha2VH
Q0dMU3Bhbjw0PihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5kYXRh
KCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRl
eCwgaW50MzJfdCBzaXplLCB1aW50MzJfdCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qg
c3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRl
eEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
Pihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCB2aWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0
KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGJ1ZmZlckRhdGEwKHVpbnQz
Ml90IHRhcmdldCwgdWludDY0X3QgYXJnMSwgdWludDMyX3QgdXNhZ2UpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+
KGFyZzEpLCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyRGF0YTEodWludDMyX3QgdGFy
Z2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSwgdWludDMyX3QgdXNhZ2Up
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5z
aXplKCkpLCB1c2FnZSk7CisgICAgfQorICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQ2NF90IG9mZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRh
dGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0
aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCByZWFkblBpeGVsczAoaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90
IGRhdGFTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xj
aGFyLCA0PiBkYXRhKHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAg
bV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGRhdGEpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCByZWFkblBpeGVsczEoaW50MzJfdCB4LCBpbnQzMl90IHks
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVhZG5Q
aXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dM
aW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5z
aXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlw
ZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQz
Ml90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4
ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFn
ZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50
MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQp
KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0LCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBz
dGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
aW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1h
Z2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAgdm9p
ZCBkcmF3QXJyYXlzSW5zdGFuY2VkKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMy
X3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
cmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICB9
CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBj
b3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNv
dW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOwor
ICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IodWludDMyX3QgaW5kZXgsIHVpbnQz
Ml90IGRpdmlzb3IpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlz
b3IoaW5kZXgsIGRpdmlzb3IpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVZlcnRleEFycmF5KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0
ZXhBcnJheSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVW
ZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBpc1ZlcnRleEFycmF5KHVpbnQzMl90
IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
cmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJnMCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIHZvaWQgYmluZFZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJpbmRWZXJ0ZXhBcnJheShhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5QnVm
ZmVyU3ViRGF0YSh1aW50MzJfdCByZWFkVGFyZ2V0LCB1aW50MzJfdCB3cml0ZVRhcmdldCwgdWlu
dDY0X3QgcmVhZE9mZnNldCwgdWludDY0X3Qgd3JpdGVPZmZzZXQsIHVpbnQ2NF90IGFyZzQpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdy
aXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nh
c3Q8R0NHTGludHB0cj4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFy
ZzQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHRhcmdldCwg
dWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBkYXRhU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIFZlY3RvcjxHQ0dMY2hhciwgND4gZGF0YShzdGF0aWNfY2FzdDxzaXplX3Q+
KGRhdGFTaXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJn
ZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIGRhdGEpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCBibGl0RnJhbWVidWZmZXIoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBz
cmNYMSwgaW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJf
dCBkc3RYMSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBz
cmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwor
ICAgIH0KKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwgaW50MzJfdCBsZXZlbCwgaW50
MzJfdCBsYXllcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIH0K
KyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYXR0YWNobWVudHMpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVu
dHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVp
bnQzMl90IHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50
cywgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5pbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGF0dGFjaG1l
bnRzLmRhdGEoKSksIGF0dGFjaG1lbnRzLnNpemUoKSksIHgsIHksIHdpZHRoLCBoZWlnaHQpOwor
ICAgIH0KKyAgICB2b2lkIHJlYWRCdWZmZXIodWludDMyX3Qgc3JjKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5yZWFkQnVmZmVyKHNyYyk7CisgICAgfQorICAgIHZvaWQgcmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50
MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJn
ZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAg
dm9pZCB0ZXhTdG9yYWdlMkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdG9yYWdlM0QodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgfQorICAgIHZvaWQgdGV4SW1hZ2UzRDAodWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
Zm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9p
ZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhlbHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4
SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFs
Zm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50
MzJfdCBib3JkZXIsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRl
eFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zm
c2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlw
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiYmIHBpeGVscykKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KHBpeGVscy5kYXRhKCkpLCBwaXhl
bHMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgY29weVRl
eFN1YkltYWdlM0QodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZz
ZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3Qg
eSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVy
bmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwg
aW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleElt
YWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBib3JkZXIsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZv
cm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3Jt
YXQsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6
ZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0
RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVp
KGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtMXVpKGxvY2F0aW9uLCB2MCk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTJ1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybTN1aShpbnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEs
IHVpbnQzMl90IHYyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0
aW9uLCB2MCwgdjEsIHYyKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpKGludDMyX3QgbG9j
YXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYz
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEs
IHYyLCB2Myk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTF1aXYoaW50MzJfdCBsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybTJ1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMnVp
dihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTN1
aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTR1aXYoaW50MzJfdCBsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4M3gyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
dHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXgyeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
TWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2Up
LCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmZ2
KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoaW50MzJfdCBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihpbnQzMl90IGxvY2F0aW9uLCBi
b29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHgsIGludDMy
X3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4
QXR0cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0
PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihp
bmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHZh
bHVlcy5kYXRhKCkpKSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aSh1aW50MzJf
dCBpbmRleCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeiwgdWludDMyX3QgdykK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwg
eiwgdyk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHVpbnQqPih2YWx1ZXMuZGF0YSgpKSkpOworICAgIH0K
KyAgICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IHNp
emUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0
eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAg
ICB2b2lkIGRyYXdSYW5nZUVsZW1lbnRzKHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IHN0YXJ0LCB1
aW50MzJfdCBlbmQsIGludDMyX3QgY291bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3Rh
cnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOwor
ICAgIH0KKyAgICB2b2lkIGRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
JiYgYnVmcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnMobWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSksIGJ1ZnMu
c2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIs
IGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIHZhbHVl
cykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdi
dWZmZXIsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPih2YWx1
ZXMuZGF0YSgpKSwgdmFsdWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVy
dWl2KHVpbnQzMl90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PiYmIHZhbHVlcykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJC
dWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgY2xlYXJCdWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1
ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZXMpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBtYWtlR0NHTFNw
YW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1ZXMuZGF0YSgpKSwgdmFs
dWVzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGNsZWFyQnVmZmVyZmkodWludDMyX3QgYnVm
ZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIGZsb2F0IGRlcHRoLCBpbnQzMl90IHN0ZW5jaWwpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVy
LCBkZXB0aCwgc3RlbmNpbCk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlUXVlcnkoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5W
YWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KHVpbnQzMl90IHF1
ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVRdWVyeShxdWVyeSk7CisgICAg
fQorICAgIHZvaWQgaXNRdWVyeSh1aW50MzJfdCBxdWVyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFu
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNR
dWVyeShxdWVyeSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmVnaW5RdWVyeSh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IHF1ZXJ5KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iZWdpblF1ZXJ5
KHRhcmdldCwgcXVlcnkpOworICAgIH0KKyAgICB2b2lkIGVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdl
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRRdWVyeSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVy
blZhbHVlID0gbV9jb250ZXh0LT5nZXRRdWVyeSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0x1
aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Z2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlU2FtcGxlcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5jcmVhdGVTYW1wbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKHVpbnQzMl90
IHNhbXBsZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxl
cik7CisgICAgfQorICAgIHZvaWQgaXNTYW1wbGVyKHVpbnQzMl90IHNhbXBsZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmlzU2FtcGxlcihzYW1wbGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kU2Ft
cGxlcih1aW50MzJfdCB1bml0LCB1aW50MzJfdCBzYW1wbGVyKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT5iaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBzYW1w
bGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBw
YXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxl
ciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZih1aW50
MzJfdCBzYW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgZmxvYXQgcGFyYW0pCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWlu
dDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxl
ciwgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmkodWludDMyX3Qgc2FtcGxlciwgdWludDMy
X3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwg
cG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgZmVuY2VTeW5jKHVpbnQzMl90IGNvbmRpdGlvbiwgdWludDMyX3QgZmxhZ3MsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgR0NHTHN5bmMgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5mZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGlu
dHB0cl90PihyZXR1cm5WYWx1ZSkpKTsKKyAgICB9CisgICAgdm9pZCBpc1N5bmModWludDY0X3Qg
YXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+
KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGRlbGV0
ZVN5bmModWludDY0X3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU3lu
YyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkp
KTsKKyAgICB9CisgICAgdm9pZCBjbGllbnRXYWl0U3luYyh1aW50NjRfdCBhcmcwLCB1aW50MzJf
dCBmbGFncywgdWludDY0X3QgdGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNsaWVudFdhaXRT
eW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90Pihhcmcw
KSksIGZsYWdzLCBzdGF0aWNfY2FzdDxHQ0dMdWludDY0Pih0aW1lb3V0KSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCB3YWl0U3luYyh1
aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgaW50NjRfdCB0aW1lb3V0KQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT53YWl0U3luYyhyZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8R0NHTGludDY0Pih0
aW1lb3V0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0U3luY2kodWludDY0X3QgYXJnMCwgdWludDMy
X3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U3luY2kocmVpbnRlcnByZXRfY2FzdDxHQ0dM
c3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0K
KyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgfQorICAg
IHZvaWQgaXNUcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29s
ZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
aXNUcmFuc2Zvcm1GZWVkYmFjayhpZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFRyYW5zZm9y
bUZlZWRiYWNrKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKTsKKyAgICB9CisgICAg
dm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IHByaW1pdGl2ZU1vZGUpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9k
ZSk7CisgICAgfQorICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKyAgICB2b2lkIHRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4m
JiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9k
ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHVpbnQzMl90
IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJn
MiB7IH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHBy
b2dyYW0sIGluZGV4LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShh
cmcyKSk7CisgICAgfQorICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAg
dm9pZCByZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlckJh
c2UodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgYnVmZmVyKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZm
ZXIpOworICAgIH0KKyAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IGluZGV4LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qg
YXJnNCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlclJhbmdlKHRhcmdldCwg
aW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgc3RhdGljX2Nh
c3Q8R0NHTHNpemVpcHRyPihhcmc0KSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUluZGlj
ZXModWludDMyX3QgcHJvZ3JhbSwgVmVjdG9yPFN0cmluZz4mJiB1bmlmb3JtTmFtZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMdWludD4gcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFt
LCB1bmlmb3JtTmFtZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXModWludDMyX3QgcHJv
Z3JhbSwgVmVjdG9yPHVpbnQzMl90PiYmIHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGludD4gcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9n
cmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUJsb2NrSW5k
ZXgodWludDMyX3QgcHJvZ3JhbSwgU3RyaW5nJiYgdW5pZm9ybUJsb2NrTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBHQ0dMdWludCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZv
aWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1
bmlmb3JtQmxvY2tJbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1CbG9ja0Jp
bmRpbmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQz
Ml90IHVuaWZvcm1CbG9ja0JpbmRpbmcpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0Jp
bmRpbmcpOworICAgIH0KKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVpbnQzMl90
IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFtZSwgdWlu
dDY0X3QgcGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3Rv
cjxHQ0dMaW50LCA0PiBwYXJhbXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNTaXplKSwgMCk7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5p
Zm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+
KHBhcmFtcy5kYXRhKCkpLCBwYXJhbXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDMyX3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVy
blZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShpbnQzMl90IHNy
Y1gwLCBpbnQzMl90IHNyY1kwLCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90
IGRzdFgwLCBpbnQzMl90IGRzdFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50
MzJfdCBtYXNrLCB1aW50MzJfdCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5ibGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBz
cmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CisgICAgfQor
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxl
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0
ZVZlcnRleEFycmF5T0VTKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVModWludDMyX3Qg
YXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZl
cnRleEFycmF5T0VTKGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJyYXlPRVModWlu
dDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJy
YXlPRVMoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+
KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKHVpbnQz
Ml90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5k
VmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGluc2Vy
dEV2ZW50TWFya2VyRVhUKFN0cmluZyYmIGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5pbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKTsKKyAgICB9CisgICAg
dm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnB1c2hHcm91cE1hcmtlckVYVChhcmcwKTsKKyAgICB9
CisgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCgpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5wb3BHcm91cE1hcmtlckVYVCgpOworICAgIH0KKyAgICB2b2lkIGRy
YXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBi
dWZzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1
aW50MzJfdCBtb2RlLCBpbnQzMl90IGZpcnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1j
b3VudCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgfQor
ICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJf
dCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3Vu
dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMdm9pZHB0
cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZp
c29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5k
ZXgsIGRpdmlzb3IpOworICAgIH0KKyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2
NF90IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
R0NHTGludCwgND4gcGFyYW1zKHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1zU2l6ZSksIDApOwor
ICAgICAgICBtX2NvbnRleHQtPmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZv
cm1hdCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1zLmRh
dGEoKSksIHBhcmFtcy5zaXplKCkpKTsKKyAgICB9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDQwMTdh
MmE4ZjIyY2VjZWNjMjE1MWEzMGEzMjc4ZmY5MDZlYWYzMmEuLjY3NDhkMWY1ZDgwMGQ5NTc0ZjIz
ODA3NWIxODkwYjRlNGFjZWU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMjksNiArMjksNyBAQAog
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNs
dWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5n
QnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBkNmVlMmJjYmNhYjZh
NzBlNDJkMGU5ODg0OWFhODEzMDA5NjRjYTI4Li44OWZiOGFiYWY5YWVjZTA3YzYzNDcwZGEzZGI4
M2M4ODMyNmRkM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTIxNiw2ICsyMTYsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMnLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCkBAIC0yNDQsNiArMjQ1
LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAg
ICAgJ1dlYktpdDo6RGlzcGxheUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93
bmxvYWRJRCcsCiAgICAgICAgICdXZWJLaXQ6Okdlb2xvY2F0aW9uSWRlbnRpZmllcicsCisgICAg
ICAgICdXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9z
dGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQn
LApAQCAtNTMxLDYgKzUzMyw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRl
X3N0cmluZyk6CiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9u
U2V0Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCIn
XX0sCiAgICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdh
cmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAg
ICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJf
aGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnSVBDOjpBcnJheVJl
ZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9j
b2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgfQogCiAgICAgbWF0
Y2ggPSByZS5tYXRjaCgnKD9QPHRlbXBsYXRlX25hbWU+Lis/KTwoP1A8cGFyYW1ldGVyX3N0cmlu
Zz4uKyk+JywgdGVtcGxhdGVfc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZTc5OGU5MTJlNDdiMGQ4ZDBmMDM4ZTdmNzZkNzBm
YzA2YWY2ZWNhZS4uMDMyNTIxMWE5YWQwMTdiZGQyYWRjNWU2MTdiODNkN2Y5N2Y5NWUzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0z
MTY3LDQgKzMxNjcsODIgQEAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjoKICAgICByZXR1cm4geyBX
VEZNb3ZlKCpyZXN1bHQpIH07CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5hbHBoYTsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGVwdGg7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmFu
dGlhbGlhczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOwor
ICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZTsKKyAgICBlbmNvZGVyIDw8IGF0dHJp
YnV0ZXMuc2hhcmVSZXNvdXJjZXM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmlzV2ViR0wy
OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5ub0V4dGVuc2lvbnM7CisgICAgZW5jb2RlciA8
PCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVz
LmluaXRpYWxQb3dlclByZWZlcmVuY2U7CisjaWYgRU5BQkxFKFdFQlhSKQorICAgIGVuY29kZXIg
PDwgYXR0cmlidXRlcy54ckNvbXBhdGlibGU7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRlcHRoKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMu
c3RlbmNpbCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBo
YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9y
UGVyZm9ybWFuY2VDYXZlYXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5z
aGFyZVJlc291cmNlcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmlzV2ViR0wyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25z
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZl
cmVuY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIEVOQUJMRShXRUJYUikK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIHJldHVybiBhdHRyaWJ1dGVzOwor
fQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8mIGFjdGl2ZUluZm8pCit7CisgICAgZW5jb2RlciA8PCBhY3Rp
dmVJbmZvLm5hbWU7CisgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnR5cGU7CisgICAgZW5jb2Rl
ciA8PCBhY3RpdmVJbmZvLnNpemU7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGFjdGl2ZUluZm8ubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnR5cGUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5z
aXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYWN0aXZlSW5m
bzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA5MmFmNjEzYmRmY2U3MmY0MzVjNDBi
NDM4ZjJiMjhjZDQ0OGY2YTk1Li5mZTc4NThmZjljYTZhNGZjYzU5ZjEyNDNiMzgxMzQ0ZWM1ZGZm
Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtNzEsNiArNzEsMTMgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJB
cnJheVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NUeXBlc0dMLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMjAzLDYgKzIx
MCwxMCBAQCBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOwogdXNpbmcgSURCS2V5UGF0
aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorc3RydWN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlczsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUgewogc3RydWN0
IENhY2hlSW5mbzsKIHN0cnVjdCBSZWNvcmQ7CkBAIC04NjgsNiArODc5LDE5IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbj4gewogfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBz
dGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUlu
Zm8mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFj
dGl2ZUluZm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwMzYsNCArMTA2MCwxNiBAQCB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4gewog
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBv
d2VyUHJlZmVyZW5jZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlLAorICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0LAorICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlciwKKyAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlCisgICAgPjsK
K307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDIxY2Q2NWIyOGQ0NmZk
ZWRiNjYyYzRjYmZmNzk5ZWRlYWI1ZTc1ODMuLjM4Y2E2ODkyMmVhYWNhY2M2ZjBhMTU1NDNiZGE2
YzkwMDE0OGRiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTgsNiArMTU4LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwg
c2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUGxheU1l
ZGlhSW5HUFVQcm9jZXNzOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBlbmNvZGVyIDw8IHNob3Vs
ZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRF
bmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVy
OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMiw2ICs1MTUsMTAgQEAgT3B0
aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXgg
ZmUyOWFmMjBhODhhNTllMWViYTZjZThmYmNiNWQ1YTZjM2EzNTQyNC4uYzg3OGU2ZDk4MWZhOTQ0
NDk3ZjAyN2ZhYTMyMTA5N2YyZDY5YmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw5IEBAIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0lu
R1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nl
c3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIHsgZmFs
c2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BV
UHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIHNob3VsZEVuYWJsZVZQOURlY29k
ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2Ug
fTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA4OWQ3YjY1
YzY3NTE0ZTkwYzNmZGUyNDkyMDg3NTdmNGE2NmU4NWEyLi5jNzNlNjMxMzIzMWM1NGQzNzM3ZThj
YTVhYjE0YzczYzkxYjJjYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJl
YWRlckhhbmRsZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCkBAIC01NjgsNiArNTY5LDggQEAgV2ViUHJvY2Vz
cy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAK
K1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTU5MCwx
MCArNTkzLDEwIEBAIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAorV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIu
Y3BwCi1XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIu
Y3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAog
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3Bw
CiAKQEAgLTY5NCwzICs2OTcsNiBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKworUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDRlYThiNzgxZDIw
YTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJkNmY5NzMuLjU2NjhlNDRmNWY1ZjBhYzRlMGQxMzUxMzUw
YTE3OTg2M2E2ZTAzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU2LDYgKzU2LDcgQEAg
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKIE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKIAogR1BVUHJvY2Vzcy9FbnRy
eVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2VydmljZUVudHJ5UG9pbnQubW0KK0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKIEdQVVByb2Nlc3Mv
aW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcApAQCAtNjMs
NiArNjQsOCBAQCBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlD
b2NvYS5tbQogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQogCisKKwog
UGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKIFBsYXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGEwMTFhNWIxZDljOTJlOWY3MzAyOTQxNGYxMzNi
MmYwOTExYTFkNDMuLjVlYjM3MWYyMjA1OGY2ZjBiNjVmM2VmYTA1MzM3ZjNlNzdkMDU2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzk0NSw2ICs3OTQ1
LDkgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckNhbnZh
c1JlbmRlcmluZ0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRPTUluR1BV
UHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJs
ZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyA9IHByZWZl
cmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpOworI2lmIEVOQUJMRShXRUJH
TCkKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzID0gcHJlZmVy
ZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCk7CisjZW5kaWYKIAogICAgIHBh
cmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2Rl
ckVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJkMjgyZTQ2
NmVhNDc0NGYwZjUyYjMzZWNjNmE5YjAzODg2MzlkNWYuLmU5NDJhZDY3YzkyNWEzNzY0ZGM4Mjhh
NDllY2ZiNGEwZjI5YzU4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNzEyLDcgKzcxMiw2IEBACiAJCTJEOTJBNzdCMjEyQjZBNzEw
MEY0OTNGRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRD
b2RlcnMuY3BwICovOyB9OwogCQkyRDkyQTc3QzIxMkI2QTcxMDBGNDkzRkQgLyogQXR0YWNobWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VF
OTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi87IH07CiAJCTJEOTJBNzdE
MjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyREEyMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25u
ZWN0aW9uLmNwcCAqLzsgfTsKLQkJMkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZl
cmVuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFDNzUzN0QxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovOyB9OwogCQky
RDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyog
RGVjb2Rlci5jcHAgKi87IH07CiAJCTJEOTJBNzgwMjEyQjZBNzEwMEY0OTNGRCAvKiBFbmNvZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMy
RDlGMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODEyMTJC
NkE3MTAwRjQ5M0ZEIC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNFRUQwQzE2MUE1MzUzMDBBRUI0RjUgLyog
TWVzc2FnZVJlY2VpdmVyTWFwLmNwcCAqLzsgfTsKQEAgLTQ0MDUsNiArNDQwNCwxNiBAQAogCQk3
QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdB
RkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjUyNTRBRkRFQTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjcyNTRBRkUxNzAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhD
RDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyQTFD
OENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNB
MDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY3MTIsMTEgKzY3MjEsMTEgQEAKIAkJCQkxQUVGRDI3ODExRDE2Qzgx
MDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oICovLAogCQkJCTFBM0Q2MTA0MTNBN0YwM0EwMEY5
NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi8sCiAJCQkJMUFFRkQyRjYxMUQxODA3QjAwODIx
OUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggKi8sCisJCQkJN0IxREIyNjUyNTY2OENFMDAwMEUyNkJD
IC8qIEFycmF5UmVmZXJlbmNlLmggKi8sCiAJCQkJQkNFRTk2NkExMTJGQUY1NzAwNkJDQzI0IC8q
IEF0dGFjaG1lbnQuY3BwICovLAogCQkJCUJDRUU5NjZCMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRh
Y2htZW50LmggKi8sCiAJCQkJQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24u
Y3BwICovLAogCQkJCUJDMDMyREEzMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmggKi8s
Ci0JCQkJMUFDNzUzN0QxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwICovLAog
CQkJCTFBQzc1MzdFMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggKi8sCiAJCQkJ
QkMwMzJEOUQxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovLAogCQkJCUJDMDMyRDlF
MTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggKi8sCkBAIC04Mzg4LDExICs4Mzk3LDE2IEBA
CiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovLAogCQkJCUY0MDk0Q0JB
MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAgKi8sCiAJCQkJ
RjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggKi8s
CisJCQkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywKIAkJCQk3MjdBN0YzNjI0MDc4OEYw
MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJ
NzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVC
YWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAorCQkJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLywKKwkJCQk3QjkwNDE2NjI1NEFG
REVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovLAorCQkJCTdC
OTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1l
c3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLywKIAkJCQk3MjdBN0Y0
OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAogCQkJCTU1
MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
ICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaCAqLywKQEAgLTg0MTAsNiArODQyNCwxMSBAQAogCQkJCUY0MDk0Q0JDMjU1MzA0
QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRD
QkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJ
NTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAq
LywKKwkJCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwICovLAorCQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oICovLAorCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiAqLywKKwkJCQk3QkU3MjY2ODI1NzY4MEVGMDBF
ODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8sCisJCQkJN0I5MDQx
NkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdl
QnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwICovLAogCQkJCTU1MDY0MEEzMjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hYTc5MThlNGI1MGM5YjdjZjViMmU3OWIwNzdkMDM1MjEyYzYxMjY1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitlbnVtIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGUgeyB9OwordXNp
bmcgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQwMjdiYjU4OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
IgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShhdHRyaWJ1dGVzKSk7Cit9CisKK1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHko
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQoreworICAgIElQQzo6TWVzc2FnZVJlY2Vp
dmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAgIG1lc3Nh
Z2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworfQorCitSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCit7CisgICAgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7
CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7Cisg
ICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBo
aWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVmZmVyKCk7Cisj
ZW5kaWYKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KTsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIG1fY3VycmVu
dFdpZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlclNlbmRSaWdodDsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5
KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6
OlJlcGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JDb2xvclNw
YWNlUmVmKCkpOworICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgIGF1dG8mIHNjID0g
cGxhdGZvcm1Td2FwQ2hhaW4oKTsKKyAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOworICAgICAg
ICBzYy5wcmVzZW50KHsgV1RGTW92ZShkaXNwbGF5QnVmZmVyKSwgbnVsbHB0ciB9KTsKKyAgICB9
CisjZWxzZQorICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
cmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworI2VuZGlmCisgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3Qg
U3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IEN1cnJl
bnRseSBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCdzIG5vdCBjbGVhciB0aGlzIGlzIHRoZSBy
aWdodCB3YXkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkzNDkK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJsZUV4
dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCit7CisgICAgaWYgKG1fZGlk
SW5pdGlhbGl6ZSkgeworICAgICAgICAvLyBJbml0aWFsaXphdGlvbiB0aW1lZCBvdXQgYmVmb3Jl
LCBzbyBsb3NlIHRoZSBjb250ZXh0IG5vdy4KKyAgICAgICAgd2FzTG9zdCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGluaXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVxdWVz
dGVkRXh0ZW5zaW9ucyk7CisgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0KCkKK3sKKyAgICBmb3IgKGF1dG8q
IGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQorICAgICAgICBjbGllbnQtPmZvcmNl
Q29udGV4dExvc3QoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3
YXNDaGFuZ2VkKCkKK3sKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2Ns
aWVudHMpKQorICAgICAgICBjbGllbnQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRp
b24oKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJ
bml0aWFsaXplZCgpCit7CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBp
ZiAoY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQ+KG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJ
ZlN5bmNNZXNzYWdlQXJyaXZlcykpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBUaW1lZCBvdXQs
IHNvIHJlcG9ydCBpbml0aWFsaXplZCB3aXRoIGR1bW15IGRhdGEuIFdlIHNob3VsZCBsb3NlIHRo
ZSBjb250ZXh0LgorICAgIHdhc0NyZWF0ZWQoIiIsICIiKTsKKyAgICAvLyBGSVhNRTogTmVlZCB0
byBtYXJrIHRoZSBjb250ZXh0IGFzIGxvc3QsIGJ1dCBpdCdzIG5vdCBzYWZlIHRvIGZvcmNlIGxv
c3QgaW4gdGhpcyBjYWxsIHN0YWNrLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
OWVkYTI5ZjZkYjVlMTgxOTcxMzE3OGYyYWE1MzFiNGY1ZGQ2ZTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaApAQCAtMCwwICsxLDQxMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKKy8vIFdlYiBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2Yg
R3JhcGhpY3NDb250ZXh0R0wgaW50ZXJmYWNlLiBUaGUgaW1wbGVtZW50YXRpb24KKy8vIGNvbnZl
cnRzIHRoZSBpbnRlcmZhY2UgdG8gYSBzZXF1ZW5jZSBvZiBJUEMgbWVzc2FnZXMgYW5kIHNlbmRz
IHRoZSBtZXNzYWdlcyB0bworLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gR1BVIHByb2Nl
c3MuCisvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmlu
ZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCitjbGFzcyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisg
ICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KKyAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkoKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlk
ZXMuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qg
ZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKKworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4K
KyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lk
IHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgdXNpbmcgV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsKKyAgICB2b2lkIGVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGZpbmFsOworICAgIHZvaWQgbm90
aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRleHRD
aGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURh
dGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisKKyAgICAvLyBG
dW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVz
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCisgICAgdm9pZCBzZXRGYWlsTmV4dEdQ
VVN0YXR1c0NoZWNrKCkgZmluYWw7CisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51
bSBlcnJvcikgZmluYWw7CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgZmluYWw7
CisgICAgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlcikgZmluYWw7CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24oUGxh
dGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKSBm
aW5hbDsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZm
ZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZv
aWQgYmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZp
bmFsOworICAgIHZvaWQgYmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVl
biwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGJs
ZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBibGVuZEVxdWF0aW9u
U2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFscGhhKSBmaW5hbDsKKyAg
ICB2b2lkIGJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKSBmaW5h
bDsKKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0g
ZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpIGZpbmFsOworICAg
IEdDR0xlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsK
KyAgICB2b2lkIGNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
Q29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwg
R0NHTGNsYW1wZiBhbHBoYSkgZmluYWw7CisgICAgdm9pZCBjbGVhckRlcHRoKEdDR0xjbGFtcGYg
ZGVwdGgpIGZpbmFsOworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdDR0xpbnQgcykgZmluYWw7Cisg
ICAgdm9pZCBjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NH
TGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZpbmFsOworICAgIHZvaWQgY29tcGls
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weVRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVCdWZmZXIoKSBmaW5h
bDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUZyYW1lYnVmZmVyKCkgZmluYWw7CisgICAg
UGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQcm9ncmFtKCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVSZW5kZXJidWZmZXIoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVNoYWRlcihHQ0dMZW51bSBhcmcwKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNy
ZWF0ZVRleHR1cmUoKSBmaW5hbDsKKyAgICB2b2lkIGN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2
b2lkIGRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoTWFzayhH
Q0dMYm9vbGVhbiBmbGFnKSBmaW5hbDsKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6
TmVhciwgR0NHTGNsYW1wZiB6RmFyKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9p
ZCBkaXNhYmxlKEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIHZvaWQgZHJhd0FycmF5cyhHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpIGZpbmFsOworICAgIHZv
aWQgZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZW5hYmxlKEdDR0xlbnVt
IGNhcCkgZmluYWw7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBp
bmRleCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoKCkg
ZmluYWw7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCBhcmczKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwpIGZpbmFsOworICAgIHZvaWQgZnJv
bnRGYWNlKEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0NH
TGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsK
KyAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAgR0NHTGludCBnZXRBdHRy
aWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmlu
YWw7CisgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkg
ZmluYWw7CisgICAgdm9pZCBnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xm
bG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUs
IEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdl
cjY0KEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50NjQgZ2V0SW50ZWdlcjY0aShH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0UHJv
Z3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+
IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOworICAgIEdDR0xp
bnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0
UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMaW50
IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48
R0NHTGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikgZmluYWw7CisgICAgU3RyaW5n
IGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xm
bG9hdCBnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZp
bmFsOworICAgIEdDR0xpbnQgZ2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZp
bmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQg
Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRVbmlmb3Jt
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFs
OworICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc0J1ZmZlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRW5hYmxlZChHQ0dMZW51bSBj
YXApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1Byb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2hhZGVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsK
KyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5h
bDsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVu
aXRzKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdD
R0xib29sZWFuIGludmVydCkgZmluYWw7CisgICAgdm9pZCBzY2lzc29yKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZv
aWQgc2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJikgZmlu
YWw7CisgICAgdm9pZCBzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NH
THVpbnQgbWFzaykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVt
IGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsK
KyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spIGZpbmFsOworICAgIHZvaWQgc3Rl
bmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAg
ICB2b2lkIHN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0g
enBhc3MpIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwg
R0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKSBmaW5hbDsKKyAg
ICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtMWYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7CisgICAg
dm9pZCB1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpIGZp
bmFsOworICAgIHZvaWQgdW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTGludCB6KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dM
ZmxvYXQgeiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQg
dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50
IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdmFsdWUpIGZpbmFsOworICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApIGZpbmFsOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NH
TGZsb2F0IHgpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBm
aW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmli
M2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHop
IGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQg
eiwgR0NHTGZsb2F0IHcpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdD
R0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZv
aWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51
bSB1c2FnZSkgZmluYWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2
b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkg
ZmluYWw7CisgICAgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5h
bDsKKyAgICB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5hbDsKKyAgICB2b2lkIHRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2
aXNvcikgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgpIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBm
aW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQs
IEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIg
d3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0cikgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lk
PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKKyAg
ICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cykgZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlU3Vi
RnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0
YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpIGZpbmFs
OworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgdGV4U3RvcmFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhT
dG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSBmaW5h
bDsKKyAgICB2b2lkIHRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZv
aWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
aW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkgZmlu
YWw7CisgICAgdm9pZCB1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBH
Q0dMdWludCB2MSwgR0NHTHVpbnQgdjIpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTR1aShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dM
dWludCB2MykgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMnVp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
eDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykgZmluYWw7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
LCA0PiB2YWx1ZXMpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykgZmlu
YWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48
Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBkcmF3UmFu
Z2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsK
KyAgICB2b2lkIGRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5h
bDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBj
bGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNw
YW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2
KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1
ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNp
bCkgZmluYWw7CisgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVRdWVyeSgpIGZpbmFsOworICAg
IHZvaWQgZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkgZmluYWw7CisgICAgR0NH
TGJvb2xlYW4gaXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5hbDsKKyAgICB2b2lk
IGJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5h
bDsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CisgICAgUGxhdGZv
cm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5h
bDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnks
IEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBs
ZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBm
aW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CisgICAgR0NHTGZsb2F0
IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTHN5bmMgZmVu
Y2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKSBmaW5hbDsKKyAg
ICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxl
dGVTeW5jKEdDR0xzeW5jIGFyZzApIGZpbmFsOworICAgIEdDR0xlbnVtIGNsaWVudFdhaXRTeW5j
KEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KSBm
aW5hbDsKKyAgICB2b2lkIHdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFn
cywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NHTHN5
bmMgYXJnMCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVHJh
bnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgdm9pZCBiaW5k
VHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKSBm
aW5hbDsKKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZl
TW9kZSkgZmluYWw7CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAg
IHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkgZmlu
YWw7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikgZmluYWw7CisgICAg
dm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCByZXN1bWVUcmFu
c2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpIGZpbmFsOwor
ICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRy
KSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmlu
YWw7CisgICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xl
bnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmlu
YWw7CisgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgZmluYWw7CisgICAgdm9pZCB1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsOworICAg
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJh
bXMpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZpbmFs
OworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBz
cmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGlu
dCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ss
IEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5h
bDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFs
OworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhU
KGNvbnN0IFN0cmluZyYgYXJnMCkgZmluYWw7CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkg
ZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YnVmcykgZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50
KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgZmluYWw7CisgICAgdm9pZCBn
ZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOworICAg
IHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIHBpeGVscykgZmluYWw7CisgICAgdm9pZCB0
ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAg
dm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pIGZpbmFsOworICAgIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFy
YW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldEZyYW1l
YnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGJvb2xlYW4qIGRhdGEpIGZpbmFsOyAvLyBOT0xJTlQKKyAgICB2b2lkIGdldE11bHRpc2FtcGxl
ZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpIGZpbmFsOworICAgIHZv
aWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdm9pZCoqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgZmluYWw7CisgICAgdm9p
ZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
IGZpbmFsOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgZmluYWw7CisgICAgdm9pZCBzYW1wbGVy
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2
b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSBm
aW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgLy8gRW5k
IG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKworcHJvdGVjdGVk
OgorICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KKyAg
ICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8g
TWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVhdGVkKFN0cmluZyYmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZv
aWQgd2FzTG9zdCgpOworICAgIHZvaWQgd2FzQ2hhbmdlZCgpOworCisgICAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmKTsKKyAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCisvLyBUaGUgR0NHTCB0
eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQg
YnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZV92PEdDR0xlbnVtLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGJvb2xl
YW4pID09IHNpemVvZihib29sKSk7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xi
aXRmaWVsZCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGJ5
dGUsIGludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMdWJ5dGUsIHVp
bnQ4X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNob3J0LCBpbnQxNl90
Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1c2hvcnQsIHVpbnQxNl90Pik7
CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xpbnQsIGludDMyX3Q+KTsKK3N0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHNpemVpLCBpbnQzMl90Pik7CitzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0x1aW50LCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWVfdjxHQ0dMZmxvYXQsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PEdDR0xoYWxmZmxvYXQsIHVpbnQxNl90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PEdDR0xjbGFtcGYsIGZsb2F0Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92
PEdDR0x2b2lkLCB2b2lkPik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFBsYXRmb3Jt
R0xPYmplY3QsIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHQ0dMY2hhcikgPT0g
c2l6ZW9mKHVpbnQ4X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnQ2NCkgPT0gc2l6
ZW9mKGludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x1aW50NjQpID09IHNpemVv
Zih1aW50NjRfdCkpOworLy8gR0NHTHN5bmMgYW5kIEdDR0wqcHRyIHR5cGVzIGFyZSBwb2ludGVy
cy4gT24gc29tZSBwbGF0Zm9ybXMsIHRoZXkgYXJlIDMyLWJpdC4KKy8vIEN1cnJlbnRseSB3ZSBo
YXJkLWNvZGUgaXQgYnkgdXNpbmcgPD0sIGFuZCBhc3N1bWUgdGhhdCB3ZSBkbyBub3QgdHJhbnNm
ZXIgYXJyYXlzIG9mIHRoZSB0eXBlcy4KK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xpbnRwdHIp
IDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHNpemVpcHRy
KSA8PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0x2b2lkcHRy
KSA8PSBzaXplb2YodWludDY0X3QpKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdDR0xzeW5jKSA8
PSBzaXplb2YodWludDY0X3QpICYmIHNpemVvZihHQ0dMc3luYykgPT0gc2l6ZW9mKGludHB0cl90
KSk7CisvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0Lgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyYjMyYjJi
YzEwMTBlZjhlY2QwYWY1Nzc3YWJkNGZhMDhhM2M5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJH
TCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3Vu
dGVkIHsKKyAgICB2b2lkIFdhc0NyZWF0ZWQoU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0
cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCisgICAgdm9pZCBXYXNMb3N0KCkKKyAgICB2b2lk
IFdhc0NoYW5nZWQoKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mN2VjZjg2NTU2YTAwNzNhZjhmNTU0Y2ZjZmMwZWYzMzlmNjFlODlhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMCwwICsxLDE2NDYg
QEAKKy8qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wuIERvIG5vdCBlZGl0LgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1
c0NoZWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJv
cikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhl
c2l6ZUdMRXJyb3IoZXJyb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3ludGhldGlj
RXJyb3JMaXN0KCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGlj
RXJyb3JMaXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9y
c1RvU3ludGhldGljRXJyb3JMaXN0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0
ZXh0dXJlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVUZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkF0dGFjaFNoYWRlcihwcm9ncmFt
LCBzaGFkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9u
KGFyZzAsIGluZGV4LCBuYW1lKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Qmlu
ZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJs
ZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1
ZSwgR0NHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24obW9kZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0g
bW9kZUFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3Rv
ciwgZGZhY3RvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZShHQ0dMZW51bSBz
cmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVtIGRzdEFs
cGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVu
ZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKK3sK
KyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBi
bHVlLCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhclN0ZW5jaWwoR0NHTGludCBzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4g
Ymx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNvbG9yTWFzayhzdGF0aWNfY2FzdDxib29sPihyZWQpLCBzdGF0aWNf
Y2FzdDxib29sPihncmVlbiksIHN0YXRpY19jYXN0PGJvb2w+KGJsdWUpLCBzdGF0aWNfY2FzdDxi
b29sPihhbHBoYSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXBpbGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3
aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigp
Cit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVG
cmFtZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZy
YW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmpl
Y3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwor
fQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZVJlbmRlcmJ1ZmZlcigpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJi
dWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJi
dWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkK
K3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRl
eHR1cmUoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJl
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUZyYW1lYnVmZmVy
KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVT
aGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJvb2w+KGZsYWcpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFy
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aFJh
bmdlKHpOZWFyLCB6RmFyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGlu
ZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUoR0NHTGVudW0g
Y2FwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFi
bGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50
IGluZGV4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2goKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGaW5pc2goKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmZsdXNoKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Rmx1c2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVu
ZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRh
cmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNo
bWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdDR0xpbnQg
bGV2ZWwpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZy
YW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBs
ZXZlbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJn
ZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK2Jvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJn
MiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0
aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3Rp
dmVJbmZvJiBhcmcyKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHBy
b2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3Rp
dmVVbmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFy
YW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFN0cmluZyhHQ0dMZW51bSBuYW1lKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0
cmluZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4g
dmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAg
ICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBz
aXplb2YoZmxvYXQpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUp
Cit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAg
ICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBz
aXplb2YoaW50MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDY0X3Qg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2
ND4ocmV0dXJuVmFsdWUpOworfQorCitHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCit7Cisg
ICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3Jh
bWkocHJvZ3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFByb2dyYW1pOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xib29sZWFuPiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZh
bHVlUmVwbHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnY6OlJlcGx5KHZhbHVl
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNl
bmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwg
dmFsdWUuYnVmU2l6ZSAqIHNpemVvZihib29sKSk7CisgICAgCit9CisKK0dDR0xlbnVtIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKK3sKKyAgICB1aW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
RXJyb3I6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9
CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVu
dW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmkoYXJnMCwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0
cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBl
LCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKQoreworICAg
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4gcmFuZ2VSZXBseTsKKyAgICBpbnQzMl90
IHByZWNpc2lvblJlcGx5ID0geyB9OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lz
aW9uUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYg
KHNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWVtY3B5KHJhbmdlLmRhdGEsIHJhbmdlUmVwbHkuZGF0
YSgpLCByYW5nZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgaWYgKHByZWNp
c2lvbikKKyAgICAgICAgICAgICpwcmVjaXNpb24gPSBwcmVjaXNpb25SZXBseTsKKyAgICB9Cit9
CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2Uo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRl
clNvdXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFk
ZXJTb3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGZsb2F0IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRl
cmYodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VGV4UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFy
YW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRUZXhQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkK
K3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1
bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUu
YnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQoreworICAgIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdihw
cm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBt
ZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXpl
b2YoaW50MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50
MzJfdCkpOworICAgIAorfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAs
IG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2Nh
dGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMc2l6ZWlwdHIgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRl
eEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xzaXplaXB0cj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50KHRhcmdldCwgbW9kZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQor
eworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXApCit7CisgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
RW5hYmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJh
bWVidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c0ZyYW1lYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
RnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1Byb2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9n
cmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJi
dWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Jl
bmRlcmJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Jl
bmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5W
YWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
U2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNT
aGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXI6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQor
CitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RleHR1cmUoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJn
MCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlua1Byb2dy
YW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZz
ZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1
ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBp
bnZlcnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNh
bXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRl
clNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgYXJnMSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2hhZGVyU291cmNlKGFy
ZzAsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NH
TGludCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZ1bmMsIEdD
R0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFz
ayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNrKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFzayhtYXNrKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVp
bnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
U3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxP
cChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcChmYWlsLCB6
ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0g
ZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBh
cmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1l
dGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRl
cmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJpKHRhcmdl
dCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWZ2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWkoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGludCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWkobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWl2
KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0
aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGlu
dCB4LCBHQ0dMaW50IHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
Mml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaXYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Yo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNm
KGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRh
KSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlv
biwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeikKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NH
TGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5k
YXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdmFsdWUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5z
cG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNl
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWYWxpZGF0ZVByb2dyYW0oYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YjFmKGluZGV4LCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJm
KGluZGV4LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWIzZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVz
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWIzZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdD
R0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NHTGZsb2F0IHcpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6
LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmdihpbmRleCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVl
cy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYlBv
aW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJv
b2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PGJvb2w+KG5vcm1hbGl6ZWQp
LCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAo
dGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSwgR0NHTGVudW0gdXNhZ2UpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1
ZlNpemUpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJTdWJE
YXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhl
bHMwKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFS
ZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2Vu
ZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0
YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxz
LmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFn
ZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJl
c3NlZFRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0
ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJh
eXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50
c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNl
dCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KCkKK3sKKyAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0
ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheShh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJn
ZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRw
dHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3
cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRh
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNl
bmRSZXN1bHQpCisgICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRh
dGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xp
bnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdD
R0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBt
YXNrLCBHQ0dMZW51bSBmaWx0ZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwg
ZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFj
aG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBs
YXllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJh
bWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwg
bGF5ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRh
cmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIo
dGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSwgeCwg
eSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNy
YykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZEJ1
ZmZlcihzcmMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZl
bHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRl
eFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEp
LCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDEodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QwKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb3B5VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTNE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBo
ZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleElt
YWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1Yklt
YWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCitHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdE
YXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwg
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2Nh
dGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0x
dWkobG9jYXRpb24sIHYwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NH
THVpbnQgdjEsIEdDR0x1aW50IHYyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50
IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYz
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0x1aW50PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aXYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVp
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4Mng0ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJh
bnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4NGZ2
KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
STRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dM
aW50IHcpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1
ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRl
eEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwg
eCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBp
bmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSVBvaW50
ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNl
dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NH
THVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdC
dWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRh
KSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcml2KEdDR0xlbnVt
IGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2YWx1
ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFy
QnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcnVp
dihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGlu
dCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmdihidWZm
ZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVy
LCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZm
ZXIsIGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
CitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVF1
ZXJ5KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVR
dWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAgIGJvb2wgcmV0dXJu
VmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1F1ZXJ5KHF1ZXJ5KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1F1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVl
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KEdD
R0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFyZ2V0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeSh0YXJnZXQsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBu
YW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aShxdWVyeSwg
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0
dWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxhdGZvcm1HTE9iamVjdCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKCkKK3sKKyAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNT
YW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
U2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNhbXBsZXIo
R0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kU2FtcGxlcih1bml0LCBzYW1wbGVy
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBu
YW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJm
KHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKworR0NHTGZsb2F0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworR0NHTHN5bmMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKEdDR0xl
bnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQoreworICAgIHVpbnQ2NF90IHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkZlbmNlU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0NH
THN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpOworfQorCitHQ0dMYm9v
bGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMoR0NHTHN5bmMgYXJnMCkK
K3sKKyAgICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihy
ZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVs
ZXRlU3luYyhHQ0dMc3luYyBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJl
dF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK0dDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRT
eW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0
KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmMoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBH
Q0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8
aW50NjRfdD4odGltZW91dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2koR0NHTHN5bmMg
YXJnMCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNp
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSks
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUcmFuc2Zvcm1GZWVkYmFj
ayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9y
bUdMT2JqZWN0IGlkKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNr
KGlkKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRi
YWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVl
ZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGlkKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVHJhbnNmb3JtRmVlZGJhY2so
dGFyZ2V0LCBpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xl
bnVtIHByaW1pdGl2ZU1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQoreworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRU
cmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc6OlJlcGx5KGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBs
YXRmb3JtR0xPYmplY3QgYnVmZmVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVp
cHRyIGFyZzQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1ZlY3RvcjxHQ0dMdWludD4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKQoreworICAgIFZlY3Rvcjx1aW50
MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1ZlY3RvcjxHQ0dMaW50PiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jt
cyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1C
bG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3Jt
QmxvY2tOYW1lKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5k
ZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJs
b2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQor
eworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zUmVwbHk7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdjo6UmVwbHkocGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQpCisgICAgICAgIG1l
bWNweShwYXJhbXMuZGF0YSwgcGFyYW1zUmVwbHkuZGF0YSgpLCBwYXJhbXMuYnVmU2l6ZSAqIHNp
emVvZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCit7CisgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZy
YW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNY
MSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBk
c3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1l
YnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0
WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
KworUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVW
ZXJ0ZXhBcnJheU9FUygpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhB
cnJheU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRl
eEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1ZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
aW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworU3RyaW5nIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFy
a2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCgpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZl
cnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHBy
aW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNv
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50
PiBwYXJhbXMpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBs
eTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwg
cG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRJbnRlcm5hbGZvcm1hdGl2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVt
Y3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6
ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1u
cywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVy
eU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0xmbG9hdCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xib29sZWFuKiBkYXRhKSAvLyBOT0xJTlQKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldE11bHRpc2FtcGxlZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCog
cGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVp
bnQqIHBhcmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAzMzQ3NjRhY2UyYThj
NDM4NTg4YjMxOTgwNjJmMzY1YTM2NmU4YmRhLi41YjI3MzJmMmM0ZTRjNDgzZWJmODQwODdhOGMy
NjM0ZTlkNTQ5MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTA4LDYgKzEwOCwxMCBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
PgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC05MTIsNiAr
OTE2LDIyIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlCiAgICAgcmV0dXJuIG1fcGFnZS5lbnN1
cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBy
ZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsK
IH0KIAorI2lmIEVOQUJMRShXRUJHTCkKKworUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUGxhdGZvcm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rp
c3BsYXlJRCkgY29uc3QKK3sKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3Vs
ZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShob3N0V2luZG93RGlzcGxheUlEKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGF0
dHJpYnV0ZXMpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCisjZW5k
aWYKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwgR3JhcGhpY3NMYXllciogbGF5ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZWMxNGZkYjE2YzgxY2MxMjcwNmNmY2I1OWU5OWYyY2Qz
Mzc2MGRjOC4uMTIxNWY5MmEwMzE5NTgwYTBkZGQ5MjEwNTEzZGQyZDVkMzA1MDUxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtMjQzLDcgKzI0MywxMSBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTD4gY3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkg
Y29uc3QgZmluYWw7CiAjZW5kaWYKKyNlbmRpZgorCiAKICAgICBDb21wb3NpdGluZ1RyaWdnZXJG
bGFncyBhbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2VycygpIGNvbnN0IGZpbmFsCiAgICAgewpAQCAt
NDAzLDYgKzQwNyw3IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWlu
RnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wg
bV9jYWNoZWRNYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhciB7IGZhbHNlIH07CisKICAgICBX
ZWJQYWdlJiBtX3BhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDk3OGNjN2QxOGRjZTBmN2U0ZThhMzY1OTU5ZjU4ZDM0M2FkMjEw
MTkuLmIwYWE4ZGYyZWExODU4NWYyN2ViMTMzY2MwOThkNWRmYjI0MzkwMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MjcsNiArNDI3LDkg
QEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV9zaG91bGRSZW5kZXJDYW52YXNJbkdQ
VVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB9CiAg
ICAgLCBtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVu
ZGVyRE9NSW5HUFVQcm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNz
IHsgcGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MgfQorI2lmIEVOQUJMRShX
RUJHTCkKKyAgICAsIG1fc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJz
LnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzfQorI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9C
T1VORF9ET01BSU5TKQogICAgICwgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBw
YXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB9CiAjZW5kaWYKQEAgLTcz
Miw3ICs3MzUsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKFdlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXIqIG1hbmFnZXIgPSB3ZWJQcm9jZXNzLnN1cHBsZW1lbnQ8V2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlcj4oKSkKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkobWFuYWdlci0+bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KCkp
OwogI2VuZGlmCi0gICAgCiAgICAgaWYgKHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yICE9IDEp
CiAgICAgICAgIHNjYWxlVmlldyhwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3Rvcik7CiAKQEAgLTM4
MDAsMTAgKzM4MDIsMTIgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
ZXRVc2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5H
UFVQcm9jZXNzKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNz
Rm9yRE9NUmVuZGVyaW5nKG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzICYmIERyYXdpbmdB
cmVhOjpzdXBwb3J0c0dQVVByb2Nlc3NSZW5kZXJpbmcobV9kcmF3aW5nQXJlYVR5cGUpKTsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEobV9zaG91
bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpOwotCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBw
b3J0IHdlYiBmb250cyBpbiB0aGUgR1BVIHByb2Nlc3MuCiAgICAgaWYgKG1fc2hvdWxkUmVuZGVy
RE9NSW5HUFVQcm9jZXNzKQogICAgICAgICBzZXR0aW5ncy5zZXREb3dubG9hZGFibGVCaW5hcnlG
b250c0VuYWJsZWQoZmFsc2UpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5zZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0wobV9zaG91bGRSZW5kZXJXZWJHTElu
R1BVUHJvY2Vzcyk7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKQEAgLTcwMDMsNiArNzAwNyw3IEBAIHZvaWQgV2ViUGFnZTo6c3luY2hyb25pemVDT1JTRGlz
YWJsaW5nUGF0dGVybnNXaXRoTmV0d29ya1Byb2Nlc3MoKQogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2FibGlu
Z1BhdHRlcm5zKG1faWRlbnRpZmllciwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpLCAwKTsKIH0K
IAorCiAjaWYgRU5BQkxFKE1FRElBX1VTQUdFKQogdm9pZCBXZWJQYWdlOjphZGRNZWRpYVVzYWdl
TWFuYWdlclNlc3Npb24oTWVkaWFTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcGFnZVVSTCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzNjJhZDc3YmU2YWUzMmUw
ZTY5Y2E5M2ViZmM2MjNlYTVkYmNmZTg0Li5mYTEzMzU0ZGRmZjIzMjg0NTBiOWM3MmNkYWM0ZGNm
N2FlNDU0YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0xODMyLDYgKzE4MzIsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJD
YW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRSZW5kZXJET01J
bkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRQbGF5TWVkaWFJbkdQVVBy
b2Nlc3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIG1fc2hvdWxkUmVu
ZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCiAjaWYgRU5BQkxFKEFQUF9C
T1VORF9ET01BSU5TKQogICAgIGJvb2wgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3Mg
eyBmYWxzZSB9OwogI2VuZGlmCkBAIC0yMTg5LDQgKzIxOTIsMyBAQCBpbmxpbmUgYm9vbCBXZWJQ
YWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgV2ViQ29yZTo6RnJh
bWUmKSBjbwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYzNmYTgxZWRjMDBlYjY5Mjc3M2NjNzNmOWY0
YWFkY2NlMWRjYzEzMi4uYmQyOTk5MGY5ODFiZTg5NDc4NTJiMDdjOTJiYWIzY2I1ZDg1MzRhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk1Myw2ICsxOTUz
LDIwIEBAIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJlbmRl
cmluZ1B1cnBvc2UgcHVycG9zZSkKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCisjaWYg
RU5BQkxFKFdFQkdMKQordm9pZCBXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yV2ViR0wo
Ym9vbCB1c2VHUFVQcm9jZXNzRm9yV2ViR0wpCit7CisgICAgbV91c2VHUFVQcm9jZXNzRm9yV2Vi
R0wgPSB1c2VHUFVQcm9jZXNzRm9yV2ViR0w7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzczo6c2hvdWxk
VXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdAoreworICAgIHJldHVybiBtX3VzZUdQ
VVByb2Nlc3NGb3JXZWJHTDsKK30KKworI2VuZGlmCisKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQ
OSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU5YzQ3ZGI0YzQ0N2Mw
ZjRhYjYyN2MwOTRiNWY2OGRiNTY1YTlhNmMuLjFhNTg1YWMxNDJiMTgzMjc2NGM0ZDg1Mzc5MDkw
YjJjYmNhNzNjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzQ3
LDYgKzM0NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yRE9NUmVu
ZGVyaW5nKGJvb2wpOwogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wpOwog
ICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1
cnBvc2UpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JX
ZWJHTChib29sKTsKKyAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkg
Y29uc3Q7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4Nyw2ICs2OTEs
OSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5n
IHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYSB7IGZhbHNlIH07CisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yV2ViR0wgeyBmYWxzZSB9
OworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmViZDA3NDQ4ZDI3NjcxZTA1YWMxODkz
YWQzNGQ2ODZlZTY0MWU0My4uZjAwNjJjYmY3OTEwYTUxZDJjNzVhMjViNTkzOGZkOWEwZmEzMDVi
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODc2MjU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KKworICAgICAgICBJbXBsZW1lbnRzIGEgcmVtb3RlIHZlcnNpb24gb2YgR3JhcGhp
Y3NDb250ZXh0R0wgZm9yIEdQVSBwcm9jZXNzLgorICAgICAgICBDdXJyZW50IGltcGxlbWVudGF0
aW9uIGlzIHVzaW5nIFdlYktpdCBJUEMgYW5kIGlzIGluY29tcGxldGUuCisKKyAgICAgICAgQWRk
IHRoZSBjb2RlIGdlbmVyYXRvciB0byBnZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb24uIEN1cnJl
bnRseQorICAgICAgICB0aGUgZ2VuZXJhdG9yIGdlbmVyYXRlcyBhIFdlYktpdCBJUEMgaW1wbGVt
ZW50YXRpb24uCisKKyAgICAgICAgVGhlIGlucHV0IGRlZmluaXRpb24gdG8gdGhlIGdlbmVyYXRv
ciBpcyB0aGUgcHJveHkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaGVhZGVyIGZpbGVzLgorICAg
ICAgICBUaGUgb3V0cHV0IG9mIHRoZSBnZW5lcmF0b3IgaXMKKyAgICAgICAgICAgLSBXZWJLaXQg
SVBDIG1lc3NhZ2UgZGVmaW5pdGlvbiBmaWxlCisgICAgICAgICAgIC0gTWVzc2FnZSBzZW5kZXIg
Y29kZQorICAgICAgICAgICAtIE1lc3NhZ2UgcmVjZWl2ZXIgYW5kIHBheWxvYWQgaW52b2NhdGlv
biBjb2RlCisKKyAgICAgICAgVGhlIGdlbmVyYXRvciBjb252ZXJ0cyBHcmFwaGljc0NvbnRleHRH
TCBHQ0dMIC1wcmVmaXhlZCB0eXBlcyB0bworICAgICAgICBzaXplZCBJUEMgdHlwZXMuCisKKyAg
ICAgICAgVGhlIGdlbmVyYXRvciBpcyBpbnZva2VkIGR1cmluZyBkZXZlbG9wbWVudCB0aW1lIGFu
ZCB0aGUgcmVzdWx0cyBhcmUKKyAgICAgICAgc3RvcmVkIGluIHRoZSByZXBvc2l0b3J5LgorCisg
ICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOiBBZGRlZC4KKwogMjAyMC0xMi0w
OCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEluY3JlYXNlIG1heGltdW0gc2l6ZSBvZiBXS0NvbnRlbnRSdWxlTGlzdApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNmI0MjIyOWNmMmY4MjhjNjZjN2U3YjQxNzczYzJl
YmU0NDMxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAt
d2ViZ2wKQEAgLTAsMCArMSwxMDQ0IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBj
b2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
IyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
IyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBUaGlzIHNjcmlwdCBn
ZW5lcmF0ZXMgdGhlIHNvdXJjZSBmaWxlcyBmb3IgV2ViR0wgR1BVIHByb2Nlc3MgSVBDLgorIwor
IyBweXRob24zIC1tIGJsYWNrIC1sIDE1MCBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2Vi
Z2wKKyMgcHl0aG9uMyAtbSBteXB5IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAor
IworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZW51bQoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCBy
ZQoraW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCisKK2Zyb20gdHlwaW5nIGltcG9ydCBM
aXN0LCBEaWN0LCBJdGVyYWJsZSwgQ2FsbGFibGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5l
cmF0b3IsIEl0ZXJhdG9yLCBDb3VudGVyCisKK3Jvb3RfZGlyID0gKHBhdGhsaWIuUGF0aChfX2Zp
bGVfXykucGFyZW50IC8gIi4uIiAvICIuLiIpLnJlc29sdmUoKQorZXh0ZW5zaW9uc19pbnB1dF9m
biA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBo
aWNzIiAvICJFeHRlbnNpb25zR0wuaCIKKworZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsKKyAgICBy
b290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJn
cmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorXQordHlwZXNfaW5w
dXRfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiV2ViUHJvY2VzcyIgLyAi
R1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisK
K3RlbXBsYXRlX3ByZWFtYmxlID0gIiIiLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisiIiIKK2NvbnRleHRfZnVu
Y3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3Mi
IC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oIgorY29udGV4dF9mdW5jdGlvbnNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1i
bGUKKyAgICArICIiIi8vIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByaXZh
dGUgc2VjdGlvbiBvZiB0aGUKKy8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0
aW9ucy4KKyNwcmFnbWEgb25jZQore30KKworIiIiCispCitjb250ZXh0X21lc3NhZ2VzX2ZuID0g
cm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIkdQVVByb2Nlc3MiIC8gImdyYXBoaWNz
IiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiIKK2NvbnRleHRfbWVzc2Fn
ZXNfdGVtcGxhdGUgPSAoCisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIiNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFBy
ZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hy
b25vdXMKKyNlbmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JE
aXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRD
aGFuZ2VkKCkKK3t9Cit9fQorCisjZW5kaWYKKworIiIiCispCisKK2NvbnRleHRfcHJveHlfZnVu
Y3Rpb25zX2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3Mi
IC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwIgorY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUgPSAo
CisgICAgdGVtcGxhdGVfcHJlYW1ibGUKKyAgICArICIiIgorI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCituYW1lc3BhY2UgV2ViS2l0IHt7Cit7fQor
Cit9fQorCisjZW5kaWYKKworIiIiCispCisKKworZGVmIHdyaXRlX2ZpbGUoZm4sIG5ld19jb250
ZW50cyk6CisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAg
ICBpZiBmLnJlYWQoKSA9PSBuZXdfY29udGVudHM6CisgICAgICAgICAgICAgICAgcmV0dXJuCisg
ICAgZXhjZXB0OgorICAgICAgICBwYXNzCisgICAgd2l0aCBvcGVuKGZuLCAidyIpIGFzIGY6Cisg
ICAgICAgIGYud3JpdGUobmV3X2NvbnRlbnRzKQorCitjbGFzcyBjcHBfdHlwZShvYmplY3QpOgor
ICAgIHR5cGVfbmFtZTogc3RyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDog
c3RyKToKKyAgICAgICAgc2VsZi50eXBlX25hbWUgPSB0eXBlX25hbWUKKworICAgIGRlZiBfX3N0
cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUKKworICAgIGRlZiBfX2hh
c2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi50eXBlX25hbWUpCisKKyAgICBk
ZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisgICAg
ZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSA9
PSBvdGhlci50eXBlX25hbWUKKworICAgIGRlZiBpc192b2lkKHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZSBpbiBbInZvaWQiLCAiR0NHTHZvaWQiLCAiY29uc3Qg
dm9pZCIsICJjb25zdCBHQ0dMdm9pZCJdCisKKyAgICBkZWYgaXNfY29uc3Qoc2VsZikgLT4gYm9v
bDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lLnN0YXJ0c3dpdGgoImNvbnN0ICIpCisK
KyAgICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2R5bmFtaWNfc3BhbihzZWxmKSAtPiBib29sOgor
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19wb2ludGVyKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3BvaW50ZXIoc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfcmVmZXJlbmNlKHNl
bGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2NvbnN0X3Jl
ZmVyZW5jZShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBn
ZXRfdmFsdWVfdHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gc2VsZgor
CisgICAgZGVmIGdldF9kZWNheV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIGlm
IHNlbGYuaXNfY29uc3QoKToKKyAgICAgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50
eXBlX25hbWVbNjpdKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGdldF9ydmFsdWVf
dHlwZShzZWxmKSAtPiAnY3BwX3R5cGUnOgorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKHNl
bGYudHlwZV9uYW1lICsgIiYmIikKKworICAgIGRlZiBnZXRfcG9pbnRlcl90eXBlKHNlbGYpIC0+
ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUoc2VsZi50eXBlX25hbWUg
KyAiKiIpCisKK2NsYXNzIGNwcF90eXBlX2NvbnRhaW5lcihjcHBfdHlwZSk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgY29udGFpbmVyX25hbWUgOiBzdHIsIGNvbnRh
aW5lZF90eXBlIDogY3BwX3R5cGUsIGFyaXR5IDogT3B0aW9uYWxbaW50XSA9IE5vbmUpOgorICAg
ICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYuY29u
dGFpbmVyX25hbWUgPSBjb250YWluZXJfbmFtZQorICAgICAgICBzZWxmLmNvbnRhaW5lZF90eXBl
ID0gY29udGFpbmVkX3R5cGUKKyAgICAgICAgc2VsZi5hcml0eSA9IGFyaXR5CisgICAgZGVmIGlz
X2NvbnRhaW5lcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBp
c19zcGFuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1l
ID09ICJHQ0dMU3BhbiIKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lID09ICJHQ0dMU3BhbiIgYW5kIHNlbGYu
YXJpdHkgaXMgTm9uZQorICAgIGRlZiBnZXRfY29udGFpbmVyX25hbWUoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLmNvbnRhaW5lcl9uYW1lCisgICAgZGVmIGdldF9hcml0eShzZWxmKSAtPiBP
cHRpb25hbFtpbnRdOgorICAgICAgICByZXR1cm4gc2VsZi5hcml0eQorICAgIGRlZiBnZXRfY29u
dGFpbmVkX3R5cGUoc2VsZikgLT4gY3BwX3R5cGU6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRh
aW5lZF90eXBlCisgICAgZGVmIGlzX291dHB1dF9idWZmZXJfdHlwZShzZWxmKSAtPiBib29sOgor
ICAgICAgICByZXR1cm4gc2VsZi5jb250YWluZWRfdHlwZS5pc19jb25zdCgpCisKK2RlZiBjcmVh
dGVfY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5
cGVfY29udGFpbmVyXToKKyAgICBtID0gcmUubWF0Y2gociIoW1x3Ol0rKTwoLispPiQiLCB0eXBl
X25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBOb25lCisgICAgY29udGFpbmVy
X25hbWUgPSBtWzFdCisgICAgdGVtcGxhdGVzID0gbVsyXQorICAgIGFyaXR5ID0gTm9uZQorICAg
IG0gPSByZS5tYXRjaChyIihbXixdKyksXHMqKFxkKykiLCB0ZW1wbGF0ZXMpCisgICAgaWYgbToK
KyAgICAgICAgdGVtcGxhdGVzID0gbVsxXQorICAgICAgICBhcml0eSA9IGludChtWzJdKQorICAg
IHJldHVybiBjcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lLCBjb250YWluZXJfbmFtZSwgZ2V0
X2NwcF90eXBlKHRlbXBsYXRlcyksIGFyaXR5KQorCitjbGFzcyBjcHBfdHlwZV9mdW5jdGlvbihj
cHBfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSA6IHN0ciwgcmV0dXJu
X3ZhbHVlX3R5cGUgOiBjcHBfdHlwZSwgYXJndW1lbnRfdHlwZXMgOiBMaXN0W2NwcF90eXBlXSk6
CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAgICAgc2Vs
Zi5yZXR1cm5fdmFsdWVfdHlwZSAgPSByZXR1cm5fdmFsdWVfdHlwZQorICAgICAgICBzZWxmLmFy
Z3VtZW50X3R5cGVzID0gYXJndW1lbnRfdHlwZXMKKworZGVmIGNwcF9zcGxpdF9hcmdzX3NwZWNz
KGFyZ3Nfc3BlYyA6IHN0cikgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAgIyBodHRwczovL3N0YWNr
b3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMzUyNzI0NS9weXRob24tc3BsaXQtYnktY29tbWEtc2tp
cHBpbmctdGhlLWNvbnRlbnQtaW5zaWRlLXBhcmVudGhlc2VzCisgICAgY29tbWEgPSByIiwoPyEo
PzpbXjxdKlw8W14+XSpcPikqW148Pl0qXD4pIgorICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW2Eu
c3RyaXAoKSBmb3IgYSBpbiByZS5zcGxpdChjb21tYSwgYXJnc19zcGVjLnN0cmlwKCkpXSkKKyAg
ICAKK2RlZiBjcmVhdGVfY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lIDogc3RyKSAtPiBPcHRp
b25hbFtjcHBfdHlwZV9mdW5jdGlvbl06CisgICAgbSA9IHJlLm1hdGNoKHInKC4qKVwoKC4qKVwp
JywgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJl
dHVybl92YWx1ZV90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgYXJnc190eXBlcyA9IFtn
ZXRfY3BwX3R5cGUoYSkgZm9yIGEgaW4gY3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsyXSldCisgICAg
cmV0dXJuIGNwcF90eXBlX2Z1bmN0aW9uKHR5cGVfbmFtZSwgcmV0dXJuX3ZhbHVlX3R5cGUsIGFy
Z3NfdHlwZXMpCisgICAgICAgIAorIyBQb2ludGVyIG9yIHJlZmVyZXJlbmNlCitjbGFzcyBjcHBf
dHlwZV9pbmRpcmVjdChjcHBfdHlwZSk6CisgICAgY2F0ZWdvcnkgOiBzdHIKKyAgICB2YWx1ZV90
eXBlIDogY3BwX3R5cGUKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDog
c3RyLCBjYXRlZ29yeSA6IHN0ciwgdmFsdWVfdHlwZSA6IGNwcF90eXBlKToKKyAgICAgICAgY3Bw
X3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQorICAgICAgICBzZWxmLmNhdGVnb3J5ID0g
Y2F0ZWdvcnkKKyAgICAgICAgc2VsZi52YWx1ZV90eXBlID0gdmFsdWVfdHlwZQorCisgICAgZGVm
IGlzX2NvbnN0X3BvaW50ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09
ICcqJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3BvaW50ZXIoc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLmNhdGVnb3J5ID09ICcqJyBhbmQgbm90IHNlbGYuaXNfY29uc3QoKQor
ICAgIGRlZiBpc19jb25zdF9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNh
dGVnb3J5ID09ICcmJyBhbmQgc2VsZi5pc19jb25zdCgpCisgICAgZGVmIGlzX3JlZmVyZW5jZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBub3Qgc2VsZi5p
c19jb25zdCgpCisgICAgZGVmIGlzX3J2YWx1ZV9yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLmNhdGVnb3J5ID09ICcmJicKKyAgICBkZWYgZ2V0X3ZhbHVlX3R5cGUoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlX3R5cGUKKworZGVmIGNyZWF0ZV9jcHBfdHlwZV9p
bmRpcmVjdCh0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2luZGlyZWN0XToK
KyAgICBtID0gcmUubWF0Y2gociJjb25zdCAoLispJiYkIiwgdHlwZV9uYW1lKQorICAgIGlmIG5v
dCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiYkIiwgdHlwZV9uYW1lKSAKKyAgICBp
ZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnJiYnLCBn
ZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29uc3QgKC4rKSYkIiwgdHlw
ZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAgICBtID0gcmUubWF0Y2gociIoLispJiQiLCB0
eXBlX25hbWUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIGNwcF90eXBlX2luZGlyZWN0KHR5
cGVfbmFtZSwgJyYnLCBnZXRfY3BwX3R5cGUobVsxXSkpCisgICAgbSA9IHJlLm1hdGNoKHIiY29u
c3QgKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgbSA9IHJlLm1h
dGNoKHIiKC4rKVwqJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3Bw
X3R5cGVfaW5kaXJlY3QodHlwZV9uYW1lLCAnKicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBy
ZXR1cm4gTm9uZQorCisKK2NsYXNzIGNwcF9leHByKG9iamVjdCk6CisgICAgdHlwZTogY3BwX3R5
cGUKKyAgICBleHByOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlOiBjcHBfdHlw
ZSwgZXhwcjogc3RyKToKKyAgICAgICAgc2VsZi50eXBlID0gdHlwZQorICAgICAgICBzZWxmLmV4
cHIgPSBleHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
ZXhwcgorCisKK0NwcEV4cHJDb252ZXJ0ZXIgPSBDYWxsYWJsZVtbY3BwX2V4cHIsIGNwcF90eXBl
XSwgY3BwX2V4cHJdCisKKworZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcl90
aHJvdWdoKGNhc3RfdGhyb3VnaF90eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhw
ciwgY3BwX3R5cGVdLCBjcHBfZXhwcl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X2Zy
b21fcG9pbnRlcihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgor
ICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25h
bWV9PihyZWludGVycHJldF9jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHBy
KX0pKSIpCisgICAgcmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X2Zyb21fcG9pbnRlcgorCitk
ZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcl90aHJvdWdoKGNhc3RfdGhyb3VnaF90
eXBlIDogY3BwX3R5cGUpIC0+IENhbGxhYmxlW1tjcHBfZXhwciwgY3BwX3R5cGVdLCBjcHBfZXhw
cl06CisgICAgZGVmIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIoZXhwcjogY3BwX2V4
cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICAgICAgcmV0dXJuIGNwcF9leHBy
KHR5cGUsIGYicmVpbnRlcnByZXRfY2FzdDx7dHlwZS50eXBlX25hbWV9PihzdGF0aWNfY2FzdDx7
c3RyKGNhc3RfdGhyb3VnaF90eXBlKX0+KHtzdHIoZXhwcil9KSkiKQorICAgIHJldHVybiBjcHBf
cmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyCisKK2RlZiBjcHBfc3RhdGljX2Nhc3QoZXhwcjog
Y3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfZXhwcjoKKyAgICByZXR1cm4gY3BwX2V4
cHIodHlwZSwgZiJzdGF0aWNfY2FzdDx7dHlwZS50eXBlX25hbWV9Pih7c3RyKGV4cHIpfSkiKQor
CisKK2RlZiBjcHBfaW1wbGljaXRfY2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUp
IC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBzdHIoZXhwcikpCisKKwor
ZGVmIGNwcF9hcnJheV9yZWludGVycHJldF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIs
IHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2lu
dGVyX3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQor
ICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8
e2VsZW1lbnRfcG9pbnRlcl90eXBlfT4oe3N0cihleHByKX0uZGF0YSgpKSwge3N0cihleHByKX0u
c2l6ZSgpKSIpCisKK2RlZiB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJl
dF9jYXN0X2NvbnZlcnNpb24oZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlX2NvbnRhaW5l
cikgLT4gY3BwX2V4cHI6CisgICAgZWxlbWVudF9wb2ludGVyX3R5cGUgPSB0eXBlLmdldF9jb250
YWluZWRfdHlwZSgpLmdldF9wb2ludGVyX3R5cGUoKQorICAgIHJldHVybiBjcHBfZXhwcih0eXBl
LCBmIntzdHIodHlwZSl9KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qge2VsZW1lbnRfcG9pbnRlcl90
eXBlfT4oe3N0cihleHByKX0uZGF0YSksIHtzdHIoZXhwcil9LmJ1ZlNpemUpIikKKworZGVmIGNw
cF9tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgorICAgIHJldHVybiBjcHBf
ZXhwcihleHByLnR5cGUuZ2V0X3J2YWx1ZV90eXBlKCksIGYiV1RGTW92ZSh7c3RyKGV4cHIpfSki
KQorCisKK2NwcF90eXBlczogRGljdFtzdHIsIGNwcF90eXBlXSA9IHt9CisKK2NwcF90eXBlX2Nv
bnN0cnVjdG9ycyA6IExpc3RbQ2FsbGFibGVbW3N0cl0sIE9wdGlvbmFsW2NwcF90eXBlXV1dID0g
WworICAgIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbiwKKyAgICBjcmVhdGVfY3BwX3R5cGVfY29u
dGFpbmVyLAorICAgIGNyZWF0ZV9jcHBfdHlwZV9pbmRpcmVjdAorXQorCitkZWYgZ2V0X2NwcF90
eXBlKHR5cGVfbmFtZTogc3RyKToKKyAgICByID0gY3BwX3R5cGVzLmdldCh0eXBlX25hbWUsIE5v
bmUpCisgICAgaWYgcjoKKyAgICAgICAgcmV0dXJuIHIKKyAgICBmb3IgdHlwZV9jb25zdHIgaW4g
Y3BwX3R5cGVfY29uc3RydWN0b3JzOgorICAgICAgICByID0gdHlwZV9jb25zdHIodHlwZV9uYW1l
KQorICAgICAgICBpZiByOgorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBub3QgcjoKKyAgICAg
ICAgciA9IGNwcF90eXBlKHR5cGVfbmFtZSkKKyAgICBjcHBfdHlwZXNbdHlwZV9uYW1lXSA9IHIK
KyAgICByZXR1cm4gcgorCisKK2NsYXNzIGNwcF9hcmcob2JqZWN0KToKKyAgICBuYW1lOiBzdHIK
KyAgICB0eXBlOiBjcHBfdHlwZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGU6IGNwcF90
eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYu
dHlwZSA9IHR5cGUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9
IHt9Ii5mb3JtYXQoc2VsZi50eXBlLCBzZWxmLm5hbWUpCisKKworY2xhc3MgY3BwX2RlY2wob2Jq
ZWN0KToKKyAgICB0eXBlOiBjcHBfdHlwZQorICAgIG5hbWU6IHN0cgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHR5cGU6IGNwcF90eXBlLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUg
PSB0eXBlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgorICAgICAgICByZXR1cm4gZiJ7c3RyKHNlbGYudHlwZSl9IHtzZWxmLm5hbWV9IgorCisKK2Ns
YXNzIGNwcF9hcmdfbGlzdChvYmplY3QpOgorICAgIGFyZ3M6IExpc3RbY3BwX2FyZ10KKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddKToKKyAgICAgICAgc2VsZi5h
cmdzID0gYXJncworCisgICAgZGVmIG5hbWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5q
b2luKGEubmFtZSBmb3IgYSBpbiBzZWxmLmFyZ3MpCisKKyAgICBkZWYgZXhwcnMoc2VsZik6Cisg
ICAgICAgIHJldHVybiBbY3BwX2V4cHIoYS50eXBlLCBhLm5hbWUpIGZvciBhIGluIHNlbGYuYXJn
c10KKworICAgIGRlZiBkZWNscyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZGVjbChhLnR5
cGUsIGEubmFtZSkgZm9yIGEgaW4gc2VsZi5hcmdzXQorCisgICAgZGVmIHR5cGVzKHNlbGYpOgor
ICAgICAgICByZXR1cm4gW2EudHlwZSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgX19z
dHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIsICIuam9pbihzdHIoYSkgZm9yIGEgaW4gc2Vs
Zi5hcmdzKQorCisKK2NsYXNzIGNwcF9mdW5jKG9iamVjdCk6CisgICAgbmFtZTogc3RyCisgICAg
YXJnczogY3BwX2FyZ19saXN0CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgaXNfZXh0
ZW5zaW9uOiBib29sCisgICAgb3ZlcmxvYWRfc3VmZml4OiBzdHIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19s
aXN0LCBpc19leHRlbnNpb246IGJvb2wpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAg
ICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBh
cmdzCisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCisgICAgICAgIHNl
bGYub3ZlcmxvYWRfc3VmZml4ID0gIiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gZiJ7c2VsZi5yZXR1cm5fdHlwZX0ge3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3Mp
fSkiCisKKyAgICBkZWYgZ2V0X2FyZ3NfY2F0ZWdvcmllcyhzZWxmKSAtPiBUdXBsZVtMaXN0W2Nw
cF9hcmddLCBMaXN0W2NwcF9hcmddXToKKyAgICAgICAgaW5fYXJncyA9IFtdCisgICAgICAgIG91
dF9hcmdzID0gW10KKyAgICAgICAgZm9yIGEgaW4gc2VsZi5hcmdzLmFyZ3M6CisgICAgICAgICAg
ICAjZm10OiBvZmYKKyAgICAgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCkgb3IgXAorICAg
ICAgICAgICAgICAgIGEudHlwZS5pc19yZWZlcmVuY2UoKToKKyAgICAgICAgICAgICAgICBvdXRf
YXJncyArPSBbYV0KKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBl
X2NvbnRhaW5lcikgYW5kICgoKGEudHlwZS5pc19zcGFuKCkgb3IgYS50eXBlLmlzX2R5bmFtaWNf
c3BhbigpKSBhbmQgbm90IGEudHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5pc19jb25zdCgpKSk6
CisgICAgICAgICAgICAgICAgb3V0X2FyZ3MgKz0gW2FdCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGluX2FyZ3MgKz0gW2FdCisgICAgICAgICAgICAjZm10OiBvbgorICAgICAg
ICByZXR1cm4gaW5fYXJncywgb3V0X2FyZ3MKKworICAgIGRlZiBpc19pbXBsZW1lbnRlZF90eXBl
KHNlbGYsIHR5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgdHlwZS5pc19jb25zdF9wb2ludGVy
KCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAg
IGRlZiBpc19pbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyIgaW4gYS50eXBlLnR5cGVfbmFt
ZSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgICNpZiAiR0NHTHN5bmMiIGluIHNlbGYucmV0dXJuX3R5cGUudHlwZV9uYW1lOgorICAg
ICAgICAjICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkoYS5uYW1lID09ICJidWZTaXpl
IiBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgaWYgYW55KGEudHlwZS5pc19wb2ludGVyKCkgYW5kIGEudHlwZS5nZXRfdmFsdWVfdHlw
ZSgpLmlzX3ZvaWQoKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgaWYgYW55KG5vdCBzZWxmLmlzX2ltcGxlbWVudGVkX3R5cGUoYS50
eXBlKSBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJncyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgaWYgc2VsZi5yZXR1cm5fdHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfaW1wbGVtZW50ZWRfdHlwZShzZWxm
LnJldHVybl90eXBlKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4g
VHJ1ZQorCisKK3dlYmtpdF9pcGNfdHlwZXM6IERpY3RbY3BwX3R5cGUsIGNwcF90eXBlXSA9IHt9
CisKK3dlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyczogRGljdFtUdXBsZVtjcHBfdHlwZSwgY3Bw
X3R5cGVdLCBDcHBFeHByQ29udmVydGVyXSA9IHt9CisKKworZGVmIHdlYmtpdF9pcGNfY29udmVy
dF9leHByKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAg
IiIiIENvbnZlcnRzIGBleHByYCBvZiB0eXBlIG9mIGBzZWxmYCB0byBgdHlwZWAgIiIiCisgICAg
Y29udmVydCA9IHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5nZXQoKGV4cHIudHlwZSwgdHlw
ZSksIE5vbmUpCisgICAgaWYgbm90IGNvbnZlcnQ6CisgICAgICAgIGlmIGV4cHIudHlwZSA9PSB0
eXBlOgorICAgICAgICAgICAgcmV0dXJuIGV4cHIKKyAgICAgICAgY29udmVydCA9IGNwcF9pbXBs
aWNpdF9jYXN0CisgICAgcmV0dXJuIGNvbnZlcnQoZXhwciwgdHlwZSkKKworCitkZWYgd2Via2l0
X2lwY19nZXRfc3Bhbl90cmFuc2Zlcl90eXBlKHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIpIC0+
IGNwcF90eXBlOgorICAgIGVsZW1lbnRfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCku
Z2V0X2RlY2F5X3R5cGUoKQorICAgIGFyaXR5ID0gdHlwZS5nZXRfYXJpdHkoKQorICAgIHdlYmtp
dF9pcGNfZWxlbWVudF90eXBlID0gd2Via2l0X2lwY190eXBlc1tlbGVtZW50X3R5cGVdIGlmIG5v
dCBlbGVtZW50X3R5cGUuaXNfdm9pZCgpIGVsc2UgZ2V0X2NwcF90eXBlKCd1aW50OF90JykKKyAg
ICBpZiBhcml0eSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQ
Qzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9LCB7YXJpdHl9
PiIpCisgICAgcmV0dXJuIGdldF9jcHBfdHlwZShmIklQQzo6QXJyYXlSZWZlcmVuY2U8e3N0cih3
ZWJraXRfaXBjX2VsZW1lbnRfdHlwZSl9PiIpCisKKworCitkZWYgd2Via2l0X2lwY19nZXRfc3Bh
bl9zdG9yZV90eXBlKHR5cGU6IGNwcF90eXBlX2NvbnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAg
ZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgp
CisgICAgaWYgZWxlbWVudF90eXBlLmlzX3ZvaWQoKToKKyAgICAgICAgZWxlbWVudF90eXBlID0g
Z2V0X2NwcF90eXBlKCdHQ0dMY2hhcicpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToK
KyAgICAgICAgaW5saW5lX2NhcGFjaXR5ID0gMTYgaWYgImZsb2F0IiBpbiBlbGVtZW50X3R5cGUu
dHlwZV9uYW1lIGVsc2UgNAorICAgICAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiVmVjdG9yPHtz
dHIoZWxlbWVudF90eXBlKX0sIHtzdHIoaW5saW5lX2NhcGFjaXR5KX0+IikKKyAgICByZXR1cm4g
Z2V0X2NwcF90eXBlKGYic3RkOjphcnJheTx7c3RyKGVsZW1lbnRfdHlwZSl9LCB7c3RyKHR5cGUu
Z2V0X2FyaXR5KCkpfT4iKQorCitkZWYgd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNp
b24oZXhwciA6IGNwcF9leHByLCB0eXBlIDogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhw
cjoKKyAgICBwb2ludGVyX2Nhc3RfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0
X3BvaW50ZXJfdHlwZSgpCisgICAgaWYgdHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAg
cmV0dXJuIGNwcF9leHByKHR5cGUsIGYibWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8e3N0
cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7c3RyKGV4cHIpfS5z
aXplKCkpIikKKworICAgIGFzc2VydCh0eXBlLmlzX3NwYW4oKSkKKyAgICByZXR1cm4gY3BwX2V4
cHIodHlwZSwgZiJtYWtlR0NHTFNwYW48e3N0cih0eXBlLmdldF9hcml0eSgpKX0+KHJlaW50ZXJw
cmV0X2Nhc3Q8e3N0cihwb2ludGVyX2Nhc3RfdHlwZSl9Pih7c3RyKGV4cHIpfS5kYXRhKCkpKSIp
CisKKyMgU2VlIG1lc3NhZ2VzLnB5IGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlCit3ZWJraXRfaXBj
X2J1aWx0aW5fdHlwZXMgPSBzZXQoCisgICAgWyJ1aW50OF90IiwgInVpbnQxNl90IiwgInVpbnQz
Ml90IiwgInVpbnQ2NF90IiwgImludDhfdCIsICJpbnQxNl90IiwgImludDMyX3QiLCAiaW50NjRf
dCIsICJib29sIiwgImZsb2F0IiwgImRvdWJsZSIgImJvb2wiXQorKQorCisKK2RlZiB3ZWJraXRf
aXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHR5cGU6IGNwcF90eXBlKSAtPiBjcHBfdHlw
ZToKKyAgICBpZiB0eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0aW5fdHlwZXM6Cisg
ICAgICAgIHJldHVybiB0eXBlCisgICAgcmV0dXJuIHR5cGUuZ2V0X3J2YWx1ZV90eXBlKCkKKwor
CitkZWYgd2Via2l0X2lwY19tb3ZlX2V4cHIoZXhwcjogY3BwX2V4cHIpIC0+IGNwcF9leHByOgor
ICAgIGlmIGV4cHIudHlwZS50eXBlX25hbWUgaW4gd2Via2l0X2lwY19idWlsdGluX3R5cGVzOgor
ICAgICAgICByZXR1cm4gZXhwcgorICAgIHJldHVybiBjcHBfbW92ZV9leHByKGV4cHIpCisKKwor
ZGVmIHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYzogY3BwX2Z1bmMpOgorICAgIHJldHVybiBmdW5j
Lm5hbWVbMF0uY2FwaXRhbGl6ZSgpICsgZnVuYy5uYW1lWzE6XSArIGZ1bmMub3ZlcmxvYWRfc3Vm
Zml4CisKKworY2xhc3Mgd2Via2l0X2lwY19tc2cob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAg
ICBpbl9hcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBvdXRfYXJnczogY3BwX2FyZ19saXN0CisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUg
PSB3ZWJraXRfaXBjX21zZ19uYW1lKGZ1bmMpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0g
ZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgaXBjX2luX2FyZ3MgPSBbY3BwX2Fy
Zyh3ZWJraXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSkgZm9yIGEgaW4gaW5fYXJnc10KKyAg
ICAgICAgaXBjX291dF9hcmdzID0gW10KKyAgICAgICAgaWYgbm90IGZ1bmMucmV0dXJuX3R5cGUu
aXNfdm9pZCgpOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9p
cGNfdHlwZXNbZnVuYy5yZXR1cm5fdHlwZV0sICJyZXR1cm5WYWx1ZSIpXQorICAgICAgICBmb3Ig
YSBpbiBvdXRfYXJnczoKKyAgICAgICAgICAgIGlwY19vdXRfYXJncyArPSBbY3BwX2FyZyh3ZWJr
aXRfaXBjX3R5cGVzW2EudHlwZV0sIGEubmFtZSldCisgICAgICAgICAgICBpZiBhLnR5cGUuaXNf
ZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgaXBjX2luX2FyZ3MgKz0gW2NwcF9hcmco
Z2V0X2NwcF90eXBlKCJ1aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpXQorICAgICAgICBzZWxm
LmluX2FyZ3MgPSBjcHBfYXJnX2xpc3QoaXBjX2luX2FyZ3MpCisgICAgICAgIHNlbGYub3V0X2Fy
Z3MgPSBjcHBfYXJnX2xpc3QoaXBjX291dF9hcmdzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgIGlmIGxlbihzZWxmLm91dF9hcmdzLmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJu
IGYiXG4gICAgdm9pZCB7c2VsZi5uYW1lfSh7c3RyKHNlbGYuaW5fYXJncyl9KSAtPiAoe3N0cihz
ZWxmLm91dF9hcmdzKX0pIFN5bmNocm9ub3VzIgorICAgICAgICByZXR1cm4gZiJcbiAgICB2b2lk
IHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0pIgorCisKK2NsYXNzIHdlYmtpdF9pcGNf
Y3BwX3Byb3h5X2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBtc2dfbmFtZTogc3Ry
CisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3BwX2FyZ19saXN0CisKKyAg
ICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisg
ICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICByZXR1cm5fc3RtdHM6IExpc3Rbc3Ry
XQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczogTGlzdFtjcHBf
ZXhwcl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAg
ICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCisgICAgICAgIHNlbGYubXNnX25hbWUgPSB3
ZWJraXRfaXBjX21zZ19uYW1lKGNwcF9mdW5jKQorICAgICAgICBzZWxmLnJldHVybl90eXBlID0g
Y3BwX2Z1bmMucmV0dXJuX3R5cGUKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2Z1bmMuYXJncwor
ICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRz
ID0gW10KKyAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnJl
dHVybl9zdG10cyA9IFtdCisgICAgICAgIHNlbGYuaW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxm
Lm91dF9leHBycyA9IFtdCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0
X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3Bw
X2Z1bmMucmV0dXJuX3R5cGUpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmdzKGluX2FyZ3Mp
CisgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJncyhvdXRfYXJncykKKyAgICAgICAgc2VsZi5w
cm9jZXNzX2NhbGwoKQorCisgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKKyAgICAgICAgaW5f
ZXhwcnMgPSAiLCAiLmpvaW4oW3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkKKyAgICAg
ICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9leHBycykK
KyAgICAgICAgaXNfYXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91
dF9leHBycykgPT0gMAorICAgICAgICBpZiBpc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYuY2Fs
bF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHNlbmRfcmVzdWx0ID0gIiIKKyAgICAgICAgICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0
bXRzOiAKKyAgICAgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRSZXN1bHQgPSAi
CisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbCisgICAgICAgICAgICAg
ICAgICAgICJpZiAoc2VuZFJlc3VsdCkiICsgKCIgeyIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0
bXRzKSA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAgICBdICsgWyIgICAgIiArIHMgZm9yIHMg
aW4gc2VsZi5wb3N0X2NhbGxfc3RtdHNdICsgWworICAgICAgICAgICAgICAgICAgICAoIn0iIGlm
IGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmIntz
ZW5kX3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ontz
ZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOyIsCisgICAgICAgICAgICBdCisKKworICAgIGRlZiBwcm9j
ZXNzX2luX2FyZ3Moc2VsZiwgaW5fYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAgIGZvciBp
IGluIGluX2FyZ3M6CisgICAgICAgICAgICBpZiBpLnR5cGUuaXNfY29uc3RfcG9pbnRlcigpOgor
ICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBzZWxmLmluX2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhw
cihpLnR5cGUsIGkubmFtZSksIHdlYmtpdF9pcGNfdHlwZXNbaS50eXBlXSldCisKKyAgICBkZWYg
cHJvY2Vzc19vdXRfYXJncyhzZWxmLCBvdXRfYXJnczogTGlzdFtjcHBfYXJnXSk6CisgICAgICAg
IGZvciBvIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaWYgby50eXBlLmlzX3BvaW50ZXIoKToK
KyAgICAgICAgICAgICAgICB2YWx1ZV90eXBlID0gby50eXBlLmdldF92YWx1ZV90eXBlKCkKKyAg
ICAgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3Zh
bHVlX3R5cGVdCisgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY192YWx1ZV90
eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQorICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3Rt
dHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9ID0ge3sgfX07Il0KKyAgICAgICAg
ICAgICAgICBlID0gY3BwX2V4cHIodi50eXBlLCB2Lm5hbWUpCisgICAgICAgICAgICAgICAgc2Vs
Zi5vdXRfZXhwcnMgKz0gW2VdCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMg
Kz0gWworICAgICAgICAgICAgICAgICAgICAjZm10OiBvZmYKKyAgICAgICAgICAgICAgICAgICAg
ZiJpZiAoe28ubmFtZX0pIiwKKyAgICAgICAgICAgICAgICAgICAgZiIgICAgKntvLm5hbWV9ID0g
e3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCisgICAgICAgICAgICAg
ICAgICAgICNmbXQ6IG9uCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZWxpZiBvLnR5
cGUuaXNfc3BhbigpOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9p
cGNfdHlwZXNbby50eXBlXQorICAgICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdlYmtp
dF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICB2ID0gY3Bw
X2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAg
c2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0K
KyAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2Lm5h
bWUpXQorICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJz
aXplX3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0
X2NhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgICAgICAgICBmIm1lbWNweSh7by5uYW1lfS5k
YXRhLCB7di5uYW1lfS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXplb2Yoe3N0cih3ZWJr
aXRfaXBjX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkpfSkpOyIKKyAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtj
cHBfZXhwcihvLnR5cGUsIG8ubmFtZSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUo
c2VsZiwgcmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNf
dm9pZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBy
ZXR1cm5fdHlwZQorICAgICAgICBpcGNfcmV0dXJuX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW3Jl
dHVybl90eXBlXQorICAgICAgICByZXR1cm5fdmFsdWVfZXhwciA9IGNwcF9leHByKGlwY19yZXR1
cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBb
ZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1ZV9leHByLmV4cHJ9ID0ge3sg
fX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbcmV0dXJuX3ZhbHVlX2V4cHJdICsgc2Vs
Zi5vdXRfZXhwcnMKKyAgICAgICAgc2VsZi5yZXR1cm5fc3RtdHMgPSBbZiJyZXR1cm4ge3N0cih3
ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgcmV0dXJuX3R5cGUpKX07
Il0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBub2xpbnQgPSAiIC8vIE5PTElO
VCIgaWYgIl8iIGluIHNlbGYubmFtZSBlbHNlICIiCisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYi
XG4gICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsgc2VsZi5jYWxsX3N0bXRz
ICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKyBzZWxmLnJldHVybl9zdG10cykKKyAgICAgICAgcmV0
dXJuIGYiIiJcbntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH0KK3t7e2JvZHl9Cit9
fSIiIgorCisKK2NsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyKG9iamVjdCk6
CisgICAgbmFtZTogc3RyCisgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCisgICAgYXJnczogY3Bw
X2FyZ19saXN0CisgICAgYm9keTogTGlzdFtzdHJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
Y3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQor
CisgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAg
ICBzZWxmLmFyZ3MgPSBjcHBfZnVuYy5hcmdzCisgICAgICAgIHNlbGYuYm9keSA9IFsibm90SW1w
bGVtZW50ZWQoKTsiXQorICAgICAgICBpZiBjcHBfZnVuYy5yZXR1cm5fdHlwZS50eXBlX25hbWUg
IT0gInZvaWQiOgorICAgICAgICAgICAgc2VsZi5ib2R5ICs9IFsicmV0dXJuIHsgfTsiXQorCisg
ICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9ICIgLy8gTk9MSU5UIiBpZiAi
XyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9ICJcbntcbiAgICAiICsgIlxu
ICAgICIuam9pbihzZWxmLmJvZHkpICsgIlxufSIKKyAgICAgICAgcmV0dXJuIGYiXG57c3RyKHNl
bGYucmV0dXJuX3R5cGUpfSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp7c2VsZi5uYW1l
fSh7c3RyKHNlbGYuYXJncyl9KXtub2xpbnR9e2JvZHl9IgorCisKK2NsYXNzIGNvbnRleHRfcHJv
eHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CisgICAgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgQysrIGltcGxlbWVudGF0aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6
IExpc3Rbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbF0KKyAgICB1bmltcGxzOiBMaXN0W3dlYmtp
dF9pcGNfY3BwX3Byb3h5X3BsYWNlaG9sZGVyXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1
bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10sIHVuaW1wbGVtZW50ZWQ6IEl0ZXJhYmxlW2NwcF9mdW5j
XSk6CisgICAgICAgIHNlbGYuaW1wbHMgPSBbd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChmKSBm
b3IgZiBpbiBmdW5jc10KKyAgICAgICAgc2VsZi51bmltcGxzID0gW3dlYmtpdF9pcGNfY3BwX3By
b3h5X3BsYWNlaG9sZGVyKGYpIGZvciBmIGluIHVuaW1wbGVtZW50ZWRdCisKKyAgICBkZWYgZ2V0
X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzdHIoaSkgZm9yIGkg
aW4gc2VsZi5pbXBscyArIHNlbGYudW5pbXBscykKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToK
KyAgICAgICAgd3JpdGVfZmlsZSgKKyAgICAgICAgICAgIGNvbnRleHRfcHJveHlfZnVuY3Rpb25z
X2ZuLAorICAgICAgICAgICAgY29udGV4dF9wcm94eV9mdW5jdGlvbnNfdGVtcGxhdGUuZm9ybWF0
KHNlbGYuZ2V0X2Z1bmN0aW9ucygpKSwKKyAgICAgICAgKQorCisKK2NsYXNzIHdlYmtpdF9pcGNf
Y3BwX2ltcGwob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QK
KyAgICBpc19leHRlbnNpb246IGJvb2wKKyAgICBwcmVfY2FsbF9zdG10czogTGlzdFtzdHJdCisg
ICAgY2FsbF9zdG10czogTGlzdFtzdHJdCisgICAgcG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0K
KyAgICBpbl9leHByczogTGlzdFtjcHBfZXhwcl0KKyAgICBvdXRfZXhwcnM6IExpc3RbY3BwX2V4
cHJdCisgICAgcmV0dXJuX3ZhbHVlX2V4cHI6IE9wdGlvbmFsW2NwcF9leHByXQorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBfZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9
IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSBjcHBfZnVuYy5v
dmVybG9hZF9zdWZmaXgKKyAgICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtdKQorICAg
ICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgorICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KKyAg
ICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmluX2V4cHJzID0g
W10KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgPSBbXQorICAgICAgICBzZWxmLnJldHVybl92YWx1
ZV9leHByID0gTm9uZQorCisgICAgICAgIHNlbGYucHJvY2Vzc19yZXR1cm5fdmFsdWUoY3BwX2Z1
bmMucmV0dXJuX3R5cGUpCisgICAgICAgIGluX2FyZ3MsIG91dF9hcmdzID0gY3BwX2Z1bmMuZ2V0
X2FyZ3NfY2F0ZWdvcmllcygpCisgICAgICAgIHNlbGYucHJvY2Vzc19hcmdzKGNwcF9mdW5jLmFy
Z3MuYXJncywgc2V0KGluX2FyZ3MpLCBzZXQob3V0X2FyZ3MpKQorICAgICAgICBzZWxmLnByb2Nl
c3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgorICAgICAgICBleHQgPSAi
Z2V0RXh0ZW5zaW9ucygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgorCisgICAgICAg
IGluX2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQorICAg
ICAgICBpc19hc3luYyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAorCisgICAgICAgIGNhbGxf
ZXhwciA9IGYibV9jb250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAg
ICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoKKyAgICAgICAgICAgIHNlbGYuY2FsbF9z
dG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vs
Zi5jYWxsX3N0bXRzICs9IFtmIntzdHIoc2VsZi5yZXR1cm5fdmFsdWVfZXhwcil9ID0ge2NhbGxf
ZXhwcn07Il0KKyAgICAgICAgaWYgbm90IGlzX2FzeW5jOgorICAgICAgICAgICAgb3V0X2V4cHJz
ID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLm91dF9leHBycykKKyAgICAgICAgICAg
IHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFtmImNvbXBsZXRpb25IYW5kbGVyKHtvdXRfZXhwcnN9
KTsiXQorCisgICAgZGVmIHByb2Nlc3NfYXJncyhzZWxmLCBhcmdzOiBMaXN0W2NwcF9hcmddLCBp
bl9hcmdzOiBTZXRbY3BwX2FyZ10sIG91dF9hcmdzOiBTZXRbY3BwX2FyZ10pOgorICAgICAgICBm
b3IgYSBpbiBhcmdzOgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX2NvbnN0X3BvaW50ZXIoKToK
KyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGlmIGEgaW4gaW5fYXJn
czoKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfaW5fYXJnKGEpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19vdXRfYXJnKGEpCisgICAgICAgIGlm
IHNlbGYub3V0X2V4cHJzOgorICAgICAgICAgICAgb3V0X2FyZ19kZWNscyA9ICIsICIuam9pbihm
IntzdHIoZS50eXBlKX0iIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQorICAgICAgICAgICAgc2Vs
Zi5hcmdzLmFyZ3MgKz0gW2NwcF9hcmcoZ2V0X2NwcF90eXBlKGYiQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh7b3V0X2FyZ19kZWNsc30pPiYmIiksICJjb21wbGV0aW9uSGFuZGxlciIpXQorCisgICAg
ZGVmIHByb2Nlc3NfaW5fYXJnKHNlbGYsIGE6IGNwcF9hcmcpOgorICAgICAgICBzZWxmLmFyZ3Mu
YXJncyArPSBbY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9tZXNzYWdlX2ZvcndhcmRlcl90eXBlKHdl
YmtpdF9pcGNfdHlwZXNbYS50eXBlXSksIGEubmFtZSldCisgICAgICAgIHNlbGYuaW5fZXhwcnMg
Kz0gW3dlYmtpdF9pcGNfY29udmVydF9leHByKGNwcF9leHByKHdlYmtpdF9pcGNfdHlwZXNbYS50
eXBlXSwgYS5uYW1lKSwgYS50eXBlKV0KKworICAgIGRlZiBwcm9jZXNzX291dF9hcmcoc2VsZiwg
YTogY3BwX2FyZyk6CisgICAgICAgIGlmIGEudHlwZS5pc19wb2ludGVyKCk6CisgICAgICAgICAg
ICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlwZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisg
ICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodmFsdWVfYXJnLnR5cGUp
fSB7c3RyKHZhbHVlX2FyZy5uYW1lKX0gPSB7eyB9fTsiXQorICAgICAgICAgICAgc2VsZi5pbl9l
eHBycyArPSBbY3BwX2V4cHIoYS50eXBlLCBmIiZ7dmFsdWVfYXJnLm5hbWV9IildCisgICAgICAg
ICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVlX2FyZy5uYW1lKQorICAgICAg
ICAgICAgd2Via2l0X2lwY192YWx1ZV90eXBlID0gd2Via2l0X2lwY190eXBlc1tlLnR5cGVdCisg
ICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwg
d2Via2l0X2lwY192YWx1ZV90eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfZHluYW1pY19z
cGFuKCk6CisgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2Nv
bnRhaW5lcikpCisgICAgICAgICAgICBzaXplX2FyZyA9IGNwcF9hcmcoZ2V0X2NwcF90eXBlKCJ1
aW50NjRfdCIpLCBmInthLm5hbWV9U2l6ZSIpCisgICAgICAgICAgICBzZWxmLmFyZ3MuYXJncyAr
PSBbc2l6ZV9hcmddCisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNf
Z2V0X3NwYW5fc3RvcmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnBy
ZV9jYWxsX3N0bXRzICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5u
YW1lKX0oc3RhdGljX2Nhc3Q8c2l6ZV90Pih7YS5uYW1lfVNpemUpLCAwKTsiXQorICAgICAgICAg
ICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIGYie3N0b3JlX2Fy
Zy5uYW1lfSIpXQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBl
c1thLnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252
ZXJ0X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0
X2lwY190eXBlKV0KKyAgICAgICAgZWxpZiBhLnR5cGUuaXNfc3BhbigpOgorICAgICAgICAgICAg
YXNzZXJ0KGlzaW5zdGFuY2UoYS50eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAg
ICAgc3RvcmVfYXJnID0gY3BwX2FyZyh3ZWJraXRfaXBjX2dldF9zcGFuX3N0b3JlX3R5cGUoYS50
eXBlKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3Ry
KHN0b3JlX2FyZy50eXBlKX0ge3N0cihzdG9yZV9hcmcubmFtZSl9IHt7IH19OyJdCisgICAgICAg
ICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJn
Lm5hbWUpXQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1th
LnR5cGVdCisgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0
X2V4cHIoY3BwX2V4cHIoc3RvcmVfYXJnLnR5cGUsIHN0b3JlX2FyZy5uYW1lKSwgd2Via2l0X2lw
Y190eXBlKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBhLnR5cGUuaXNfcmVm
ZXJlbmNlKCkKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNb
YS50eXBlXQorICAgICAgICAgICAgdmFsdWVfYXJnID0gY3BwX2FyZyhhLnR5cGUuZ2V0X3ZhbHVl
X3R5cGUoKSwgYS5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7
c2VsZi5ucyh2YWx1ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSB7eyB9fTsiXQor
ICAgICAgICAgICAgZSA9IGNwcF9leHByKHZhbHVlX2FyZy50eXBlLCB2YWx1ZV9hcmcubmFtZSkK
KyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2VdCisgICAgICAgICAgICBzZWxmLm91dF9l
eHBycyArPSBbd2Via2l0X2lwY19tb3ZlX2V4cHIod2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwg
d2Via2l0X2lwY190eXBlKSldCisKKyAgICBkZWYgcHJvY2Vzc19yZXR1cm5fdmFsdWUoc2VsZiwg
cmV0dXJuX3R5cGU6IGNwcF90eXBlKToKKyAgICAgICAgaWYgcmV0dXJuX3R5cGUuaXNfdm9pZCgp
OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9p
cGNfdHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4
cHIocmV0dXJuX3R5cGUsICJyZXR1cm5WYWx1ZSIpCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3Rt
dHMgKz0gW2Yie3JldHVybl92YWx1ZV9leHByLnR5cGV9IHtyZXR1cm5fdmFsdWVfZXhwci5leHBy
fSA9IHt7IH19OyJdCisgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVf
ZXhwcih3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihyZXR1cm5fdmFsdWVfZXhwciwgaXBjX3JldHVy
bl90eXBlKSldCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlX2V4cHIgPSByZXR1cm5fdmFsdWVf
ZXhwcgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGJvZHkgPSAiIi5qb2luKGYi
XG4gICAgICAgIHtifSIgZm9yIGIgaW4gc2VsZi5wcmVfY2FsbF9zdG10cyArIHNlbGYuY2FsbF9z
dG10cyArIHNlbGYucG9zdF9jYWxsX3N0bXRzKQorICAgICAgICByZXR1cm4gZiIiIiAgICB2b2lk
IHtzZWxmLm5hbWV9e3NlbGYub3ZlcmxvYWRfc3VmZml4fSh7c3RyKHNlbGYuYXJncyl9KQorICAg
IHt7e2JvZHl9CisgICAgfX0iIiIKKworICAgIGRlZiBucyhzZWxmLCB0eXBlOiBjcHBfdHlwZSk6
CisgICAgICAgICMgVE9ETzogbmFtZXNwYWNlIGluZm8gaXMgbm90IHN0b3JlZCBpbiBuYW1lcy4K
KyAgICAgICAgaWYgdHlwZS50eXBlX25hbWUgPT0gIkFjdGl2ZUluZm8iOgorICAgICAgICAgICAg
cmV0dXJuICJXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6IiArIHN0cih0eXBlKQorICAgICAg
ICByZXR1cm4gc3RyKHR5cGUpCisKK2RlZiB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3Vm
Zml4KGZ1bmNzIDogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICBjb3VudHMgPSBjb2xsZWN0aW9u
cy5Db3VudGVyKGYubmFtZSBmb3IgZiBpbiBmdW5jcykKKyAgICBzdWZmaXhlcyA6IENvdW50ZXJb
c3RyXSA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoKQorICAgIGZvciBmIGluIGZ1bmNzOgorICAgICAg
ICBpZiBjb3VudHNbZi5uYW1lXSA+IDE6CisgICAgICAgICAgICBmLm92ZXJsb2FkX3N1ZmZpeCA9
IHN0cihzdWZmaXhlc1tmLm5hbWVdKQorICAgICAgICAgICAgc3VmZml4ZXMudXBkYXRlKFtmLm5h
bWVdKQorCisKK2NsYXNzIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6
CisgICAgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIEMrKyBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0
b3IuIgorICAgIGltcGxzOiBMaXN0W3dlYmtpdF9pcGNfY3BwX2ltcGxdCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSk6CisgICAgICAgIHNlbGYuaW1w
bHMgPSBbd2Via2l0X2lwY19jcHBfaW1wbChmKSBmb3IgZiBpbiBmdW5jc10KKworICAgIGRlZiBn
ZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0cihpKSBmb3Ig
aSBpbiBzZWxmLmltcGxzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0
ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBj
b250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAor
ICAgICAgICApCisKKworY2xhc3MgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3Iob2Jq
ZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgV2ViS2l0IElQQyBtZXNzYWdlIGRl
ZmluaXRpb24gZ2VuZXJhdG9yLiIKKyAgICBtc2dzOiBMaXN0W3dlYmtpdF9pcGNfbXNnXQorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNzOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgICAg
ICBzZWxmLm1zZ3MgPSBbd2Via2l0X2lwY19tc2coZikgZm9yIGYgaW4gZnVuY3NdCisKKyAgICBk
ZWYgZ2V0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIuam9pbihzdHIobSkgZm9y
IG0gaW4gc2VsZi5tc2dzKQorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYpOgorICAgICAgICB3cml0
ZV9maWxlKGNvbnRleHRfbWVzc2FnZXNfZm4sIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUuZm9y
bWF0KHNlbGYuZ2V0X21lc3NhZ2VzKCkpKQorCisKK2RlZiBjcmVhdGVfY3BwX2FyZyhhcmdfc3Bl
Yzogc3RyLCBhcmdfaW5kZXg6IGludCk6CisgICAgciA9IGFyZ19zcGVjLnJzcGxpdCgiICIsIDEp
CisgICAgbmFtZSA9ICIiCisgICAgdHlwZSA9IE5vbmUKKyAgICBpZiBsZW4ocikgPiAxIGFuZCBy
WzBdICE9ICJjb25zdCI6CisgICAgICAgIG5hbWUgPSByWzFdLnN0cmlwKCkKKyAgICAgICAgdHlw
ZSA9IGdldF9jcHBfdHlwZShyWzBdKQorICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSAiYXJne30i
LmZvcm1hdChhcmdfaW5kZXgpCisgICAgICAgIHR5cGUgPSBnZXRfY3BwX3R5cGUoYXJnX3NwZWMp
CisgICAgcmV0dXJuIGNwcF9hcmcodHlwZSwgbmFtZSkKKworCitkZWYgY3JlYXRlX2NwcF9hcmdf
bGlzdChhcmdzX3NwZWNzOiBJdGVyYWJsZVtzdHJdKToKKyAgICByZXR1cm4gY3BwX2FyZ19saXN0
KFtjcmVhdGVfY3BwX2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9yIGksIGUgaW4gZW51
bWVyYXRlKGFyZ3Nfc3BlY3MpXSkKKworCitkZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwg
cmV0dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJdLCBpc19leHRlbnNpb246IGJv
b2wpOgorICAgIHJldHVybiBjcHBfZnVuYyhuYW1lPW5hbWUsIHJldHVybl90eXBlPWdldF9jcHBf
dHlwZShyZXR1cm5fc3BlYyksIGFyZ3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzKSwg
aXNfZXh0ZW5zaW9uPWlzX2V4dGVuc2lvbikKKworCitkZWYgcmVhZF9saW5lc191bnRpbChsaW5l
cyA6IEl0ZXJhYmxlW3N0cl0sIG1hdGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jbc3RyLCBOb25lLCBO
b25lXToKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgaWYgcmUubWF0Y2gobWF0Y2gs
IGxpbmUuc3RyaXAoKSk6CisgICAgICAgICAgICBicmVhaworICAgICAgICB5aWVsZCBsaW5lCisK
K2RlZiBtYWluKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoInVzYWdl
OiAlcHJvZyBbb3B0aW9uc10iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlByaW50IHNvbWUgZGVidWcgaW5mbyBmcm9tIHRo
ZSBnZW5lcmF0b3Igc2NyaXB0IikKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQor
CisgICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdl
YiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzLgorCisgICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9u
cyBoZWFkZXIgaXMgcmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRh
dGlvbgorICAgICMgd2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlz
IG9yIGlzIG5vdCBhbiBleHRlbnNpb24gZnVuY3Rpb24uCisgICAgZXh0ZW5zaW9uX3NpZ25hdHVy
ZXMgOiBTZXRbc3RyXSA9IHNldCgpCisgICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4p
IGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBt
ID0gcmUubWF0Y2gociIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5l
KQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9m
dW5jKAorICAgICAgICAgICAgICAgICAgICBuYW1lPW1bMl0sCisgICAgICAgICAgICAgICAgICAg
IHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3Nw
bGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1U
cnVlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0
dXJlcy51cGRhdGUoW3N0cihmdW5jKV0pCisgICAgZnVuY3MgPSBbXQorICAgIHVuaW1wbGVtZW50
ZWQgPSBbXQorICAgIGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgorICAgICAgICB3aXRo
IG9wZW4oZm4pIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGl0ZXIoZi5yZWFkbGluZXMoKSkK
KyAgICAgICAgICAgIGZvciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBGdW5jdGlv
bnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkg
Z2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICAgICAgcGFzcworCisg
ICAgICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9m
IGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAg
ICAgICBtID0gcmUubWF0Y2gociJccyooXFMrKVxzKyhcdyspXCgoLiopXCkgZmluYWw7IiwgbGlu
ZSkKKyAgICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWUg
PSBtWzJdCisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMoCisgICAg
ICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybl9zcGVjPW1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNz
PWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNf
ZXh0ZW5zaW9uPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
ICAgIGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVz
CisgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQorICAgICAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5pbXBsZW1lbnRlZC5hcHBlbmQoZnVuYykK
KworCisgICAgd2Via2l0X2lwY19yZXNvbHZlX292ZXJsb2FkX3N1ZmZpeChmdW5jcykKKyAgICAj
IEluaXRpYWxpemUgV2ViS2l0IElQQyBnZW5lcmF0aW9uLiBDb25zdHJ1Y3QgdHlwZSBtYXBwaW5n
cyBmb3IgdGhlIHVzZWQgQysrIHR5cGVzIC0+IElQQyB0eXBlcy4KKyAgICAjIFRPRE86IG5hbWVz
cGFjaW5nIGlzc3Vlcy4KKyAgICBhaV90eXBlID0gZ2V0X2NwcF90eXBlKCJBY3RpdmVJbmZvJiIp
CisgICAgYWlfdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZSgiV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZUluZm8iKQorICAgIHdlYmtpdF9pcGNfdHlwZXNbYWlfdHlwZV0gPSBh
aV90cmFuc2Zlcl90eXBlCisKKyAgICB3aXRoIG9wZW4odHlwZXNfaW5wdXRfZm4pIGFzIGY6Cisg
ICAgICAgIGxpbmVzID0gaXRlcihmLnJlYWRsaW5lcygpKQorICAgICAgICBmb3IgXyBpbiByZWFk
X2xpbmVzX3VudGlsKGxpbmVzLCAiLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBX
ZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wg
c2NyaXB0LiIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbGluZSBpbiByZWFkX2xp
bmVzX3VudGlsKGxpbmVzLCAiLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdl
YmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2Vy
dFwoc3RkOjppc19zYW1lX3Y8KFx3KyksIChcdyspPlwpOyIsIGxpbmUpCisgICAgICAgICAgICBp
ZiBtOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbZ2V0X2NwcF90eXBlKG1bMV0p
XSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICBtID0gcmUubWF0Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA9PSBz
aXplb2ZcKChcdyspXClcKTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAg
ICAgICBjcHBfdHlwZSA9IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190
eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
c1tjcHBfdHlwZV0gPSBpcGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNf
Y29udmVydGVyc1soY3BwX3R5cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAg
ICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlw
ZSldID0gY3BwX3N0YXRpY19jYXN0CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgICMgRklYTUU6IEhlcmUgd2UgdXNlIDw9IGluc3RlYWQgb2YgPT0gZHVlIHRvIHBvaW50ZXJz
LCBzdWNoIGFzIEdDR0xzeW5jLCBHQ0dMaW50cHRyLCAuLi4uCisgICAgICAgICAgICAjIFRoaXMg
ZW5kcyB1cCBmYWlsaW5nIGlmIHRoZXJlIGV2ZXIgaXMgYXJyYXlzIG9mIHRoZXNlIHR5cGVzLCBz
aW5jZSBhcnJheXMgYXJlIGN1cnJlbnRseQorICAgICAgICAgICAgIyByZWludGVycHJldC1jYXN0
ZWQuCisgICAgICAgICAgICAjIFdlYktpdCBJUEMgcmVxdWlyZXMgb25lIHNpemVkIHR5cGUsIGJ1
dCB0aGUgc2l6ZSBvZiB0aGVzZSBwb2ludGVyLWJhc2VkIHZhbHVlcyB3aWxsIGNoYW5nZQorICAg
ICAgICAgICAgIyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgICAgICBtID0gcmUubWF0
Y2gociIuKnN0YXRpY19hc3NlcnRcKHNpemVvZlwoKFx3KylcKSA8PSBzaXplb2ZcKChcdyspXClc
KTsiLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9
IGdldF9jcHBfdHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90
eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBp
cGNfdHlwZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3Bw
X3R5cGUsIGlwY190eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGlwY190eXBlLCBjcHBfdHlwZSldID0gY3BwX3N0YXRp
Y19jYXN0CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG0gPSByZS5tYXRj
aChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVvZlwoKFx3KylcKSAm
JiBzaXplb2ZcKChcdyspXCkgPT0gc2l6ZW9mXCgoXHcrKVwpXCk7IiwgbGluZSkKKyAgICAgICAg
ICAgIGlmIG06CisgICAgICAgICAgICAgICAgY3BwX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkK
KyAgICAgICAgICAgICAgICBpcGNfdHlwZSA9IGdldF9jcHBfdHlwZShtWzJdKQorICAgICAgICAg
ICAgICAgIGNwcF9jYXN0X3Rocm91Z2hfdHlwZSA9IGdldF9jcHBfdHlwZShtWzRdKQorICAgICAg
ICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3BwX3R5cGVdID0gaXBjX3R5cGUKKyAgICAgICAg
ICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCBpcGNfdHlwZSld
ID0gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9wb2ludGVyX3Rocm91Z2goY3BwX2Nhc3RfdGhy
b3VnaF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1so
aXBjX3R5cGUsIGNwcF90eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Ro
cm91Z2goY3BwX2Nhc3RfdGhyb3VnaF90eXBlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAjIEZvciBhbGwgdHlwZXMgaW4gdGhlIGlucHV0IEFQSSwgZm9ybSBjb3JyZXNwb25kaW5n
IElQQyB0eXBlcyBhbmQgY29udmVyc2lvbnMuCisgICAgIyBUT0RPOiB0aGlzIGlzIG5vdCBkcml2
ZW4gYnkgdGhlIHR5cGluZy4KKyAgICBhbGxfdHlwZXMgPSBzZXQoKQorICAgIGZvciBmdW5jIGlu
IGZ1bmNzOgorICAgICAgIGFsbF90eXBlcy51cGRhdGUoZnVuYy5hcmdzLnR5cGVzKCkgKyBbZnVu
Yy5yZXR1cm5fdHlwZV0pCisgICAgIyBTb3J0IGJ5IGxlbiBzbyB0aGF0IHRlbXBsYXRlIGFyZ3Mg
Y29tZSBiZWZvcmUgdGVtcGxhdGVzLgorICAgIGZvciBjcHBfdHlwZSBpbiBzb3J0ZWQoYWxsX3R5
cGVzLCBrZXk9bGFtYmRhIHg6IGxlbih4LnR5cGVfbmFtZSkpOgorICAgICAgICBpZiBjcHBfdHlw
ZSBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgIAorICAg
ICAgICBpZiBjcHBfdHlwZS5pc19keW5hbWljX3NwYW4oKSBvciBjcHBfdHlwZS5pc19zcGFuKCk6
CisgICAgICAgICAgICB0cmFuc2Zlcl90eXBlID0gd2Via2l0X2lwY19nZXRfc3Bhbl90cmFuc2Zl
cl90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0g
PSB0cmFuc2Zlcl90eXBlLmdldF92YWx1ZV90eXBlKCkKKyAgICAgICAgICAgIGlmIGNwcF90eXBl
LmdldF9jb250YWluZWRfdHlwZSgpLmlzX2NvbnN0KCk6CisgICAgICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gd2Via2l0
X2lwY19zcGFuX3RyYW5zZmVyX3R5cGVfcmVpbnRlcnByZXRfY2FzdF9jb252ZXJzaW9uCisgICAg
ICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyh0cmFuc2Zlcl90eXBlLCBj
cHBfdHlwZSldID0gd2Via2l0X2lwY19tYWtlX2djZ2xzcGFuX2NvbnZlcnNpb24KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RvcmVfdHlwZSA9IHdlYmtpdF9pcGNfZ2V0X3Nw
YW5fc3RvcmVfdHlwZShjcHBfdHlwZSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVz
X2NvbnZlcnRlcnNbKHN0b3JlX3R5cGUsIHRyYW5zZmVyX3R5cGUpXSA9IGNwcF9hcnJheV9yZWlu
dGVycHJldF9jYXN0X2NvbnZlcnNpb24KKyAgICAgICAgZWxpZiBjcHBfdHlwZS5pc19yZWZlcmVu
Y2UoKSBvciBjcHBfdHlwZS5pc19jb25zdF9yZWZlcmVuY2UoKSBvciBjcHBfdHlwZS5pc19jb250
YWluZXIoKToKKyAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlw
ZSgpIGlmIG5vdCBjcHBfdHlwZS5pc19jb250YWluZXIoKSBlbHNlIGNwcF90eXBlCisgICAgICAg
ICAgICBpZiB2YWx1ZV90eXBlLmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAgICAgIGNvbnRh
aW5lZF90eXBlID0gdmFsdWVfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKQorICAgICAgICAgICAg
ICAgIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2NvbnRhaW5l
ZF90eXBlXQorICAgICAgICAgICAgICAgIGlmIHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUgPT0g
Y29udGFpbmVkX3R5cGU6CisgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNbY3Bw
X3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgIHRyYW5zZmVyX3R5cGUgPSBnZXRfY3BwX3R5cGUoZiJ7dmFsdWVfdHlwZS5nZXRfY29u
dGFpbmVyX25hbWUoKX08e3N0cih3ZWJraXRfaXBjX2NvbnRhaW5lZF90eXBlKX0+IikKKyAgICAg
ICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSB0cmFuc2Zlcl90eXBl
CisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogSGVyZSBtaWdodCBiZSBjYXNlIHdoZXJlIFZl
Y3RvcjxHQ0dMaW50PiB3YXMgdXNlZCBpbiB0aGUgaW50ZXJmYWNlIGFuZCBWZWN0b3I8aW50MzJf
dD4gaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBJUEMgZGVmaW5pdGlvbi4g
VGhlcmUgaXMgbm8gc2Vuc2libGUgd2F5IHRvIGRvIHRoaXMgYXQgdGhlIG1vbWVudC4gV2UgZG8g
bm90IGNvbnZlcnQsIHJhdGhlcgorICAgICAgICAgICAgICAgICAgICAjIGV4cGVjdCB0aGF0IGFs
bCB0aGUgaW52b2NhdGlvbnMgYXJlIHRha2VuIGNhcmUgb2YgdGhlIGZhY3QgdGhhdCBHQ0dMaW50
IGlzIHRoZSBzYW1lIHR5cGUgYXMgaW50MzJfdC4KKyAgICAgICAgICAgICAgICAgICAgIyBUaGlz
IHdpbGwgbm90IGhvbGQgZm9yIGFsbCB0eXBlcyBzdWNoIGFzIEdDR0xib29sZWFuLgorICAgICAg
ICAgICAgICAgICAgICAjd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgdHJh
bnNmZXJfdHlwZSldID0gY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBl
XSA9IHZhbHVlX3R5cGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNbY3BwX3R5cGVdID0gY3BwX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgIAorICAgICMgVGhl
IGlucHV0IHRvIHRoZSBnZW5lcmF0b3JzIGlzIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZS4K
KyAgICAjIFJ1biB0aGUgdmFyaW91cyBnZW5lcmF0b3JzLgorICAgIGdlbmVyYXRvcnMgPSBbCisg
ICAgICAgIGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKGZ1bmNzLCB1bmlt
cGxlbWVudGVkKSwKKyAgICAgICAgY29udGV4dF9tc2dfd2Via2l0X2lwY19nZW5lcmF0b3IoZnVu
Y3MpLAorICAgICAgICBjb250ZXh0X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihmdW5jcyksCisg
ICAgXQorICAgIGZvciBnIGluIGdlbmVyYXRvcnM6CisgICAgICAgIGcuZ2VuZXJhdGUoKQorCisg
ICAgaWYgb3B0aW9ucy52ZXJib3NlOgorICAgICAgICBwcmludCgiSW1wbGVtZW50ZWQ6IikKKyAg
ICAgICAgcHJpbnQoIiIuam9pbihmIiAgICB7c3RyKGkpfSBmaW5hbFxuIiBmb3IgaSBpbiBmdW5j
cykpCisgICAgICAgIHByaW50KCJVbmltcGxlbWVudGVkOiIpCisgICAgICAgIHByaW50KCIiLmpv
aW4oZiIgICAge3N0cih1KX0gZmluYWxcbiIgZm9yIHUgaW4gdW5pbXBsZW1lbnRlZCkpCisgICAg
ICAgIHByaW50KGYiSW1wbGVtZW50ZWQ6IHtsZW4oZnVuY3MpfSwgdW5pbXBsZW1lbnRlZDoge2xl
bih1bmltcGxlbWVudGVkKX0sIHRvdGFsOiB7bGVuKGZ1bmNzKStsZW4odW5pbXBsZW1lbnRlZCl9
IikKKyAgICAgICAgcHJpbnQoIkMrKyB0eXBlIG1hcCB0byBXZWJLaXQgSVBDIHR5cGUgbWFwOiIp
CisgICAgICAgIGZvciBfLCB0IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYg
dCBpbiB3ZWJraXRfaXBjX3R5cGVzOgorICAgICAgICAgICAgICAgIHByaW50KGYiICAgIHtzdHIo
dCl9IC0+IHtzdHIod2Via2l0X2lwY190eXBlc1t0XSl9IikKKyAgICAgICAgcHJpbnQoIkMrKyB0
eXBlcyB3aXRob3V0IFdlYktpdCBJUEMgdHlwZToiKQorICAgICAgICBmb3IgXywgdCBpbiBjcHBf
dHlwZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHQgbm90IGluIHdlYmtpdF9pcGNfdHlwZXM6
CisgICAgICAgICAgICAgICAgcHJpbnQoZiIgICAge3N0cih0KX0iKQorICAgICAgICBwcmludCgi
V2ViS2l0IElQQyB0eXBlIGNvbnZlcnNpb25zIikKKyAgICAgICAgZm9yIChhLCBiKSwgY29udmVy
dGVyIGluIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVycy5pdGVtcygpOgorICAgICAgICAgICAg
cHJpbnQoZiIgICAge3N0cihhKX0gLT4ge3N0cihiKX0gOiB7Y29udmVydGVyLl9fbmFtZV9ffSIp
CisgICAgICAgIHByaW50KCJEb25lLiIpCisgICAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9
PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZTVjMmY5ODY1NDVm
MzNjM2VkMDg0YjZhZDM0NTMwNzUxZDRmNjY0Li40MDgwM2U0MTE3OWE2YzM0YWE0NDI4YmI5OTNi
NDQ1ZWQ3NGFhYTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMDEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEltcGxlbWVudHMgYSBi
ZWdpbm5pbmcgb2YgYSByZW1vdGUgdmVyc2lvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BV
CisgICAgICAgIHByb2Nlc3MuIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0
IElQQy4KKworICAgICAgICBBZGRzIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGUgbWlzc2luZyBm
dW5jdGlvbmFsaXR5LiBEb2VzIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxlIHRoZSB0ZXN0cyB0aGF0
IGFjdHVhbGx5IHBhc3MgYnV0IHdoaWNoIHdlcmUgc2tpcHBlZCBiZWZvcmUgdGhlCisgICAgICAg
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAyMC0xMi0wOCAgU2FtIFNuZWRkb24gIDxnc25lZGRlcnNAYXBwbGUuY29tPgogCiAg
ICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2Ny
aXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vdmluZy1iZXR3ZWVuLWRvY3VtZW50cy9iZWZv
cmUtcHJlcGFyZS0qIGFuZCBtb3ZlLWJhY2stKiBhcmUgZmxha3kgZmFpbHVyZXMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGEyMjUyOGZhMWIyNjc4NzMxODUz
MDU4MDAzMzkwZmQ3NTM3ZGMwYzYuLmJkMDcwOTIyMzdjN2M3YmM0ODIxNDkwYTJkNDY3MjYzYzcw
OGM5NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzE3
LDYgKzMxNywxNCBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90
ZS1pbWFnZS1hbGxvd2VkLXdpdGgtY3JlZGVudGlhbHMuaHRtbAogaHR0cC90ZXN0cy93ZWJnbCBb
IFNraXAgXQoganMvc2hhcmVkLWFycmF5LWJ1ZmZlci13ZWJnbC5odG1sIFsgU2tpcCBdCiAKK3dl
YmtpdC5vcmcvYi8yMTgxODQgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFkt
ZmFsc2UuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJn
bC90ZXhJbWFnZTJELW1zZS1mbGlwWS10cnVlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8y
MTkzNDkgZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC11cGRhdGUtb24tZGlzcGxheS1jb25maWd1
cmF0aW9uLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMTkzNDkgZmFzdC9jYW52YXMvd2Vi
Z2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8y
MTkzNTEgZmFzdC9jYW52YXMvd2ViZ2wvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBbIEZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9wcmVtdWx0aXBseWFscGhhLXRl
c3QuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxOTM1MiBmYXN0L2NhbnZhcy93ZWJn
bC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1cmUuaHRtbCBbIEZhaWx1cmUgXQorCiB3ZWJn
cHUgWyBTa2lwIF0KIAogYWNjZXNzaWJpbGl0eS9wcmVzcy13b3Jrcy1vbi1jb250cm9sLXR5cGVz
Lmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415739</attachid>
            <date>2020-12-09 04:07:02 -0800</date>
            <delta_ts>2020-12-09 10:32:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217216-20201209140658.patch</filename>
            <type>text/plain</type>
            <size>415898</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlkMjMwZTAzYjhlZTE5
NjcxY2Q2NDUwYjhmYTdhYWFmZTFmZjc5Zi4uNThiMTgwOTc4ZGZlYjUwYTU1NTFkNjUwN2I5ZDdm
N2UwZDNlNTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAyMC0xMi0wMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50
cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZv
ciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBX
ZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxlbWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0
IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBhc3MgdGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4
dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBmcm9tIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAg
ICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBpcyBydW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUg
YW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBjb21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVh
c2Ugb2YgcmV2aWV3LgorCisgICAgICAgIEV4dHJhY3RzIGFuIGludGVyZmFjZSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB3aGljaCBpcworICAgICAgICB1c2VkIHRvIHN1Ym1p
dCBJT1N1cmZhY2VzIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuIEZvcgorICAgICAgICB3
ZWIgcHJvY2VzcyBXZWJHTCwgdGhlc2UgZ28gdG8gV2ViR0xMYXllci4gRm9yIEdQVSBwcm9jZXNz
IFdlYkdMLAorICAgICAgICB0aGUgSU9TdXJmYWNlcyBnbyB0byB0aGUgcHJlcGFyZUZvckRpc3Bs
YXkgY2FsbGVyLCBlLmcuIHRoZQorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgd2hp
Y2ggdGhlbiByZXR1cm4gdGhlIElPU3VyZmFjZXMgYmFjaworICAgICAgICB0byBXZWIgcHJvY2Vz
cyBzaWRlLiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHdpbGwgc2VuZAorICAgICAgICB0
aGVtIHRvIFdlYkdMTGF5ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhp
c3Rpbmcgd2ViZ2wgdGVzdHMgb25jZSB0aGUgaW1wbGVtZW50YXRpb24gd29ya3MuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4
QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UXVlcnlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5HUFVQ
cm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAoR0NHTFNwYW46OkdDR0xTcGFuKToKKyAg
ICAgICAgKEdDR0xTcGFuPEdDR0x2b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBs
YXRmb3JtVGV4dHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2VyUHJl
ZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRl
eHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXllckNvbXBvc2l0ZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNU
b0F1dG9DbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9ydHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuc3VyZUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9u
c0dMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9i
amVjdHVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
YW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5pdGlh
bGl6ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y3JlYXRlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVGb3JHUFVQcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZl
ckJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFs
bG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZUNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmFzQ1YpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnBsYXRmb3JtU3dhcENoYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbToKKyAgICAgICAgKC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0
aW86Y29udGVudHNPcGFxdWU6XSk6CisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6
CisgICAgICAgICgtW1dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldKToKKyAgICAgICAgKC1b
V2ViR0xMYXllciBkaXNwbGF5XSk6CisgICAgICAgIChXZWJHTExheWVyU3dhcENoYWluOjpwcmVz
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1
ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIw
LTEyLTA4ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIEFkZCBtaXNzaW5nIExGQyBndWFyZHMgYXJvdW5kIExpbmVMYXlvdXQgdXNhZ2UgZnJv
bSByMjcwNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmNTVjZTliNjFkYjMzZThhMzU1ODQ4NzdiOTAwMmU5YTlk
NjQxMzIuLmU3OTdmMzExNzA3ZjMxY2Y4ZWQ2MDllNDFhNzc4OWZiZTdlY2MzNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNzQyIEBACisyMDIwLTEyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJlbW90ZVdlYkdMQmFja2VuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2
ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEltcGxl
bWVudGVkIHdpdGggYSBnZW5lcmF0b3Igc2NyaXB0IGltcGxlbWVudGluZyB0aGUgSVBDIHRvIHBh
c3MgdGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMIG1lbWJlciBmdW5jdGlvbiBjYWxscyBm
cm9tIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUKKyAgICAgICAgcHJvY2Vzcy4gVGhlIHNjcmlwdCBp
cyBydW4gZHVyaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAg
ICBjb21taXR0ZWQgdG8gdGhlIHJlcG8gZm9yIGVhc2Ugb2YgcmV2aWV3LgorCisgICAgICAgIElt
cGxlbWVudCB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gV2ViS2l0IHNpZGUuIFRoaXMg
Y2xhc3Mgd2lsbAorICAgICAgICBmb3J3YXJkIGNhbGxzIHJlY2VpdmVkIHZpYSBJUEMgdG8gdGhl
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLiBBdCB0aGUKKyAgICAgICAgbW9tZW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIGluc3RhbmNlIGlzIGEgZGlyZWN0IGNoaWxkIG9mCisgICAgICAgIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisKKyAgICAgICAgQ29tcG9zaXRpbmcgaXMgaW1wbGVt
ZW50ZWQgb25seSBmb3IgUExBVEZPUk0oQ09DT0EpLgorCisgICAgICAgIE1pc3Npbmc6CisgICAg
ICAgICAtIFNpbXVsYXRlZCBjb250ZXh0IGxvc3MKKyAgICAgICAgIC0gU2ltdWxhdGVkIGNvbnRl
eHQgY2hhbmdlCisgICAgICAgICAtIFBhaW50IFdlYkdMIGNvbnRlbnRzIHRvIDJEIGNhbnZhcwor
ICAgICAgICAgLSBVcGxvYWQgdmlkZW8gdG8gV2ViR0wKKyAgICAgICAgIC0gVXBsb2FkIGNhbnZh
cyB0byBXZWJHTAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBo
aWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cmVjeWNsZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpwcmVzZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmRldGFjaENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6IEFkZGVkLgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDogQWRkZWQuCisgICAgICAgIChzZXRGYWls
TmV4dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKHN5bnRoZXNpemVHTEVycm9yKToKKyAgICAg
ICAgKG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChhY3RpdmVUZXh0
dXJlKToKKyAgICAgICAgKGF0dGFjaFNoYWRlcik6CisgICAgICAgIChiaW5kQXR0cmliTG9jYXRp
b24pOgorICAgICAgICAoYmluZEJ1ZmZlcik6CisgICAgICAgIChiaW5kRnJhbWVidWZmZXIpOgor
ICAgICAgICAoYmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChiaW5kVGV4dHVyZSk6CisgICAg
ICAgIChibGVuZENvbG9yKToKKyAgICAgICAgKGJsZW5kRXF1YXRpb24pOgorICAgICAgICAoYmxl
bmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKGJsZW5kRnVuYyk6CisgICAgICAgIChibGVu
ZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAg
ICAgKGNsZWFyKToKKyAgICAgICAgKGNsZWFyQ29sb3IpOgorICAgICAgICAoY2xlYXJEZXB0aCk6
CisgICAgICAgIChjbGVhclN0ZW5jaWwpOgorICAgICAgICAoY29sb3JNYXNrKToKKyAgICAgICAg
KGNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoY29weVRleEltYWdlMkQpOgorICAgICAgICAoY29w
eVRleFN1YkltYWdlMkQpOgorICAgICAgICAoY3JlYXRlQnVmZmVyKToKKyAgICAgICAgKGNyZWF0
ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoY3JlYXRl
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGNyZWF0ZVNoYWRlcik6CisgICAgICAgIChjcmVhdGVU
ZXh0dXJlKToKKyAgICAgICAgKGN1bGxGYWNlKToKKyAgICAgICAgKGRlbGV0ZUJ1ZmZlcik6Cisg
ICAgICAgIChkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChkZWxldGVQcm9ncmFtKToKKyAg
ICAgICAgKGRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChkZWxldGVTaGFkZXIpOgorICAg
ICAgICAoZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChkZXB0aEZ1bmMpOgorICAgICAgICAoZGVw
dGhNYXNrKToKKyAgICAgICAgKGRlcHRoUmFuZ2UpOgorICAgICAgICAoZGV0YWNoU2hhZGVyKToK
KyAgICAgICAgKGRpc2FibGUpOgorICAgICAgICAoZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToK
KyAgICAgICAgKGRyYXdBcnJheXMpOgorICAgICAgICAoZHJhd0VsZW1lbnRzKToKKyAgICAgICAg
KGVuYWJsZSk6CisgICAgICAgIChlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChm
aW5pc2gpOgorICAgICAgICAoZmx1c2gpOgorICAgICAgICAoZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoZnJvbnRGYWNl
KToKKyAgICAgICAgKGdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKGdldEFjdGl2ZUF0dHJpYik6
CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKGdldEF0dHJpYkxvY2F0aW9u
KToKKyAgICAgICAgKGdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoZ2V0U3RyaW5nKToK
KyAgICAgICAgKGdldEZsb2F0dik6CisgICAgICAgIChnZXRJbnRlZ2Vydik6CisgICAgICAgIChn
ZXRJbnRlZ2VyNjQpOgorICAgICAgICAoZ2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChnZXRQcm9n
cmFtaSk6CisgICAgICAgIChnZXRCb29sZWFudik6CisgICAgICAgIChnZXRFcnJvcik6CisgICAg
ICAgIChnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdldFBy
b2dyYW1JbmZvTG9nKToKKyAgICAgICAgKGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgorICAg
ICAgICAoZ2V0U2hhZGVyaSk6CisgICAgICAgIChnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAg
KGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChnZXRTaGFkZXJTb3VyY2UpOgor
ICAgICAgICAoZ2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAgIChnZXRUZXhQYXJhbWV0ZXJpKToK
KyAgICAgICAgKGdldFVuaWZvcm1mdik6CisgICAgICAgIChnZXRVbmlmb3JtaXYpOgorICAgICAg
ICAoZ2V0VW5pZm9ybXVpdik6CisgICAgICAgIChnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAg
ICAoZ2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAgKGhpbnQpOgorICAgICAgICAoaXNC
dWZmZXIpOgorICAgICAgICAoaXNFbmFibGVkKToKKyAgICAgICAgKGlzRnJhbWVidWZmZXIpOgor
ICAgICAgICAoaXNQcm9ncmFtKToKKyAgICAgICAgKGlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAg
KGlzU2hhZGVyKToKKyAgICAgICAgKGlzVGV4dHVyZSk6CisgICAgICAgIChsaW5lV2lkdGgpOgor
ICAgICAgICAobGlua1Byb2dyYW0pOgorICAgICAgICAocGl4ZWxTdG9yZWkpOgorICAgICAgICAo
cG9seWdvbk9mZnNldCk6CisgICAgICAgIChyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAg
KHNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAgKHNjaXNzb3IpOgorICAgICAgICAoc2hhZGVyU291
cmNlKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jKToKKyAgICAgICAgKHN0ZW5jaWxGdW5jU2VwYXJh
dGUpOgorICAgICAgICAoc3RlbmNpbE1hc2spOgorICAgICAgICAoc3RlbmNpbE1hc2tTZXBhcmF0
ZSk6CisgICAgICAgIChzdGVuY2lsT3ApOgorICAgICAgICAoc3RlbmNpbE9wU2VwYXJhdGUpOgor
ICAgICAgICAodGV4UGFyYW1ldGVyZik6CisgICAgICAgICh0ZXhQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKHVuaWZvcm0xZik6CisgICAgICAgICh1bmlmb3JtMWZ2KToKKyAgICAgICAgKHVuaWZvcm0x
aSk6CisgICAgICAgICh1bmlmb3JtMWl2KToKKyAgICAgICAgKHVuaWZvcm0yZik6CisgICAgICAg
ICh1bmlmb3JtMmZ2KToKKyAgICAgICAgKHVuaWZvcm0yaSk6CisgICAgICAgICh1bmlmb3JtMml2
KToKKyAgICAgICAgKHVuaWZvcm0zZik6CisgICAgICAgICh1bmlmb3JtM2Z2KToKKyAgICAgICAg
KHVuaWZvcm0zaSk6CisgICAgICAgICh1bmlmb3JtM2l2KToKKyAgICAgICAgKHVuaWZvcm00Zik6
CisgICAgICAgICh1bmlmb3JtNGZ2KToKKyAgICAgICAgKHVuaWZvcm00aSk6CisgICAgICAgICh1
bmlmb3JtNGl2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAodW5pZm9y
bU1hdHJpeDNmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKHVzZVBy
b2dyYW0pOgorICAgICAgICAodmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKHZlcnRleEF0dHJp
YjFmKToKKyAgICAgICAgKHZlcnRleEF0dHJpYjFmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIy
Zik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAodmVydGV4QXR0cmliM2Yp
OgorICAgICAgICAodmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKHZlcnRleEF0dHJpYjRmKToK
KyAgICAgICAgKHZlcnRleEF0dHJpYjRmdik6CisgICAgICAgICh2ZXJ0ZXhBdHRyaWJQb2ludGVy
KToKKyAgICAgICAgKHZpZXdwb3J0KToKKyAgICAgICAgKGJ1ZmZlckRhdGEwKToKKyAgICAgICAg
KGJ1ZmZlckRhdGExKToKKyAgICAgICAgKGJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAocmVhZG5Q
aXhlbHMwKToKKyAgICAgICAgKHJlYWRuUGl4ZWxzMSk6CisgICAgICAgICh0ZXhJbWFnZTJEMCk6
CisgICAgICAgICh0ZXhJbWFnZTJEMSk6CisgICAgICAgICh0ZXhTdWJJbWFnZTJEMCk6CisgICAg
ICAgICh0ZXhTdWJJbWFnZTJEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4SW1hZ2UyRDApOgor
ICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlMkQxKToKKyAgICAgICAgKGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEMCk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEpOgorICAgICAg
ICAoZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChkcmF3RWxlbWVudHNJbnN0YW5jZWQp
OgorICAgICAgICAodmVydGV4QXR0cmliRGl2aXNvcik6CisgICAgICAgIChjcmVhdGVWZXJ0ZXhB
cnJheSk6CisgICAgICAgIChkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChpc1ZlcnRleEFy
cmF5KToKKyAgICAgICAgKGJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAgIChjb3B5QnVmZmVyU3Vi
RGF0YSk6CisgICAgICAgIChnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGJsaXRGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChpbnZh
bGlkYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToK
KyAgICAgICAgKHJlYWRCdWZmZXIpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKToKKyAgICAgICAgKHRleFN0b3JhZ2UyRCk6CisgICAgICAgICh0ZXhTdG9yYWdlM0Qp
OgorICAgICAgICAodGV4SW1hZ2UzRDApOgorICAgICAgICAodGV4SW1hZ2UzRDEpOgorICAgICAg
ICAodGV4U3ViSW1hZ2UzRDApOgorICAgICAgICAodGV4U3ViSW1hZ2UzRDEpOgorICAgICAgICAo
Y29weVRleFN1YkltYWdlM0QpOgorICAgICAgICAoY29tcHJlc3NlZFRleEltYWdlM0QwKToKKyAg
ICAgICAgKGNvbXByZXNzZWRUZXhJbWFnZTNEMSk6CisgICAgICAgIChjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRDApOgorICAgICAgICAoY29tcHJlc3NlZFRleFN1YkltYWdlM0QxKToKKyAgICAgICAg
KGdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAodW5pZm9ybTF1aSk6CisgICAgICAgICh1
bmlmb3JtMnVpKToKKyAgICAgICAgKHVuaWZvcm0zdWkpOgorICAgICAgICAodW5pZm9ybTR1aSk6
CisgICAgICAgICh1bmlmb3JtMXVpdik6CisgICAgICAgICh1bmlmb3JtMnVpdik6CisgICAgICAg
ICh1bmlmb3JtM3Vpdik6CisgICAgICAgICh1bmlmb3JtNHVpdik6CisgICAgICAgICh1bmlmb3Jt
TWF0cml4MngzZnYpOgorICAgICAgICAodW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKHVu
aWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgICh1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAg
ICAodW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKHVuaWZvcm1NYXRyaXg0eDNmdik6Cisg
ICAgICAgICh2ZXJ0ZXhBdHRyaWJJNGkpOgorICAgICAgICAodmVydGV4QXR0cmliSTRpdik6Cisg
ICAgICAgICh2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKHZlcnRleEF0dHJpYkk0dWl2KToK
KyAgICAgICAgKHZlcnRleEF0dHJpYklQb2ludGVyKToKKyAgICAgICAgKGRyYXdSYW5nZUVsZW1l
bnRzKToKKyAgICAgICAgKGRyYXdCdWZmZXJzKToKKyAgICAgICAgKGNsZWFyQnVmZmVyaXYpOgor
ICAgICAgICAoY2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoY2xlYXJCdWZmZXJmdik6CisgICAg
ICAgIChjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKGNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKGRl
bGV0ZVF1ZXJ5KToKKyAgICAgICAgKGlzUXVlcnkpOgorICAgICAgICAoYmVnaW5RdWVyeSk6Cisg
ICAgICAgIChlbmRRdWVyeSk6CisgICAgICAgIChnZXRRdWVyeSk6CisgICAgICAgIChnZXRRdWVy
eU9iamVjdHVpKToKKyAgICAgICAgKGNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoZGVsZXRlU2Ft
cGxlcik6CisgICAgICAgIChpc1NhbXBsZXIpOgorICAgICAgICAoYmluZFNhbXBsZXIpOgorICAg
ICAgICAoc2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoc2FtcGxlclBhcmFtZXRlcmYpOgor
ICAgICAgICAoZ2V0U2FtcGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoZ2V0U2FtcGxlclBhcmFt
ZXRlcmkpOgorICAgICAgICAoZmVuY2VTeW5jKToKKyAgICAgICAgKGlzU3luYyk6CisgICAgICAg
IChkZWxldGVTeW5jKToKKyAgICAgICAgKGNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKHdhaXRT
eW5jKToKKyAgICAgICAgKGdldFN5bmNpKToKKyAgICAgICAgKGNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGlzVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoYmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGJlZ2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZW5kVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChnZXRU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpOgorICAgICAgICAocGF1c2VUcmFuc2Zvcm1GZWVkYmFj
ayk6CisgICAgICAgIChyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChiaW5kQnVm
ZmVyQmFzZSk6CisgICAgICAgIChiaW5kQnVmZmVyUmFuZ2UpOgorICAgICAgICAoZ2V0VW5pZm9y
bUluZGljZXMpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoZ2V0VW5p
Zm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6Cisg
ICAgICAgICh1bmlmb3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKGdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2KToKKyAgICAgICAgKGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAo
YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAocmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUpOgorICAgICAgICAoY3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAo
ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoaXNWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgIChiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKToKKyAgICAgICAgKGluc2VydEV2ZW50TWFya2VyRVhUKToKKyAgICAgICAgKHB1
c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAg
IChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgor
ICAgICAgICAoZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAodmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICog
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmguCisgICAgICAg
IChJUEM6OkFycmF5UmVmZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OkFy
cmF5UmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKElQQzo6QXJyYXlSZWZlcmVu
Y2U6OnNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpBcnJheVJlZmVyZW5jZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6
ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNv
ZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpFbmNvZGVyOjp3cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5k
ZXI6OnNlbmRTeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL0F1
eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAqIFNo
YXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
c2VuZFN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFy
a0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXplZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVu
Y3Rpb25zR2VuZXJhdGVkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdl
MkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRp
c2FibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJM
b2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEJ1ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3Ip
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1l
dGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1mdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQ
cm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1NoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVy
YWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Np
c3Nvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNo
YWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFy
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNGYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dy
YW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWI0Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNz
ZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliRGl2aXNvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1h
Z2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0
YUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0ydWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4
M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1Jh
bmdlRWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1
ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5k
UXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1l
dGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRy
YW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVy
UmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRVbmlmb3JtSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybUJsb2NrQmluZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1
ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRl
eEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2
ZW50TWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhl
bHNSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYkl1aXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFuaV92Um9idXN0QU5HTEUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRNdWx0
aXNhbXBsZWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWZ2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVj
dHVpNjR2Um9idXN0QU5HTEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQ
VVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vz
c2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRTeW5jV2l0aERlbGF5
ZWRSZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0wgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTAzICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSVBDIHNob3VsZCBzdXBwb3J0
IG5vbi1ieXRlIGFsaWduZWQgZGF0YSByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBi
MWY1NGY2MWMyYTNkYjlmMWRlMTRmMmRlZWNjOWQ5N2Y0MThhYzgxLi4yOWIyY2E2ODk2OTk0MWFk
NGYyOTdmOTMxZWE0YWIyZTQwZmRhNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNTQsNiAr
MTI1NCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2ZlYjAzOGFl
ZDhlYWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgyZS4uY2U2ZjEzYjg4YmQ0MDc3YTBjNTRiMzE1
ODk3MjUxMzI2NmRkYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMxMSwxMCAr
MzExLDExIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlUG9vbENvY29hLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOWJmYWU5NjRlMjRkMmMyN2JiZTc4
N2ZiOTAwMTMzNjM1ZTg0MDEyMy4uM2I3ZTRhZjA2ZjNlZjAwNDAzNGU3YmYzMWM5N2EyYTU3MGYw
ZWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzUsNiArMTk3NSw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGM4ZTVhZjFmZWYxMDVmMzRjODE3ODE3
MmZjMWRjZDY3ZGU0ZTdmNjUuLjhmOTlmOWExOTE4Yzk1NTg4NWZiMmFjYjk5YzhkMWE3NTI2NWFh
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzU4LDEyICszNTgsMTQgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYzdjZDg3
YzgzYjIzMGFlOTRjN2NlMzAxYWNlMTUwM2E5ZmM2YjgyLi4yNDFjZTBmODhjZjcwZDM1NjFlN2Ey
NzZiMzQ2Zjk0ODRkNzc4OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDU2LDcgKzIwNTYsNyBAQAogCQk2RTQ3RTY2MTEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFNEFC
Q0Q1MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDMxMzhFQTBCNzAwNzFE
MjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggKi87IH07CiAJCTZFNEU5MUFGMTBGN0ZCMzEw
MEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsKKwkJNkU2N0QyQTkxMjgw
RThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lv
bnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0
MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURD
RDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMw
MEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRl
bXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07CkBAIC0yMjUwLDYgKzIyNTAsOCBAQAogCQk3
QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRC
RUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlD
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjZEQzgxOTI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCOTA0MTcwMjU1MDEx
NDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4
MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3
NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkw
NkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC0xMDI1NSw5ICsxMDI1NywxNCBAQAogCQk3
QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I2NEMwQjQyNTRDM0Ix
NjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBD
NzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjZEQzgxNzI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNkUyNTUwMTEwOTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDgg
LyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFG
M0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3Bw
LmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJF
RjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDExRjNGMjRGQUQzNjAwMDVCRUYxMCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5l
cmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjY2NTksNiArMjY2NjYsOCBAQAogCQkJCTA3NEU4MkI5MThBNjlG
MEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmggKi8sCisJCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKKwkJCQk3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkw
NzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJ
CTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJ
CTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0yNjgy
Niw2ICsyNjgzNSw4IEBACiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKIAkJCQlCNTMyMEQ2QTEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0Mw
MDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSAqLywKKwkJCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
LAorCQkJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovLAogCQkJCUNEQTU5NTk2MjE0NkRGNzgwMEE4
NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDREE1OTU5NzIxNDZERjc4MDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLm1tICovLApAQCAtMjY4MzcsNiArMjY4NDgsNyBA
QAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3Bl
bkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAorCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLAogCQkJCUNERUIz
RDcyMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovLAogCQkJCUNE
RUIzRDczMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCAqLywKIAkJCQlD
RDhGNjY3MDI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8s
CkBAIC0zMjE0NCw2ICszMjE1Niw3IEBACiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcy
MUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQw
MDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMzQw
OTAsNiArMzQxMDMsNyBAQAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3RDYzNEQw
MEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTlB
MjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I5
MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3Rl
UGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAv
KiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCmluZGV4IDIxZmQ2MWY5ZGIwM2IyYWRj
YzJmZGEyYmI0Yjk2MDViYWQ5OWZjMmEuLmI1ZGZmYTQxOTcyZjRmODc4ZTA1NTZhZDc4MzhiOGNh
OTQ5NmJlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbmNsdWRlICJJbWFnZURhdGEuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTI0LDQgKzEyMywzIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhKQogfQogCiB9Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0
YS5oCmluZGV4IDQxNWZiY2E5YjQ2M2NhNWIyODk0MmUwNzc3MjU2YjFhZWZhY2UzZjguLjg4ZGYw
YzQ1NWY3YWVmMmJiMjA3ZGM1NjU0YjdkZmViYTFmYjhiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURh
dGEuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGlu
ZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDcyYzI2NDQ2NjZjZjAzYTJm
NTlmMWUwOWZlOTMyOTNjYjgwYjZiYWUuLmY3YzZhMmU4MmE0YmYwMzdhMWI0NzdkNzgzZmE1NDFh
YzRmNTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MzIsOCArNzMyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNyZWF0ZShDYW4KICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OwogICAgIH0KLQotICAgIGF1dG8g
Y29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRlcywgaG9z
dFdpbmRvdyk7CisgICAgYXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShh
dHRyaWJ1dGVzLCBob3N0V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgaWYg
KGNhbnZhc0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3BhdGNoRXZl
bnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0Y3Jl
YXRpb25lcnJvckV2ZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDVjY2U1ZDNmZmIxYzlh
N2ZjYjE0N2VlNjM0NTExZGNiNDQ5ZGM1ZTAuLmI3MTBlNzE1YTY2ZGNhYzU2NzQyZGI2YmJlYTc0
MWQ2Zjg2MzQyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUzMCw2ICs1MzAsMTMgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW8KICAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlSW1hZ2VC
dWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCR0wpCitSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0w+IENocm9tZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSBjb25zdAoreworICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBkaXNwbGF5SUQo
KSk7Cit9CisjZW5kaWYKKwogUGxhdGZvcm1EaXNwbGF5SUQgQ2hyb21lOjpkaXNwbGF5SUQoKSBj
b25zdAogewogICAgIHJldHVybiBtX3BhZ2UuZGlzcGxheUlEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApp
bmRleCAyMzMyOGY1NmExOTEyMDQ5ZDQ3OTc2NDFkMDE0MDA1NTE1OTAzNTAyLi5hODlkZDFhMWQ4
NjVlNTMyOGViMDUwNTc2NTQwZDNmMjMyYTNjZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTg2
LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qg
b3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoUGxhdGZvcm1EaXNwbGF5SUQsIE9wdGlvbmFsPHVuc2lnbmVkPikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDNhOWUxZDY2OTA5N2U1OTVkOWI1N2ZjNGNm
ZjdlNjFhNWQxOGQwYTkuLjhmMThmZGZmMDQ5OTAzNzU4OThiMTdiOTI4Y2MwZTA2MDBlOTFjNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI1LDYgKzMyNSwxMCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQs
IENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKKyNp
ZiBFTkFCTEUoV0VCR0wpCisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYs
IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Cisj
ZW5kaWYKKwogICAgIC8vIFBhc3MgbnVsbHB0ciBhcyB0aGUgR3JhcGhpY3NMYXllciB0byBkZXRh
dGNoIHRoZSByb290IGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NM
YXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFj
aFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCmluZGV4IDQzZGIxZmZhZTAxMmJiMjE4OTRmMmNhOTYzMDcy
MTQ3NjZhYWRkOWUuLjczODExOGIyMWUzYzMzN2IyZTUzMWM5OTZkMDk5YmQzZTlhNTY5YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIldp
ZGdldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Myw2ICs2NCwxMCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOwogCisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBj
b25zdCA9IDA7CisjZW5kaWYKKwogICAgIC8vIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgbmF0
aXZlIGNsaWVudCBvZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBw
bGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCA9IDA7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCmluZGV4IGEyMjUzYzgxYmZl
MGEwYmIwOTEwYmRlNmMwZGIyNmFhNzg0NTJmYjMuLjdhZmJhNmVjNTA4ODE5Y2MxZWFiYWRjY2Rl
MGJiNzlhODM4NDJkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5oCkBAIC0zNCwxMyArMzQsMTYgQEAgV0VCQ09SRV9FWFBPUlQg
aW50IHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogaW5s
aW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wg
aXNJbkdQVVByb2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogI2VsaWYgIVBMQVRGT1JNKENPQ09B
KQogaW5saW5lIGJvb2wgaXNJbldlYlByb2Nlc3MoKSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUg
Ym9vbCBpc0luR1BVUHJvY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogCiBib29sIGlzSW5XZWJQcm9jZXNzKCk7Citib29sIGlzSW5HUFVQcm9j
ZXNzKCk7CiBib29sIGlzSW5OZXR3b3JrUHJvY2VzcygpOwogCiBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
c0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzQ29jb2EubW0KaW5kZXggZmJkMWQ0M2MwOGY4NmRjM2MxOGVkMjE1NjBmMDhjZjg3
ZmExYWYzOS4uYjA2ZmY0N2RmYzU0MTcyMWY2NGFhMGRlMzhiM2I5MmY4ODM4MjQ2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KQEAgLTk2LDYgKzk2LDEyIEBAIGJvb2wgaXNJbldlYlBy
b2Nlc3MoKQogICAgIHJldHVybiBtYWluQnVuZGxlSXNXZWJQcm9jZXNzOwogfQogCitib29sIGlz
SW5HUFVQcm9jZXNzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNHUFVQcm9jZXNz
ID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaGFzUHJlZml4OkAi
Y29tLmFwcGxlLldlYktpdC5HUFUiXTsKKyAgICByZXR1cm4gbWFpbkJ1bmRsZUlzR1BVUHJvY2Vz
czsKK30KKwogYm9vbCBpc0luTmV0d29ya1Byb2Nlc3MoKQogewogICAgIHN0YXRpYyBib29sIG1h
aW5CdW5kbGVJc05ldHdvcmtQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl0gaGFzUHJlZml4OkAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nIl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4
IGM0ZTc3NzhkYjZhNDQ4ZmQwYTVlNjUxNTkxZmVlYTE0NTM4NjM4MjMuLmQ1MDIxZGQzMzRlZGY5
MWEzNDIzMGJlMDE2ODkyMDc0MjQ5ZWIwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yNjcsNyArMjY3LDEwIEBAIHB1YmxpYzoK
ICAgICAvLyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBMRVRJT05fU1RBVFVTX0tIUiA9IDB4OTFCMTsKIAotICAgIC8vIFdl
YkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRlcnN0YW5kcy4K
KyAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbgorICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSA9IDB4OTNBODsKKworICAgIC8v
IFdlYkdMIGZ1bmN0aW9ucy4KIAogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8gTm90
ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20gdGhlIEdMX0FSQl9yb2J1c3Ru
ZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAKaW5kZXggYWUwZjA3YzJkZTRiNTAzNzcxOTNiYjVmN2I5YTA0ZDljYWYy
OGU4NS4uOTUwM2I0YTdlMjA3ZGRhNmNmYjdiMjYzYWM5ZjMyMTgxZWFlNGI3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcApAQCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgiCiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9i
c2VydmVyLmgiCkBAIC00MDMsNiArNDA1LDE1IEBAIHN0YXRpYyBib29sIHBhY2tQaXhlbHMoY29u
c3QgdWludDhfdCogc291cmNlRGF0YSwgR3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3sKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0w+IHJlc3VsdDsKKyAgICBpZiAoaG9zdFdpbmRvdykKKyAgICAgICAgcmVzdWx0ID0gaG9z
dFdpbmRvdy0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcyk7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUo
YXR0cmlidXRlcywgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogR3JhcGhp
Y3NDb250ZXh0R0w6OkdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRycywgRGVzdGluYXRpb24gZGVzdGluYXRpb24sIEdyYXBoaWNzQ29udGV4dEdMKikKICAg
ICA6IG1fYXR0cnMoYXR0cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA1OTYzNGU5MWQ3MDAwODhlOGFmOTZkODcy
ZGExNDliZGI3ZjMxMmJjLi4yMjNhNWM5YmYxNjk3ZjI1ZjExMmRiY2MxODZmODE5YjdjZTFkZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKQEAgLTU5LDYgKzU5LDggQEAgY2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0R0xDVjsKICNlbmRpZgogCisKKy8vIEJhc2UgY2xhc3MgZm9yIGdyYXBoaWNz
IGNvbnRleHQgZm9yIGltcGxlbWVudGluZyBXZWJHTCByZW5kZXJpbmcgbW9kZWwuCiBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dEdMPiB7
CiBwdWJsaWM6CiAgICAgLy8gV2ViR0wgMSBjb25zdGFudHMuCkBAIC05MDksMTQgKzkxMSwxNyBA
QCBwdWJsaWM6CiAgICAgICAgIEdDR0xpbnQgc2l6ZTsKICAgICB9OwogCisgICAgLy8gQ3JlYXRl
cyBhIEdyYXBoaWNzQ29udGV4dEdMIGluc3RhbmNlIHRvIHJlbmRlciBpbnRvIG9mZnNjcmVlbiBk
ZXN0aW5hdGlvbiBpbiBjb250ZXh0IG9mIEhvc3RXaW5kb3cuCisgICAgLy8gSG9zdFdpbmRvdyBt
aWdodCBhZmZlY3QgdGhlIGRlY2lzaW9uIHdoaWNoIGJhY2tlbmQgaXMgdG8gYmUgdXNlZC4KKyAg
ICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiwgSG9zdFdpbmRvdyopOworCiAgICAgR3JhcGhpY3NDb250ZXh0
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBEZXN0aW5hdGlvbiA9IERlc3RpbmF0aW9u
OjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMKiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7
CiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0woKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lk
IGFkZENsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMuYWRkKCZjbGllbnQpOyB9CiAg
ICAgdm9pZCByZW1vdmVDbGllbnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLnJlbW92ZSgm
Y2xpZW50KTsgfQogCi0gICAgLy8gV2ViR0wgZnVuY3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1n
cHVwLXdlYmdsIHVuZGVyc3RhbmRzLgotCisgICAgLy8gV2ViR0wgZnVuY3Rpb25zLgogICAgIHZp
cnR1YWwgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1H
TE9iamVjdCBzaGFkZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpID0g
MDsKQEAgLTEzOTUsNyArMTQwMCw2IEBAIGlubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
OjpnZXRJbnRlcm5hbGZvcm1hdGkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpCiAgICAgcmV0
dXJuIHZhbHVlWzBdOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVz
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
CmluZGV4IDIxNmJkMzY2OGYxMDdhODc5MTRkZTRmNjBiYmU1MjYzMTE1ZGZmZjguLjNiMDY0YzNl
NzY4ZWNjNGJmMDJiNzYyNWE2ZjFlZGJjYzgwODc0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0yNSw3ICsyNSw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+
CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ0LDE1ICs0NiwxNyBAQCB0eXBlZGVmIHVuc2lnbmVk
IEdDR0x1aW50OwogdHlwZWRlZiBmbG9hdCBHQ0dMZmxvYXQ7CiB0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IEdDR0xoYWxmZmxvYXQ7CiB0eXBlZGVmIGZsb2F0IEdDR0xjbGFtcGY7Ci10eXBlZGVmIGlu
dHB0cl90IEdDR0xpbnRwdHI7Ci10eXBlZGVmIGludHB0cl90IEdDR0xzaXplaXB0cjsKIHR5cGVk
ZWYgY2hhciBHQ0dMY2hhcjsKLXR5cGVkZWYgbG9uZyBsb25nIEdDR0xpbnQ2NDsKLXR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7CiB0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyog
R0NHTHN5bmM7CiB0eXBlZGVmIHZvaWQgR0NHTHZvaWQ7Ci10eXBlZGVmIGludHB0cl90IEdDR0x2
b2lkcHRyOwogCisvLyBUaGVzZSBHQ0dMIHR5cGVzIGRvIG5vdCBzdHJpY3RseSBtYXRjaCB0aGUg
R0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wgRVMgMi4wCisvLyBoZWFkZXIgZmlsZSBmb3Ig
YWxsIHBsYXRmb3Jtcy4KK3R5cGVkZWYgaW50cHRyX3QgR0NHTGludHB0cjsKK3R5cGVkZWYgaW50
cHRyX3QgR0NHTHNpemVpcHRyOwordHlwZWRlZiBpbnRwdHJfdCBHQ0dMdm9pZHB0cjsKK3R5cGVk
ZWYgbG9uZyBsb25nIEdDR0xpbnQ2NDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1
aW50NjQ7CiAKIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIApAQCAtNjAsMTMg
KzY0LDE3IEBAIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIHR5cGVkZWYgdW5z
aWduZWQgR0x1aW50OwogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRl
bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPgoraW5saW5lIGNvbnN0ZXhw
ciBzaXplX3QgZ2NHTFNwYW5EeW5hbWljRXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IGdjR0xT
cGFuRHluYW1pY0V4dGVudD4KIHN0cnVjdCBHQ0dMU3BhbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBFeHRlbnQ+CiBzdHJ1Y3QgR0NHTFNwYW4gewotICAgIGV4cGxpY2l0IEdDR0xTcGFu
KFQqIGFycmF5KQorICAgIGV4cGxpY2l0IEdDR0xTcGFuKFQqIGFycmF5LCBzaXplX3Qgc2l6ZSA9
IEV4dGVudCkKICAgICAgICAgOiBkYXRhKGFycmF5KQotICAgIHsgfQorICAgIHsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChzaXplLCBzaXplID09IEV4dGVudCk7CisgICAgfQogICAgIEdDR0xTcGFu
KFQgKCZhcnJheSlbRXh0ZW50XSkKICAgICAgICAgOiBkYXRhKGFycmF5KQogICAgIHsgfQpAQCAt
NzQsNiArODIsMTIgQEAgc3RydWN0IEdDR0xTcGFuIHsKICAgICBHQ0dMU3Bhbihjb25zdCBHQ0dM
U3BhbjxVLCBFeHRlbnQ+JiBvdGhlciwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRp
YmxlX3Y8VSgqKVtdLCBUKCopW10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQogICAgICAg
ICA6IGRhdGEob3RoZXIuZGF0YSkKICAgICB7IH0KKyAgICBHQ0dMU3BhbihzdGQ6OmFycmF5PFQs
IEV4dGVudD4mIGFycmF5KQorICAgICAgICA6IGRhdGEoYXJyYXkuZGF0YSgpKQorICAgIHsgfQor
ICAgIEdDR0xTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8VCwgRXh0ZW50PiYgYXJyYXkpCisgICAgICAg
IDogZGF0YShhcnJheS5kYXRhKCkpCisgICAgeyB9CiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3Qg
aSkgeyBSRUxFQVNFX0FTU0VSVChkYXRhICYmIGkgPCBidWZTaXplKTsgcmV0dXJuIGRhdGFbaV07
IH0KICAgICBUJiBvcGVyYXRvciooKSB7IFJFTEVBU0VfQVNTRVJUKGRhdGEgJiYgYnVmU2l6ZSk7
IHJldHVybiAqZGF0YTsgfQogICAgIFQqIGRhdGE7CkBAIC04MSw3ICs5NSw3IEBAIHN0cnVjdCBH
Q0dMU3BhbiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEdDR0xTcGFuPFQs
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+IHsKK3N0cnVjdCBHQ0dMU3BhbjxU
LCBnY0dMU3BhbkR5bmFtaWNFeHRlbnQ+IHsKICAgICBHQ0dMU3BhbihUKiBhcnJheSwgc2l6ZV90
IGJ1ZlNpemVfKQogICAgICAgICA6IGRhdGEoYXJyYXkpCiAgICAgICAgICwgYnVmU2l6ZShidWZT
aXplXykKQEAgLTEyMyw2ICsxMzcsMTEgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CiAg
ICAgICAgIDogZGF0YShvdGhlci5kYXRhKQogICAgICAgICAsIGJ1ZlNpemUob3RoZXIuYnVmU2l6
ZSAqIHNpemVvZihVKSkKICAgICB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CisgICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNp
dHk+JiBhcnJheSkKKyAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKKyAgICAgICAgLCBidWZT
aXplKGFycmF5LnNpemUoKSAqIHNpemVvZihVKSkKKyAgICB7IH0KICAgICBHQ0dMdm9pZCogZGF0
YTsKICAgICBjb25zdCBzaXplX3QgYnVmU2l6ZTsKIH07CkBAIC0xNTQsOCArMTczLDExIEBAIHN0
cnVjdCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gewogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IE4+CiBHQ0dMU3BhbihUICgmKVtOXSkgLT4gR0NHTFNwYW48VCwgTj47CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1HQ0dMU3BhbihXVEY6OlZlY3RvcjxUPiYpIC0+IEdDR0xTcGFuPFQ+Owor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+
JikgLT4gR0NHTFNwYW48VCwgTj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KK0dDR0xTcGFuKFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+
IEdDR0xTcGFuPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdD
R0xTcGFuKFQqIGRhdGEsIHNpemVfdCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGY3YTk0N2VmY2JiMzcxNTZjMDk4ZTBiNWVlMzNj
M2I2MmI4NDliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC0wLDAgKzEsMjAy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKKyAgICA6IEdyYXBoaWNz
Q29udGV4dEdMKGF0dHJzKQoreworICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCitSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlKCkgPSBkZWZhdWx0OworCitFeHRlbnNpb25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENvbnRleHRWaXNpYmls
aXR5KGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworR3JhcGhpY3NDb250ZXh0
R0xQb3dlclByZWZlcmVuY2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBvd2Vy
UHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4geyB9OworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udGV4dEF0
dHJpYnV0ZXMoKS5pc1dlYkdMMjsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogVGhlIGNhbGxl
ciBzaG91bGQgdHJhY2sgdGhpcyBzdGF0ZS4KKyAgICBpZiAobV9sYXllckNvbXBvc2l0ZWQpCisg
ICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOworICAgIG1fbGF5ZXJDb21wb3NpdGVk
ID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1h
cmtMYXllckNvbXBvc2l0ZWQoKQoreworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1ZTsKKyAg
ICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBpZiAoIWF0dHJzLnByZXNl
cnZlRHJhd2luZ0J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IEdyYXBo
aWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOworICAgICAgICBpZiAoYXR0cnMuZGVwdGgp
CisgICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0NvbnRleHRHTDo6
REVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpCisgICAgICAgICAg
ICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9CVUZG
RVJfQklUOworICAgIH0KKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2Ns
aWVudHMpKQorICAgICAgICBjbGllbnQtPmRpZENvbXBvc2l0ZSgpOworfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCBidWZm
ZXJzKQoreworICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVzZXJ2ZURyYXdpbmdCdWZm
ZXIpCisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gYnVmZmVyczsKK30KKworR0NHTGJp
dGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRv
Q2xlYXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9DbGVhcjsKK30KKwor
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2lu
Z0J1ZmZlcigpCit7CisgICAgLy8gUmVkZWNsYXJlZCBmb3IgZXhwb3J0IHJlYXNvbnMuCisgICAg
Ly8gRklYTUU6IFRoZSB3aG9sZSBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICBHcmFw
aGljc0NvbnRleHRHTDo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Cit9CisKK2Jvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHdhaXRVbnRpbElu
aXRpYWxpemVkKCk7CisgICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpICYmICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgIGVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQobmFtZSk7CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMu
YWRkKG5hbWUpOworICAgIH0KK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0
aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKQor
eworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgn
ICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkK
KyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Cit9CisKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
OjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworfQorCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKyNpZiAhVVNFKEFOR0xFKQordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZTo6cmVhZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwg
R0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
dm9pZCopCit7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omdl
dG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGZsb2F0KikK
K3sKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0blVuaWZv
cm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMaW50KikKK3sKK30KKwor
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNOVklESUEoKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6aXNBTUQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6aXNJbnRlbCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0ltYWdpbmF0aW9uKCkK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6dmVuZG9yKCkKK3sKKyAgICByZXR1cm4geyB9OworfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpyZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbigpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjpyZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKQor
eworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjZhYWY2YzZhMGY2MmZmMjgyZTVi
OGQyMDJhMTI5NGUxZGU4NTcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtMCww
ICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0wuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgV2ViR0xMYXll
cjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBQTEFURk9STShDT0NPQSkK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOworI2VuZGlmCisKKy8v
IEEgYmFzZSBjbGFzcyBmb3IgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgcHJveHkgc2lkZSBpbXBs
ZW1lbnRhdGlvbgorLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBwYXJ0cyB0aGF0IGFyZSB1c2luZyBX
ZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6CisvLyAtIERyYXdpbmcgYnVmZmVyIHRyYWNr
aW5nIG1hbmFnZW1lbnQuCisvLyAtIENvbXBvc2l0aW5nIHN1cHBvcnQuCitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSA6IHB1YmxpYyBHcmFwaGlj
c0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNHTCB7CitwdWJsaWM6CisgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
Jik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CisK
KyAgICAvLyBPdGhlciBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAg
dXNpbmcgR3JhcGhpY3NDb250ZXh0R0w6OmlzRW5hYmxlZDsKKyAgICBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNp
b25zKCkgZmluYWw7CisgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsK
KyAgICBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2Vk
Rm9yQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBj
b25zdCBmaW5hbDsKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIGJv
b2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRCdWZmZXJzVG9B
dXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSBmaW5hbDsKKyAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVy
c1RvQXV0b0NsZWFyKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtMYXllckNvbXBv
c2l0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZp
bmFsOworCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIEdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKKyNlbmRpZgorICAgIC8vIE90aGVyIEV4dGVu
c2lvbkdMIG92ZXJyaWRlcy4KKyAgICB1c2luZyBFeHRlbnNpb25zR0w6OmlzRW5hYmxlZDsKKyAg
ICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJlRW5h
YmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKworI2lmICFVU0UoQU5HTEUpCisgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBz
dXBwb3NlZCB0byBiZSByZW1vdmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTg4OTYuCisgICAgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0x2b2lkKikgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBHQ0dM
aW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCopIGZpbmFsOworICAgIHZvaWQgZ2V0blVuaWZvcm1p
dkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMaW50KikgZmluYWw7CisgICAg
Ym9vbCBpc05WSURJQSgpIGZpbmFsOworICAgIGJvb2wgaXNBTUQoKSBmaW5hbDsKKyAgICBib29s
IGlzSW50ZWwoKSBmaW5hbDsKKyAgICBib29sIGlzSW1hZ2luYXRpb24oKSBmaW5hbDsKKyAgICBT
dHJpbmcgdmVuZG9yKCkgZmluYWw7CisgICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVt
dWxhdGlvbigpIGZpbmFsOworICAgIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1
cmVTaXplKCkgZmluYWw7CisjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5pdGlhbGl6
ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVz
dGFibGVFeHRlbnNpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3Ry
aW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSA9
IDA7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4mIHBsYXRmb3JtU3dhcENoYWluKCk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFp
blB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CisjZW5kaWYKKworICAgIC8vIEd1YXJkZWQg
Ynkgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKS4KKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9u
czsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOworCisgICAgLy8g
RklYTUU6IERyYXdpbmcgYnVmZmVyIGNsZWFyIHRyYWNraW5nIHNob3VsZCBiZSBtb3ZlZCB0byB0
aGUgY2xpZW50LgorICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKKyAgICBHQ0dM
Yml0ZmllbGQgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSB7IDAgfTsKK307CisKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkzY2U0NzMyMTYyOGYxZjYwNzI0MjFhNzZiYzYwY2UxYmM1M2RhYjMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSwzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
Ojp+R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4oKSA9IGRlZmF1bHQ7CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNWU0MTY4ZTMxYmViOGYyYmI3NzRjZjdkZTFlOTVmOGQwYjk5
NjE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0Ep
CisKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQW4gaW50ZXJmYWNlIGZvciBpbXBsZW1lbnRpbmcgZnJvbnQgYnVm
ZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1ZmZlcmluZyBzd2FwCisvLyBjaGFpbiBvZiBJT1N1cmZh
Y2VzLgorLy8gVGhlIGltcGxlbWVudG9yIHdpbGwgb3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMg
Zm9yIGRpc3BsYXkuCisvLyBUaGUgY2xpZW50IG1heSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJ
T1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUgbWV0YWRhdGEKKy8vIGJhY2sgb25jZSB0aGUg
SU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4gSG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90
IG5lY2Nlc3NhcmlseQorLy8gYmUgYWJsZSB0byBvYnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYg
Zm9yIHJldXNlLgorLy8gRXhhbXBsZSB1c2Ugb2YgdGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xT
dXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRhLiBUaGlzIHdheQorLy8gd2hlbiB0aGUgZGlz
cGxheSBjbGllbnQgaXMgZG9uZSB3aXRoIHRoZSBJT1N1cmZhY2UgZGlzcGxheSwgdGhlIGNsaWVu
dCBjYW4gY29udGludWUgdXNpbmcKKy8vIHRoZSBleGlzdGluZyBiaW5kaW5nIG9idGFpbmVkIHRo
cm91Z2ggdGhlIGJ1ZmZlciByZWN5Y2xlIGxvZ2ljLgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4geworcHVibGljOgorICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKCk7CisgICAgc3RydWN0IEJ1ZmZl
ciB7CisgICAgICAgIC8vIFRoZSBhY3R1YWwgY29udGVudHMuIENsaWVudCB0cmFuc2ZlcnMgdGhl
IG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlLgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SU9TdXJmYWNlPiBzdXJmYWNlOworICAgICAgICAvLyBQcm9kdWNlciBzcGVjaWZpYyBt
ZXRhZGF0YSBoYW5kbGUgKHN1Y2ggYXMgRUdMU3VyZmFjZSkuIENsaWVudCBkb2VzIG5vdCB0cmFu
c2ZlciB0aGUgb3duZXJzaGlwLgorICAgICAgICB2b2lkKiBoYW5kbGUgeyBudWxscHRyIH07Cisg
ICAgfTsKKyAgICAvLyBSZXR1cm5zIHRoZSBtZXRhZGF0YSBoYW5kbGUgb2YgbGFzdCB1bnVzZWQg
Y29udGVudHMgYnVmZmVyLgorICAgIC8vIENsaWVudCBtYXkgcmVjaWV2ZSBiYWNrIGFsc28gdGhl
IG93bmVyc2hpcCBvZiB0aGUgY29udGVudHMgc3VyZmFjZSwgaW4gY2FzZSBpdCBpcyBhdmFpbGFi
bGUgYXQgdGhlCisgICAgLy8gdGltZSBvZiB0aGUgY2FsbC4KKyAgICAvLyBSZXR1cm5zIGVpdGhl
cjoKKyAgICAvLyAtIEVtcHR5IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4gc3VibWl0dGVk
LgorICAgIC8vIC0gQnVmZmVyIHdpdGggZW1wdHkgc3VyZmFjZSBhbmQgbm9uLWVtcHR5IG1ldGFk
YXRhIGhhbmRsZSBpZiB0aGUgcmVjeWNsZWQgYnVmZmVyIHdhcyBhdmFpbGFibGUKKyAgICAvLyAg
IGJ1dCB0aGUgc3VyZmFjZSBpcyBzdGlsbCBpbiB1c2UuCisgICAgLy8gLSBTdXJmYWNlIGFuZCBo
YW5kbGUuCisgICAgdmlydHVhbCBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpID0gMDsKKworICAgIC8v
IFByZXBhcmVzIHRoZSB0YXJnZXQgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4K
KyAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsKKworICAgIC8vIERldGFjaGVz
IHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFk
YXRhIGhhbmRsZS4KKyAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3Vi
bWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGlu
ZworICAgIC8vIHRoaXMuCisgICAgdmlydHVhbCB2b2lkKiBkZXRhY2hDbGllbnQoKSA9IDA7Cit9
OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KaW5kZXggNTM1ODBkMjFlOThmZjYyMjA0ZDA1YjI0ZGE3MzFiYTViMjUwODBjMC4uZGMxNjU0
ZjU4NGMwMmJlZTllYmExM2IwZGJmMzU1OGYxZDU0OThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkV4
dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJIb3N0
V2luZG93LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC04MSw3ICs4Miw3IEBAIHN0YXRpYyBF
R0xEaXNwbGF5IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
ID0gMDsKICAgICBFR0xpbnQgbWlub3JWZXJzaW9uID0gMDsKICAgICBFR0xEaXNwbGF5IGRpc3Bs
YXk7Ci0gICAgYm9vbCBzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQg
PSAhaXNJbldlYlByb2Nlc3MoKTsKKyAgICBib29sIHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRp
bGVDb250ZXh0U3VwcG9ydCA9ICEoaXNJbldlYlByb2Nlc3MoKSB8fCBpc0luR1BVUHJvY2Vzcygp
KTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0KSB7
CiAgICAgICAgIC8vIEZvciBXSzEgdHlwZSBBUElzIHdlIG5lZWQgdG8gc2V0ICJ2b2xhdGlsZSBw
bGF0Zm9ybSBjb250ZXh0IiBmb3Igc3BlY2lmaWMKICAgICAgICAgLy8gQVBJcywgc2luY2UgY2xp
ZW50IGNvZGUgd2lsbCBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSB0aHJlYWQtZ2xvYmFsIGNvbnRl
eHQKQEAgLTEzNCw3ICsxMzUsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgIGlmIChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55
Q29udGV4dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uKSk7CisgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBudWxscHRyLCBudWxscHRyKSk7CiAKICAg
ICBpZiAoIWNvbnRleHQtPm1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNDcsMTMgKzE0OCwxOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogUmVmPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRDb250ZXh0KQogewogICAgIGF1dG8gaG9zdFdp
bmRvdyA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhv
c3RXaW5kb3dGb3JDb250ZXh0KCZzaGFyZWRDb250ZXh0KTsKLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKHNoYXJlZENvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKSwgaG9zdFdpbmRvdywgc2hhcmVkQ29udGV4dC5kZXN0aW5hdGlvbigpLCAm
c2hhcmVkQ29udGV4dCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woc2hhcmVkQ29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLCBob3N0
V2luZG93LCAmc2hhcmVkQ29udGV4dCwgbnVsbHB0cikpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LnB0cigp
LCBob3N0V2luZG93KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCitSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9j
ZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMsIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBzd2FwQ2hhaW4pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIG51bGxwdHIsIG51bGxwdHIs
IHN3YXBDaGFpbikpOworfQorCiAjaWYgUExBVEZPUk0oTUFDKSAvLyBGSVhNRTogVGhpcyBwcm9i
YWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+LgogCiBz
dGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBD
R0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiwgSU9SZWdpc3RyeUdQVUlEIHByZWZlcnJl
ZEdQVUlEKQpAQCAtMjA0LDggKzIxMCw4IEBAIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVnaXN0cnlJ
RChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsCiAKICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBkZXN0aW5h
dGlvbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCi0gICAgOiBHcmFw
aGljc0NvbnRleHRHTChhdHRycywgZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCitHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4qIHN3YXBDaGFpbikKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBEZXN0aW5h
dGlvbjo6T2Zmc2NyZWVuLCBzaGFyZWRDb250ZXh0KQogewogICAgIG1faXNGb3JXZWJHTDIgPSBh
dHRycy5pc1dlYkdMMjsKIApAQCAtMzMzLDEzICszMzksMTcgQEAgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHQKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAot
ICAgIC8vIENyZWF0ZSB0aGUgV2ViR0xMYXllcgorICAgIGlmIChzd2FwQ2hhaW4pCisgICAgICAg
IG1fc3dhcENoYWluID0gc3dhcENoYWluOworICAgIGVsc2UgewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXll
ciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8g
Y29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBb
bV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwogI2VuZGlmCiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBtX3N3YXBDaGFpbiA9ICZbbV93ZWJHTExheWVy
IHN3YXBDaGFpbl07CisgICAgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQgd2ls
bCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQg
PSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwpAQCAtNDA4LDEzICs0MTgsMTIgQEAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6On5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpCiAgICAgICAg
IGlmIChtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZCTykKICAgICAgICAgICAgIGdsOjpEZWxldGVG
cmFtZWJ1ZmZlcnMoMSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKTsKICAgICB9Ci0gICAg
aWYgKG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpCisgICAgaWYgKG1fZGlzcGxheUJ1ZmZlclBidWZm
ZXIpIHsKICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5
QnVmZmVyUGJ1ZmZlcik7Ci0gICAgaWYgKG1fd2ViR0xMYXllcikgewotICAgICAgICBhdXRvIHJl
Y3ljbGVkQnVmZmVyID0gW21fd2ViR0xMYXllciByZWN5Y2xlQnVmZmVyXTsKKyAgICAgICAgYXV0
byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7CiAgICAgICAg
IGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCiAgICAgICAgICAgICBFR0xfRGVzdHJveVN1cmZh
Y2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOwotICAgICAgICBhdXRvIGNv
bnRlbnRzSGFuZGxlID0gW21fd2ViR0xMYXllciBkZXRhY2hDbGllbnRdOworICAgICAgICBhdXRv
IGNvbnRlbnRzSGFuZGxlID0gbV9zd2FwQ2hhaW4tPmRldGFjaENsaWVudCgpOwogICAgICAgICBp
ZiAoY29udGVudHNIYW5kbGUpCiAgICAgICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNw
bGF5T2JqLCBjb250ZW50c0hhbmRsZSk7CiAgICAgfQpAQCAtNTc3LDExICs1ODYsMTYgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkK
ICAgICAgICAgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOwogICAgIH0K
ICAgICAvLyBSZXNldCB0aGUgZnV0dXJlIHJlY3ljbGVkIGJ1ZmZlciBub3csIGJlY2F1c2UgaXQg
bW9zdCBsaWtlbHkgd2lsbCBub3QgYmUgcmV1c2FibGUgYXQgdGhlIHRpbWUgaXQgd2lsbCBiZSBy
ZXVzZWQuCi0gICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IFttX3dlYkdMTGF5ZXIgcmVjeWNsZUJ1
ZmZlcl07CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLT5yZWN5Y2xlQnVm
ZmVyKCk7CiAgICAgaWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKICAgICAgICAgRUdMX0Rlc3Ry
b3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxlKTsKICAgICByZWN5
Y2xlZEJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgcmV0dXJuIGFsbG9jYXRlQW5kQmluZERp
c3BsYXlCdWZmZXJCYWNraW5nKCk7Cit9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKK3sKKyAgICBBU1NFUlQoIWdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsKICAgICBhdXRvIGJhY2tpbmcg
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
LCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKICAgICBpZiAoIWJhY2tpbmcpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3ICs2NTMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjphbGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdAogICAgIC8vIGZvciBPcGVu
R0wgdG8gZGVjaWRlIHdoaWNoIEdQVSBpcyBjb25uZWN0ZWQgdG8gYSBkaXNwbGF5IChvbmxpbmUv
b2ZmbGluZSkuCiAgICAgLy8gT3BlbkdMIHdpbGwgdGhlbiBjb25zaWRlciBhbGwgR1BVcywgb3Ig
cmVuZGVyZXJzLCBhcyBvZmZsaW5lLCB3aGljaCBtZWFucwogICAgIC8vIGFsbCBvZmZsaW5lIHJl
bmRlcmVycyBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgd2hlbiBmaW5kaW5nIGEgcGl4ZWwgZm9ybWF0
LgotICAgIC8vIEluIFdlYktpdCBsZWdhY3ksIHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBXaW5kb3dT
ZXJ2ZXIgY29ubmVjdGlvbiwgYW5kCisgICAgLy8gSW4gV2ViS2l0IGxlZ2FjeSwgdGhlcmUgd2ls
bCBzdGlsbCBiZSBhIFdpbmR3U2VydmVyIGNvbm5lY3Rpb24sIGFuZAogICAgIC8vIG1fZGlzcGxh
eU1hc2sgd2lsbCBub3QgYmUgc2V0IGluIHRoaXMgY2FzZS4KICAgICBpZiAocHJpbWFyeU9wZW5H
TERpc3BsYXlNYXNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjg1LDEwICs2OTksMTAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAg
IC8vIFRoZSBJT1N1cmZhY2Ugd2lsbCBiZSB1c2VkIGZyb20gb3RoZXIgZ3JhcGhpY3Mgc3Vic3lz
dGVtLCBzbyBmbHVzaCBHTCBjb21tYW5kcy4KICAgICBnbDo6Rmx1c2goKTsKIAotICAgIGF1dG8g
cmVjeWNsZWRCdWZmZXIgPSBbbV93ZWJHTExheWVyIHJlY3ljbGVCdWZmZXJdOworICAgIGF1dG8g
cmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwogCiAgICAgRUdM
X1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIsIEVH
TF9CQUNLX0JVRkZFUik7Ci0gICAgW21fd2ViR0xMYXllciBwcmVwYXJlRm9yRGlzcGxheVdpdGhD
b250ZW50czoge1dURk1vdmUobV9kaXNwbGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXJ9XTsKKyAgICBtX3N3YXBDaGFpbi0+cHJlc2VudCh7IFdURk1vdmUobV9kaXNwbGF5
QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgfSk7CiAgICAgbV9kaXNwbGF5
QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOwogCiAgICAgYm9vbCBoYXNOZXdCYWNraW5n
ID0gZmFsc2U7CkBAIC03MDIsNyArNzE2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cHJlcGFyZUZvckRpc3BsYXkoKQogCiAgICAgLy8gRXJyb3Igd2lsbCBiZSBoYW5kbGVkIGJ5
IG5leHQgY2FsbCB0byBtYWtlQ29udGV4dEN1cnJlbnQoKSB3aGljaCB3aWxsIG5vdGljZSBsYWNr
IG9mIGRpc3BsYXkgYnVmZmVyLgogICAgIGlmICghaGFzTmV3QmFja2luZykKLSAgICAgICAgcmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgICAgIGFsbG9jYXRlQW5kQmluZERpc3Bs
YXlCdWZmZXJCYWNraW5nKCk7CiAKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYzQxNDAxNWI3YjBmMzRiYjI4YmUzNDU1MDljNzQyOWUzMWRhYTNjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NP
QSkKKworI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKKyNp
bXBvcnQgIldlYkdMTGF5ZXIuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICBhdXRvIGF0dHJzID0gY29udGV4
dEF0dHJpYnV0ZXMoKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAg
bV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNl
UGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5h
bHBoYV0pOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAi
V2ViR0wgTGF5ZXIiXTsKKyNlbmRpZgorICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30K
KworCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxh
dGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViR0xMYXllci5nZXQoKTsKK30K
KworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzQ29udGV4
dEdMQ1YqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjphc0NWKCkKK3sKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCitHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbiYgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENo
YWluKCkKK3sKKyAgICByZXR1cm4gW21fd2ViR0xMYXllciBzd2FwQ2hhaW5dOworfQorCit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIuaAppbmRleCAxNGIwMWU3MDVmMjA1MzAxYzdjOTdjZjY2ZTcxYTA4YmJmNDFlNzA1
Li43ZmU4OGEyZmY0Y2UwZjU1OWQ1OWRjMWNkOTUyYTNhN2VhODgwOTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCkBAIC0y
Myw1MiArMjMsMjIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiSU9TdXJmYWNl
LmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgogI2lt
cG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxtZW1vcnk+CiAjaW1wb3J0
IDx3dGYvTmFrZWRQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IFdlYkdMTGF5
ZXJCdWZmZXIgewotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IHN1cmZh
Y2U7IC8vIFRoZSBhY3R1YWwgY29udGVudHMuCi0gICAgdm9pZCogaGFuZGxlIHsgbnVsbHB0ciB9
OyAvLyBDbGllbnQgc3BlY2lmaWMgbWV0YWRhdGEgaGFuZGxlIChzdWNoIGFzIEVHTFN1cmZhY2Up
LgotfTsKLX0KLQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogLy8gQSBs
YXllciBjbGFzcyBpbXBsZW1lbnRpbmcgZnJvbnQgYnVmZmVyIG1hbmFnZW1lbnQgb2YgYSAzLWJ1
ZmZlcmluZyBzd2FwCiAvLyBjaGFpbiBvZiBJT1N1cmZhY2VzLgotLy8gVGhlIGxheWVyIHdpbGwg
b3duIHRoZSBJT1N1cmZhY2VzIGl0IHVzZXMgZm9yIGRpc3BsYXkuCi0vLyBUaGUgY2xpZW50IG1h
eSBhdHRhY2ggbWV0YWRhdGEgdG8gZWFjaCBJT1N1cmZhY2UgYW5kIHdpbGwgcmVjZWl2ZSB0aGUg
bWV0YWRhdGEKLS8vIGJhY2sgb25jZSB0aGUgSU9TdXJmYWNlIGhhcyBiZWVuIGRpc3BsYXllZC4g
SG93ZXZlciwgdGhlIGNsaWVudCBtYXkgbm90IG5lY2Nlc3NhcmlseQotLy8gYmUgYWJsZSB0byBv
YnRhaW4gdGhlIElPU3VyZmFjZSBpdHNlbGYgZm9yIHJldXNlLgotLy8gRXhhbXBsZSB1c2Ugb2Yg
dGhlIG1ldGFkYXRhIGlzIHRvIHVzZSBFR0xTdXJmYWNlIGJpbmRpbmcgYXMgdGhlIG1ldGFkYXRh
LiBUaGlzIHdheQotLy8gd2hlbiB0aGUgV2ViR0xMYXllciBpcyBkb25lIHdpdGggdGhlIElPU3Vy
ZmFjZSBkaXNwbGF5LCB0aGUgY2xpZW50IGNhbiBjb250aW51ZSB1c2luZwotLy8gdGhlIGV4aXN0
aW5nIGJpbmRpbmcgb2J0YWluZWQgdGhyb3VnaCB0aGUgYnVmZmVyIHJlY3ljbGUgbG9naWMuCiBA
aW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBDQUxheWVyCiAKIC0gKGlkKWluaXRXaXRoRGV2aWNlUGl4
ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250
ZW50c09wYXF1ZTsKIAogLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNw
YWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZTsKIAotLy8gUmV0dXJucyB0aGUgbWV0YWRh
dGEgaGFuZGxlIG9mIGxhc3QgdW51c2VkIGNvbnRlbnRzIGJ1ZmZlci4KLS8vIENsaWVudCBtYXkg
cmVjaWV2ZSBiYWNrIGFsc28gdGhlIG93bmVyc2hpcCBvZiB0aGUgY29udGVudHMgc3VyZmFjZSwg
aW4gY2FzZSBpdCBpcyBhdmFpbGFibGUgYXQgdGhlCi0vLyB0aW1lIG9mIHRoZSBjYWxsLgotLy8g
UmV0dXJucyBlaXRoZXI6Ci0vLyAtIEVtcHR5IGJ1ZmZlciBpZiBubyBidWZmZXIgaGFzIGJlZW4g
c3VibWl0dGVkLgotLy8gLSBCdWZmZXIgd2l0aCBlbXB0eSBzdXJmYWNlIGFuZCBub24tZW1wdHkg
bWV0YWRhdGEgaGFuZGxlIGlmIHRoZSByZWN5Y2xlZCBidWZmZXIgd2FzIGF2YWlsYWJsZQotLy8g
ICBidXQgdGhlIHN1cmZhY2UgaXMgc3RpbGwgaW4gdXNlLgotLy8gLSBTdXJmYWNlIGFuZCBoYW5k
bGUuCi0tIChXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKXJlY3ljbGVCdWZmZXI7Ci0KLS8vIFBy
ZXBhcmVzIHRoZSBsYXllciBmb3IgZGlzcGxheSB3aXRoIGEgY29udGVudHMgYnVmZmVyLgotLy8g
Q2xpZW50IHRyYW5zZmVycyB0aGUgb3duZXJzaGlwIG9mIHRoZSBJT1N1cmZhY2Ugc3VyZmFjZSBp
biB0aGUgYGJ1ZmZlcmAuCi0tICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5V2l0aENvbnRlbnRzOihX
ZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKWJ1ZmZlcjsKLQotLy8gRGV0YWNoZXMgdGhlIGNsaWVu
dCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxl
LgotLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNs
ZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKLS8vIHRoaXMuCi0t
ICh2b2lkKilkZXRhY2hDbGllbnQ7CistIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbjsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQppbmRleCBjOGY0ZTc5
ZjczMTJlYWE2YWIwNDQ2ODA4M2VhOGQwYzhiZWZhM2JjLi4zODU5N2U0YThmNjMzYTVlZTVkYjc0
OTMzMDIyZGMyMzdmZTdlNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KQEAgLTMyLDEzICszMiwzOSBAQAogI2ltcG9y
dCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisKK2NsYXNzIFdlYkdMTGF5ZXJTd2FwQ2hh
aW4gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4geworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkdMTGF5ZXJTd2FwQ2hhaW4oV2ViR0xM
YXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKKyAgICB+V2ViR0xMYXllclN3YXBD
aGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBvdmVy
cmlkZTsKKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7CisgICAgICAgICAgICBpZiAobV9zcGFyZUJ1
ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCisgICAgICAgICAgICAgICAgbV9zcGFyZUJ1ZmZlci5z
dXJmYWNlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShtX3NwYXJlQnVmZmVy
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICB2b2lkKiBkZXRh
Y2hDbGllbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVy
LnN1cmZhY2UpOworICAgICAgICB2b2lkKiByZXN1bHQgPSBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxl
OworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIuaGFuZGxlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgV2ViQ29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5U3VyZmFj
ZSgpIHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlLmdldCgpOyB9Citwcml2YXRlOgor
ICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CisgICAgQnVmZmVyIG1fc3BhcmVCdWZmZXI7Cisg
ICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsKK307CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJH
TExheWVyIHsKLSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyIF9jb250ZW50c0J1ZmZlcjsK
LSAgICBXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyIF9zcGFyZUJ1ZmZlcjsKLQogICAgIEJPT0wg
X3ByZXBhcmVkRm9yRGlzcGxheTsKKyAgICBPcHRpb25hbDxXZWJHTExheWVyU3dhcENoYWluPiBf
c3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRl
dmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKQEAgLTQ3
LDYgKzczLDcgQEAKICAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsK
ICAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7CiAgICAgc2VsZi5jb250
ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBfc3dhcENoYWluLmVtcGxhY2Uoc2Vs
Zik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTczLDMwICsxMDAsMjEgQEAKICAgICBVTlVT
RURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Ci0KLS0gKFdlYkNv
cmU6OldlYkdMTGF5ZXJCdWZmZXIpIHJlY3ljbGVCdWZmZXIKKy0gKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENoYWluCiB7Ci0gICAgaWYgKF9zcGFy
ZUJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgIGlmIChfc3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJ
blVzZSgpKQotICAgICAgICAgICAgX3NwYXJlQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKLSAgICAg
ICAgcmV0dXJuIFdURk1vdmUoX3NwYXJlQnVmZmVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsK
KyAgICByZXR1cm4gX3N3YXBDaGFpbi52YWx1ZSgpOwogfQogCi0tICh2b2lkKXByZXBhcmVGb3JE
aXNwbGF5V2l0aENvbnRlbnRzOihXZWJDb3JlOjpXZWJHTExheWVyQnVmZmVyKSBidWZmZXIKKy0g
KHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKIHsKLSAgICBBU1NFUlQoIV9zcGFyZUJ1ZmZlci5zdXJm
YWNlKTsKLSAgICBfc3BhcmVCdWZmZXIgPSBXVEZNb3ZlKF9jb250ZW50c0J1ZmZlcik7Ci0gICAg
X2NvbnRlbnRzQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAgIFtzZWxmIHNldE5lZWRzRGlz
cGxheV07CiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IFlFUzsKIH0KIAogLSAodm9pZClkaXNw
bGF5CiB7Ci0gICAgaWYgKF9jb250ZW50c0J1ZmZlci5zdXJmYWNlICYmIF9wcmVwYXJlZEZvckRp
c3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50cyA9IF9jb250ZW50c0J1ZmZlci5zdXJmYWNl
LT5hc0xheWVyQ29udGVudHMoKTsKKyAgICBpZiAoX3N3YXBDaGFpbi0+ZGlzcGxheVN1cmZhY2Uo
KSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7CisgICAgICAgIHNlbGYuY29udGVudHMgPSBfc3dh
cENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xheWVyQ29udGVudHMoKTsKICAgICAgICAgW3Nl
bGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29udGVudHMiXTsKICAgICB9CiAgICAgYXV0byBs
YXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIo
KF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMTA2LDEzICsxMjQsMTQgQEAKICAgICBfcHJlcGFy
ZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLS0gKHZvaWQqKSBkZXRhY2hDbGllbnQKK0BlbmQKKwor
dm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KEJ1ZmZlciBidWZmZXIpCiB7Ci0gICAg
QVNTRVJUKCFfc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgdm9pZCogcmVzdWx0ID0gX2NvbnRl
bnRzQnVmZmVyLmhhbmRsZTsKLSAgICBfY29udGVudHNCdWZmZXIuaGFuZGxlID0gbnVsbHB0cjsK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsK
KyAgICBtX3NwYXJlQnVmZmVyID0gV1RGTW92ZShtX2Rpc3BsYXlCdWZmZXIpOworICAgIG1fZGlz
cGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICBbbV9sYXllciBwcmVwYXJlRm9yRGlz
cGxheV07CiB9Ci1AZW5kCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDI3MDZlN2IzMGFiOWIzN2EyMTI3OGM1MTdlZGJkZjE1
MmJjMGZhNzAuLmY1MjRkZTkyZGNkOWE1OThiMGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC01OCw2ICs1OCw5IEBACiAjaWYgUExB
VEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbjsKK30KICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmIFVTRShOSUNPU0lB
KQpAQCAtODYsNyArODksNyBAQCB0eXBlZGVmIFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1aW50NjRf
dD4gU2hhZGVyTmFtZUhhc2g7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMUHJpdmF0
ZTsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhp
Y3NDb250ZXh0R0wKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
IGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGluYXRpb246Ok9mZnNj
cmVlbik7CkBAIC05NCw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHN0YXRpYyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZVNoYXJlZChHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCYgc2hhcmVkQ29udGV4dCk7CisgICAgc3RhdGljIFJlZjxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiop
OworCiAgICAgQ0FMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KICAgICBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9ybURpc3BsYXkoKSBjb25zdCB7IHJl
dHVybiBtX2Rpc3BsYXlPYmo7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmln
IHBsYXRmb3JtQ29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWdPYmo7IH0KQEAgLTUwMyw3
ICs1MDgsMTEgQEAgcHVibGljOgogI2VuZGlmIC8vICFVU0UoQU5HTEUpCiAKIHByaXZhdGU6Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IHNoYXJlZENvbnRleHQgPSBudWxscHRyLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiogPSBudWxscHRyKTsKKyNlbHNlCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0
aW5hdGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4
dCA9IG51bGxwdHIpOworI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1
YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIC8vIENh
bGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wg
dGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgpAQCAtNTM0LDEwICs1NDMsMTMgQEAgcHJpdmF0
ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGFsbG93T2ZmbGluZVJlbmRlcmVycygp
IGNvbnN0OwogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9v
bCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogICAgIGJvb2wgYmluZERp
c3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZv
aWQqIHBidWZmZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyAgICBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07Cisg
ICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRyYXdz
IHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBiZTA4NjUxMzJiZjQ1NmUzNTViZWIzMWI2ZGM0
NjYzYmQyZDI0M2M1Li4yZTA2NWFjNjY5Y2E1ZmU5YWVjMDg5YzYxNDQxOGNjOGRhYmU3Y2Q3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VT
X0lOX0ZJTEVTCiAgICAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAg
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzCiAKKyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMCiAgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kCiAKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyCkBAIC0yMjIsNiArMjIzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAg
ICAgV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24KIAorICAgIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkKICAgICBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKIAogICAgIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDI2N2NkZDI5NDNlMTQ2ZjA1Y2M4
ZTdjMzEwMjIzOWRiZjZiZTNiNTcuLjAxZjYwNWM5M2Y3OTk5ZTY4MGUxODc0YzczMDQxM2RhMjI5
NGNjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKQEAgLTIwLDYgKzIwLDcgQEAgJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
KS9tb2RlbHMucHkKICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBs
CiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5p
bgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KICQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4K
QEAgLTEzNSw2ICsxMzYsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hlL1dlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFu
YWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDYwZDQ0
MzAyNmYzNmQ0OTNhY2I2Mjc5ZDhmN2EwYzMxZWEyYjQ2MjkuLjE0MmYzNDViYjRhNDRkNmFlMGNm
MWNjM2U2YjAzZDQzMjhlOGJhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTc4LDYgKzE3OCwxMiBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDM1OGY3NGJiZDMyNTE2NGQyOTU3NjIwMTI3ZTRhNjAy
ZDkyZDdhNTYuLmQ3OGM1YjdlMjUyZjdmY2E5MGEyNWZjODUyMzRmZDZjMWYwN2FlY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE3MSw2ICsxNzEsNyBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKIAlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbiBcCiAJV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwKKwlXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IFwKIAlXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUgXApAQCAtMjI3LDYgKzIyOCw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCVBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2VzcyBcCiAJR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKIAlHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQgXAorCUdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgXAogCUdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKIAlHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKIAlHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IDBjMjYxNjg2NTdhYThjNDczMzkxOTk0ZWVmMDIzNzJjNmM4OTI3
YmYuLjQ4Yjc0ZWFlODAxYzYyNGQxMjE3MzEwOTQ5MDgwZWRiYTYzNDA2OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTY0LDYgKzY0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCkBAIC0yOTgsNiArMzAyLDIxIEBAIHZvaWQgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCisjaWYg
RU5BQkxFKFdFQkdMKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmli
dXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAuZW5zdXJlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICBy
ZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB9KTsKKyAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIGJvb2wgZm91
bmQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKK30KKyNlbmRp
Zgogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKCkK
IHsKICAgICBncHVQcm9jZXNzKCkubm93UGxheWluZ01hbmFnZXIoKS5jbGVhck5vd1BsYXlpbmdJ
bmZvQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGUzM2Y3MzgxM2JmNjAwZTdhOTFiYTY5MjUz
MTEyODhjZDc5ZWFiMDIuLmEyOGM4ZmY1ZjZjMDY0YmVlYjNiODZjNmVhNTRjM2U0N2I0YWY5ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1h
cC5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvbklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJX
ZWJSVENFbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5aW5nTWFuYWdlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KQEAgLTM5LDYgKzQwLDEx
IEBACiAjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVUHJvY2VzczsKQEAgLTU1
LDYgKzYxLDcgQEAgY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5OwogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKK2NsYXNzIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsK
IGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9T
ZXNzaW9uQ29uZmlndXJhdGlvbjsKQEAgLTEyMCw2ICsxMjcsMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwog
ICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisjZW5kaWYKKwogICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5n
SW5mbygpOwogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdB
cHBsaWNhdGlvbiwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CiAKQEAgLTE4MSw3ICsxOTMs
MTAgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZD4+OwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWFwOwotCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHVzaW5nIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OworICAgIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7Cisj
ZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5OwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDUxOTRmYjRmNjA4NWQ2MjRkNTk4M2Y2MjUyYzM2NWVi
MzI3MWYzNDQuLjlkNTRlMTY0NTk1YjBhMzYxZGZlNGM3NWJmZjQwMThhODU3NTljOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSwxMCBAQAogbWVzc2FnZXMgLT4g
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9p
ZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQorICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktp
dDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikKKyNlbmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCiAgICAgdm9pZCBTZXRO
b3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBzdHJ1Y3QgV2Vi
Q29yZTo6Tm93UGxheWluZ0luZm8gbm93UGxheWluZ0luZm8pCiAjaWYgVVNFKEFVRElPX1NFU1NJ
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODA0ZDFmYTk5OTRkNWZm
ZjMxNDM2NGQ1OWJlZjk1ZWI0OWVhOTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMCww
ICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworI2lmICFQTEFURk9STShDT0NPQSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKworUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMPiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgLCBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcykpCisgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAg
ICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7CisgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBt
X2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7CisgICAg
U3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVu
c2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChleHRlbnNpb25zLCBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQor
eworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCitHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQo
KTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAg
ICByZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKK3sKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250
ZXh0KCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdl
ZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCit7
CisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkKKyAgICAgICAgbV9jb250ZXh0LT5yZXNoYXBlKHdp
ZHRoLCBoZWlnaHQpOworICAgIGVsc2UKKyAgICAgICAgZm9yY2VDb250ZXh0TG9zdCgpOworfQor
CisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJl
cGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
K30KKyNlbmRpZgorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNp
b25FbmFibGVkKFN0cmluZyYmIGV4dGVuc2lvbikKK3sKKyAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgbV9jb250ZXh0
LT5tYXJrQ29udGV4dENoYW5nZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGIwY2Y1MThhYmY5YmIyNWFi
MzM2ZGRkZTAzOTk5MjVhYTA1ZjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTAsMCArMSwx
MDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRXh0
ZW5zaW9uc0dMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgTWFjaFNlbmRSaWdodDsKK30KKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsK
KworLy8gR1BVIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1l
c3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzCisvLyBhbmQgaXNzdWVzIHJlYWwg
R3JhcGhpY3NDb250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgor
Ly8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIG92ZXJyaWRlOwor
CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3Zl
cnJpZGVzLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKwor
ICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlk
Q29tcG9zaXRlKCkgZmluYWw7CisgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCkgZmluYWw7Cisg
ICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0
Q2hhbmdlZE5vdGlmaWNhdGlvbigpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVj
ZWl2ZWQuCisgICAgdm9pZCByZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsK
KyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOworICAgIHZvaWQgbm90
aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVh
bCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNo
U2VuZFJpZ2h0JiYpPiYmKSA9IDA7CisjZWxzZQorICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyNlbmRpZgorCisjaW5jbHVkZSAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9MSU5UCisKKyAgICBS
ZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsKKyAgICBXZWFr
UHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKKyAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEwMzQ3MjVmOWFh
NDJmNDJiZDNjOGEwMGIwYWExODA5MGE1OWI5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDI5NSBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMIE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JE
aXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKKyNl
bmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkg
LT4gKCkgU3luY2hyb25vdXMKKyNlbmRpZgorICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChTdHJpbmcgZXh0ZW5zaW9uKQorICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkK
KworICAgIHZvaWQgU2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCisgICAgdm9pZCBTeW50aGVz
aXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKKyAgICB2b2lkIE1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
QWN0aXZlVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHZvaWQgQXR0YWNoU2hhZGVyKHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHNoYWRlcikKKyAgICB2b2lkIEJpbmRBdHRyaWJMb2Nh
dGlvbih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBpbmRleCwgU3RyaW5nIG5hbWUpCisgICAgdm9p
ZCBCaW5kQnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJp
bmRGcmFtZWJ1ZmZlcih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgdm9pZCBC
aW5kUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lk
IEJpbmRUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB2b2lkIEJs
ZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEp
CisgICAgdm9pZCBCbGVuZEVxdWF0aW9uKHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBCbGVuZEVx
dWF0aW9uU2VwYXJhdGUodWludDMyX3QgbW9kZVJHQiwgdWludDMyX3QgbW9kZUFscGhhKQorICAg
IHZvaWQgQmxlbmRGdW5jKHVpbnQzMl90IHNmYWN0b3IsIHVpbnQzMl90IGRmYWN0b3IpCisgICAg
dm9pZCBCbGVuZEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwg
dWludDMyX3Qgc3JjQWxwaGEsIHVpbnQzMl90IGRzdEFscGhhKQorICAgIHZvaWQgQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh1aW50MzJfdCB0YXJnZXQpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENsZWFyKHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBDbGVh
ckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQor
ICAgIHZvaWQgQ2xlYXJEZXB0aChmbG9hdCBkZXB0aCkKKyAgICB2b2lkIENsZWFyU3RlbmNpbChp
bnQzMl90IHMpCisgICAgdm9pZCBDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wg
Ymx1ZSwgYm9vbCBhbHBoYSkKKyAgICB2b2lkIENvbXBpbGVTaGFkZXIodWludDMyX3QgYXJnMCkK
KyAgICB2b2lkIENvcHlUZXhJbWFnZTJEKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIpCisgICAgdm9pZCBDb3B5VGV4U3Vi
SW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwg
aW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCisgICAgdm9pZCBDcmVhdGVCdWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVGcmFtZWJ1ZmZlcigpIC0+ICh1aW50
MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVByb2dyYW0oKSAt
PiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDcmVhdGVSZW5k
ZXJidWZmZXIoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDcmVhdGVTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlVGV4dHVyZSgpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAg
dm9pZCBEZWxldGVCdWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERlbGV0ZUZyYW1lYnVm
ZmVyKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBEZWxldGVQcm9ncmFtKHVpbnQzMl90IGFyZzAp
CisgICAgdm9pZCBEZWxldGVSZW5kZXJidWZmZXIodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIERl
bGV0ZVNoYWRlcih1aW50MzJfdCBhcmcwKQorICAgIHZvaWQgRGVsZXRlVGV4dHVyZSh1aW50MzJf
dCBhcmcwKQorICAgIHZvaWQgRGVwdGhGdW5jKHVpbnQzMl90IGZ1bmMpCisgICAgdm9pZCBEZXB0
aE1hc2soYm9vbCBmbGFnKQorICAgIHZvaWQgRGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQg
ekZhcikKKyAgICB2b2lkIERldGFjaFNoYWRlcih1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBhcmcx
KQorICAgIHZvaWQgRGlzYWJsZSh1aW50MzJfdCBjYXApCisgICAgdm9pZCBEaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkodWludDMyX3QgaW5kZXgpCisgICAgdm9pZCBEcmF3QXJyYXlzKHVpbnQzMl90
IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQpCisgICAgdm9pZCBEcmF3RWxlbWVu
dHModWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qg
b2Zmc2V0KQorICAgIHZvaWQgRW5hYmxlKHVpbnQzMl90IGNhcCkKKyAgICB2b2lkIEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHVpbnQzMl90IGluZGV4KQorICAgIHZvaWQgRmluaXNoKCkKKyAgICB2
b2lkIEZsdXNoKCkKKyAgICB2b2lkIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgcmVuZGVyYnVmZmVydGFyZ2V0LCB1
aW50MzJfdCBhcmczKQorICAgIHZvaWQgRnJhbWVidWZmZXJUZXh0dXJlMkQodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0YXJnZXQsIHVpbnQzMl90IGFy
ZzMsIGludDMyX3QgbGV2ZWwpCisgICAgdm9pZCBGcm9udEZhY2UodWludDMyX3QgbW9kZSkKKyAg
ICB2b2lkIEdlbmVyYXRlTWlwbWFwKHVpbnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdldEFjdGl2
ZUF0dHJpYih1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKGJvb2wgcmV0dXJu
VmFsdWUsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFyZzIpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtKHVpbnQzMl90IHByb2dyYW0sIHVpbnQz
Ml90IGluZGV4KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZUluZm8gYXJnMikgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEF0dHJpYkxvY2F0
aW9uKHVpbnQzMl90IGFyZzAsIFN0cmluZyBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEJ1ZmZlclBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRTdHJpbmcodWludDMyX3QgbmFtZSkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIEdldEZsb2F0dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3Qg
dmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRJbnRlZ2Vydih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25vdXMK
KyAgICB2b2lkIEdldEludGVnZXI2NCh1aW50MzJfdCBwbmFtZSkgLT4gKGludDY0X3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRJbnRlZ2VyNjRpKHVpbnQzMl90IHBuYW1l
LCB1aW50MzJfdCBpbmRleCkgLT4gKGludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisg
ICAgdm9pZCBHZXRQcm9ncmFtaSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBwbmFtZSkgLT4g
KGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRCb29sZWFudih1
aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5j
ZTxib29sPiB2YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVp
bnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2
b2lkIEdldFByb2dyYW1JbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cworICAgIHZvaWQgR2V0U2hhZGVyaSh1aW50MzJfdCBhcmcwLCB1aW50MzJfdCBwbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRTaGFk
ZXJJbmZvTG9nKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQodWludDMyX3Qgc2hhZGVyVHlw
ZSwgdWludDMyX3QgcHJlY2lzaW9uVHlwZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dCwgMj4gcmFuZ2UsIEdDR0xpbnQgcHJlY2lzaW9uKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0
U2hhZGVyU291cmNlKHVpbnQzMl90IGFyZzApIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBHZXRUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMy
X3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdl
dFRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSkgLT4gKGludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtZnYodWludDMy
X3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRV
bmlmb3JtaXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2NhdGlvbiwgdWludDY0X3QgdmFs
dWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZSkgU3luY2hyb25v
dXMKKyAgICB2b2lkIEdldFVuaWZvcm11aXYodWludDMyX3QgcHJvZ3JhbSwgaW50MzJfdCBsb2Nh
dGlvbiwgdWludDY0X3QgdmFsdWVTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4gdmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRVbmlmb3JtTG9jYXRpb24odWludDMy
X3QgYXJnMCwgU3RyaW5nIG5hbWUpIC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgR2V0VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCBwbmFtZSkgLT4gKHVpbnQ2NF90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SGludCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IG1vZGUpCisgICAgdm9pZCBJc0J1ZmZlcih1
aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IElzRW5hYmxlZCh1aW50MzJfdCBjYXApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgSXNGcmFtZWJ1ZmZlcih1aW50MzJfdCBhcmcwKSAtPiAoYm9vbCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUHJvZ3JhbSh1aW50MzJfdCBhcmcwKSAtPiAo
Ym9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIElzUmVuZGVyYnVmZmVyKHVp
bnQzMl90IGFyZzApIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQg
SXNTaGFkZXIodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBJc1RleHR1cmUodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBMaW5lV2lkdGgoZmxvYXQgYXJnMCkKKyAgICB2b2lkIExp
bmtQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBQaXhlbFN0b3JlaSh1aW50MzJfdCBw
bmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFBvbHlnb25PZmZzZXQoZmxvYXQgZmFjdG9y
LCBmbG9hdCB1bml0cykKKyAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMyX3QgdGFy
Z2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgdm9pZCBTYW1wbGVDb3ZlcmFnZShmbG9hdCB2YWx1ZSwgYm9vbCBpbnZlcnQpCisg
ICAgdm9pZCBTY2lzc29yKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKKyAgICB2b2lkIFNoYWRlclNvdXJjZSh1aW50MzJfdCBhcmcwLCBTdHJpbmcg
YXJnMSkKKyAgICB2b2lkIFN0ZW5jaWxGdW5jKHVpbnQzMl90IGZ1bmMsIGludDMyX3QgcmVmLCB1
aW50MzJfdCBtYXNrKQorICAgIHZvaWQgU3RlbmNpbEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBmYWNl
LCB1aW50MzJfdCBmdW5jLCBpbnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB2b2lkIFN0
ZW5jaWxNYXNrKHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsTWFza1NlcGFyYXRlKHVp
bnQzMl90IGZhY2UsIHVpbnQzMl90IG1hc2spCisgICAgdm9pZCBTdGVuY2lsT3AodWludDMyX3Qg
ZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHZvaWQgU3RlbmNpbE9w
U2VwYXJhdGUodWludDMyX3QgZmFjZSwgdWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVp
bnQzMl90IHpwYXNzKQorICAgIHZvaWQgVGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVp
bnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAgICB2b2lkIFRleFBhcmFtZXRlcmkodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgaW50MzJfdCBwYXJhbSkKKyAgICB2b2lkIFVuaWZv
cm0xZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4KQorICAgIHZvaWQgVW5pZm9ybTFmdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5p
Zm9ybTFpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCkKKyAgICB2b2lkIFVuaWZvcm0xaXYo
aW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZv
aWQgVW5pZm9ybTJmKGludDMyX3QgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpCisgICAgdm9p
ZCBVbmlmb3JtMmZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
IHYpCisgICAgdm9pZCBVbmlmb3JtMmkoaW50MzJfdCBsb2NhdGlvbiwgaW50MzJfdCB4LCBpbnQz
Ml90IHkpCisgICAgdm9pZCBVbmlmb3JtMml2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm0zZihpbnQzMl90IGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHZvaWQgVW5pZm9ybTNmdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9y
bTNpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHopCisg
ICAgdm9pZCBVbmlmb3JtM2l2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4gdikKKyAgICB2b2lkIFVuaWZvcm00ZihpbnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KQorICAgIHZvaWQgVW5pZm9ybTRmdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2KQorICAgIHZvaWQgVW5pZm9y
bTRpKGludDMyX3QgbG9jYXRpb24sIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGlu
dDMyX3QgdykKKyAgICB2b2lkIFVuaWZvcm00aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiB2KQorICAgIHZvaWQgVW5pZm9ybU1hdHJpeDJmdihpbnQzMl90
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFs
dWUpCisgICAgdm9pZCBVbmlmb3JtTWF0cml4M2Z2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZSkKKyAgICB2b2lkIFVuaWZv
cm1NYXRyaXg0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlKQorICAgIHZvaWQgVXNlUHJvZ3JhbSh1aW50MzJfdCBhcmcw
KQorICAgIHZvaWQgVmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgdm9pZCBWZXJ0
ZXhBdHRyaWIxZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB2b2lkIFZlcnRleEF0dHJp
YjFmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4gdmFsdWVz
KQorICAgIHZvaWQgVmVydGV4QXR0cmliMmYodWludDMyX3QgaW5kZXgsIGZsb2F0IHgsIGZsb2F0
IHkpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWIyZnYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDI+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjNmKHVpbnQz
Ml90IGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHZvaWQgVmVydGV4QXR0
cmliM2Z2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPiB2YWx1
ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB2b2lkIFZlcnRleEF0dHJpYjRmdih1aW50MzJf
dCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4gdmFsdWVzKQorICAgIHZvaWQg
VmVydGV4QXR0cmliUG9pbnRlcih1aW50MzJfdCBpbmRleCwgaW50MzJfdCBzaXplLCB1aW50MzJf
dCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBvZmZzZXQp
CisgICAgdm9pZCBWaWV3cG9ydChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBCdWZmZXJEYXRhMCh1aW50MzJfdCB0YXJnZXQsIHVp
bnQ2NF90IGFyZzEsIHVpbnQzMl90IHVzYWdlKQorICAgIHZvaWQgQnVmZmVyRGF0YTEodWludDMy
X3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGEsIHVpbnQzMl90IHVz
YWdlKQorICAgIHZvaWQgQnVmZmVyU3ViRGF0YSh1aW50MzJfdCB0YXJnZXQsIHVpbnQ2NF90IG9m
ZnNldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgUmVhZG5Q
aXhlbHMwKGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBkYXRhU2l6ZSkgLT4g
KElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IFJlYWRuUGl4ZWxzMShpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgVGV4SW1hZ2UyRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGlu
dDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4SW1hZ2UyRDEodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB2b2lkIFRleFN1YkltYWdlMkQwKHVp
bnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZv
aWQgVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90
IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZv
aWQgQ29tcHJlc3NlZFRleEltYWdlMkQwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4gZGF0YSkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhJbWFnZTJEMSh1aW50MzJfdCB0YXJn
ZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRo
LCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VTaXplLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBp
bWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YSkKKyAgICB2b2lkIENv
bXByZXNzZWRUZXhTdWJJbWFnZTJEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0
KQorICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGZp
cnN0LCBpbnQzMl90IGNvdW50LCBpbnQzMl90IHByaW1jb3VudCkKKyAgICB2b2lkIERyYXdFbGVt
ZW50c0luc3RhbmNlZCh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZvaWQgVmVydGV4QXR0
cmliRGl2aXNvcih1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB2b2lkIENy
ZWF0ZVZlcnRleEFycmF5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIElzVmVy
dGV4QXJyYXkodWludDMyX3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBCaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB2b2lkIENvcHlC
dWZmZXJTdWJEYXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRlVGFyZ2V0LCB1
aW50NjRfdCByZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0X3QgYXJnNCkK
KyAgICB2b2lkIEdldEJ1ZmZlclN1YkRhdGEodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZz
ZXQsIHVpbnQ2NF90IGRhdGFTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxpdEZyYW1lYnVmZmVyKGludDMyX3Qgc3JjWDAs
IGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3JjWTEsIGludDMyX3QgZHN0
WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3QgZHN0WTEsIHVpbnQzMl90
IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB2b2lkIEZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXR0YWNobWVudCwgdWludDMyX3QgdGV4dHVyZSwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCBsYXllcikKKyAgICB2b2lkIEludmFsaWRhdGVGcmFtZWJ1
ZmZlcih1aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGF0dGFj
aG1lbnRzKQorICAgIHZvaWQgSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYXR0YWNobWVudHMsIGludDMyX3QgeCwg
aW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB2b2lkIFJlYWRC
dWZmZXIodWludDMyX3Qgc3JjKQorICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpbnRlcm5hbGZv
cm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgdm9pZCBUZXhTdG9yYWdl
MkQodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVscywgdWludDMyX3QgaW50ZXJuYWxmb3Jt
YXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHZvaWQgVGV4U3RvcmFnZTNE
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbHMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCkKKyAgICB2b2lk
IFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCBpbnRl
cm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgs
IGludDMyX3QgYm9yZGVyLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4gcGl4ZWxzKQorICAgIHZvaWQgVGV4SW1hZ2UzRDEodWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgaW50MzJfdCBib3JkZXIsIHVp
bnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQg
VGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhv
ZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IHBpeGVscykKKyAgICB2b2lkIFRleFN1
YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0
LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgem9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHZvaWQgQ29weVRleFN1YkltYWdlM0QodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4SW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhKQorICAgIHZvaWQgQ29t
cHJlc3NlZFRleEltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNl
dCkKKyAgICB2b2lkIENvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpv
ZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCB1aW50
MzJfdCBmb3JtYXQsIGludDMyX3QgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+IGRhdGEpCisgICAgdm9pZCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50
MzJfdCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0
aCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0X3Qgb2Zmc2V0KQor
ICAgIHZvaWQgR2V0RnJhZ0RhdGFMb2NhdGlvbih1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcgbmFt
ZSkgLT4gKGludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBVbmlmb3Jt
MXVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwKQorICAgIHZvaWQgVW5pZm9ybTJ1aShp
bnQzMl90IGxvY2F0aW9uLCB1aW50MzJfdCB2MCwgdWludDMyX3QgdjEpCisgICAgdm9pZCBVbmlm
b3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSwgdWludDMy
X3QgdjIpCisgICAgdm9pZCBVbmlmb3JtNHVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYw
LCB1aW50MzJfdCB2MSwgdWludDMyX3QgdjIsIHVpbnQzMl90IHYzKQorICAgIHZvaWQgVW5pZm9y
bTF1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0
YSkKKyAgICB2b2lkIFVuaWZvcm0ydWl2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+IGRhdGEpCisgICAgdm9pZCBVbmlmb3JtM3VpdihpbnQzMl90IGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiBkYXRhKQorICAgIHZvaWQgVW5pZm9y
bTR1aXYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gZGF0
YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZv
cm1NYXRyaXgzeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXgyeDRmdihpbnQz
Ml90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4g
ZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXg0eDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVu
aWZvcm1NYXRyaXgzeDRmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4gZGF0YSkKKyAgICB2b2lkIFVuaWZvcm1NYXRyaXg0eDNmdihp
bnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4gZGF0YSkKKyAgICB2b2lkIFZlcnRleEF0dHJpYkk0aSh1aW50MzJfdCBpbmRleCwgaW50MzJf
dCB4LCBpbnQzMl90IHksIGludDMyX3QgeiwgaW50MzJfdCB3KQorICAgIHZvaWQgVmVydGV4QXR0
cmliSTRpdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PiB2
YWx1ZXMpCisgICAgdm9pZCBWZXJ0ZXhBdHRyaWJJNHVpKHVpbnQzMl90IGluZGV4LCB1aW50MzJf
dCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1aW50MzJfdCB3KQorICAgIHZvaWQgVmVydGV4
QXR0cmliSTR1aXYodWludDMyX3QgaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Qs
IDQ+IHZhbHVlcykKKyAgICB2b2lkIFZlcnRleEF0dHJpYklQb2ludGVyKHVpbnQzMl90IGluZGV4
LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGludDMyX3Qgc3RyaWRlLCB1aW50NjRfdCBv
ZmZzZXQpCisgICAgdm9pZCBEcmF3UmFuZ2VFbGVtZW50cyh1aW50MzJfdCBtb2RlLCB1aW50MzJf
dCBzdGFydCwgdWludDMyX3QgZW5kLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50
NjRfdCBvZmZzZXQpCisgICAgdm9pZCBEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PiBidWZzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJpdih1aW50MzJfdCBidWZmZXIsIGlu
dDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZXMpCisg
ICAgdm9pZCBDbGVhckJ1ZmZlcnVpdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJC
dWZmZXJmdih1aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4gdmFsdWVzKQorICAgIHZvaWQgQ2xlYXJCdWZmZXJmaSh1aW50MzJfdCBi
dWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qgc3RlbmNpbCkK
KyAgICB2b2lkIENyZWF0ZVF1ZXJ5KCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cworICAgIHZvaWQgRGVsZXRlUXVlcnkodWludDMyX3QgcXVlcnkpCisgICAgdm9pZCBJc1F1
ZXJ5KHVpbnQzMl90IHF1ZXJ5KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIEJlZ2luUXVlcnkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBxdWVyeSkKKyAgICB2
b2lkIEVuZFF1ZXJ5KHVpbnQzMl90IHRhcmdldCkKKyAgICB2b2lkIEdldFF1ZXJ5KHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgcG5hbWUpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEdldFF1ZXJ5T2JqZWN0dWkodWludDMyX3QgcXVlcnksIHVpbnQzMl90
IHBuYW1lKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBD
cmVhdGVTYW1wbGVyKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgRGVsZXRlU2FtcGxlcih1aW50MzJfdCBzYW1wbGVyKQorICAgIHZvaWQgSXNTYW1wbGVy
KHVpbnQzMl90IHNhbXBsZXIpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAg
IHZvaWQgQmluZFNhbXBsZXIodWludDMyX3QgdW5pdCwgdWludDMyX3Qgc2FtcGxlcikKKyAgICB2
b2lkIFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBp
bnQzMl90IHBhcmFtKQorICAgIHZvaWQgU2FtcGxlclBhcmFtZXRlcmYodWludDMyX3Qgc2FtcGxl
ciwgdWludDMyX3QgcG5hbWUsIGZsb2F0IHBhcmFtKQorICAgIHZvaWQgR2V0U2FtcGxlclBhcmFt
ZXRlcmYodWludDMyX3Qgc2FtcGxlciwgdWludDMyX3QgcG5hbWUpIC0+IChmbG9hdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90
IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIEZlbmNlU3luYyh1aW50MzJfdCBjb25kaXRpb24sIHVpbnQzMl90IGZs
YWdzKSAtPiAodWludDY0X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBJc1N5
bmModWludDY0X3QgYXJnMCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBEZWxldGVTeW5jKHVpbnQ2NF90IGFyZzApCisgICAgdm9pZCBDbGllbnRXYWl0U3luYyh1
aW50NjRfdCBhcmcwLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgdGltZW91dCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgV2FpdFN5bmModWludDY0X3Qg
YXJnMCwgdWludDMyX3QgZmxhZ3MsIGludDY0X3QgdGltZW91dCkKKyAgICB2b2lkIEdldFN5bmNp
KHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IHBuYW1lKSAtPiAoaW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2sodWludDMyX3QgaWQpCisgICAgdm9pZCBJc1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90
IGlkKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEJpbmRUcmFu
c2Zvcm1GZWVkYmFjayh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkKQorICAgIHZvaWQgQmVn
aW5UcmFuc2Zvcm1GZWVkYmFjayh1aW50MzJfdCBwcmltaXRpdmVNb2RlKQorICAgIHZvaWQgRW5k
VHJhbnNmb3JtRmVlZGJhY2soKQorICAgIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyh1
aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiB2YXJ5aW5ncywgdWludDMyX3QgYnVmZmVy
TW9kZSkKKyAgICB2b2lkIEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyh1aW50MzJfdCBwcm9n
cmFtLCB1aW50MzJfdCBpbmRleCkgLT4gKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3Rp
dmVJbmZvIGFyZzIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBQYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCkKKyAgICB2b2lkIFJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB2b2lkIEJpbmRCdWZm
ZXJCYXNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlcikK
KyAgICB2b2lkIEJpbmRCdWZmZXJSYW5nZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4
LCB1aW50MzJfdCBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYXJnNCkKKyAgICB2
b2lkIEdldFVuaWZvcm1JbmRpY2VzKHVpbnQzMl90IHByb2dyYW0sIFZlY3RvcjxTdHJpbmc+IHVu
aWZvcm1OYW1lcykgLT4gKFZlY3Rvcjx1aW50MzJfdD4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3Jtcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8dWlu
dDMyX3Q+IHVuaWZvcm1JbmRpY2VzLCB1aW50MzJfdCBwbmFtZSkgLT4gKFZlY3RvcjxpbnQzMl90
PiByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKKyAgICB2b2lkIEdldFVuaWZvcm1CbG9ja0luZGV4
KHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyB1bmlmb3JtQmxvY2tOYW1lKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKHVpbnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4KSAtPiAoU3Ry
aW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgVW5pZm9ybUJsb2NrQmluZGlu
Zyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJbmRleCwgdWludDMyX3Qg
dW5pZm9ybUJsb2NrQmluZGluZykKKyAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHVp
bnQzMl90IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCBwbmFt
ZSwgdWludDY0X3QgcGFyYW1zU2l6ZSkgLT4gKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4g
cGFyYW1zKSBTeW5jaHJvbm91cworICAgIHZvaWQgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
IC0+IChpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgQmxpdEZyYW1l
YnVmZmVyQU5HTEUoaW50MzJfdCBzcmNYMCwgaW50MzJfdCBzcmNZMCwgaW50MzJfdCBzcmNYMSwg
aW50MzJfdCBzcmNZMSwgaW50MzJfdCBkc3RYMCwgaW50MzJfdCBkc3RZMCwgaW50MzJfdCBkc3RY
MSwgaW50MzJfdCBkc3RZMSwgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmlsdGVyKQorICAgIHZv
aWQgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IHNhbXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKKyAgICB2b2lkIENyZWF0ZVZlcnRleEFycmF5T0VTKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cworICAgIHZvaWQgRGVsZXRlVmVydGV4QXJyYXlP
RVModWludDMyX3QgYXJnMCkKKyAgICB2b2lkIElzVmVydGV4QXJyYXlPRVModWludDMyX3QgYXJn
MCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBCaW5kVmVydGV4
QXJyYXlPRVModWludDMyX3QgYXJnMCkKKyAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRSh1aW50MzJfdCBhcmcwKSAtPiAoU3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cworICAgIHZvaWQgSW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisgICAgdm9pZCBQ
dXNoR3JvdXBNYXJrZXJFWFQoU3RyaW5nIGFyZzApCisgICAgdm9pZCBQb3BHcm91cE1hcmtlckVY
VCgpCisgICAgdm9pZCBEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PiBidWZzKQorICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUs
IGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGludDMyX3QgcHJpbWNvdW50KQorICAgIHZv
aWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgaW50MzJfdCBjb3Vu
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90IHByaW1jb3VudCkKKyAg
ICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSh1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg
ZGl2aXNvcikKKyAgICB2b2lkIEdldEludGVybmFsZm9ybWF0aXYodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1Np
emUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMK
K30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lN2M0MGM5ODVjYjdkMjcyMjg2OWE1ZGZmOTY5MTk0NzA3N2FmNDZjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKSAmJiBQTEFURk9STShDT0NPQSkK
KworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW5jbHVkZSA8d3Rm
L01hY2hTZW5kUmlnaHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgcHJpdmF0ZSBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZp
bmFsID0gZGVmYXVsdDsKKworICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRl
cy4KKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RG
OjpNYWNoU2VuZFJpZ2h0JiYpPiYmKSBmaW5hbDsKKworICAgIC8vIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluIG92ZXJyaWRlcy4KKyAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigp
IGZpbmFsOworICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIGZpbmFsOworICAgIHZvaWQqIGRldGFj
aENsaWVudCgpIGZpbmFsOworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbjo6QnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKK307CisKK30KKworc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
PihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKK30KKworUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmli
dXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCit7Cit9CisKK0dyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6cmVjeWNsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9kaXNwbGF5QnVm
ZmVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVzZW50KEJ1
ZmZlciBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZSk7Cisg
ICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworfQorCit2b2lkKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hDbGllbnQoKQoreworICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUsIG51bGxwdHIpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICBhdXRvIGRpc3BsYXlC
dWZmZXIgPSBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlci5zdXJmYWNlKTsKKyAgICBNYWNoU2VuZFJp
Z2h0IHNlbmRSaWdodDsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgc2VuZFJpZ2h0
ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJpZ2h0KCk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzZW5kUmlnaHQpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1
bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYw
MTYwMmFmNDkzZWI2N2RlM2U2MmNmMGU1MGFjMGEyYjk5MjVmMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0wLDAgKzEsMTE4OSBAQAorLyogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRo
aXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQu
CisvLyBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwcml2YXRlIHNlY3Rpb24g
b2YgdGhlCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbXBsZW1lbnRhdGlvbnMuCisjcHJh
Z21hIG9uY2UKKyAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5zZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCk7CisgICAgfQorICAg
IHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKKyAgICB9CisgICAgdm9pZCBtb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICB9CisgICAgdm9p
ZCBhdHRhY2hTaGFkZXIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3Qgc2hhZGVyKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICB9
CisgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRpb24odWludDMyX3QgYXJnMCwgdWludDMyX3QgaW5k
ZXgsIFN0cmluZyYmIG5hbWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRBdHRyaWJM
b2NhdGlvbihhcmcwLCBpbmRleCwgbmFtZSk7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlcih1
aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGFyZzEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5kRnJhbWVidWZm
ZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKTsKKyAgICB9CisgICAgdm9pZCBiaW5k
UmVuZGVyYnVmZmVyKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGFyZzEpOworICAgIH0KKyAg
ICB2b2lkIGJpbmRUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgYXJnMSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKTsKKyAgICB9Cisg
ICAgdm9pZCBibGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZs
b2F0IGFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5ibGVuZENvbG9yKHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhKTsKKyAgICB9CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKHVpbnQzMl90
IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb24obW9kZSk7Cisg
ICAgfQorICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKHVpbnQzMl90IG1vZGVSR0IsIHVp
bnQzMl90IG1vZGVBbHBoYSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmxlbmRFcXVhdGlv
blNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CisgICAgfQorICAgIHZvaWQgYmxlbmRGdW5j
KHVpbnQzMl90IHNmYWN0b3IsIHVpbnQzMl90IGRmYWN0b3IpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKTsKKyAgICB9CisgICAgdm9pZCBibGVu
ZEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBzcmNSR0IsIHVpbnQzMl90IGRzdFJHQiwgdWludDMyX3Qg
c3JjQWxwaGEsIHVpbnQzMl90IGRzdEFscGhhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5i
bGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKKyAg
ICB9CisgICAgdm9pZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVpbnQzMl90IHRhcmdldCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNsZWFyKHVp
bnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyKG1hc2spOworICAg
IH0KKyAgICB2b2lkIGNsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1
ZSwgZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IocmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIH0KKyAgICB2b2lkIGNsZWFyRGVwdGgoZmxvYXQg
ZGVwdGgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyRGVwdGgoZGVwdGgpOworICAg
IH0KKyAgICB2b2lkIGNsZWFyU3RlbmNpbChpbnQzMl90IHMpCisgICAgeworICAgICAgICBtX2Nv
bnRleHQtPmNsZWFyU3RlbmNpbChzKTsKKyAgICB9CisgICAgdm9pZCBjb2xvck1hc2soYm9vbCBy
ZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Y29sb3JNYXNrKHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZWQpLCBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4oYmx1ZSks
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihhbHBoYSkpOworICAgIH0KKyAgICB2b2lkIGNvbXBp
bGVTaGFkZXIodWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcGls
ZVNoYWRlcihhcmcwKTsKKyAgICB9CisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRCh1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHgs
IGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKKyAgICB9Cisg
ICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHgsIGludDMyX3QgeSwg
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZUJ1ZmZlcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZh
bHVlID0gbV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZUZyYW1lYnVmZmVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVQcm9ncmFt
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZVJlbmRl
cmJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVSZW5kZXJidWZmZXIoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGNyZWF0ZVNoYWRlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQz
Ml90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmpl
Y3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5j
cmVhdGVTaGFkZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVUZXh0dXJlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1H
TE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRl
eHQtPmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIGN1bGxGYWNlKHVpbnQzMl90IG1vZGUpCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPmN1bGxGYWNlKG1vZGUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZUJ1
ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVCdWZm
ZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodWludDMyX3QgYXJn
MCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoYXJnMCk7Cisg
ICAgfQorICAgIHZvaWQgZGVsZXRlUHJvZ3JhbSh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKGFyZzApOworICAgIH0KKyAgICB2b2lkIGRlbGV0
ZVJlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVSZW5kZXJidWZmZXIoYXJnMCk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVp
bnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihhcmcw
KTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVUZXh0dXJlKHVpbnQzMl90IGFyZzApCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUoYXJnMCk7CisgICAgfQorICAgIHZvaWQg
ZGVwdGhGdW5jKHVpbnQzMl90IGZ1bmMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlcHRo
RnVuYyhmdW5jKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aE1hc2soYm9vbCBmbGFnKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5kZXB0aE1hc2soc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KGZs
YWcpKTsKKyAgICB9CisgICAgdm9pZCBkZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFy
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZXB0aFJhbmdlKHpOZWFyLCB6RmFyKTsKKyAg
ICB9CisgICAgdm9pZCBkZXRhY2hTaGFkZXIodWludDMyX3QgYXJnMCwgdWludDMyX3QgYXJnMSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpOworICAg
IH0KKyAgICB2b2lkIGRpc2FibGUodWludDMyX3QgY2FwKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5kaXNhYmxlKGNhcCk7CisgICAgfQorICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHVpbnQzMl90IGluZGV4KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIH0KKyAgICB2b2lkIGRyYXdBcnJheXModWludDMy
X3QgbW9kZSwgaW50MzJfdCBmaXJzdCwgaW50MzJfdCBjb3VudCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+ZHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpOworICAgIH0KKyAgICB2b2lk
IGRyYXdFbGVtZW50cyh1aW50MzJfdCBtb2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBl
LCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50
cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7Cisg
ICAgfQorICAgIHZvaWQgZW5hYmxlKHVpbnQzMl90IGNhcCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZW5hYmxlKGNhcCk7CisgICAgfQorICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkodWludDMyX3QgaW5kZXgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICB9CisgICAgdm9pZCBmaW5pc2goKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5maW5pc2goKTsKKyAgICB9CisgICAgdm9pZCBmbHVzaCgpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50
MzJfdCByZW5kZXJidWZmZXJ0YXJnZXQsIHVpbnQzMl90IGFyZzMpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVu
ZGVyYnVmZmVydGFyZ2V0LCBhcmczKTsKKyAgICB9CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1
cmUyRCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGF0dGFjaG1lbnQsIHVpbnQzMl90IHRleHRh
cmdldCwgdWludDMyX3QgYXJnMywgaW50MzJfdCBsZXZlbCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQs
IGFyZzMsIGxldmVsKTsKKyAgICB9CisgICAgdm9pZCBmcm9udEZhY2UodWludDMyX3QgbW9kZSkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZnJvbnRGYWNlKG1vZGUpOworICAgIH0KKyAgICB2
b2lkIGdlbmVyYXRlTWlwbWFwKHVpbnQzMl90IHRhcmdldCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+Z2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVB
dHRyaWIodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBib29sIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhcmcyIHsg
fTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZUF0dHJpYihwcm9n
cmFtLCBpbmRleCwgYXJnMik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
LCBXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtKHVpbnQz
Ml90IHByb2dyYW0sIHVpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2ws
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYXJnMiB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4
LCBhcmcyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUsIFdURk1vdmUo
YXJnMikpOworICAgIH0KKyAgICB2b2lkIGdldEF0dHJpYkxvY2F0aW9uKHVpbnQzMl90IGFyZzAs
IFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24oYXJnMCwg
bmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGdldFN0cmluZyh1aW50MzJfdCBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFN0cmluZyhuYW1l
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICB2b2lkIGdldEZsb2F0dih1aW50MzJfdCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXpl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMZmxvYXQsIDE2PiB2
YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRl
eHQtPmdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGZsb2F0Kj4odmFsdWUu
ZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcnYodWlu
dDMyX3QgcG5hbWUsIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIFZlY3RvcjxHQ0dMaW50LCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZh
bHVlU2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCB2YWx1
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgp
KSk7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZWdlcjY0KHVpbnQzMl90IHBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTGludDY0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0SW50ZWdlcjY0KHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRJbnRlZ2VyNjRpKHVpbnQzMl90IHBuYW1lLCB1aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IEdDR0xpbnQ2NCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9p
ZCBnZXRQcm9ncmFtaSh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRCb29sZWFudih1aW50MzJf
dCBwbmFtZSwgdWludDY0X3QgdmFsdWVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
QXJyYXlSZWZlcmVuY2U8Ym9vbD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgVmVjdG9yPEdDR0xib29sZWFuLCA0PiB2YWx1ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHZhbHVl
U2l6ZSksIDApOworICAgICAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4ocmVp
bnRlcnByZXRfY2FzdDxib29sKj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAg
fQorICAgIHZvaWQgZ2V0RXJyb3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZW51bSByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEVycm9yKCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
YXR0YWNobWVudCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFBy
b2dyYW1JbmZvTG9nKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVyblZh
bHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbUlu
Zm9Mb2coYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFs
dWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVl
ID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlcmkodWludDMyX3QgYXJnMCwgdWlu
dDMyX3QgcG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShhcmcwLCBwbmFtZSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBn
ZXRTaGFkZXJJbmZvTG9nKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVy
SW5mb0xvZyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5W
YWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCh1aW50MzJf
dCBzaGFkZXJUeXBlLCB1aW50MzJfdCBwcmVjaXNpb25UeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgMj4sIGludDMyX3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgc3RkOjphcnJheTxHQ0dMaW50LCAyPiByYW5nZSB7
IH07CisgICAgICAgIEdDR0xpbnQgcHJlY2lzaW9uID0geyB9OworICAgICAgICBtX2NvbnRleHQt
PmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCByYW5n
ZSwgJnByZWNpc2lvbik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdCwgMj4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocmFuZ2UuZGF0YSgp
KSwgcmFuZ2Uuc2l6ZSgpKSwgcHJlY2lzaW9uKTsKKyAgICB9CisgICAgdm9pZCBnZXRTaGFkZXJT
b3VyY2UodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2UoYXJn
MCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
cG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoZmxvYXQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGZsb2F0IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGdldFRleFBhcmFtZXRlcmkodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBwbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybWZ2
KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRpb24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGZsb2F0LCAxNj4gdmFs
dWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxm
bG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIGdl
dFVuaWZvcm1pdih1aW50MzJfdCBwcm9ncmFtLCBpbnQzMl90IGxvY2F0aW9uLCB1aW50NjRfdCB2
YWx1ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBWZWN0b3I8R0NHTGlu
dCwgND4gdmFsdWUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpLCAwKTsKKyAgICAgICAg
bV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGludDMyX3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KHVpbnQzMl90IHByb2dyYW0sIGludDMyX3QgbG9jYXRp
b24sIHVpbnQ2NF90IHZhbHVlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICBWZWN0b3I8R0NHTHVpbnQsIDQ+IHZhbHVlKHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXpl
KSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlv
biwgdmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4odmFsdWUuZGF0YSgpKSwgdmFs
dWUuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZ2V0VW5pZm9ybUxvY2F0aW9uKHVpbnQzMl90
IGFyZzAsIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0g
eyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KGFyZzAsIG5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KHVpbnQzMl90IGluZGV4LCB1aW50
MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMc2l6ZWlwdHIgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
aW5kZXgsIHBuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaGludCh1aW50MzJfdCB0YXJn
ZXQsIHVpbnQzMl90IG1vZGUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmhpbnQodGFyZ2V0
LCBtb2RlKTsKKyAgICB9CisgICAgdm9pZCBpc0J1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5pc0J1ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rh
dGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc0VuYWJsZWQo
dWludDMyX3QgY2FwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc0VuYWJsZWQoY2FwKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9
CisgICAgdm9pZCBpc0ZyYW1lYnVmZmVyKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMYm9v
bGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmlzRnJhbWVidWZmZXIoYXJnMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19j
YXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgaXNQcm9ncmFtKHVpbnQz
Ml90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBHQ0dMYm9vbGVhbiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmlzUHJvZ3JhbShhcmcwKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9Cisg
ICAgdm9pZCBpc1JlbmRlcmJ1ZmZlcih1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xl
YW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5p
c1JlbmRlcmJ1ZmZlcihhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nh
c3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBpc1NoYWRlcih1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1NoYWRlcihhcmcwKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAg
dm9pZCBpc1RleHR1cmUodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNUZXh0dXJl
KGFyZzApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1
cm5WYWx1ZSkpOworICAgIH0KKyAgICB2b2lkIGxpbmVXaWR0aChmbG9hdCBhcmcwKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5saW5lV2lkdGgoYXJnMCk7CisgICAgfQorICAgIHZvaWQgbGlu
a1Byb2dyYW0odWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+bGlua1By
b2dyYW0oYXJnMCk7CisgICAgfQorICAgIHZvaWQgcGl4ZWxTdG9yZWkodWludDMyX3QgcG5hbWUs
IGludDMyX3QgcGFyYW0pCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnBpeGVsU3RvcmVpKHBu
YW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgcG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3Is
IGZsb2F0IHVuaXRzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5wb2x5Z29uT2Zmc2V0KGZh
Y3RvciwgdW5pdHMpOworICAgIH0KKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
dGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQg
c2FtcGxlQ292ZXJhZ2UoZmxvYXQgdmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LT5zYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KGludmVydCkpOworICAgIH0KKyAgICB2b2lkIHNjaXNzb3IoaW50MzJfdCB4LCBpbnQzMl90IHks
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5zY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNoYWRlclNv
dXJjZSh1aW50MzJfdCBhcmcwLCBTdHJpbmcmJiBhcmcxKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5zaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSk7CisgICAgfQorICAgIHZvaWQgc3RlbmNpbEZ1
bmModWludDMyX3QgZnVuYywgaW50MzJfdCByZWYsIHVpbnQzMl90IG1hc2spCisgICAgeworICAg
ICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorICAg
IHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmdW5jLCBp
bnQzMl90IHJlZiwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3Rl
bmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIH0KKyAgICB2b2lk
IHN0ZW5jaWxNYXNrKHVpbnQzMl90IG1hc2spCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnN0
ZW5jaWxNYXNrKG1hc2spOworICAgIH0KKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUodWlu
dDMyX3QgZmFjZSwgdWludDMyX3QgbWFzaykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+c3Rl
bmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKKyAgICB9CisgICAgdm9pZCBzdGVuY2lsT3Ao
dWludDMyX3QgZmFpbCwgdWludDMyX3QgemZhaWwsIHVpbnQzMl90IHpwYXNzKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9Cisg
ICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZSh1aW50MzJfdCBmYWNlLCB1aW50MzJfdCBmYWlsLCB1
aW50MzJfdCB6ZmFpbCwgdWludDMyX3QgenBhc3MpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorICAg
IHZvaWQgdGV4UGFyYW1ldGVyZih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBmbG9h
dCBwYXJhbSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQs
IHBuYW1lLCBwYXJhbSk7CisgICAgfQorICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IHBuYW1lLCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CisgICAg
dm9pZCB1bmlmb3JtMWYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dW5pZm9ybTFmKGxvY2F0aW9uLCB4KTsKKyAgICB9CisgICAgdm9pZCB1bmlm
b3JtMWZ2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUo
KSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0xaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90
IHgpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvbiwgeCk7Cisg
ICAgfQorICAgIHZvaWQgdW5pZm9ybTFpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+JiYgdikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFp
dihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+
KHYuZGF0YSgpKSwgdi5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmYoaW50MzJf
dCBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+
dW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMmZ2KGlu
dDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm0yaShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGludDMy
X3QgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMml2KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlm
b3JtMml2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
aW50Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm0zZihp
bnQzMl90IGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopOworICAgIH0KKyAgICB2
b2lkIHVuaWZvcm0zZnYoaW50MzJfdCBsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4mJiB2KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2LmRhdGEoKSks
IHYuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybTNpKGludDMyX3QgbG9jYXRpb24s
IGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHopCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeik7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTNpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGYoaW50MzJfdCBsb2NhdGlvbiwgZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNGZ2
KGludDMyX3QgbG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdikKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odi5kYXRhKCkpLCB2LnNpemUoKSkpOwor
ICAgIH0KKyAgICB2b2lkIHVuaWZvcm00aShpbnQzMl90IGxvY2F0aW9uLCBpbnQzMl90IHgsIGlu
dDMyX3QgeSwgaW50MzJfdCB6LCBpbnQzMl90IHcpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyk7CisgICAgfQorICAgIHZvaWQgdW5pZm9y
bTRpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgdikK
KyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KHYuZGF0YSgpKSwgdi5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KGludDMyX3QgbG9jYXRpb24sIGJv
b2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWUuZGF0YSgpKSwgdmFsdWUuc2l6ZSgpKSk7CisgICAgfQor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xm
bG9hdCo+KHZhbHVlLmRhdGEoKSksIHZhbHVlLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXg0ZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+JiYgdmFsdWUpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bv
c2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPih2YWx1
ZS5kYXRhKCkpLCB2YWx1ZS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1c2VQcm9ncmFtKHVp
bnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0oYXJnMCk7
CisgICAgfQorICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKHVpbnQzMl90IGFyZzApCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnZhbGlkYXRlUHJvZ3JhbShhcmcwKTsKKyAgICB9CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIxZih1aW50MzJfdCBpbmRleCwgZmxvYXQgeCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliMWYoaW5kZXgsIHgpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYjFmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwg
MT4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmdihp
bmRleCwgbWFrZUdDR0xTcGFuPDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4o
dmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZih1aW50MzJf
dCBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVy
dGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjJm
dih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMj4mJiB2YWx1ZXMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgbWFrZUdD
R0xTcGFuPDI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEo
KSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1aW50MzJfdCBpbmRleCwgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliM2YoaW5kZXgsIHgsIHksIHopOworICAgIH0KKyAgICB2b2lkIHZlcnRleEF0dHJpYjNm
dih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4mJiB2YWx1ZXMp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgbWFrZUdD
R0xTcGFuPDM+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4odmFsdWVzLmRhdGEo
KSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0Zih1aW50MzJfdCBpbmRleCwgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpOworICAgIH0KKyAgICB2b2lkIHZl
cnRleEF0dHJpYjRmdih1aW50MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwg
ND4mJiB2YWx1ZXMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihp
bmRleCwgbWFrZUdDR0xTcGFuPDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4o
dmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVp
bnQzMl90IGluZGV4LCBpbnQzMl90IHNpemUsIHVpbnQzMl90IHR5cGUsIGJvb2wgbm9ybWFsaXpl
ZCwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KG5vcm1hbGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+
KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHZpZXdwb3J0KGludDMyX3QgeCwgaW50MzJfdCB5
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4
dC0+dmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgYnVmZmVy
RGF0YTAodWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCBhcmcxLCB1aW50MzJfdCB1c2FnZSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdD
R0xzaXplaXB0cj4oYXJnMSksIHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJEYXRhMSh1
aW50MzJfdCB0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhLCB1aW50
MzJfdCB1c2FnZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQs
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRh
KCkpLCBkYXRhLnNpemUoKSksIHVzYWdlKTsKKyAgICB9CisgICAgdm9pZCBidWZmZXJTdWJEYXRh
KHVpbnQzMl90IHRhcmdldCwgdWludDY0X3Qgb2Zmc2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0
YXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkp
OworICAgIH0KKyAgICB2b2lkIHJlYWRuUGl4ZWxzMChpbnQzMl90IHgsIGludDMyX3QgeSwgaW50
MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlw
ZSwgdWludDY0X3QgZGF0YVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBW
ZWN0b3I8R0NHTGNoYXIsIDQ+IGRhdGEoc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSksIDAp
OworICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHJlYWRuUGl4ZWxzMShpbnQzMl90IHgs
IGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1h
dCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRp
Y19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQw
KHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4
ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbWFr
ZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihwaXhlbHMuZGF0YSgp
KSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHRleEltYWdlMkQxKHVpbnQzMl90
IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THZvaWQqPihwaXhlbHMuZGF0YSgpKSwgcGl4ZWxzLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lk
IHRleFN1YkltYWdlMkQxKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgaW50MzJfdCB4
b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1
aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRw
dHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEMCh1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBib3JkZXIsIGludDMyX3QgaW1hZ2VT
aXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwgdWludDY0
X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBp
bWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAgIH0KKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVp
bnQ2NF90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkpOworICAg
IH0KKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQodWludDMyX3QgbW9kZSwgaW50MzJfdCBm
aXJzdCwgaW50MzJfdCBjb3VudCwgaW50MzJfdCBwcmltY291bnQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOworICAgIH0KKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZCh1aW50MzJfdCBtb2Rl
LCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMyX3Qg
cHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5j
ZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHBy
aW1jb3VudCk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcih1aW50MzJfdCBp
bmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgfQorICAgIHZvaWQgY3JlYXRlVmVy
dGV4QXJyYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Y3JlYXRlVmVydGV4QXJyYXkoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IGRlbGV0ZVZlcnRleEFycmF5KHVpbnQzMl90IGFyZzApCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPmRlbGV0ZVZlcnRleEFycmF5KGFyZzApOworICAgIH0KKyAgICB2b2lkIGlzVmVydGV4QXJy
YXkodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9
OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNWZXJ0ZXhBcnJheShhcmcwKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkodWludDMyX3QgYXJnMCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZFZlcnRleEFycmF5KGFyZzApOworICAgIH0KKyAgICB2
b2lkIGNvcHlCdWZmZXJTdWJEYXRhKHVpbnQzMl90IHJlYWRUYXJnZXQsIHVpbnQzMl90IHdyaXRl
VGFyZ2V0LCB1aW50NjRfdCByZWFkT2Zmc2V0LCB1aW50NjRfdCB3cml0ZU9mZnNldCwgdWludDY0
X3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y29weUJ1ZmZlclN1YkRhdGEocmVh
ZFRhcmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KHJlYWRPZmZzZXQp
LCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PEdDR0xz
aXplaXB0cj4oYXJnNCkpOworICAgIH0KKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEodWludDMy
X3QgdGFyZ2V0LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGRhdGFTaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0xjaGFyLCA0PiBkYXRhKHN0YXRpY19j
YXN0PHNpemVfdD4oZGF0YVNpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJT
dWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgZGF0YSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihpbnQzMl90IHNyY1gwLCBpbnQzMl90IHNyY1kw
LCBpbnQzMl90IHNyY1gxLCBpbnQzMl90IHNyY1kxLCBpbnQzMl90IGRzdFgwLCBpbnQzMl90IGRz
dFkwLCBpbnQzMl90IGRzdFgxLCBpbnQzMl90IGRzdFkxLCB1aW50MzJfdCBtYXNrLCB1aW50MzJf
dCBmaWx0ZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJsaXRGcmFtZWJ1ZmZlcihzcmNY
MCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ss
IGZpbHRlcik7CisgICAgfQorICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodWludDMy
X3QgdGFyZ2V0LCB1aW50MzJfdCBhdHRhY2htZW50LCB1aW50MzJfdCB0ZXh0dXJlLCBpbnQzMl90
IGxldmVsLCBpbnQzMl90IGxheWVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXll
cik7CisgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKHVpbnQzMl90IHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBhdHRhY2htZW50cykKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgbWFrZUdDR0xT
cGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihhdHRhY2htZW50cy5kYXRhKCkp
LCBhdHRhY2htZW50cy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJh
bWVidWZmZXIodWludDMyX3QgdGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYm
IGF0dGFjaG1lbnRzLCBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1
ZmZlcih0YXJnZXQsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVt
Kj4oYXR0YWNobWVudHMuZGF0YSgpKSwgYXR0YWNobWVudHMuc2l6ZSgpKSwgeCwgeSwgd2lkdGgs
IGhlaWdodCk7CisgICAgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcih1aW50MzJfdCBzcmMpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnJlYWRCdWZmZXIoc3JjKTsKKyAgICB9CisgICAgdm9pZCBy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IHNh
bXBsZXMsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwor
ICAgIH0KKyAgICB2b2lkIHRleFN0b3JhZ2UyRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWxzLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVs
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHRleFN0
b3JhZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWxzLCB1aW50MzJfdCBpbnRlcm5h
bGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICB9CisgICAgdm9pZCB0ZXhJ
bWFnZTNEMCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgaW50ZXJuYWxm
b3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGRlcHRoLCBpbnQz
Ml90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhJ
bWFnZTNEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRhdGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9Cisg
ICAgdm9pZCB0ZXhJbWFnZTNEMSh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMy
X3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQzMl90
IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCB1
aW50NjRfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CisgICAgfQor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCBp
bnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJfdCB6b2Zmc2V0LCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+JiYgcGl4ZWxzKQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUs
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4ocGl4ZWxzLmRh
dGEoKSksIHBpeGVscy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEMSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGludDMyX3QgeG9mZnNldCwgaW50MzJfdCB5
b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBp
bnQzMl90IGRlcHRoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9CisgICAg
dm9pZCBjb3B5VGV4U3ViSW1hZ2UzRCh1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIGlu
dDMyX3QgeG9mZnNldCwgaW50MzJfdCB5b2Zmc2V0LCBpbnQzMl90IHpvZmZzZXQsIGludDMyX3Qg
eCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyAgICB7CisgICAg
ICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlM0QwKHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWlu
dDMyX3QgaW50ZXJuYWxmb3JtYXQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBpbnQz
Ml90IGRlcHRoLCBpbnQzMl90IGJvcmRlciwgaW50MzJfdCBpbWFnZVNpemUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21w
cmVzc2VkVGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMdm9pZCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9
CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRDEodWludDMyX3QgdGFyZ2V0LCBpbnQzMl90
IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQsIGludDMyX3QgZGVwdGgsIGludDMyX3QgYm9yZGVyLCBpbnQzMl90IGltYWdlU2l6ZSwg
dWludDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jb21wcmVzc2VkVGV4
SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsK
KyAgICB9CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCBpbnQzMl90IHhvZmZzZXQsIGludDMyX3QgeW9mZnNldCwgaW50MzJf
dCB6b2Zmc2V0LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgaW50MzJfdCBkZXB0aCwg
dWludDMyX3QgZm9ybWF0LCBpbnQzMl90IGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0NHTHZvaWQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7Cisg
ICAgfQorICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgaW50MzJfdCB4b2Zmc2V0LCBpbnQzMl90IHlvZmZzZXQsIGludDMyX3Qg
em9mZnNldCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIGludDMyX3QgZGVwdGgsIHVp
bnQzMl90IGZvcm1hdCwgaW50MzJfdCBpbWFnZVNpemUsIHVpbnQ2NF90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpKTsKKyAgICB9Cisg
ICAgdm9pZCBnZXRGcmFnRGF0YUxvY2F0aW9uKHVpbnQzMl90IHByb2dyYW0sIFN0cmluZyYmIG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IHVuaWZvcm0xdWkoaW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjApCisgICAgeworICAgICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xdWkobG9jYXRpb24sIHYwKTsKKyAgICB9CisgICAgdm9pZCB1
bmlmb3JtMnVpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1aW50MzJfdCB2MSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKKyAg
ICB9CisgICAgdm9pZCB1bmlmb3JtM3VpKGludDMyX3QgbG9jYXRpb24sIHVpbnQzMl90IHYwLCB1
aW50MzJfdCB2MSwgdWludDMyX3QgdjIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZv
cm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm00dWko
aW50MzJfdCBsb2NhdGlvbiwgdWludDMyX3QgdjAsIHVpbnQzMl90IHYxLCB1aW50MzJfdCB2Miwg
dWludDMyX3QgdjMpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00dWkobG9jYXRp
b24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMXVpdihpbnQzMl90
IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtMnVpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PnVuaWZvcm0ydWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9p
ZCB1bmlmb3JtM3VpdihpbnQzMl90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0
aW9uLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEu
ZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtNHVpdihpbnQz
Ml90IGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGRhdGEpCisgICAg
eworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZnYoaW50MzJfdCBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3NlKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAg
IH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJmdihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KGludDMyX3QgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRhdGEpCisgICAgeworICAgICAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9h
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4NHgyZnYoaW50MzJfdCBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4odHJhbnNwb3Nl
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGZsb2F0Kj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSkpOworICAgIH0KKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRm
dihpbnQzMl90IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPih0cmFuc3Bvc2UpLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZmxvYXQqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KGludDMyX3Qg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIGRh
dGEpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHRyYW5zcG9zZSksIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNGkodWludDMyX3QgaW5kZXgsIGludDMy
X3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHosIGludDMyX3QgdykKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+dmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJJNGl2KHVpbnQzMl90IGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3QsIDQ+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWJJNGl2KGluZGV4LCBtYWtlR0NHTFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMaW50Kj4odmFsdWVzLmRhdGEoKSkpKTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJ
NHVpKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6LCB1
aW50MzJfdCB3KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVpKGlu
ZGV4LCB4LCB5LCB6LCB3KTsKKyAgICB9CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdih1aW50
MzJfdCBpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4mJiB2YWx1ZXMpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBtYWtlR0NH
TFNwYW48ND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMdWludCo+KHZhbHVlcy5kYXRhKCkp
KSk7CisgICAgfQorICAgIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIodWludDMyX3QgaW5kZXgs
IGludDMyX3Qgc2l6ZSwgdWludDMyX3QgdHlwZSwgaW50MzJfdCBzdHJpZGUsIHVpbnQ2NF90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSVBvaW50ZXIoaW5k
ZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7
CisgICAgfQorICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHModWludDMyX3QgbW9kZSwgdWludDMy
X3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWlu
dDY0X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50
cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4o
b2Zmc2V0KSk7CisgICAgfQorICAgIHZvaWQgZHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4mJiBidWZzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVy
cyhtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0
YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcml2KHVpbnQz
Ml90IGJ1ZmZlciwgaW50MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckJ1ZmZlcml2KGJ1
ZmZlciwgZHJhd2J1ZmZlciwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
TGludCo+KHZhbHVlcy5kYXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQg
Y2xlYXJCdWZmZXJ1aXYodWludDMyX3QgYnVmZmVyLCBpbnQzMl90IGRyYXdidWZmZXIsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgbV9jb250
ZXh0LT5jbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIG1ha2VHQ0dMU3BhbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdDR0x1aW50Kj4odmFsdWVzLmRhdGEoKSksIHZhbHVlcy5zaXpl
KCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KHVpbnQzMl90IGJ1ZmZlciwgaW50
MzJfdCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiYmIHZhbHVlcykKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIs
IG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xmbG9hdCo+KHZhbHVlcy5k
YXRhKCkpLCB2YWx1ZXMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgY2xlYXJCdWZmZXJmaSh1
aW50MzJfdCBidWZmZXIsIGludDMyX3QgZHJhd2J1ZmZlciwgZmxvYXQgZGVwdGgsIGludDMyX3Qg
c3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJCdWZmZXJmaShidWZmZXIs
IGRyYXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVRdWVy
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVRdWVyeSgpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlUXVlcnko
dWludDMyX3QgcXVlcnkpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVF1ZXJ5KHF1
ZXJ5KTsKKyAgICB9CisgICAgdm9pZCBpc1F1ZXJ5KHVpbnQzMl90IHF1ZXJ5LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
R0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5pc1F1ZXJ5KHF1ZXJ5KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiZWdpblF1ZXJ5KHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgcXVlcnkpCisgICAgeworICAgICAgICBtX2NvbnRleHQt
PmJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSk7CisgICAgfQorICAgIHZvaWQgZW5kUXVlcnkodWlu
dDMyX3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5lbmRRdWVyeSh0YXJnZXQp
OworICAgIH0KKyAgICB2b2lkIGdldFF1ZXJ5KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgcG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIHZvaWQg
Z2V0UXVlcnlPYmplY3R1aSh1aW50MzJfdCBxdWVyeSwgdWludDMyX3QgcG5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgR0NHTHVpbnQgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjcmVhdGVTYW1wbGVy
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgUGxhdGZvcm1HTE9iamVjdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmNyZWF0ZVNhbXBsZXIoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGRlbGV0ZVNhbXBs
ZXIodWludDMyX3Qgc2FtcGxlcikKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2Ft
cGxlcihzYW1wbGVyKTsKKyAgICB9CisgICAgdm9pZCBpc1NhbXBsZXIodWludDMyX3Qgc2FtcGxl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICB7CisgICAgICAgIEdDR0xib29sZWFuIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+aXNTYW1wbGVyKHNhbXBsZXIpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxib29sPihyZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICB2
b2lkIGJpbmRTYW1wbGVyKHVpbnQzMl90IHVuaXQsIHVpbnQzMl90IHNhbXBsZXIpCisgICAgewor
ICAgICAgICBtX2NvbnRleHQtPmJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpOworICAgIH0KKyAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1l
LCBpbnQzMl90IHBhcmFtKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5zYW1wbGVyUGFyYW1l
dGVyaShzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOworICAgIH0KKyAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJmKHVpbnQzMl90IHNhbXBsZXIsIHVpbnQzMl90IHBuYW1lLCBmbG9hdCBwYXJhbSkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUs
IHBhcmFtKTsKKyAgICB9CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZih1aW50MzJfdCBz
YW1wbGVyLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChmbG9hdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMZmxvYXQgcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVyZihzYW1wbGVyLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZh
bHVlKTsKKyAgICB9CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaSh1aW50MzJfdCBzYW1w
bGVyLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVy
aShzYW1wbGVyLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBmZW5jZVN5bmModWludDMyX3QgY29uZGl0aW9uLCB1aW50MzJf
dCBmbGFncywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBHQ0dMc3luYyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSkpOworICAgIH0KKyAgICB2b2lkIGlzU3lu
Yyh1aW50NjRfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5pc1N5bmMocmVpbnRlcnByZXRfY2Fz
dDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PGJvb2w+KHJldHVyblZhbHVlKSk7CisgICAgfQorICAg
IHZvaWQgZGVsZXRlU3luYyh1aW50NjRfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0
cl90PihhcmcwKSkpOworICAgIH0KKyAgICB2b2lkIGNsaWVudFdhaXRTeW5jKHVpbnQ2NF90IGFy
ZzAsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCB0aW1lb3V0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xl
bnVtIHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+
Y2xpZW50V2FpdFN5bmMocmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PEdDR0x1aW50NjQ+KHRpbWVvdXQpKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lk
IHdhaXRTeW5jKHVpbnQ2NF90IGFyZzAsIHVpbnQzMl90IGZsYWdzLCBpbnQ2NF90IHRpbWVvdXQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPndhaXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0NH
THN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxH
Q0dMaW50NjQ+KHRpbWVvdXQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRTeW5jaSh1aW50NjRfdCBh
cmcwLCB1aW50MzJfdCBwbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQzMl90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRTeW5jaShyZWludGVycHJl
dF9jYXN0PEdDR0xzeW5jPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBwbmFtZSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBj
cmVhdGVUcmFuc2Zvcm1GZWVkYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFBsYXRmb3JtR0xPYmplY3QgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5jcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgaWQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKTsK
KyAgICB9CisgICAgdm9pZCBpc1RyYW5zZm9ybUZlZWRiYWNrKHVpbnQzMl90IGlkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0g
bV9jb250ZXh0LT5pc1RyYW5zZm9ybUZlZWRiYWNrKGlkKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RhdGljX2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBi
aW5kVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+YmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpOwor
ICAgIH0KKyAgICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2sodWludDMyX3QgcHJpbWl0aXZl
TW9kZSkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhw
cmltaXRpdmVNb2RlKTsKKyAgICB9CisgICAgdm9pZCBlbmRUcmFuc2Zvcm1GZWVkYmFjaygpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQor
ICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0
b3I8U3RyaW5nPiYmIHZhcnlpbmdzLCB1aW50MzJfdCBidWZmZXJNb2RlKQorICAgIHsKKyAgICAg
ICAgbV9jb250ZXh0LT50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdz
LCBidWZmZXJNb2RlKTsKKyAgICB9CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmcodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlSW5mbyBhcmcyIHsgfTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgsIGFyZzIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGFyZzIpKTsKKyAgICB9CisgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOwor
ICAgIH0KKyAgICB2b2lkIHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICB9CisgICAgdm9pZCBi
aW5kQnVmZmVyQmFzZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBi
dWZmZXIpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXJCYXNlKHRhcmdldCwg
aW5kZXgsIGJ1ZmZlcik7CisgICAgfQorICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0
LCB1aW50NjRfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyUmFu
Z2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQp
LCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGFyZzQpKTsKKyAgICB9CisgICAgdm9pZCBnZXRV
bmlmb3JtSW5kaWNlcyh1aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8U3RyaW5nPiYmIHVuaWZvcm1O
YW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDMyX3Q+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEdDR0x1aW50PiByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1JbmRp
Y2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jtcyh1
aW50MzJfdCBwcm9ncmFtLCBWZWN0b3I8dWludDMyX3Q+JiYgdW5pZm9ybUluZGljZXMsIHVpbnQz
Ml90IHBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxpbnQzMl90PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxHQ0dMaW50PiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBnZXRVbmlm
b3JtQmxvY2tJbmRleCh1aW50MzJfdCBwcm9ncmFtLCBTdHJpbmcmJiB1bmlmb3JtQmxvY2tOYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIEdDR0x1aW50IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9y
bUJsb2NrTmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKKyAg
ICB9CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAgIHZvaWQgdW5p
Zm9ybUJsb2NrQmluZGluZyh1aW50MzJfdCBwcm9ncmFtLCB1aW50MzJfdCB1bmlmb3JtQmxvY2tJ
bmRleCwgdWludDMyX3QgdW5pZm9ybUJsb2NrQmluZGluZykKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5p
Zm9ybUJsb2NrQmluZGluZyk7CisgICAgfQorICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYodWludDMyX3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90
IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAg
ICAgICAgVmVjdG9yPEdDR0xpbnQsIDQ+IHBhcmFtcyhzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFt
c1NpemUpLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihw
cm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxpbnQzMl90Kj4ocGFyYW1zLmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKKyAgICB9CisgICAg
dm9pZCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50
MzJfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBHQ0dMaW50IHJldHVy
blZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xF
KGludDMyX3Qgc3JjWDAsIGludDMyX3Qgc3JjWTAsIGludDMyX3Qgc3JjWDEsIGludDMyX3Qgc3Jj
WTEsIGludDMyX3QgZHN0WDAsIGludDMyX3QgZHN0WTAsIGludDMyX3QgZHN0WDEsIGludDMyX3Qg
ZHN0WTEsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IGZpbHRlcikKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZ
MCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVy
KTsKKyAgICB9CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh1
aW50MzJfdCB0YXJnZXQsIGludDMyX3Qgc2FtcGxlcywgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQs
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFy
Z2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAg
IHZvaWQgY3JlYXRlVmVydGV4QXJyYXlPRVMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0
IHJldHVyblZhbHVlID0geyB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9F
Uyh1aW50MzJfdCBhcmcwKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCk7CisgICAgfQorICAgIHZvaWQgaXNWZXJ0ZXhB
cnJheU9FUyh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgR0NHTGJvb2xlYW4gcmV0dXJuVmFsdWUg
PSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
aXNWZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Ym9vbD4ocmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgdm9pZCBiaW5kVmVydGV4QXJy
YXlPRVModWludDMyX3QgYXJnMCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKTsKKyAgICB9CisgICAgdm9pZCBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBTdHJp
bmcgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7CisgICAgfQorICAg
IHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoU3RyaW5nJiYgYXJnMCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApOwor
ICAgIH0KKyAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChTdHJpbmcmJiBhcmcwKQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucHVzaEdyb3VwTWFya2VyRVhUKGFy
ZzApOworICAgIH0KKyAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBvcEdyb3VwTWFya2VyRVhUKCk7CisgICAgfQor
ICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4mJiBi
dWZzKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZl
cnNFWFQobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZz
LmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CisgICAgfQorICAgIHZvaWQgZHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgZmlyc3QsIGludDMyX3QgY291bnQsIGlu
dDMyX3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50
KTsKKyAgICB9CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBt
b2RlLCBpbnQzMl90IGNvdW50LCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBvZmZzZXQsIGludDMy
X3QgcHJpbWNvdW50KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0
PEdDR0x2b2lkcHRyPihvZmZzZXQpLCBwcmltY291bnQpOworICAgIH0KKyAgICB2b2lkIHZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRSh1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGl2aXNvcikKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShpbmRleCwgZGl2aXNvcik7CisgICAgfQorICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3Jt
YXRpdih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCB1aW50MzJfdCBw
bmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIFZlY3RvcjxHQ0dMaW50LCA0PiBwYXJhbXMoc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbXNT
aXplKSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQs
IGludGVybmFsZm9ybWF0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3Qq
PihwYXJhbXMuZGF0YSgpKSwgcGFyYW1zLnNpemUoKSkpOworICAgIH0KKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAK
aW5kZXggNDAxN2EyYThmMjJjZWNlY2MyMTUxYTMwYTMyNzhmZjkwNmVhZjMyYS4uNjc0OGQxZjVk
ODAwZDk1NzRmMjM4MDc1YjE4OTBiNGU0YWNlZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGQ2
ZWUyYmNiY2FiNmE3MGU0MmQwZTk4ODQ5YWE4MTMwMDk2NGNhMjguLjg5ZmI4YWJhZjlhZWNlMDdj
NjM0NzBkYTNkYjgzYzg4MzI2ZGQzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMjE2LDYgKzIxNiw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9m
b3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcycsCiAgICAgICAgICdXZWJDb3JlOjpMaWJXZWJSVENTb2NrZXRJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKQEAg
LTI0NCw2ICsyNDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgICAgICAnV2ViS2l0OjpEaXNwbGF5TGlua09ic2VydmVySUQnLAogICAgICAgICAn
V2ViS2l0OjpEb3dubG9hZElEJywKICAgICAgICAgJ1dlYktpdDo6R2VvbG9jYXRpb25JZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktp
dDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9t
UHJvdG9jb2xJRCcsCkBAIC01MzEsNiArNTMzLDcgQEAgZGVmIGNsYXNzX3RlbXBsYXRlX2hlYWRl
cnModGVtcGxhdGVfc3RyaW5nKToKICAgICAgICAgJ09wdGlvblNldCc6IHsnaGVhZGVycyc6IFsn
PHd0Zi9PcHRpb25TZXQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVu
dENvZGVycy5oIiddfSwKICAgICAgICAgJ1ZlY3Rvcic6IHsnaGVhZGVycyc6IFsnPHd0Zi9WZWN0
b3IuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIidd
fSwKICAgICAgICAgJ3N0ZDo6cGFpcic6IHsnaGVhZGVycyc6IFsnPHV0aWxpdHk+J10sICdhcmd1
bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdJ
UEM6OkFycmF5UmVmZXJlbmNlJzogeydoZWFkZXJzJzogWyciQXJyYXlSZWZlcmVuY2UuaCInXSwg
J2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICB9
CiAKICAgICBtYXRjaCA9IHJlLm1hdGNoKCcoP1A8dGVtcGxhdGVfbmFtZT4uKz8pPCg/UDxwYXJh
bWV0ZXJfc3RyaW5nPi4rKT4nLCB0ZW1wbGF0ZV9zdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlNzk4ZTkxMmU0N2IwZDhkMGYw
MzhlN2Y3NmQ3MGZjMDZhZjZlY2FlLi4wMzI1MjExYTlhZDAxN2JkZDJhZGM1ZTYxN2I4M2Q3Zjk3
Zjk1ZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTMxNjcsNCArMzE2Nyw4MiBAQCBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VEYXRhPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OgogICAg
IHJldHVybiB7IFdURk1vdmUoKnJlc3VsdCkgfTsKIH0KIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLmFscGhhOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5kZXB0
aDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc3RlbmNpbDsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMuYW50aWFsaWFzOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5wcmVtdWx0aXBs
aWVkQWxwaGE7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
cjsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVh
dDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlOworICAgIGVuY29k
ZXIgPDwgYXR0cmlidXRlcy5zaGFyZVJlc291cmNlczsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0
ZXMuaXNXZWJHTDI7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9uczsKKyAg
ICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBlbmNvZGVyIDw8
IGF0dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5jZTsKKyNpZiBFTkFCTEUoV0VCWFIpCisg
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZTsKKyNlbmRpZgorfQorCitPcHRp
b25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFscGhhKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGVwdGgp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YXR0cmlidXRlcy5zdGVuY2lsKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJlbXVs
dGlwbGllZEFscGhhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMu
ZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShh
dHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaXNXZWJHTDIpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5u
b0V4dGVuc2lvbnMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaW5pdGlh
bFBvd2VyUHJlZmVyZW5jZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYgRU5B
QkxFKFdFQlhSKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy54ckNvbXBhdGli
bGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgcmV0dXJuIGF0
dHJpYnV0ZXM7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYgYWN0aXZlSW5mbykKK3sKKyAgICBlbmNv
ZGVyIDw8IGFjdGl2ZUluZm8ubmFtZTsKKyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8udHlwZTsK
KyAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8uc2l6ZTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBhY3RpdmVJbmZvOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5uYW1lKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8udHlwZSkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShh
Y3RpdmVJbmZvLnNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBhY3RpdmVJbmZvOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDkyYWY2MTNiZGZj
ZTcyZjQzNWM0MGI0MzhmMmIyOGNkNDQ4ZjZhOTUuLmZlNzg1OGZmOWNhNmE0ZmNjNTlmMTI0M2Iz
ODEzNDRlYzVkZmZjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCkBAIC03MSw2ICs3MSwxMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR3Rr
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQor
I2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHRHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1R5cGVzR0wuaD4KKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBA
IC0yMDMsNiArMjEwLDEwIEBAIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CiB1c2lu
ZyBJREJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsKICNlbmRpZgog
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCitzdHJ1Y3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzOworI2VuZGlmCisKIG5hbWVzcGFjZSBET01DYWNoZUVuZ2lu
ZSB7CiBzdHJ1Y3QgQ2FjaGVJbmZvOwogc3RydWN0IFJlY29yZDsKQEAgLTg2OCw2ICs4NzksMTkg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uPiB7CiB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXM+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6QWN0aXZlSW5mbyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTAzNiw0ICsxMDYwLDE2IEBA
IHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQ
U3RhdHVzPiB7CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCR0wpCisKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMUG93ZXJQcmVmZXJlbmNlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
cyA8CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2UsCisgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQsCisgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyLAorICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFu
Y2UKKyAgICA+OworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMjFj
ZDY1YjI4ZDQ2ZmRlZGI2NjJjNGNiZmY3OTllZGVhYjVlNzU4My4uMzhjYTY4OTIyZWFhY2FjYzZm
MGExNTU0M2JkYTZjOTAwMTQ4ZGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE1OCw2ICsxNTgsOSBAQCB2b2lkIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3M7CiAgICAg
ZW5jb2RlciA8PCBzaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBz
aG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3M7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGVuY29k
ZXIgPDwgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7CisjZW5kaWYKICAgICBlbmNvZGVy
IDw8IHNob3VsZEVuYWJsZVZQOURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVW
UDlTV0RlY29kZXI7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTEyLDYgKzUx
NSwxMCBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcykpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaAppbmRleCBmZTI5YWYyMGE4OGE1OWUxZWJhNmNlOGZiY2I1ZDVhNmMzYTM1NDI0Li5jODc4
ZTZkOTgxZmE5NDQ0OTdmMDI3ZmFhMzIxMDk3ZjJkNjliYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMjksNiArMjI5LDkg
QEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkUmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFJlbmRlckRP
TUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRQbGF5TWVkaWFJbkdQVVBy
b2Nlc3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBib29sIHNob3VsZFJlbmRl
cldlYkdMSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgc2hvdWxkRW5h
YmxlVlA5RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29k
ZXIgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDg5ZDdiNjVjNjc1MTRlOTBjM2ZkZTI0OTIwODc1N2Y0YTY2ZTg1YTIuLmM3M2U2MzEzMjMx
YzU0ZDM3MzdlOGNhNWFiMTRjNzNjOTFiMmNiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjYsNiArMjYs
NyBAQCBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNz
L0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL0Rp
c3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKQEAgLTU2OCw2ICs1NjksOCBA
QCBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcHAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCitXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2Vu
ZXJhdGVkLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNw
cApAQCAtNTkwLDEwICs1OTMsMTAgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCitXZWJQcm9jZXNz
L0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcm92aWRlci5jcHAKLVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5jcHAKIApAQCAtNjk0LDMgKzY5Nyw2IEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAu
Y3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCiBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorCitSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
NGVhOGI3ODFkMjBhODFhMDhlNDRiNDRkYmEwYjU4ZjIxYmQ2Zjk3My4uNTY2OGU0NGY1ZjVmMGFj
NGUwZDEzNTEzNTBhMTc5ODYzYTZlMDNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTYs
NiArNTYsNyBAQCBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcAogCiBHUFVQ
cm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9HUFVTZXJ2aWNlRW50cnlQb2ludC5t
bQorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAog
R1BVUHJvY2Vzcy9pb3MvR1BVUHJvY2Vzc0lPUy5tbQogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vz
c01hYy5tbQogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHku
Y3BwCkBAIC02Myw2ICs2NCw4IEBAIEdQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eUNvY29hLm1tCiBHUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tCiAKKworCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKIAogUGxhdGZvcm0vY2xhc3NpZmll
ci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTAxMWE1YjFkOWM5MmU5Zjcz
MDI5NDE0ZjEzM2IyZjA5MTFhMWQ0My4uNWViMzcxZjIyMDU4ZjZmMGI2NWYzZWZhMDUzMzdmM2U3
N2QwNTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03
OTQ1LDYgKzc5NDUsOSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMu
c2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9j
ZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVu
ZGVyRE9NSW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yRE9NUmVu
ZGVyaW5nRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9j
ZXNzID0gcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCk7CisjaWYg
RU5BQkxFKFdFQkdMKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nl
c3MgPSBwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JXZWJHTEVuYWJsZWQoKTsKKyNlbmRp
ZgogCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyID0gcHJlZmVyZW5jZXMo
KS52cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMmQyODJlNDY2ZWE0NzQ0ZjBmNTJiMzNlY2M2YTliMDM4ODYzOWQ1Zi4uZTk0MmFkNjdjOTI1
YTM3NjRkYzgyOGE0OWVjZmI0YTBmMjljNTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MTIsNyArNzEyLDYgQEAKIAkJMkQ5MkE3
N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAv
KiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAv
KiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAqLzsgfTsK
IAkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJEQTIxMEY0MzdEMTAwNThD
MTVBIC8qIENvbm5lY3Rpb24uY3BwICovOyB9OwotCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQg
LyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAg
Ki87IH07CiAJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDMyRDlEMTBGNDM3RDEw
MDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLzsgfTsKIAkJMkQ5MkE3ODAyMTJCNkE3MTAwRjQ5M0ZE
IC8qIEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovOyB9OwogCQky
RDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMw
MEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwpAQCAtNDQwNSw2ICs0NDA0
LDE2IEBACiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5j
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyog
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2
NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2NzI1
NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOTA0MTY5MjU0
QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1
QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjcxMiwxMSArNjcyMSwxMSBAQAogCQkJCTFBRUZE
Mjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi8sCiAJCQkJMUEzRDYxMDQx
M0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLywKIAkJCQkxQUVGRDJGNjEx
RDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCAqLywKKwkJCQk3QjFEQjI2NTI1NjY4
Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0VFOTY2QTExMkZBRjU3
MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJQkNFRTk2NkIxMTJGQUY1NzAwNkJD
QzI0IC8qIEF0dGFjaG1lbnQuaCAqLywKIAkJCQlCQzAzMkRBMjEwRjQzN0QxMDA1OEMxNUEgLyog
Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5l
Y3Rpb24uaCAqLywKLQkJCQkxQUM3NTM3RDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5j
ZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2Uu
aCAqLywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJ
CQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKQEAgLTgzODgsMTEg
KzgzOTcsMTYgQEAKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJ
CQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNw
cCAqLywKIAkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJI
YW5kbGUuaCAqLywKKwkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkz
MSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAogCQkJCTcyN0E3
RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyog
UGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCisJCQkJN0I5MDQxNjUyNTRBRkRF
QTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovLAorCQkJCTdC
OTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmgg
Ki8sCisJCQkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovLAog
CQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmgg
Ki8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oICovLApAQCAtODQxMCw2ICs4NDI0LDExIEBACiAJCQkJRjQw
OTRDQkMyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAqLywK
IAkJCQlGNDA5NENCQjI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUu
aCAqLywKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFn
ZUJ1ZmZlci5oICovLAorCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5jcHAgKi8sCisJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8sCisJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAorCQkJCTdCRTcyNjY4
MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLywK
KwkJCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xG
dW5jdGlvbnNHZW5lcmF0ZWQuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyog
UmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFF
MDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzkxOGU0YjUwYzliN2NmNWIyZTc5YjA3N2Qw
MzUyMTJjNjEyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlm
aWVyPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
KworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmUHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMp
KTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorICAg
IDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCit7CisgICAgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7
CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNz
YWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0wo
YXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cit9CisKK1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKK3sK
KyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KCp0aGlzKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAw
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVC
dWZmZXIoKTsKKyNlbmRpZgorfQorCitJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7Cisg
ICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lk
dGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFy
ZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJl
Rm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAg
YXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOworICAgICAgICBzYy5yZWN5Y2xlQnVmZmVy
KCk7CisgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRy
IH0pOworICAgIH0KKyNlbHNlCisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisjZW5kaWYKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBG
SVhNRTogQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgbm90IGNsZWFyIHRo
aXMgaXMgdGhlIHJpZ2h0IHdheS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTM0OQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoU3RyaW5nJiYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3sKKyAg
ICBpZiAobV9kaWRJbml0aWFsaXplKSB7CisgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIHRpbWVk
IG91dCBiZWZvcmUsIHNvIGxvc2UgdGhlIGNvbnRleHQgbm93LgorICAgICAgICB3YXNMb3N0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNp
b25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0xvc3QoKQoreworICAg
IGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNs
aWVudC0+Zm9yY2VDb250ZXh0TG9zdCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Ondhc0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRv
VmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hDb250ZXh0Q2hhbmdl
ZE5vdGlmaWNhdGlvbigpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAg
ICAgICByZXR1cm47CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworICAgIGlmIChjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZD4obV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJy
dXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8v
IFRpbWVkIG91dCwgc28gcmVwb3J0IGluaXRpYWxpemVkIHdpdGggZHVtbXkgZGF0YS4gV2Ugc2hv
dWxkIGxvc2UgdGhlIGNvbnRleHQuCisgICAgd2FzQ3JlYXRlZCgiIiwgIiIpOworICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIG1hcmsgdGhlIGNvbnRleHQgYXMgbG9zdCwgYnV0IGl0J3Mgbm90IHNhZmUg
dG8gZm9yY2UgbG9zdCBpbiB0aGlzIGNhbGwgc3RhY2suCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDk5ZWRhMjlmNmRiNWUxODE5NzEzMTc4ZjJhYTUzMWI0ZjVkZDZlMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0wLDAgKzEsNDExIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViIHByb2Nlc3Mgc2lkZSBpbXBsZW1l
bnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHRHTCBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlv
bgorLy8gY29udmVydHMgdGhlIGludGVyZmFjZSB0byBhIHNlcXVlbmNlIG9mIElQQyBtZXNzYWdl
cyBhbmQgc2VuZHMgdGhlIG1lc3NhZ2VzIHRvCisvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBp
biBHUFUgcHJvY2Vzcy4KKy8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRl
ZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KK2NsYXNzIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgorICAgICwgcHVi
bGljIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICB+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSgpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyIG92ZXJyaWRlcy4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRl
cy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ug
b3ZlcnJpZGVzLgorICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFs
OworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICB1c2luZyBXZWJDb3Jl
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOworICAgIHZvaWQg
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7Cisg
ICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVs
YXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsK
KworICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlz
IGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KKyAgICB2b2lkIHNl
dEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVy
cm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKKyAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRp
Y0Vycm9yTGlzdCgpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0
dXJlKSBmaW5hbDsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRBdHRyaWJM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIG5hbWUpIGZpbmFsOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpIGZpbmFsOworICAgIHZvaWQgYmlu
ZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkgZmlu
YWw7CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMSkgZmluYWw7CisgICAgdm9pZCBibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dM
Y2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpIGZpbmFsOwor
ICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKSBmaW5hbDsKKyAgICB2b2lkIGJs
ZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEp
IGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRm
YWN0b3IpIGZpbmFsOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdC
LCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkg
ZmluYWw7CisgICAgR0NHTGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJn
ZXQpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spIGZpbmFsOworICAg
IHZvaWQgY2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNs
YW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRGVwdGgo
R0NHTGNsYW1wZiBkZXB0aCkgZmluYWw7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0NHTGludCBz
KSBmaW5hbDsKKyAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFu
IGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CisgICAg
dm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9p
ZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CisgICAgdm9pZCBjb3B5VGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1
ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBm
aW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGZpbmFsOworICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApIGZpbmFsOworICAgIFBsYXRmb3Jt
R0xPYmplY3QgY3JlYXRlVGV4dHVyZSgpIGZpbmFsOworICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVu
dW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZp
bmFsOworICAgIHZvaWQgZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpIGZpbmFsOworICAgIHZvaWQg
ZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpIGZpbmFsOworICAgIHZvaWQgZGVwdGhSYW5nZShH
Q0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpIGZpbmFsOworICAgIHZvaWQgZGV0YWNo
U2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKSBmaW5h
bDsKKyAgICB2b2lkIGRpc2FibGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgdm9pZCBkcmF3
QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkgZmlu
YWw7CisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCBlbmFi
bGUoR0NHTGVudW0gY2FwKSBmaW5hbDsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KEdDR0x1aW50IGluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOworICAgIHZv
aWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpIGZpbmFsOworICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0
ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkgZmluYWw7Cisg
ICAgdm9pZCBmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0
ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmli
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFy
ZzIpIGZpbmFsOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBmaW5hbDsKKyAgICBHQ0dM
aW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5n
JiBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQ0dM
ZW51bSBuYW1lKSBmaW5hbDsKKyAgICB2b2lkIGdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NH
TFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQ2
NCBnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQ2NCBnZXRJ
bnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkgZmluYWw7CisgICAgR0NH
TGludCBnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1l
KSBmaW5hbDsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMYm9vbGVhbj4gdmFsdWUpIGZpbmFsOworICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7
CisgICAgR0NHTGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAg
IFN0cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwor
ICAgIEdDR0xpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFNoYWRlcmkoUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgU3RyaW5nIGdldFNoYWRlcklu
Zm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBl
LCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwgR0NHTGludCogcHJlY2lzaW9uKSBmaW5hbDsK
KyAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7
CisgICAgR0NHTGZsb2F0IGdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0
PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7
CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50
IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYg
bmFtZSkgZmluYWw7CisgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIHZvaWQgaGludChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzQnVmZmVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNFbmFibGVk
KEdDR0xlbnVtIGNhcCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUHJvZ3JhbShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzUmVuZGVyYnVmZmVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICBHQ0dMYm9vbGVhbiBpc1RleHR1cmUo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGxpbmVXaWR0aChHQ0dMZmxv
YXQgYXJnMCkgZmluYWw7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApIGZpbmFsOworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQg
cGFyYW0pIGZpbmFsOworICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBH
Q0dMZmxvYXQgdW5pdHMpIGZpbmFsOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1w
ZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKKyAgICB2b2lkIHNjaXNzb3IoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xp
bnQgcmVmLCBHQ0dMdWludCBtYXNrKSBmaW5hbDsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJh
dGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1h
c2spIGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykgZmluYWw7Cisg
ICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2sp
IGZpbmFsOworICAgIHZvaWQgc3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWls
LCBHQ0dMZW51bSB6cGFzcykgZmluYWw7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQ0dM
ZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3Mp
IGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGludCB4KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMmYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHVu
aWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KSBm
aW5hbDsKKyAgICB2b2lkIHVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopIGZpbmFs
OworICAgIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHYpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopIGZpbmFsOworICAgIHZvaWQgdW5pZm9y
bTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZs
b2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB1bmlmb3Jt
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikgZmluYWw7
CisgICAgdm9pZCB1bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZv
cm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NH
TGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeikgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHks
IEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKSBm
aW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVp
IHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdmlld3BvcnQoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmlu
YWw7CisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFy
ZzEsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpIGZp
bmFsOworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCBy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2
b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgdGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpIGZpbmFsOwor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkg
ZmluYWw7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7Cisg
ICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRl
eEFycmF5KCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXkoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
cmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwg
R0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyKSBmaW5hbDsKKyAgICB2b2lkIGdl
dEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIGZpbmFsOworICAgIHZvaWQgZnJh
bWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIp
IGZpbmFsOworICAgIHZvaWQgaW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKSBmaW5hbDsKKyAgICB2b2lkIGlu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVt
IHNyYykgZmluYWw7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CisgICAgdm9pZCB0ZXhT
dG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAg
ICB2b2lkIHRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCkgZmluYWw7CisgICAgdm9pZCB0ZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpIGZpbmFsOworICAgIHZvaWQgdGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykgZmluYWw7CisgICAgdm9p
ZCB0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIHZvaWQgY29weVRleFN1
YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdD
R0x2b2lkPiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7Cisg
ICAgdm9pZCB1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1
aW50IHYxKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
THVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikgZmluYWw7CisgICAgdm9pZCB1bmlm
b3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVp
bnQgdjIsIEdDR0x1aW50IHYzKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0xdWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IHVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm00dWl2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkgZmluYWw7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4
M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpIGZpbmFsOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHQ0dMdWlu
dCBpbmRleCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KSBmaW5h
bDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykgZmluYWw7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVp
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dM
dWludCB3KSBmaW5hbDsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKKyAgICB2
b2lkIGRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dM
dWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpIGZpbmFsOworICAgIHZvaWQgY2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKSBmaW5hbDsK
KyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNs
ZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVzKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZmko
R0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NH
TGludCBzdGVuY2lsKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVF1ZXJ5KCkg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KSBmaW5h
bDsKKyAgICBHQ0dMYm9vbGVhbiBpc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpIGZpbmFs
OworICAgIHZvaWQgYmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
cXVlcnkpIGZpbmFsOworICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9i
amVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlU2FtcGxlcigpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlU2FtcGxlcihQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU2FtcGxlcihQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOworICAgIHZvaWQgYmluZFNhbXBsZXIoR0NHTHVpbnQg
dW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQgcGFyYW0pIGZpbmFsOworICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSBmaW5hbDsKKyAg
ICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVy
aShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBH
Q0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3Mp
IGZpbmFsOworICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYyBhcmcwKSBmaW5hbDsKKyAg
ICB2b2lkIGRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkgZmluYWw7CisgICAgR0NHTGVudW0gY2xp
ZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0
IHRpbWVvdXQpIGZpbmFsOworICAgIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJp
dGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgZmluYWw7CisgICAgR0NHTGludCBnZXRT
eW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CisgICAgUGxhdGZvcm1H
TE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOworICAgIHZvaWQgZGVsZXRl
VHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CisgICAgR0NHTGJv
b2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QgaWQpIGZpbmFsOworICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51
bSBwcmltaXRpdmVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGVuZFRyYW5zZm9ybUZlZWRiYWNrKCkg
ZmluYWw7CisgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZm
ZXJNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKSBm
aW5hbDsKKyAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKKyAgICB2b2lk
IHJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyQmFz
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZl
cikgZmluYWw7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBH
Q0dMc2l6ZWlwdHIpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGlj
ZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9y
bU5hbWVzKSBmaW5hbDsKKyAgICBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5k
aWNlcywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9j
a0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxv
Y2tOYW1lKSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsK
KyAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykg
ZmluYWw7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xpbnQ+IHBhcmFtcykgZmluYWw7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgZmluYWw7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBs
ZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpIGZpbmFsOworICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMo
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkgZmluYWw7CisgICAgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkgZmluYWw7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOworICAgIHZvaWQgaW5zZXJ0RXZl
bnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKSBmaW5hbDsKKyAgICB2b2lkIHB1c2hHcm91
cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApIGZpbmFsOworICAgIHZvaWQgcG9wR3JvdXBN
YXJrZXJFWFQoKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXpl
aSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOworICAgIHZvaWQgdmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBmaW5hbDsK
KyAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykg
ZmluYWw7CisgICAgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xz
aXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSBmaW5hbDsK
KyAgICB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCogcGFyYW1zKSBm
aW5hbDsKKyAgICB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZm
ZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpIGZp
bmFsOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQg
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2b2lkIHNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgZmluYWw7IC8vIE5PTElOVAorICAgIHZvaWQgZ2V0
TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkgZmlu
YWw7CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RB
TkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSBmaW5h
bDsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lk
IHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgZmluYWw7Cisg
ICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSBmaW5hbDsKKyAgICB2
b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0pIGZp
bmFsOworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpIGZpbmFs
OworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSBmaW5hbDsKKyAgICB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSBmaW5hbDsK
KyAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0Lgor
Citwcm90ZWN0ZWQ6CisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3Zl
cnJpZGVzLgorICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQo
U3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9u
cyk7CisgICAgdm9pZCB3YXNMb3N0KCk7CisgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CisKKyAgICBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYpOworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAg
ICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKKy8v
IFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KK3N0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lX3Y8R0NHTGVudW0sIHVpbnQzMl90Pik7CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihHQ0dMYm9vbGVhbikgPT0gc2l6ZW9mKGJvb2wpKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8R0NHTGJpdGZpZWxkLCB1aW50MzJfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWVfdjxHQ0dMYnl0ZSwgaW50OF90Pik7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdD
R0x1Ynl0ZSwgdWludDhfdD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2hv
cnQsIGludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVzaG9ydCwg
dWludDE2X3Q+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTGludCwgaW50MzJf
dD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxHQ0dMc2l6ZWksIGludDMyX3Q+KTsK
K3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8R0NHTHVpbnQsIHVpbnQzMl90Pik7CitzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PEdDR0xmbG9hdCwgZmxvYXQ+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGhhbGZmbG9hdCwgdWludDE2X3Q+KTsKK3N0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8R0NHTGNsYW1wZiwgZmxvYXQ+KTsKK3N0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lX3Y8R0NHTHZvaWQsIHZvaWQ+KTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
X3Y8UGxhdGZvcm1HTE9iamVjdCwgdWludDMyX3Q+KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdD
R0xjaGFyKSA9PSBzaXplb2YodWludDhfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTGlu
dDY0KSA9PSBzaXplb2YoaW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2YoR0NHTHVpbnQ2
NCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisvLyBHQ0dMc3luYyBhbmQgR0NHTCpwdHIgdHlwZXMg
YXJlIHBvaW50ZXJzLiBPbiBzb21lIHBsYXRmb3JtcywgdGhleSBhcmUgMzItYml0LgorLy8gQ3Vy
cmVudGx5IHdlIGhhcmQtY29kZSBpdCBieSB1c2luZyA8PSwgYW5kIGFzc3VtZSB0aGF0IHdlIGRv
IG5vdCB0cmFuc2ZlciBhcnJheXMgb2YgdGhlIHR5cGVzLgorc3RhdGljX2Fzc2VydChzaXplb2Yo
R0NHTGludHB0cikgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihH
Q0dMc2l6ZWlwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2Yo
R0NHTHZvaWRwdHIpIDw9IHNpemVvZih1aW50NjRfdCkpOworc3RhdGljX2Fzc2VydChzaXplb2Yo
R0NHTHN5bmMpIDw9IHNpemVvZih1aW50NjRfdCkgJiYgc2l6ZW9mKEdDR0xzeW5jKSA9PSBzaXpl
b2YoaW50cHRyX3QpKTsKKy8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCBzY3JpcHQuCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41ZjJiMzJiMmJjMTAxMGVmOGVjZDBhZjU3NzdhYmQ0ZmEwOGEzYzkwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
IE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZhaWxhYmxlRXh0
ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0xvc3Qo
KQorICAgIHZvaWQgV2FzQ2hhbmdlZCgpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY3ZWNmODY1NTZhMDA3M2FmOGY1NTRjZmNmYzBlZjMzOWY2MWU4OWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0w
LDAgKzEsMTY0NiBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxO
ZXh0R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdD
R0xlbnVtIGVycm9yKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QoKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJl
KEdDR0xlbnVtIHRleHR1cmUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hT
aGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hh
ZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0
cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZv
cm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJi
dWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVt
IHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NH
TGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhh
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2Rl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdC
LCBHQ0dMZW51bSBtb2RlQWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0
b3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5k
RnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRl
KEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NH
TGVudW0gZHN0QWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxw
aGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xlbnVtIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0g
dGFyZ2V0KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyh0YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVi
dWZmZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBH
Q0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBH
Q0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJl
ZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0
YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlQnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworUGxh
dGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFt
KCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dM
ZW51bSBhcmcwKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRl
RnJhbWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4o
ZmxhZykpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dM
Y2xhbXBmIHpGYXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwg
YXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2Rl
LCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJs
ZShHQ0dMZW51bSBjYXApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoR0NHTHVpbnQgaW5kZXgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmZpbmlzaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJn
MywgR0NHTGludCBsZXZlbCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJn
ZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyb250RmFjZShHQ0dMZW51bSBtb2Rl
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZh
Y2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRl
TWlwbWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworYm9v
bCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKK3sKKyAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVy
blZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
aW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlv
bihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpCit7CisgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48
R0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1
ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1
bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUu
YnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVw
bHk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1
bHQpCisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUu
YnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQ2NCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCit7Cisg
ICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xpbnQ2NCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBp
bmRleCkKK3sKKyAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5k
ZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKK30KKworR0NH
TGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVu
Y2U8Ym9vbD4gdmFsdWVSZXBseTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5i
dWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6
UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVw
bHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAKK30KKworR0NH
TGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQoreworICAgIHVp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1N0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
U3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCit7
CisgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBh
cmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVy
aShhcmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hh
ZGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
Cit7CisgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVtIHBy
ZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVjaXNp
b24pCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJlcGx5Owor
ICAgIGludDMyX3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJl
cGx5LCBwcmVjaXNpb25SZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICBpZiAoc2VuZFJlc3VsdCkgeworICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFu
Z2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAg
ICBpZiAocHJlY2lzaW9uKQorICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNpc2lvblJlcGx5
OworICAgIH0KK30KKworU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNo
YWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgU3RyaW5nIHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dM
ZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGZsb2F0IHJldHVyblZhbHVlID0g
eyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
K0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFs
dWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMZmxv
YXQ+IHZhbHVlKQoreworICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdjo6UmVwbHko
dmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBp
ZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0
YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgCit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCit7Cisg
ICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKHNlbmRSZXN1bHQp
CisgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKK3sKKyAgICBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVp
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAg
ICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICog
c2l6ZW9mKHVpbnQzMl90KSk7CisgICAgCit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29u
c3QgU3RyaW5nJiBuYW1lKQoreworICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9j
YXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0xzaXpl
aXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQoreworICAgIHVpbnQ2NF90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFy
Z2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9v
bGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKK3sKKyAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNFbmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29s
ZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0
dXJuVmFsdWUpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHJldHVyblZhbHVlKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5W
YWx1ZSk7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
VGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
VGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1
cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxv
YXQgYXJnMCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
TGluZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpMaW5rUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMaW50IHBhcmFtKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFj
dG9yLCB1bml0cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdD
R0xib29sZWFuIGludmVydCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBh
cmcxKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFk
ZXJTb3VyY2UoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51
bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVu
dW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVu
YywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2sp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxN
YXNrKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBm
YWNlLCBHQ0dMdWludCBtYXNrKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFz
cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNp
bE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0
ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0g
enBhc3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0
ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9h
dCBwYXJhbSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0p
Cit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9h
dCB5KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMmYobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRh
dGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0zZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdD
R0xmbG9hdCB6KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24s
IHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24s
IHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwg
eiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IHYpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJp
eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEp
LCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3Nl
KSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
TWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNw
YW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1c2VQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZmxvYXQgeCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
MWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0
PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
MmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0
PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSwgR0NHTGZsb2F0IHopCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0
LCAzPiB2YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQgdykKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYoaW5k
ZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRy
IG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4o
bm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVt
IHVzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
dWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEp
Cit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1
ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6
UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGlmIChzZW5kUmVzdWx0KQorICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHku
ZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgIAorfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBw
aXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVz
c2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0
YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJl
c3NlZFRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRp
dmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgs
IGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3Jt
R0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXko
KQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworR0NHTGJvb2xlYW4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZl
cnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVu
dW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNl
dCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJl
YWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCks
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90
Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQoreworICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVy
U3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6
OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBpZiAoc2VuZFJlc3VsdCkKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5
LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3Jj
WDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IGxheWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1
cmUsIGxldmVsLCBsYXllciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVG
cmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJh
bWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1
ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIo
R0NHTGVudW0gc3JjKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZWFkQnVmZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVs
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihw
aXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJ
bWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3Vi
SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
em9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdl
M0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRl
eFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwg
eSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21w
cmVzc2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
aW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGlt
YWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKK0dDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlv
bihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRG
cmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMdWludCB2MCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYw
LCB2MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vp
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgy
eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9z
ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1N
YXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
TWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0
cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHosIEdDR0xpbnQgdykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQsIDQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVl
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJ
NHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJ
NHVpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51
bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5k
LCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVy
aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IHZhbHVlcykKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEp
LCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2
YWx1ZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNs
ZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFs
dWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVz
KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1
ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50
IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZl
ciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlUXVlcnkoKQoreworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnko
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCit7CisgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJl
Z2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQoreworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdl
dCwgcXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJn
ZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK1BsYXRmb3JtR0xPYmpl
Y3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRh
cmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK0dDR0x1aW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwg
R0NHTGVudW0gcG5hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVj
dHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitQbGF0Zm9ybUdM
T2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQorewor
ICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVy
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworfQorCitHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQoreworICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+
KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
aW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVu
aXQsIHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmko
c2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJm
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJh
bSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxl
clBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworfQorCitHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSkKK3sKKyAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBs
ZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVy
UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5j
ZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgdWlu
dDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7Cit9
CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dM
c3luYyBhcmcwKQoreworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHJldHVyblZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKworR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWlu
dDY0IHRpbWVvdXQpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhz
dGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBm
bGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xz
eW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBz
dGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKworR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5j
aShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKK3sKKyAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1BsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQor
eworICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5z
Zm9ybUZlZWRiYWNrKGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRi
YWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNm
b3JtRmVlZGJhY2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJh
bnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0
dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRU
cmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zv
cm1GZWVkYmFjayh0YXJnZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVl
ZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2Rl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZl
ck1vZGUpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCit7CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1
ZmZlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPEdDR0x1aW50PiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCit7CisgICAg
VmVjdG9yPHVpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVu
aWZvcm1OYW1lcyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9y
bUluZGljZXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVmVjdG9yPEdDR0xpbnQ+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMs
IEdDR0xlbnVtIHBuYW1lKQoreworICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsg
fTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKK30KKworR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJp
bmcmIHVuaWZvcm1CbG9ja05hbWUpCit7CisgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCitTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4KQoreworICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRp
bmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50
PiBwYXJhbXMpCit7CisgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBs
eTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9j
a0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoc2VuZFJlc3VsdCkK
KyAgICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5i
dWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAKK30KKworR0NHTGludCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICBp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBH
Q0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkw
LCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVu
dW0gZmlsdGVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAs
IGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCitQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKK3sKKyAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK0dDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQoreworICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJh
eU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCitTdHJpbmcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKK3sKKyAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1h
cmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJF
WFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPiBidWZzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGlu
dCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGlu
ZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xpbnQ+IHBhcmFtcykKK3sKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
IHBhcmFtc1JlcGx5OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVy
bmFsZm9ybWF0LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVybmFsZm9ybWF0aXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmIChzZW5kUmVzdWx0KQor
ICAgICAgICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1
ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgIAorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNp
emVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHZvaWQqKiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQ2NCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUludGVyZmFj
ZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFj
ZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpIC8vIE5PTElOVAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0TXVsdGlz
YW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHZhbCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleExldmVsUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1z
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRuVW5pZm9ybXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRU
ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMaW50KiBwYXJhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCBHQ0dMdWludCogcGFyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFy
YW1zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludDY0KiBwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMz
NDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEuLjViMjczMmYyYzRlNGM0ODNl
YmY4NDA4N2E4YzI2MzRlOWQ1NDkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMDgs
NiArMTA4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
QEAgLTkxMiw2ICs5MTYsMjIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmUKICAgICByZXR1cm4g
bV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVm
ZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQorCitSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0w+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBQbGF0Zm9ybURpc3BsYXlJRCBo
b3N0V2luZG93RGlzcGxheUlEKSBjb25zdAoreworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgVU5VU0VEX1ZBUklBQkxFKGhvc3RXaW5kb3dEaXNwbGF5SUQpOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGUoYXR0cmlidXRlcyk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlm
Cit9CisKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB2b2lkIFdl
YkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xh
eWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2Zj
YjU5ZTk5ZjJjZDMzNzYwZGM4Li4xMjE1ZjkyYTAzMTk1ODBhMGRkZDkyMTA1MTNkZDJkNWQzMDUw
NTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDExIEBAIHByaXZhdGU6CiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBm
aW5hbDsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93
RGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgorI2VuZGlmCisKIAogICAgIENvbXBvc2l0
aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwK
ICAgICB7CkBAIC00MDMsNiArNDA3LDcgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgYm9vbCBt
X2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11
dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2Ug
fTsKKwogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTc4Y2M3ZDE4ZGNlMGY3ZTRlOGEzNjU5NTlm
NThkMzQzYWQyMTAxOS4uYjBhYThkZjJlYTE4NTg1ZjI3ZWIxMzNjYzA5OGQ1ZGZiMjQzOTAyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQy
Nyw2ICs0MjcsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQ
cm9jZXNzIH0KICAgICAsIG1fc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVy
cy5zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgfQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJ
bkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9Cisj
aWYgRU5BQkxFKFdFQkdMKQorICAgICwgbV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7
IHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3N9CisjZW5kaWYKICNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFj
eVF1aXJrcyB7IHBhcmFtZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KICNl
bmRpZgpAQCAtNzMyLDcgKzczNSw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAo
V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciogbWFuYWdlciA9IHdlYlByb2Nlc3Muc3VwcGxlbWVu
dDxXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyPigpKQogICAgICAgICBtX3BhZ2UtPnNldHRpbmdz
KCkuc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShtYW5hZ2VyLT5tZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnkoKSk7CiAjZW5kaWYKLSAgICAKICAgICBpZiAocGFyYW1ldGVycy52aWV3U2NhbGVG
YWN0b3IgIT0gMSkKICAgICAgICAgc2NhbGVWaWV3KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9y
KTsKIApAQCAtMzgwMCwxMCArMzgwMiwxMiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVu
Y2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5k
ZXJDYW52YXNJbkdQVVByb2Nlc3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVz
ZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3Mg
JiYgRHJhd2luZ0FyZWE6OnN1cHBvcnRzR1BVUHJvY2Vzc1JlbmRlcmluZyhtX2RyYXdpbmdBcmVh
VHlwZSkpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JN
ZWRpYShtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7Ci0KICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHN1cHBvcnQgd2ViIGZvbnRzIGluIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBpZiAobV9z
aG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MpCiAgICAgICAgIHNldHRpbmdzLnNldERvd25sb2Fk
YWJsZUJpbmFyeUZvbnRzRW5hYmxlZChmYWxzZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJl
bmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBD
X1RFU1RJTkdfQVBJKQpAQCAtNzAwMyw2ICs3MDA3LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jaHJv
bml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRD
T1JTRGlzYWJsaW5nUGF0dGVybnMobV9pZGVudGlmaWVyLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
cyksIDApOwogfQogCisKICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFk
ZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM2MmFk
NzdiZTZhZTMyZTBlNjljYTkzZWJmYzYyM2VhNWRiY2ZlODQuLmZhMTMzNTRkZGZmMjMyODQ1MGI5
YzcyY2RhYzRkY2Y3YWU0NTRiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTE4MzIsNiArMTgzMiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3Vs
ZFJlbmRlckRPTUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlN
ZWRpYUluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGJvb2wg
bV9zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07CisjZW5kaWYKICNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJp
dmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYKQEAgLTIxODksNCArMjE5MiwzIEBAIGlubGlu
ZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBX
ZWJDb3JlOjpGcmFtZSYpIGNvCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjM2ZhODFlZGMwMGViNjky
NzczY2M3M2Y5ZjRhYWRjY2UxZGNjMTMyLi5iZDI5OTkwZjk4MWJlODk0Nzg1MmIwN2M5MmJhYjNj
YjVkODUzNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0x
OTUzLDYgKzE5NTMsMjAgQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJp
bmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7
CiB9CisKKyNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nl
c3NGb3JXZWJHTChib29sIHVzZUdQVVByb2Nlc3NGb3JXZWJHTCkKK3sKKyAgICBtX3VzZUdQVVBy
b2Nlc3NGb3JXZWJHTCA9IHVzZUdQVVByb2Nlc3NGb3JXZWJHTDsKK30KKworYm9vbCBXZWJQcm9j
ZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3JXZWJHTCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvcldlYkdMOworfQorCisjZW5kaWYKKwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVlA5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTlj
NDdkYjRjNDQ3YzBmNGFiNjI3YzA5NGI1ZjY4ZGI1NjVhOWE2Yy4uMWE1ODVhYzE0MmIxODMyNzY0
YzRkODUzNzkwOTBiMmNiY2E3M2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC0zNDcsNiArMzQ3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUdQVVByb2Nl
c3NGb3JET01SZW5kZXJpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzRm9yTWVk
aWEoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6
UmVuZGVyaW5nUHVycG9zZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgc2V0VXNlR1BV
UHJvY2Vzc0ZvcldlYkdMKGJvb2wpOworICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5n
Rm9yV2ViR0woKSBjb25zdDsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQpAQCAt
Njg3LDYgKzY5MSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JDYW52
YXNSZW5kZXJpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVu
ZGVyaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFs
c2UgfTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3NGb3JXZWJH
TCB7IGZhbHNlIH07CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmZWJkMDc0NDhkMjc2
NzFlMDVhYzE4OTNhZDM0ZDY4NmVlNjQxZTQzLi5mMDA2MmNiZjc5MTBhNTFkMmM3NWEyNWI1OTM4
ZmQ5YTBmYTMwNWJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NzIxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4NzYyNTg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEltcGxlbWVudHMgYSByZW1vdGUgdmVyc2lv
biBvZiBHcmFwaGljc0NvbnRleHRHTCBmb3IgR1BVIHByb2Nlc3MuCisgICAgICAgIEN1cnJlbnQg
aW1wbGVtZW50YXRpb24gaXMgdXNpbmcgV2ViS2l0IElQQyBhbmQgaXMgaW5jb21wbGV0ZS4KKwor
ICAgICAgICBBZGQgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRh
dGlvbi4gQ3VycmVudGx5CisgICAgICAgIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGVzIGEgV2ViS2l0
IElQQyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBUaGUgaW5wdXQgZGVmaW5pdGlvbiB0byB0
aGUgZ2VuZXJhdG9yIGlzIHRoZSBwcm94eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBoZWFkZXIg
ZmlsZXMuCisgICAgICAgIFRoZSBvdXRwdXQgb2YgdGhlIGdlbmVyYXRvciBpcworICAgICAgICAg
ICAtIFdlYktpdCBJUEMgbWVzc2FnZSBkZWZpbml0aW9uIGZpbGUKKyAgICAgICAgICAgLSBNZXNz
YWdlIHNlbmRlciBjb2RlCisgICAgICAgICAgIC0gTWVzc2FnZSByZWNlaXZlciBhbmQgcGF5bG9h
ZCBpbnZvY2F0aW9uIGNvZGUKKworICAgICAgICBUaGUgZ2VuZXJhdG9yIGNvbnZlcnRzIEdyYXBo
aWNzQ29udGV4dEdMIEdDR0wgLXByZWZpeGVkIHR5cGVzIHRvCisgICAgICAgIHNpemVkIElQQyB0
eXBlcy4KKworICAgICAgICBUaGUgZ2VuZXJhdG9yIGlzIGludm9rZWQgZHVyaW5nIGRldmVsb3Bt
ZW50IHRpbWUgYW5kIHRoZSByZXN1bHRzIGFyZQorICAgICAgICBzdG9yZWQgaW4gdGhlIHJlcG9z
aXRvcnkuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6IEFkZGVkLgor
CiAyMDIwLTEyLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgSW5jcmVhc2UgbWF4aW11bSBzaXplIG9mIFdLQ29udGVudFJ1bGVMaXN0CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2YjQyMjI5Y2YyZjgyOGM2NmM3
ZTdiNDE3NzNjMmViZTQ0MzExNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbApAQCAtMCwwICsxLDEwNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIFRo
aXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgc291cmNlIGZpbGVzIGZvciBXZWJHTCBHUFUgcHJvY2Vz
cyBJUEMuCisjCisjIHB5dGhvbjMgLW0gYmxhY2sgLWwgMTUwIFRvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbAorIyBweXRob24zIC1tIG15cHkgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1n
cHVwLXdlYmdsCisjCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBlbnVtCitpbXBvcnQgcGF0aGxp
YgoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgY29sbGVjdGlvbnMKKworZnJvbSB0eXBp
bmcgaW1wb3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0
aW9uYWwsIEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIKKworcm9vdF9kaXIgPSAocGF0aGxp
Yi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCitleHRlbnNp
b25zX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9y
bSIgLyAiZ3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgorCitmdW5jdGlvbnNfaW5wdXRfZm5z
ID0gWworICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAv
ICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCitd
Cit0eXBlc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQ
cm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgiCisKKwordGVtcGxhdGVfcHJlYW1ibGUgPSAiIiIvKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxl
IGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KKyIiIgor
Y29udGV4dF9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAi
R1BVUHJvY2VzcyIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rp
b25zR2VuZXJhdGVkLmgiCitjb250ZXh0X2Z1bmN0aW9uc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1w
bGF0ZV9wcmVhbWJsZQorICAgICsgIiIiLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZCBp
biB0aGUgcHJpdmF0ZSBzZWN0aW9uIG9mIHRoZQorLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wg
aW1wbGVtZW50YXRpb25zLgorI3ByYWdtYSBvbmNlCit7fQorCisiIiIKKykKK2NvbnRleHRfbWVz
c2FnZXNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAiR1BVUHJvY2VzcyIg
LyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIgorY29u
dGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsg
IiIiI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCittZXNzYWdlcyAt
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CisgICAgdm9pZCBSZXNo
YXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVm
ZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQg
UHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cworI2VuZGlmCisgICAgdm9pZCBF
bnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCisgICAgdm9pZCBOb3RpZnlN
YXJrQ29udGV4dENoYW5nZWQoKQore30KK319CisKKyNlbmRpZgorCisiIiIKKykKKworY29udGV4
dF9wcm94eV9mdW5jdGlvbnNfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktpdCIgLyAi
V2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAiCitjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190
ZW1wbGF0ZSA9ICgKKyAgICB0ZW1wbGF0ZV9wcmVhbWJsZQorICAgICsgIiIiCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKK25hbWVzcGFjZSBXZWJL
aXQge3sKK3t9CisKK319CisKKyNlbmRpZgorCisiIiIKKykKKworCitkZWYgd3JpdGVfZmlsZShm
biwgbmV3X2NvbnRlbnRzKToKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoK
KyAgICAgICAgICAgIGlmIGYucmVhZCgpID09IG5ld19jb250ZW50czoKKyAgICAgICAgICAgICAg
ICByZXR1cm4KKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKyAgICB3aXRoIG9wZW4oZm4sICJ3
IikgYXMgZjoKKyAgICAgICAgZi53cml0ZShuZXdfY29udGVudHMpCisKK2NsYXNzIGNwcF90eXBl
KG9iamVjdCk6CisgICAgdHlwZV9uYW1lOiBzdHIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
eXBlX25hbWUgOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGVfbmFtZSA9IHR5cGVfbmFtZQorCisg
ICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZQorCisg
ICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnR5cGVfbmFt
ZSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9u
YW1lCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
dHlwZV9uYW1lID09IG90aGVyLnR5cGVfbmFtZQorCisgICAgZGVmIGlzX3ZvaWQoc2VsZikgLT4g
Ym9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lIGluIFsidm9pZCIsICJHQ0dMdm9p
ZCIsICJjb25zdCB2b2lkIiwgImNvbnN0IEdDR0x2b2lkIl0KKworICAgIGRlZiBpc19jb25zdChz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUuc3RhcnRzd2l0aCgi
Y29uc3QgIikKKworICAgIGRlZiBpc19jb250YWluZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYpIC0+IGJv
b2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9v
bDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfZHluYW1pY19zcGFuKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3BvaW50ZXIoc2Vs
ZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfY29uc3RfcG9p
bnRlcihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19y
ZWZlcmVuY2Uoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
aXNfY29uc3RfcmVmZXJlbmNlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgZGVmIGdldF92YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJl
dHVybiBzZWxmCisKKyAgICBkZWYgZ2V0X2RlY2F5X3R5cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoK
KyAgICAgICAgaWYgc2VsZi5pc19jb25zdCgpOgorICAgICAgICAgICAgcmV0dXJuIGdldF9jcHBf
dHlwZShzZWxmLnR5cGVfbmFtZVs2Ol0pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYg
Z2V0X3J2YWx1ZV90eXBlKHNlbGYpIC0+ICdjcHBfdHlwZSc6CisgICAgICAgIHJldHVybiBnZXRf
Y3BwX3R5cGUoc2VsZi50eXBlX25hbWUgKyAiJiYiKQorCisgICAgZGVmIGdldF9wb2ludGVyX3R5
cGUoc2VsZikgLT4gJ2NwcF90eXBlJzoKKyAgICAgICAgcmV0dXJuIGdldF9jcHBfdHlwZShzZWxm
LnR5cGVfbmFtZSArICIqIikKKworY2xhc3MgY3BwX3R5cGVfY29udGFpbmVyKGNwcF90eXBlKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDogc3RyLCBjb250YWluZXJfbmFtZSA6
IHN0ciwgY29udGFpbmVkX3R5cGUgOiBjcHBfdHlwZSwgYXJpdHkgOiBPcHRpb25hbFtpbnRdID0g
Tm9uZSk6CisgICAgICAgIGNwcF90eXBlLl9faW5pdF9fKHNlbGYsIHR5cGVfbmFtZSkKKyAgICAg
ICAgc2VsZi5jb250YWluZXJfbmFtZSA9IGNvbnRhaW5lcl9uYW1lCisgICAgICAgIHNlbGYuY29u
dGFpbmVkX3R5cGUgPSBjb250YWluZWRfdHlwZQorICAgICAgICBzZWxmLmFyaXR5ID0gYXJpdHkK
KyAgICBkZWYgaXNfY29udGFpbmVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBUcnVl
CisgICAgZGVmIGlzX3NwYW4oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29u
dGFpbmVyX25hbWUgPT0gIkdDR0xTcGFuIgorICAgIGRlZiBpc19keW5hbWljX3NwYW4oc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUgPT0gIkdDR0xTcGFu
IiBhbmQgc2VsZi5hcml0eSBpcyBOb25lCisgICAgZGVmIGdldF9jb250YWluZXJfbmFtZShzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmVyX25hbWUKKyAgICBkZWYgZ2V0X2FyaXR5
KHNlbGYpIC0+IE9wdGlvbmFsW2ludF06CisgICAgICAgIHJldHVybiBzZWxmLmFyaXR5CisgICAg
ZGVmIGdldF9jb250YWluZWRfdHlwZShzZWxmKSAtPiBjcHBfdHlwZToKKyAgICAgICAgcmV0dXJu
IHNlbGYuY29udGFpbmVkX3R5cGUKKyAgICBkZWYgaXNfb3V0cHV0X2J1ZmZlcl90eXBlKHNlbGYp
IC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5lZF90eXBlLmlzX2NvbnN0KCkK
KworZGVmIGNyZWF0ZV9jcHBfdHlwZV9jb250YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRp
b25hbFtjcHBfdHlwZV9jb250YWluZXJdOgorICAgIG0gPSByZS5tYXRjaChyIihbXHc6XSspPCgu
Kyk+JCIsIHR5cGVfbmFtZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAg
ICBjb250YWluZXJfbmFtZSA9IG1bMV0KKyAgICB0ZW1wbGF0ZXMgPSBtWzJdCisgICAgYXJpdHkg
PSBOb25lCisgICAgbSA9IHJlLm1hdGNoKHIiKFteLF0rKSxccyooXGQrKSIsIHRlbXBsYXRlcykK
KyAgICBpZiBtOgorICAgICAgICB0ZW1wbGF0ZXMgPSBtWzFdCisgICAgICAgIGFyaXR5ID0gaW50
KG1bMl0pCisgICAgcmV0dXJuIGNwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUsIGNvbnRhaW5l
cl9uYW1lLCBnZXRfY3BwX3R5cGUodGVtcGxhdGVzKSwgYXJpdHkpCisKK2NsYXNzIGNwcF90eXBl
X2Z1bmN0aW9uKGNwcF90eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9uYW1lIDog
c3RyLCByZXR1cm5fdmFsdWVfdHlwZSA6IGNwcF90eXBlLCBhcmd1bWVudF90eXBlcyA6IExpc3Rb
Y3BwX3R5cGVdKToKKyAgICAgICAgY3BwX3R5cGUuX19pbml0X18oc2VsZiwgdHlwZV9uYW1lKQor
ICAgICAgICBzZWxmLnJldHVybl92YWx1ZV90eXBlICA9IHJldHVybl92YWx1ZV90eXBlCisgICAg
ICAgIHNlbGYuYXJndW1lbnRfdHlwZXMgPSBhcmd1bWVudF90eXBlcworCitkZWYgY3BwX3NwbGl0
X2FyZ3Nfc3BlY3MoYXJnc19zcGVjIDogc3RyKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAjIGh0
dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMzNTI3MjQ1L3B5dGhvbi1zcGxpdC1i
eS1jb21tYS1za2lwcGluZy10aGUtY29udGVudC1pbnNpZGUtcGFyZW50aGVzZXMKKyAgICBjb21t
YSA9IHIiLCg/ISg/OltePF0qXDxbXj5dKlw+KSpbXjw+XSpcPikiCisgICAgcmV0dXJuIGZpbHRl
cihOb25lLCBbYS5zdHJpcCgpIGZvciBhIGluIHJlLnNwbGl0KGNvbW1hLCBhcmdzX3NwZWMuc3Ry
aXAoKSldKQorICAgIAorZGVmIGNyZWF0ZV9jcHBfdHlwZV9mdW5jdGlvbih0eXBlX25hbWUgOiBz
dHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2Z1bmN0aW9uXToKKyAgICBtID0gcmUubWF0Y2gocico
LiopXCgoLiopXCknLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJldHVybiBO
b25lCisgICAgcmV0dXJuX3ZhbHVlX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsxXSkKKyAgICBhcmdz
X3R5cGVzID0gW2dldF9jcHBfdHlwZShhKSBmb3IgYSBpbiBjcHBfc3BsaXRfYXJnc19zcGVjcyht
WzJdKV0KKyAgICByZXR1cm4gY3BwX3R5cGVfZnVuY3Rpb24odHlwZV9uYW1lLCByZXR1cm5fdmFs
dWVfdHlwZSwgYXJnc190eXBlcykKKyAgICAgICAgCisjIFBvaW50ZXIgb3IgcmVmZXJlcmVuY2UK
K2NsYXNzIGNwcF90eXBlX2luZGlyZWN0KGNwcF90eXBlKToKKyAgICBjYXRlZ29yeSA6IHN0cgor
ICAgIHZhbHVlX3R5cGUgOiBjcHBfdHlwZQorICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
eXBlX25hbWUgOiBzdHIsIGNhdGVnb3J5IDogc3RyLCB2YWx1ZV90eXBlIDogY3BwX3R5cGUpOgor
ICAgICAgICBjcHBfdHlwZS5fX2luaXRfXyhzZWxmLCB0eXBlX25hbWUpCisgICAgICAgIHNlbGYu
Y2F0ZWdvcnkgPSBjYXRlZ29yeQorICAgICAgICBzZWxmLnZhbHVlX3R5cGUgPSB2YWx1ZV90eXBl
CisKKyAgICBkZWYgaXNfY29uc3RfcG9pbnRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
Y2F0ZWdvcnkgPT0gJyonIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcG9pbnRlcihz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyonIGFuZCBub3Qgc2VsZi5p
c19jb25zdCgpCisgICAgZGVmIGlzX2NvbnN0X3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYnIGFuZCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNf
cmVmZXJlbmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jYXRlZ29yeSA9PSAnJicgYW5k
IG5vdCBzZWxmLmlzX2NvbnN0KCkKKyAgICBkZWYgaXNfcnZhbHVlX3JlZmVyZW5jZShzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdvcnkgPT0gJyYmJworICAgIGRlZiBnZXRfdmFsdWVf
dHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVfdHlwZQorCitkZWYgY3JlYXRl
X2NwcF90eXBlX2luZGlyZWN0KHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVf
aW5kaXJlY3RdOgorICAgIG0gPSByZS5tYXRjaChyImNvbnN0ICguKykmJiQiLCB0eXBlX25hbWUp
CisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChyIiguKykmJiQiLCB0eXBlX25h
bWUpIAorICAgIGlmIG06CisgICAgICAgIHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25h
bWUsICcmJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUubWF0Y2gociJjb25zdCAo
LispJiQiLCB0eXBlX25hbWUpCisgICAgaWYgbm90IG06CisgICAgICAgIG0gPSByZS5tYXRjaChy
IiguKykmJCIsIHR5cGVfbmFtZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gY3BwX3R5cGVf
aW5kaXJlY3QodHlwZV9uYW1lLCAnJicsIGdldF9jcHBfdHlwZShtWzFdKSkKKyAgICBtID0gcmUu
bWF0Y2gociJjb25zdCAoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG5vdCBtOgorICAgICAg
ICBtID0gcmUubWF0Y2gociIoLispXCokIiwgdHlwZV9uYW1lKQorICAgIGlmIG06CisgICAgICAg
IHJldHVybiBjcHBfdHlwZV9pbmRpcmVjdCh0eXBlX25hbWUsICcqJywgZ2V0X2NwcF90eXBlKG1b
MV0pKQorICAgIHJldHVybiBOb25lCisKKworY2xhc3MgY3BwX2V4cHIob2JqZWN0KToKKyAgICB0
eXBlOiBjcHBfdHlwZQorICAgIGV4cHI6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5
cGU6IGNwcF90eXBlLCBleHByOiBzdHIpOgorICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCisgICAg
ICAgIHNlbGYuZXhwciA9IGV4cHIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5leHByCisKKworQ3BwRXhwckNvbnZlcnRlciA9IENhbGxhYmxlW1tjcHBfZXhw
ciwgY3BwX3R5cGVdLCBjcHBfZXhwcl0KKworCitkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJv
bV9wb2ludGVyX3Rocm91Z2goY2FzdF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFi
bGVbW2NwcF9leHByLCBjcHBfdHlwZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJw
cmV0X2Nhc3RfZnJvbV9wb2ludGVyKGV4cHI6IGNwcF9leHByLCB0eXBlOiBjcHBfdHlwZSkgLT4g
Y3BwX2V4cHI6CisgICAgICAgIHJldHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0
eXBlLnR5cGVfbmFtZX0+KHJlaW50ZXJwcmV0X2Nhc3Q8e3N0cihjYXN0X3Rocm91Z2hfdHlwZSl9
Pih7c3RyKGV4cHIpfSkpIikKKyAgICByZXR1cm4gY3BwX3JlaW50ZXJwcmV0X2Nhc3RfZnJvbV9w
b2ludGVyCisKK2RlZiBjcHBfcmVpbnRlcnByZXRfY2FzdF90b19wb2ludGVyX3Rocm91Z2goY2Fz
dF90aHJvdWdoX3R5cGUgOiBjcHBfdHlwZSkgLT4gQ2FsbGFibGVbW2NwcF9leHByLCBjcHBfdHlw
ZV0sIGNwcF9leHByXToKKyAgICBkZWYgY3BwX3JlaW50ZXJwcmV0X2Nhc3RfdG9fcG9pbnRlcihl
eHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgICAgICByZXR1
cm4gY3BwX2V4cHIodHlwZSwgZiJyZWludGVycHJldF9jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHN0
YXRpY19jYXN0PHtzdHIoY2FzdF90aHJvdWdoX3R5cGUpfT4oe3N0cihleHByKX0pKSIpCisgICAg
cmV0dXJuIGNwcF9yZWludGVycHJldF9jYXN0X3RvX3BvaW50ZXIKKworZGVmIGNwcF9zdGF0aWNf
Y2FzdChleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGUpIC0+IGNwcF9leHByOgorICAgIHJl
dHVybiBjcHBfZXhwcih0eXBlLCBmInN0YXRpY19jYXN0PHt0eXBlLnR5cGVfbmFtZX0+KHtzdHIo
ZXhwcil9KSIpCisKKworZGVmIGNwcF9pbXBsaWNpdF9jYXN0KGV4cHI6IGNwcF9leHByLCB0eXBl
OiBjcHBfdHlwZSkgLT4gY3BwX2V4cHI6CisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIHN0cihl
eHByKSkKKworCitkZWYgY3BwX2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHBy
OiBjcHBfZXhwciwgdHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBl
bGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50
ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNwcF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRl
cnByZXRfY2FzdDx7ZWxlbWVudF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKCkpLCB7
c3RyKGV4cHIpfS5zaXplKCkpIikKKworZGVmIHdlYmtpdF9pcGNfc3Bhbl90cmFuc2Zlcl90eXBl
X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbihleHByOiBjcHBfZXhwciwgdHlwZTogY3BwX3R5
cGVfY29udGFpbmVyKSAtPiBjcHBfZXhwcjoKKyAgICBlbGVtZW50X3BvaW50ZXJfdHlwZSA9IHR5
cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuZ2V0X3BvaW50ZXJfdHlwZSgpCisgICAgcmV0dXJuIGNw
cF9leHByKHR5cGUsIGYie3N0cih0eXBlKX0ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB7ZWxlbWVu
dF9wb2ludGVyX3R5cGV9Pih7c3RyKGV4cHIpfS5kYXRhKSwge3N0cihleHByKX0uYnVmU2l6ZSki
KQorCitkZWYgY3BwX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4gY3BwX2V4cHI6CisgICAg
cmV0dXJuIGNwcF9leHByKGV4cHIudHlwZS5nZXRfcnZhbHVlX3R5cGUoKSwgZiJXVEZNb3ZlKHtz
dHIoZXhwcil9KSIpCisKKworY3BwX3R5cGVzOiBEaWN0W3N0ciwgY3BwX3R5cGVdID0ge30KKwor
Y3BwX3R5cGVfY29uc3RydWN0b3JzIDogTGlzdFtDYWxsYWJsZVtbc3RyXSwgT3B0aW9uYWxbY3Bw
X3R5cGVdXV0gPSBbCisgICAgY3JlYXRlX2NwcF90eXBlX2Z1bmN0aW9uLAorICAgIGNyZWF0ZV9j
cHBfdHlwZV9jb250YWluZXIsCisgICAgY3JlYXRlX2NwcF90eXBlX2luZGlyZWN0CitdCisKK2Rl
ZiBnZXRfY3BwX3R5cGUodHlwZV9uYW1lOiBzdHIpOgorICAgIHIgPSBjcHBfdHlwZXMuZ2V0KHR5
cGVfbmFtZSwgTm9uZSkKKyAgICBpZiByOgorICAgICAgICByZXR1cm4gcgorICAgIGZvciB0eXBl
X2NvbnN0ciBpbiBjcHBfdHlwZV9jb25zdHJ1Y3RvcnM6CisgICAgICAgIHIgPSB0eXBlX2NvbnN0
cih0eXBlX25hbWUpCisgICAgICAgIGlmIHI6CisgICAgICAgICAgICBicmVhaworICAgIGlmIG5v
dCByOgorICAgICAgICByID0gY3BwX3R5cGUodHlwZV9uYW1lKQorICAgIGNwcF90eXBlc1t0eXBl
X25hbWVdID0gcgorICAgIHJldHVybiByCisKKworY2xhc3MgY3BwX2FyZyhvYmplY3QpOgorICAg
IG5hbWU6IHN0cgorICAgIHR5cGU6IGNwcF90eXBlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
dHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAg
ICAgICAgc2VsZi50eXBlID0gdHlwZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAg
IHJldHVybiAie30ge30iLmZvcm1hdChzZWxmLnR5cGUsIHNlbGYubmFtZSkKKworCitjbGFzcyBj
cHBfZGVjbChvYmplY3QpOgorICAgIHR5cGU6IGNwcF90eXBlCisgICAgbmFtZTogc3RyCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgdHlwZTogY3BwX3R5cGUsIG5hbWU6IHN0cik6CisgICAgICAg
IHNlbGYudHlwZSA9IHR5cGUKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9f
c3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBmIntzdHIoc2VsZi50eXBlKX0ge3NlbGYubmFt
ZX0iCisKKworY2xhc3MgY3BwX2FyZ19saXN0KG9iamVjdCk6CisgICAgYXJnczogTGlzdFtjcHBf
YXJnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3M6IExpc3RbY3BwX2FyZ10pOgorICAg
ICAgICBzZWxmLmFyZ3MgPSBhcmdzCisKKyAgICBkZWYgbmFtZXMoc2VsZik6CisgICAgICAgIHJl
dHVybiAiLCAiLmpvaW4oYS5uYW1lIGZvciBhIGluIHNlbGYuYXJncykKKworICAgIGRlZiBleHBy
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtjcHBfZXhwcihhLnR5cGUsIGEubmFtZSkgZm9yIGEg
aW4gc2VsZi5hcmdzXQorCisgICAgZGVmIGRlY2xzKHNlbGYpOgorICAgICAgICByZXR1cm4gW2Nw
cF9kZWNsKGEudHlwZSwgYS5uYW1lKSBmb3IgYSBpbiBzZWxmLmFyZ3NdCisKKyAgICBkZWYgdHlw
ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbYS50eXBlIGZvciBhIGluIHNlbGYuYXJnc10KKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiwgIi5qb2luKHN0cihhKSBm
b3IgYSBpbiBzZWxmLmFyZ3MpCisKKworY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKKyAgICBuYW1l
OiBzdHIKKyAgICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUK
KyAgICBpc19leHRlbnNpb246IGJvb2wKKyAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdz
OiBjcHBfYXJnX2xpc3QsIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgICAgIHNlbGYubmFtZSA9
IG5hbWUKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIHNl
bGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBpc19leHRlbnNpb24K
KyAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSAiIgorCisgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CisgICAgICAgIHJldHVybiBmIntzZWxmLnJldHVybl90eXBlfSB7c2VsZi5uYW1lfSh7c3Ry
KHNlbGYuYXJncyl9KSIKKworICAgIGRlZiBnZXRfYXJnc19jYXRlZ29yaWVzKHNlbGYpIC0+IFR1
cGxlW0xpc3RbY3BwX2FyZ10sIExpc3RbY3BwX2FyZ11dOgorICAgICAgICBpbl9hcmdzID0gW10K
KyAgICAgICAgb3V0X2FyZ3MgPSBbXQorICAgICAgICBmb3IgYSBpbiBzZWxmLmFyZ3MuYXJnczoK
KyAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIo
KSBvciBcCisgICAgICAgICAgICAgICAgYS50eXBlLmlzX3JlZmVyZW5jZSgpOgorICAgICAgICAg
ICAgICAgIG91dF9hcmdzICs9IFthXQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEudHlw
ZSwgY3BwX3R5cGVfY29udGFpbmVyKSBhbmQgKCgoYS50eXBlLmlzX3NwYW4oKSBvciBhLnR5cGUu
aXNfZHluYW1pY19zcGFuKCkpIGFuZCBub3QgYS50eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmlz
X2NvbnN0KCkpKToKKyAgICAgICAgICAgICAgICBvdXRfYXJncyArPSBbYV0KKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgaW5fYXJncyArPSBbYV0KKyAgICAgICAgICAgICNmbXQ6
IG9uCisgICAgICAgIHJldHVybiBpbl9hcmdzLCBvdXRfYXJncworCisgICAgZGVmIGlzX2ltcGxl
bWVudGVkX3R5cGUoc2VsZiwgdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiB0eXBlLmlzX2Nv
bnN0X3BvaW50ZXIoKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgZGVmIGlzX2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICAjIiBpbiBhLnR5
cGUudHlwZV9uYW1lIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgIyAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgI2lmICJHQ0dMc3luYyIgaW4gc2VsZi5yZXR1cm5fdHlwZS50eXBl
X25hbWU6CisgICAgICAgICMgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGFueShhLm5hbWUg
PT0gImJ1ZlNpemUiIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICBpZiBhbnkoYS50eXBlLmlzX3BvaW50ZXIoKSBhbmQgYS50eXBlLmdl
dF92YWx1ZV90eXBlKCkuaXNfdm9pZCgpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBhbnkobm90IHNlbGYuaXNfaW1wbGVtZW50
ZWRfdHlwZShhLnR5cGUpIGZvciBhIGluIHNlbGYuYXJncy5hcmdzKToKKyAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLnJldHVybl90eXBlLmlzX3BvaW50ZXIoKToKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5pc19pbXBsZW1lbnRl
ZF90eXBlKHNlbGYucmV0dXJuX3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgIHJldHVybiBUcnVlCisKKword2Via2l0X2lwY190eXBlczogRGljdFtjcHBfdHlwZSwgY3Bw
X3R5cGVdID0ge30KKword2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzOiBEaWN0W1R1cGxlW2Nw
cF90eXBlLCBjcHBfdHlwZV0sIENwcEV4cHJDb252ZXJ0ZXJdID0ge30KKworCitkZWYgd2Via2l0
X2lwY19jb252ZXJ0X2V4cHIoZXhwcjogY3BwX2V4cHIsIHR5cGU6IGNwcF90eXBlKSAtPiBjcHBf
ZXhwcjoKKyAgICAiIiIgQ29udmVydHMgYGV4cHJgIG9mIHR5cGUgb2YgYHNlbGZgIHRvIGB0eXBl
YCAiIiIKKyAgICBjb252ZXJ0ID0gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLmdldCgoZXhw
ci50eXBlLCB0eXBlKSwgTm9uZSkKKyAgICBpZiBub3QgY29udmVydDoKKyAgICAgICAgaWYgZXhw
ci50eXBlID09IHR5cGU6CisgICAgICAgICAgICByZXR1cm4gZXhwcgorICAgICAgICBjb252ZXJ0
ID0gY3BwX2ltcGxpY2l0X2Nhc3QKKyAgICByZXR1cm4gY29udmVydChleHByLCB0eXBlKQorCisK
K2RlZiB3ZWJraXRfaXBjX2dldF9zcGFuX3RyYW5zZmVyX3R5cGUodHlwZSA6IGNwcF90eXBlX2Nv
bnRhaW5lcikgLT4gY3BwX3R5cGU6CisgICAgZWxlbWVudF90eXBlID0gdHlwZS5nZXRfY29udGFp
bmVkX3R5cGUoKS5nZXRfZGVjYXlfdHlwZSgpCisgICAgYXJpdHkgPSB0eXBlLmdldF9hcml0eSgp
CisgICAgd2Via2l0X2lwY19lbGVtZW50X3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW2VsZW1lbnRf
dHlwZV0gaWYgbm90IGVsZW1lbnRfdHlwZS5pc192b2lkKCkgZWxzZSBnZXRfY3BwX3R5cGUoJ3Vp
bnQ4X3QnKQorICAgIGlmIGFyaXR5IGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2V0X2Nw
cF90eXBlKGYiSVBDOjpBcnJheVJlZmVyZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBl
KX0sIHthcml0eX0+IikKKyAgICByZXR1cm4gZ2V0X2NwcF90eXBlKGYiSVBDOjpBcnJheVJlZmVy
ZW5jZTx7c3RyKHdlYmtpdF9pcGNfZWxlbWVudF90eXBlKX0+IikKKworCisKK2RlZiB3ZWJraXRf
aXBjX2dldF9zcGFuX3N0b3JlX3R5cGUodHlwZTogY3BwX3R5cGVfY29udGFpbmVyKSAtPiBjcHBf
dHlwZToKKyAgICBlbGVtZW50X3R5cGUgPSB0eXBlLmdldF9jb250YWluZWRfdHlwZSgpLmdldF9k
ZWNheV90eXBlKCkKKyAgICBpZiBlbGVtZW50X3R5cGUuaXNfdm9pZCgpOgorICAgICAgICBlbGVt
ZW50X3R5cGUgPSBnZXRfY3BwX3R5cGUoJ0dDR0xjaGFyJykKKyAgICBpZiB0eXBlLmlzX2R5bmFt
aWNfc3BhbigpOgorICAgICAgICBpbmxpbmVfY2FwYWNpdHkgPSAxNiBpZiAiZmxvYXQiIGluIGVs
ZW1lbnRfdHlwZS50eXBlX25hbWUgZWxzZSA0CisgICAgICAgIHJldHVybiBnZXRfY3BwX3R5cGUo
ZiJWZWN0b3I8e3N0cihlbGVtZW50X3R5cGUpfSwge3N0cihpbmxpbmVfY2FwYWNpdHkpfT4iKQor
ICAgIHJldHVybiBnZXRfY3BwX3R5cGUoZiJzdGQ6OmFycmF5PHtzdHIoZWxlbWVudF90eXBlKX0s
IHtzdHIodHlwZS5nZXRfYXJpdHkoKSl9PiIpCisKK2RlZiB3ZWJraXRfaXBjX21ha2VfZ2NnbHNw
YW5fY29udmVyc2lvbihleHByIDogY3BwX2V4cHIsIHR5cGUgOiBjcHBfdHlwZV9jb250YWluZXIp
IC0+IGNwcF9leHByOgorICAgIHBvaW50ZXJfY2FzdF90eXBlID0gdHlwZS5nZXRfY29udGFpbmVk
X3R5cGUoKS5nZXRfcG9pbnRlcl90eXBlKCkKKyAgICBpZiB0eXBlLmlzX2R5bmFtaWNfc3Bhbigp
OgorICAgICAgICByZXR1cm4gY3BwX2V4cHIodHlwZSwgZiJtYWtlR0NHTFNwYW4ocmVpbnRlcnBy
ZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9LmRhdGEoKSksIHtz
dHIoZXhwcil9LnNpemUoKSkiKQorCisgICAgYXNzZXJ0KHR5cGUuaXNfc3BhbigpKQorICAgIHJl
dHVybiBjcHBfZXhwcih0eXBlLCBmIm1ha2VHQ0dMU3Bhbjx7c3RyKHR5cGUuZ2V0X2FyaXR5KCkp
fT4ocmVpbnRlcnByZXRfY2FzdDx7c3RyKHBvaW50ZXJfY2FzdF90eXBlKX0+KHtzdHIoZXhwcil9
LmRhdGEoKSkpIikKKworIyBTZWUgbWVzc2FnZXMucHkgZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUK
K3dlYmtpdF9pcGNfYnVpbHRpbl90eXBlcyA9IHNldCgKKyAgICBbInVpbnQ4X3QiLCAidWludDE2
X3QiLCAidWludDMyX3QiLCAidWludDY0X3QiLCAiaW50OF90IiwgImludDE2X3QiLCAiaW50MzJf
dCIsICJpbnQ2NF90IiwgImJvb2wiLCAiZmxvYXQiLCAiZG91YmxlIiAiYm9vbCJdCispCisKKwor
ZGVmIHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2FyZGVyX3R5cGUodHlwZTogY3BwX3R5cGUp
IC0+IGNwcF90eXBlOgorICAgIGlmIHR5cGUudHlwZV9uYW1lIGluIHdlYmtpdF9pcGNfYnVpbHRp
bl90eXBlczoKKyAgICAgICAgcmV0dXJuIHR5cGUKKyAgICByZXR1cm4gdHlwZS5nZXRfcnZhbHVl
X3R5cGUoKQorCisKK2RlZiB3ZWJraXRfaXBjX21vdmVfZXhwcihleHByOiBjcHBfZXhwcikgLT4g
Y3BwX2V4cHI6CisgICAgaWYgZXhwci50eXBlLnR5cGVfbmFtZSBpbiB3ZWJraXRfaXBjX2J1aWx0
aW5fdHlwZXM6CisgICAgICAgIHJldHVybiBleHByCisgICAgcmV0dXJuIGNwcF9tb3ZlX2V4cHIo
ZXhwcikKKworCitkZWYgd2Via2l0X2lwY19tc2dfbmFtZShmdW5jOiBjcHBfZnVuYyk6CisgICAg
cmV0dXJuIGZ1bmMubmFtZVswXS5jYXBpdGFsaXplKCkgKyBmdW5jLm5hbWVbMTpdICsgZnVuYy5v
dmVybG9hZF9zdWZmaXgKKworCitjbGFzcyB3ZWJraXRfaXBjX21zZyhvYmplY3QpOgorICAgIG5h
bWU6IHN0cgorICAgIGluX2FyZ3M6IGNwcF9hcmdfbGlzdAorICAgIG91dF9hcmdzOiBjcHBfYXJn
X2xpc3QKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jOiBjcHBfZnVuYyk6CisgICAgICAg
IHNlbGYubmFtZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoZnVuYykKKyAgICAgICAgaW5fYXJncywg
b3V0X2FyZ3MgPSBmdW5jLmdldF9hcmdzX2NhdGVnb3JpZXMoKQorICAgICAgICBpcGNfaW5fYXJn
cyA9IFtjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKSBmb3IgYSBpbiBp
bl9hcmdzXQorICAgICAgICBpcGNfb3V0X2FyZ3MgPSBbXQorICAgICAgICBpZiBub3QgZnVuYy5y
ZXR1cm5fdHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICBpcGNfb3V0X2FyZ3MgKz0gW2NwcF9h
cmcod2Via2l0X2lwY190eXBlc1tmdW5jLnJldHVybl90eXBlXSwgInJldHVyblZhbHVlIildCisg
ICAgICAgIGZvciBhIGluIG91dF9hcmdzOgorICAgICAgICAgICAgaXBjX291dF9hcmdzICs9IFtj
cHBfYXJnKHdlYmtpdF9pcGNfdHlwZXNbYS50eXBlXSwgYS5uYW1lKV0KKyAgICAgICAgICAgIGlm
IGEudHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICBpcGNfaW5fYXJncyAr
PSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIildCisg
ICAgICAgIHNlbGYuaW5fYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfaW5fYXJncykKKyAgICAgICAg
c2VsZi5vdXRfYXJncyA9IGNwcF9hcmdfbGlzdChpcGNfb3V0X2FyZ3MpCisKKyAgICBkZWYgX19z
dHJfXyhzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYub3V0X2FyZ3MuYXJncyk6CisgICAgICAg
ICAgICByZXR1cm4gZiJcbiAgICB2b2lkIHtzZWxmLm5hbWV9KHtzdHIoc2VsZi5pbl9hcmdzKX0p
IC0+ICh7c3RyKHNlbGYub3V0X2FyZ3MpfSkgU3luY2hyb25vdXMiCisgICAgICAgIHJldHVybiBm
IlxuICAgIHZvaWQge3NlbGYubmFtZX0oe3N0cihzZWxmLmluX2FyZ3MpfSkiCisKKworY2xhc3Mg
d2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIG1z
Z19uYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAgICBhcmdzOiBjcHBfYXJn
X2xpc3QKKworICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBM
aXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQorICAgIHJldHVybl9zdG10
czogTGlzdFtzdHJdCisgICAgaW5fZXhwcnM6IExpc3RbY3BwX2V4cHJdCisgICAgb3V0X2V4cHJz
OiBMaXN0W2NwcF9leHByXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNwcF9mdW5jOiBjcHBf
ZnVuYyk6CisgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5hbWUKKyAgICAgICAgc2VsZi5t
c2dfbmFtZSA9IHdlYmtpdF9pcGNfbXNnX25hbWUoY3BwX2Z1bmMpCisgICAgICAgIHNlbGYucmV0
dXJuX3R5cGUgPSBjcHBfZnVuYy5yZXR1cm5fdHlwZQorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBf
ZnVuYy5hcmdzCisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxm
LmNhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAg
ICAgIHNlbGYucmV0dXJuX3N0bXRzID0gW10KKyAgICAgICAgc2VsZi5pbl9leHBycyA9IFtdCisg
ICAgICAgIHNlbGYub3V0X2V4cHJzID0gW10KKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBj
cHBfZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVy
bl92YWx1ZShjcHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2luX2Fy
Z3MoaW5fYXJncykKKyAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmdzKG91dF9hcmdzKQorICAg
ICAgICBzZWxmLnByb2Nlc3NfY2FsbCgpCisKKyAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgor
ICAgICAgICBpbl9leHBycyA9ICIsICIuam9pbihbc3RyKGkpIGZvciBpIGluIHNlbGYuaW5fZXhw
cnNdKQorICAgICAgICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIHNlbGYu
b3V0X2V4cHJzKQorICAgICAgICBpc19hc3luYyA9IHNlbGYucmV0dXJuX3R5cGUuaXNfdm9pZCgp
IGFuZCBsZW4ob3V0X2V4cHJzKSA9PSAwCisgICAgICAgIGlmIGlzX2FzeW5jOgorICAgICAgICAg
ICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsiLAorICAgICAgICAgICAgXQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiIgorICAgICAgICAgICAgaWYgc2VsZi5w
b3N0X2NhbGxfc3RtdHM6IAorICAgICAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gImF1dG8gc2Vu
ZFJlc3VsdCA9ICIKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFsKKyAg
ICAgICAgICAgICAgICAgICAgImlmIChzZW5kUmVzdWx0KSIgKyAoIiB7IiBpZiBsZW4oc2VsZi5w
b3N0X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQorICAgICAgICAgICAgICAgIF0gKyBbIiAgICAi
ICsgcyBmb3IgcyBpbiBzZWxmLnBvc3RfY2FsbF9zdG10c10gKyBbCisgICAgICAgICAgICAgICAg
ICAgICgifSIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAg
ICAgICAgIGYie3NlbmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9leHByc30pLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7IiwKKyAgICAgICAgICAgIF0KKworCisg
ICAgZGVmIHByb2Nlc3NfaW5fYXJncyhzZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToKKyAg
ICAgICAgZm9yIGkgaW4gaW5fYXJnczoKKyAgICAgICAgICAgIGlmIGkudHlwZS5pc19jb25zdF9w
b2ludGVyKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW3dlYmtpdF9pcGNfY29udmVydF9l
eHByKGNwcF9leHByKGkudHlwZSwgaS5uYW1lKSwgd2Via2l0X2lwY190eXBlc1tpLnR5cGVdKV0K
KworICAgIGRlZiBwcm9jZXNzX291dF9hcmdzKHNlbGYsIG91dF9hcmdzOiBMaXN0W2NwcF9hcmdd
KToKKyAgICAgICAgZm9yIG8gaW4gb3V0X2FyZ3M6CisgICAgICAgICAgICBpZiBvLnR5cGUuaXNf
cG9pbnRlcigpOgorICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgPSBvLnR5cGUuZ2V0X3ZhbHVl
X3R5cGUoKQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdmFsdWVfdHlwZSA9IHdlYmtpdF9p
cGNfdHlwZXNbdmFsdWVfdHlwZV0KKyAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRf
aXBjX3ZhbHVlX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCisgICAgICAgICAgICAgICAgc2VsZi5w
cmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0gPSB7eyB9fTsi
XQorICAgICAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2LnR5cGUsIHYubmFtZSkKKyAgICAgICAg
ICAgICAgICBzZWxmLm91dF9leHBycyArPSBbZV0KKyAgICAgICAgICAgICAgICBzZWxmLnBvc3Rf
Y2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9mZgorICAgICAgICAg
ICAgICAgICAgICBmImlmICh7by5uYW1lfSkiLAorICAgICAgICAgICAgICAgICAgICBmIiAgICAq
e28ubmFtZX0gPSB7d2Via2l0X2lwY19jb252ZXJ0X2V4cHIoZSwgdmFsdWVfdHlwZSl9OyIKKyAg
ICAgICAgICAgICAgICAgICAgI2ZtdDogb24KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICBlbGlmIG8udHlwZS5pc19zcGFuKCk6CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBl
ID0gd2Via2l0X2lwY190eXBlc1tvLnR5cGVdCisgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5z
dGFuY2Uod2Via2l0X2lwY190eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQorICAgICAgICAgICAg
ICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKKyAgICAg
ICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2
Lm5hbWUpfTsiXQorICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2
LnR5cGUsIHYubmFtZSldCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3Bh
bigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRf
Y3BwX3R5cGUoInNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KKyAgICAgICAgICAgICAg
ICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgICAgIGYibWVtY3B5
KHtvLm5hbWV9LmRhdGEsIHt2Lm5hbWV9LmRhdGEoKSwge28ubmFtZX0uYnVmU2l6ZSAqIHNpemVv
Zih7c3RyKHdlYmtpdF9pcGNfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKSl9KSk7IgorICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5vdXRf
ZXhwcnMgKz0gW2NwcF9leHByKG8udHlwZSwgby5uYW1lKV0KKworICAgIGRlZiBwcm9jZXNzX3Jl
dHVybl92YWx1ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1
cm5fdHlwZS5pc192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5yZXR1
cm5fdHlwZSA9IHJldHVybl90eXBlCisgICAgICAgIGlwY19yZXR1cm5fdHlwZSA9IHdlYmtpdF9p
cGNfdHlwZXNbcmV0dXJuX3R5cGVdCisgICAgICAgIHJldHVybl92YWx1ZV9leHByID0gY3BwX2V4
cHIoaXBjX3JldHVybl90eXBlLCAicmV0dXJuVmFsdWUiKQorICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzICs9IFtmIntyZXR1cm5fdmFsdWVfZXhwci50eXBlfSB7cmV0dXJuX3ZhbHVlX2V4cHIu
ZXhwcn0gPSB7eyB9fTsiXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtyZXR1cm5fdmFsdWVf
ZXhwcl0gKyBzZWxmLm91dF9leHBycworICAgICAgICBzZWxmLnJldHVybl9zdG10cyA9IFtmInJl
dHVybiB7c3RyKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHByLCByZXR1
cm5fdHlwZSkpfTsiXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5vbGludCA9
ICIgLy8gTk9MSU5UIiBpZiAiXyIgaW4gc2VsZi5uYW1lIGVsc2UgIiIKKyAgICAgICAgYm9keSA9
ICIiLmpvaW4oZiJcbiAgICB7Yn0iIGZvciBiIGluIHNlbGYucHJlX2NhbGxfc3RtdHMgKyBzZWxm
LmNhbGxfc3RtdHMgKyBzZWxmLnBvc3RfY2FsbF9zdG10cyArIHNlbGYucmV0dXJuX3N0bXRzKQor
ICAgICAgICByZXR1cm4gZiIiIlxue3N0cihzZWxmLnJldHVybl90eXBlKX0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6e3NlbGYubmFtZX0oe3N0cihzZWxmLmFyZ3MpfSl7bm9saW50fQor
e3t7Ym9keX0KK319IiIiCisKKworY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xk
ZXIob2JqZWN0KToKKyAgICBuYW1lOiBzdHIKKyAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKKyAg
ICBhcmdzOiBjcHBfYXJnX2xpc3QKKyAgICBib2R5OiBMaXN0W3N0cl0KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBjcHBfZnVuYzogY3BwX2Z1bmMpOgorICAgICAgICBzZWxmLm5hbWUgPSBjcHBf
ZnVuYy5uYW1lCisKKyAgICAgICAgc2VsZi5yZXR1cm5fdHlwZSA9IGNwcF9mdW5jLnJldHVybl90
eXBlCisgICAgICAgIHNlbGYuYXJncyA9IGNwcF9mdW5jLmFyZ3MKKyAgICAgICAgc2VsZi5ib2R5
ID0gWyJub3RJbXBsZW1lbnRlZCgpOyJdCisgICAgICAgIGlmIGNwcF9mdW5jLnJldHVybl90eXBl
LnR5cGVfbmFtZSAhPSAidm9pZCI6CisgICAgICAgICAgICBzZWxmLmJvZHkgKz0gWyJyZXR1cm4g
eyB9OyJdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbm9saW50ID0gIiAvLyBO
T0xJTlQiIGlmICJfIiBpbiBzZWxmLm5hbWUgZWxzZSAiIgorICAgICAgICBib2R5ID0gIlxue1xu
ICAgICIgKyAiXG4gICAgIi5qb2luKHNlbGYuYm9keSkgKyAiXG59IgorICAgICAgICByZXR1cm4g
ZiJcbntzdHIoc2VsZi5yZXR1cm5fdHlwZSl9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OntzZWxmLm5hbWV9KHtzdHIoc2VsZi5hcmdzKX0pe25vbGludH17Ym9keX0iCisKKworY2xhc3Mg
Y29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Iob2JqZWN0KToKKyAgICAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBDKysgaW1wbGVtZW50YXRpb24gZ2VuZXJhdG9yLiIK
KyAgICBpbXBsczogTGlzdFt3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsXQorICAgIHVuaW1wbHM6
IExpc3Rbd2Via2l0X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXJdCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5jXSwgdW5pbXBsZW1lbnRlZDogSXRlcmFi
bGVbY3BwX2Z1bmNdKToKKyAgICAgICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9wcm94
eV9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQorICAgICAgICBzZWxmLnVuaW1wbHMgPSBbd2Via2l0
X2lwY19jcHBfcHJveHlfcGxhY2Vob2xkZXIoZikgZm9yIGYgaW4gdW5pbXBsZW1lbnRlZF0KKwor
ICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0
cihpKSBmb3IgaSBpbiBzZWxmLmltcGxzICsgc2VsZi51bmltcGxzKQorCisgICAgZGVmIGdlbmVy
YXRlKHNlbGYpOgorICAgICAgICB3cml0ZV9maWxlKAorICAgICAgICAgICAgY29udGV4dF9wcm94
eV9mdW5jdGlvbnNfZm4sCisgICAgICAgICAgICBjb250ZXh0X3Byb3h5X2Z1bmN0aW9uc190ZW1w
bGF0ZS5mb3JtYXQoc2VsZi5nZXRfZnVuY3Rpb25zKCkpLAorICAgICAgICApCisKKworY2xhc3Mg
d2Via2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgorICAgIG5hbWU6IHN0cgorICAgIGFyZ3M6IGNw
cF9hcmdfbGlzdAorICAgIGlzX2V4dGVuc2lvbjogYm9vbAorICAgIHByZV9jYWxsX3N0bXRzOiBM
aXN0W3N0cl0KKyAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KKyAgICBwb3N0X2NhbGxfc3RtdHM6
IExpc3Rbc3RyXQorICAgIGluX2V4cHJzOiBMaXN0W2NwcF9leHByXQorICAgIG91dF9leHByczog
TGlzdFtjcHBfZXhwcl0KKyAgICByZXR1cm5fdmFsdWVfZXhwcjogT3B0aW9uYWxbY3BwX2V4cHJd
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3BwX2Z1bmM6IGNwcF9mdW5jKToKKyAgICAgICAg
c2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQorICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9
IGNwcF9mdW5jLm92ZXJsb2FkX3N1ZmZpeAorICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xp
c3QoW10pCisgICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9u
CisgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxfc3Rt
dHMgPSBbXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCisgICAgICAgIHNlbGYu
aW5fZXhwcnMgPSBbXQorICAgICAgICBzZWxmLm91dF9leHBycyA9IFtdCisgICAgICAgIHNlbGYu
cmV0dXJuX3ZhbHVlX2V4cHIgPSBOb25lCisKKyAgICAgICAgc2VsZi5wcm9jZXNzX3JldHVybl92
YWx1ZShjcHBfZnVuYy5yZXR1cm5fdHlwZSkKKyAgICAgICAgaW5fYXJncywgb3V0X2FyZ3MgPSBj
cHBfZnVuYy5nZXRfYXJnc19jYXRlZ29yaWVzKCkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2FyZ3Mo
Y3BwX2Z1bmMuYXJncy5hcmdzLCBzZXQoaW5fYXJncyksIHNldChvdXRfYXJncykpCisgICAgICAg
IHNlbGYucHJvY2Vzc19jYWxsKCkKKworICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CisgICAg
ICAgIGV4dCA9ICJnZXRFeHRlbnNpb25zKCkuIiBpZiBzZWxmLmlzX2V4dGVuc2lvbiBlbHNlICIi
CisKKyAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYuaW5f
ZXhwcnMpCisgICAgICAgIGlzX2FzeW5jID0gbGVuKHNlbGYub3V0X2V4cHJzKSA9PSAwCisKKyAg
ICAgICAgY2FsbF9leHByID0gZiJtX2NvbnRleHQtPntleHR9e3NlbGYubmFtZX0oe2luX2V4cHJz
fSkiCisgICAgICAgIGlmIG5vdCBzZWxmLnJldHVybl92YWx1ZV9leHByOgorICAgICAgICAgICAg
c2VsZi5jYWxsX3N0bXRzICs9IFtmIntjYWxsX2V4cHJ9OyJdCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yie3N0cihzZWxmLnJldHVybl92YWx1ZV9leHBy
KX0gPSB7Y2FsbF9leHByfTsiXQorICAgICAgICBpZiBub3QgaXNfYXN5bmM6CisgICAgICAgICAg
ICBvdXRfZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGluIHNlbGYub3V0X2V4cHJzKQor
ICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gW2YiY29tcGxldGlvbkhhbmRsZXIo
e291dF9leHByc30pOyJdCisKKyAgICBkZWYgcHJvY2Vzc19hcmdzKHNlbGYsIGFyZ3M6IExpc3Rb
Y3BwX2FyZ10sIGluX2FyZ3M6IFNldFtjcHBfYXJnXSwgb3V0X2FyZ3M6IFNldFtjcHBfYXJnXSk6
CisgICAgICAgIGZvciBhIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhLnR5cGUuaXNfY29uc3Rf
cG9pbnRlcigpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAgICAgaWYg
YSBpbiBpbl9hcmdzOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19pbl9hcmcoYSkKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX291dF9hcmcoYSkK
KyAgICAgICAgaWYgc2VsZi5vdXRfZXhwcnM6CisgICAgICAgICAgICBvdXRfYXJnX2RlY2xzID0g
IiwgIi5qb2luKGYie3N0cihlLnR5cGUpfSIgZm9yIGUgaW4gc2VsZi5vdXRfZXhwcnMpCisgICAg
ICAgICAgICBzZWxmLmFyZ3MuYXJncyArPSBbY3BwX2FyZyhnZXRfY3BwX3R5cGUoZiJDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHtvdXRfYXJnX2RlY2xzfSk+JiYiKSwgImNvbXBsZXRpb25IYW5kbGVy
IildCisKKyAgICBkZWYgcHJvY2Vzc19pbl9hcmcoc2VsZiwgYTogY3BwX2FyZyk6CisgICAgICAg
IHNlbGYuYXJncy5hcmdzICs9IFtjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X21lc3NhZ2VfZm9yd2Fy
ZGVyX3R5cGUod2Via2l0X2lwY190eXBlc1thLnR5cGVdKSwgYS5uYW1lKV0KKyAgICAgICAgc2Vs
Zi5pbl9leHBycyArPSBbd2Via2l0X2lwY19jb252ZXJ0X2V4cHIoY3BwX2V4cHIod2Via2l0X2lw
Y190eXBlc1thLnR5cGVdLCBhLm5hbWUpLCBhLnR5cGUpXQorCisgICAgZGVmIHByb2Nlc3Nfb3V0
X2FyZyhzZWxmLCBhOiBjcHBfYXJnKToKKyAgICAgICAgaWYgYS50eXBlLmlzX3BvaW50ZXIoKToK
KyAgICAgICAgICAgIHZhbHVlX2FyZyA9IGNwcF9hcmcoYS50eXBlLmdldF92YWx1ZV90eXBlKCks
IGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2YWx1
ZV9hcmcudHlwZSl9IHtzdHIodmFsdWVfYXJnLm5hbWUpfSA9IHt7IH19OyJdCisgICAgICAgICAg
ICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihhLnR5cGUsIGYiJnt2YWx1ZV9hcmcubmFtZX0i
KV0KKyAgICAgICAgICAgIGUgPSBjcHBfZXhwcih2YWx1ZV9hcmcudHlwZSwgdmFsdWVfYXJnLm5h
bWUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVz
W2UudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX2NvbnZl
cnRfZXhwcihlLCB3ZWJraXRfaXBjX3ZhbHVlX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5p
c19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGEudHlwZSwg
Y3BwX3R5cGVfY29udGFpbmVyKSkKKyAgICAgICAgICAgIHNpemVfYXJnID0gY3BwX2FyZyhnZXRf
Y3BwX3R5cGUoInVpbnQ2NF90IiksIGYie2EubmFtZX1TaXplIikKKyAgICAgICAgICAgIHNlbGYu
YXJncy5hcmdzICs9IFtzaXplX2FyZ10KKyAgICAgICAgICAgIHN0b3JlX2FyZyA9IGNwcF9hcmco
d2Via2l0X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGEudHlwZSksIGEubmFtZSkKKyAgICAgICAg
ICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cihzdG9yZV9hcmcudHlwZSl9IHtzdHIo
c3RvcmVfYXJnLm5hbWUpfShzdGF0aWNfY2FzdDxzaXplX3Q+KHthLm5hbWV9U2l6ZSksIDApOyJd
CisgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwg
ZiJ7c3RvcmVfYXJnLm5hbWV9IildCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJr
aXRfaXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJr
aXRfaXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5h
bWUpLCB3ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbGlmIGEudHlwZS5pc19zcGFuKCk6Cisg
ICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShhLnR5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikp
CisgICAgICAgICAgICBzdG9yZV9hcmcgPSBjcHBfYXJnKHdlYmtpdF9pcGNfZ2V0X3NwYW5fc3Rv
cmVfdHlwZShhLnR5cGUpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRz
ICs9IFtmIntzdHIoc3RvcmVfYXJnLnR5cGUpfSB7c3RyKHN0b3JlX2FyZy5uYW1lKX0ge3sgfX07
Il0KKyAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKHN0b3JlX2FyZy50eXBl
LCBzdG9yZV9hcmcubmFtZSldCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRf
aXBjX3R5cGVzW2EudHlwZV0KKyAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRf
aXBjX2NvbnZlcnRfZXhwcihjcHBfZXhwcihzdG9yZV9hcmcudHlwZSwgc3RvcmVfYXJnLm5hbWUp
LCB3ZWJraXRfaXBjX3R5cGUpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGEu
dHlwZS5pc19yZWZlcmVuY2UoKQorICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0
X2lwY190eXBlc1thLnR5cGVdCisgICAgICAgICAgICB2YWx1ZV9hcmcgPSBjcHBfYXJnKGEudHlw
ZS5nZXRfdmFsdWVfdHlwZSgpLCBhLm5hbWUpCisgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0
bXRzICs9IFtmIntzZWxmLm5zKHZhbHVlX2FyZy50eXBlKX0ge3N0cih2YWx1ZV9hcmcubmFtZSl9
IHt7IH19OyJdCisgICAgICAgICAgICBlID0gY3BwX2V4cHIodmFsdWVfYXJnLnR5cGUsIHZhbHVl
X2FyZy5uYW1lKQorICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbZV0KKyAgICAgICAgICAg
IHNlbGYub3V0X2V4cHJzICs9IFt3ZWJraXRfaXBjX21vdmVfZXhwcih3ZWJraXRfaXBjX2NvbnZl
cnRfZXhwcihlLCB3ZWJraXRfaXBjX3R5cGUpKV0KKworICAgIGRlZiBwcm9jZXNzX3JldHVybl92
YWx1ZShzZWxmLCByZXR1cm5fdHlwZTogY3BwX3R5cGUpOgorICAgICAgICBpZiByZXR1cm5fdHlw
ZS5pc192b2lkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaXBjX3JldHVybl90eXBl
ID0gd2Via2l0X2lwY190eXBlc1tyZXR1cm5fdHlwZV0KKyAgICAgICAgcmV0dXJuX3ZhbHVlX2V4
cHIgPSBjcHBfZXhwcihyZXR1cm5fdHlwZSwgInJldHVyblZhbHVlIikKKyAgICAgICAgc2VsZi5w
cmVfY2FsbF9zdG10cyArPSBbZiJ7cmV0dXJuX3ZhbHVlX2V4cHIudHlwZX0ge3JldHVybl92YWx1
ZV9leHByLmV4cHJ9ID0ge3sgfX07Il0KKyAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW3dlYmtp
dF9pcGNfbW92ZV9leHByKHdlYmtpdF9pcGNfY29udmVydF9leHByKHJldHVybl92YWx1ZV9leHBy
LCBpcGNfcmV0dXJuX3R5cGUpKV0KKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVfZXhwciA9IHJl
dHVybl92YWx1ZV9leHByCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgYm9keSA9
ICIiLmpvaW4oZiJcbiAgICAgICAge2J9IiBmb3IgYiBpbiBzZWxmLnByZV9jYWxsX3N0bXRzICsg
c2VsZi5jYWxsX3N0bXRzICsgc2VsZi5wb3N0X2NhbGxfc3RtdHMpCisgICAgICAgIHJldHVybiBm
IiIiICAgIHZvaWQge3NlbGYubmFtZX17c2VsZi5vdmVybG9hZF9zdWZmaXh9KHtzdHIoc2VsZi5h
cmdzKX0pCisgICAge3t7Ym9keX0KKyAgICB9fSIiIgorCisgICAgZGVmIG5zKHNlbGYsIHR5cGU6
IGNwcF90eXBlKToKKyAgICAgICAgIyBUT0RPOiBuYW1lc3BhY2UgaW5mbyBpcyBub3Qgc3RvcmVk
IGluIG5hbWVzLgorICAgICAgICBpZiB0eXBlLnR5cGVfbmFtZSA9PSAiQWN0aXZlSW5mbyI6Cisg
ICAgICAgICAgICByZXR1cm4gIldlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjoiICsgc3RyKHR5
cGUpCisgICAgICAgIHJldHVybiBzdHIodHlwZSkKKworZGVmIHdlYmtpdF9pcGNfcmVzb2x2ZV9v
dmVybG9hZF9zdWZmaXgoZnVuY3MgOiBJdGVyYWJsZVtjcHBfZnVuY10pOgorICAgIGNvdW50cyA9
IGNvbGxlY3Rpb25zLkNvdW50ZXIoZi5uYW1lIGZvciBmIGluIGZ1bmNzKQorICAgIHN1ZmZpeGVz
IDogQ291bnRlcltzdHJdID0gY29sbGVjdGlvbnMuQ291bnRlcigpCisgICAgZm9yIGYgaW4gZnVu
Y3M6CisgICAgICAgIGlmIGNvdW50c1tmLm5hbWVdID4gMToKKyAgICAgICAgICAgIGYub3Zlcmxv
YWRfc3VmZml4ID0gc3RyKHN1ZmZpeGVzW2YubmFtZV0pCisgICAgICAgICAgICBzdWZmaXhlcy51
cGRhdGUoW2YubmFtZV0pCisKKworY2xhc3MgY29udGV4dF9jcHBfd2Via2l0X2lwY19nZW5lcmF0
b3Iob2JqZWN0KToKKyAgICAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgQysrIGltcGxlbWVudGF0
aW9uIGdlbmVyYXRvci4iCisgICAgaW1wbHM6IExpc3Rbd2Via2l0X2lwY19jcHBfaW1wbF0KKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jczogSXRlcmFibGVbY3BwX2Z1bmNdKToKKyAgICAg
ICAgc2VsZi5pbXBscyA9IFt3ZWJraXRfaXBjX2NwcF9pbXBsKGYpIGZvciBmIGluIGZ1bmNzXQor
CisgICAgZGVmIGdldF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiXG4iLmpvaW4o
c3RyKGkpIGZvciBpIGluIHNlbGYuaW1wbHMpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6Cisg
ICAgICAgIHdyaXRlX2ZpbGUoCisgICAgICAgICAgICBjb250ZXh0X2Z1bmN0aW9uc19mbiwKKyAg
ICAgICAgICAgIGNvbnRleHRfZnVuY3Rpb25zX3RlbXBsYXRlLmZvcm1hdChzZWxmLmdldF9mdW5j
dGlvbnMoKSksCisgICAgICAgICkKKworCitjbGFzcyBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dl
bmVyYXRvcihvYmplY3QpOgorICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBXZWJLaXQgSVBD
IG1lc3NhZ2UgZGVmaW5pdGlvbiBnZW5lcmF0b3IuIgorICAgIG1zZ3M6IExpc3Rbd2Via2l0X2lw
Y19tc2ddCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3M6IEl0ZXJhYmxlW2NwcF9mdW5j
XSk6CisgICAgICAgIHNlbGYubXNncyA9IFt3ZWJraXRfaXBjX21zZyhmKSBmb3IgZiBpbiBmdW5j
c10KKworICAgIGRlZiBnZXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHJldHVybiAiIi5qb2lu
KHN0cihtKSBmb3IgbSBpbiBzZWxmLm1zZ3MpCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZik6Cisg
ICAgICAgIHdyaXRlX2ZpbGUoY29udGV4dF9tZXNzYWdlc19mbiwgY29udGV4dF9tZXNzYWdlc190
ZW1wbGF0ZS5mb3JtYXQoc2VsZi5nZXRfbWVzc2FnZXMoKSkpCisKKworZGVmIGNyZWF0ZV9jcHBf
YXJnKGFyZ19zcGVjOiBzdHIsIGFyZ19pbmRleDogaW50KToKKyAgICByID0gYXJnX3NwZWMucnNw
bGl0KCIgIiwgMSkKKyAgICBuYW1lID0gIiIKKyAgICB0eXBlID0gTm9uZQorICAgIGlmIGxlbihy
KSA+IDEgYW5kIHJbMF0gIT0gImNvbnN0IjoKKyAgICAgICAgbmFtZSA9IHJbMV0uc3RyaXAoKQor
ICAgICAgICB0eXBlID0gZ2V0X2NwcF90eXBlKHJbMF0pCisgICAgZWxzZToKKyAgICAgICAgbmFt
ZSA9ICJhcmd7fSIuZm9ybWF0KGFyZ19pbmRleCkKKyAgICAgICAgdHlwZSA9IGdldF9jcHBfdHlw
ZShhcmdfc3BlYykKKyAgICByZXR1cm4gY3BwX2FyZyh0eXBlLCBuYW1lKQorCisKK2RlZiBjcmVh
dGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgorICAgIHJldHVybiBj
cHBfYXJnX2xpc3QoW2NyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3Ig
aSwgZSBpbiBlbnVtZXJhdGUoYXJnc19zcGVjcyldKQorCisKK2RlZiBjcmVhdGVfY3BwX2Z1bmMo
bmFtZTogc3RyLCByZXR1cm5fc3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4
dGVuc2lvbjogYm9vbCk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5
cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFy
Z3Nfc3BlY3MpLCBpc19leHRlbnNpb249aXNfZXh0ZW5zaW9uKQorCisKK2RlZiByZWFkX2xpbmVz
X3VudGlsKGxpbmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltz
dHIsIE5vbmUsIE5vbmVdOgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBpZiByZS5t
YXRjaChtYXRjaCwgbGluZS5zdHJpcCgpKToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHlp
ZWxkIGxpbmUKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBh
cnNlcigidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgi
LS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUHJpbnQgc29tZSBkZWJ1ZyBp
bmZvIGZyb20gdGhlIGdlbmVyYXRvciBzY3JpcHQiKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFy
c2VfYXJncygpCisKKyAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVt
b3RlIGZyb20gd2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCisKKyAgICAjIEZJWE1FOiBVbnRp
bCBleHRlbnNpb25zIGhlYWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUgdGhl
IGltcGxlbWVudGF0aW9uCisgICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVyIGEg
ZnVuY3Rpb24gaXMgb3IgaXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4KKyAgICBleHRlbnNp
b25fc2lnbmF0dXJlcyA6IFNldFtzdHJdID0gc2V0KCkKKyAgICB3aXRoIG9wZW4oZXh0ZW5zaW9u
c19pbnB1dF9mbikgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAg
ICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkg
PSAwOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBj
cmVhdGVfY3BwX2Z1bmMoCisgICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgYXJnc19z
cGVjcz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKKyAgICAgICAgICAgICAgICAgICAgaXNf
ZXh0ZW5zaW9uPVRydWUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGV4dGVu
c2lvbl9zaWduYXR1cmVzLnVwZGF0ZShbc3RyKGZ1bmMpXSkKKyAgICBmdW5jcyA9IFtdCisgICAg
dW5pbXBsZW1lbnRlZCA9IFtdCisgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6Cisg
ICAgICAgIHdpdGggb3BlbihmbikgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gaXRlcihmLnJl
YWRsaW5lcygpKQorICAgICAgICAgICAgZm9yIF8gaW4gcmVhZF9saW5lc191bnRpbChsaW5lcywg
Ii8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3Qg
aXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4iKToKKyAgICAgICAgICAgICAg
ICBwYXNzCisKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMs
ICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgor
ICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIlxzKihcUyspXHMrKFx3KylcKCguKilcKSBm
aW5hbDsiLCBsaW5lKQorICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAg
IGZ1bmNfbmFtZSA9IG1bMl0KKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBf
ZnVuYygKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVuY19uYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBpc19leHRlbnNpb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgZnVuYy5pc19leHRlbnNpb24gPSBzdHIoZnVuYykgaW4gZXh0ZW5zaW9u
X3NpZ25hdHVyZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgZnVuYy5pc19pbXBsZW1lbnRlZCgp
OgorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKGZ1bmMpCisgICAgICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmltcGxlbWVudGVkLmFw
cGVuZChmdW5jKQorCisKKyAgICB3ZWJraXRfaXBjX3Jlc29sdmVfb3ZlcmxvYWRfc3VmZml4KGZ1
bmNzKQorICAgICMgSW5pdGlhbGl6ZSBXZWJLaXQgSVBDIGdlbmVyYXRpb24uIENvbnN0cnVjdCB0
eXBlIG1hcHBpbmdzIGZvciB0aGUgdXNlZCBDKysgdHlwZXMgLT4gSVBDIHR5cGVzLgorICAgICMg
VE9ETzogbmFtZXNwYWNpbmcgaXNzdWVzLgorICAgIGFpX3R5cGUgPSBnZXRfY3BwX3R5cGUoIkFj
dGl2ZUluZm8mIikKKyAgICBhaV90cmFuc2Zlcl90eXBlID0gZ2V0X2NwcF90eXBlKCJXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyIpCisgICAgd2Via2l0X2lwY190eXBlc1th
aV90eXBlXSA9IGFpX3RyYW5zZmVyX3R5cGUKKworICAgIHdpdGggb3Blbih0eXBlc19pbnB1dF9m
bikgYXMgZjoKKyAgICAgICAgbGluZXMgPSBpdGVyKGYucmVhZGxpbmVzKCkpCisgICAgICAgIGZv
ciBfIGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8g
Zm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUt
Z3B1cC13ZWJnbCBzY3JpcHQuIik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBsaW5l
IGluIHJlYWRfbGluZXNfdW50aWwobGluZXMsICIvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVy
YXRlLWdwdXAtd2ViZ2wgc2NyaXB0LiIpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLipz
dGF0aWNfYXNzZXJ0XChzdGQ6OmlzX3NhbWVfdjwoXHcrKSwgKFx3Kyk+XCk7IiwgbGluZSkKKyAg
ICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tnZXRfY3Bw
X3R5cGUobVsxXSldID0gZ2V0X2NwcF90eXBlKG1bMl0pCisgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgo
XHcrKVwpID09IHNpemVvZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgor
ICAgICAgICAgICAgICAgIGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAg
ICAgICAgaXBjX3R5cGUgPSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0
X2lwY190eXBlc19jb252ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNf
Y2FzdAorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5
cGUsIGNwcF90eXBlKV0gPSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgIyBGSVhNRTogSGVyZSB3ZSB1c2UgPD0gaW5zdGVhZCBvZiA9PSBkdWUg
dG8gcG9pbnRlcnMsIHN1Y2ggYXMgR0NHTHN5bmMsIEdDR0xpbnRwdHIsIC4uLi4KKyAgICAgICAg
ICAgICMgVGhpcyBlbmRzIHVwIGZhaWxpbmcgaWYgdGhlcmUgZXZlciBpcyBhcnJheXMgb2YgdGhl
c2UgdHlwZXMsIHNpbmNlIGFycmF5cyBhcmUgY3VycmVudGx5CisgICAgICAgICAgICAjIHJlaW50
ZXJwcmV0LWNhc3RlZC4KKyAgICAgICAgICAgICMgV2ViS2l0IElQQyByZXF1aXJlcyBvbmUgc2l6
ZWQgdHlwZSwgYnV0IHRoZSBzaXplIG9mIHRoZXNlIHBvaW50ZXItYmFzZWQgdmFsdWVzIHdpbGwg
Y2hhbmdlCisgICAgICAgICAgICAjIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgICAg
IG0gPSByZS5tYXRjaChyIi4qc3RhdGljX2Fzc2VydFwoc2l6ZW9mXCgoXHcrKVwpIDw9IHNpemVv
ZlwoKFx3KylcKVwpOyIsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAg
IGNwcF90eXBlID0gZ2V0X2NwcF90eXBlKG1bMV0pCisgICAgICAgICAgICAgICAgaXBjX3R5cGUg
PSBnZXRfY3BwX3R5cGUobVsyXSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2Nw
cF90eXBlXSA9IGlwY190eXBlCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19jb252
ZXJ0ZXJzWyhjcHBfdHlwZSwgaXBjX3R5cGUpXSA9IGNwcF9zdGF0aWNfY2FzdAorICAgICAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soaXBjX3R5cGUsIGNwcF90eXBlKV0g
PSBjcHBfc3RhdGljX2Nhc3QKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
bSA9IHJlLm1hdGNoKHIiLipzdGF0aWNfYXNzZXJ0XChzaXplb2ZcKChcdyspXCkgPD0gc2l6ZW9m
XCgoXHcrKVwpICYmIHNpemVvZlwoKFx3KylcKSA9PSBzaXplb2ZcKChcdyspXClcKTsiLCBsaW5l
KQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjcHBfdHlwZSA9IGdldF9jcHBf
dHlwZShtWzFdKQorICAgICAgICAgICAgICAgIGlwY190eXBlID0gZ2V0X2NwcF90eXBlKG1bMl0p
CisgICAgICAgICAgICAgICAgY3BwX2Nhc3RfdGhyb3VnaF90eXBlID0gZ2V0X2NwcF90eXBlKG1b
NF0pCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBpcGNfdHlw
ZQorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZXNfY29udmVydGVyc1soY3BwX3R5cGUs
IGlwY190eXBlKV0gPSBjcHBfcmVpbnRlcnByZXRfY2FzdF9mcm9tX3BvaW50ZXJfdGhyb3VnaChj
cHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlc19j
b252ZXJ0ZXJzWyhpcGNfdHlwZSwgY3BwX3R5cGUpXSA9IGNwcF9yZWludGVycHJldF9jYXN0X3Rv
X3BvaW50ZXJfdGhyb3VnaChjcHBfY2FzdF90aHJvdWdoX3R5cGUpCisgICAgICAgICAgICAgICAg
Y29udGludWUKKworICAgICMgRm9yIGFsbCB0eXBlcyBpbiB0aGUgaW5wdXQgQVBJLCBmb3JtIGNv
cnJlc3BvbmRpbmcgSVBDIHR5cGVzIGFuZCBjb252ZXJzaW9ucy4KKyAgICAjIFRPRE86IHRoaXMg
aXMgbm90IGRyaXZlbiBieSB0aGUgdHlwaW5nLgorICAgIGFsbF90eXBlcyA9IHNldCgpCisgICAg
Zm9yIGZ1bmMgaW4gZnVuY3M6CisgICAgICAgYWxsX3R5cGVzLnVwZGF0ZShmdW5jLmFyZ3MudHlw
ZXMoKSArIFtmdW5jLnJldHVybl90eXBlXSkKKyAgICAjIFNvcnQgYnkgbGVuIHNvIHRoYXQgdGVt
cGxhdGUgYXJncyBjb21lIGJlZm9yZSB0ZW1wbGF0ZXMuCisgICAgZm9yIGNwcF90eXBlIGluIHNv
cnRlZChhbGxfdHlwZXMsIGtleT1sYW1iZGEgeDogbGVuKHgudHlwZV9uYW1lKSk6CisgICAgICAg
IGlmIGNwcF90eXBlIGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgCisgICAgICAgIGlmIGNwcF90eXBlLmlzX2R5bmFtaWNfc3BhbigpIG9yIGNwcF90eXBl
LmlzX3NwYW4oKToKKyAgICAgICAgICAgIHRyYW5zZmVyX3R5cGUgPSB3ZWJraXRfaXBjX2dldF9z
cGFuX3RyYW5zZmVyX3R5cGUoY3BwX3R5cGUpCisgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVz
W2NwcF90eXBlXSA9IHRyYW5zZmVyX3R5cGUuZ2V0X3ZhbHVlX3R5cGUoKQorICAgICAgICAgICAg
aWYgY3BwX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkuaXNfY29uc3QoKToKKyAgICAgICAgICAg
ICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNwcF90eXBlLCB0cmFuc2Zlcl90eXBl
KV0gPSB3ZWJraXRfaXBjX3NwYW5fdHJhbnNmZXJfdHlwZV9yZWludGVycHJldF9jYXN0X2NvbnZl
cnNpb24KKyAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKHRyYW5z
ZmVyX3R5cGUsIGNwcF90eXBlKV0gPSB3ZWJraXRfaXBjX21ha2VfZ2NnbHNwYW5fY29udmVyc2lv
bgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdG9yZV90eXBlID0gd2Via2l0
X2lwY19nZXRfc3Bhbl9zdG9yZV90eXBlKGNwcF90eXBlKQorICAgICAgICAgICAgICAgIHdlYmtp
dF9pcGNfdHlwZXNfY29udmVydGVyc1soc3RvcmVfdHlwZSwgdHJhbnNmZXJfdHlwZSldID0gY3Bw
X2FycmF5X3JlaW50ZXJwcmV0X2Nhc3RfY29udmVyc2lvbgorICAgICAgICBlbGlmIGNwcF90eXBl
LmlzX3JlZmVyZW5jZSgpIG9yIGNwcF90eXBlLmlzX2NvbnN0X3JlZmVyZW5jZSgpIG9yIGNwcF90
eXBlLmlzX2NvbnRhaW5lcigpOgorICAgICAgICAgICAgdmFsdWVfdHlwZSA9IGNwcF90eXBlLmdl
dF92YWx1ZV90eXBlKCkgaWYgbm90IGNwcF90eXBlLmlzX2NvbnRhaW5lcigpIGVsc2UgY3BwX3R5
cGUKKyAgICAgICAgICAgIGlmIHZhbHVlX3R5cGUuaXNfY29udGFpbmVyKCk6CisgICAgICAgICAg
ICAgICAgY29udGFpbmVkX3R5cGUgPSB2YWx1ZV90eXBlLmdldF9jb250YWluZWRfdHlwZSgpCisg
ICAgICAgICAgICAgICAgd2Via2l0X2lwY19jb250YWluZWRfdHlwZSA9IHdlYmtpdF9pcGNfdHlw
ZXNbY29udGFpbmVkX3R5cGVdCisgICAgICAgICAgICAgICAgaWYgd2Via2l0X2lwY19jb250YWlu
ZWRfdHlwZSA9PSBjb250YWluZWRfdHlwZToKKyAgICAgICAgICAgICAgICAgICAgd2Via2l0X2lw
Y190eXBlc1tjcHBfdHlwZV0gPSB2YWx1ZV90eXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgdHJhbnNmZXJfdHlwZSA9IGdldF9jcHBfdHlwZShmInt2YWx1ZV90
eXBlLmdldF9jb250YWluZXJfbmFtZSgpfTx7c3RyKHdlYmtpdF9pcGNfY29udGFpbmVkX3R5cGUp
fT4iKQorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGVzW2NwcF90eXBlXSA9IHRy
YW5zZmVyX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBIZXJlIG1pZ2h0IGJlIGNh
c2Ugd2hlcmUgVmVjdG9yPEdDR0xpbnQ+IHdhcyB1c2VkIGluIHRoZSBpbnRlcmZhY2UgYW5kIFZl
Y3RvcjxpbnQzMl90PiBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIElQQyBk
ZWZpbml0aW9uLiBUaGVyZSBpcyBubyBzZW5zaWJsZSB3YXkgdG8gZG8gdGhpcyBhdCB0aGUgbW9t
ZW50LiBXZSBkbyBub3QgY29udmVydCwgcmF0aGVyCisgICAgICAgICAgICAgICAgICAgICMgZXhw
ZWN0IHRoYXQgYWxsIHRoZSBpbnZvY2F0aW9ucyBhcmUgdGFrZW4gY2FyZSBvZiB0aGUgZmFjdCB0
aGF0IEdDR0xpbnQgaXMgdGhlIHNhbWUgdHlwZSBhcyBpbnQzMl90LgorICAgICAgICAgICAgICAg
ICAgICAjIFRoaXMgd2lsbCBub3QgaG9sZCBmb3IgYWxsIHR5cGVzIHN1Y2ggYXMgR0NHTGJvb2xl
YW4uCisgICAgICAgICAgICAgICAgICAgICN3ZWJraXRfaXBjX3R5cGVzX2NvbnZlcnRlcnNbKGNw
cF90eXBlLCB0cmFuc2Zlcl90eXBlKV0gPSBjcHBfYXJyYXlfcmVpbnRlcnByZXRfY2FzdF9jb252
ZXJzaW9uCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlw
ZXNbY3BwX3R5cGVdID0gdmFsdWVfdHlwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2Vi
a2l0X2lwY190eXBlc1tjcHBfdHlwZV0gPSBjcHBfdHlwZS5nZXRfdmFsdWVfdHlwZSgpCisgICAg
CisgICAgIyBUaGUgaW5wdXQgdG8gdGhlIGdlbmVyYXRvcnMgaXMgbGlzdCBvZiBmdW5jdGlvbnMg
dG8gcmVtb3RlLgorICAgICMgUnVuIHRoZSB2YXJpb3VzIGdlbmVyYXRvcnMuCisgICAgZ2VuZXJh
dG9ycyA9IFsKKyAgICAgICAgY29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Io
ZnVuY3MsIHVuaW1wbGVtZW50ZWQpLAorICAgICAgICBjb250ZXh0X21zZ193ZWJraXRfaXBjX2dl
bmVyYXRvcihmdW5jcyksCisgICAgICAgIGNvbnRleHRfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9y
KGZ1bmNzKSwKKyAgICBdCisgICAgZm9yIGcgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgZy5nZW5l
cmF0ZSgpCisKKyAgICBpZiBvcHRpb25zLnZlcmJvc2U6CisgICAgICAgIHByaW50KCJJbXBsZW1l
bnRlZDoiKQorICAgICAgICBwcmludCgiIi5qb2luKGYiICAgIHtzdHIoaSl9IGZpbmFsXG4iIGZv
ciBpIGluIGZ1bmNzKSkKKyAgICAgICAgcHJpbnQoIlVuaW1wbGVtZW50ZWQ6IikKKyAgICAgICAg
cHJpbnQoIiIuam9pbihmIiAgICB7c3RyKHUpfSBmaW5hbFxuIiBmb3IgdSBpbiB1bmltcGxlbWVu
dGVkKSkKKyAgICAgICAgcHJpbnQoZiJJbXBsZW1lbnRlZDoge2xlbihmdW5jcyl9LCB1bmltcGxl
bWVudGVkOiB7bGVuKHVuaW1wbGVtZW50ZWQpfSwgdG90YWw6IHtsZW4oZnVuY3MpK2xlbih1bmlt
cGxlbWVudGVkKX0iKQorICAgICAgICBwcmludCgiQysrIHR5cGUgbWFwIHRvIFdlYktpdCBJUEMg
dHlwZSBtYXA6IikKKyAgICAgICAgZm9yIF8sIHQgaW4gY3BwX3R5cGVzLml0ZW1zKCk6CisgICAg
ICAgICAgICBpZiB0IGluIHdlYmtpdF9pcGNfdHlwZXM6CisgICAgICAgICAgICAgICAgcHJpbnQo
ZiIgICAge3N0cih0KX0gLT4ge3N0cih3ZWJraXRfaXBjX3R5cGVzW3RdKX0iKQorICAgICAgICBw
cmludCgiQysrIHR5cGVzIHdpdGhvdXQgV2ViS2l0IElQQyB0eXBlOiIpCisgICAgICAgIGZvciBf
LCB0IGluIGNwcF90eXBlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdCBub3QgaW4gd2Via2l0
X2lwY190eXBlczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c3RyKHQpfSIpCisgICAg
ICAgIHByaW50KCJXZWJLaXQgSVBDIHR5cGUgY29udmVyc2lvbnMiKQorICAgICAgICBmb3IgKGEs
IGIpLCBjb252ZXJ0ZXIgaW4gd2Via2l0X2lwY190eXBlc19jb252ZXJ0ZXJzLml0ZW1zKCk6Cisg
ICAgICAgICAgICBwcmludChmIiAgICB7c3RyKGEpfSAtPiB7c3RyKGIpfSA6IHtjb252ZXJ0ZXIu
X19uYW1lX199IikKKyAgICAgICAgcHJpbnQoIkRvbmUuIikKKyAgICByZXR1cm4gMAorCisKK2lm
IF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNl
NWMyZjk4NjU0NWYzM2MzZWQwODRiNmFkMzQ1MzA3NTFkNGY2NjQuLjQwODAzZTQxMTc5YTZjMzRh
YTQ0MjhiYjk5M2I0NDVlZDc0YWFhMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0xMi0w
MSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTg3
NjI1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgSW1w
bGVtZW50cyBhIGJlZ2lubmluZyBvZiBhIHJlbW90ZSB2ZXJzaW9uIG9mIEdyYXBoaWNzQ29udGV4
dEdMIGZvciBHUFUKKyAgICAgICAgcHJvY2Vzcy4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB1
c2luZyBXZWJLaXQgSVBDLgorCisgICAgICAgIEFkZHMgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHRo
ZSBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkuIERvZXMgbm90IHlldAorICAgICAgICBlbmFibGUgdGhl
IHRlc3RzIHRoYXQgYWN0dWFsbHkgcGFzcyBidXQgd2hpY2ggd2VyZSBza2lwcGVkIGJlZm9yZSB0
aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIwLTEyLTA4ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW92aW5nLWJldHdlZW4tZG9j
dW1lbnRzL2JlZm9yZS1wcmVwYXJlLSogYW5kIG1vdmUtYmFjay0qIGFyZSBmbGFreSBmYWlsdXJl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTIyNTI4ZmEx
YjI2Nzg3MzE4NTMwNTgwMDMzOTBmZDc1MzdkYzBjNi4uYmQwNzA5MjIzN2M3YzdiYzQ4MjE0OTBh
MmQ0NjcyNjNjNzA4Yzk0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zCkBAIC0zMTcsNiArMzE3LDE0IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3Rl
LXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rl
c3RzL3dlYmdsIFsgU2tpcCBdCiBqcy9zaGFyZWQtYXJyYXktYnVmZmVyLXdlYmdsLmh0bWwgWyBT
a2lwIF0KIAord2Via2l0Lm9yZy9iLzIxODE4NCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJE
LW1zZS1mbGlwWS1mYWxzZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjE4MTg0IGZhc3Qv
Y2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzIxOTM0OSBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNw
bGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIxOTM0OSBmYXN0
L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzIxOTM1MSBmYXN0L2NhbnZhcy93ZWJnbC9nbC1waXhlbHN0b3JlaS5odG1sIFsg
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUxIGZhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRp
cGx5YWxwaGEtdGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE5MzUyIGZhc3Qv
Y2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sIFsgRmFpbHVy
ZSBdCisKIHdlYmdwdSBbIFNraXAgXQogCiBhY2Nlc3NpYmlsaXR5L3ByZXNzLXdvcmtzLW9uLWNv
bnRyb2wtdHlwZXMuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>